{"version":3,"file":"script.js","mappings":"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","sources":["webpack://easternstandard/./node_modules/@alexspirgel/children-loaded/src/index.js","webpack://easternstandard/./node_modules/@alexspirgel/extend/src/index.js","webpack://easternstandard/./node_modules/@alexspirgel/is-plain-object/is-plain-object.js","webpack://easternstandard/./node_modules/@alexspirgel/schema/src/classes/DataPathManager.js","webpack://easternstandard/./node_modules/@alexspirgel/schema/src/classes/ValidationError.js","webpack://easternstandard/./node_modules/@alexspirgel/schema/src/classes/ValidationErrors.js","webpack://easternstandard/./node_modules/@alexspirgel/schema/src/index.js","webpack://easternstandard/./node_modules/@alexspirgel/schema/src/models/model.js","webpack://easternstandard/./node_modules/@alexspirgel/transition-auto/src/index.js","webpack://easternstandard/./node_modules/@alexspirgel/transition-auto/src/options-schema.js","webpack://easternstandard/webpack/bootstrap","webpack://easternstandard/./custom-blocks/theme/site-wide-header/scripts/src/script.js"],"sourcesContent":["module.exports = (function () {\n\n\t// Initialize a weak map to hold promises.\n\tconst childrenLoadedPromises = new WeakMap();\n\n\t/**\n\t * Checks to see if children elements are loaded.\n\t * @param {object} element - Element to look for children within.\n\t * @return {boolean} Whether the children elements are loaded or not.\n\t */\n\n\tconst childrenLoadedSynchronous = (element) => {\n\n\t\t// Document ready states reference: https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState\n\t\tif (document.readyState === 'interactive' || document.readyState === 'complete') {\n\t\t\t// Children elements are assumed to be loaded.\n\t\t\treturn true;\n\t\t}\n\n\t\t// While the element exists.\n\t\twhile (element) {\n\t\t\t// If the next sibling element exists.\n\t\t\tif (element.nextSibling) {\n\t\t\t\t// The original passed element and its children have been loaded.\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Set the element to the parent element.\n\t\t\telement = element.parentNode;\n\t\t}\n\n\t\t// If code execution gets here, it's assumed children elements are not loaded.\n\t\treturn false;\n\n\t};\n\n\t/**\n\t * An asynchronous wrapper for the childrenLoadedSynchronous function.\n\t * @param {object} element - Element to look for children within.\n\t * @param {boolean} [forceNewPromise=false] - Option to invalidate existing promises.\n\t * @return {*} True if children are loaded, otherwise a promise.\n\t */\n\n\tconst childrenLoaded = (element, forceNewPromise = false) => {\n\n\t\t// If children are loaded immediately.\n\t\tif (childrenLoadedSynchronous(element)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If an existing promise for the passed element does not exist yet or if a new promise is being forced.\n\t\telse if (!childrenLoadedPromises.get(element) || forceNewPromise) {\n\t\t\t// Create a new promise.\n\t\t\tconst childrenLoadedPromise = new Promise((resolve) => {\n\t\t\t\t// Create a new mutation observer.\n\t\t\t\tconst observer = new MutationObserver(() => {\n\t\t\t\t\t// When children are loaded.\n\t\t\t\t\tif (childrenLoadedSynchronous(element)) {\n\t\t\t\t\t\t// Disconnect the mutation observer.\n\t\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\t\t// Resolve the promise.\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Watch for child element updates.\n\t\t\t\tobserver.observe(element, {\n\t\t\t\t\tchildList: true\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Set the promise weak map entry for the passed element.\n\t\t\tchildrenLoadedPromises.set(element, childrenLoadedPromise);\n\t\t}\n\n\t\t// Return the promise for the passed element.\n\t\t// Multiple asynchronous calls of childrenLoaded for the same element should return the same promise.\n\t\treturn childrenLoadedPromises.get(element);\n\n\t};\n\n\t// Attach the synchronous function to the export for optional use.\n\tchildrenLoaded.synchronous = childrenLoadedSynchronous;\n\t// Add shorthand alias for synchronous.\n\tchildrenLoaded.sync = childrenLoaded.synchronous;\n\t// Return the asynchronous function as the export.\n\treturn childrenLoaded;\n\n})();","const isPlainObject = require('@alexspirgel/is-plain-object');\r\n\r\nconst extend = (...arguments) => {\r\n\tlet target = arguments[0];\r\n\tlet argumentIndex, merge, mergeIsArray;\r\n\tfor (argumentIndex = 1; argumentIndex < arguments.length; argumentIndex++) {\r\n\t\tmerge = arguments[argumentIndex];\r\n\t\tif (merge === target) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tmergeIsArray = Array.isArray(merge);\r\n\t\tif (mergeIsArray || isPlainObject(merge)) {\r\n\t\t\tif (mergeIsArray && !Array.isArray(target)) {\r\n\t\t\t\ttarget = [];\r\n\t\t\t}\r\n\t\t\telse if (!mergeIsArray && !isPlainObject(target)) {\r\n\t\t\t\ttarget = {};\r\n\t\t\t}\r\n\t\t\tfor (const property in merge) {\r\n\t\t\t\tif (property === \"__proto__\") {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\ttarget[property] = extend(target[property], merge[property]);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (merge !== undefined) {\r\n\t\t\t\ttarget = merge;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\n\r\nmodule.exports = extend;","function isPlainObject(value) {\r\n\tif (typeof value !== 'object' ||\r\n\tvalue === null ||\r\n\tObject.prototype.toString.call(value) !== '[object Object]') {\r\n\t\treturn false;\r\n\t}\r\n\tif (Object.getPrototypeOf(value) === null) {\r\n return true;\r\n }\r\n\tlet prototype = value;\r\n while (Object.getPrototypeOf(prototype) !== null) {\r\n prototype = Object.getPrototypeOf(prototype);\r\n }\r\n return Object.getPrototypeOf(value) === prototype;\r\n}\r\n\r\nmodule.exports = isPlainObject;","const extend = require('@alexspirgel/extend');\r\n\r\nclass DataPathManager {\r\n\t\r\n\tconstructor(data, path = []) {\r\n\t\tthis.data = data;\r\n\t\tthis.path = path;\r\n\t}\r\n\t\r\n\tset path(path) {\r\n\t\tif (Array.isArray(path)) {\r\n\t\t\tthis._path = path;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new Error('Path must be an array');\r\n\t\t}\r\n\t}\r\n\t\r\n\tget path() {\r\n\t\treturn this._path;\r\n\t}\r\n\t\r\n\taddPathSegment(pathSegment) {\r\n\t\tthis.path.push(pathSegment);\r\n\t}\r\n\t\r\n\tremovePathSegment() {\r\n\t\treturn this.path.splice(-1, 1)[0];\r\n\t}\r\n\t\r\n\tget value() {\r\n\t\tlet value = this.data;\r\n\t\tfor (let path of this.path) {\r\n\t\t\ttry {\r\n\t\t\t\tvalue = value[path];\r\n\t\t\t}\r\n\t\t\tcatch (error) {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\tclone(options = {}) {\r\n\r\n\t\tconst defaultOptions = {\r\n\t\t\tdata: false,\r\n\t\t\tpath: true\r\n\t\t};\r\n\t\toptions = extend({}, defaultOptions, options);\r\n\r\n\t\tlet data = this.data;\r\n\t\tif (options.data) {\r\n\t\t\tif (typeof data === 'object') {\r\n\t\t\t\tif (Array.isArray(data)) {\r\n\t\t\t\t\tdata = extend([], data);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tdata = extend({}, data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet path = this.path;\r\n\t\tif (options.path) {\r\n\t\t\tpath = [...this.path];\r\n\t\t}\r\n\r\n\t\treturn new this.constructor(data, path);\r\n\r\n\t}\r\n\r\n};\r\n\r\nmodule.exports = DataPathManager;","const DataPathManager = require('./DataPathManager.js');\r\n\r\nclass ValidationError extends Error {\r\n\t\r\n\tconstructor(...params) {\r\n\t\tsuper(...params);\r\n\t}\r\n\t\r\n\tset modelPathManager(modelPathManager) {\r\n\t\tif (!(modelPathManager instanceof DataPathManager)) {\r\n\t\t\tmodelPathManager = new DataPathManager(modelPathManager);\r\n\t\t}\r\n\t\tthis._modelPathManager = modelPathManager;\r\n\t}\r\n\t\r\n\tget modelPathManager() {\r\n\t\treturn this._modelPathManager;\r\n\t}\r\n\t\r\n\tset inputPathManager(inputPathManager) {\r\n\t\tif (!(inputPathManager instanceof DataPathManager)) {\r\n\t\t\tinputPathManager = new DataPathManager(inputPathManager);\r\n\t\t}\r\n\t\tthis._inputPathManager = inputPathManager;\r\n\t}\r\n\t\r\n\tget inputPathManager() {\r\n\t\treturn this._inputPathManager;\r\n\t}\r\n\r\n};\r\n\r\nmodule.exports = ValidationError;","const ValidationError = require('./ValidationError.js');\r\n\r\nclass ValidationErrors {\r\n\t\r\n\tconstructor() {\r\n\t\tthis.errors = [];\r\n\t}\r\n\t\r\n\taddError(error) {\r\n\t\tif (Array.isArray(error)) {\r\n\t\t\tfor (const singleError of error) {\r\n\t\t\t\tthis.addError(singleError);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!(error instanceof ValidationError)) {\r\n\t\t\t\tthrow new Error(`Passed 'error' must be an instance of 'Schema.ValidationError'.`);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.errors.push(error);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgenerateFormattedMessage() {\r\n\t\tlet message = `Schema errors:\\n`;\r\n\t\tfor (const error of this.errors) {\r\n\t\t\tlet inputPath = 'root';\r\n\t\t\tif (error.inputPathManager.path.length > 0) {\r\n\t\t\t\tinputPath = error.inputPathManager.path.map((pathSegment) => {\r\n\t\t\t\t\treturn `['` + pathSegment + `']`;\r\n\t\t\t\t});\r\n\t\t\t\tinputPath = inputPath.join('');\r\n\t\t\t}\r\n\t\t\tlet modelPath = 'root';\r\n\t\t\tif (error.modelPathManager.path.length > 0) {\r\n\t\t\t\tmodelPath = error.modelPathManager.path.map((pathSegment) => {\r\n\t\t\t\t\treturn `['` + pathSegment + `']`;\r\n\t\t\t\t});\r\n\t\t\t\tmodelPath = modelPath.join('');\r\n\t\t\t}\r\n\t\t\tmessage = message + `\\nInput Path: ${inputPath}\\nModel Path: ${modelPath}\\nMessage: ${error.message}\\n`;\r\n\t\t}\r\n\t\treturn message;\r\n\t}\r\n\r\n};\r\n\r\nmodule.exports = ValidationErrors;","const DataPathManager = require('./classes/DataPathManager.js');\r\nconst ValidationError = require('./classes/ValidationError.js');\r\nconst ValidationErrors = require('./classes/ValidationErrors.js');\r\nconst modelModel = require('./models/model.js');\r\n\r\nclass Schema {\r\n\t\r\n\tstatic get validationMethods() {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tproperty: 'required',\r\n\t\t\t\tmethod: this.validateRequired\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'type',\r\n\t\t\t\tmethod: this.validateType\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'exactValue',\r\n\t\t\t\tmethod: this.validateExactValue\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'greaterThan',\r\n\t\t\t\tmethod: this.validateGreaterThan\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'greaterThanOrEqualTo',\r\n\t\t\t\tmethod: this.validateGreaterThanOrEqualTo\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'lessThan',\r\n\t\t\t\tmethod: this.validateLessThan\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'lessThanOrEqualTo',\r\n\t\t\t\tmethod: this.validateLessThanOrEqualTo\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'divisibleBy',\r\n\t\t\t\tmethod: this.validateDivisibleBy\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'notDivisibleBy',\r\n\t\t\t\tmethod: this.validateNotDivisibleBy\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'minimumCharacters',\r\n\t\t\t\tmethod: this.validateMinimumCharacters\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'maximumCharacters',\r\n\t\t\t\tmethod: this.validateMaximumCharacters\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'minimumLength',\r\n\t\t\t\tmethod: this.validateMinimumLength\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'maximumLength',\r\n\t\t\t\tmethod: this.validateMaximumLength\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'instanceOf',\r\n\t\t\t\tmethod: this.validateInstanceOf\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'allowUnvalidatedProperties',\r\n\t\t\t\tmethod: this.validateAllowUnvalidatedProperties\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'custom',\r\n\t\t\t\tmethod: this.validateCustom\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'allPropertySchema',\r\n\t\t\t\tmethod: this.validateAllPropertySchema\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tproperty: 'propertySchema',\r\n\t\t\t\tmethod: this.validatePropertySchema\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n\r\n\tstatic validateRequired(modelPathManager, inputPathManager) {\r\n\t\tif (modelPathManager.value === true) {\r\n\t\t\tif (inputPathManager.value === undefined || inputPathManager.value === null) {\r\n\t\t\t\tthrow new ValidationError(`Property 'required' validation failed. The input must not be null or undefined.`);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tstatic validateType(modelPathManager, inputPathManager) {\r\n\t\tif (modelPathManager.value === 'number') {\r\n\t\t\tif (typeof inputPathManager.value === 'number' && !isNaN(inputPathManager.value)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (modelPathManager.value === 'object') {\r\n\t\t\tif (typeof inputPathManager.value === 'object' && !Array.isArray(inputPathManager.value) && inputPathManager.value !== null) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (modelPathManager.value === 'array') {\r\n\t\t\tif (Array.isArray(inputPathManager.value)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (modelPathManager.value === 'boolean' || modelPathManager.value === 'string' || modelPathManager.value === 'function') {\r\n\t\t\tif (typeof inputPathManager.value === modelPathManager.value) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthrow new ValidationError(`Property 'type' validation failed. The input type must match.`);\r\n\t}\r\n\r\n\tstatic validateExactValue(modelPathManager, inputPathManager) {\r\n\t\tif (Array.isArray(modelPathManager.value)) {\r\n\t\t\tfor (const value of modelPathManager.value) {\r\n\t\t\t\tif (inputPathManager.value === value) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (inputPathManager.value === modelPathManager.value) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthrow new ValidationError(`Property 'exactValue' validation failed. The input must be an exact match of the value or one of the values in an array of values.`);\r\n\t}\r\n\r\n\tstatic validateGreaterThan(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value > modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'greaterThan' validation failed. The input must be greater than the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateGreaterThanOrEqualTo(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value >= modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'greaterThanOrEqualTo' validation failed. The input must be greater than or equal to the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateLessThan(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value < modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'lessThan' validation failed. The input must be less than the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateLessThanOrEqualTo(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value <= modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'lessThanOrEqualTo' validation failed. The input must be less than or equal to the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateDivisibleBy(modelPathManager, inputPathManager) {\r\n\t\tif (Array.isArray(modelPathManager.value)) {\r\n\t\t\tfor (const value of modelPathManager.value) {\r\n\t\t\t\tif (inputPathManager.value % value === 0) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (inputPathManager.value % modelPathManager.value === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthrow new ValidationError(`Property 'divisibleBy' validation failed. The input must be divisible by the value or one of the values in an array of values.`);\r\n\t}\r\n\r\n\tstatic validateNotDivisibleBy(modelPathManager, inputPathManager) {\r\n\t\tlet flag = false;\r\n\t\tif (Array.isArray(modelPathManager.value)) {\r\n\t\t\tfor (const value of modelPathManager.value) {\r\n\t\t\t\tif (inputPathManager.value % value === 0) {\r\n\t\t\t\t\tflag = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (inputPathManager.value % modelPathManager.value === 0) {\r\n\t\t\t\tflag = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (flag || isNaN(inputPathManager.value)) {\r\n\t\t\tthrow new ValidationError(`Property 'notDivisibleBy' validation failed. The input must not be divisible by the value or one of the values in an array of values.`);\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tstatic validateMinimumCharacters(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value.length >= modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'minimumCharacters' validation failed. The input must have a character count greater than or equal to the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateMaximumCharacters(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value.length <= modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'maximumCharacters' validation failed. The input must have a character count less than or equal to the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateMinimumLength(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value.length >= modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'minimumLength' validation failed. The input must have a length greater than or equal to the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateMaximumLength(modelPathManager, inputPathManager) {\r\n\t\tif (inputPathManager.value.length <= modelPathManager.value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new ValidationError(`Property 'maximumLength' validation failed. The input must have a length less than or equal to the value.`);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic validateInstanceOf(modelPathManager, inputPathManager) {\r\n\t\tif (Array.isArray(modelPathManager.value)) {\r\n\t\t\tfor (const value of modelPathManager.value) {\r\n\t\t\t\tif (inputPathManager.value instanceof value) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (inputPathManager.value instanceof modelPathManager.value) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthrow new ValidationError(`Property 'instanceOf' validation failed. The input must be an instance of the value or one of the values in an array of values.`);\r\n\t}\r\n\r\n\tstatic validateAllowUnvalidatedProperties(modelPathManager, inputPathManager) {\r\n\t\tif (modelPathManager.value === false) {\r\n\t\t\tmodelPathManager.removePathSegment();\r\n\t\t\tmodelPathManager.addPathSegment('propertySchema');\r\n\t\t\tlet validatedProperties = [];\r\n\t\t\tif (modelPathManager.value) {\r\n\t\t\t\tvalidatedProperties = Object.keys(modelPathManager.value);\r\n\t\t\t}\r\n\t\t\tfor (const property in inputPathManager.value) {\r\n\t\t\t\tif (!validatedProperties.includes(property)) {\r\n\t\t\t\t\tthrow new ValidationError(`Property 'allowUnvalidatedProperties' validation failed. '${property}' is not defined in the 'propertySchema' validation property.`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tstatic validateCustom(modelPathManager, inputPathManager) {\r\n\t\tconst customInputPathManager = inputPathManager.clone({data: true, path: true});\r\n\t\treturn modelPathManager.value(customInputPathManager);\r\n\t}\r\n\r\n\tstatic validateAllPropertySchema(modelPathManager, inputPathManager) {\r\n\t\tconst allPropertySchema = new Schema(modelPathManager.clone(), false);\r\n\t\tfor (const property in inputPathManager.value) {\r\n\t\t\tconst inputPropertyPathManager = inputPathManager.clone();\r\n\t\t\tinputPropertyPathManager.addPathSegment(property);\r\n\t\t\tconst validationResult = allPropertySchema.validate(inputPropertyPathManager, 'array');\r\n\t\t\tif (validationResult !== true) {\r\n\t\t\t\treturn validationResult;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tstatic validatePropertySchema(modelPathManager, inputPathManager) {\r\n\t\tfor (const property in modelPathManager.value) {\r\n\t\t\tconst modelPropertyPathManager = modelPathManager.clone();\r\n\t\t\tmodelPropertyPathManager.addPathSegment(property);\r\n\t\t\tconst propertySchema = new Schema(modelPropertyPathManager, false);\r\n\t\t\tconst inputPropertyPathManager = inputPathManager.clone();\r\n\t\t\tinputPropertyPathManager.addPathSegment(property);\r\n\t\t\tconst validationResult = propertySchema.validate(inputPropertyPathManager, 'array');\r\n\t\t\tif (validationResult !== true) {\r\n\t\t\t\treturn validationResult;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\t\r\n\tconstructor(modelPathManager = {}, selfValidate = true) {\r\n\t\tthis.selfValidate = selfValidate;\r\n\t\tthis.modelPathManager = modelPathManager;\r\n\t}\r\n\r\n\tset modelPathManager(modelPathManager) {\r\n\t\tif (!(modelPathManager instanceof DataPathManager)) {\r\n\t\t\tmodelPathManager = new DataPathManager(modelPathManager);\r\n\t\t}\r\n\t\tthis._modelPathManager = modelPathManager;\r\n\t\tif (this.selfValidate) {\r\n\t\t\tconst schemaModel = new Schema(modelModel, false);\r\n\t\t\tschemaModel.validate(this.modelPathManager);\r\n\t\t}\r\n\t}\r\n\r\n\tget modelPathManager() {\r\n\t\treturn this._modelPathManager;\r\n\t}\r\n \r\n\tvalidate(inputPathManager, errorStyle = 'throw') {\r\n\r\n\t\tif (!(inputPathManager instanceof DataPathManager)) {\r\n\t\t\tinputPathManager = new DataPathManager(inputPathManager);\r\n\t\t}\r\n\r\n\t\tlet validationErrors = new ValidationErrors();\r\n\r\n\t\tif (Array.isArray(this.modelPathManager.value)) {\r\n\t\t\tfor (let modelIndex = 0; modelIndex < this.modelPathManager.value.length; modelIndex++) {\r\n\t\t\t\tconst modelItemPathManager = this.modelPathManager.clone();\r\n\t\t\t\tmodelItemPathManager.addPathSegment(modelIndex);\r\n\t\t\t\tconst validationResult = this._validate(modelItemPathManager, inputPathManager);\r\n\t\t\t\tif (validationResult === true) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tvalidationErrors.addError(validationResult);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst validationResult = this._validate(this.modelPathManager, inputPathManager);\r\n\t\t\tif (validationResult === true) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalidationErrors.addError(validationResult);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (errorStyle === 'throw') {\r\n\t\t\tthrow new Error(validationErrors.generateFormattedMessage());\r\n\t\t}\r\n\t\telse if (errorStyle === 'array') {\r\n\t\t\treturn validationErrors.errors;\r\n\t\t}\r\n\t\telse if (errorStyle === 'boolean') {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_validate(modelPathManager, inputPathManager) {\r\n\t\tif (modelPathManager.value.required !== true) {\r\n\t\t\tif (inputPathManager.value === undefined || inputPathManager.value === null) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (const validationMethod of this.constructor.validationMethods) {\r\n\t\t\tif (modelPathManager.value.hasOwnProperty(validationMethod.property)) {\r\n\t\t\t\tconst validationMethodModelPathManager = modelPathManager.clone();\r\n\t\t\t\tvalidationMethodModelPathManager.addPathSegment(validationMethod.property);\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst validationResult = validationMethod.method(validationMethodModelPathManager, inputPathManager);\r\n\t\t\t\t\tif (validationResult !== true) {\r\n\t\t\t\t\t\treturn validationResult;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcatch (error) {\r\n\t\t\t\t\tif (error instanceof ValidationError) {\r\n\t\t\t\t\t\tif (!error.modelPathManager) {\r\n\t\t\t\t\t\t\terror.modelPathManager = validationMethodModelPathManager;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!error.inputPathManager) {\r\n\t\t\t\t\t\t\terror.inputPathManager = inputPathManager;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn error;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n\r\nSchema.ValidationError = ValidationError;\r\n\r\nmodule.exports = Schema;","const extend = require('@alexspirgel/extend');\r\nconst ValidationError = require('../classes/ValidationError.js');\r\n\r\nconst typeRestriction = (types) => {\r\n\tif (!Array.isArray(types)) {\r\n\t\ttypes = [types];\r\n\t}\r\n\treturn (inputPathManager) => {\r\n\t\tconst validationProperty = inputPathManager.removePathSegment();\r\n\t\tif (validationProperty === undefined || types.includes(inputPathManager.value.type)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet typesString = ``;\r\n\t\t\tfor (let i = 0; i < types.length; i++) {\r\n\t\t\t\tconst type = types[i];\r\n\t\t\t\tif (i === 0) {\r\n\t\t\t\t\ttypesString += `'${type}'`;\r\n\t\t\t\t}\r\n\t\t\t\telse if (i < (types.length - 1)) {\r\n\t\t\t\t\ttypesString += `, '${type}'`;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (types.length > 2) {\r\n\t\t\t\t\t\ttypesString += `,`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttypesString += ` or '${type}'`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthrow new ValidationError(`The validation property '${validationProperty}' can only belong to a model with a type of ${typesString}.`);\r\n\t\t}\r\n\t};\r\n};\r\n\r\nconst modelPropertySchema = {\r\n\trequired: {\r\n\t\ttype: 'boolean'\r\n\t},\r\n\ttype: {\r\n\t\ttype: 'string',\r\n\t\texactValue: [\r\n\t\t\t'boolean',\r\n\t\t\t'number',\r\n\t\t\t'string',\r\n\t\t\t'array',\r\n\t\t\t'object',\r\n\t\t\t'function'\r\n\t\t]\r\n\t},\r\n\texactValue: {\r\n\t\tcustom: typeRestriction(['boolean', 'number', 'string'])\r\n\t},\r\n\tgreaterThan: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('number')\r\n\t},\r\n\tgreaterThanOrEqualTo: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('number')\r\n\t},\r\n\tlessThan: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('number')\r\n\t},\r\n\tlessThanOrEqualTo: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('number')\r\n\t},\r\n\tdivisibleBy: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('number')\r\n\t},\r\n\tnotDivisibleBy: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('number')\r\n\t},\r\n\tminimumCharacters: {\r\n\t\ttype: 'string',\r\n\t\tcustom: typeRestriction('string')\r\n\t},\r\n\tmaximumCharacters: {\r\n\t\ttype: 'string',\r\n\t\tcustom: typeRestriction('string')\r\n\t},\r\n\tminimumLength: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('array')\r\n\t},\r\n\tmaximumLength: {\r\n\t\ttype: 'number',\r\n\t\tcustom: typeRestriction('array')\r\n\t},\r\n\tinstanceOf: {\r\n\t\tcustom: typeRestriction('object')\r\n\t},\r\n\tallowUnvalidatedProperties: {\r\n\t\ttype: 'boolean',\r\n\t\tcustom: typeRestriction('object')\r\n\t},\r\n\tcustom: {\r\n\t\ttype: 'function'\r\n\t},\r\n\tpropertySchema: {\r\n\t\ttype: 'object',\r\n\t\tcustom: typeRestriction(['array', 'object'])\r\n\t}\r\n};\r\n\r\nconst modelObject = {\r\n\ttype: 'object',\r\n\tpropertySchema: modelPropertySchema\r\n};\r\n\r\nconst modelArray = {\r\n\ttype: 'array',\r\n\tallPropertySchema: {\r\n\t\ttype: 'object',\r\n\t\tpropertySchema: modelPropertySchema\r\n\t}\r\n};\r\n\r\nconst model = [\r\n\tmodelObject,\r\n\tmodelArray\r\n];\r\n\r\nconst modelTypeRestricted = [\r\n\textend({}, modelObject, {custom: typeRestriction(['array', 'object'])}),\r\n\textend({}, modelArray, {custom: typeRestriction(['array', 'object'])})\r\n];\r\n\r\nmodelPropertySchema.allPropertySchema = modelTypeRestricted;\r\nmodelPropertySchema.propertySchema.allPropertySchema = model;\r\n\r\nmodule.exports = model;","const optionsSchema = require('./options-schema.js');\nconst extend = require('@alexspirgel/extend');\n\nconst transitionAuto = (function () {\n\n\tfunction prefixedError(message) {\n\t\tthrow new Error('transitionAuto error: ' + message);\n\t}\n\n\tfunction debug(options, ...messages) {\n\t\tif (options.debug) {\n\t\t\tconsole.log('transitionAuto debug: ', ...messages);\n\t\t}\n\t}\n\n\tfunction normalizeOptions(options) {\n\t\toptions = extend({}, options);\n\n\t\tif (options.innerElement === undefined || options.innerElement === null) {\n\t\t\tif (options.element.children.length > 0) {\n\t\t\t\toptions.innerElement = options.element.children[0];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprefixedError(`'options.element' must have at least one child element to use as 'options.innerElement'.`);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof options.value === 'number') {\n\t\t\toptions.value += 'px';\n\t\t}\n\n\t\tif (options.suppressDuplicates === undefined) {\n\t\t\toptions.suppressDuplicates = true;\n\t\t}\n\n\t\tif (options.debug === undefined) {\n\t\t\toptions.debug = false;\n\t\t}\n\n\t\treturn options;\n\t}\n\n\tfunction setValue(options) {\n\t\toptions.element.transitionAutoValue = options.value;\n\t\tconst computedStyle = getComputedStyle(options.element);\n\t\toptions.element.style[options.property] = computedStyle[options.property];\n\t\toptions.element.offsetHeight; // This line does nothing but force the element to repaint so transitions work properly.\n\t\t\n\t\tlet hasTransition = false;\n\t\tconst transitionPropertyValues = computedStyle.transitionProperty.split(', ');\n\t\tconst transitionDurationValues = computedStyle.transitionDuration.split(', ');\n\t\tfor (let i = 0; i < transitionPropertyValues.length; i++) {\n\t\t\tif (transitionPropertyValues[i] === 'all' || transitionPropertyValues[i] === options.property) {\n\t\t\t\tconst transitionDuration = transitionDurationValues[i] ? transitionDurationValues[i] : transitionDurationValues[0];\n\t\t\t\tif (transitionDuration !== '0s') {\n\t\t\t\t\thasTransition = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasTransition) {\n\t\t\tdebug(options, 'transition detected.');\n\t\t\tif (options.value === 'auto') {\n\t\t\t\tconst elementDimensions = options.element.getBoundingClientRect();\n\t\t\t\tconst innerElementDimensions = options.innerElement.getBoundingClientRect();\n\t\t\t\tif (elementDimensions[options.property] !== innerElementDimensions[options.property]) {\n\t\t\t\t\toptions.element.transitionAutoBoundHandler = transitionendHandler.bind(options);\n\t\t\t\t\toptions.element.addEventListener('transitionend', options.element.transitionAutoBoundHandler);\n\t\t\t\t\toptions.element.style[options.property] = innerElementDimensions[options.property] + 'px';\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (options.element.style[options.property] !== options.value) {\n\t\t\t\t\toptions.element.transitionAutoBoundHandler = transitionendHandler.bind(options);\n\t\t\t\t\toptions.element.addEventListener('transitionend', options.element.transitionAutoBoundHandler);\n\t\t\t\t\toptions.element.style[options.property] = options.value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdebug(options, 'immediate fallback.');\n\t\toptions.element.style[options.property] = options.value;\n\t\tonComplete(options);\n\t}\n\t\n\tfunction transitionendHandler(event) {\n\t\tif (event.propertyName === this.property) {\n\t\t\tif (this.element.transitionAutoBoundHandler) {\n\t\t\t\tthis.element.removeEventListener('transitionend', this.element.transitionAutoBoundHandler);\n\t\t\t\tdelete this.element.transitionAutoBoundHandler;\n\t\t\t}\n\t\t\tif (this.value === 'auto') {\n\t\t\t\tthis.element.style[this.property] = this.value;\n\t\t\t}\n\t\t}\n\t\tonComplete(this);\n\t}\n\n\tfunction onComplete(options) {\n\t\tif (options.element.transitionAutoValue) {\n\t\t\tdelete options.element.transitionAutoValue;\n\t\t}\n\t\tif (options.onComplete) {\n\t\t\toptions.onComplete(options);\n\t\t}\n\t}\n\n\treturn function (options) {\n\t\ttry {\n\t\t\toptionsSchema.validate(options);\n\t\t}\n\t\tcatch (error) {\n\t\t\tprefixedError(error);\n\t\t}\n\t\toptions = normalizeOptions(options);\n\t\tdebug(options, 'options:', options);\n\t\tif (options.suppressDuplicates && options.element.transitionAutoValue) {\n\t\t\tif (options.value === options.element.transitionAutoValue) {\n\t\t\t\tdebug(options, 'duplicate suppressed.');\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (options.element.transitionAutoBoundHandler) {\n\t\t\toptions.element.removeEventListener('transitionend', options.element.transitionAutoBoundHandler);\n\t\t\tdelete options.element.transitionAutoBoundHandler;\n\t\t}\n\t\tsetValue(options);\n\t};\n\n})();\n\nmodule.exports = transitionAuto;","const Schema = require('@alexspirgel/schema');\n\nconst optionsModel = {\n\trequired: true,\n\ttype: 'object',\n\tallowUnvalidatedProperties: false,\n\tpropertySchema: {\n\t\telement: {\n\t\t\trequired: true,\n\t\t\ttype: 'object',\n\t\t\tinstanceOf: Element\n\t\t},\n\t\tinnerElement: {\n\t\t\ttype: 'object',\n\t\t\tinstanceOf: Element,\n\t\t\tcustom: (inputPathManager) => {\n\t\t\t\tconst innerElement = inputPathManager.value;\n\t\t\t\tinputPathManager.removePathSegment();\n\t\t\t\tconst element = inputPathManager.value.element;\n\t\t\t\tif (element.contains(innerElement) && element !== innerElement) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Schema.ValidationError(`'options.innerElement' must be contained within 'options.element'.`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tproperty: {\n\t\t\trequired: true,\n\t\t\ttype: 'string',\n\t\t\texactValue: [\n\t\t\t\t'height',\n\t\t\t\t'width'\n\t\t\t]\n\t\t},\n\t\tvalue: [\n\t\t\t{\n\t\t\t\trequired: true,\n\t\t\t\ttype: 'number',\n\t\t\t\tgreaterThanOrEqualTo: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\trequired: true,\n\t\t\t\ttype: 'string',\n\t\t\t\tcustom: (inputPathManager) => {\n\t\t\t\t\tconst value = inputPathManager.value;\n\t\t\t\t\tif (value.endsWith('px')) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Schema.ValidationError(`'options.value' string must end with 'px'.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\trequired: true,\n\t\t\t\ttype: 'string',\n\t\t\t\texactValue: 'auto'\n\t\t\t}\n\t\t],\n\t\tonComplete: {\n\t\t\ttype: 'function'\n\t\t},\n\t\tsuppressDuplicates: {\n\t\t\ttype: 'boolean'\n\t\t},\n\t\tdebug: {\n\t\t\ttype: 'boolean'\n\t\t}\n\t}\n};\n\nconst optionsSchema = new Schema(optionsModel);\n\nmodule.exports = optionsSchema;","// 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","const transitionAuto = require(\"@alexspirgel/transition-auto\");\nconst childrenLoaded = require(\"@alexspirgel/children-loaded\");\n\nclass SiteWideHeader extends HTMLElement {\n constructor() {\n super();\n }\n\n async connectedCallback() {\n await childrenLoaded(this);\n this.initialize();\n }\n\n initialize() {\n\n if (!this.initialized) {\n this.initialized = true;\n\n this.watchWPAdminBarHeight();\n this.watchFixedContainerHeight();\n this.watchFixedContainerTop();\n this.listenForMobileSubMenuToggleButtonClick();\n this.watchMobileMenuScroll();\n\t\t\tthis.positionIndustriesMenu();\n\n if (this.mobileMenuToggleElement) {\n this.mobileMenuToggleElement.addEventListener(\"click\", this.toggleMobileMenu);\n }\n\n }\n }\n\n get wpAdminBarSelector() {\n return \"#wpadminbar\";\n }\n\n get wpAdminBarElement() {\n return document.querySelector(this.wpAdminBarSelector);\n }\n\n get wpAdminBarHeight() {\n if (this.wpAdminBarElement) {\n return this.wpAdminBarElement.offsetHeight;\n } else {\n return 0;\n }\n }\n\n get wpAdminBarHeightFixedMinViewportWidth() {\n return 601;\n }\n\n get isWPAdminBarFixed() {\n const mediaQuery = window.matchMedia(`(min-width: ${this.wpAdminBarHeightFixedMinViewportWidth}px)`);\n if (mediaQuery.matches) {\n return true;\n } else {\n return false;\n }\n }\n\n updateWPAdminBarHeightCSSVariable() {\n this.style.setProperty(\"--wp-admin-bar-height\", `${this.wpAdminBarHeight}px`);\n this.lastKnownWPAdminBarHeight = this.wpAdminBarHeight;\n }\n\n watchWPAdminBarHeight() {\n this.updateWPAdminBarHeightCSSVariable();\n const resizeObserver = new ResizeObserver(() => {\n if (this.wpAdminBarHeight !== this.lastKnownWPAdminBarHeight) {\n this.updateWPAdminBarHeightCSSVariable();\n }\n });\n resizeObserver.observe(this.fixedContainerElement);\n }\n\n get fixedContainerSelector() {\n return \".block-site-wide-header\";\n }\n\n get fixedContainerElement() {\n return this; // this.querySelector(this.fixedContainerSelector);\n }\n\n get fixedContainerHeight() {\n if (this.fixedContainerElement) {\n return this.fixedContainerElement.offsetHeight;\n } else {\n return 0;\n }\n }\n\n updateFixedContainerHeightCSSVariable() {\n\n\t\tconsole.log (`fixed container height: ${this.fixedContainerHeight}px`);\n\n this.style.setProperty(\"--fixed-container-height\", `${this.fixedContainerHeight}px`);\n document.body.style.setProperty(\"--fixed-container-height\", `${this.fixedContainerHeight}px`);\n this.lastKnownFixedContainerHeight = this.fixedContainerHeight;\n }\n\n watchFixedContainerHeight() {\n this.updateFixedContainerHeightCSSVariable();\n const resizeObserver = new ResizeObserver(() => {\n if (this.fixedContainerHeight !== this.lastKnownFixedContainerHeight) {\n this.updateFixedContainerHeightCSSVariable();\n }\n });\n resizeObserver.observe(this.fixedContainerElement);\n }\n\n updateFixedContainerTopCSSVariable() {\n if (this.isWPAdminBarFixed) {\n if (this.lastKnownFixedContainerTop !== 0) {\n this.style.setProperty(\"--fixed-container-top\", \"0px\");\n this.lastKnownFixedContainerTop = 0;\n }\n } else {\n let newFixedContainerTop = 0;\n if (window.scrollY < this.wpAdminBarHeight) {\n newFixedContainerTop = this.wpAdminBarHeight - window.scrollY;\n }\n if (this.lastKnownFixedContainerTop !== newFixedContainerTop) {\n this.style.setProperty(\"--fixed-container-top\", `${newFixedContainerTop}px`);\n this.lastKnownFixedContainerTop = newFixedContainerTop;\n }\n }\n }\n\n watchFixedContainerTop() {\n this.updateFixedContainerTopCSSVariable();\n document.addEventListener(\"scroll\", () => {\n this.updateFixedContainerTopCSSVariable();\n });\n window.addEventListener(\"resize\", () => {\n this.updateFixedContainerTopCSSVariable();\n });\n }\n\n get mobileMenuToggleSelector() {\n return \".block-site-wide-header__mobile-menu-toggle\";\n }\n\n get mobileMenuToggleElement() {\n return this.querySelector(this.mobileMenuToggleSelector);\n }\n\n get mobileMenuToggleClass() {\n return \"mobile-menu-active\";\n }\n\n preventBodyScroll() {\n document.body.style.overflow = \"hidden\";\n }\n\n allowBodyScroll() {\n document.body.style.overflow = \"auto\";\n }\n\n toggleMobileMenu = () => {\n if (this.mobileMenuToggleElement) {\n if (this.classList.contains(this.mobileMenuToggleClass)) {\n this.hideMobileMenu();\n this.allowBodyScroll();\n } else {\n this.showMobileMenu();\n this.preventBodyScroll();\n }\n } else {\n throw new Error(`Could not find mobile menu toggle element using selector: ${this.mobileMenuToggleSelector}.`);\n }\n };\n\n showMobileMenu = () => {\n this.classList.add(this.mobileMenuToggleClass);\n };\n\n hideMobileMenu = () => {\n this.classList.remove(this.mobileMenuToggleClass);\n };\n\n get mobileNavContainerSelector() {\n return \".block-site-wide-header__main-navigation-container\";\n }\n\n get mobileNavContainerElement() {\n return this.querySelector(this.mobileNavContainerSelector);\n }\n\n watchMobileMenuScroll() {\n if (this.mobileNavContainerElement) {\n this.mobileNavContainerElement.addEventListener(\"scroll\", this.mobileMenuScrollHandler);\n }\n }\n\n mobileMenuScrollHandler = () => {\n if (this.mobileNavContainerElement) {\n if (this.mobileNavContainerElement.scrollTop > 3) {\n this.mobileNavContainerElement.classList.add(\"is-scrolled\");\n } else {\n this.mobileNavContainerElement.classList.remove(\"is-scrolled\");\n }\n }\n };\n\n get mobileMenuItemWithSubMenuSelector() {\n return \".block-site-wide-header__main-menu > li.menu-item-has-children\";\n }\n\n get mobileMenuItemWithSubMenuElements() {\n return this.querySelectorAll(this.mobileMenuItemWithSubMenuSelector);\n }\n\n listenForMobileSubMenuToggleButtonClick() {\n for (const mobileMenuItemWithSubMenuElement of this.mobileMenuItemWithSubMenuElements) {\n const toggleButton = mobileMenuItemWithSubMenuElement.querySelector(\".block-site-wide-header__sub-menu-toggle\");\n if (toggleButton) {\n toggleButton.addEventListener(\"click\", this.mobileSubMenuToggleButtonClickHandler);\n }\n }\n }\n\n mobileSubMenuToggleButtonClickHandler = (event) => {\n const menuItemElement = event.target.closest(this.mobileMenuItemWithSubMenuSelector);\n if (menuItemElement) {\n this.toggleMobileSubMenu(menuItemElement);\n }\n };\n\n toggleMobileSubMenu(menuItemElement) {\n if (menuItemElement.classList.contains(\"open\")) {\n this.closeMobileSubMenu(menuItemElement);\n } else {\n this.openMobileSubMenu(menuItemElement);\n }\n }\n\n openMobileSubMenu(menuItemElement) {\n menuItemElement.classList.add(\"open\");\n const subMenuWrapperElement = menuItemElement.querySelector(\".sub-menu-wrapper\");\n transitionAuto({\n element: subMenuWrapperElement,\n property: \"height\",\n value: \"auto\",\n });\n }\n\n closeMobileSubMenu(menuItemElement) {\n menuItemElement.classList.remove(\"open\");\n const subMenuWrapperElement = menuItemElement.querySelector(\".sub-menu-wrapper\");\n transitionAuto({\n element: subMenuWrapperElement,\n property: \"height\",\n value: \"0px\",\n });\n }\n\n\tpositionIndustriesMenu() {\n\n\t\tconst applyIndustriesMenuPosition = () => {\n\t\t\tconst industriesSubMenu = document.querySelector('.sub-menu-wrapper-industries');\n\t\t\tconst industriesMenuItem = document.querySelector('.menu-item-industries');\n\t\t\tconst subMenuPadding = '1rem';\n\n\t\t\tif (industriesMenuItem) {\n\t\t\t\tconst industriesMenuRect = industriesMenuItem.getBoundingClientRect();\n\n\t\t\t\tindustriesSubMenu.style.setProperty('left', \"calc(\" + parseInt(industriesMenuRect.left).toString() + 'px' + ` - ${subMenuPadding})`);\n\t\t\t}\n\t\t}\n\n\t\tapplyIndustriesMenuPosition();\n\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tapplyIndustriesMenuPosition();\n\t\t});\n\t\tresizeObserver.observe(this.fixedContainerElement);\n\n\t}\n}\n\ncustomElements.define(\"block-site-wide-header\", SiteWideHeader, { extends: \"header\" });\n"],"names":["module","exports","childrenLoadedPromises","WeakMap","childrenLoadedSynchronous","element","document","readyState","nextSibling","parentNode","childrenLoaded","forceNewPromise","get","childrenLoadedPromise","Promise","resolve","observer","MutationObserver","disconnect","observe","childList","set","sync","synchronous","isPlainObject","extend","arguments","argumentIndex","merge","mergeIsArray","target","length","Array","isArray","property","undefined","value","Object","prototype","toString","call","getPrototypeOf","constructor","data","path","this","Error","_path","addPathSegment","pathSegment","push","removePathSegment","splice","error","clone","options","DataPathManager","ValidationError","params","super","modelPathManager","_modelPathManager","inputPathManager","_inputPathManager","errors","addError","singleError","generateFormattedMessage","message","inputPath","map","join","modelPath","ValidationErrors","modelModel","Schema","validationMethods","method","validateRequired","validateType","validateExactValue","validateGreaterThan","validateGreaterThanOrEqualTo","validateLessThan","validateLessThanOrEqualTo","validateDivisibleBy","validateNotDivisibleBy","validateMinimumCharacters","validateMaximumCharacters","validateMinimumLength","validateMaximumLength","validateInstanceOf","validateAllowUnvalidatedProperties","validateCustom","validateAllPropertySchema","validatePropertySchema","static","isNaN","flag","validatedProperties","keys","includes","customInputPathManager","allPropertySchema","inputPropertyPathManager","validationResult","validate","modelPropertyPathManager","propertySchema","selfValidate","errorStyle","validationErrors","modelIndex","modelItemPathManager","_validate","required","validationMethod","hasOwnProperty","validationMethodModelPathManager","typeRestriction","types","validationProperty","type","typesString","i","modelPropertySchema","exactValue","custom","greaterThan","greaterThanOrEqualTo","lessThan","lessThanOrEqualTo","divisibleBy","notDivisibleBy","minimumCharacters","maximumCharacters","minimumLength","maximumLength","instanceOf","allowUnvalidatedProperties","modelObject","modelArray","model","modelTypeRestricted","optionsSchema","transitionAuto","prefixedError","debug","messages","console","log","transitionendHandler","event","propertyName","transitionAutoBoundHandler","removeEventListener","style","onComplete","transitionAutoValue","innerElement","children","suppressDuplicates","normalizeOptions","computedStyle","getComputedStyle","offsetHeight","hasTransition","transitionPropertyValues","transitionProperty","split","transitionDurationValues","transitionDuration","elementDimensions","getBoundingClientRect","innerElementDimensions","bind","addEventListener","setValue","optionsModel","Element","contains","endsWith","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","SiteWideHeader","HTMLElement","async","initialize","initialized","watchWPAdminBarHeight","watchFixedContainerHeight","watchFixedContainerTop","listenForMobileSubMenuToggleButtonClick","watchMobileMenuScroll","positionIndustriesMenu","mobileMenuToggleElement","toggleMobileMenu","wpAdminBarSelector","wpAdminBarElement","querySelector","wpAdminBarHeight","wpAdminBarHeightFixedMinViewportWidth","isWPAdminBarFixed","window","matchMedia","matches","updateWPAdminBarHeightCSSVariable","setProperty","lastKnownWPAdminBarHeight","ResizeObserver","fixedContainerElement","fixedContainerSelector","fixedContainerHeight","updateFixedContainerHeightCSSVariable","body","lastKnownFixedContainerHeight","updateFixedContainerTopCSSVariable","lastKnownFixedContainerTop","newFixedContainerTop","scrollY","mobileMenuToggleSelector","mobileMenuToggleClass","preventBodyScroll","overflow","allowBodyScroll","classList","hideMobileMenu","showMobileMenu","add","remove","mobileNavContainerSelector","mobileNavContainerElement","mobileMenuScrollHandler","scrollTop","mobileMenuItemWithSubMenuSelector","mobileMenuItemWithSubMenuElements","querySelectorAll","mobileMenuItemWithSubMenuElement","toggleButton","mobileSubMenuToggleButtonClickHandler","menuItemElement","closest","toggleMobileSubMenu","closeMobileSubMenu","openMobileSubMenu","subMenuWrapperElement","applyIndustriesMenuPosition","industriesSubMenu","industriesMenuItem","industriesMenuRect","parseInt","left","customElements","define","extends"],"sourceRoot":""}