{"version":3,"file":"block-validation-tracker.min.js","mappings":"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","sources":["webpack:///./instrumentation.js","webpack:///external window [\"wp\",\"blocks\"]","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./block-validation-tracker.js"],"sourcesContent":["const dataLayer = window._expDataLayer || [];\n\n// See https://godaddy-corp.atlassian.net/wiki/spaces/CKPT/pages/92315197/3.+Logging+Page+Views+for+TCCL\nexport const logPageEvent = (page) => {\n\tdataLayer.push({\n\t\tschema: 'add_page_view',\n\t\tversion: 'v1',\n\t\tdata: {\n\t\t\tpath: '/' + page\n\t\t}\n\t});\n}\n\n/**\n * Logs an interaction event to Traffic.\n * @param {string} eid represent the data eid to track.\n * @param {string} type can be one of 'click', 'hover', 'touch', 'custom'\n * @param {object} data custom data to be logged.\n */\nexport const logInteractionEvent = ({ eid, type = 'click', data = null }) => {\n\tdataLayer.push({\n\t\tschema: 'add_event',\n\t\tversion: 'v1',\n\t\tdata: {\n\t\t\teid: `${eid}.${type}`,\n\t\t\ttype,\n\t\t\tcustom_properties: data\n\t\t}\n\t});\n}\n\n// See https://godaddy-corp.atlassian.net/wiki/spaces/CKPT/pages/92315189/4.+Logging+Events+for+TCCL\nexport const logImpressionEvent = (eid) => {\n\tdataLayer.push({\n\t\tschema: 'add_event',\n\t\tversion: 'v1',\n\t\tdata: {\n\t\t\ttype: 'impression',\n\t\t\teid: eid + '.impression'\n\t\t}\n\t});\n}\n","module.exports = window[\"wp\"][\"blocks\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Use data-store to get list of validated blocks.\n * Report invalid blocks with their validation problems.\n */\n\nimport { logInteractionEvent } from './instrumentation';\nimport { serialize } from '@wordpress/blocks'\n\n(function(wp) {\n const subscribe = wp?.data?.subscribe;\n const select = wp?.data?.select;\n const dispatch = wp?.data?.dispatch;\n let isChecked = false;\n\n // Bail if missing anything.\n if (!subscribe || !select || !dispatch || !wp) {\n return;\n } \n\n if ( typeof logInteractionEvent !== 'function' || typeof serialize !== 'function') {\n return;\n }\n\n function findInvalidBlocks(blocks) {\n let invalidBlocks = [];\n blocks.forEach((block) => {\n if (block.isValid === false) {\n invalidBlocks.push({\n name: block.name,\n validationIssues: block.validationIssues,\n serializedBlock: serialize(block),\n });\n } else {\n if (block.innerBlocks && block.innerBlocks.length > 0) {\n invalidBlocks = invalidBlocks.concat(findInvalidBlocks(block.innerBlocks));\n }\n }\n });\n return invalidBlocks;\n }\n\n function checkBlockForValidity(){\n let blocks = select('core/block-editor').getBlocks();\n let invalidBlocks = findInvalidBlocks(blocks);\n\n if (invalidBlocks.length > 0) {\n logInteractionEvent({eid: 'block-validation-failed', type: 'event', data: invalidBlocks});\n }\n isChecked = true;\n }\n\n let unsubscribe = subscribe(function() {\n let isEditorReady = select('core/editor').isCleanNewPost() !== null;\n let hasBlocks = select('core/block-editor').getBlockCount() > 0;\n\n if (isEditorReady && hasBlocks) {\n if (!isChecked){\n unsubscribe();\n }\n setTimeout(checkBlockForValidity(), 2000);\n }\n });\n\n})(window?.wp);"],"names":["dataLayer","window","_expDataLayer","logPageEvent","page","push","schema","version","data","path","logInteractionEvent","eid","type","custom_properties","logImpressionEvent","serialize","wp","subscribe","select","dispatch","isChecked","findInvalidBlocks","blocks","invalidBlocks","forEach","block","isValid","name","validationIssues","serializedBlock","innerBlocks","length","concat","checkBlockForValidity","getBlocks","unsubscribe","isEditorReady","isCleanNewPost","hasBlocks","getBlockCount","setTimeout"],"sourceRoot":""}