1 | {"version":3,"file":"experimental.js","sourceRoot":"","sources":["../src/experimental.ts"],"names":[],"mappings":"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","sourcesContent":["// Experimental API below\n\n/**\n * get input values\n *\n * Extended by: Gabriel Schuster <github.com@actra.de>\n * Now gets values of inputs (including \"checked\" status radios, checkboxes), textareas and selects (including multiselects)\n * Tries to identify the elements as exact as possible, falls back to numeric index when identification fails\n * WIP refactor by: PatrickJS\n */\nexport function __getInputValues() {\n const _inputs = document.querySelectorAll('input, textarea, select');\n const inputs = Array.prototype.slice.call(_inputs);\n\n return inputs.map(function(input: any) {\n const inputTagName = input.tagName.toLowerCase();\n const inputType = input.type;\n const inputId = (input.id && typeof input.id === 'string') ? input.id : null;\n const inputName = (input.name && typeof input.name === 'string') ? input.name : null;\n const inputValue = (input.value && typeof input.value === 'string') ? input.value : null;\n const inputChildNodes = input.childNodes;\n const inputSelected = Boolean(input.selected);\n\n type InputOption = {value: string, selected: boolean};\n type HmrStore = {\n tag: string;\n type: string;\n id: string;\n name: string;\n value: string;\n checked: boolean;\n options: Array<InputOption>;\n };\n\n let elementStore: HmrStore = {\n 'tag': inputTagName,\n 'type': null,\n 'id': inputId,\n 'name': inputName,\n 'value': '',\n 'checked': false,\n 'options': []\n };\n\n if ('input' === inputTagName || 'textarea' === inputTagName) {\n elementStore['type'] = inputType;\n\n if ('input' !== inputTagName) {\n elementStore['value'] = inputValue;\n return elementStore;\n }\n switch (inputType) {\n case 'checkbox':\n case 'radio':\n elementStore['checked'] = inputSelected;\n elementStore['value'] = inputValue;\n return elementStore;\n case 'image':\n case 'button':\n case 'submit':\n case 'reset':\n default:\n // These types don't need any config and thus need no update, they only were stored because they match \"input\"\n return elementStore;\n }\n } else if ('select' === inputTagName) {\n const childNodes = Array.prototype.slice.call(inputChildNodes);\n\n const options: Array<InputOption> = childNodes.map((option: any, i: number) => {\n return { value: option['value'], selected: Boolean(option['selected']) };\n });\n\n elementStore['options'] = options;\n return elementStore;\n }\n\n return elementStore;\n });\n}\n\n/**\n * set input values\n *\n * Extended by: Gabriel Schuster <github.com@actra.de>\n * WIP refactor by: PatrickJS\n */\nexport function __setInputValues($inputs: any) {\n const inputs: any = document.querySelectorAll('input, textarea');\n\n $inputs.forEach((store: any, i: number) => {\n\n if ('input' === store.tag || 'textarea' === store.tag) {\n if ('input' === store.tag && ('checkbox' === store.type || 'radio' === store.type)) {\n let selector = 'input' + (\n null !== store.id ? '#' + store.id : ''\n ) + '[type=\"' + store.type + '\"]' + (null !== store.name ? '[name=\"' + store.name + '\"]' : '') +\n '[value=\"' + store.value + '\"]';\n let element: any = document.body.querySelector(selector);\n\n if (element && Boolean(store['checked'])) {\n element['checked'] = 'checked';\n\n element.dispatchEvent(new CustomEvent('input', {detail: element['checked']}));\n }\n } else if ('input' === store.tagName.toLowerCase() &&\n ('image' === store.type || 'button' === store.type || 'submit' === store.type || 'reset' === store.type)) {\n // These types don't need any config and thus need no update, they only were stored because they match \"input\"\n } else {\n if (null === store.id && null === store.name) {\n if (store.value.length &&\n inputs[i] &&\n inputs[i].tagName.toLowerCase() === store.tag &&\n ('textarea' === store.tag || inputs[i].getAttribute('type') === store.type) &&\n ('string' !== typeof inputs[i].id || !inputs[i].id.length) &&\n ('string' !== typeof inputs[i].getAttribute('name') ||\n !inputs[i].getAttribute('name').length)) {\n\n inputs[i]['value'] = store.value;\n inputs[i].dispatchEvent(new CustomEvent('input', {detail: inputs[i]['value']}));\n }\n } else {\n let selector = 'input' +\n (null !== store.id ? '#' + store.id : '') + ('input' === store.tag ? '[type=\"' + store.type + '\"]' : '') +\n (null !== store.name ? '[name=\"' + store.name + '\"]' : '');\n let element: any = document.body.querySelector(selector);\n\n if (element && store.value.length) {\n element['value'] = store.value;\n element.dispatchEvent(new CustomEvent('input', {detail: element['value']}));\n }\n }\n }\n } else if ('select' === store.tag) {\n let select: any = null;\n\n if (null === store.id && null === store.name) {\n if (inputs[i] && inputs[i].tagName.toLowerCase() === store.tag && ('string' !== typeof inputs[i].id || !inputs[i].id.length) &&\n ('string' !== typeof inputs[i].getAttribute('name') || !inputs[i].getAttribute('name').length)) {\n select = inputs[i];\n }\n } else {\n let selector = 'select' + (null !== store.id ? '#' + store.id : '') + (null !== store.name ? '[name=\"' + store.name + '\"]' : '');\n let element: any = document.body.querySelector(selector);\n if (element) {\n select = element;\n }\n }\n\n if (select) {\n store.options.forEach((storedOption: any, j: number) => {\n let option: any = select.querySelector('option[value=\"' + storedOption.value + '\"]');\n\n if (\n !option &&\n select.childNodes[j] &&\n ('string' !== typeof select.childNodes[j]['value'] || !select.childNodes[j]['value'].length)\n ) {\n option = select.childNodes[j];\n }\n if (option && !!storedOption.selected) {\n option['selected'] = 'selected';\n\n option.dispatchEvent(new CustomEvent('input', {detail: option['selected']}));\n }\n });\n }\n }\n });\n}\n\nexport function __createInputTransfer() {\n const $inputs = __getInputValues();\n return function restoreInputValues() {\n return __setInputValues($inputs);\n };\n}\n"]} |