(()=>{var __webpack_modules__={"./src/fieldError.riot"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n css: null,\n\n exports: {\n state: {\n errors: [\n\n ],\n\n // css class for\n closest: '.field-group',\n },\n\n /**\n *\n *\n * @param {Object} props\n * @param {Object} state\n *\n */\n onBeforeMounted(props, state)\n {\n if (props.closest) {\n state.closest = props.closest\n }\n },\n\n /**\n *\n *\n * @param {Object} props\n * @param {Object} state\n *\n */\n onMounted(props, state)\n {\n // getting parent element for entire field\n const parent = this.root.closest(state.closest)\n\n // getting current element by name\n const element = parent.querySelector('[name=\"' + props.name + '\"]')\n\n // getting form\n const form = element.closest('form')\n\n // element, form are exists and nofieldupdate is not set\n // each change of the element dispatch a event to form validation\n if (element && form && !props.nofieldupdate) {\n element.addEventListener('input', (event) => {\n this.dispatchCustomEvent(event, form, props.name)\n })\n }\n\n // add custom event to listen to form-validation\n this.root.addEventListener('form-validation', (event) => {\n this.onFormValidation(event, parent)\n })\n },\n\n /**\n * process form validation triggered by form\n *\n * @param {Event} event\n * @param {Element} parent\n *\n */\n onFormValidation(event, parent)\n {\n // if detail is a value, set to errors\n if (event.detail) {\n this.state.errors = event.detail\n\n parent.classList.add('field--error')\n parent.classList.remove('field--valid')\n } else {\n this.state.errors = []\n\n parent.classList.remove('field--error')\n parent.classList.add('field--valid')\n }\n\n this.update()\n },\n\n /**\n * create event to send to form validation\n *\n * @param {Event} event\n * @param {Element} form\n * @param {string} name\n *\n */\n dispatchCustomEvent(event, form, name)\n {\n const fieldUpdateEvent = new CustomEvent('field-update', {\n 'detail': {\n 'name': name,\n 'value': event.target.value\n }\n })\n\n form.dispatchEvent(fieldUpdateEvent)\n }\n },\n\n template: (\n template,\n expressionTypes,\n bindingTypes,\n getComponent\n ) => template(\n '
',\n [\n {\n type: bindingTypes.IF,\n evaluate: _scope => _scope.state.errors.length > 0,\n redundantAttribute: 'expr0',\n selector: '[expr0]',\n\n template: template(\n '' + JSON.stringify(data) + '
'\n document.querySelector('#result').classList.remove('hidden')\n})\n\nriot__WEBPACK_IMPORTED_MODULE_0__.register('form-component', _formComponent_riot__WEBPACK_IMPORTED_MODULE_4__[\"default\"])\nriot__WEBPACK_IMPORTED_MODULE_1__.mount('form-component')\n\n//# sourceURL=webpack://@tiny-components/validator/./src/example.js?\n}")},"./src/formValidator.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var validate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! validate.js */ \"./node_modules/validate.js/validate.js\");\n/* harmony import */ var validate_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(validate_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var form_serialize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! form-serialize */ \"./node_modules/form-serialize/index.js\");\n/* harmony import */ var form_serialize__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(form_serialize__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * Form Validator with RiotJS Components\n *\n *\n * @author HerrHase\n *\n */\n\nclass FormValidator\n{\n /**\n *\n * @param {[type]} formSelector [description]\n * @param {[type]} constraits [description]\n */\n constructor(formElement, constraits, addSubmitEvent = false)\n {\n // constraits for validate.js\n this.constraits = constraits\n\n // get form and elements\n this.formElement = formElement\n\n // if form not found\n if (!this.formElement) {\n console.error('FormValidator: form not found!')\n }\n\n this.elements = this.formElement.querySelectorAll('field-error')\n\n // adding event if a element is updated\n this.formElement.addEventListener('field-update', (event) => {\n this._onFieldUpdate(event)\n })\n\n // adding submit event\n if (addSubmitEvent) {\n this.formElement.addEventListener('submit', (event) => {\n this._onSubmit(event)\n })\n }\n }\n\n /**\n * trigger submit\n *\n * @param {object} event\n *\n */\n submit(event)\n {\n this._onSubmit(event)\n }\n\n /**\n *\n * @param {function} onError\n *\n */\n onError(onError)\n {\n this._onError = onError\n }\n\n /**\n * settin onSuccess callback and add submit-event on form\n *\n * @param {function} onSuccess\n *\n */\n onSuccess(onSuccess)\n {\n // adding onSuccess\n this._onSuccess = onSuccess\n }\n\n /**\n *\n * @param {function} onError\n *\n */\n onBeforeSubmit(onBeforeSubmit)\n {\n this._onBeforeSubmit = onBeforeSubmit\n }\n\n /**\n *\n */\n setConstraits(rules) \n {\n this.rules = rules\n }\n\n /**\n * handle submit\n *\n *\n * @param {Event} event\n *\n */\n _onSubmit(event)\n {\n // getting data from target of submit event\n const data = form_serialize__WEBPACK_IMPORTED_MODULE_1___default()(event.target, {\n hash: true\n })\n\n // options for validate.js\n const options = {\n fullMessages: false\n }\n\n if (this._onBeforeSubmit) {\n this._onBeforeSubmit()\n }\n\n // check form and getting errors\n validate_js__WEBPACK_IMPORTED_MODULE_0___default().async(data, this.constraits, options).then(\n () => {\n this._onSuccess(event, data)\n },\n\n (errors) => {\n event.preventDefault()\n\n // if onError is set, tha\n if (this._onError) {\n this._onError(event, errors, data)\n }\n\n // send each element a event\n this.elements.forEach((element) => {\n let elementErrors = false\n\n // check for errors by name\n if (errors[element.attributes.name.nodeValue]) {\n elementErrors = errors[element.attributes.name.nodeValue]\n }\n\n this._dispatchCustomEvent(elementErrors, element)\n })\n }\n )\n }\n\n /**\n * send update to fields\n *\n *\n * @param {Event} event\n *\n */\n _onFieldUpdate(event)\n {\n // workaround, make sure that value for single is undefined if it is empty\n if (event.detail.value == '') {\n event.detail.value = undefined\n }\n\n let errors = validate_js__WEBPACK_IMPORTED_MODULE_0___default().single(event.detail.value, this.constraits[event.detail.name])\n\n // search for element by name and dispatch event\n this.elements.forEach((element) => {\n if (element.attributes.name.nodeValue == event.detail.name) {\n this._dispatchCustomEvent(errors, element)\n }\n })\n }\n\n /**\n * dispatch event to single element\n *\n * @param {Array} errors\n * @param {Element} element\n *\n */\n _dispatchCustomEvent(errors, element)\n {\n let detail = false\n\n if (errors) {\n detail = errors\n }\n\n const formValidationEvent = new CustomEvent('form-validation', {\n 'detail': detail\n })\n\n element.dispatchEvent(formValidationEvent)\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FormValidator);\n\n\n//# sourceURL=webpack://@tiny-components/validator/./src/formValidator.js?\n}")},"./node_modules/riot/esm/api/mount.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mount: () => (/* binding */ mount)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.query/index.next.js");\n/* harmony import */ var _core_mount_component_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/mount-component.js */ "./node_modules/riot/esm/core/mount-component.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Mounting function that will work only for the components that were globally registered\n * @param {string|HTMLElement} selector - query for the selection or a DOM element\n * @param {object} initialProps - the initial component properties\n * @param {string} name - optional component name\n * @returns {Array} list of riot components\n */\nfunction mount(selector, initialProps, name) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector).map((element) =>\n (0,_core_mount_component_js__WEBPACK_IMPORTED_MODULE_1__.mountComponent)(element, initialProps, name),\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/api/mount.js?\n}')},"./node_modules/riot/esm/api/register.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _core_create_component_from_wrapper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/create-component-from-wrapper.js */ "./node_modules/riot/esm/core/create-component-from-wrapper.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Register a custom tag by name\n * @param {string} name - component name\n * @param {object} implementation - tag implementation\n * @param {string} implementation.css - component css as string\n * @param {TemplateChunk} implementation.template - component template chunk rendering function\n * @param {object} implementation.exports - component default export\n * @returns {Map} map containing all the components implementations\n */\nfunction register(name, { css, template, exports }) {\n if (_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.has(name))\n (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(`The component "${name}" was already registered`);\n\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.set(\n name,\n (0,_core_create_component_from_wrapper_js__WEBPACK_IMPORTED_MODULE_2__.createComponentFromWrapper)({ name, css, template, exports }),\n );\n\n return _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/api/register.js?\n}')},"./node_modules/riot/esm/core/add-css-hook.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addCssHook: () => (/* binding */ addCssHook)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _utils_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/dom.js */ "./node_modules/riot/esm/utils/dom.js");\n/* harmony import */ var _dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/bianco.attr/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.attr/index.next.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Add eventually the "is" attribute to link this DOM node to its css\n * @param {HTMLElement} element - target root node\n * @param {string} name - name of the component mounted\n * @returns {undefined} it\'s a void function\n */\n\nfunction addCssHook(element, name) {\n if ((0,_utils_dom_js__WEBPACK_IMPORTED_MODULE_1__.getName)(element) !== name) {\n (0,_dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_2__.set)(element, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_DIRECTIVE, name);\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/add-css-hook.js?\n}')},"./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bindDOMNodeToComponentInstance: () => (/* binding */ bindDOMNodeToComponentInstance)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Bind a DOM node to its component object\n * @param {HTMLElement} node - html node mounted\n * @param {object} component - Riot.js component object\n * @returns {object} the component object received as second argument\n */\nconst bindDOMNodeToComponentInstance = (node, component) =>\n (node[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.DOM_COMPONENT_INSTANCE_PROPERTY] = component);\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js?\n}')},"./node_modules/riot/esm/core/component-dom-selectors.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COMPONENT_DOM_SELECTORS: () => (/* binding */ COMPONENT_DOM_SELECTORS)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.query/index.next.js");\n/* Riot v10.1.4, @license MIT */\n\n\nconst COMPONENT_DOM_SELECTORS = Object.freeze({\n // component helpers\n $(selector) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector, this.root)[0]\n },\n $$(selector) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector, this.root)\n },\n});\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/component-dom-selectors.js?\n}')},"./node_modules/riot/esm/core/component-lifecycle-methods.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COMPONENT_LIFECYCLE_METHODS: () => (/* binding */ COMPONENT_LIFECYCLE_METHODS)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\nconst COMPONENT_LIFECYCLE_METHODS = Object.freeze({\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.SHOULD_UPDATE_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_BEFORE_MOUNT_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_MOUNTED_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_BEFORE_UPDATE_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_UPDATED_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_BEFORE_UNMOUNT_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_UNMOUNTED_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n});\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/component-lifecycle-methods.js?\n}')},"./node_modules/riot/esm/core/component-template-factory.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ componentTemplateFactory: () => (/* binding */ componentTemplateFactory)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/dom-bindings/dist/dom-bindings.js */ "./node_modules/riot/esm/dependencies/@riotjs/dom-bindings/dist/dom-bindings.js");\n/* harmony import */ var _dependencies_riotjs_util_expression_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/expression-types.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/expression-types.js");\n/* harmony import */ var _dependencies_riotjs_util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/binding-types.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/binding-types.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Factory function to create the component templates only once\n * @param {Function} template - component template creation function\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @param {Function} getChildComponent - getter function to return the children components\n * @returns {TemplateChunk} template chunk object\n */\nfunction componentTemplateFactory(\n template,\n componentWrapper,\n getChildComponent,\n) {\n return template(\n _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_0__.template,\n _dependencies_riotjs_util_expression_types_js__WEBPACK_IMPORTED_MODULE_1__["default"],\n _dependencies_riotjs_util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__["default"],\n getChildComponent,\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/component-template-factory.js?\n}')},"./node_modules/riot/esm/core/compute-component-state.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ computeComponentState: () => (/* binding */ computeComponentState)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Compute the component current state merging it with its previous state\n * @param {object} oldState - previous state object\n * @param {object} newState - new state given to the `update` call\n * @returns {object} new object state\n */\nfunction computeComponentState(oldState, newState) {\n return {\n ...oldState,\n ...(0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_0__.callOrAssign)(newState),\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/compute-component-state.js?\n}')},"./node_modules/riot/esm/core/compute-initial-props.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ computeInitialProps: () => (/* binding */ computeInitialProps)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/dom.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/dom.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Evaluate the component properties either from its real attributes or from its initial user properties\n * @param {HTMLElement} element - component root\n * @param {object} initialProps - initial props\n * @returns {object} component props key value pairs\n */\nfunction computeInitialProps(element, initialProps = {}) {\n return {\n ...(0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.DOMattributesToObject)(element),\n ...(0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.callOrAssign)(initialProps),\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/compute-initial-props.js?\n}')},"./node_modules/riot/esm/core/create-component-from-wrapper.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createComponentFromWrapper: () => (/* binding */ createComponentFromWrapper)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/strings.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/strings.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _mocked_template_interface_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mocked-template-interface.js */ "./node_modules/riot/esm/core/mocked-template-interface.js");\n/* harmony import */ var _component_template_factory_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./component-template-factory.js */ "./node_modules/riot/esm/core/component-template-factory.js");\n/* harmony import */ var _create_pure_component_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-pure-component.js */ "./node_modules/riot/esm/core/create-pure-component.js");\n/* harmony import */ var _instantiate_component_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instantiate-component.js */ "./node_modules/riot/esm/core/instantiate-component.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n\n\n/**\n * Create the subcomponents that can be included inside a tag in runtime\n * @param {object} components - components imported in runtime\n * @returns {object} all the components transformed into Riot.Component factory functions\n */\nfunction createChildrenComponentsObject(components = {}) {\n return Object.entries((0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.callOrAssign)(components)).reduce(\n (acc, [key, value]) => {\n acc[(0,_dependencies_riotjs_util_strings_js__WEBPACK_IMPORTED_MODULE_1__.camelToDashCase)(key)] = createComponentFromWrapper(value);\n return acc\n },\n {},\n )\n}\n\n/**\n * Create the getter function to render the child components\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @returns {Function} function returning the component factory function\n */\nconst createChildComponentGetter = (componentWrapper) => {\n const childrenComponents = createChildrenComponentsObject(\n componentWrapper.exports ? componentWrapper.exports.components : {},\n );\n\n return (name) => {\n // improve support for recursive components\n if (name === componentWrapper.name)\n return memoizedCreateComponentFromWrapper(componentWrapper)\n // return the registered components\n return childrenComponents[name] || _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.get(name)\n }\n};\n\n/**\n * Performance optimization for the recursive components\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @returns {object} component like interface\n */\nconst memoizedCreateComponentFromWrapper = (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_3__.memoize)(createComponentFromWrapper);\n\n/**\n * Create the component interface needed for the @riotjs/dom-bindings tag bindings\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @param {string} componentWrapper.css - component css\n * @param {Function} componentWrapper.template - function that will return the dom-bindings template function\n * @param {object} componentWrapper.exports - component interface\n * @param {string} componentWrapper.name - component name\n * @returns {object} component like interface\n */\nfunction createComponentFromWrapper(componentWrapper) {\n const { css, template, exports, name } = componentWrapper;\n const templateFn = template\n ? (0,_component_template_factory_js__WEBPACK_IMPORTED_MODULE_5__.componentTemplateFactory)(\n template,\n componentWrapper,\n createChildComponentGetter(componentWrapper),\n )\n : _mocked_template_interface_js__WEBPACK_IMPORTED_MODULE_4__.MOCKED_TEMPLATE_INTERFACE;\n\n return ({ slots, attributes, props }) => {\n // pure components rendering will be managed by the end user\n if (exports && exports[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PURE_SYMBOL])\n return (0,_create_pure_component_js__WEBPACK_IMPORTED_MODULE_6__.createPureComponent)(exports, {\n slots,\n attributes,\n props,\n css,\n template,\n })\n\n const componentAPI = (0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.callOrAssign)(exports) || {};\n\n const component = (0,_instantiate_component_js__WEBPACK_IMPORTED_MODULE_7__.instantiateComponent)({\n css,\n template: templateFn,\n componentAPI,\n name,\n })({ slots, attributes, props });\n\n // notice that for the components created via tag binding\n // we need to invert the mount (state/parentScope) arguments\n // the template bindings will only forward the parentScope updates\n // and never deal with the component state\n return {\n mount(element, parentScope, state) {\n return component.mount(element, state, parentScope)\n },\n update(parentScope, state) {\n return component.update(state, parentScope)\n },\n unmount(preserveRoot) {\n return component.unmount(preserveRoot)\n },\n }\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/create-component-from-wrapper.js?\n}')},"./node_modules/riot/esm/core/create-core-api-methods.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createCoreAPIMethods: () => (/* binding */ createCoreAPIMethods)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Wrap the Riot.js core API methods using a mapping function\n * @param {Function} mapFunction - lifting function\n * @returns {object} an object having the { mount, update, unmount } functions\n */\nfunction createCoreAPIMethods(mapFunction) {\n return [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UPDATE_METHOD_KEY, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UNMOUNT_METHOD_KEY].reduce(\n (acc, method) => {\n acc[method] = mapFunction(method);\n\n return acc\n },\n {},\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/create-core-api-methods.js?\n}')},"./node_modules/riot/esm/core/create-pure-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPureComponent: () => (/* binding */ createPureComponent)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/objects.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/objects.js");\n/* harmony import */ var _pure_component_api_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pure-component-api.js */ "./node_modules/riot/esm/core/pure-component-api.js");\n/* harmony import */ var _bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bind-dom-node-to-component-instance.js */ "./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js");\n/* harmony import */ var _create_core_api_methods_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./create-core-api-methods.js */ "./node_modules/riot/esm/core/create-core-api-methods.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n/**\n * Create a pure component\n * @param {Function} pureFactoryFunction - pure component factory function\n * @param {object} options - pure component options\n * @param {string} options.css - pure component can\'t have css\n * @param {Array} options.slots - component slots\n * @param {Array} options.attributes - component attributes\n * @param {Array} options.template - template factory function\n * @param {any} options.props - initial component properties\n * @returns {object} pure component object\n */\nfunction createPureComponent(\n pureFactoryFunction,\n { slots, attributes, props, css, template },\n) {\n if (template) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(\'Pure components can not have html\');\n if (css) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(\'Pure components do not have css\');\n\n const component = (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_2__.defineDefaults)(\n pureFactoryFunction({ slots, attributes, props }),\n _pure_component_api_js__WEBPACK_IMPORTED_MODULE_3__.PURE_COMPONENT_API,\n );\n\n return (0,_create_core_api_methods_js__WEBPACK_IMPORTED_MODULE_5__.createCoreAPIMethods)((method) => (...args) => {\n // intercept the mount calls to bind the DOM node to the pure object created\n // see also https://github.com/riot/riot/issues/2806\n if (method === _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY) {\n const [element] = args;\n // mark this node as pure element\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(element, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PURE_SYMBOL, true);\n (0,_bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_4__.bindDOMNodeToComponentInstance)(element, component);\n }\n\n component[method](...args);\n\n return component\n })\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/create-pure-component.js?\n}')},"./node_modules/riot/esm/core/css-manager.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CSS_BY_NAME: () => (/* binding */ CSS_BY_NAME),\n/* harmony export */ STYLE_NODE_SELECTOR: () => (/* binding */ STYLE_NODE_SELECTOR),\n/* harmony export */ \"default\": () => (/* binding */ cssManager)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ \"./node_modules/riot/esm/dependencies/bianco.query/index.next.js\");\n/* harmony import */ var _dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/bianco.attr/index.next.js */ \"./node_modules/riot/esm/dependencies/bianco.attr/index.next.js\");\n/* Riot v10.1.4, @license MIT */\n\n\n\nconst CSS_BY_NAME = new Map();\nconst STYLE_NODE_SELECTOR = 'style[riot]';\n\n// memoized curried function\nconst getStyleNode = ((style) => {\n return () => {\n // lazy evaluation:\n // if this function was already called before\n // we return its cached result\n if (style) return style\n\n // create a new style element or use an existing one\n // and cache it internally\n style = (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(STYLE_NODE_SELECTOR)[0] || document.createElement('style');\n (0,_dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_1__.set)(style, 'type', 'text/css');\n\n /* istanbul ignore next */\n if (!style.parentNode) document.head.appendChild(style);\n\n return style\n }\n})();\n\n/**\n * Object that will be used to inject and manage the css of every tag instance\n */\nconst cssManager = {\n CSS_BY_NAME,\n /**\n * Save a tag style to be later injected into DOM\n * @param { string } name - if it's passed we will map the css to a tagname\n * @param { string } css - css string\n * @returns {object} self\n */\n add(name, css) {\n if (!CSS_BY_NAME.has(name)) {\n CSS_BY_NAME.set(name, css);\n this.inject();\n }\n\n return this\n },\n /**\n * Inject all previously saved tag styles into DOM\n * innerHTML seems slow: http://jsperf.com/riot-insert-style\n * @returns {object} self\n */\n inject() {\n getStyleNode().innerHTML = [...CSS_BY_NAME.values()].join('\\n');\n return this\n },\n\n /**\n * Remove a tag style from the DOM\n * @param {string} name a registered tagname\n * @returns {object} self\n */\n remove(name) {\n if (CSS_BY_NAME.has(name)) {\n CSS_BY_NAME.delete(name);\n this.inject();\n }\n\n return this\n },\n};\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/css-manager.js?\n}")},"./node_modules/riot/esm/core/instantiate-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ instantiateComponent: () => (/* binding */ instantiateComponent)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/objects.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/objects.js");\n/* harmony import */ var _component_dom_selectors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./component-dom-selectors.js */ "./node_modules/riot/esm/core/component-dom-selectors.js");\n/* harmony import */ var _component_lifecycle_methods_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./component-lifecycle-methods.js */ "./node_modules/riot/esm/core/component-lifecycle-methods.js");\n/* harmony import */ var _css_manager_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./css-manager.js */ "./node_modules/riot/esm/core/css-manager.js");\n/* harmony import */ var _dependencies_curri_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dependencies/curri/index.js */ "./node_modules/riot/esm/dependencies/curri/index.js");\n/* harmony import */ var _manage_component_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./manage-component-lifecycle.js */ "./node_modules/riot/esm/core/manage-component-lifecycle.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n\n/**\n * Component definition function\n * @param {object} component - the component initial properties\n * @param {string} component.css - component css string\n * @param {TemplateChunk} component.template - component template rendering\n * @param {object} component.componentAPI - component export default value\n * @param {string} component.name - component name\n * @returns {object} a new component implementation object\n */\nfunction instantiateComponent({ css, template, componentAPI, name }) {\n // add the component css into the DOM\n if (css && name) _css_manager_js__WEBPACK_IMPORTED_MODULE_4__["default"].add(name, css);\n\n return (0,_dependencies_curri_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_manage_component_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.manageComponentLifecycle)(\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_1__.defineProperties)(\n // set the component defaults without overriding the original component API\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_1__.defineDefaults)(componentAPI, {\n ..._component_lifecycle_methods_js__WEBPACK_IMPORTED_MODULE_3__.COMPONENT_LIFECYCLE_METHODS,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PROPS_KEY]: {},\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.STATE_KEY]: {},\n }),\n {\n // defined during the component creation\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.SLOTS_KEY]: null,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ROOT_KEY]: null,\n // these properties should not be overriden\n ..._component_dom_selectors_js__WEBPACK_IMPORTED_MODULE_2__.COMPONENT_DOM_SELECTORS,\n name,\n css,\n template,\n },\n ),\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/instantiate-component.js?\n}')},"./node_modules/riot/esm/core/manage-component-lifecycle.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ manageComponentLifecycle: () => (/* binding */ manageComponentLifecycle)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/checks.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/checks.js");\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/dom.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/dom.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dependencies/@riotjs/util/objects.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/objects.js");\n/* harmony import */ var _utils_get_root_computed_attribute_names_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/get-root-computed-attribute-names.js */ "./node_modules/riot/esm/utils/get-root-computed-attribute-names.js");\n/* harmony import */ var _add_css_hook_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./add-css-hook.js */ "./node_modules/riot/esm/core/add-css-hook.js");\n/* harmony import */ var _bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bind-dom-node-to-component-instance.js */ "./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js");\n/* harmony import */ var _compute_component_state_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./compute-component-state.js */ "./node_modules/riot/esm/core/compute-component-state.js");\n/* harmony import */ var _compute_initial_props_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./compute-initial-props.js */ "./node_modules/riot/esm/core/compute-initial-props.js");\n/* harmony import */ var _run_plugins_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./run-plugins.js */ "./node_modules/riot/esm/core/run-plugins.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Component creation factory function that will enhance the user provided API\n * @param {object} component - a component implementation previously defined\n * @param {object} options - component options\n * @param {Array} options.slots - component slots generated via riot compiler\n * @param {Array} options.attributes - attribute expressions generated via riot compiler\n * @param {object} options.props - component initial props\n * @returns {Riot.Component} a riot component instance\n */\nfunction manageComponentLifecycle(\n component,\n { slots, attributes = [], props },\n) {\n return (0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_3__.autobindMethods)(\n (0,_run_plugins_js__WEBPACK_IMPORTED_MODULE_11__.runPlugins)(\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperties)(\n (0,_dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(component) ? Object.create(component) : component,\n {\n mount(element, state = {}, parentScope) {\n // any element mounted passing through this function can\'t be a pure component\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(element, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_PURE_SYMBOL, false);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL] = parentScope;\n\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(\n this,\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY,\n Object.freeze({\n ...(0,_compute_initial_props_js__WEBPACK_IMPORTED_MODULE_10__.computeInitialProps)(element, props),\n ...(0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_4__.generatePropsFromAttributes)(attributes, parentScope),\n }),\n );\n\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY] = (0,_compute_component_state_js__WEBPACK_IMPORTED_MODULE_9__.computeComponentState)(this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY], state);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL] = this.template.createDOM(element).clone();\n // get the attribute names that don\'t belong to the props object\n // this will avoid recursive props rendering https://github.com/riot/riot/issues/2994\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_ATTRIBUTES_KEY_SYMBOL] = (0,_utils_get_root_computed_attribute_names_js__WEBPACK_IMPORTED_MODULE_6__.getRootComputedAttributeNames)(\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL],\n );\n\n // link this object to the DOM node\n (0,_bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_8__.bindDOMNodeToComponentInstance)(element, this);\n // add eventually the \'is\' attribute\n component.name && (0,_add_css_hook_js__WEBPACK_IMPORTED_MODULE_7__.addCssHook)(element, component.name);\n\n // define the root element\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(this, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_KEY, element);\n // define the slots array\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(this, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.SLOTS_KEY, slots);\n\n // before mount lifecycle event\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_BEFORE_MOUNT_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n // mount the template\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL].mount(element, this, parentScope);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_MOUNTED_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n return this\n },\n update(state = {}, parentScope) {\n if (parentScope) {\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL] = parentScope;\n }\n\n // filter out the computed attributes from the root node\n const staticRootAttributes = Array.from(\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_KEY].attributes,\n ).filter(\n ({ name }) => !this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_ATTRIBUTES_KEY_SYMBOL].includes(name),\n );\n\n // evaluate the value of the static dom attributes\n const domNodeAttributes = (0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_2__.DOMattributesToObject)({\n attributes: staticRootAttributes,\n });\n\n // Avoid adding the riot "is" directives to the component props\n // eslint-disable-next-line no-unused-vars\n const { [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_DIRECTIVE]: _, ...newProps } = {\n ...domNodeAttributes,\n ...(0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_4__.generatePropsFromAttributes)(\n attributes,\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL],\n ),\n };\n if (this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.SHOULD_UPDATE_KEY](newProps, this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY]) === false)\n return\n\n ;(0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(\n this,\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY,\n Object.freeze({\n // only root components will merge their initial props with the new ones\n // children components will just get them overridden see also https://github.com/riot/riot/issues/2978\n ...(parentScope ? null : this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY]),\n ...newProps,\n }),\n );\n\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY] = (0,_compute_component_state_js__WEBPACK_IMPORTED_MODULE_9__.computeComponentState)(this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY], state);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_BEFORE_UPDATE_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n // avoiding recursive updates\n // see also https://github.com/riot/riot/issues/2895\n if (!this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING]) {\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING] = true;\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL].update(this, this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL]);\n }\n\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_UPDATED_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING] = false;\n\n return this\n },\n unmount(preserveRoot) {\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_BEFORE_UNMOUNT_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n // make sure that computed root attributes get removed if the root is preserved\n // https://github.com/riot/riot/issues/3051\n if (preserveRoot)\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_ATTRIBUTES_KEY_SYMBOL].forEach((attribute) =>\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_KEY].removeAttribute(attribute),\n );\n // if the preserveRoot is null the template html will be left untouched\n // in that case the DOM cleanup will happen differently from a parent node\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL].unmount(\n this,\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL],\n preserveRoot === null ? null : !preserveRoot,\n );\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_UNMOUNTED_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n return this\n },\n },\n ),\n ),\n Object.keys(component).filter((prop) => (0,_dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__.isFunction)(component[prop])),\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/manage-component-lifecycle.js?\n}')},"./node_modules/riot/esm/core/mocked-template-interface.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MOCKED_TEMPLATE_INTERFACE: () => (/* binding */ MOCKED_TEMPLATE_INTERFACE)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/dom.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/dom.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n// Components without template use a mocked template interface with some basic functionalities to\n// guarantee consistent rendering behaviour see https://github.com/riot/riot/issues/2984\nconst MOCKED_TEMPLATE_INTERFACE = {\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY](el) {\n this.el = el;\n },\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UPDATE_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UNMOUNT_METHOD_KEY](_, __, mustRemoveRoot = false) {\n if (mustRemoveRoot) (0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_1__.removeChild)(this.el);\n else if (!mustRemoveRoot) (0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_1__.cleanNode)(this.el);\n },\n clone() {\n return { ...this }\n },\n createDOM: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.noop,\n};\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/mocked-template-interface.js?\n}')},"./node_modules/riot/esm/core/mount-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mountComponent: () => (/* binding */ mountComponent)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _utils_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/dom.js */ "./node_modules/riot/esm/utils/dom.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Component initialization function starting from a DOM node\n * @param {HTMLElement} element - element to upgrade\n * @param {object} initialProps - initial component properties\n * @param {string} componentName - component id\n * @param {Array} slots - component slots\n * @returns {object} a new component instance bound to a DOM node\n */\nfunction mountComponent(element, initialProps, componentName, slots) {\n const name = componentName || (0,_utils_dom_js__WEBPACK_IMPORTED_MODULE_2__.getName)(element);\n if (!_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.has(name))\n (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(`The component named "${name}" was never registered`);\n\n const component = _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.get(name)({\n props: initialProps,\n slots,\n });\n\n return component.mount(element)\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/mount-component.js?\n}')},"./node_modules/riot/esm/core/pure-component-api.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PURE_COMPONENT_API: () => (/* binding */ PURE_COMPONENT_API)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\nconst PURE_COMPONENT_API = Object.freeze({\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UPDATE_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UNMOUNT_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n});\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/pure-component-api.js?\n}')},"./node_modules/riot/esm/core/run-plugins.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ runPlugins: () => (/* binding */ runPlugins)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Run the component instance through all the plugins set by the user\n * @param {object} component - component instance\n * @returns {object} the component enhanced by the plugins\n */\nfunction runPlugins(component) {\n return [..._dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PLUGINS_SET].reduce((c, fn) => fn(c) || c, component)\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/validator/./node_modules/riot/esm/core/run-plugins.js?\n}')},"./node_modules/riot/esm/dependencies/@riotjs/dom-bindings/dist/dom-bindings.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bindingTypes: () => (/* reexport safe */ _util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ createBinding: () => (/* binding */ create$1),\n/* harmony export */ createExpression: () => (/* binding */ create$4),\n/* harmony export */ expressionTypes: () => (/* reexport safe */ _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ template: () => (/* binding */ create)\n/* harmony export */ });\n/* harmony import */ var _util_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/dom.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/dom.js\");\n/* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/constants.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/constants.js\");\n/* harmony import */ var _util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/binding-types.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/binding-types.js\");\n/* harmony import */ var _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/expression-types.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/expression-types.js\");\n/* harmony import */ var _util_objects_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/objects.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/objects.js\");\n/* harmony import */ var _util_checks_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/checks.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/checks.js\");\n/* harmony import */ var _util_misc_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/misc.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/misc.js\");\n/* Riot WIP, @license MIT */\n\n\n\n\n\n\n\n\n\n\nconst HEAD_SYMBOL = Symbol();\nconst TAIL_SYMBOL = Symbol();\n\n/**\n * Create the fragments text nodes\n * @returns {object} {{head: Text, tail: Text}}\n */\nfunction createHeadTailPlaceholders() {\n const head = document.createTextNode('');\n const tail = document.createTextNode('');\n\n head[HEAD_SYMBOL] = true;\n tail[TAIL_SYMBOL] = true;\n\n return { head, tail }\n}\n\n/**\n * Create the template meta object in case of fragments\n * @param {TemplateChunk} componentTemplate - template chunk object\n * @returns {object} the meta property that will be passed to the mount function of the TemplateChunk\n */\nfunction createTemplateMeta(componentTemplate) {\n const fragment = componentTemplate.dom.cloneNode(true);\n const { head, tail } = createHeadTailPlaceholders();\n\n return {\n avoidDOMInjection: true,\n fragment,\n head,\n tail,\n children: [head, ...Array.from(fragment.childNodes), tail],\n }\n}\n\n/* c8 ignore start */\n/**\n * ISC License\n *\n * Copyright (c) 2020, Andrea Giammarchi, @WebReflection\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\n * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n// fork of https://github.com/WebReflection/udomdiff version 1.1.0\n// due to https://github.com/WebReflection/udomdiff/pull/2\n/* eslint-disable */\n\n/**\n * @param {Node[]} a The list of current/live children\n * @param {Node[]} b The list of future children\n * @param {(entry: Node, action: number) => Node} get\n * The callback invoked per each entry related DOM operation.\n * @param {Node} [before] The optional node used as anchor to insert before.\n * @returns {Node[]} The same list of future children.\n */\nconst udomdiff = (a, b, get, before) => {\n const bLength = b.length;\n let aEnd = a.length;\n let bEnd = bLength;\n let aStart = 0;\n let bStart = 0;\n let map = null;\n while (aStart < aEnd || bStart < bEnd) {\n // append head, tail, or nodes in between: fast path\n if (aEnd === aStart) {\n // we could be in a situation where the rest of nodes that\n // need to be added are not at the end, and in such case\n // the node to `insertBefore`, if the index is more than 0\n // must be retrieved, otherwise it's gonna be the first item.\n const node =\n bEnd < bLength\n ? bStart\n ? get(b[bStart - 1], -0).nextSibling\n : get(b[bEnd - bStart], 0)\n : before;\n while (bStart < bEnd) (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(get(b[bStart++], 1), node);\n }\n // remove head or tail: fast path\n else if (bEnd === bStart) {\n while (aStart < aEnd) {\n // remove the node only if it's unknown or not live\n if (!map || !map.has(a[aStart])) (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(get(a[aStart], -1));\n aStart++;\n }\n }\n // same node: fast path\n else if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n }\n // same tail: fast path\n else if (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n // The once here single last swap \"fast path\" has been removed in v1.1.0\n // https://github.com/WebReflection/udomdiff/blob/single-final-swap/esm/index.js#L69-L85\n // reverse swap: also fast path\n else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n // this is a \"shrink\" operation that could happen in these cases:\n // [1, 2, 3, 4, 5]\n // [1, 4, 3, 2, 5]\n // or asymmetric too\n // [1, 2, 3, 4, 5]\n // [1, 2, 3, 5, 6, 4]\n const node = get(a[--aEnd], -1).nextSibling;\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.moveBefore)(get(b[bStart++], 1), get(a[aStart++], -1).nextSibling);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.moveBefore)(get(b[--bEnd], 1), node);\n // mark the future index as identical (yeah, it's dirty, but cheap 👍)\n // The main reason to do this, is that when a[aEnd] will be reached,\n // the loop will likely be on the fast path, as identical to b[bEnd].\n // In the best case scenario, the next loop will skip the tail,\n // but in the worst one, this node will be considered as already\n // processed, bailing out pretty quickly from the map index check\n a[aEnd] = b[bEnd];\n }\n // map based fallback, \"slow\" path\n else {\n // the map requires an O(bEnd - bStart) operation once\n // to store all future nodes indexes for later purposes.\n // In the worst case scenario, this is a full O(N) cost,\n // and such scenario happens at least when all nodes are different,\n // but also if both first and last items of the lists are different\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n // if it's a future node, hence it needs some handling\n if (map.has(a[aStart])) {\n // grab the index of such node, 'cause it might have been processed\n const index = map.get(a[aStart]);\n // if it's not already processed, look on demand for the next LCS\n if (bStart < index && index < bEnd) {\n let i = aStart;\n // counts the amount of nodes that are the same in the future\n let sequence = 1;\n while (++i < aEnd && i < bEnd && map.get(a[i]) === index + sequence)\n sequence++;\n // effort decision here: if the sequence is longer than replaces\n // needed to reach such sequence, which would brings again this loop\n // to the fast path, prepend the difference before a sequence,\n // and move only the future list index forward, so that aStart\n // and bStart will be aligned again, hence on the fast path.\n // An example considering aStart and bStart are both 0:\n // a: [1, 2, 3, 4]\n // b: [7, 1, 2, 3, 6]\n // this would place 7 before 1 and, from that time on, 1, 2, and 3\n // will be processed at zero cost\n if (sequence > index - bStart) {\n const node = get(a[aStart], 0);\n while (bStart < index) {\n // if the node is already in the DOM, move it\n // to preserve its state (focus, animations, iframes, etc.)\n // otherwise insert it as a new node\n const newNode = get(b[bStart++], 1);\n if (newNode.parentNode) (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.moveBefore)(newNode, node);\n else (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(newNode, node);\n }\n }\n // if the effort wasn't good enough, fallback to a replace,\n // moving both source and target indexes forward, hoping that some\n // similar node will be found later on, to go back to the fast path\n else {\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.replaceChild)(get(b[bStart++], 1), get(a[aStart++], -1));\n }\n }\n // otherwise move the source forward, 'cause there's nothing to do\n else aStart++;\n }\n // this node has no meaning in the future list, so it's more than safe\n // to remove it, and check the next live node out instead, meaning\n // that only the live list index should be forwarded\n else (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(get(a[aStart++], -1));\n }\n }\n return b\n};\n\nconst UNMOUNT_SCOPE = Symbol('unmount');\n\nconst EachBinding = {\n // dynamic binding properties\n // childrenMap: null,\n // node: null,\n // root: null,\n // condition: null,\n // evaluate: null,\n // template: null,\n // isTemplateTag: false,\n nodes: [],\n // getKey: null,\n // indexName: null,\n // itemName: null,\n // afterPlaceholder: null,\n // placeholder: null,\n\n // API methods\n mount(scope, parentScope) {\n return this.update(scope, parentScope)\n },\n update(scope, parentScope) {\n const { placeholder, nodes, childrenMap } = this;\n const collection = scope === UNMOUNT_SCOPE ? null : this.evaluate(scope);\n const items = collection ? Array.from(collection) : [];\n\n // prepare the diffing\n const { newChildrenMap, batches, futureNodes } = createPatch(\n items,\n scope,\n parentScope,\n this,\n );\n\n // patch the DOM only if there are new nodes\n udomdiff(\n nodes,\n futureNodes,\n patch(Array.from(childrenMap.values()), parentScope),\n placeholder,\n );\n\n // trigger the mounts and the updates\n batches.forEach((fn) => fn());\n\n // update the children map\n this.childrenMap = newChildrenMap;\n this.nodes = futureNodes;\n\n return this\n },\n unmount(scope, parentScope) {\n this.update(UNMOUNT_SCOPE, parentScope);\n\n return this\n },\n};\n\n/**\n * Patch the DOM while diffing\n * @param {any[]} redundant - list of all the children (template, nodes, context) added via each\n * @param {*} parentScope - scope of the parent template\n * @returns {Function} patch function used by domdiff\n */\nfunction patch(redundant, parentScope) {\n return (item, info) => {\n if (info < 0) {\n // get the last element added to the childrenMap saved previously\n const element = redundant[redundant.length - 1];\n\n if (element) {\n // get the nodes and the template in stored in the last child of the childrenMap\n const { template, nodes, context } = element;\n // remove the last node (notice tags might have more children nodes)\n nodes.pop();\n\n // notice that we pass null as last argument because\n // the root node and its children will be removed by domdiff\n if (!nodes.length) {\n // we have cleared all the children nodes and we can unmount this template\n redundant.pop();\n template.unmount(context, parentScope, null);\n }\n }\n }\n\n return item\n }\n}\n\n/**\n * Check whether a template must be filtered from a loop\n * @param {Function} condition - filter function\n * @param {object} context - argument passed to the filter function\n * @returns {boolean} true if this item should be skipped\n */\nfunction mustFilterItem(condition, context) {\n return condition ? !condition(context) : false\n}\n\n/**\n * Extend the scope of the looped template\n * @param {object} scope - current template scope\n * @param {object} options - options\n * @param {string} options.itemName - key to identify the looped item in the new context\n * @param {string} options.indexName - key to identify the index of the looped item\n * @param {number} options.index - current index\n * @param {*} options.item - collection item looped\n * @returns {object} enhanced scope object\n */\nfunction extendScope(scope, { itemName, indexName, index, item }) {\n (0,_util_objects_js__WEBPACK_IMPORTED_MODULE_4__.defineProperty)(scope, itemName, item);\n if (indexName) (0,_util_objects_js__WEBPACK_IMPORTED_MODULE_4__.defineProperty)(scope, indexName, index);\n\n return scope\n}\n\n/**\n * Loop the current template items\n * @param {Array} items - expression collection value\n * @param {*} scope - template scope\n * @param {*} parentScope - scope of the parent template\n * @param {EachBinding} binding - each binding object instance\n * @returns {object} data - An object containing:\n * @property {Map} newChildrenMap - a Map containing the new children template structure\n * @property {Array} batches - array containing the template lifecycle functions to trigger\n * @property {Array} futureNodes - array containing the nodes we need to diff\n */\nfunction createPatch(items, scope, parentScope, binding) {\n const {\n condition,\n template,\n childrenMap,\n itemName,\n getKey,\n indexName,\n root,\n isTemplateTag,\n } = binding;\n const newChildrenMap = new Map();\n const batches = [];\n const futureNodes = [];\n\n items.forEach((item, index) => {\n const context = extendScope(Object.create(scope), {\n itemName,\n indexName,\n index,\n item,\n });\n const key = getKey ? getKey(context) : index;\n const oldItem = childrenMap.get(key);\n const nodes = [];\n\n if (mustFilterItem(condition, context)) {\n return\n }\n\n const mustMount = !oldItem;\n const componentTemplate = oldItem ? oldItem.template : template.clone();\n const el = componentTemplate.el || root.cloneNode();\n const meta =\n isTemplateTag && mustMount\n ? createTemplateMeta(componentTemplate)\n : componentTemplate.meta;\n\n if (mustMount) {\n batches.push(() =>\n componentTemplate.mount(el, context, parentScope, meta),\n );\n } else {\n batches.push(() => componentTemplate.update(context, parentScope));\n }\n\n // create the collection of nodes to update or to add\n // in case of template tags we need to add all its children nodes\n if (isTemplateTag) {\n nodes.push(...meta.children);\n } else {\n nodes.push(el);\n }\n\n // delete the old item from the children map\n childrenMap.delete(key);\n futureNodes.push(...nodes);\n\n // update the children map\n newChildrenMap.set(key, {\n nodes,\n template: componentTemplate,\n context,\n index,\n });\n });\n\n return {\n newChildrenMap,\n batches,\n futureNodes,\n }\n}\n\nfunction create$6(\n node,\n { evaluate, condition, itemName, indexName, getKey, template },\n) {\n const placeholder = document.createTextNode('');\n const root = node.cloneNode();\n\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(placeholder, node);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(node);\n\n return {\n ...EachBinding,\n childrenMap: new Map(),\n node,\n root,\n condition,\n evaluate,\n isTemplateTag: (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isTemplate)(root),\n template: template.createDOM(node),\n getKey,\n indexName,\n itemName,\n placeholder,\n }\n}\n\n/**\n * Binding responsible for the `if` directive\n */\nconst IfBinding = {\n // dynamic binding properties\n // node: null,\n // evaluate: null,\n // isTemplateTag: false,\n // placeholder: null,\n // template: null,\n\n // API methods\n mount(scope, parentScope) {\n return this.update(scope, parentScope)\n },\n update(scope, parentScope) {\n const value = !!this.evaluate(scope);\n const mustMount = !this.value && value;\n const mustUnmount = this.value && !value;\n const mount = () => {\n const pristine = this.node.cloneNode();\n\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(pristine, this.placeholder);\n this.template = this.template.clone();\n this.template.mount(pristine, scope, parentScope);\n };\n\n switch (true) {\n case mustMount:\n mount();\n break\n case mustUnmount:\n this.unmount(scope);\n break\n default:\n if (value) this.template.update(scope, parentScope);\n }\n\n this.value = value;\n\n return this\n },\n unmount(scope, parentScope) {\n this.template.unmount(scope, parentScope, true);\n\n return this\n },\n};\n\nfunction create$5(node, { evaluate, template }) {\n const placeholder = document.createTextNode('');\n\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(placeholder, node);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(node);\n\n return {\n ...IfBinding,\n node,\n evaluate,\n placeholder,\n template: template.createDOM(node),\n }\n}\n\n/**\n * This method handles the REF attribute expressions\n * @param {object} expression - expression data\n * @param {HTMLElement} expression.node - target node\n * @param {*} expression.value - the old expression cached value\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction refExpression({ node, value: oldValue }, value) {\n // called on mount and update\n if (value) value(node);\n // called on unmount\n // in this case the node value is null\n else oldValue(null);\n}\n\n/**\n * Normalize the user value in order to render a empty string in case of falsy values\n * @param {*} value - user input value\n * @returns {string} hopefully a string\n */\nfunction normalizeStringValue(value) {\n return (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isNil)(value) ? '' : value\n}\n\n/**\n * This methods handles the input fields value updates\n * @param {object} expression - expression data\n * @param {HTMLElement} expression.node - target node\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction valueExpression({ node }, value) {\n node.value = normalizeStringValue(value);\n}\n\nconst RE_EVENTS_PREFIX = /^on/;\n\nconst getCallbackAndOptions = (value) =>\n Array.isArray(value) ? value : [value, false];\n\n// see also https://medium.com/@WebReflection/dom-handleevent-a-cross-platform-standard-since-year-2000-5bf17287fd38\nconst EventListener = {\n handleEvent(event) {\n this[event.type](event);\n },\n};\nconst ListenersWeakMap = new WeakMap();\n\nconst createListener = (node) => {\n const listener = Object.create(EventListener);\n ListenersWeakMap.set(node, listener);\n return listener\n};\n\n/**\n * Set a new event listener\n * @param {object} expression - event expression data\n * @param {HTMLElement} expression.node - target node\n * @param {string} expression.name - event name\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction eventExpression({ node, name }, value) {\n const normalizedEventName = name.replace(RE_EVENTS_PREFIX, '');\n const eventListener = ListenersWeakMap.get(node) || createListener(node);\n const [callback, options] = getCallbackAndOptions(value);\n const handler = eventListener[normalizedEventName];\n const mustRemoveEvent = handler && !callback;\n const mustAddEvent = callback && !handler;\n\n if (mustRemoveEvent) {\n node.removeEventListener(normalizedEventName, eventListener);\n }\n\n if (mustAddEvent) {\n node.addEventListener(normalizedEventName, eventListener, options);\n }\n\n eventListener[normalizedEventName] = callback;\n}\n\n/* c8 ignore next */\nconst ElementProto = typeof Element === 'undefined' ? {} : Element.prototype;\nconst isNativeHtmlProperty = (0,_util_misc_js__WEBPACK_IMPORTED_MODULE_6__.memoize)(\n (name) => ElementProto.hasOwnProperty(name), // eslint-disable-line\n);\n\n/**\n * Add all the attributes provided\n * @param {HTMLElement} node - target node\n * @param {object} attributes - object containing the attributes names and values\n * @param {*} oldAttributes - the old expression cached value\n * @returns {undefined} sorry it's a void function :(\n */\nfunction setAllAttributes(node, attributes, oldAttributes) {\n Object.entries(attributes)\n // filter out the attributes that didn't change their value\n .filter(([name, value]) => value !== oldAttributes?.[name])\n .forEach(([name, value]) => {\n switch (true) {\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.REF_ATTRIBUTE:\n return refExpression({ node }, value)\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.VALUE_ATTRIBUTE:\n return valueExpression({ node }, value)\n case (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isEventAttribute)(name):\n return eventExpression({ node, name }, value)\n default:\n return attributeExpression({ node, name }, value)\n }\n });\n}\n\n/**\n * Remove all the attributes provided\n * @param {HTMLElement} node - target node\n * @param {object} newAttributes - object containing all the new attribute names\n * @param {object} oldAttributes - object containing all the old attribute names\n * @returns {undefined} sorry it's a void function :(\n */\nfunction removeAllAttributes(node, newAttributes, oldAttributes) {\n const newKeys = newAttributes ? Object.keys(newAttributes) : [];\n\n Object.entries(oldAttributes)\n .filter(([name]) => !newKeys.includes(name))\n .forEach(([name, value]) => {\n switch (true) {\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.REF_ATTRIBUTE:\n return refExpression({ node, value })\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.VALUE_ATTRIBUTE:\n node.removeAttribute('value');\n node.value = '';\n return\n case (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isEventAttribute)(name):\n return eventExpression({ node, name }, null)\n default:\n return node.removeAttribute(name)\n }\n });\n}\n\n/**\n * Check whether the attribute value can be rendered\n * @param {*} value - expression value\n * @returns {boolean} true if we can render this attribute value\n */\nfunction canRenderAttribute(value) {\n return ['string', 'number', 'boolean'].includes(typeof value)\n}\n\n/**\n * Check whether the attribute should be removed\n * @param {*} value - expression value\n * @param {boolean} isBoolean - flag to handle boolean attributes\n * @returns {boolean} boolean - true if the attribute can be removed\n */\nfunction shouldRemoveAttribute(value, isBoolean) {\n // boolean attributes should be removed if the value is falsy\n if (isBoolean) return !value\n\n // null and undefined values will remove the attribute as well\n return (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isNil)(value)\n}\n\n/**\n * This methods handles the DOM attributes updates\n * @param {object} expression - attribute expression data\n * @param {HTMLElement} expression.node - target node\n * @param {string} expression.name - attribute name\n * @param {boolean} expression.isBoolean - flag to handle boolean attributes\n * @param {*} expression.value - the old expression cached value\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction attributeExpression(\n { node, name, isBoolean: isBoolean$1, value: oldValue },\n value,\n) {\n // is it a spread operator? {...attributes}\n if (!name) {\n if (oldValue) {\n // remove all the old attributes\n removeAllAttributes(node, value, oldValue);\n }\n\n // is the value still truthy?\n if (value) {\n setAllAttributes(node, value, oldValue);\n }\n\n return\n }\n\n // store the attribute on the node to make it compatible with native custom elements\n if (\n !isNativeHtmlProperty(name) &&\n ((0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isBoolean)(value) || (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isObject)(value) || (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isFunction)(value))\n ) {\n node[name] = value;\n }\n\n if (shouldRemoveAttribute(value, isBoolean$1)) {\n node.removeAttribute(name);\n } else if (canRenderAttribute(value)) {\n node.setAttribute(name, normalizeValue(name, value, isBoolean$1));\n }\n}\n\n/**\n * Get the value as string\n * @param {string} name - attribute name\n * @param {*} value - user input value\n * @param {boolean} isBoolean - boolean attributes flag\n * @returns {string} input value as string\n */\nfunction normalizeValue(name, value, isBoolean) {\n // be sure that expressions like selected={ true } will always be rendered as selected='selected'\n // fix https://github.com/riot/riot/issues/2975\n return !!value && isBoolean ? name : value\n}\n\n/**\n * Get the the target text node to update or create one from of a comment node\n * @param {HTMLElement} node - any html element containing childNodes\n * @param {number} childNodeIndex - index of the text node in the childNodes list\n * @returns {Text} the text node to update\n */\nconst getTextNode = (node, childNodeIndex) => {\n return node.childNodes[childNodeIndex]\n};\n\n/**\n * This methods handles a simple text expression update\n * @param {object} expression - expression data\n * @param {HTMLElement} expression.node - target node\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction textExpression({ node }, value) {\n node.data = normalizeStringValue(value);\n}\n\nconst expressions = {\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.ATTRIBUTE]: attributeExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.EVENT]: eventExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.TEXT]: textExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.VALUE]: valueExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.REF]: refExpression,\n};\n\nconst Expression = {\n // Static props\n // node: null,\n // value: null,\n\n // API methods\n /**\n * Mount the expression evaluating its initial value\n * @param {*} scope - argument passed to the expression to evaluate its current values\n * @returns {Expression} self\n */\n mount(scope) {\n // hopefully a pure function\n const value = this.evaluate(scope);\n\n // IO() DOM updates\n expressions[this.type](this, value);\n\n // store the computed value for the update calls\n this.value = value;\n\n return this\n },\n /**\n * Update the expression if its value changed\n * @param {*} scope - argument passed to the expression to evaluate its current values\n * @returns {Expression} self\n */\n update(scope) {\n // pure function\n const value = this.evaluate(scope);\n\n if (this.value !== value) {\n // IO() DOM updates\n expressions[this.type](this, value);\n this.value = value;\n }\n\n return this\n },\n /**\n * Expression teardown method\n * @returns {Expression} self\n */\n unmount() {\n // unmount event and ref expressions\n if (\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.EVENT, _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.REF].includes(this.type) ||\n // spread attributes might contain events or refs that must be unmounted\n (this.type === _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.ATTRIBUTE && !this.name)\n )\n expressions[this.type](this, null);\n\n return this\n },\n};\n\nfunction create$4(node, data) {\n return {\n ...Expression,\n ...data,\n node: data.type === _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.TEXT ? getTextNode(node, data.childNodeIndex) : node,\n }\n}\n\n/**\n * Create a flat object having as keys a list of methods that if dispatched will propagate\n * on the whole collection\n * @param {Array} collection - collection to iterate\n * @param {Array