{"version":3,"file":"app.bundle.js","mappings":"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","sources":["webpack://uk-marketing-landing/./node_modules/axios/index.js","webpack://uk-marketing-landing/./node_modules/axios/lib/adapters/xhr.js","webpack://uk-marketing-landing/./node_modules/axios/lib/axios.js","webpack://uk-marketing-landing/./node_modules/axios/lib/cancel/Cancel.js","webpack://uk-marketing-landing/./node_modules/axios/lib/cancel/CancelToken.js","webpack://uk-marketing-landing/./node_modules/axios/lib/cancel/isCancel.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/Axios.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/InterceptorManager.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/createError.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/dispatchRequest.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/enhanceError.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/mergeConfig.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/settle.js","webpack://uk-marketing-landing/./node_modules/axios/lib/core/transformData.js","webpack://uk-marketing-landing/./node_modules/axios/lib/defaults.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/bind.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/buildURL.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/combineURLs.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/cookies.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://uk-marketing-landing/./node_modules/axios/lib/helpers/spread.js","webpack://uk-marketing-landing/./node_modules/axios/lib/utils.js","webpack://uk-marketing-landing/./ClientApp/sections/tariffs-section.js","webpack://uk-marketing-landing/./node_modules/is-buffer/index.js","webpack://uk-marketing-landing/webpack/bootstrap","webpack://uk-marketing-landing/webpack/runtime/compat get default export","webpack://uk-marketing-landing/webpack/runtime/define property getters","webpack://uk-marketing-landing/webpack/runtime/hasOwnProperty shorthand","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/base/src/app.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/base/src/component.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/base/src/plugin.js","webpack://uk-marketing-landing/./ClientApp/common/config/url-config.js","webpack://uk-marketing-landing/./ClientApp/common/errors/incorrect-phonenumber.js","webpack://uk-marketing-landing/./ClientApp/common/errors/invalid-full-name.js","webpack://uk-marketing-landing/./ClientApp/common/errors/invalid-email.js","webpack://uk-marketing-landing/./ClientApp/common/dto/landing-order.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/util-generate-controller-states/src/generate-controller-states.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/mixin-controller-mutations/src/controller-mutations.js","webpack://uk-marketing-landing/./ClientApp/common/api/roskvartal-api.js","webpack://uk-marketing-landing/./ClientApp/common/classes/plugin.js","webpack://uk-marketing-landing/./node_modules/imask/esm/_rollupPluginBabelHelpers-6b3bd404.js","webpack://uk-marketing-landing/./node_modules/imask/esm/core/holder.js","webpack://uk-marketing-landing/./node_modules/imask/esm/core/change-details.js","webpack://uk-marketing-landing/./node_modules/imask/esm/core/utils.js","webpack://uk-marketing-landing/./node_modules/imask/esm/core/action-details.js","webpack://uk-marketing-landing/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/base.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/factory.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/regexp.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/pattern.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/range.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/date.js","webpack://uk-marketing-landing/./node_modules/imask/esm/controls/mask-element.js","webpack://uk-marketing-landing/./node_modules/imask/esm/controls/html-mask-element.js","webpack://uk-marketing-landing/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://uk-marketing-landing/./node_modules/imask/esm/controls/input.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/enum.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/number.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/function.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/dynamic.js","webpack://uk-marketing-landing/./node_modules/imask/esm/masked/pipe.js","webpack://uk-marketing-landing/./node_modules/imask/esm/index.js","webpack://uk-marketing-landing/./ClientApp/common/config/mask-configs.js","webpack://uk-marketing-landing/./ClientApp/modules/mask.js","webpack://uk-marketing-landing/./ClientApp/plugins/mask.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/util-dom-utils/src/dom-utils.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/module-animator/src/animator.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/component-modal/src/modal.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/plugin-modal/src/modal.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/plugin-lazr/src/lazr.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/component-text-field/node_modules/@roskvartal-landings/base/src/component.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/component-text-field/node_modules/@roskvartal-landings/base/src/plugin.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/component-text-field/src/text-field.js","webpack://uk-marketing-landing/./node_modules/@roskvartal-landings/component-accordion/src/accordion.js","webpack://uk-marketing-landing/./ClientApp/components/lead-modal.js","webpack://uk-marketing-landing/./ClientApp/components/user-type-modal.js","webpack://uk-marketing-landing/./ClientApp/common/utils/cookie.js","webpack://uk-marketing-landing/./ClientApp/components/navbar.js","webpack://uk-marketing-landing/./ClientApp/app.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","const PLAN_ENABLED = \"c-tariffs-section-plan_enabled\";\n\nlet planes = document.getElementsByClassName(\"c-tariffs-section-plan\");\nlet currentPlaneIndex = 1;\n\nplanes[currentPlaneIndex].className += ` ${PLAN_ENABLED}`;\n\nfor (let i = 0; i < planes.length; i++) {\n planes[i].addEventListener('mouseover', function () {\n changeClasses(i);\n });\n}\n\nfunction changeClasses(planeIndex) {\n if (currentPlaneIndex !== planeIndex) {\n planes[currentPlaneIndex].classList.remove(PLAN_ENABLED);\n planes[planeIndex].className += ` ${PLAN_ENABLED}`;\n currentPlaneIndex = planeIndex;\n }\n};","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\r\n * @module common/classes/app\r\n */\r\n\r\n/**\r\n * @classdesc Класс приложения\r\n */\r\nclass App {\r\n constructor() {\r\n /**\r\n * @member {Set} module:common/classes/app~App#plugins\r\n */\r\n this.plugins = new Set();\r\n /**\r\n * @member {Map}\r\n */\r\n this.components = new Map();\r\n /**\r\n * @member {Map}\r\n */\r\n this.filters = new Map();\r\n }\r\n\r\n /**\r\n * @method\r\n * @param {module:common/classes/plugin~Plugin} plugin - Плагин для регистрации\r\n * @description Зарегистрировать плагин\r\n */\r\n usePlugin(plugin) {\r\n const mutable = plugin;\r\n mutable.config.app = this;\r\n this.plugins.add(mutable);\r\n }\r\n\r\n /**\r\n * @method\r\n * @param {String} name - Имя фильтра\r\n * @param {module:common/classes/filter~Filter} filter - Фильтр для регистрации\r\n */\r\n useFilter(name, filter) {\r\n this.filters.set(name, filter);\r\n }\r\n\r\n /**\r\n * @method\r\n * @param {String} name - Имя компоненты, которое будет использоваться при связке\r\n * @param {module:common/classes/component~Component} component - Компонент для регистрации\r\n * @description Зарегистрировать компоненту\r\n */\r\n registerComponent(name, component) {\r\n this.components.set(name, component);\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Производит инициализацию плагинов и связку компонент внутри приложения\r\n */\r\n init() {\r\n const elements = [...document.querySelectorAll('[data-component]')];\r\n elements.forEach((element) => {\r\n const { component: componentName } = element.dataset;\r\n const ComponentClass = this.components.get(componentName);\r\n if (!ComponentClass) {\r\n console.warn(`Компонент с именем ${componentName} не зарегистрирован!`);\r\n return;\r\n }\r\n const component = new ComponentClass(element);\r\n console.log(componentName, 'зарегистрирован');\r\n });\r\n this.plugins.forEach((plugin) => {\r\n plugin.init();\r\n });\r\n }\r\n}\r\n\r\nexport default App;\r\n","/**\r\n * @module common/classes/component\r\n */\r\n\r\n/**\r\n * @classdesc Класс компоненты\r\n */\r\nclass Component {\r\n /**\r\n * Создаёт экземпляр компоненты и добавляет референсы\r\n * @param {HTMLElement} el - корневой элемент компоненты\r\n */\r\n constructor(el) {\r\n /**\r\n * @instance\r\n * @type {HTMLElement}\r\n * @description Корневой элемент компоненты\r\n */\r\n this.el = el;\r\n /**\r\n * @instance\r\n * @type {Map}\r\n * @description Референсы\r\n */\r\n this.refs = new Map();\r\n\r\n [...el.querySelectorAll('[data-ref]')].forEach((item) => {\r\n const key = item.dataset.ref;\r\n this.refs.set(key, item);\r\n });\r\n }\r\n}\r\n\r\nexport default Component;\r\n","/**\r\n * @module common/classes/plugin\r\n */\r\n\r\n/**\r\n * @hideconstructor\r\n * @classdesc Класс плагина\r\n */\r\nclass Plugin {\r\n /**\r\n * @method\r\n * @abstract\r\n * @static\r\n * @description Инициализация модуля\r\n */\r\n static init() {\r\n return Function.prototype;\r\n }\r\n}\r\n/**\r\n * @member {*} module:common/classes/plugin~Plugin.config\r\n * @abstract\r\n * @description Конфигурация модуля\r\n */\r\nPlugin.config = {};\r\n\r\nexport default Plugin;\r\n","/**\n * @module common/config/url-config\n */\n\n/**\n * @hideconstructor\n * @classdesc Конфигурация url-ов\n */\nclass UrlConfig {\n /**\n * @readonly\n * @description Ссылка на РосКвартал\n */\n static get baseRkUrl() {\n return process.env.MODE === 'production'\n ? 'https://roskvartal.ru'\n : 'http://localhost:54753';\n }\n\n /**\n * @readonly\n * @description Ссылка на РосКвартал lead-order\n */\n static get baseOrderUrl() {\n return process.env.MODE === 'production'\n ? 'https://order-api.roskvartal.ru'\n : 'http://localhost:5023';\n }\n\n /**\n * @readonly\n * @description Ссылка на лендинг\n */\n static get baseLandingUrl() {\n return process.env.MODE === 'production'\n ? 'https://marketing.roskvartal.ru/'\n : 'http://localhost:58498';\n }\n}\n\nexport default UrlConfig;\n","/**\n * @module common/errors/incorrect-phonenumber\n */\n\n/**\n * @extends Error\n * @classdesc Ошибка некорректного номера телефона\n */\nclass IncorrectPhoneNumberError extends Error {\n constructor(\n message = 'Некорректно введён номер телефона',\n filename,\n lineNumber,\n ) {\n super(message, filename, lineNumber);\n }\n}\n\nexport default IncorrectPhoneNumberError;\n","/**\n * @module common/errors/invalid-full-name\n */\n\n/**\n * @extends Error\n * @classdesc Ошибка не указанного имени\n */\nclass InvalidFullNameError extends Error {\n constructor(\n message = 'Некорректно указано полное имя',\n filename,\n lineNumber,\n ) {\n super(message, filename, lineNumber);\n }\n}\n\nexport default InvalidFullNameError;\n","/**\n * @module common/errors/invalid-email\n */\n\n/**\n * @extends Error\n * @classdesc Ошибка в введённом Email\n */\nclass InvalidEmailError extends Error {\n constructor(\n message = 'Некорректно указан Email',\n filename,\n lineNumber,\n ) {\n super(message, filename, lineNumber);\n }\n}\n\nexport default InvalidEmailError;\n","/**\n * @module common/dto/landing-order\n * @requires module:common/config/url-config~UrlConfig\n * @requires module:common/errors/incorrect-phonenumber~IncorrectPhoneNumberError\n * @requires module:common/errors/invalid-full-name~InvalidFullNameError\n * @requires module:common/errors/invalid-email~InvalEmailError\n */\nimport { UrlConfig } from '@/common/config';\nimport {\n IncorrectPhoneNumberError,\n InvalidFullNameError,\n InvalidEmailError\n} from '@/common/errors';\n\n/**\n * @classdesc DTO для отправки заявки с лендинга\n */\nclass LandingOrderDTO {\n /**\n * @param {Object} dto\n * @param {String} dto.fullName - ФИО\n * @param {String} dto.phoneNumber - Номер телефона\n * @param {String} dto.customEmail - Email\n * @param {String} clientId - ID клиента из Google Analytics\n * @param {String} dto.comment - Комментарий к заявке\n * @throws {module:common/errors/incorrect-phonenumber~IncorrectPhoneNumberError} если некорректно указан номер телефона\n * @throws {module:common/errors/invalid-full-name~InvalidFullNameError} если не указано имя\n * @throws {module:common/errors/invalid-email~InvalEmailError} если некорректно указан Email\n */\n constructor({ fullName, phoneNumber, customEmail, comment, clientId, service, tariff }) {\n /**\n * @member {String}\n * @default 'UkMarketing'\n */\n this.landing = 'UkMarketing';\n /**\n * @member {String}\n * @description Тип услуги\n */\n this.service = service;\n /**\n * @member {String}\n * @description Тариф\n */\n this.landingTariff = tariff;\n \n if (!fullName) {\n throw new InvalidFullNameError();\n }\n /**\n * @member {String}\n * @description ФИО\n */\n this.fullName = fullName;\n if (phoneNumber.length !== 18 || phoneNumber.indexOf('_') !== -1) {\n throw new IncorrectPhoneNumberError();\n }\n /**\n * @member {String}\n * @description Номер телефона\n */\n this.phoneNumber = phoneNumber;\n \n const emailRegExp = /.+@.+\\..+/;\n\n if (customEmail.length && !emailRegExp.test(customEmail)) {\n throw new InvalidEmailError();\n }\n\n /**\n * @member {String}\n * @description Email\n */\n this.customEmail = customEmail;\n \n /**\n * @member {String}\n * @description ID клиента из Google Analytics\n */\n this.clientId = clientId;\n\n /**\n * @member {String}\n * @description Время, удобное для звонка клиенту\n */\n this.comment = comment;\n /**\n * @member {String}\n * @description URL для возврата\n */\n this.returnUrl = UrlConfig.baseLandingUrl;\n }\n}\n\nexport default LandingOrderDTO;\n","/**\r\n * @module common/utils/generate-controller-states\r\n */\r\n\r\n/**\r\n * @typedef {Object} ActionState\r\n * @property {Object} status - Статус запроса\r\n * @property {Boolean} status.isPending - Запрос в процессе\r\n * @property {Boolean} status.isFailed - Запрос не удался\r\n * @property {Boolean} status.isSucceeded - Запрос удался\r\n * @property {*} data - Данные запроса\r\n * @property {*} error - Ошибка запроса\r\n */\r\n\r\n/**\r\n * @function\r\n * @description Генерирует состояния запросов в контроллере API\r\n * @param {string[]} methods - Методы в контроллере\r\n * @returns {ActionState}\r\n */\r\nfunction generateControllerStates(methods) {\r\n const states = {};\r\n methods.forEach((method) => {\r\n states[method] = {\r\n status: {\r\n isPending: false,\r\n isFailed: false,\r\n isSucceeded: false,\r\n },\r\n data: null,\r\n error: null,\r\n };\r\n });\r\n return states;\r\n}\r\n\r\nexport default generateControllerStates;\r\n","/**\r\n * @module common/mixins/controller-mutations\r\n */\r\n\r\n/**\r\n * @classdesc Мутации для контроллера\r\n */\r\nclass ControllerMutations {\r\n constructor(state) {\r\n const mutable = state;\r\n\r\n /**\r\n * @method\r\n * @description Устанавливает состояние запроса в PENDING\r\n * @param {String} actionName - Имя метода в контроллере\r\n */\r\n this.SET_ACTION_STATUS_PENDING = (actionName) => {\r\n mutable[actionName].status.isPending = true;\r\n mutable[actionName].status.isFailed = false;\r\n mutable[actionName].status.isSucceeded = false;\r\n };\r\n\r\n /**\r\n * @method\r\n * @description Устанавливает состояние запроса в FAILED\r\n * @param {String} actionName - Имя метода в контроллере\r\n */\r\n this.SET_ACTION_STATUS_FAILED = (actionName) => {\r\n mutable[actionName].status.isPending = false;\r\n mutable[actionName].status.isFailed = true;\r\n mutable[actionName].status.isSucceeded = false;\r\n };\r\n\r\n /**\r\n * @method\r\n * @description Устанавливает состояние запроса в SUCCEEDED\r\n * @param {String} actionName - Имя метода в контроллере\r\n */\r\n this.SET_ACTION_STATUS_SUCCEEDED = (actionName) => {\r\n mutable[actionName].status.isPending = false;\r\n mutable[actionName].status.isFailed = false;\r\n mutable[actionName].status.isSucceeded = true;\r\n };\r\n\r\n /**\r\n * @method\r\n * @description Сбрасывает состояние запроса к изначальному\r\n * @param {String} actionName - Имя метода в контроллере\r\n */\r\n this.RESET_ACTION_STATUS = (actionName) => {\r\n mutable[actionName].status.isPending = false;\r\n mutable[actionName].status.isFailed = false;\r\n mutable[actionName].status.isSucceeded = false;\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * @method\r\n * @description Генерирует мутации для состояния контроллера\r\n * @param {Object} state - состояние контроллера\r\n */\r\nfunction generateMutations(state) {\r\n const mutations = new ControllerMutations(state);\r\n return mutations;\r\n}\r\n\r\n/**\r\n * @mixin\r\n */\r\nconst controllerMutations = state => generateMutations(state);\r\n\r\nexport default controllerMutations;\r\n","/**\n * @module common/api/roskvartal-api\n * @requires module:common/config/url-config~UrlConfig\n * @requires module:common/dto/landing-order~LandingOrderDTO\n */\n\nimport axios from 'axios';\nimport { UrlConfig } from '@/common/config';\nimport { LandingOrderDTO } from '@/common/dto';\nimport { generateControllerStates } from '@roskvartal-landings/util-generate-controller-states';\nimport { controllerMutations } from '@roskvartal-landings/mixin-controller-mutations';\n\n/**\n * @const\n * @description Экземпляр axios для работы с API\n */\nconst api = axios.create({\n baseURL: UrlConfig.baseOrderUrl,\n timeout: 10000,\n});\n\n/**\n * @const\n * @description Список методов в контроллере\n */\nconst methods = ['order'];\n\nconst state = generateControllerStates(methods);\n\nconst mutations = {\n ...controllerMutations(state),\n};\n\n/** API для roskvartal.ru */\nclass RoskvartalApi {\n /**\n * @description - Отправляет запрос на заказ обратного звонка\n * @param {Object} payload - Данные запроса\n * @returns {Promise}\n */\n static order(payload) {\n try {\n const data = new LandingOrderDTO(payload);\n return api({\n method: 'post',\n url: '/order',\n withCredentials: false,\n data,\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * @readonly\n * @description Мутации контроллера\n * @mixes module:common/mixins/controller-mutations~controllerMutations\n */\n static get mutations() {\n return mutations;\n }\n\n /**\n * @member {module:common/utils/generate-controller-states~ActionState[]}\n * @readonly\n * @description Состояние контроллера. Изменяется посредством вызова мутаций\n */\n static get state() {\n return state;\n }\n}\n\nexport default RoskvartalApi;\n","/**\n * @module common/classes/plugin\n */\n\n/**\n * @hideconstructor\n * @classdesc Класс плагина\n */\nclass Plugin {\n /**\n * @method\n * @abstract\n * @static\n * @description Инициализация модуля\n */\n static init() {\n return Function.prototype;\n }\n}\n/**\n * @member {*} module:common/classes/plugin~Plugin.config\n * @abstract\n * @description Конфигурация модуля\n */\nPlugin.config = {};\n\nexport default Plugin;\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nexport { _objectWithoutPropertiesLoose as _ };\n","/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import IMask from './holder.js';\n\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","import ChangeDetails from './change-details.js';\nimport './holder.js';\n\n/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\n Direction\n @enum {string}\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n\n/** Returns next char position in direction */\nfunction posInDirection(pos, direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n default:\n return pos;\n }\n}\n\n/** */\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction normalizePrepare(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++)\n // $FlowFixMe ... ???\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, normalizePrepare, objectIncludes, posInDirection };\n","import { DIRECTION } from './utils.js';\nimport './change-details.js';\nimport './holder.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(value, cursorPos, oldValue, oldSelection) {\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection;\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /**\n Start changing position\n @readonly\n */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /**\n Inserted symbols count\n @readonly\n */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /**\n Inserted symbols\n @readonly\n */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /**\n Removed symbols count\n @readonly\n */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /**\n Removed symbols\n @readonly\n */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /**\n Unchanged head symbols\n @readonly\n */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /**\n Unchanged tail symbols\n @readonly\n */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /**\n Remove direction\n @readonly\n */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let stop = arguments.length > 2 ? arguments[2] : undefined;\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, normalizePrepare, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Append flags */\n\n/** Extract flags */\n\n/** Provides common masking stuff */\nclass Masked {\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */ // $FlowFixMe no ideas\n /** Transforms value before mask processing */\n /** Validates if value is acceptable */\n /** Does additional processing in the end of editing */\n /** Format typed value to string */\n /** Parse strgin to get typed value */\n /** Enable characters overwriting */\n /** */\n /** */\n /** */\n constructor(opts) {\n this._value = '';\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n this.isInitialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n // $FlowFixMe\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /**\n Sets new options\n @protected\n */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n\n /** */\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value);\n }\n\n /** Resolve new value */\n resolve(value) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n input: true\n };\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n return this.value;\n }\n\n /** */\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n\n /** */\n get typedValue() {\n return this.doParse(this.value);\n }\n set typedValue(value) {\n this.value = this.doFormat(value);\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n get displayValue() {\n return this.value;\n }\n\n /** */\n get isComplete() {\n return true;\n }\n\n /** */\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return Math.min(this.value.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n // $FlowFixMe no ideas\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let checkTail = arguments.length > 2 ? arguments[2] : undefined;\n const consistentState = this.state;\n let details;\n [ch, details] = normalizePrepare(this.doPrepare(ch, flags));\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.value.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const details = new ChangeDetails();\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state;\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags !== null && flags !== void 0 && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n\n /** */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n\n /** */\n runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n\n /** */\n doSkipInvalid(ch) {\n return this.skipInvalid;\n }\n\n /**\n Prepares string before mask processing\n @protected\n */\n doPrepare(str) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n\n /**\n Validates if value is acceptable\n @protected\n */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /**\n Does additional processing in the end of editing\n @protected\n */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n\n /** */\n doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n\n /** */\n doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n\n /** */\n splice(start, deleteCount, inserted, removeDirection) {\n let flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n input: true\n };\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue);\n }\n}\nMasked.DEFAULTS = {\n format: String,\n parse: v => v,\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n }\n\n // $FlowFixMe\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n // $FlowFixMe\n if (isString(mask)) return IMask.MaskedPattern;\n // $FlowFixMe\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate;\n // $FlowFixMe\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber;\n // $FlowFixMe\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n // $FlowFixMe\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n // $FlowFixMe\n if (mask instanceof IMask.Masked) return mask.constructor;\n // $FlowFixMe\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n return IMask.Masked;\n}\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n const mask = opts.mask;\n\n // $FlowFixMe\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n const MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass };\n","import { _ as _objectWithoutPropertiesLoose } from '../../_rollupPluginBabelHelpers-6b3bd404.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nconst _excluded = [\"parent\", \"isOptional\", \"placeholderChar\", \"displayChar\", \"lazy\", \"eager\"];\n\n/** */\n\nconst DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\n/** */\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n } = opts,\n maskOpts = _objectWithoutPropertiesLoose(opts, _excluded);\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, flags);\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append() {\n // TODO probably should be done via _appendChar\n return this.masked.append(...arguments);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail() {\n return this.masked.extractTail(...arguments);\n }\n appendTail() {\n return this.masked.appendTail(...arguments);\n }\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate() {\n return this.masked.doValidate(...arguments) && (!this.parent || this.parent.doValidate(...arguments));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n}\n\nexport { DEFAULT_INPUT_DEFINITIONS, PatternInputDefinition as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\n/** */\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n }\n\n // $FlowFixMe no ideas\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../../_rollupPluginBabelHelpers-6b3bd404.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nconst _excluded = [\"chunks\"];\nclass ChunksTailDetails {\n /** */\n\n constructor() {\n let chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n\n // $FlowFixMe no ideas\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.value.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks\n } = state,\n props = _objectWithoutPropertiesLoose(state, _excluded);\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n // $FlowFixMe already checked above\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\nimport '../../core/change-details.js';\nimport '../../core/holder.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.value.length;\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n if (opts.mask) opts.validate = value => value.search(opts.mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\nconst _excluded = [\"_blocks\"];\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {string} opts.displayChar\n @param {boolean} opts.lazy\n*/\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n constructor() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO type $Shape={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n super(Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n\n /**\n @override\n @param {Object} opts\n */\n _update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n\n /** */\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n let pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n var _defs$char, _defs$char2;\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n // $FlowFixMe no ideas\n const maskedBlock = createMask(Object.assign({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite\n }, this.blocks[bName]));\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const maskOpts = (_defs$char = defs[char]) !== null && _defs$char !== void 0 && _defs$char.mask && !(((_defs$char2 = defs[char]) === null || _defs$char2 === void 0 ? void 0 : _defs$char2.mask.prototype) instanceof IMask.Masked) ? defs[char] : {\n mask: defs[char]\n };\n const def = isInput ? new PatternInputDefinition(Object.assign({\n parent: this,\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar\n }, maskOpts)) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n\n /**\n @override\n */\n get state() {\n return Object.assign({}, super.state, {\n _blocks: this._blocks.map(b => b.state)\n });\n }\n set state(state) {\n const {\n _blocks\n } = state,\n maskedState = _objectWithoutPropertiesLoose(state, _excluded);\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n\n /**\n @override\n */\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n\n /**\n @override\n */\n get isComplete() {\n return this._blocks.every(b => b.isComplete);\n }\n\n /**\n @override\n */\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n\n /**\n @override\n */\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get value() {\n // TODO return _value when not in change?\n return this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n super.value = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n\n /**\n @override\n */\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n\n /**\n @override\n */\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const blockIter = this._mapPosToBlock(this.value.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, Object.assign({}, flags, {\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi]\n }));\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n\n /**\n @override\n */\n extractTail() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n\n /**\n @override\n */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.value.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n const args = b._blocks != null ? [b._blocks.length] : [];\n const bDetails = b._appendPlaceholder(...args);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.value;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n\n /** */\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.value.length, 0);\n }\n\n /** */\n _forEachBlocksInRange(fromPos) {\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let fn = arguments.length > 2 ? arguments[2] : undefined;\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n\n /**\n @override\n */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n\n /**\n @override\n */\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.value.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n // cursor.popState();\n // if (\n // cursor.pushRightBeforeInput() &&\n // // TODO HACK for lazy if has aligned left inside fixed and has came to the start - use start position\n // (!this.lazy || this.extractInput())\n // ) return cursor.pos;\n\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.value.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n\n /**\n @override\n */\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport { normalizePrepare } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n\n /**\n @override\n */\n _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0,\n maxLength: this.maxLength || 0\n }, opts);\n let maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n const fromStr = String(opts.from).padStart(maxLength, '0');\n const toStr = String(opts.to).padStart(maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n super._update(opts);\n }\n\n /**\n @override\n */\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n\n // TODO str is a single char everytime\n /**\n @override\n */\n doPrepare(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let details;\n [ch, details] = normalizePrepare(super.doPrepare(ch.replace(/\\D/g, ''), flags));\n if (!this.autofix || !ch) return ch;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return '';\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return toStr[nextVal.length - 1];\n }\n return ch;\n }\n\n /**\n @override\n */\n doValidate() {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(...arguments);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\n @param {Object} opts\n */\n constructor(opts) {\n super(Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n\n /**\n @override\n */\n _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n const blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(opts.blocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(opts.blocks).forEach(bk => {\n const b = opts.blocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate() {\n const date = this.date;\n return super.doValidate(...arguments) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n\n /**\n @override\n */\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: date => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: str => {\n const [day, month, year] = str.split('.');\n return new Date(year, month - 1, day);\n }\n};\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import IMask from '../core/holder.js';\n\n/**\n Generic element API to use with mask\n @interface\n*/\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n\n /** Should be overriden in subclasses */\n _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n get isActive() {\n return false;\n }\n /** Should be overriden in subclasses */\n bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n unbindEvents() {}\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n @readonly\n */\n get isActive() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart() {\n return this.input.selectionStart;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n\n /**\n HTMLElement value\n @override\n */\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n\n /** */\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /**\n HTMLElement value\n @override\n */\n get value() {\n // $FlowFixMe\n return this.input.textContent;\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../masked/pattern.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/pattern/cursor.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\nconst _excluded = [\"mask\"];\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n @readonly\n */\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n\n /** Read or update mask */\n get mask() {\n return this.masked.mask;\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask));\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n\n // $FlowFixMe No ideas ... after update\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /**\n Starts listening to element events\n @protected\n */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /**\n Stops listening to element events\n @protected\n */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /**\n Fires custom event\n @protected\n */\n _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(...args));\n }\n\n /**\n Current selection start\n @readonly\n */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /**\n Stores current selection\n @protected\n */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask\n } = opts,\n restOpts = _objectWithoutPropertiesLoose(opts, _excluded);\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /**\n Fires custom events\n @protected\n */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /**\n Aborts delayed cursor update\n @private\n */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails(\n // new state\n this.el.value, this.cursorPos,\n // old state\n this.displayValue, this._selection);\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n // $FlowFixMe why not do so?\n this._listeners.length = 0;\n // $FlowFixMe\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate() {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) >= 0) && super.doValidate(...arguments);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { escapeRegExp, normalizePrepare, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n constructor(opts) {\n super(Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n\n /**\n @override\n */\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n\n /** */\n _updateRegExps() {\n let start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n let mid = '\\\\d*';\n let end = (this.scale ? \"(\".concat(escapeRegExp(this.radix), \"\\\\d{0,\").concat(this.scale, \"})?\") : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\".concat(this.mapToRadix.map(escapeRegExp).join(''), \"]\"), 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n\n /** */\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n\n /** */\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n\n /**\n @override\n */\n doPrepare(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ch = this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch);\n const [prepCh, details] = normalizePrepare(super.doPrepare(ch, flags));\n if (ch && !prepCh) details.skip = true;\n return [prepCh, details];\n }\n\n /** */\n _separatorsCount(to) {\n let extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n\n /** */\n _separatorsCountFromSlice() {\n let slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n\n /**\n @override\n */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 ? arguments[2] : undefined;\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n\n /** */\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n\n /**\n @override\n */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n\n /**\n @override\n */\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n\n /**\n @override\n */\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n\n /**\n @override\n */\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.doFormat(validnum);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n\n /** */\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n\n /** */\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n\n /** */\n doSkipInvalid(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let checkTail = arguments.length > 2 ? arguments[2] : undefined;\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.doParse(this.unmaskedValue);\n }\n set typedValue(n) {\n this.rawInputValue = this.doFormat(n).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n @readonly\n */\n get allowNegative() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n @override\n */\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n if (opts.mask) opts.validate = opts.mask;\n super._update(opts);\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { DIRECTION, normalizePrepare, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nconst _excluded = [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"],\n _excluded2 = [\"mask\"];\n/** Dynamic mask for choosing apropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n /**\n @param {Object} opts\n */\n constructor(opts) {\n super(Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n this.currentMask = null;\n }\n\n /**\n @override\n */\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => createMask(m)) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch() {\n let appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ?\n // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask === null || prevMask === void 0 ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, Object.assign({}, flags), tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch(...arguments);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n\n /**\n @override\n */\n _appendEager() {\n const details = this._applyDispatch(...arguments);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return Object.assign({}, flags, {\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n });\n }\n\n /**\n @override\n */\n doDispatch(appended) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return this.dispatch(appended, this, flags, tail);\n }\n\n /**\n @override\n */\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n\n /**\n @override\n */\n doPrepare(str) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let [s, details] = normalizePrepare(super.doPrepare(str, flags));\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = normalizePrepare(super.doPrepare(s, this.currentMaskFlags(flags)));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n\n /**\n @override\n */\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) === null || _this$currentMask === void 0 ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n\n /**\n @override\n */\n get value() {\n return this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n super.value = value;\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.currentMask ? this.currentMask.typedValue : '';\n }\n\n // probably typedValue should not be used with dynamic\n set typedValue(value) {\n let unmaskedValue = String(value);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n\n /**\n @override\n */\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) === null || _this$currentMask2 === void 0 ? void 0 : _this$currentMask2.isComplete);\n }\n\n /**\n @override\n */\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) === null || _this$currentMask3 === void 0 ? void 0 : _this$currentMask3.isFilled);\n }\n\n /**\n @override\n */\n remove() {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(...arguments))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n\n /**\n @override\n */\n get state() {\n var _this$currentMask4;\n return Object.assign({}, super.state, {\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) === null || _this$currentMask4 === void 0 ? void 0 : _this$currentMask4.state\n });\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask\n } = state,\n maskedState = _objectWithoutPropertiesLoose(state, _excluded);\n this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n\n /**\n @override\n */\n extractInput() {\n return this.currentMask ? this.currentMask.extractInput(...arguments) : '';\n }\n\n /**\n @override\n */\n extractTail() {\n return this.currentMask ? this.currentMask.extractTail(...arguments) : super.extractTail(...arguments);\n }\n\n /**\n @override\n */\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n\n /**\n @override\n */\n nearestInputPos() {\n return this.currentMask ? this.currentMask.nearestInputPos(...arguments) : super.nearestInputPos(...arguments);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : super.overwrite;\n }\n set overwrite(overwrite) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : super.eager;\n }\n set eager(eager) {\n console.warn('\"eager\" option is not available in dynamic mask, use this option in siblings');\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : super.skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n if (this.isInitialized || skipInvalid !== Masked.DEFAULTS.skipInvalid) {\n console.warn('\"skipInvalid\" option is not available in dynamic mask, use this option in siblings');\n }\n }\n\n /**\n @override\n */\n maskEquals(mask) {\n return Array.isArray(mask) && this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const _mask$mi = mask[mi],\n {\n mask: oldMask\n } = _mask$mi,\n restOpts = _objectWithoutPropertiesLoose(_mask$mi, _excluded2);\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n });\n }\n\n /**\n @override\n */\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) === null || _this$currentMask5 === void 0 ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.value.length : m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(mask) {\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n let to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n const masked = createMask(mask);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value) {\n for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n pipeArgs[_key - 1] = arguments[_key];\n }\n return createPipe(...pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nimport './_rollupPluginBabelHelpers-6b3bd404.js';\nimport './core/utils.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch (e) {}\n","/**\n * @module common/config/mask-configs\n */\n\n/**\n * @hideconstructor\n * @classdesc Конфигурация масок\n */\nclass MaskConfigs {\n /**\n * @readonly\n * @description Конфигурация маски для телефона\n */\n static get phoneNumber() {\n return {\n mask: '+7 (K00) 000-00-00',\n definitions: {\n K: /[^+78\\D]/,\n },\n };\n }\n}\n\nexport default MaskConfigs;","/**\n * @module modules/mask\n * @requires module:common/config/mask-configs\n */\nimport IMask from 'imask';\nimport MaskConfigs from '@/common/config/mask-configs';\n/**\n * @classdesc Модуль маски для полей ввода\n */\nclass Mask {\n /**\n * @description Добавляет маску на поле ввода\n * @param {HTMLElement|HTMLInputElement} el - Поле ввода, для которого добавляется маска\n * @param {String} maskName - Имя маски\n */\n static maskInput(el, maskName) {\n const inputElement = el instanceof HTMLInputElement ? el : el.querySelector('input');\n IMask(inputElement, MaskConfigs[maskName]);\n }\n}\n \nexport default Mask;","/**\n * @module plugins/mask\n * @requires module:common/classes/plugin~Plugin\n * @requires module:modules/mask~Mask\n */\nimport { Plugin } from '@/common';\nimport { Mask } from '@/modules';\n\n/**\n * @extends module:common/classes/plugin~Plugin\n * @inheritdoc\n * @classdesc Плагин для маски на полях ввода\n * @hideconstructor\n * @example\n * \n *
\n * \n *
\n */\nclass MaskPlugin extends Plugin {\n /**\n * @description Инициализация плагина.\n * Вызывает {@link module:modules/mask~Mask.maskInput} для каждого\n * элемента с атрибутом [data-mask] с параметром\n * mask из dataset\n */\n static init() {\n const elements = [...document.querySelectorAll('[data-mask]')];\n elements.forEach((element) => {\n const { mask } = element.dataset;\n Mask.maskInput(element, mask);\n });\n }\n}\nMaskPlugin.config = {};\n\nexport default MaskPlugin;\n","/**\r\n * @module common/utils/dom/dom-utils\r\n */\r\n\r\n/**\r\n * @typedef {Object} ElementOffsets\r\n * @property {Number} top - Верхняя точка элемента\r\n * @property {Number} right - Правая точка элемента\r\n * @property {Number} bottom - Нижняя точка элемента\r\n * @property {Number} left - Левая точка элемента\r\n * @property {Number} cx - Центральная точка элемента по оси X\r\n * @property {Number} cy - Центральная точка элемента по оси Y\r\n */\r\n\r\n/**\r\n * @hideconstructor\r\n * @classdesc Содержит различные утилиты DOM\r\n */\r\nclass DOMUtils {\r\n /**\r\n * @method\r\n * @description Получает текущую позицию элемента во viewport-е\r\n * @param {HTMLElement} el - Элемент\r\n * @returns {module:common/utils/dom/dom-utils~ElementOffsets}\r\n */\r\n static getElementDocumentPosition(el) {\r\n const rect = el.getBoundingClientRect();\r\n const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\r\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n const offsets = {\r\n top: rect.top + scrollTop,\r\n right: rect.left + scrollLeft + rect.width,\r\n bottom: rect.top + scrollTop + rect.height,\r\n left: rect.left + scrollLeft,\r\n cy: rect.top + scrollTop + rect.height / 2,\r\n cx: rect.left + scrollLeft + rect.width / 2,\r\n };\r\n return offsets;\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Получает значение указанного стиля элемента\r\n * @param {HTMLElement} elem - Элемент\r\n * @param {Style} style - Название стиля\r\n * @returns {String}\r\n */\r\n static getStylePropertyValue(elem, style) {\r\n return window.getComputedStyle(elem, null).getPropertyValue(style);\r\n }\r\n\r\n /**\r\n * @member {Number}\r\n * @readonly\r\n * @description Ширина скроллбара клиента\r\n */\r\n static get scrollbarWidth() {\r\n const outer = document.createElement('div');\r\n outer.style.visibility = 'hidden';\r\n outer.style.width = '100px';\r\n outer.style.msOverflowStyle = 'scrollbar';\r\n document.body.appendChild(outer);\r\n const widthNoScroll = outer.offsetWidth;\r\n outer.style.overflow = 'scroll';\r\n const inner = document.createElement('div');\r\n inner.style.width = '100%';\r\n outer.appendChild(inner);\r\n const widthWithScroll = inner.offsetWidth;\r\n outer.parentNode.removeChild(outer);\r\n return widthNoScroll - widthWithScroll;\r\n }\r\n}\r\n\r\nexport default DOMUtils;\r\n","/**\r\n * @module modules/animator\r\n */\r\n\r\n/**\r\n * @typedef {Object} AnimatorAnimation\r\n * @property {String} enter - Класс, добавляющийся непосредственно перед отображением,\r\n * указывает начальную точку анимации входа\r\n * @property {String} enterActive - Класс, добавляющийся в следующем фрейме после отображения,\r\n * указывает анимирующееся свойство\r\n * @property {String} enterTo - Класс, добавляющийся в следующем фрейме,\r\n * указывает конечную точку анимации входа\r\n * @property {String} leave - Класс, добавляющийся непосредственно перед удалением,\r\n * указывает начальную точку анимации выхода\r\n * @property {String} leaveActive - Класс, добавляющийся в следующем фрейме после отображения,\r\n * указывает анимирующееся свойство\r\n * @property {String} leaveTo - Класс, добавляющийся в следующем фрейме,\r\n * указывает конечную точку анимации выхода\r\n */\r\n\r\n/**\r\n * @description Событие, означающее анимацию входа элемента\r\n * @event animatorEnter\r\n */\r\nconst enterEvent = new CustomEvent('Animator.enter');\r\n/**\r\n * @description Событие, означающее анимацию выхода элемента\r\n * @event animatorLeave\r\n */\r\nconst leaveEvent = new CustomEvent('Animator.leave');\r\n\r\n/**\r\n * @classdesc Класс для анимирования элементов\r\n * @hideconstructor\r\n */\r\nclass Animator {\r\n /**\r\n * @static\r\n * @method\r\n * @description Добавляет хуки анимации на элементе\r\n * @param {HTMLElement} el - Элемент, для которого добавляем анимацию\r\n * @param {String} animationName - Название анимации\r\n */\r\n static animate(el, animationName) {\r\n const animation = {\r\n enter: `${animationName}-enter`,\r\n enterActive: `${animationName}-enter-active`,\r\n enterTo: `${animationName}-enter-to`,\r\n leave: `${animationName}-leave`,\r\n leaveActive: `${animationName}-leave-active`,\r\n leaveTo: `${animationName}-leave-to`,\r\n };\r\n el.classList.add(animation.enter);\r\n el.addEventListener(\r\n Animator.enterEvent.type,\r\n Animator.playEnterAnimation(el, animation),\r\n );\r\n el.addEventListener(\r\n Animator.leaveEvent.type,\r\n Animator.playLeaveAnimation(el, animation),\r\n );\r\n }\r\n\r\n /**\r\n * @static\r\n * @method\r\n * @description Возвращает обработчик для анимации входа\r\n * @param {HTMLElement} el - Элемент, для которого генерируется обработчик\r\n * @param {module:modules/animator~AnimatorAnimation} animation - Анимация элемента\r\n * @listens module:modules/animator~event:animatorEnter\r\n * @returns {Function}\r\n */\r\n static playEnterAnimation(el, animation) {\r\n return () => {\r\n el.classList.remove(animation.leaveTo);\r\n el.classList.add(animation.enter);\r\n setTimeout(() => {\r\n el.classList.add(animation.enterActive);\r\n el.classList.add(animation.enterTo);\r\n }, 0);\r\n el.addEventListener('transitionend', () => {\r\n el.classList.remove(animation.enter);\r\n el.classList.remove(animation.enterActive);\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * @static\r\n * @method\r\n * @description Возвращает обработчик для анимации выхода\r\n * @param {HTMLElement} el - Элемент, для которого генерируется обработчик\r\n * @param {module:modules/animator~AnimatorAnimation} animation - Анимация элемента\r\n * @listens module:modules/animator~event:animatorLeave\r\n * @returns {Function}\r\n */\r\n static playLeaveAnimation(el, animation) {\r\n return () => {\r\n el.classList.remove(animation.enterTo);\r\n el.classList.add(animation.leave);\r\n setTimeout(() => {\r\n el.classList.add(animation.leaveActive);\r\n el.classList.add(animation.leaveTo);\r\n }, 0);\r\n el.addEventListener('transitionend', () => {\r\n el.classList.remove(animation.leave);\r\n el.classList.remove(animation.leaveActive);\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * @static\r\n * @member {CustomEvent}\r\n * @readonly\r\n * @description Событие для анимации входа\r\n */\r\n static get enterEvent() {\r\n return enterEvent;\r\n }\r\n\r\n /**\r\n * @static\r\n * @member {CustomEvent}\r\n * @readonly\r\n * @description Событие для анимации выхода\r\n */\r\n static get leaveEvent() {\r\n return leaveEvent;\r\n }\r\n\r\n /**\r\n * @static\r\n * @method\r\n * @param {HTMLElement} el - Элемент, для которого необходимо проиграть анимацию\r\n * @fires module:modules/animator~event:animatorEnter\r\n */\r\n static enter(el) {\r\n el.dispatchEvent(Animator.enterEvent);\r\n }\r\n\r\n /**\r\n *\r\n * @param {HTMLElement} el - Элемент, для которого необходимо проиграть анимацию\r\n * @fires module:modules/animator~event:animatorLeave\r\n */\r\n static leave(el) {\r\n el.dispatchEvent(Animator.leaveEvent);\r\n }\r\n}\r\n\r\nexport default Animator;\r\n","/**\r\n * @module components/modal\r\n */\r\nimport { Component } from '@roskvartal-landings/base';\r\nimport { DOMUtils } from '@roskvartal-landings/util-dom-utils';\r\nimport { Animator } from '@roskvartal-landings/module-animator';\r\n\r\nconst OPEN_EVT = 'modal-open';\r\nconst CLOSE_EVT = 'modal-close';\r\n\r\n/**\r\n * @description Событие, вызывающееся при открытии модального окна\r\n * @event modal-open\r\n */\r\nconst openEvent = new CustomEvent(OPEN_EVT);\r\n/**\r\n * @description Событие, вызывающееся при закрытии модального окна\r\n * @event modal-close\r\n */\r\nconst closeEvent = new CustomEvent(CLOSE_EVT);\r\n\r\n/**\r\n * @extends module:common/classes/component~Component\r\n * @inheritdoc\r\n * @classdesc Компонент модального окна\r\n */\r\nclass Modal extends Component {\r\n /**\r\n * @param {HTMLElement} el - Корневой элемент компоненты\r\n */\r\n constructor(el) {\r\n super(el);\r\n /**\r\n * @member {HTMLElement}\r\n * @description Подложка под модалку\r\n */\r\n this.backdrop = this.refs.get('backdrop');\r\n /**\r\n * @member {HTMLElement}\r\n * @description Диалог\r\n */\r\n this.dialog = this.refs.get('dialog');\r\n Animator.animate(this.backdrop, 'u-fade-half');\r\n Animator.animate(this.dialog, 'u-modal');\r\n this.addEventListeners();\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Добавиляет слушатели событий открытия/закрытия\r\n */\r\n addEventListeners() {\r\n this.backdrop.addEventListener('click', () => {\r\n this.close();\r\n });\r\n this.el.addEventListener('modal-open', (event) => {\r\n this.open(event.detail);\r\n });\r\n this.el.addEventListener('modal-close', (event) => {\r\n this.close(event.detail);\r\n });\r\n this.refs.get('close-btn').addEventListener('click', () => {\r\n this.close();\r\n });\r\n }\r\n\r\n /**\r\n * @method\r\n * @param {Object} payload - Объект настроек\r\n * @description Открыть модальное окно\r\n */\r\n open(payload) {\r\n this.payload = payload;\r\n document.body.classList.add('u-overflow-hidden');\r\n document.body.style.paddingRight = `${DOMUtils.scrollbarWidth}px`;\r\n [...document.querySelectorAll('[data-modal-padded]')].forEach(item => {\r\n item.style.paddingRight = `${parseInt(DOMUtils.getStylePropertyValue(item, 'padding-right')) + DOMUtils.scrollbarWidth}px`;\r\n });\r\n this.el.classList.add('is-opened');\r\n Animator.enter(this.dialog);\r\n Animator.enter(this.backdrop);\r\n }\r\n\r\n /**\r\n * @method\r\n * @param {Object} payload - Объект настроек\r\n * @description Закрыть модальное окно\r\n */\r\n close(payload) {\r\n this.payload = payload;\r\n document.body.classList.remove('u-overflow-hidden');\r\n document.body.style.paddingRight = '0px';\r\n [...document.querySelectorAll('[data-modal-padded]')].forEach(item => {\r\n item.style.paddingRight = `${parseInt(DOMUtils.getStylePropertyValue(item, 'padding-right')) - DOMUtils.scrollbarWidth}px`;\r\n });\r\n Animator.leave(this.dialog);\r\n Animator.leave(this.backdrop);\r\n const removeClass = () => {\r\n this.el.classList.remove('is-opened');\r\n this.el.removeEventListener('transitionend', removeClass);\r\n };\r\n this.el.addEventListener('transitionend', removeClass);\r\n }\r\n\r\n /**\r\n * @member {CustomEvent}\r\n * @static\r\n * @method\r\n * @description Событие открытия модального окна с передачей настроек\r\n */\r\n static getCustomOpenEvent(payload) {\r\n return new CustomEvent(OPEN_EVT, { detail: payload });\r\n }\r\n\r\n /**\r\n * @member {CustomEvent}\r\n * @static\r\n * @method\r\n * @description Событие закрытия модального окна с передачей настроек\r\n */\r\n static getCustomCloseEvent(payload) {\r\n return new CustomEvent(CLOSE_EVT, { detail: payload });\r\n }\r\n\r\n /**\r\n * @member {CustomEvent}\r\n * @readonly\r\n * @description Событие открытия модального окна\r\n */\r\n static get openEvent() {\r\n return openEvent;\r\n }\r\n\r\n /**\r\n * @member {CustomEvent}\r\n * @readonly\r\n * @description Событие закрытия модального окна\r\n */\r\n static get closeEvent() {\r\n return closeEvent;\r\n }\r\n}\r\n\r\nexport default Modal;\r\n","/**\r\n * @module plugins/modal\r\n */\r\nimport { Plugin } from '@roskvartal-landings/base';\r\nimport { Modal } from '@roskvartal-landings/component-modal';\r\n\r\n/**\r\n * @inheritdoc\r\n * @description Плагин для модальных окон\r\n * @hideconstructor\r\n * @example\r\n * \r\n * \r\n */\r\nclass ModalPlugin extends Plugin {\r\n /**\r\n * @description Добавляет обработчик события click для каждого элемента\r\n * с атрибутом data-modal, вызывающий событие\r\n * {@link module:components/modal~Modal.openEvent}\r\n */\r\n static init() {\r\n const elements = [...document.querySelectorAll('[data-modal]')];\r\n elements.forEach((element) => {\r\n const { modal, payload } = element.dataset;\r\n const modalElement = document.querySelector(modal);\r\n element.addEventListener('click', () => {\r\n try {\r\n modalElement.dispatchEvent(Modal.getCustomOpenEvent(JSON.parse(payload)));\r\n }\r\n catch (e) {\r\n modalElement.dispatchEvent(Modal.openEvent);\r\n }\r\n });\r\n });\r\n }\r\n}\r\nModalPlugin.config = {};\r\n\r\nexport default ModalPlugin;\r\n","/**\r\n * @module plugins/lazr\r\n * @requires module:common/classes/plugin~Plugin\r\n */\r\nimport { Plugin } from '@roskvartal-landings/base';\r\n\r\nlet observer;\r\n\r\n/**\r\n * @classdesc Плагин ленивой загрузки изображений\r\n * @extends module:common/classes/plugin~Plugin\r\n * @inheritdoc\r\n * @hideconstructor\r\n */\r\nclass LazrPlugin extends Plugin {\r\n static init() {\r\n observer = new IntersectionObserver(\r\n LazrPlugin.replaceAttribute,\r\n LazrPlugin.config,\r\n );\r\n const elements = [...document.querySelectorAll('[data-lazr]')];\r\n elements.forEach((element) => {\r\n observer.observe(element);\r\n });\r\n }\r\n\r\n /**\r\n * @static\r\n * @method\r\n * @description Заменяет значение атрибута src на значение атрибута data-lazr\r\n * @param {IntersectionObserverEntry[]} entries - Элементы, для которых нужно произвести замену\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry\r\n */\r\n static replaceAttribute(entries) {\r\n entries.forEach((entry) => {\r\n if (\r\n Math.ceil(entry.intersectionRatio * 10) / 10\r\n >= LazrPlugin.config.threshold[0]\r\n ) {\r\n const { lazr } = entry.target.dataset;\r\n entry.target.setAttribute('src', lazr);\r\n }\r\n observer.unobserve(entry.target);\r\n });\r\n }\r\n}\r\n/**\r\n * @static\r\n * @member {Object}\r\n * @property {Number[]} threshold - Массив threshold\r\n * @description Объект конфигурации IntersectionObserver\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\r\n */\r\nLazrPlugin.config = {\r\n threshold: Array(10)\r\n .fill()\r\n .map((item, index) => index / 10),\r\n};\r\n\r\nexport default LazrPlugin;\r\n","/**\r\n * @module common/classes/component\r\n */\r\n\r\n/**\r\n * @classdesc Класс компоненты\r\n */\r\nclass Component {\r\n /**\r\n * Создаёт экземпляр компоненты и добавляет референсы\r\n * @param {HTMLElement} el - корневой элемент компоненты\r\n */\r\n constructor(el) {\r\n /**\r\n * @instance\r\n * @type {HTMLElement}\r\n * @description Корневой элемент компоненты\r\n */\r\n this.el = el;\r\n /**\r\n * @instance\r\n * @type {Map}\r\n * @description Референсы\r\n */\r\n this.refs = new Map();\r\n\r\n [...el.querySelectorAll('[data-ref]')].forEach((item) => {\r\n const key = item.dataset.ref;\r\n this.refs.set(key, item);\r\n });\r\n }\r\n}\r\n\r\nexport default Component;\r\n","/**\r\n * @module common/classes/plugin\r\n */\r\n\r\n/**\r\n * @hideconstructor\r\n * @classdesc Класс плагина\r\n */\r\nclass Plugin {\r\n /**\r\n * @method\r\n * @abstract\r\n * @static\r\n * @description Инициализация модуля\r\n */\r\n static init() {\r\n return Function.prototype;\r\n }\r\n}\r\n/**\r\n * @member {*} module:common/classes/plugin~Plugin.config\r\n * @abstract\r\n * @description Конфигурация модуля\r\n */\r\nPlugin.config = {};\r\n\r\nexport default Plugin;\r\n","/**\r\n * @module components/text-field\r\n */\r\nimport { Component } from '@roskvartal-landings/base';\r\n\r\n/**\r\n * @extends module:common/classes/component~Component\r\n * @inheritdoc\r\n * @classdesc Компонент текстового поля\r\n */\r\nclass TextField extends Component {\r\n /**\r\n * @param {HTMLElement} el - Корневой элемент компоненты\r\n */\r\n constructor(el) {\r\n super(el);\r\n const data = {\r\n value: null,\r\n isDirty: false,\r\n gapWidth: null,\r\n };\r\n /**\r\n * @member {Object}\r\n * @property {String} value - Значение поля ввода\r\n * @property {Boolean} isDirty - Было ли затронуто поле ввода\r\n * @property {Number} gapWidth - Ширина \"прорези\" для лейбла\r\n */\r\n this.data = new Proxy(data, this.dataProxyHandlers);\r\n this.init();\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Инициализация компоненты\r\n */\r\n init() {\r\n const control = this.refs.get('control');\r\n this.data.value = control.value;\r\n if (this.data.value) {\r\n if (!this.data.gapWidth) {\r\n this.countGapSize();\r\n }\r\n this.data.isDirty = true;\r\n }\r\n this.addEventListeners();\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Добавляет слушатели событий на элементы\r\n */\r\n addEventListeners() {\r\n const control = this.refs.get('control');\r\n const notch = this.refs.get('notch');\r\n control.addEventListener('focus', () => {\r\n this.data.isDirty = false;\r\n if (!this.data.gapWidth) {\r\n this.countGapSize();\r\n }\r\n notch.style.width = this.data.gapWidth;\r\n });\r\n control.addEventListener('blur', () => {\r\n if (this.data.value) this.data.isDirty = true;\r\n else notch.style.width = 'auto';\r\n });\r\n control.addEventListener('input', () => {\r\n this.data.value = control.value;\r\n control.classList.remove('is-invalid');\r\n });\r\n control.addEventListener('change', () => {\r\n this.data.value = control.value;\r\n control.classList.remove('is-invalid');\r\n });\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Рассчитывает размер отступа для лейбла\r\n */\r\n countGapSize() {\r\n const label = this.refs.get('label');\r\n const { width } = label.getBoundingClientRect();\r\n this.data.gapWidth = `${width * 0.875}px`;\r\n }\r\n\r\n /**\r\n * @readonly\r\n * @member {Object}\r\n * @description Ловушки для {@link module:components/text-field~TextField#data}\r\n */\r\n get dataProxyHandlers() {\r\n const control = this.refs.get('control');\r\n const dataProxyHandlers = {\r\n set: (obj, prop, val) => {\r\n if (prop === 'isDirty') {\r\n if (val) control.classList.add('is-dirty');\r\n else control.classList.remove('is-dirty');\r\n }\r\n return Reflect.set(obj, prop, val);\r\n },\r\n };\r\n return dataProxyHandlers;\r\n }\r\n}\r\n\r\nexport default TextField;\r\n","/**\r\n * @module components/accordion\r\n */;\r\n\r\n/**\r\n * @classdesc Аккордион\r\n */\r\nclass Accordion {\r\n constructor(el) {\r\n /**\r\n * @member {Object}\r\n * @property {String} section - css-class родительской секции\r\n * @property {String} container - css-class для секций аккордиона \r\n * @property {String} selected - css-class для развёрнутой секции аккордиона\r\n * @property {String} button - css-class для кнопок, по которым раскрывается/скрывается содержимое\r\n * @property {String} content - css-class для скрытого/раскрываемого содержимого\r\n */\r\n this.data = {\r\n section: el.section,\r\n container: el.container,\r\n selected: el.selected,\r\n button: el.button,\r\n content: el.content\r\n };\r\n this.init();\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Инициализация аккордиона. Навешивание обработчиков событий на кнопки\r\n */\r\n init() {\r\n let data = this.data;\r\n const section = document.querySelector(`.${data.section}`)\r\n const cards = Array.from(section.getElementsByClassName(data.container))\r\n const crosses = Array.from(section.getElementsByClassName(data.button))\r\n\r\n crosses.forEach((cross, idx) =>\r\n cross.addEventListener(\r\n 'click',\r\n () => this.onClick(idx, cards, section)\r\n )\r\n )\r\n }\r\n\r\n /**\r\n * @method\r\n * @description Обработка нажатия кнопок. Скрытие/раскрытие секций аккордиона\r\n */\r\n onClick(idx, cards, section) {\r\n let data = this.data\r\n let $target = section.querySelector(`.${data.container}__${idx + 1}`)\r\n let targetIsSelected = $target.classList.contains(data.selected)\r\n let $content = $target.querySelector(`.${data.content}`)\r\n let styles = $content.style\r\n\r\n cards.forEach(card => {\r\n let cardContent = card.querySelector(`.${data.content}`)\r\n let styles = cardContent.style\r\n\r\n if (card.classList.contains(data.selected)) {\r\n\r\n card.classList.remove(data.selected)\r\n\r\n Object.assign(\r\n styles,\r\n {\r\n height: '0',\r\n marginBottom: ''\r\n })\r\n\r\n requestAnimationFrame(() => {\r\n setTimeout(\r\n () => Object.assign(styles, { transition: '' }),\r\n 500)\r\n })\r\n }\r\n })\r\n\r\n if (!targetIsSelected) {\r\n let paddingTop = window.getComputedStyle($target, null).getPropertyValue('padding-top')\r\n\r\n Object.assign(\r\n styles,\r\n {\r\n opacity: '1',\r\n top: '-100%',\r\n left: '-100%',\r\n marginBottom: paddingTop,\r\n width: '100%',\r\n height: 'auto'\r\n }\r\n )\r\n\r\n let contentRect = $content.getBoundingClientRect()\r\n $target.classList.add(data.selected)\r\n\r\n Object.assign(\r\n styles,\r\n {\r\n height: '0',\r\n opacity: '1',\r\n top: 'unset',\r\n left: 'unset',\r\n transition: 'height .3s ease-out'\r\n }\r\n )\r\n\r\n requestAnimationFrame(\r\n () => Object.assign(\r\n styles,\r\n {\r\n height: `${contentRect.height}px`\r\n }\r\n )\r\n )\r\n }\r\n }\r\n}\r\n\r\nexport default Accordion;","/**\n * @module components/lead-modal\n * @requires module:common/api/roskvartal-api~RoskvartalApi\n * @requires module:common/config/url-config~UrlConfig\n * @requires module:common/errors/incorrect-phonenumber~IncorrectPhoneNumberError\n * @requires module:common/errors/invalid-full-name~InvalidFullNameError\n * @requires module:common/errors/invalid-email~InvalidEmailError\n */\nimport { Modal } from '@roskvartal-landings/component-modal';\nimport { RoskvartalApi, UrlConfig } from '@/common';\nimport {\n IncorrectPhoneNumberError,\n InvalidFullNameError,\n InvalidEmailError\n} from '@/common/errors';\n\n/**\n * @extends module:components/modal~Modal\n * @inheritdoc\n * @classdesc Компонент модального окна лидов\n */\nclass LeadModal extends Modal {\n constructor(el) {\n super(el);\n /**\n * @member {Object}\n * @property {String} fullName - ФИО пользователя\n * @property {String} phoneNumber - Номер телефона пользователя\n * @property {String} customEmail - Email пользователя\n * @property {String} comment - Комментарий к заявке\n * @property {String} clientId - ID клиента из Google Analytics\n */\n this.data = {\n fullName: null,\n phoneNumber: null,\n customEmail: null,\n clientId: null,\n comment: `Позвонить: ${this.refs.get('comment').value}`,\n };\n this.init();\n }\n\n /**\n * @method\n * @description Инициализация модалки\n */\n init() {\n const fullNameInput = this.refs.get('full-name');\n const phoneNumber = this.refs.get('phone-number');\n const customEmail = this.refs.get('customEmail');\n const comment = this.refs.get('comment');\n const form = this.refs.get('form');\n\n this.data.fullName = fullNameInput.querySelector('input').value;\n this.data.phoneNumber = phoneNumber.querySelector('input').value;\n this.data.customEmail = customEmail.querySelector('input').value;\n\n fullNameInput.addEventListener('input', (evt) => {\n this.data.fullName = evt.target.value;\n });\n phoneNumber.addEventListener('input', (evt) => {\n this.data.phoneNumber = evt.target.value;\n });\n customEmail.addEventListener('input', (evt) => {\n this.data.customEmail = evt.target.value;\n });\n comment.addEventListener('change', (evt) => {\n this.data.comment = `Позвонить: ${evt.target.value}`;\n });\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n this.sendLead();\n });\n }\n\n /**\n * @method\n * @description Отправить заявку на звонок\n */\n sendLead() {\n if (RoskvartalApi.state.order.status.isPending) return;\n\n RoskvartalApi.mutations.SET_ACTION_STATUS_PENDING('order');\n\n this.refs.get('send-button').disabled = true;\n this.data.clientId = ga.getAll()[0].get('clientId');\n\n RoskvartalApi.order({ ...this.data, service: this.payload.service, tariff: this.payload.tariff })\n .then(LeadModal.onLeadSuccess)\n .catch((error) => {\n this.updateInvalidState(error);\n LeadModal.onLeadError(error);\n })\n .finally(() => {\n this.refs.get('send-button').disabled = false;\n LeadModal.afterLead();\n });\n }\n\n /**\n * @static\n * @method\n * @description Вызывает редирект на страницу \"Спасибо\" при успешной отправке лида\n * @param {*} response\n */\n static onLeadSuccess(response) {\n RoskvartalApi.mutations.SET_ACTION_STATUS_SUCCEEDED('order');\n const {\n data: { returnUrl },\n } = response;\n window.location = `${UrlConfig.baseRkUrl}${returnUrl}`;\n }\n\n /**\n * @static\n * @method\n * @description Устанавливает состояние запроса отправки лида в состояние FAILED\n */\n static onLeadError() {\n RoskvartalApi.mutations.SET_ACTION_STATUS_FAILED('order');\n }\n\n /**\n * @static\n * @method\n * @description Сбрасывает состояние запроса отправки лида спустя 2 секунды после завершения\n */\n static afterLead() {\n setTimeout(\n () => RoskvartalApi.mutations.RESET_ACTION_STATUS('order'),\n 2000,\n );\n }\n\n /**\n * @method\n * @description Обновляет состояние ошибки на форме\n * @param {Error} error - Ошибка\n */\n updateInvalidState(error) {\n switch (error.constructor) {\n case InvalidFullNameError:\n this.refs\n .get('full-name')\n .querySelector('input')\n .classList.add('is-invalid');\n break;\n case IncorrectPhoneNumberError:\n this.refs\n .get('phone-number')\n .querySelector('input')\n .classList.add('is-invalid');\n break;\n case InvalidEmailError:\n this.refs\n .get('customEmail')\n .querySelector('input')\n .classList.add('is-invalid');\n break;\n default:\n break;\n }\n }\n}\n\nexport default LeadModal;\n","/**\n * @module components/user-type-modal\n * @requires module:common/utils/cookie~Cookie\n */\nimport { Modal } from '@roskvartal-landings/component-modal';\nimport { Cookie } from '@/common/utils';\n\nconst rkMarkerCookie = Cookie.get('.RkMarker');\nconst rkMarkerStorage = JSON.parse(localStorage.getItem('rkMarker') || '{}');\n\nif (!rkMarkerStorage.userActions) {\n rkMarkerStorage.userActions = {};\n}\n\nconst parseUserActions = (actions) => {\n rkMarkerStorage.userActions = {};\n\n if (!actions) {\n return;\n }\n\n actions.split('&').forEach((action) => {\n const arr = action.split('=');\n\n if (arr[0]) {\n rkMarkerStorage.userActions[arr[0]] = arr[1];\n }\n });\n};\n\nconst insertMetricsIframe = () => {\n let userActions = '';\n for (const prop in rkMarkerStorage.userActions) {\n if (userActions) {\n userActions += '&';\n } else {\n userActions = '?';\n }\n\n userActions += `${prop}=${rkMarkerStorage.userActions[prop]}`;\n }\n\n document.body.insertAdjacentHTML(\n 'beforeend',\n ``\n );\n};\n\n/**\n* @extends module:components/modal~Modal\n* @inheritdoc\n* @classdesc Компонент модального окна подтверждения типа пользователя\n*/\nclass UserTypeModal extends Modal {\n constructor(el) {\n super(el);\n this.init();\n }\n\n /**\n * @method\n * @description Инициализация модалки\n */\n init() {\n if (document.readyState === 'complete') {\n this.getUserActions();\n return;\n }\n\n window.addEventListener('load', () => {\n this.getUserActions();\n });\n }\n\n getUserActions() {\n if (\n rkMarkerStorage.expiration &&\n rkMarkerStorage.expiration > Date.now()\n ) {\n insertMetricsIframe();\n return;\n }\n\n const data = {\n userId: rkMarkerCookie\n };\n\n window.addEventListener('message', this.receiveMessage.bind(this));\n window.RK_METRICS.getUserActions(data);\n }\n\n receiveMessage(evt) {\n if (!evt.data) {\n return;\n }\n\n switch (evt.data.type) {\n case 'getUserActions': {\n parseUserActions(evt.data.payload);\n }\n case 'saveUserAction': {\n this.saveUserActions();\n insertMetricsIframe();\n break;\n }\n }\n }\n\n chooseUserType() {\n const organization = this.refs.get('organization');\n const owner = this.refs.get('owner');\n const cancelBtn = this.refs.get('cancel-btn');\n\n const inputHandler = () => {\n cancelBtn.disabled = false;\n };\n\n organization.addEventListener('change', inputHandler);\n owner.addEventListener('change', inputHandler);\n\n cancelBtn.addEventListener('click', () => {\n this.sendUserAction()\n });\n\n this.open();\n }\n\n sendUserAction() {\n rkMarkerStorage.userActions.userType =\n document.querySelector('.user-type-modal__input:checked').value;\n const data = {\n userId: rkMarkerCookie,\n key: 'userType',\n value: rkMarkerStorage.userActions.userType\n };\n\n window.RK_METRICS.saveUserAction(data);\n this.close();\n }\n\n saveUserActions() {\n rkMarkerStorage.expiration = Date.now() + 3600 * 1000;\n localStorage.setItem('rkMarker', JSON.stringify(rkMarkerStorage));\n\n window.removeEventListener('message', this.receiveMessage);\n }\n}\n\nexport default UserTypeModal;\n","/**\n * @module common/utils/cookie\n */\n\n/**\n * @hideconstructor\n * @classdesc Содержит утилиты для работы с cookie\n */\nclass Cookie {\n /**\n * @method\n * @description Получить значение cookie по ключу\n * @param {String} key - Ключ cookie\n * @returns {String | null}\n */\n static get(key) {\n let result;\n const cookies = document.cookie ? document.cookie.split('; ') : [];\n\n for (const cookie of cookies) {\n const parts = cookie.split('=');\n const name = parts.shift();\n\n if (key === name) {\n result = parts.pop();\n break;\n }\n }\n\n return result || null;\n }\n}\n\nexport default Cookie;\n","import { Component } from '@roskvartal-landings/base';\nimport { Modal } from '@roskvartal-landings/component-modal';\n\nclass Navbar extends Component {\n constructor(el) {\n super(el);\n const config = JSON.parse(el.dataset.config);\n const navbar = window.RK_COMPONENTS.initNavbar('navbar', config);\n\n navbar.$on('callbackRequest', ({ detail }) => {\n const modalElement = document.querySelector('#lead-modal');\n modalElement.dispatchEvent(Modal.getCustomOpenEvent(detail));\n });\n\n navbar.$on('logout', () => {\n fetch(`${config.baseLkUrl}/logout/navbar`, {\n method: 'post',\n credentials: 'include',\n }).then(() => {\n navbar.$set({\n user: null,\n });\n });\n });\n }\n}\n\nexport default Navbar;\n","import '@/assets/scss/main.scss';\nimport '@/sections/tariffs-section.js';\nimport { App } from '@roskvartal-landings/base';\nimport {\n MaskPlugin,\n ModalPlugin,\n LazrPlugin\n} from '@/plugins';\nimport {\n Modal,\n TextField,\n LeadModal,\n UserTypeModal,\n Accordion,\n MapComponent,\n Navbar\n} from '@/components';\n\nconst landingApp = new App();\n\nlandingApp.usePlugin(MaskPlugin);\nlandingApp.usePlugin(ModalPlugin);\nlandingApp.usePlugin(LazrPlugin);\nlandingApp.registerComponent('text-field', TextField);\nlandingApp.registerComponent('lead-modal', LeadModal);\nlandingApp.registerComponent('user-type-modal', UserTypeModal);\nlandingApp.registerComponent('modal', Modal);\nlandingApp.registerComponent('accordion', Accordion);\nlandingApp.registerComponent('navbar', Navbar);\n\nlandingApp.init();\n\nnew Accordion({\n section: 'c-accordion-section',\n container: 'c-accordion-section-item',\n selected: 'c-accordion-section-item@selected',\n button: 'c-accordion-section-item',\n content: 'c-accordion-section-item-body'\n});"],"names":["module","exports","utils","settle","buildURL","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","Authorization","btoa","open","method","toUpperCase","url","params","paramsSerializer","timeout","onreadystatechange","readyState","status","responseURL","indexOf","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","e","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","instance","prototype","extend","axios","create","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","interceptors","arguments","chain","interceptor","unshift","fulfilled","rejected","push","length","shift","getUri","replace","merge","handlers","use","eject","id","fn","h","enhanceError","code","error","Error","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","baseURL","transformRequest","common","adapter","transformResponse","isAxiosError","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","prop","isObject","deepMerge","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","process","Object","call","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","JSON","stringify","parse","maxContentLength","thisArg","args","Array","i","apply","encode","encodeURIComponent","serializedParams","parts","isArray","v","isDate","toISOString","join","hashmarkIndex","slice","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","document","match","RegExp","decodeURIComponent","remove","now","test","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","trim","substr","concat","callback","arr","isFunction","obj","l","hasOwnProperty","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","result","assignValue","a","b","str","PLAN_ENABLED","planes","getElementsByClassName","currentPlaneIndex","className","_loop","planeIndex","classList","constructor","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","plugins","Set","components","Map","filters","usePlugin","plugin","mutable","app","add","useFilter","filter","set","registerComponent","component","init","querySelectorAll","element","componentName","dataset","ComponentClass","console","warn","log","el","refs","item","ref","Plugin","Function","UrlConfig","_classCallCheck","_Error","_inherits","IncorrectPhoneNumberError","_super","_createSuper","filename","_wrapNativeSuper","InvalidFullNameError","InvalidEmailError","_createClass","LandingOrderDTO","_ref","fullName","phoneNumber","customEmail","comment","clientId","service","tariff","landing","landingTariff","returnUrl","methods","states","isPending","isFailed","isSucceeded","ControllerMutations","state","SET_ACTION_STATUS_PENDING","actionName","SET_ACTION_STATUS_FAILED","SET_ACTION_STATUS_SUCCEEDED","RESET_ACTION_STATUS","generateMutations","api","generateControllerStates","mutations","_objectSpread","controllerMutations","RoskvartalApi","payload","_objectWithoutPropertiesLoose","excluded","target","sourceKeys","keys","IMask","opts","InputMask","ChangeDetails","details","assign","inserted","rawInserted","skip","tailShift","aggregate","offset","String","DIRECTION","escapeRegExp","normalizePrepare","prep","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","start","Math","min","insertedCount","removedCount","max","end","removed","head","substring","tail","removeDirection","ContinuousTailDetails","from","stop","appendTo","masked","append","_appendPlaceholder","beforePos","shiftChar","Masked","_value","_update","DEFAULTS","isInitialized","updateOptions","withValueRefresh","reset","flags","input","doCommit","unmaskedValue","typedValue","doParse","doFormat","rawInputValue","extractInput","raw","displayValue","isComplete","isFilled","nearestInputPos","direction","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepare","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","ci","doSkipInvalid","eager","_refreshing","rawInput","ret","runIsolated","_isolated","skipInvalid","prepare","validate","parent","commit","format","splice","deleteCount","tailPos","eagerRemove","oldRawValue","forceDirection","valLength","maskEquals","mask","typedValueEquals","tval","EMPTY_VALUES","includes","maskedClass","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","MaskedFunction","createMask","MaskedClass","_excluded","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","isOptional","placeholderChar","displayChar","lazy","maskOpts","Boolean","maxPos","boundPos","PatternFixedDefinition","isFixed","isUnmasking","_isRawInput","appendEager","isResolved","char","ChunksTailDetails","chunks","map","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","index","_stops","phDetails","_blocks","remainChars","props","cstate","chunkShiftPos","PatternCursor","pos","_log","ok","block","_blockStartPos","s","pushState","popState","pop","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","pushLeftBeforeInput","pushLeftBeforeRequired","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","super","definitions","_rebuildMask","defs","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","_defs$char","_defs$char2","blocks","p","bNames","bName","sort","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","reduce","_this$_mapPosToBlock","startBlockIndex","blockIter","_flags$_beforeTailSta","_flags$_beforeTailSta2","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","_","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","to","fromStr","padStart","toStr","sameCharsCount","repeat","boundaries","minstr","maxstr","placeholder","num","padEnd","autofix","nextVal","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","getDate","bk","date","isDateExist","day","month","year","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","bindEvents","unbindEvents","HTMLMaskElement","_handlers","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","activeElement","setSelectionRange","event","_toggleEventHandler","EVENTS_MAP","handler","removeEventListener","selectionChange","drop","click","focus","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","isContentEditable","tagName","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","_this$masked","updateControl","_unbindEvents","_fireEvent","ev","_len","_key","listeners","_cursorChanging","_changingCursorPos","_selection","newUnmaskedValue","newValue","newDisplayValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","clearTimeout","on","off","hIndex","preventDefault","stopPropagation","destroy","MaskedEnum","enum","some","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","prepCh","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","isNaN","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","dropFractional","UNMASKED_RADIX","signed","toLocaleString","useGrouping","maximumFractionDigits","_excluded2","currentMask","compiledMasks","_applyDispatch","currentMaskFlags","prevValueBeforeTail","inputValue","insertValue","_rawInputValue","tailValue","prevMask","prevMaskState","doDispatch","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","_mask$mi","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","weight","i1","i2","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","pipeArgs","globalThis","MaskConfigs","K","Mask","maskName","HTMLInputElement","querySelector","MaskPlugin","_Plugin","_toConsumableArray","getElementDocumentPosition","rect","getBoundingClientRect","scrollLeft","pageXOffset","documentElement","scrollTop","pageYOffset","top","right","left","width","bottom","height","cy","cx","getStylePropertyValue","elem","style","getComputedStyle","getPropertyValue","scrollbarWidth","outer","visibility","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","enterEvent","CustomEvent","leaveEvent","Animator","animate","animationName","animation","enter","enterActive","enterTo","leave","leaveActive","leaveTo","type","playEnterAnimation","playLeaveAnimation","dispatchEvent","OPEN_EVT","CLOSE_EVT","openEvent","closeEvent","backdrop","dialog","addEventListeners","close","detail","paddingRight","parseInt","removeClass","getCustomOpenEvent","getCustomCloseEvent","ModalPlugin","modal","modalElement","observer","LazrPlugin","IntersectionObserver","replaceAttribute","observe","entries","entry","ceil","intersectionRatio","threshold","lazr","unobserve","fill","Proxy","isDirty","gapWidth","dataProxyHandlers","control","countGapSize","notch","label","Reflect","section","container","selected","button","content","cards","cross","idx","onClick","$target","targetIsSelected","contains","$content","styles","card","marginBottom","requestAnimationFrame","transition","paddingTop","opacity","contentRect","_Modal","LeadModal","_this","_this2","fullNameInput","form","evt","sendLead","_this3","disabled","ga","getAll","onLeadSuccess","updateInvalidState","onLeadError","afterLead","Modal","rkMarkerCookie","Cookie","_step","_iterator","_createForOfIteratorHelper","done","err","f","rkMarkerStorage","localStorage","getItem","userActions","insertMetricsIframe","insertAdjacentHTML","rkMarkerApi","UserTypeModal","getUserActions","expiration","userId","receiveMessage","RK_METRICS","actions","action","saveUserActions","organization","owner","cancelBtn","inputHandler","sendUserAction","userType","saveUserAction","setItem","Navbar","_Component","navbar","RK_COMPONENTS","initNavbar","$on","fetch","baseLkUrl","credentials","$set","user","Component","landingApp","App","TextField","Accordion"],"sourceRoot":""}