{"version":3,"sources":["jsdelivr-header.js","/npm/blocksdk@1.3.0/blocksdk.js"],"names":[],"mappings":"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","file":"/npm/blocksdk@1.3.0/blocksdk.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/blocksdk@1.3.0/blocksdk.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\n * Copyright (c) 2018, salesforce.com, inc.\n * All rights reserved.\n * Licensed under the BSD 3-Clause license.\n * For full license text, see LICENSE.txt file in the repo root  or https://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SDK = function (config, whitelistOverride, sslOverride) {\n\t// config has been added as the primary parameter\n\t// If it is provided ensure that the other paramaters are correctly assigned\n\t// for backwards compatibility\n\tif (Array.isArray(config)) {\n\t\twhitelistOverride = config;\n\t\tsslOverride = whitelistOverride;\n\t\tconfig = undefined;\n\t}\n\n\tif (config && config.onEditClose) {\n\t\tthis.handlers = {\n\t\t\tonEditClose: config.onEditClose\n\t\t};\n\t\tconfig.onEditClose = true;\n\t}\n\n\tthis._whitelistOverride = whitelistOverride;\n\tthis._sslOverride = sslOverride;\n\tthis._messageId = 1;\n\tthis._messages = {\n\t\t0: function () {}\n\t};\n\tthis._readyToPost = false;\n\tthis._pendingMessages = [];\n\tthis._receiveMessage = this._receiveMessage.bind(this);\n\n\twindow.addEventListener('message', this._receiveMessage, false);\n\n\twindow.parent.postMessage({\n\t\tmethod: 'handShake',\n\t\torigin: window.location.origin,\n\t\tpayload: config\n\t}, '*');\n};\n\nSDK.prototype.execute = function execute (method, options) {\n\toptions = options || {};\n\n\tvar self = this;\n\tvar payload = options.data;\n\tvar callback = options.success;\n\n\tif (!this._readyToPost) {\n\t\tthis._pendingMessages.push({\n\t\t\tmethod: method,\n\t\t\tpayload: payload,\n\t\t\tcallback: callback\n\t\t});\n\t} else {\n\t\tthis._post({\n\t\t\tmethod: method,\n\t\t\tpayload: payload\n\t\t}, callback);\n\t}\n};\n\nSDK.prototype.getCentralData = function (cb) {\n\tthis.execute('getCentralData', {\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.getContent = function (cb) {\n\tthis.execute('getContent', {\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.getData = function (cb) {\n\tthis.execute('getData', {\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.getUserData = function (cb) {\n\tthis.execute('getUserData', {\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.getView = function (cb) {\n\tthis.execute('getView', {\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.setBlockEditorWidth = function (value, cb) {\n\tthis.execute('setBlockEditorWidth', {\n\t\tdata: value,\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.setCentralData = function (dataObj, cb) {\n\tthis.execute('setCentralData', {\n\t\tdata: dataObj,\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.setContent = function (content, cb) {\n\tthis.execute('setContent', {\n\t\tdata: content,\n\t\tsuccess: cb});\n};\n\nSDK.prototype.setData = function (dataObj, cb) {\n\tthis.execute('setData', {\n\t\tdata: dataObj,\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.setSuperContent = function (content, cb) {\n\tthis.execute('setSuperContent', {\n\t\tdata: content,\n\t\tsuccess: cb\n\t});\n};\n\nSDK.prototype.triggerAuth = function (appID) {\n\tthis.getUserData(function (userData) {\n\t\tvar stack = userData.stack;\n\t\tif (stack.indexOf('qa') === 0) {\n\t\t\tstack = stack.substring(3,5) + '.' + stack.substring(0,3);\n\t\t}\n\t\tvar iframe = document.createElement('IFRAME');\n\t\tiframe.src = 'https://mc.' + stack + '.exacttarget.com/cloud/tools/SSO.aspx?appId=' + appID + '&restToken=1&hub=1';\n\t\tiframe.style.width= '1px';\n\t\tiframe.style.height = '1px';\n\t\tiframe.style.position = 'absolute';\n\t\tiframe.style.top = '0';\n\t\tiframe.style.left = '0';\n\t\tiframe.style.visibility = 'hidden';\n\t\tiframe.className = 'authframe';\n\t\tdocument.body.appendChild(iframe);\n\t});\n};\n\nSDK.prototype.triggerAuth2 = function (authInfo) {\n\tvar iframe = document.createElement('IFRAME');\n\tvar scope = '';\n\tvar state = '';\n\tif(Array.isArray(authInfo.scope)) {\n\t\tscope = '&scope=' + authInfo.scope.join('%20');\n\t}\n\tif(authInfo.state) {\n\t\tstate = '&state=' + authInfo.state;\n\t}\n\tiframe.src = authInfo.authURL + (authInfo.authURL.endsWith('/') ? '':'/') + 'v2/authorize?response_type=code&client_id=' + authInfo.clientId + '&redirect_uri=' + encodeURIComponent(authInfo.redirectURL) + scope + state;\n\tiframe.style.width= '1px';\n\tiframe.style.height = '1px';\n\tiframe.style.position = 'absolute';\n\tiframe.style.top = '0';\n\tiframe.style.left = '0';\n\tiframe.style.visibility = 'hidden';\n\tiframe.className = 'authframe';\n\tdocument.body.appendChild(iframe);\n};\n\n/* Internal Methods */\n\nSDK.prototype._executePendingMessages = function _executePendingMessages () {\n\tvar self = this;\n\n\tthis._pendingMessages.forEach(function (thisMessage) {\n\t\tself.execute(thisMessage.method, {\n\t\t\tdata: thisMessage.payload,\n\t\t\tsuccess: thisMessage.callback\n\t\t});\n\t});\n\n\tthis._pendingMessages = [];\n};\n\nSDK.prototype._post = function _post (payload, callback) {\n\tthis._messages[this._messageId] = callback;\n\tpayload.id = this._messageId;\n\tthis._messageId += 1;\n\t// the actual postMessage always uses the validated origin\n\twindow.parent.postMessage(payload, this._parentOrigin);\n};\n\nSDK.prototype._receiveMessage = function _receiveMessage (message) {\n\tmessage = message || {};\n\tvar data = message.data || {};\n\n\tif (data.method === 'handShake') {\n\t\tif (this._validateOrigin(data.origin)) {\n\t\t\tthis._parentOrigin = data.origin;\n\t\t\tthis._readyToPost = true;\n\t\t\tthis._executePendingMessages();\n\t\t\treturn;\n\t\t}\n\t} else if (data.method === 'closeBlock') {\n\t\tif (this._validateOrigin(data.origin)) {\n\t\t\t// here execute the method before closing the  block editing\n\t\t\t//onEditClose();\n\t\t\tif (this.handlers && this.handlers.onEditClose) {\n\t\t\t\tthis.handlers.onEditClose();\n\t\t\t}\n\t\t\tthis.execute('blockReadyToClose');\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// if the message is not from the validated origin it gets ignored\n\tif (!this._parentOrigin || this._parentOrigin !== message.origin) {\n\t\treturn;\n\t}\n\t// when the message has been received, we execute its callback\n\t(this._messages[data.id || 0] || function () {})(data.payload);\n\tdelete this._messages[data.id];\n};\n\n// the custom block should verify it is being called from the marketing cloud\nSDK.prototype._validateOrigin = function _validateOrigin (origin) {\n\t// Make sure to escape periods since these strings are used in a regular expression\n\tvar allowedDomains = this._whitelistOverride || ['exacttarget\\\\.com', 'marketingcloudapps\\\\.com', 'blocktester\\\\.herokuapp\\\\.com'];\n\n\tfor (var i = 0; i < allowedDomains.length; i++) {\n\t\t// Makes the s optional in https\n\t\tvar optionalSsl = this._sslOverride ? '?' : '';\n\t\tvar mcSubdomain = allowedDomains[i] === 'exacttarget\\\\.com' ? 'mc\\\\.' : '';\n\t\tvar whitelistRegex = new RegExp('^https' + optionalSsl + '://' + mcSubdomain + '([a-zA-Z0-9-]+\\\\.)*' + allowedDomains[i] + '(:[0-9]+)?$', 'i');\n\n\t\tif (whitelistRegex.test(origin)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nif (typeof(window) === 'object') {\n\twindow.sfdc = window.sfdc || {};\n\twindow.sfdc.BlockSDK = SDK;\n}\nif (typeof(module) === 'object') {\n\tmodule.exports = SDK;\n}\n"]}