ember-primitives 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"color-scheme.js","sources":["../src/color-scheme.ts"],"sourcesContent":["import { waitForPromise } from '@ember/test-waiters';\n\nimport { cell } from 'ember-resources';\n\nconst _colorScheme = cell<string | undefined>();\n\nlet callbacks: Set<(colorScheme: string) => void> = new Set();\n\nasync function runCallbacks(theme: string) {\n await Promise.resolve();\n\n for (let callback of callbacks.values()) {\n callback(theme);\n }\n}\n\n/**\n * Object for managing the color scheme\n */\nexport const colorScheme = {\n /**\n * Set's the current color scheme to the passed value\n */\n update: (value: string) => {\n colorScheme.current = value;\n\n waitForPromise(runCallbacks(value));\n },\n\n on: {\n /**\n * register a function to be called when the color scheme changes.\n */\n update: (callback: (colorScheme: string) => void) => {\n callbacks.add(callback);\n },\n },\n off: {\n /**\n * unregister a function that would have been called when the color scheme changes.\n */\n update: (callback: (colorScheme: string) => void) => {\n callbacks.delete(callback);\n },\n },\n\n /**\n * the current valuel of the \"color scheme\"\n */\n get current(): string | undefined {\n return _colorScheme.current;\n },\n set current(value: string | undefined) {\n _colorScheme.current = value;\n\n if (!value) {\n localPreference.delete();\n\n return;\n }\n\n localPreference.update(value);\n setColorScheme(value);\n },\n};\n\n/**\n * Synchronizes state of `colorScheme` with the users preferences as well as reconciles with previously set theme in local storage.\n *\n * This may only be called once per app.\n */\nexport function sync() {\n /**\n * reset the callbacks\n */\n callbacks = new Set();\n\n /**\n * If local prefs are set, then we don't care what prefers-color-scheme is\n */\n if (localPreference.isSet()) {\n let pref = localPreference.read();\n\n if (pref === 'dark') {\n setColorScheme('dark');\n\n _colorScheme.current = 'dark';\n\n return;\n }\n\n setColorScheme('light');\n _colorScheme.current = 'light';\n\n return;\n }\n\n if (prefers.dark()) {\n setColorScheme('dark');\n _colorScheme.current = 'dark';\n } else if (prefers.light()) {\n setColorScheme('light');\n _colorScheme.current = 'light';\n }\n}\n\n/**\n * Helper methods to determining what the user's preferred color scheme is\n */\nexport const prefers = {\n dark: () => window.matchMedia('(prefers-color-scheme: dark)').matches,\n light: () => window.matchMedia('(prefers-color-scheme: light)').matches,\n custom: (name: string) => window.matchMedia(`(prefers-color-scheme: ${name})`).matches,\n none: () => window.matchMedia('(prefers-color-scheme: no-preference)').matches,\n};\n\nconst LOCAL_PREF_KEY = 'ember-primitives/color-scheme#local-preference';\n\n/**\n * Helper methods for working with the color scheme preference in local storage\n */\nexport const localPreference = {\n isSet: () => Boolean(localPreference.read()),\n read: () => localStorage.getItem(LOCAL_PREF_KEY),\n update: (value: string) => localStorage.setItem(LOCAL_PREF_KEY, value),\n delete: () => localStorage.removeItem(LOCAL_PREF_KEY),\n};\n\n/**\n * For the given element, returns the `color-scheme` of that element.\n */\nexport function getColorScheme(element?: HTMLElement) {\n let style = styleOf(element);\n\n return style.getPropertyValue('color-scheme');\n}\n\nexport function setColorScheme(element: HTMLElement, value: string): void;\nexport function setColorScheme(value: string): void;\n\nexport function setColorScheme(...args: [string] | [HTMLElement, string]): void {\n if (typeof args[0] === 'string') {\n styleOf().setProperty('color-scheme', args[0]);\n\n return;\n }\n\n if (typeof args[1] === 'string') {\n styleOf(args[0]).setProperty('color-scheme', args[1]);\n\n return;\n }\n\n throw new Error(`Invalid arity, expected up to 2 args, received ${args.length}`);\n}\n\n/**\n * Removes the `color-scheme` from the given element\n */\nexport function removeColorScheme(element?: HTMLElement) {\n let style = styleOf(element);\n\n style.removeProperty('color-scheme');\n}\n\nfunction styleOf(element?: HTMLElement) {\n if (element) {\n return element.style;\n }\n\n return document.documentElement.style;\n}\n"],"names":["_colorScheme","cell","callbacks","Set","runCallbacks","theme","Promise","resolve","callback","values","colorScheme","update","value","current","waitForPromise","on","add","off","delete","localPreference","setColorScheme","sync","isSet","pref","read","prefers","dark","light","window","matchMedia","matches","custom","name","none","LOCAL_PREF_KEY","Boolean","localStorage","getItem","setItem","removeItem","getColorScheme","element","style","styleOf","getPropertyValue","args","setProperty","Error","length","removeColorScheme","removeProperty","document","documentElement"],"mappings":"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"}
1
+ {"version":3,"file":"color-scheme.js","sources":["../src/color-scheme.ts"],"sourcesContent":["import { waitForPromise } from '@ember/test-waiters';\n\nimport { cell } from 'ember-resources';\n\nconst _colorScheme = cell<string | undefined>();\n\nlet callbacks: Set<(colorScheme: string) => void> = new Set();\n\nasync function runCallbacks(theme: string) {\n await Promise.resolve();\n\n for (let callback of callbacks.values()) {\n callback(theme);\n }\n}\n\n/**\n * Object for managing the color scheme\n */\nexport const colorScheme = {\n /**\n * Set's the current color scheme to the passed value\n */\n update: (value: string) => {\n colorScheme.current = value;\n\n waitForPromise(runCallbacks(value));\n },\n\n on: {\n /**\n * register a function to be called when the color scheme changes.\n */\n update: (callback: (colorScheme: string) => void) => {\n callbacks.add(callback);\n },\n },\n off: {\n /**\n * unregister a function that would have been called when the color scheme changes.\n */\n update: (callback: (colorScheme: string) => void) => {\n callbacks.delete(callback);\n },\n },\n\n /**\n * the current valuel of the \"color scheme\"\n */\n get current(): string | undefined {\n return _colorScheme.current;\n },\n set current(value: string | undefined) {\n _colorScheme.current = value;\n\n if (!value) {\n localPreference.delete();\n\n return;\n }\n\n localPreference.update(value);\n setColorScheme(value);\n },\n};\n\n/**\n * Synchronizes state of `colorScheme` with the users preferences as well as reconciles with previously set theme in local storage.\n *\n * This may only be called once per app.\n */\nexport function sync() {\n /**\n * reset the callbacks\n */\n callbacks = new Set();\n\n /**\n * If local prefs are set, then we don't care what prefers-color-scheme is\n */\n if (localPreference.isSet()) {\n let pref = localPreference.read();\n\n if (pref === 'dark') {\n setColorScheme('dark');\n\n _colorScheme.current = 'dark';\n\n return;\n }\n\n setColorScheme('light');\n _colorScheme.current = 'light';\n\n return;\n }\n\n if (prefers.dark()) {\n setColorScheme('dark');\n _colorScheme.current = 'dark';\n } else if (prefers.light()) {\n setColorScheme('light');\n _colorScheme.current = 'light';\n }\n}\n\n/**\n * Helper methods to determining what the user's preferred color scheme is\n */\nexport const prefers = {\n dark: () => window.matchMedia('(prefers-color-scheme: dark)').matches,\n light: () => window.matchMedia('(prefers-color-scheme: light)').matches,\n custom: (name: string) => window.matchMedia(`(prefers-color-scheme: ${name})`).matches,\n none: () => window.matchMedia('(prefers-color-scheme: no-preference)').matches,\n};\n\nconst LOCAL_PREF_KEY = 'ember-primitives/color-scheme#local-preference';\n\n/**\n * Helper methods for working with the color scheme preference in local storage\n */\nexport const localPreference = {\n isSet: () => Boolean(localPreference.read()),\n read: () => localStorage.getItem(LOCAL_PREF_KEY),\n update: (value: string) => localStorage.setItem(LOCAL_PREF_KEY, value),\n delete: () => localStorage.removeItem(LOCAL_PREF_KEY),\n};\n\n/**\n * For the given element, returns the `color-scheme` of that element.\n */\nexport function getColorScheme(element?: HTMLElement) {\n let style = styleOf(element);\n\n return style.getPropertyValue('color-scheme');\n}\n\nexport function setColorScheme(element: HTMLElement, value: string): void;\nexport function setColorScheme(value: string): void;\n\nexport function setColorScheme(...args: [string] | [HTMLElement, string]): void {\n if (typeof args[0] === 'string') {\n styleOf().setProperty('color-scheme', args[0]);\n\n return;\n }\n\n if (typeof args[1] === 'string') {\n styleOf(args[0]).setProperty('color-scheme', args[1]);\n\n return;\n }\n\n throw new Error(`Invalid arity, expected up to 2 args, received ${args.length}`);\n}\n\n/**\n * Removes the `color-scheme` from the given element\n */\nexport function removeColorScheme(element?: HTMLElement) {\n let style = styleOf(element);\n\n style.removeProperty('color-scheme');\n}\n\nfunction styleOf(element?: HTMLElement) {\n if (element) {\n return element.style;\n }\n\n return document.documentElement.style;\n}\n"],"names":["_colorScheme","cell","callbacks","Set","runCallbacks","theme","Promise","resolve","callback","values","colorScheme","update","value","current","waitForPromise","on","add","off","delete","localPreference","setColorScheme","sync","isSet","pref","read","prefers","dark","light","window","matchMedia","matches","custom","name","none","LOCAL_PREF_KEY","Boolean","localStorage","getItem","setItem","removeItem","getColorScheme","element","style","styleOf","getPropertyValue","args","setProperty","Error","length","removeColorScheme","removeProperty","document","documentElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sources":["../../../src/components/one-time-password/input.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { warn } from '@ember/debug';\nimport { isDestroyed, isDestroying } from '@ember/destroyable';\nimport { on } from '@ember/modifier';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { autoAdvance, getCollectiveValue, handleNavigation, handlePaste, selectAll } from './utils.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nconst DEFAULT_LENGTH = 6;\nfunction labelFor(inputIndex1: number, labelFn1: undefined | ((index: number) => string)) {\n if (labelFn1) {\n return labelFn1(inputIndex1);\n }\n return `Please enter OTP character ${inputIndex1 + 1}`;\n}\nlet waiter = buildWaiter('ember-primitives:OTPInput:handleChange');\nconst Fields: TOC<{\n /**\n * Any attributes passed to this component will be applied to each input.\n */ Element: HTMLInputElement;\n Args: {\n fields: unknown[];\n labelFn: (index: number) => string;\n handleChange: (event: Event) => void;\n };\n}> = template(`\n {{#each @fields as |_field i|}}\n <label>\n <span class=\"ember-primitives__sr-only\">{{labelFor i @labelFn}}</span>\n <input\n name=\"code{{i}}\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"off\"\n ...attributes\n {{on \"click\" selectAll}}\n {{on \"paste\" handlePaste}}\n {{on \"input\" autoAdvance}}\n {{on \"input\" @handleChange}}\n {{on \"keydown\" handleNavigation}}\n />\n </label>\n {{/each}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport class OTPInput extends Component<{\n /**\n * The collection of individual OTP inputs are contained by a fieldset.\n * Applying the `disabled` attribute to this fieldset will disable\n * all of the inputs, if that's desired.\n */ Element: HTMLFieldSetElement;\n Args: {\n /**\n * How many characters the one-time-password field should be\n * Defaults to 6\n */ length?: number;\n /**\n * To Customize the label of the input fields, you may pass a function.\n * By default, this is `Please enter OTP character ${index + 1}`.\n */ labelFn?: (index: number) => string;\n /**\n * If passed, this function will be called when the <Input> changes.\n * All fields are considered one input.\n */ onChange?: (data: {\n /**\n * The text from the collective `<Input>`\n *\n * `code` _may_ be shorter than `length`\n * if the user has not finished typing / pasting their code\n */ code: string;\n /**\n * will be `true` if `code`'s length matches the passed `@length` or the default of 6\n */ complete: boolean;\n }, /**\n * The last input event received\n */ event: Event) => void;\n };\n Blocks: {\n /**\n * Optionally, you may control how the Fields are rendered, with proceeding text,\n * additional attributes added, etc.\n *\n * This is how you can add custom validation to each input field.\n */ default?: [fields: WithBoundArgs<typeof Fields, 'fields' | 'handleChange' | 'labelFn'>];\n };\n}> {\n /**\n * This is debounced, because we bind to each input,\n * but only want to emit one change event if someone pastes\n * multiple characters\n */ handleChange = (event1: Event)=>{\n if (!this.args.onChange) return;\n if (!this.#token) {\n this.#token = waiter.beginAsync();\n }\n if (this.#frame) {\n cancelAnimationFrame(this.#frame);\n }\n // We use requestAnimationFrame to be friendly to rendering.\n // We don't know if onChange is going to want to cause paints\n // (it's also how we debounce, under the assumption that \"paste\" behavior\n // would be fast enough to be quicker than individual frames\n // (see logic in autoAdvance)\n // )\n this.#frame = requestAnimationFrame(()=>{\n waiter.endAsync(this.#token);\n if (isDestroyed(this) || isDestroying(this)) return;\n if (!this.args.onChange) return;\n let value1 = getCollectiveValue(event1.target, this.length);\n if (value1 === undefined) {\n warn(`Value could not be determined for the OTP field. was it removed from the DOM?`, {\n id: 'ember-primitives.OTPInput.missing-value'\n });\n return;\n }\n this.args.onChange({\n code: value1,\n complete: value1.length === this.length\n }, event1);\n });\n };\n #token: unknown | undefined;\n #frame: number | undefined;\n get length() {\n return this.args.length ?? DEFAULT_LENGTH;\n }\n get fields() {\n // We only need to iterate a number of times,\n // so we don't care about the actual value or\n // referential integrity here\n return new Array(this.length);\n }\n static{\n template(`\n <fieldset ...attributes>\n {{#let\n (component Fields fields=this.fields handleChange=this.handleChange labelFn=@labelFn)\n as |CurriedFields|\n }}\n {{#if (has-block)}}\n {{yield CurriedFields}}\n {{else}}\n <CurriedFields />\n {{/if}}\n {{/let}}\n\n <style>\n .ember-primitives__sr-only { position: absolute; width: 1px; height: 1px; padding: 0;\n margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width:\n 0; }\n </style>\n </fieldset>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9vbmUtdGltZS1wYXNzd29yZC9pbnB1dC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBpc0Rlc3Ryb3llZCwgaXNEZXN0cm95aW5nIH0gZnJvbSAnQGVtYmVyL2Rlc3Ryb3lhYmxlJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcbmltcG9ydCB7IGJ1aWxkV2FpdGVyIH0gZnJvbSAnQGVtYmVyL3Rlc3Qtd2FpdGVycyc7XG5cbmltcG9ydCB7XG4gIGF1dG9BZHZhbmNlLFxuICBnZXRDb2xsZWN0aXZlVmFsdWUsXG4gIGhhbmRsZU5hdmlnYXRpb24sXG4gIGhhbmRsZVBhc3RlLFxuICBzZWxlY3RBbGwsXG59IGZyb20gJy4vdXRpbHMudHMnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5jb25zdCBERUZBVUxUX0xFTkdUSCA9IDY7XG5cbmZ1bmN0aW9uIGxhYmVsRm9yKGlucHV0SW5kZXg6IG51bWJlciwgbGFiZWxGbjogdW5kZWZpbmVkIHwgKChpbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpKSB7XG4gIGlmIChsYWJlbEZuKSB7XG4gICAgcmV0dXJuIGxhYmVsRm4oaW5wdXRJbmRleCk7XG4gIH1cblxuICByZXR1cm4gYFBsZWFzZSBlbnRlciBPVFAgY2hhcmFjdGVyICR7aW5wdXRJbmRleCArIDF9YDtcbn1cblxubGV0IHdhaXRlciA9IGJ1aWxkV2FpdGVyKCdlbWJlci1wcmltaXRpdmVzOk9UUElucHV0OmhhbmRsZUNoYW5nZScpO1xuXG5jb25zdCBGaWVsZHM6IFRPQzx7XG4gIC8qKlxuICAgKiBBbnkgYXR0cmlidXRlcyBwYXNzZWQgdG8gdGhpcyBjb21wb25lbnQgd2lsbCBiZSBhcHBsaWVkIHRvIGVhY2ggaW5wdXQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgZmllbGRzOiB1bmtub3duW107XG4gICAgbGFiZWxGbjogKGluZGV4OiBudW1iZXIpID0-IHN0cmluZztcbiAgICBoYW5kbGVDaGFuZ2U6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG4gIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAge3sjZWFjaCBAZmllbGRzIGFzIHxfZmllbGQgaXx9fVxuICAgIDxsYWJlbD5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3Itb25seVwiPnt7bGFiZWxGb3IgaSBAbGFiZWxGbn19PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIG5hbWU9XCJjb2Rle3tpfX1cIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgIHt7b24gXCJjbGlja1wiIHNlbGVjdEFsbH19XG4gICAgICAgIHt7b24gXCJwYXN0ZVwiIGhhbmRsZVBhc3RlfX1cbiAgICAgICAge3tvbiBcImlucHV0XCIgYXV0b0FkdmFuY2V9fVxuICAgICAgICB7e29uIFwiaW5wdXRcIiBAaGFuZGxlQ2hhbmdlfX1cbiAgICAgICAge3tvbiBcImtleWRvd25cIiBoYW5kbGVOYXZpZ2F0aW9ufX1cbiAgICAgIC8-XG4gICAgPC9sYWJlbD5cbiAge3svZWFjaH19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGNsYXNzIE9UUElucHV0IGV4dGVuZHMgQ29tcG9uZW50PHtcbiAgLyoqXG4gICAqIFRoZSBjb2xsZWN0aW9uIG9mIGluZGl2aWR1YWwgT1RQIGlucHV0cyBhcmUgY29udGFpbmVkIGJ5IGEgZmllbGRzZXQuXG4gICAqIEFwcGx5aW5nIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSB0byB0aGlzIGZpZWxkc2V0IHdpbGwgZGlzYWJsZVxuICAgKiBhbGwgb2YgdGhlIGlucHV0cywgaWYgdGhhdCdzIGRlc2lyZWQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MRmllbGRTZXRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogSG93IG1hbnkgY2hhcmFjdGVycyB0aGUgb25lLXRpbWUtcGFzc3dvcmQgZmllbGQgc2hvdWxkIGJlXG4gICAgICogRGVmYXVsdHMgdG8gNlxuICAgICAqL1xuICAgIGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRvIEN1c3RvbWl6ZSB0aGUgbGFiZWwgb2YgdGhlIGlucHV0IGZpZWxkcywgeW91IG1heSBwYXNzIGEgZnVuY3Rpb24uXG4gICAgICogQnkgZGVmYXVsdCwgdGhpcyBpcyBgUGxlYXNlIGVudGVyIE9UUCBjaGFyYWN0ZXIgJHtpbmRleCArIDF9YC5cbiAgICAgKi9cbiAgICBsYWJlbEZuPzogKGluZGV4OiBudW1iZXIpID0-IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElmIHBhc3NlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSA8SW5wdXQ-IGNoYW5nZXMuXG4gICAgICogQWxsIGZpZWxkcyBhcmUgY29uc2lkZXJlZCBvbmUgaW5wdXQuXG4gICAgICovXG4gICAgb25DaGFuZ2U_OiAoXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGV4dCBmcm9tIHRoZSBjb2xsZWN0aXZlIGA8SW5wdXQ-YFxuICAgICAgICAgKlxuICAgICAgICAgKiBgY29kZWAgX21heV8gYmUgc2hvcnRlciB0aGFuIGBsZW5ndGhgXG4gICAgICAgICAqIGlmIHRoZSB1c2VyIGhhcyBub3QgZmluaXNoZWQgdHlwaW5nIC8gcGFzdGluZyB0aGVpciBjb2RlXG4gICAgICAgICAqL1xuICAgICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aWxsIGJlIGB0cnVlYCBpZiBgY29kZWAncyBsZW5ndGggbWF0Y2hlcyB0aGUgcGFzc2VkIGBAbGVuZ3RoYCBvciB0aGUgZGVmYXVsdCBvZiA2XG4gICAgICAgICAqL1xuICAgICAgICBjb21wbGV0ZTogYm9vbGVhbjtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsYXN0IGlucHV0IGV2ZW50IHJlY2VpdmVkXG4gICAgICAgKi9cbiAgICAgIGV2ZW50OiBFdmVudFxuICAgICkgPT4gdm9pZDtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxseSwgeW91IG1heSBjb250cm9sIGhvdyB0aGUgRmllbGRzIGFyZSByZW5kZXJlZCwgd2l0aCBwcm9jZWVkaW5nIHRleHQsXG4gICAgICogYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGFkZGVkLCBldGMuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGhvdyB5b3UgY2FuIGFkZCBjdXN0b20gdmFsaWRhdGlvbiB0byBlYWNoIGlucHV0IGZpZWxkLlxuICAgICAqL1xuICAgIGRlZmF1bHQ_OiBbZmllbGRzOiBXaXRoQm91bmRBcmdzPHR5cGVvZiBGaWVsZHMsICdmaWVsZHMnIHwgJ2hhbmRsZUNoYW5nZScgfCAnbGFiZWxGbic-XTtcbiAgfTtcbn0-IHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgZGVib3VuY2VkLCBiZWNhdXNlIHdlIGJpbmQgdG8gZWFjaCBpbnB1dCxcbiAgICogYnV0IG9ubHkgd2FudCB0byBlbWl0IG9uZSBjaGFuZ2UgZXZlbnQgaWYgc29tZW9uZSBwYXN0ZXNcbiAgICogbXVsdGlwbGUgY2hhcmFjdGVyc1xuICAgKi9cbiAgaGFuZGxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy5hcmdzLm9uQ2hhbmdlKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuI3Rva2VuKSB7XG4gICAgICB0aGlzLiN0b2tlbiA9IHdhaXRlci5iZWdpbkFzeW5jKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI2ZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLiNmcmFtZSk7XG4gICAgfVxuXG4gICAgLy8gV2UgIHVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gYmUgZnJpZW5kbHkgdG8gcmVuZGVyaW5nLlxuICAgIC8vIFdlIGRvbid0IGtub3cgaWYgb25DaGFuZ2UgaXMgZ29pbmcgdG8gd2FudCB0byBjYXVzZSBwYWludHNcbiAgICAvLyAoaXQncyBhbHNvIGhvdyB3ZSBkZWJvdW5jZSwgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBcInBhc3RlXCIgYmVoYXZpb3JcbiAgICAvLyAgd291bGQgYmUgZmFzdCBlbm91Z2ggdG8gYmUgcXVpY2tlciB0aGFuIGluZGl2aWR1YWwgZnJhbWVzXG4gICAgLy8gICAoc2VlIGxvZ2ljIGluIGF1dG9BZHZhbmNlKVxuICAgIC8vICApXG4gICAgdGhpcy4jZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2FpdGVyLmVuZEFzeW5jKHRoaXMuI3Rva2VuKTtcblxuICAgICAgaWYgKGlzRGVzdHJveWVkKHRoaXMpIHx8IGlzRGVzdHJveWluZyh0aGlzKSkgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLmFyZ3Mub25DaGFuZ2UpIHJldHVybjtcblxuICAgICAgbGV0IHZhbHVlID0gZ2V0Q29sbGVjdGl2ZVZhbHVlKGV2ZW50LnRhcmdldCwgdGhpcy5sZW5ndGgpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJuKGBWYWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgdGhlIE9UUCBmaWVsZC4gd2FzIGl0IHJlbW92ZWQgZnJvbSB0aGUgRE9NP2AsIHtcbiAgICAgICAgICBpZDogJ2VtYmVyLXByaW1pdGl2ZXMuT1RQSW5wdXQubWlzc2luZy12YWx1ZScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hcmdzLm9uQ2hhbmdlKHsgY29kZTogdmFsdWUsIGNvbXBsZXRlOiB2YWx1ZS5sZW5ndGggPT09IHRoaXMubGVuZ3RoIH0sIGV2ZW50KTtcbiAgICB9KTtcbiAgfTtcblxuICAjdG9rZW46IHVua25vd24gfCB1bmRlZmluZWQ7XG4gICNmcmFtZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJncy5sZW5ndGggPz8gREVGQVVMVF9MRU5HVEg7XG4gIH1cblxuICBnZXQgZmllbGRzKCkge1xuICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpdGVyYXRlIGEgbnVtYmVyIG9mIHRpbWVzLFxuICAgIC8vIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCB2YWx1ZSBvclxuICAgIC8vIHJlZmVyZW50aWFsIGludGVncml0eSBoZXJlXG4gICAgcmV0dXJuIG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPGZpZWxkc2V0IC4uLmF0dHJpYnV0ZXM-XG4gICAgICB7eyNsZXRcbiAgICAgICAgKGNvbXBvbmVudCBGaWVsZHMgZmllbGRzPXRoaXMuZmllbGRzIGhhbmRsZUNoYW5nZT10aGlzLmhhbmRsZUNoYW5nZSBsYWJlbEZuPUBsYWJlbEZuKVxuICAgICAgICBhcyB8Q3VycmllZEZpZWxkc3xcbiAgICAgIH19XG4gICAgICAgIHt7I2lmIChoYXMtYmxvY2spfX1cbiAgICAgICAgICB7e3lpZWxkIEN1cnJpZWRGaWVsZHN9fVxuICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgIDxDdXJyaWVkRmllbGRzIC8-XG4gICAgICAgIHt7L2lmfX1cbiAgICAgIHt7L2xldH19XG5cbiAgICAgIDxzdHlsZT5cbiAgICAgICAgLmVtYmVyLXByaW1pdGl2ZXNfX3NyLW9ubHkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IC0xcHg7IG92ZXJmbG93OiBoaWRkZW47IGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGJvcmRlci13aWR0aDpcbiAgICAgICAgMDsgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsSUFBSSxRQUFRLGVBQWU7QUFDcEMsU0FBUyxXQUFXLEVBQUUsWUFBWSxRQUFRLHFCQUFxQjtBQUMvRCxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFDckMsU0FBUyxXQUFXLFFBQVEsc0JBQXNCO0FBRWxELFNBQ0UsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLFNBQVMsUUFDSixhQUFhO0FBRXBCLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7QUFFckQsTUFBTSxpQkFBaUI7QUFFdkIsU0FBUyxTQUFTLGFBQVksTUFBTSxFQUFFLFVBQVMsU0FBUyxLQUFLLE9BQU8sTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNwRixJQUFJLFVBQVM7UUFDWCxPQUFPLFNBQVE7SUFDakI7SUFFQSxPQUFPLENBQUMsMkJBQTJCLEVBQUUsY0FBYSxFQUFFLENBQUM7QUFDdkQ7QUFFQSxJQUFJLFNBQVMsWUFBWTtBQUV6QixNQUFNLFFBQVE7SUFDWjs7R0FFQyxHQUNELFNBQVM7SUFDVDtRQUNFLFFBQVEsT0FBTztRQUNmLFVBQVUsT0FBTyxNQUFNLEtBQUssTUFBTTtRQUNsQyxlQUFl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"],"names":["DEFAULT_LENGTH","labelFor","inputIndex1","labelFn1","waiter","buildWaiter","Fields","precompileTemplate","strictMode","scope","on","selectAll","handlePaste","autoAdvance","handleNavigation","templateOnly","OTPInput","Component","handleChange","event1","args","onChange","beginAsync","cancelAnimationFrame","requestAnimationFrame","endAsync","isDestroyed","isDestroying","value1","getCollectiveValue","target","length","undefined","warn","id","code","complete","fields","Array","setComponentTemplate"],"mappings":";;;;;;;;;;AAiBA,MAAMA,cAAA,GAAiB,CAAA,CAAA;AAEvB,SAASC,QAAAA,CAASC,WAAkB,EAAEC,QAAgD,EAAA;AACpF,EAAA,IAAIA,QAAA,EAAS;IACX,OAAOA,QAAA,CAAQD,WAAA,CAAA,CAAA;AACjB,GAAA;AAEA,EAAA,OAAQ,CAA6BA,2BAAAA,EAAAA,WAAA,GAAa,CAAE,CAAC,CAAA,CAAA;AACvD,CAAA;AAEA,IAAIE,MAAA,GAASC,WAAA,CAAY,wCAAA,CAAA,CAAA;AAEzB,MAAMC,SAUDC,oBAAAA,CAAAA,kBAAA,CAkBL,kaAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,WAAA;AAAAC,IAAAA,gBAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAEH,MAAMC,QAAA,SAAiBC,SAAA;AAsD5B;;;;;AAKAC,EAAAA,YAAA,GAAgBC,MAAO,IAAA;AACrB,IAAA,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE,OAAA;AAEzB,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,MAAA,IAAI,CAAC,MAAM,GAAGjB,MAAA,CAAOkB,UAAU,EAAA,CAAA;AACjC,KAAA;AAEA,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACfC,MAAAA,oBAAA,CAAqB,IAAI,CAAC,MAAM,CAAA,CAAA;AAClC,KAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,MAAM,GAAGC,qBAAA,CAAsB,MAAA;AAClCpB,MAAAA,MAAA,CAAOqB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA,CAAA;AAE3B,MAAA,IAAIC,WAAA,CAAY,IAAI,KAAKC,YAAA,CAAa,IAAI,CAAG,EAAA,OAAA;AAC7C,MAAA,IAAI,CAAC,IAAI,CAACP,IAAI,CAACC,QAAQ,EAAE,OAAA;MAEzB,IAAIO,MAAA,GAAQC,kBAAA,CAAmBV,MAAA,CAAMW,MAAM,EAAE,IAAI,CAACC,MAAM,CAAA,CAAA;MAExD,IAAIH,MAAA,KAAUI,SAAA,EAAW;QACvBC,IAAA,CAAM,+EAA8E,EAAE;AACpFC,UAAAA,EAAA,EAAI,yCAAA;AACN,SAAA,CAAA,CAAA;AAEA,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAI,CAACd,IAAI,CAACC,QAAQ,CAAC;AAAEc,QAAAA,IAAA,EAAMP,MAAA;AAAOQ,QAAAA,QAAA,EAAUR,MAAA,CAAMG,MAAM,KAAK,IAAI,CAACA,MAAAA;AAAO,OAAA,EAAGZ,MAAA,CAAA,CAAA;AAC9E,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEA,EAAA,MAAM,CAAA;AACN,EAAA,MAAM,CAAA;AAEN,EAAA,IAAIY,SAAS;AACX,IAAA,OAAO,IAAI,CAACX,IAAI,CAACW,MAAM,IAAI/B,cAAA,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAIqC,SAAS;AACX;AACA;AACA;AACA,IAAA,OAAO,IAAIC,KAAA,CAAM,IAAI,CAACP,MAAM,CAAA,CAAA;AAC9B,GAAA;AAEA,EAAA;IAAAQ,oBAAA,CAAAhC,kBAAA,CAmBA,gjBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAH,QAAAA,MAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"input.js","sources":["../../../src/components/one-time-password/input.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { warn } from '@ember/debug';\nimport { isDestroyed, isDestroying } from '@ember/destroyable';\nimport { on } from '@ember/modifier';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { autoAdvance, getCollectiveValue, handleNavigation, handlePaste, selectAll } from './utils.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nconst DEFAULT_LENGTH = 6;\nfunction labelFor(inputIndex1: number, labelFn1: undefined | ((index: number) => string)) {\n if (labelFn1) {\n return labelFn1(inputIndex1);\n }\n return `Please enter OTP character ${inputIndex1 + 1}`;\n}\nlet waiter = buildWaiter('ember-primitives:OTPInput:handleChange');\nconst Fields: TOC<{\n /**\n * Any attributes passed to this component will be applied to each input.\n */ Element: HTMLInputElement;\n Args: {\n fields: unknown[];\n labelFn: (index: number) => string;\n handleChange: (event: Event) => void;\n };\n}> = template(`\n {{#each @fields as |_field i|}}\n <label>\n <span class=\"ember-primitives__sr-only\">{{labelFor i @labelFn}}</span>\n <input\n name=\"code{{i}}\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"off\"\n ...attributes\n {{on \"click\" selectAll}}\n {{on \"paste\" handlePaste}}\n {{on \"input\" autoAdvance}}\n {{on \"input\" @handleChange}}\n {{on \"keydown\" handleNavigation}}\n />\n </label>\n {{/each}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport class OTPInput extends Component<{\n /**\n * The collection of individual OTP inputs are contained by a fieldset.\n * Applying the `disabled` attribute to this fieldset will disable\n * all of the inputs, if that's desired.\n */ Element: HTMLFieldSetElement;\n Args: {\n /**\n * How many characters the one-time-password field should be\n * Defaults to 6\n */ length?: number;\n /**\n * To Customize the label of the input fields, you may pass a function.\n * By default, this is `Please enter OTP character ${index + 1}`.\n */ labelFn?: (index: number) => string;\n /**\n * If passed, this function will be called when the <Input> changes.\n * All fields are considered one input.\n */ onChange?: (data: {\n /**\n * The text from the collective `<Input>`\n *\n * `code` _may_ be shorter than `length`\n * if the user has not finished typing / pasting their code\n */ code: string;\n /**\n * will be `true` if `code`'s length matches the passed `@length` or the default of 6\n */ complete: boolean;\n }, /**\n * The last input event received\n */ event: Event) => void;\n };\n Blocks: {\n /**\n * Optionally, you may control how the Fields are rendered, with proceeding text,\n * additional attributes added, etc.\n *\n * This is how you can add custom validation to each input field.\n */ default?: [fields: WithBoundArgs<typeof Fields, 'fields' | 'handleChange' | 'labelFn'>];\n };\n}> {\n /**\n * This is debounced, because we bind to each input,\n * but only want to emit one change event if someone pastes\n * multiple characters\n */ handleChange = (event1: Event)=>{\n if (!this.args.onChange) return;\n if (!this.#token) {\n this.#token = waiter.beginAsync();\n }\n if (this.#frame) {\n cancelAnimationFrame(this.#frame);\n }\n // We use requestAnimationFrame to be friendly to rendering.\n // We don't know if onChange is going to want to cause paints\n // (it's also how we debounce, under the assumption that \"paste\" behavior\n // would be fast enough to be quicker than individual frames\n // (see logic in autoAdvance)\n // )\n this.#frame = requestAnimationFrame(()=>{\n waiter.endAsync(this.#token);\n if (isDestroyed(this) || isDestroying(this)) return;\n if (!this.args.onChange) return;\n let value1 = getCollectiveValue(event1.target, this.length);\n if (value1 === undefined) {\n warn(`Value could not be determined for the OTP field. was it removed from the DOM?`, {\n id: 'ember-primitives.OTPInput.missing-value'\n });\n return;\n }\n this.args.onChange({\n code: value1,\n complete: value1.length === this.length\n }, event1);\n });\n };\n #token: unknown | undefined;\n #frame: number | undefined;\n get length() {\n return this.args.length ?? DEFAULT_LENGTH;\n }\n get fields() {\n // We only need to iterate a number of times,\n // so we don't care about the actual value or\n // referential integrity here\n return new Array(this.length);\n }\n static{\n template(`\n <fieldset ...attributes>\n {{#let\n (component Fields fields=this.fields handleChange=this.handleChange labelFn=@labelFn)\n as |CurriedFields|\n }}\n {{#if (has-block)}}\n {{yield CurriedFields}}\n {{else}}\n <CurriedFields />\n {{/if}}\n {{/let}}\n\n <style>\n .ember-primitives__sr-only { position: absolute; width: 1px; height: 1px; padding: 0;\n margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width:\n 0; }\n </style>\n </fieldset>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9vbmUtdGltZS1wYXNzd29yZC9pbnB1dC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBpc0Rlc3Ryb3llZCwgaXNEZXN0cm95aW5nIH0gZnJvbSAnQGVtYmVyL2Rlc3Ryb3lhYmxlJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcbmltcG9ydCB7IGJ1aWxkV2FpdGVyIH0gZnJvbSAnQGVtYmVyL3Rlc3Qtd2FpdGVycyc7XG5cbmltcG9ydCB7XG4gIGF1dG9BZHZhbmNlLFxuICBnZXRDb2xsZWN0aXZlVmFsdWUsXG4gIGhhbmRsZU5hdmlnYXRpb24sXG4gIGhhbmRsZVBhc3RlLFxuICBzZWxlY3RBbGwsXG59IGZyb20gJy4vdXRpbHMudHMnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5jb25zdCBERUZBVUxUX0xFTkdUSCA9IDY7XG5cbmZ1bmN0aW9uIGxhYmVsRm9yKGlucHV0SW5kZXg6IG51bWJlciwgbGFiZWxGbjogdW5kZWZpbmVkIHwgKChpbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpKSB7XG4gIGlmIChsYWJlbEZuKSB7XG4gICAgcmV0dXJuIGxhYmVsRm4oaW5wdXRJbmRleCk7XG4gIH1cblxuICByZXR1cm4gYFBsZWFzZSBlbnRlciBPVFAgY2hhcmFjdGVyICR7aW5wdXRJbmRleCArIDF9YDtcbn1cblxubGV0IHdhaXRlciA9IGJ1aWxkV2FpdGVyKCdlbWJlci1wcmltaXRpdmVzOk9UUElucHV0OmhhbmRsZUNoYW5nZScpO1xuXG5jb25zdCBGaWVsZHM6IFRPQzx7XG4gIC8qKlxuICAgKiBBbnkgYXR0cmlidXRlcyBwYXNzZWQgdG8gdGhpcyBjb21wb25lbnQgd2lsbCBiZSBhcHBsaWVkIHRvIGVhY2ggaW5wdXQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgZmllbGRzOiB1bmtub3duW107XG4gICAgbGFiZWxGbjogKGluZGV4OiBudW1iZXIpID0-IHN0cmluZztcbiAgICBoYW5kbGVDaGFuZ2U6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG4gIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAge3sjZWFjaCBAZmllbGRzIGFzIHxfZmllbGQgaXx9fVxuICAgIDxsYWJlbD5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3Itb25seVwiPnt7bGFiZWxGb3IgaSBAbGFiZWxGbn19PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIG5hbWU9XCJjb2Rle3tpfX1cIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgIHt7b24gXCJjbGlja1wiIHNlbGVjdEFsbH19XG4gICAgICAgIHt7b24gXCJwYXN0ZVwiIGhhbmRsZVBhc3RlfX1cbiAgICAgICAge3tvbiBcImlucHV0XCIgYXV0b0FkdmFuY2V9fVxuICAgICAgICB7e29uIFwiaW5wdXRcIiBAaGFuZGxlQ2hhbmdlfX1cbiAgICAgICAge3tvbiBcImtleWRvd25cIiBoYW5kbGVOYXZpZ2F0aW9ufX1cbiAgICAgIC8-XG4gICAgPC9sYWJlbD5cbiAge3svZWFjaH19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGNsYXNzIE9UUElucHV0IGV4dGVuZHMgQ29tcG9uZW50PHtcbiAgLyoqXG4gICAqIFRoZSBjb2xsZWN0aW9uIG9mIGluZGl2aWR1YWwgT1RQIGlucHV0cyBhcmUgY29udGFpbmVkIGJ5IGEgZmllbGRzZXQuXG4gICAqIEFwcGx5aW5nIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSB0byB0aGlzIGZpZWxkc2V0IHdpbGwgZGlzYWJsZVxuICAgKiBhbGwgb2YgdGhlIGlucHV0cywgaWYgdGhhdCdzIGRlc2lyZWQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MRmllbGRTZXRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogSG93IG1hbnkgY2hhcmFjdGVycyB0aGUgb25lLXRpbWUtcGFzc3dvcmQgZmllbGQgc2hvdWxkIGJlXG4gICAgICogRGVmYXVsdHMgdG8gNlxuICAgICAqL1xuICAgIGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRvIEN1c3RvbWl6ZSB0aGUgbGFiZWwgb2YgdGhlIGlucHV0IGZpZWxkcywgeW91IG1heSBwYXNzIGEgZnVuY3Rpb24uXG4gICAgICogQnkgZGVmYXVsdCwgdGhpcyBpcyBgUGxlYXNlIGVudGVyIE9UUCBjaGFyYWN0ZXIgJHtpbmRleCArIDF9YC5cbiAgICAgKi9cbiAgICBsYWJlbEZuPzogKGluZGV4OiBudW1iZXIpID0-IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElmIHBhc3NlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSA8SW5wdXQ-IGNoYW5nZXMuXG4gICAgICogQWxsIGZpZWxkcyBhcmUgY29uc2lkZXJlZCBvbmUgaW5wdXQuXG4gICAgICovXG4gICAgb25DaGFuZ2U_OiAoXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGV4dCBmcm9tIHRoZSBjb2xsZWN0aXZlIGA8SW5wdXQ-YFxuICAgICAgICAgKlxuICAgICAgICAgKiBgY29kZWAgX21heV8gYmUgc2hvcnRlciB0aGFuIGBsZW5ndGhgXG4gICAgICAgICAqIGlmIHRoZSB1c2VyIGhhcyBub3QgZmluaXNoZWQgdHlwaW5nIC8gcGFzdGluZyB0aGVpciBjb2RlXG4gICAgICAgICAqL1xuICAgICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aWxsIGJlIGB0cnVlYCBpZiBgY29kZWAncyBsZW5ndGggbWF0Y2hlcyB0aGUgcGFzc2VkIGBAbGVuZ3RoYCBvciB0aGUgZGVmYXVsdCBvZiA2XG4gICAgICAgICAqL1xuICAgICAgICBjb21wbGV0ZTogYm9vbGVhbjtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsYXN0IGlucHV0IGV2ZW50IHJlY2VpdmVkXG4gICAgICAgKi9cbiAgICAgIGV2ZW50OiBFdmVudFxuICAgICkgPT4gdm9pZDtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxseSwgeW91IG1heSBjb250cm9sIGhvdyB0aGUgRmllbGRzIGFyZSByZW5kZXJlZCwgd2l0aCBwcm9jZWVkaW5nIHRleHQsXG4gICAgICogYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGFkZGVkLCBldGMuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGhvdyB5b3UgY2FuIGFkZCBjdXN0b20gdmFsaWRhdGlvbiB0byBlYWNoIGlucHV0IGZpZWxkLlxuICAgICAqL1xuICAgIGRlZmF1bHQ_OiBbZmllbGRzOiBXaXRoQm91bmRBcmdzPHR5cGVvZiBGaWVsZHMsICdmaWVsZHMnIHwgJ2hhbmRsZUNoYW5nZScgfCAnbGFiZWxGbic-XTtcbiAgfTtcbn0-IHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgZGVib3VuY2VkLCBiZWNhdXNlIHdlIGJpbmQgdG8gZWFjaCBpbnB1dCxcbiAgICogYnV0IG9ubHkgd2FudCB0byBlbWl0IG9uZSBjaGFuZ2UgZXZlbnQgaWYgc29tZW9uZSBwYXN0ZXNcbiAgICogbXVsdGlwbGUgY2hhcmFjdGVyc1xuICAgKi9cbiAgaGFuZGxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy5hcmdzLm9uQ2hhbmdlKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuI3Rva2VuKSB7XG4gICAgICB0aGlzLiN0b2tlbiA9IHdhaXRlci5iZWdpbkFzeW5jKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI2ZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLiNmcmFtZSk7XG4gICAgfVxuXG4gICAgLy8gV2UgIHVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gYmUgZnJpZW5kbHkgdG8gcmVuZGVyaW5nLlxuICAgIC8vIFdlIGRvbid0IGtub3cgaWYgb25DaGFuZ2UgaXMgZ29pbmcgdG8gd2FudCB0byBjYXVzZSBwYWludHNcbiAgICAvLyAoaXQncyBhbHNvIGhvdyB3ZSBkZWJvdW5jZSwgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBcInBhc3RlXCIgYmVoYXZpb3JcbiAgICAvLyAgd291bGQgYmUgZmFzdCBlbm91Z2ggdG8gYmUgcXVpY2tlciB0aGFuIGluZGl2aWR1YWwgZnJhbWVzXG4gICAgLy8gICAoc2VlIGxvZ2ljIGluIGF1dG9BZHZhbmNlKVxuICAgIC8vICApXG4gICAgdGhpcy4jZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2FpdGVyLmVuZEFzeW5jKHRoaXMuI3Rva2VuKTtcblxuICAgICAgaWYgKGlzRGVzdHJveWVkKHRoaXMpIHx8IGlzRGVzdHJveWluZyh0aGlzKSkgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLmFyZ3Mub25DaGFuZ2UpIHJldHVybjtcblxuICAgICAgbGV0IHZhbHVlID0gZ2V0Q29sbGVjdGl2ZVZhbHVlKGV2ZW50LnRhcmdldCwgdGhpcy5sZW5ndGgpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJuKGBWYWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgdGhlIE9UUCBmaWVsZC4gd2FzIGl0IHJlbW92ZWQgZnJvbSB0aGUgRE9NP2AsIHtcbiAgICAgICAgICBpZDogJ2VtYmVyLXByaW1pdGl2ZXMuT1RQSW5wdXQubWlzc2luZy12YWx1ZScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hcmdzLm9uQ2hhbmdlKHsgY29kZTogdmFsdWUsIGNvbXBsZXRlOiB2YWx1ZS5sZW5ndGggPT09IHRoaXMubGVuZ3RoIH0sIGV2ZW50KTtcbiAgICB9KTtcbiAgfTtcblxuICAjdG9rZW46IHVua25vd24gfCB1bmRlZmluZWQ7XG4gICNmcmFtZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJncy5sZW5ndGggPz8gREVGQVVMVF9MRU5HVEg7XG4gIH1cblxuICBnZXQgZmllbGRzKCkge1xuICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpdGVyYXRlIGEgbnVtYmVyIG9mIHRpbWVzLFxuICAgIC8vIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCB2YWx1ZSBvclxuICAgIC8vIHJlZmVyZW50aWFsIGludGVncml0eSBoZXJlXG4gICAgcmV0dXJuIG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPGZpZWxkc2V0IC4uLmF0dHJpYnV0ZXM-XG4gICAgICB7eyNsZXRcbiAgICAgICAgKGNvbXBvbmVudCBGaWVsZHMgZmllbGRzPXRoaXMuZmllbGRzIGhhbmRsZUNoYW5nZT10aGlzLmhhbmRsZUNoYW5nZSBsYWJlbEZuPUBsYWJlbEZuKVxuICAgICAgICBhcyB8Q3VycmllZEZpZWxkc3xcbiAgICAgIH19XG4gICAgICAgIHt7I2lmIChoYXMtYmxvY2spfX1cbiAgICAgICAgICB7e3lpZWxkIEN1cnJpZWRGaWVsZHN9fVxuICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgIDxDdXJyaWVkRmllbGRzIC8-XG4gICAgICAgIHt7L2lmfX1cbiAgICAgIHt7L2xldH19XG5cbiAgICAgIDxzdHlsZT5cbiAgICAgICAgLmVtYmVyLXByaW1pdGl2ZXNfX3NyLW9ubHkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IC0xcHg7IG92ZXJmbG93OiBoaWRkZW47IGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGJvcmRlci13aWR0aDpcbiAgICAgICAgMDsgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsSUFBSSxRQUFRLGVBQWU7QUFDcEMsU0FBUyxXQUFXLEVBQUUsWUFBWSxRQUFRLHFCQUFxQjtBQUMvRCxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFDckMsU0FBUyxXQUFXLFFBQVEsc0JBQXNCO0FBRWxELFNBQ0UsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLFNBQVMsUUFDSixhQUFhO0FBRXBCLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7QUFFckQsTUFBTSxpQkFBaUI7QUFFdkIsU0FBUyxTQUFTLGFBQVksTUFBTSxFQUFFLFVBQVMsU0FBUyxLQUFLLE9BQU8sTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNwRixJQUFJLFVBQVM7UUFDWCxPQUFPLFNBQVE7SUFDakI7SUFFQSxPQUFPLENBQUMsMkJBQTJCLEVBQUUsY0FBYSxFQUFFLENBQUM7QUFDdkQ7QUFFQSxJQUFJLFNBQVMsWUFBWTtBQUV6QixNQUFNLFFBQVE7SUFDWjs7R0FFQyxHQUNELFNBQVM7SUFDVDtRQUNFLFFBQVEsT0FBTztRQUNmLFVBQVUsT0FBTyxNQUFNLEtBQUssTUFBTTtRQUNsQyxlQUFl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"],"names":["DEFAULT_LENGTH","labelFor","inputIndex1","labelFn1","waiter","buildWaiter","Fields","precompileTemplate","strictMode","scope","on","selectAll","handlePaste","autoAdvance","handleNavigation","templateOnly","OTPInput","Component","handleChange","event1","args","onChange","beginAsync","cancelAnimationFrame","requestAnimationFrame","endAsync","isDestroyed","isDestroying","value1","getCollectiveValue","target","length","undefined","warn","id","code","complete","fields","Array","setComponentTemplate"],"mappings":";;;;;;;;;;AAiBA,MAAMA,cAAA,GAAiB,CAAA,CAAA;AAEvB,SAASC,QAAAA,CAASC,WAAkB,EAAEC,QAAgD,EAAA;AACpF,EAAA,IAAIA,QAAA,EAAS;IACX,OAAOA,QAAA,CAAQD,WAAA,CAAA,CAAA;AACjB,GAAA;EAEA,OAAO,CAAA,2BAAA,EAA8BA,WAAA,GAAa,CAAG,CAAA,CAAA,CAAA;AACvD,CAAA;AAEA,IAAIE,MAAA,GAASC,WAAA,CAAY,wCAAA,CAAA,CAAA;AAEzB,MAAMC,SAUDC,oBAAAA,CAAAA,kBAAA,CAkBL,kaAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,WAAA;AAAAC,IAAAA,gBAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAEH,MAAMC,QAAA,SAAiBC,SAAA;AAsD5B;;;;;AAKAC,EAAAA,YAAA,GAAgBC,MAAO,IAAA;AACrB,IAAA,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE,OAAA;AAEzB,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,MAAA,IAAI,CAAC,MAAM,GAAGjB,MAAA,CAAOkB,UAAU,EAAA,CAAA;AACjC,KAAA;AAEA,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACfC,MAAAA,oBAAA,CAAqB,IAAI,CAAC,MAAM,CAAA,CAAA;AAClC,KAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,MAAM,GAAGC,qBAAA,CAAsB,MAAA;AAClCpB,MAAAA,MAAA,CAAOqB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA,CAAA;AAE3B,MAAA,IAAIC,WAAA,CAAY,IAAI,KAAKC,YAAA,CAAa,IAAI,CAAG,EAAA,OAAA;AAC7C,MAAA,IAAI,CAAC,IAAI,CAACP,IAAI,CAACC,QAAQ,EAAE,OAAA;MAEzB,IAAIO,MAAA,GAAQC,kBAAA,CAAmBV,MAAA,CAAMW,MAAM,EAAE,IAAI,CAACC,MAAM,CAAA,CAAA;MAExD,IAAIH,MAAA,KAAUI,SAAA,EAAW;QACvBC,IAAA,CAAK,+EAA+E,EAAE;AACpFC,UAAAA,EAAA,EAAI,yCAAA;AACN,SAAA,CAAA,CAAA;AAEA,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAI,CAACd,IAAI,CAACC,QAAQ,CAAC;AAAEc,QAAAA,IAAA,EAAMP,MAAA;AAAOQ,QAAAA,QAAA,EAAUR,MAAA,CAAMG,MAAM,KAAK,IAAI,CAACA,MAAAA;AAAO,OAAA,EAAGZ,MAAA,CAAA,CAAA;AAC9E,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEA,EAAA,MAAM,CAAA;AACN,EAAA,MAAM,CAAA;AAEN,EAAA,IAAIY,SAAS;AACX,IAAA,OAAO,IAAI,CAACX,IAAI,CAACW,MAAM,IAAI/B,cAAA,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAIqC,SAAS;AACX;AACA;AACA;AACA,IAAA,OAAO,IAAIC,KAAA,CAAM,IAAI,CAACP,MAAM,CAAA,CAAA;AAC9B,GAAA;AAEA,EAAA;IAAAQ,oBAAA,CAAAhC,kBAAA,CAmBA,gjBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAH,QAAAA,MAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/one-time-password/utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nfunction getInputs(current: HTMLInputElement) {\n let fieldset = current.closest('fieldset');\n\n assert('[BUG]: fieldset went missing', fieldset);\n\n return [...fieldset.querySelectorAll('input')];\n}\n\nfunction nextInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex + 1];\n}\n\nexport function selectAll(event: Event) {\n let target = event.target;\n\n assert(`selectAll is only meant for use with input elements`, target instanceof HTMLInputElement);\n\n target.select();\n}\n\nexport function handlePaste(event: Event) {\n let target = event.target;\n\n assert(\n `handlePaste is only meant for use with input elements`,\n target instanceof HTMLInputElement\n );\n\n let clipboardData = (event as ClipboardEvent).clipboardData;\n\n assert(\n `Could not get clipboardData while handling the paste event on OTP. Please report this issue on the ember-primitives repo with a reproduction. Thanks!`,\n clipboardData\n );\n\n // This is typically not good to prevent paste.\n // But because of the UX we're implementing,\n // we want to split the pasted value across\n // multiple text fields\n event.preventDefault();\n\n let value = clipboardData.getData('Text');\n const digits = value;\n let i = 0;\n let currElement: HTMLInputElement | null = target;\n\n while (currElement) {\n currElement.value = digits[i++] || '';\n\n let next = nextInput(currElement);\n\n if (next instanceof HTMLInputElement) {\n currElement = next;\n } else {\n break;\n }\n }\n\n // We want to select the first field again\n // so that if someone holds paste, or\n // pastes again, they get the same result.\n target.select();\n}\n\nexport function handleNavigation(event: KeyboardEvent) {\n switch (event.key) {\n case 'Backspace':\n return handleBackspace(event);\n case 'ArrowLeft':\n return focusLeft(event);\n case 'ArrowRight':\n return focusRight(event);\n }\n}\n\nfunction focusLeft(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = previousInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nfunction focusRight(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = nextInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nconst syntheticEvent = new InputEvent('input');\n\nfunction handleBackspace(event: KeyboardEvent) {\n if (event.key !== 'Backspace') return;\n\n /**\n * We have to prevent default because we\n * - want to clear the whole field\n * - have the focus behavior keep up with the key-repeat\n * speed of the user's computer\n */\n event.preventDefault();\n\n let target = event.target;\n\n if (target && 'value' in target) {\n if (target.value === '') {\n focusLeft({ target });\n } else {\n target.value = '';\n }\n }\n\n target?.dispatchEvent(syntheticEvent);\n}\n\nfunction previousInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex - 1];\n}\n\nexport const autoAdvance = (event: Event) => {\n assert(\n '[BUG]: autoAdvance called on non-input element',\n event.target instanceof HTMLInputElement\n );\n\n let value = event.target.value;\n\n if (value.length === 0) return;\n\n if (value.length > 0) {\n if ('data' in event && event.data && typeof event.data === 'string') {\n event.target.value = event.data;\n }\n\n return focusRight(event);\n }\n};\n\nexport function getCollectiveValue(elementTarget: EventTarget | null, length: number) {\n if (!elementTarget) return;\n\n assert(\n `[BUG]: somehow the element target is not HTMLElement`,\n elementTarget instanceof HTMLElement\n );\n\n let parent: null | HTMLElement | ShadowRoot;\n\n // TODO: should this logic be extracted?\n // why is getting the target element within a shadow root hard?\n if (!(elementTarget instanceof HTMLInputElement)) {\n if (elementTarget.shadowRoot) {\n parent = elementTarget.shadowRoot;\n } else {\n parent = elementTarget.closest('fieldset');\n }\n } else {\n parent = elementTarget.closest('fieldset');\n }\n\n assert(`[BUG]: somehow the input fields were rendered without a parent element`, parent);\n\n let elements = parent.querySelectorAll('input');\n\n let value = '';\n\n assert(\n `found elements (${elements.length}) do not match length (${length}). Was the same OTP input rendered more than once?`,\n elements.length === length\n );\n\n for (let element of elements) {\n assert(\n '[BUG]: how did the queried elements become a non-input element?',\n element instanceof HTMLInputElement\n );\n value += element.value;\n }\n\n return value;\n}\n"],"names":["getInputs","current","fieldset","closest","assert","querySelectorAll","nextInput","inputs","currentIndex","indexOf","selectAll","event","target","HTMLInputElement","select","handlePaste","clipboardData","preventDefault","value","getData","digits","i","currElement","next","handleNavigation","key","handleBackspace","focusLeft","focusRight","input","previousInput","focus","requestAnimationFrame","syntheticEvent","InputEvent","dispatchEvent","autoAdvance","length","data","getCollectiveValue","elementTarget","HTMLElement","parent","shadowRoot","elements","element"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/components/one-time-password/utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nfunction getInputs(current: HTMLInputElement) {\n let fieldset = current.closest('fieldset');\n\n assert('[BUG]: fieldset went missing', fieldset);\n\n return [...fieldset.querySelectorAll('input')];\n}\n\nfunction nextInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex + 1];\n}\n\nexport function selectAll(event: Event) {\n let target = event.target;\n\n assert(`selectAll is only meant for use with input elements`, target instanceof HTMLInputElement);\n\n target.select();\n}\n\nexport function handlePaste(event: Event) {\n let target = event.target;\n\n assert(\n `handlePaste is only meant for use with input elements`,\n target instanceof HTMLInputElement\n );\n\n let clipboardData = (event as ClipboardEvent).clipboardData;\n\n assert(\n `Could not get clipboardData while handling the paste event on OTP. Please report this issue on the ember-primitives repo with a reproduction. Thanks!`,\n clipboardData\n );\n\n // This is typically not good to prevent paste.\n // But because of the UX we're implementing,\n // we want to split the pasted value across\n // multiple text fields\n event.preventDefault();\n\n let value = clipboardData.getData('Text');\n const digits = value;\n let i = 0;\n let currElement: HTMLInputElement | null = target;\n\n while (currElement) {\n currElement.value = digits[i++] || '';\n\n let next = nextInput(currElement);\n\n if (next instanceof HTMLInputElement) {\n currElement = next;\n } else {\n break;\n }\n }\n\n // We want to select the first field again\n // so that if someone holds paste, or\n // pastes again, they get the same result.\n target.select();\n}\n\nexport function handleNavigation(event: KeyboardEvent) {\n switch (event.key) {\n case 'Backspace':\n return handleBackspace(event);\n case 'ArrowLeft':\n return focusLeft(event);\n case 'ArrowRight':\n return focusRight(event);\n }\n}\n\nfunction focusLeft(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = previousInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nfunction focusRight(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = nextInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nconst syntheticEvent = new InputEvent('input');\n\nfunction handleBackspace(event: KeyboardEvent) {\n if (event.key !== 'Backspace') return;\n\n /**\n * We have to prevent default because we\n * - want to clear the whole field\n * - have the focus behavior keep up with the key-repeat\n * speed of the user's computer\n */\n event.preventDefault();\n\n let target = event.target;\n\n if (target && 'value' in target) {\n if (target.value === '') {\n focusLeft({ target });\n } else {\n target.value = '';\n }\n }\n\n target?.dispatchEvent(syntheticEvent);\n}\n\nfunction previousInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex - 1];\n}\n\nexport const autoAdvance = (event: Event) => {\n assert(\n '[BUG]: autoAdvance called on non-input element',\n event.target instanceof HTMLInputElement\n );\n\n let value = event.target.value;\n\n if (value.length === 0) return;\n\n if (value.length > 0) {\n if ('data' in event && event.data && typeof event.data === 'string') {\n event.target.value = event.data;\n }\n\n return focusRight(event);\n }\n};\n\nexport function getCollectiveValue(elementTarget: EventTarget | null, length: number) {\n if (!elementTarget) return;\n\n assert(\n `[BUG]: somehow the element target is not HTMLElement`,\n elementTarget instanceof HTMLElement\n );\n\n let parent: null | HTMLElement | ShadowRoot;\n\n // TODO: should this logic be extracted?\n // why is getting the target element within a shadow root hard?\n if (!(elementTarget instanceof HTMLInputElement)) {\n if (elementTarget.shadowRoot) {\n parent = elementTarget.shadowRoot;\n } else {\n parent = elementTarget.closest('fieldset');\n }\n } else {\n parent = elementTarget.closest('fieldset');\n }\n\n assert(`[BUG]: somehow the input fields were rendered without a parent element`, parent);\n\n let elements = parent.querySelectorAll('input');\n\n let value = '';\n\n assert(\n `found elements (${elements.length}) do not match length (${length}). Was the same OTP input rendered more than once?`,\n elements.length === length\n );\n\n for (let element of elements) {\n assert(\n '[BUG]: how did the queried elements become a non-input element?',\n element instanceof HTMLInputElement\n );\n value += element.value;\n }\n\n return value;\n}\n"],"names":["getInputs","current","fieldset","closest","assert","querySelectorAll","nextInput","inputs","currentIndex","indexOf","selectAll","event","target","HTMLInputElement","select","handlePaste","clipboardData","preventDefault","value","getData","digits","i","currElement","next","handleNavigation","key","handleBackspace","focusLeft","focusRight","input","previousInput","focus","requestAnimationFrame","syntheticEvent","InputEvent","dispatchEvent","autoAdvance","length","data","getCollectiveValue","elementTarget","HTMLElement","parent","shadowRoot","elements","element"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sources":["../../src/components/popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport { arrow } from '@floating-ui/dom';\nimport { element } from 'ember-element-helper';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { FloatingUI } from '../floating-ui.ts';\nimport { Portal } from './portal.gts';\nimport { TARGETS } from './portal-targets.gts';\nimport type { Signature as FloatingUiComponentSignature } from '../floating-ui/component.ts';\nimport type { Signature as HookSignature } from '../floating-ui/modifier.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ElementContext, Middleware } from '@floating-ui/dom';\nimport type { ModifierLike, WithBoundArgs } from '@glint/template';\nexport interface Signature {\n Args: {\n /**\n * See the Floating UI's [flip docs](https://floating-ui.com/docs/flip) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ flipOptions?: HookSignature['Args']['Named']['flipOptions'];\n /**\n * Array of one or more objects to add to Floating UI's list of [middleware](https://floating-ui.com/docs/middleware)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ middleware?: HookSignature['Args']['Named']['middleware'];\n /**\n * See the Floating UI's [offset docs](https://floating-ui.com/docs/offset) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ offsetOptions?: HookSignature['Args']['Named']['offsetOptions'];\n /**\n * One of the possible [`placements`](https://floating-ui.com/docs/computeposition#placement). The default is 'bottom'.\n *\n * Possible values are\n * - top\n * - bottom\n * - right\n * - left\n *\n * And may optionally have `-start` or `-end` added to adjust position along the side.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ placement?: `${'top' | 'bottom' | 'left' | 'right'}${'' | '-start' | '-end'}`;\n /**\n * See the Floating UI's [shift docs](https://floating-ui.com/docs/shift) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ shiftOptions?: HookSignature['Args']['Named']['shiftOptions'];\n /**\n * CSS position property, either `fixed` or `absolute`.\n *\n * Pros and cons of each strategy are explained on [Floating UI's Docs](https://floating-ui.com/docs/computePosition#strategy)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ strategy?: HookSignature['Args']['Named']['strategy'];\n /**\n * By default, the popover is portaled.\n * If you don't control your CSS, and the positioning of the popover content\n * is misbehaving, you may pass \"@inline={{true}}\" to opt out of portalling.\n *\n * Inline may also be useful in nested menus, where you know exactly how the nesting occurs\n */ inline?: boolean;\n };\n Blocks: {\n default: [{\n hook: FloatingUiComponentSignature['Blocks']['default'][0]['hook'];\n setHook: FloatingUiComponentSignature['Blocks']['default'][0]['setHook'];\n Content: WithBoundArgs<typeof Content, 'loop'>;\n data: FloatingUiComponentSignature['Blocks']['default'][0]['data'];\n arrow: WithBoundArgs<ModifierLike<AttachArrowSignature>, 'arrowElement' | 'data'>;\n }];\n };\n}\nfunction getElementTag(tagName1: undefined | string) {\n return tagName1 || 'div';\n}\n/**\n * Allows lazy evaluation of the portal target (do nothing until rendered)\n * This is useful because the algorithm for finding the portal target isn't cheap.\n */ const Content: TOC<{\n Element: HTMLDivElement;\n Args: {\n loop: ModifierLike<{\n Element: HTMLElement;\n }>;\n inline?: boolean;\n /**\n * By default the popover content is wrapped in a div.\n * You may change this by supplying the name of an element here.\n *\n * For example:\n * ```gjs\n * <Popover as |p|>\n * <p.Content @as=\"dialog\">\n * this is now focus trapped\n * </p.Content>\n * </Popover>\n * ```\n */ as?: string;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n {{#let (element (getElementTag @as)) as |El|}}\n {{#if @inline}}\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n {{else}}\n <Portal @to={{TARGETS.popover}}>\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n </Portal>\n {{/if}}\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface AttachArrowSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n arrowElement: ReturnType<typeof ArrowElement>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n };\n };\n}\nconst arrowSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\ntype Direction = 'top' | 'bottom' | 'left' | 'right';\ntype Placement = `${Direction}${'' | '-start' | '-end'}`;\nconst attachArrow = eModifier<AttachArrowSignature>((element1, _1: [], named1)=>{\n if (element1 === named1.arrowElement.current) {\n if (!named1.data) return;\n if (!named1.data.middlewareData) return;\n let { arrow: arrow1 } = named1.data.middlewareData;\n let { placement: placement1 } = named1.data;\n if (!arrow1) return;\n if (!placement1) return;\n let { x: arrowX1, y: arrowY1 } = arrow1;\n let otherSide1 = (placement1 as Placement).split('-')[0] as Direction;\n let staticSide1 = arrowSides[otherSide1];\n Object.assign(named1.arrowElement.current.style, {\n left: arrowX1 != null ? `${arrowX1}px` : '',\n top: arrowY1 != null ? `${arrowY1}px` : '',\n right: '',\n bottom: '',\n [staticSide1]: '-4px'\n });\n return;\n }\n (async ()=>{\n await Promise.resolve();\n named1.arrowElement.set(element1);\n })();\n});\nconst ArrowElement: () => ReturnType<typeof cell> = ()=>cell<HTMLElement>();\nfunction maybeAddArrow(middleware1: Middleware[] | undefined, element1: Element | undefined) {\n let result1 = [\n ...(middleware1 || [])\n ];\n if (element1) {\n result1.push(arrow({\n element: element1\n }));\n }\n return result1;\n}\nfunction flipOptions(options1: HookSignature['Args']['Named']['flipOptions']) {\n return {\n elementContext: 'reference' as ElementContext,\n ...options1\n };\n}\nexport const Popover: TOC<Signature> = template(`\n {{#let (ArrowElement) as |arrowElement|}}\n <FloatingUI\n @placement={{@placement}}\n @strategy={{@strategy}}\n @middleware={{maybeAddArrow @middleware arrowElement.current}}\n @flipOptions={{flipOptions @flipOptions}}\n @shiftOptions={{@shiftOptions}}\n @offsetOptions={{@offsetOptions}}\n as |fui|\n >\n {{yield\n (hash\n hook=fui.hook\n setHook=fui.setHook\n Content=(component Content loop=fui.loop inline=@inline)\n data=fui.data\n arrow=(modifier attachArrow arrowElement=arrowElement data=fui.data)\n )\n }}\n </FloatingUI>\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Popover;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3BvdmVyLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5cbmltcG9ydCB7IGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAnZW1iZXItZWxlbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgbW9kaWZpZXIgYXMgZU1vZGlmaWVyIH0gZnJvbSAnZW1iZXItbW9kaWZpZXInO1xuaW1wb3J0IHsgY2VsbCB9IGZyb20gJ2VtYmVyLXJlc291cmNlcyc7XG5cbmltcG9ydCB7IEZsb2F0aW5nVUkgfSBmcm9tICcuLi9mbG9hdGluZy11aS50cyc7XG5pbXBvcnQgeyBQb3J0YWwgfSBmcm9tICcuL3BvcnRhbC5ndHMnO1xuaW1wb3J0IHsgVEFSR0VUUyB9IGZyb20gJy4vcG9ydGFsLXRhcmdldHMuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBTaWduYXR1cmUgYXMgRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZSB9IGZyb20gJy4uL2Zsb2F0aW5nLXVpL2NvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNpZ25hdHVyZSBhcyBIb29rU2lnbmF0dXJlIH0gZnJvbSAnLi4vZmxvYXRpbmctdWkvbW9kaWZpZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Q29udGV4dCwgTWlkZGxld2FyZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHR5cGUgeyBNb2RpZmllckxpa2UsIFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBTZWUgdGhlIEZsb2F0aW5nIFVJJ3MgW2ZsaXAgZG9jc10oaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwKSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBmbGlwT3B0aW9ucz86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnZmxpcE9wdGlvbnMnXTtcbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBvbmUgb3IgbW9yZSBvYmplY3RzIHRvIGFkZCB0byBGbG9hdGluZyBVSSdzIGxpc3Qgb2YgW21pZGRsZXdhcmVdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvbWlkZGxld2FyZSlcbiAgICAgKlxuICAgICAqIFRoaXMgYXJndW1lbnQgaXMgZm9yd2FyZGVkIHRvIGBlbWJlci12ZWxjcm9gJ3MgYDxWZWxjcm8-YCBjb21wb25lbnQuXG4gICAgICovXG4gICAgbWlkZGxld2FyZT86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnbWlkZGxld2FyZSddO1xuICAgIC8qKlxuICAgICAqIFNlZSB0aGUgRmxvYXRpbmcgVUkncyBbb2Zmc2V0IGRvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0KSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvZmZzZXRPcHRpb25zPzogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydvZmZzZXRPcHRpb25zJ107XG4gICAgLyoqXG4gICAgICogT25lIG9mIHRoZSBwb3NzaWJsZSBbYHBsYWNlbWVudHNgXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2NvbXB1dGVwb3NpdGlvbiNwbGFjZW1lbnQpLiBUaGUgZGVmYXVsdCBpcyAnYm90dG9tJy5cbiAgICAgKlxuICAgICAqIFBvc3NpYmxlIHZhbHVlcyBhcmVcbiAgICAgKiAtIHRvcFxuICAgICAqIC0gYm90dG9tXG4gICAgICogLSByaWdodFxuICAgICAqIC0gbGVmdFxuICAgICAqXG4gICAgICogQW5kIG1heSBvcHRpb25hbGx5IGhhdmUgYC1zdGFydGAgb3IgYC1lbmRgIGFkZGVkIHRvIGFkanVzdCBwb3NpdGlvbiBhbG9uZyB0aGUgc2lkZS5cbiAgICAgKlxuICAgICAqIFRoaXMgYXJndW1lbnQgaXMgZm9yd2FyZGVkIHRvIGBlbWJlci12ZWxjcm9gJ3MgYDxWZWxjcm8-YCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcGxhY2VtZW50PzogYCR7J3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCd9JHsnJyB8ICctc3RhcnQnIHwgJy1lbmQnfWA7XG4gICAgLyoqXG4gICAgICogU2VlIHRoZSBGbG9hdGluZyBVSSdzIFtzaGlmdCBkb2NzXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0KSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzaGlmdE9wdGlvbnM_OiBIb29rU2lnbmF0dXJlWydBcmdzJ11bJ05hbWVkJ11bJ3NoaWZ0T3B0aW9ucyddO1xuICAgIC8qKlxuICAgICAqIENTUyBwb3NpdGlvbiBwcm9wZXJ0eSwgZWl0aGVyIGBmaXhlZGAgb3IgYGFic29sdXRlYC5cbiAgICAgKlxuICAgICAqIFByb3MgYW5kIGNvbnMgb2YgZWFjaCBzdHJhdGVneSBhcmUgZXhwbGFpbmVkIG9uIFtGbG9hdGluZyBVSSdzIERvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvY29tcHV0ZVBvc2l0aW9uI3N0cmF0ZWd5KVxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzdHJhdGVneT86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnc3RyYXRlZ3knXTtcblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBwb3BvdmVyIGlzIHBvcnRhbGVkLlxuICAgICAqIElmIHlvdSBkb24ndCBjb250cm9sIHlvdXIgQ1NTLCBhbmQgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBwb3BvdmVyIGNvbnRlbnRcbiAgICAgKiBpcyBtaXNiZWhhdmluZywgeW91IG1heSBwYXNzIFwiQGlubGluZT17e3RydWV9fVwiIHRvIG9wdCBvdXQgb2YgcG9ydGFsbGluZy5cbiAgICAgKlxuICAgICAqIElubGluZSBtYXkgYWxzbyBiZSB1c2VmdWwgaW4gbmVzdGVkIG1lbnVzLCB3aGVyZSB5b3Uga25vdyBleGFjdGx5IGhvdyB0aGUgbmVzdGluZyBvY2N1cnNcbiAgICAgKi9cbiAgICBpbmxpbmU_OiBib29sZWFuO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIGhvb2s6IEZsb2F0aW5nVWlDb21wb25lbnRTaWduYXR1cmVbJ0Jsb2NrcyddWydkZWZhdWx0J11bMF1bJ2hvb2snXTtcbiAgICAgICAgc2V0SG9vazogRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZVsnQmxvY2tzJ11bJ2RlZmF1bHQnXVswXVsnc2V0SG9vayddO1xuICAgICAgICBDb250ZW50OiBXaXRoQm91bmRBcmdzPHR5cGVvZiBDb250ZW50LCAnbG9vcCc-O1xuICAgICAgICBkYXRhOiBGbG9hdGluZ1VpQ29tcG9uZW50U2lnbmF0dXJlWydCbG9ja3MnXVsnZGVmYXVsdCddWzBdWydkYXRhJ107XG4gICAgICAgIGFycm93OiBXaXRoQm91bmRBcmdzPE1vZGlmaWVyTGlrZTxBdHRhY2hBcnJvd1NpZ25hdHVyZT4sICdhcnJvd0VsZW1lbnQnIHwgJ2RhdGEnPjtcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudFRhZyh0YWdOYW1lOiB1bmRlZmluZWQgfCBzdHJpbmcpIHtcbiAgcmV0dXJuIHRhZ05hbWUgfHwgJ2Rpdic7XG59XG5cbi8qKlxuICogQWxsb3dzIGxhenkgZXZhbHVhdGlvbiBvZiB0aGUgcG9ydGFsIHRhcmdldCAoZG8gbm90aGluZyB1bnRpbCByZW5kZXJlZClcbiAqIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlIGFsZ29yaXRobSBmb3IgZmluZGluZyB0aGUgcG9ydGFsIHRhcmdldCBpc24ndCBjaGVhcC5cbiAqL1xuY29uc3QgQ29udGVudDogVE9DPHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICBsb29wOiBNb2RpZmllckxpa2U8eyBFbGVtZW50OiBIVE1MRWxlbWVudCB9PjtcbiAgICBpbmxpbmU_OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHBvcG92ZXIgY29udGVudCBpcyB3cmFwcGVkIGluIGEgZGl2LlxuICAgICAqIFlvdSBtYXkgY2hhbmdlIHRoaXMgYnkgc3VwcGx5aW5nIHRoZSBuYW1lIG9mIGFuIGVsZW1lbnQgaGVyZS5cbiAgICAgKlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqIGBgYGdqc1xuICAgICAqIDxQb3BvdmVyIGFzIHxwfD5cbiAgICAgKiAgPHAuQ29udGVudCBAYXM9XCJkaWFsb2dcIj5cbiAgICAgKiAgICB0aGlzIGlzIG5vdyBmb2N1cyB0cmFwcGVkXG4gICAgICogIDwvcC5Db250ZW50PlxuICAgICAqIDwvUG9wb3Zlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBhcz86IHN0cmluZztcbiAgfTtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChlbGVtZW50IChnZXRFbGVtZW50VGFnIEBhcykpIGFzIHxFbHx9fVxuICAgIHt7I2lmIEBpbmxpbmV9fVxuICAgICAge3shIEBnbGludC1pZ25vcmVcbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90aWxkZWlvL2VtYmVyLWVsZW1lbnQtaGVscGVyL2lzc3Vlcy85MVxuICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3R5cGVkLWVtYmVyL2dsaW50L2lzc3Vlcy82MTBcbiAgICAgIH19XG4gICAgICA8RWwge3tAbG9vcH19IC4uLmF0dHJpYnV0ZXM-XG4gICAgICAgIHt7eWllbGR9fVxuICAgICAgPC9FbD5cbiAgICB7e2Vsc2V9fVxuICAgICAgPFBvcnRhbCBAdG89e3tUQVJHRVRTLnBvcG92ZXJ9fT5cbiAgICAgICAge3shIEBnbGludC1pZ25vcmVcbiAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RpbGRlaW8vZW1iZXItZWxlbWVudC1oZWxwZXIvaXNzdWVzLzkxXG4gICAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlZC1lbWJlci9nbGludC9pc3N1ZXMvNjEwXG4gICAgICAgIH19XG4gICAgICAgIDxFbCB7e0Bsb29wfX0gLi4uYXR0cmlidXRlcz5cbiAgICAgICAgICB7e3lpZWxkfX1cbiAgICAgICAgPC9FbD5cbiAgICAgIDwvUG9ydGFsPlxuICAgIHt7L2lmfX1cbiAge3svbGV0fX1cbjwvdGVtcGxhdGU-O1xuXG5pbnRlcmZhY2UgQXR0YWNoQXJyb3dTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgQXJnczoge1xuICAgIE5hbWVkOiB7XG4gICAgICBhcnJvd0VsZW1lbnQ6IFJldHVyblR5cGU8dHlwZW9mIEFycm93RWxlbWVudD47XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgZGF0YT86IGFueTtcbiAgICB9O1xuICB9O1xufVxuXG5jb25zdCBhcnJvd1NpZGVzID0ge1xuICB0b3A6ICdib3R0b20nLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICBsZWZ0OiAncmlnaHQnLFxufTtcblxudHlwZSBEaXJlY3Rpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbnR5cGUgUGxhY2VtZW50ID0gYCR7RGlyZWN0aW9ufSR7JycgfCAnLXN0YXJ0JyB8ICctZW5kJ31gO1xuXG5jb25zdCBhdHRhY2hBcnJvdyA9IGVNb2RpZmllcjxBdHRhY2hBcnJvd1NpZ25hdHVyZT4oKGVsZW1lbnQsIF86IFtdLCBuYW1lZCkgPT4ge1xuICBpZiAoZWxlbWVudCA9PT0gbmFtZWQuYXJyb3dFbGVtZW50LmN1cnJlbnQpIHtcbiAgICBpZiAoIW5hbWVkLmRhdGEpIHJldHVybjtcbiAgICBpZiAoIW5hbWVkLmRhdGEubWlkZGxld2FyZURhdGEpIHJldHVybjtcblxuICAgIGxldCB7IGFycm93IH0gPSBuYW1lZC5kYXRhLm1pZGRsZXdhcmVEYXRhO1xuICAgIGxldCB7IHBsYWNlbWVudCB9ID0gbmFtZWQuZGF0YTtcblxuICAgIGlmICghYXJyb3cpIHJldHVybjtcbiAgICBpZiAoIXBsYWNlbWVudCkgcmV0dXJuO1xuXG4gICAgbGV0IHsgeDogYXJyb3dYLCB5OiBhcnJvd1kgfSA9IGFycm93O1xuICAgIGxldCBvdGhlclNpZGUgPSAocGxhY2VtZW50IGFzIFBsYWNlbWVudCkuc3BsaXQoJy0nKVswXSBhcyBEaXJlY3Rpb247XG4gICAgbGV0IHN0YXRpY1NpZGUgPSBhcnJvd1NpZGVzW290aGVyU2lkZV07XG5cbiAgICBPYmplY3QuYXNzaWduKG5hbWVkLmFycm93RWxlbWVudC5jdXJyZW50LnN0eWxlLCB7XG4gICAgICBsZWZ0OiBhcnJvd1ggIT0gbnVsbCA_IGAke2Fycm93WH1weGAgOiAnJyxcbiAgICAgIHRvcDogYXJyb3dZICE9IG51bGwgPyBgJHthcnJvd1l9cHhgIDogJycsXG4gICAgICByaWdodDogJycsXG4gICAgICBib3R0b206ICcnLFxuICAgICAgW3N0YXRpY1NpZGVdOiAnLTRweCcsXG4gICAgfSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIG5hbWVkLmFycm93RWxlbWVudC5zZXQoZWxlbWVudCk7XG4gIH0pKCk7XG59KTtcblxuY29uc3QgQXJyb3dFbGVtZW50OiAoKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBjZWxsPEhUTUxFbGVtZW50Pj4gPSAoKSA9PiBjZWxsPEhUTUxFbGVtZW50PigpO1xuXG5mdW5jdGlvbiBtYXliZUFkZEFycm93KG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVbXSB8IHVuZGVmaW5lZCwgZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuICBsZXQgcmVzdWx0ID0gWy4uLihtaWRkbGV3YXJlIHx8IFtdKV07XG5cbiAgaWYgKGVsZW1lbnQpIHtcbiAgICByZXN1bHQucHVzaChhcnJvdyh7IGVsZW1lbnQgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZmxpcE9wdGlvbnMob3B0aW9uczogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydmbGlwT3B0aW9ucyddKSB7XG4gIHJldHVybiB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnIGFzIEVsZW1lbnRDb250ZXh0LFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBQb3BvdmVyOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChBcnJvd0VsZW1lbnQpIGFzIHxhcnJvd0VsZW1lbnR8fX1cbiAgICA8RmxvYXRpbmdVSVxuICAgICAgQHBsYWNlbWVudD17e0BwbGFjZW1lbnR9fVxuICAgICAgQHN0cmF0ZWd5PXt7QHN0cmF0ZWd5fX1cbiAgICAgIEBtaWRkbGV3YXJlPXt7bWF5YmVBZGRBcnJvdyBAbWlkZGxld2FyZSBhcnJvd0VsZW1lbnQuY3VycmVudH19XG4gICAgICBAZmxpcE9wdGlvbnM9e3tmbGlwT3B0aW9ucyBAZmxpcE9wdGlvbnN9fVxuICAgICAgQHNoaWZ0T3B0aW9ucz17e0BzaGlmdE9wdGlvbnN9fVxuICAgICAgQG9mZnNldE9wdGlvbnM9e3tAb2Zmc2V0T3B0aW9uc319XG4gICAgICBhcyB8ZnVpfFxuICAgID5cbiAgICAgIHt7eWllbGRcbiAgICAgICAgKGhhc2hcbiAgICAgICAgICBob29rPWZ1aS5ob29rXG4gICAgICAgICAgc2V0SG9vaz1mdWkuc2V0SG9va1xuICAgICAgICAgIENvbnRlbnQ9KGNvbXBvbmVudCBDb250ZW50IGxvb3A9ZnVpLmxvb3AgaW5saW5lPUBpbmxpbmUpXG4gICAgICAgICAgZGF0YT1mdWkuZGF0YVxuICAgICAgICAgIGFycm93PShtb2RpZmllciBhdHRhY2hBcnJvdyBhcnJvd0VsZW1lbnQ9YXJyb3dFbGVtZW50IGRhdGE9ZnVpLmRhdGEpXG4gICAgICAgIClcbiAgICAgIH19XG4gICAgPC9GbG9hdGluZ1VJPlxuICB7ey9sZXR9fVxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFBvcG92ZXI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUVyQyxTQUFTLEtBQUssUUFBUSxtQkFBbUI7QUFDekMsU0FBUyxPQUFPLFFBQVEsdUJBQXVCO0FBQy9DLFNBQVMsWUFBWSxTQUFTLFFBQVEsaUJBQWlCO0FBQ3ZELFNBQVMsSUFBSSxRQUFRLGtCQUFrQjtBQUV2QyxTQUFTLFVBQVUsUUFBUSxvQkFBb0I7QUFDL0MsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLE9BQU8sUUFBUSx1QkFBdUI7QUFFL0MsY0FBYyxhQUFhLDRCQUE0QixRQUFRLDhCQUE4QjtB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"],"names":["getElementTag","tagName1","Content","precompileTemplate","strictMode","scope","element","Portal","TARGETS","templateOnly","arrowSides","top","right","bottom","left","attachArrow","eModifier","element1","_1","named1","arrowElement","current","data","middlewareData","arrow","arrow1","placement","placement1","x","arrowX1","y","arrowY1","otherSide1","split","staticSide1","Object","assign","style","Promise","resolve","set","ArrowElement","cell","maybeAddArrow","middleware1","result1","push","flipOptions","options1","elementContext","Popover","setComponentTemplate","FloatingUI","hash"],"mappings":"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"}
1
+ {"version":3,"file":"popover.js","sources":["../../src/components/popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport { arrow } from '@floating-ui/dom';\nimport { element } from 'ember-element-helper';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { FloatingUI } from '../floating-ui.ts';\nimport { Portal } from './portal.gts';\nimport { TARGETS } from './portal-targets.gts';\nimport type { Signature as FloatingUiComponentSignature } from '../floating-ui/component.ts';\nimport type { Signature as HookSignature } from '../floating-ui/modifier.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ElementContext, Middleware } from '@floating-ui/dom';\nimport type { ModifierLike, WithBoundArgs } from '@glint/template';\nexport interface Signature {\n Args: {\n /**\n * See the Floating UI's [flip docs](https://floating-ui.com/docs/flip) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ flipOptions?: HookSignature['Args']['Named']['flipOptions'];\n /**\n * Array of one or more objects to add to Floating UI's list of [middleware](https://floating-ui.com/docs/middleware)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ middleware?: HookSignature['Args']['Named']['middleware'];\n /**\n * See the Floating UI's [offset docs](https://floating-ui.com/docs/offset) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ offsetOptions?: HookSignature['Args']['Named']['offsetOptions'];\n /**\n * One of the possible [`placements`](https://floating-ui.com/docs/computeposition#placement). The default is 'bottom'.\n *\n * Possible values are\n * - top\n * - bottom\n * - right\n * - left\n *\n * And may optionally have `-start` or `-end` added to adjust position along the side.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ placement?: `${'top' | 'bottom' | 'left' | 'right'}${'' | '-start' | '-end'}`;\n /**\n * See the Floating UI's [shift docs](https://floating-ui.com/docs/shift) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ shiftOptions?: HookSignature['Args']['Named']['shiftOptions'];\n /**\n * CSS position property, either `fixed` or `absolute`.\n *\n * Pros and cons of each strategy are explained on [Floating UI's Docs](https://floating-ui.com/docs/computePosition#strategy)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ strategy?: HookSignature['Args']['Named']['strategy'];\n /**\n * By default, the popover is portaled.\n * If you don't control your CSS, and the positioning of the popover content\n * is misbehaving, you may pass \"@inline={{true}}\" to opt out of portalling.\n *\n * Inline may also be useful in nested menus, where you know exactly how the nesting occurs\n */ inline?: boolean;\n };\n Blocks: {\n default: [{\n hook: FloatingUiComponentSignature['Blocks']['default'][0]['hook'];\n setHook: FloatingUiComponentSignature['Blocks']['default'][0]['setHook'];\n Content: WithBoundArgs<typeof Content, 'loop'>;\n data: FloatingUiComponentSignature['Blocks']['default'][0]['data'];\n arrow: WithBoundArgs<ModifierLike<AttachArrowSignature>, 'arrowElement' | 'data'>;\n }];\n };\n}\nfunction getElementTag(tagName1: undefined | string) {\n return tagName1 || 'div';\n}\n/**\n * Allows lazy evaluation of the portal target (do nothing until rendered)\n * This is useful because the algorithm for finding the portal target isn't cheap.\n */ const Content: TOC<{\n Element: HTMLDivElement;\n Args: {\n loop: ModifierLike<{\n Element: HTMLElement;\n }>;\n inline?: boolean;\n /**\n * By default the popover content is wrapped in a div.\n * You may change this by supplying the name of an element here.\n *\n * For example:\n * ```gjs\n * <Popover as |p|>\n * <p.Content @as=\"dialog\">\n * this is now focus trapped\n * </p.Content>\n * </Popover>\n * ```\n */ as?: string;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n {{#let (element (getElementTag @as)) as |El|}}\n {{#if @inline}}\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n {{else}}\n <Portal @to={{TARGETS.popover}}>\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n </Portal>\n {{/if}}\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface AttachArrowSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n arrowElement: ReturnType<typeof ArrowElement>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n };\n };\n}\nconst arrowSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\ntype Direction = 'top' | 'bottom' | 'left' | 'right';\ntype Placement = `${Direction}${'' | '-start' | '-end'}`;\nconst attachArrow = eModifier<AttachArrowSignature>((element1, _1: [], named1)=>{\n if (element1 === named1.arrowElement.current) {\n if (!named1.data) return;\n if (!named1.data.middlewareData) return;\n let { arrow: arrow1 } = named1.data.middlewareData;\n let { placement: placement1 } = named1.data;\n if (!arrow1) return;\n if (!placement1) return;\n let { x: arrowX1, y: arrowY1 } = arrow1;\n let otherSide1 = (placement1 as Placement).split('-')[0] as Direction;\n let staticSide1 = arrowSides[otherSide1];\n Object.assign(named1.arrowElement.current.style, {\n left: arrowX1 != null ? `${arrowX1}px` : '',\n top: arrowY1 != null ? `${arrowY1}px` : '',\n right: '',\n bottom: '',\n [staticSide1]: '-4px'\n });\n return;\n }\n (async ()=>{\n await Promise.resolve();\n named1.arrowElement.set(element1);\n })();\n});\nconst ArrowElement: () => ReturnType<typeof cell> = ()=>cell<HTMLElement>();\nfunction maybeAddArrow(middleware1: Middleware[] | undefined, element1: Element | undefined) {\n let result1 = [\n ...(middleware1 || [])\n ];\n if (element1) {\n result1.push(arrow({\n element: element1\n }));\n }\n return result1;\n}\nfunction flipOptions(options1: HookSignature['Args']['Named']['flipOptions']) {\n return {\n elementContext: 'reference' as ElementContext,\n ...options1\n };\n}\nexport const Popover: TOC<Signature> = template(`\n {{#let (ArrowElement) as |arrowElement|}}\n <FloatingUI\n @placement={{@placement}}\n @strategy={{@strategy}}\n @middleware={{maybeAddArrow @middleware arrowElement.current}}\n @flipOptions={{flipOptions @flipOptions}}\n @shiftOptions={{@shiftOptions}}\n @offsetOptions={{@offsetOptions}}\n as |fui|\n >\n {{yield\n (hash\n hook=fui.hook\n setHook=fui.setHook\n Content=(component Content loop=fui.loop inline=@inline)\n data=fui.data\n arrow=(modifier attachArrow arrowElement=arrowElement data=fui.data)\n )\n }}\n </FloatingUI>\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Popover;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3BvdmVyLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5cbmltcG9ydCB7IGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAnZW1iZXItZWxlbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgbW9kaWZpZXIgYXMgZU1vZGlmaWVyIH0gZnJvbSAnZW1iZXItbW9kaWZpZXInO1xuaW1wb3J0IHsgY2VsbCB9IGZyb20gJ2VtYmVyLXJlc291cmNlcyc7XG5cbmltcG9ydCB7IEZsb2F0aW5nVUkgfSBmcm9tICcuLi9mbG9hdGluZy11aS50cyc7XG5pbXBvcnQgeyBQb3J0YWwgfSBmcm9tICcuL3BvcnRhbC5ndHMnO1xuaW1wb3J0IHsgVEFSR0VUUyB9IGZyb20gJy4vcG9ydGFsLXRhcmdldHMuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBTaWduYXR1cmUgYXMgRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZSB9IGZyb20gJy4uL2Zsb2F0aW5nLXVpL2NvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNpZ25hdHVyZSBhcyBIb29rU2lnbmF0dXJlIH0gZnJvbSAnLi4vZmxvYXRpbmctdWkvbW9kaWZpZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Q29udGV4dCwgTWlkZGxld2FyZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHR5cGUgeyBNb2RpZmllckxpa2UsIFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBTZWUgdGhlIEZsb2F0aW5nIFVJJ3MgW2ZsaXAgZG9jc10oaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwKSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBmbGlwT3B0aW9ucz86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnZmxpcE9wdGlvbnMnXTtcbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBvbmUgb3IgbW9yZSBvYmplY3RzIHRvIGFkZCB0byBGbG9hdGluZyBVSSdzIGxpc3Qgb2YgW21pZGRsZXdhcmVdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvbWlkZGxld2FyZSlcbiAgICAgKlxuICAgICAqIFRoaXMgYXJndW1lbnQgaXMgZm9yd2FyZGVkIHRvIGBlbWJlci12ZWxjcm9gJ3MgYDxWZWxjcm8-YCBjb21wb25lbnQuXG4gICAgICovXG4gICAgbWlkZGxld2FyZT86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnbWlkZGxld2FyZSddO1xuICAgIC8qKlxuICAgICAqIFNlZSB0aGUgRmxvYXRpbmcgVUkncyBbb2Zmc2V0IGRvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0KSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvZmZzZXRPcHRpb25zPzogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydvZmZzZXRPcHRpb25zJ107XG4gICAgLyoqXG4gICAgICogT25lIG9mIHRoZSBwb3NzaWJsZSBbYHBsYWNlbWVudHNgXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2NvbXB1dGVwb3NpdGlvbiNwbGFjZW1lbnQpLiBUaGUgZGVmYXVsdCBpcyAnYm90dG9tJy5cbiAgICAgKlxuICAgICAqIFBvc3NpYmxlIHZhbHVlcyBhcmVcbiAgICAgKiAtIHRvcFxuICAgICAqIC0gYm90dG9tXG4gICAgICogLSByaWdodFxuICAgICAqIC0gbGVmdFxuICAgICAqXG4gICAgICogQW5kIG1heSBvcHRpb25hbGx5IGhhdmUgYC1zdGFydGAgb3IgYC1lbmRgIGFkZGVkIHRvIGFkanVzdCBwb3NpdGlvbiBhbG9uZyB0aGUgc2lkZS5cbiAgICAgKlxuICAgICAqIFRoaXMgYXJndW1lbnQgaXMgZm9yd2FyZGVkIHRvIGBlbWJlci12ZWxjcm9gJ3MgYDxWZWxjcm8-YCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcGxhY2VtZW50PzogYCR7J3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCd9JHsnJyB8ICctc3RhcnQnIHwgJy1lbmQnfWA7XG4gICAgLyoqXG4gICAgICogU2VlIHRoZSBGbG9hdGluZyBVSSdzIFtzaGlmdCBkb2NzXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0KSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzaGlmdE9wdGlvbnM_OiBIb29rU2lnbmF0dXJlWydBcmdzJ11bJ05hbWVkJ11bJ3NoaWZ0T3B0aW9ucyddO1xuICAgIC8qKlxuICAgICAqIENTUyBwb3NpdGlvbiBwcm9wZXJ0eSwgZWl0aGVyIGBmaXhlZGAgb3IgYGFic29sdXRlYC5cbiAgICAgKlxuICAgICAqIFByb3MgYW5kIGNvbnMgb2YgZWFjaCBzdHJhdGVneSBhcmUgZXhwbGFpbmVkIG9uIFtGbG9hdGluZyBVSSdzIERvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvY29tcHV0ZVBvc2l0aW9uI3N0cmF0ZWd5KVxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzdHJhdGVneT86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnc3RyYXRlZ3knXTtcblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBwb3BvdmVyIGlzIHBvcnRhbGVkLlxuICAgICAqIElmIHlvdSBkb24ndCBjb250cm9sIHlvdXIgQ1NTLCBhbmQgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBwb3BvdmVyIGNvbnRlbnRcbiAgICAgKiBpcyBtaXNiZWhhdmluZywgeW91IG1heSBwYXNzIFwiQGlubGluZT17e3RydWV9fVwiIHRvIG9wdCBvdXQgb2YgcG9ydGFsbGluZy5cbiAgICAgKlxuICAgICAqIElubGluZSBtYXkgYWxzbyBiZSB1c2VmdWwgaW4gbmVzdGVkIG1lbnVzLCB3aGVyZSB5b3Uga25vdyBleGFjdGx5IGhvdyB0aGUgbmVzdGluZyBvY2N1cnNcbiAgICAgKi9cbiAgICBpbmxpbmU_OiBib29sZWFuO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIGhvb2s6IEZsb2F0aW5nVWlDb21wb25lbnRTaWduYXR1cmVbJ0Jsb2NrcyddWydkZWZhdWx0J11bMF1bJ2hvb2snXTtcbiAgICAgICAgc2V0SG9vazogRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZVsnQmxvY2tzJ11bJ2RlZmF1bHQnXVswXVsnc2V0SG9vayddO1xuICAgICAgICBDb250ZW50OiBXaXRoQm91bmRBcmdzPHR5cGVvZiBDb250ZW50LCAnbG9vcCc-O1xuICAgICAgICBkYXRhOiBGbG9hdGluZ1VpQ29tcG9uZW50U2lnbmF0dXJlWydCbG9ja3MnXVsnZGVmYXVsdCddWzBdWydkYXRhJ107XG4gICAgICAgIGFycm93OiBXaXRoQm91bmRBcmdzPE1vZGlmaWVyTGlrZTxBdHRhY2hBcnJvd1NpZ25hdHVyZT4sICdhcnJvd0VsZW1lbnQnIHwgJ2RhdGEnPjtcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudFRhZyh0YWdOYW1lOiB1bmRlZmluZWQgfCBzdHJpbmcpIHtcbiAgcmV0dXJuIHRhZ05hbWUgfHwgJ2Rpdic7XG59XG5cbi8qKlxuICogQWxsb3dzIGxhenkgZXZhbHVhdGlvbiBvZiB0aGUgcG9ydGFsIHRhcmdldCAoZG8gbm90aGluZyB1bnRpbCByZW5kZXJlZClcbiAqIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlIGFsZ29yaXRobSBmb3IgZmluZGluZyB0aGUgcG9ydGFsIHRhcmdldCBpc24ndCBjaGVhcC5cbiAqL1xuY29uc3QgQ29udGVudDogVE9DPHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICBsb29wOiBNb2RpZmllckxpa2U8eyBFbGVtZW50OiBIVE1MRWxlbWVudCB9PjtcbiAgICBpbmxpbmU_OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHBvcG92ZXIgY29udGVudCBpcyB3cmFwcGVkIGluIGEgZGl2LlxuICAgICAqIFlvdSBtYXkgY2hhbmdlIHRoaXMgYnkgc3VwcGx5aW5nIHRoZSBuYW1lIG9mIGFuIGVsZW1lbnQgaGVyZS5cbiAgICAgKlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqIGBgYGdqc1xuICAgICAqIDxQb3BvdmVyIGFzIHxwfD5cbiAgICAgKiAgPHAuQ29udGVudCBAYXM9XCJkaWFsb2dcIj5cbiAgICAgKiAgICB0aGlzIGlzIG5vdyBmb2N1cyB0cmFwcGVkXG4gICAgICogIDwvcC5Db250ZW50PlxuICAgICAqIDwvUG9wb3Zlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBhcz86IHN0cmluZztcbiAgfTtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChlbGVtZW50IChnZXRFbGVtZW50VGFnIEBhcykpIGFzIHxFbHx9fVxuICAgIHt7I2lmIEBpbmxpbmV9fVxuICAgICAge3shIEBnbGludC1pZ25vcmVcbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90aWxkZWlvL2VtYmVyLWVsZW1lbnQtaGVscGVyL2lzc3Vlcy85MVxuICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3R5cGVkLWVtYmVyL2dsaW50L2lzc3Vlcy82MTBcbiAgICAgIH19XG4gICAgICA8RWwge3tAbG9vcH19IC4uLmF0dHJpYnV0ZXM-XG4gICAgICAgIHt7eWllbGR9fVxuICAgICAgPC9FbD5cbiAgICB7e2Vsc2V9fVxuICAgICAgPFBvcnRhbCBAdG89e3tUQVJHRVRTLnBvcG92ZXJ9fT5cbiAgICAgICAge3shIEBnbGludC1pZ25vcmVcbiAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RpbGRlaW8vZW1iZXItZWxlbWVudC1oZWxwZXIvaXNzdWVzLzkxXG4gICAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlZC1lbWJlci9nbGludC9pc3N1ZXMvNjEwXG4gICAgICAgIH19XG4gICAgICAgIDxFbCB7e0Bsb29wfX0gLi4uYXR0cmlidXRlcz5cbiAgICAgICAgICB7e3lpZWxkfX1cbiAgICAgICAgPC9FbD5cbiAgICAgIDwvUG9ydGFsPlxuICAgIHt7L2lmfX1cbiAge3svbGV0fX1cbjwvdGVtcGxhdGU-O1xuXG5pbnRlcmZhY2UgQXR0YWNoQXJyb3dTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgQXJnczoge1xuICAgIE5hbWVkOiB7XG4gICAgICBhcnJvd0VsZW1lbnQ6IFJldHVyblR5cGU8dHlwZW9mIEFycm93RWxlbWVudD47XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgZGF0YT86IGFueTtcbiAgICB9O1xuICB9O1xufVxuXG5jb25zdCBhcnJvd1NpZGVzID0ge1xuICB0b3A6ICdib3R0b20nLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICBsZWZ0OiAncmlnaHQnLFxufTtcblxudHlwZSBEaXJlY3Rpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbnR5cGUgUGxhY2VtZW50ID0gYCR7RGlyZWN0aW9ufSR7JycgfCAnLXN0YXJ0JyB8ICctZW5kJ31gO1xuXG5jb25zdCBhdHRhY2hBcnJvdyA9IGVNb2RpZmllcjxBdHRhY2hBcnJvd1NpZ25hdHVyZT4oKGVsZW1lbnQsIF86IFtdLCBuYW1lZCkgPT4ge1xuICBpZiAoZWxlbWVudCA9PT0gbmFtZWQuYXJyb3dFbGVtZW50LmN1cnJlbnQpIHtcbiAgICBpZiAoIW5hbWVkLmRhdGEpIHJldHVybjtcbiAgICBpZiAoIW5hbWVkLmRhdGEubWlkZGxld2FyZURhdGEpIHJldHVybjtcblxuICAgIGxldCB7IGFycm93IH0gPSBuYW1lZC5kYXRhLm1pZGRsZXdhcmVEYXRhO1xuICAgIGxldCB7IHBsYWNlbWVudCB9ID0gbmFtZWQuZGF0YTtcblxuICAgIGlmICghYXJyb3cpIHJldHVybjtcbiAgICBpZiAoIXBsYWNlbWVudCkgcmV0dXJuO1xuXG4gICAgbGV0IHsgeDogYXJyb3dYLCB5OiBhcnJvd1kgfSA9IGFycm93O1xuICAgIGxldCBvdGhlclNpZGUgPSAocGxhY2VtZW50IGFzIFBsYWNlbWVudCkuc3BsaXQoJy0nKVswXSBhcyBEaXJlY3Rpb247XG4gICAgbGV0IHN0YXRpY1NpZGUgPSBhcnJvd1NpZGVzW290aGVyU2lkZV07XG5cbiAgICBPYmplY3QuYXNzaWduKG5hbWVkLmFycm93RWxlbWVudC5jdXJyZW50LnN0eWxlLCB7XG4gICAgICBsZWZ0OiBhcnJvd1ggIT0gbnVsbCA_IGAke2Fycm93WH1weGAgOiAnJyxcbiAgICAgIHRvcDogYXJyb3dZICE9IG51bGwgPyBgJHthcnJvd1l9cHhgIDogJycsXG4gICAgICByaWdodDogJycsXG4gICAgICBib3R0b206ICcnLFxuICAgICAgW3N0YXRpY1NpZGVdOiAnLTRweCcsXG4gICAgfSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIG5hbWVkLmFycm93RWxlbWVudC5zZXQoZWxlbWVudCk7XG4gIH0pKCk7XG59KTtcblxuY29uc3QgQXJyb3dFbGVtZW50OiAoKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBjZWxsPEhUTUxFbGVtZW50Pj4gPSAoKSA9PiBjZWxsPEhUTUxFbGVtZW50PigpO1xuXG5mdW5jdGlvbiBtYXliZUFkZEFycm93KG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVbXSB8IHVuZGVmaW5lZCwgZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuICBsZXQgcmVzdWx0ID0gWy4uLihtaWRkbGV3YXJlIHx8IFtdKV07XG5cbiAgaWYgKGVsZW1lbnQpIHtcbiAgICByZXN1bHQucHVzaChhcnJvdyh7IGVsZW1lbnQgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZmxpcE9wdGlvbnMob3B0aW9uczogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydmbGlwT3B0aW9ucyddKSB7XG4gIHJldHVybiB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnIGFzIEVsZW1lbnRDb250ZXh0LFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBQb3BvdmVyOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChBcnJvd0VsZW1lbnQpIGFzIHxhcnJvd0VsZW1lbnR8fX1cbiAgICA8RmxvYXRpbmdVSVxuICAgICAgQHBsYWNlbWVudD17e0BwbGFjZW1lbnR9fVxuICAgICAgQHN0cmF0ZWd5PXt7QHN0cmF0ZWd5fX1cbiAgICAgIEBtaWRkbGV3YXJlPXt7bWF5YmVBZGRBcnJvdyBAbWlkZGxld2FyZSBhcnJvd0VsZW1lbnQuY3VycmVudH19XG4gICAgICBAZmxpcE9wdGlvbnM9e3tmbGlwT3B0aW9ucyBAZmxpcE9wdGlvbnN9fVxuICAgICAgQHNoaWZ0T3B0aW9ucz17e0BzaGlmdE9wdGlvbnN9fVxuICAgICAgQG9mZnNldE9wdGlvbnM9e3tAb2Zmc2V0T3B0aW9uc319XG4gICAgICBhcyB8ZnVpfFxuICAgID5cbiAgICAgIHt7eWllbGRcbiAgICAgICAgKGhhc2hcbiAgICAgICAgICBob29rPWZ1aS5ob29rXG4gICAgICAgICAgc2V0SG9vaz1mdWkuc2V0SG9va1xuICAgICAgICAgIENvbnRlbnQ9KGNvbXBvbmVudCBDb250ZW50IGxvb3A9ZnVpLmxvb3AgaW5saW5lPUBpbmxpbmUpXG4gICAgICAgICAgZGF0YT1mdWkuZGF0YVxuICAgICAgICAgIGFycm93PShtb2RpZmllciBhdHRhY2hBcnJvdyBhcnJvd0VsZW1lbnQ9YXJyb3dFbGVtZW50IGRhdGE9ZnVpLmRhdGEpXG4gICAgICAgIClcbiAgICAgIH19XG4gICAgPC9GbG9hdGluZ1VJPlxuICB7ey9sZXR9fVxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFBvcG92ZXI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUVyQyxTQUFTLEtBQUssUUFBUSxtQkFBbUI7QUFDekMsU0FBUyxPQUFPLFFBQVEsdUJBQXVCO0FBQy9DLFNBQVMsWUFBWSxTQUFTLFFBQVEsaUJBQWlCO0FBQ3ZELFNBQVMsSUFBSSxRQUFRLGtCQUFrQjtBQUV2QyxTQUFTLFVBQVUsUUFBUSxvQkFBb0I7QUFDL0MsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLE9BQU8sUUFBUSx1QkFBdUI7QUFFL0MsY0FBYyxhQUFhLDRCQUE0QixRQUFRLDhCQUE4QjtBQUM3RixjQUFjLGFBQWEsYUFBYSxRQUFRLDZCQUE2QjtBQUM3RSxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFDMUQsY0FBYyxjQUFjLEVBQUUsVUFBVSxRQUFRLG1CQUFtQjtBQUNuRSxjQUFjLFlBQVksRUFBRSxhQUFhLFFBQVEsa0JBQWtCO0FBRW5FLGlCQUFpQjtJQUNmO1FBQ0U7Ozs7S0FJQyxHQUNELGNBQWMsY0FBYyxRQUFRLFNBQVM7UUFDN0M7Ozs7S0FJQyxHQUNELGFBQWEsY0FBYyxRQUFRLFNBQVM7UUFDNUM7Ozs7S0FJQyxHQUNELGdCQUFnQixjQUFjLFFBQVEsU0FBUztRQUMvQzs7Ozs7Ozs7Ozs7O0tBWUMsR0FDRCxhQUFhLEVBQUUsUUFBUSxXQUFXLFNBQVMsUUFBUSxFQUFFLEtBQUssV0FBVyxPQUFPO1FBQzVFOzs7O0tBSUMsR0FDRCxlQUFlLGNBQWMsUUFBUSxTQUFTO1FBQzlDOzs7Ozs7S0FNQyxHQUNELFdBQVcsY0FBYyxRQUFRLFNBQVM7UUFFMUM7Ozs7OztLQU1DLEdBQ0QsU0FBUyxPQUFPOztJQUVsQjtRQUNFO2dCQUVJLE1BQU0sNkJBQTZCLFVBQVUsV0FBVyxHQUFHO2dCQUMzRCxTQUFTLDZCQUE2QixVQUFVLFdBQVcsR0FBRztnQkFDOUQsU0FBUyxxQkFBcUIsU0FBUztnQkFDdkMsTUFBTSw2QkFBNkIsVUFBVSxXQUFXLEdBQUc7Z0JBQzNELE9BQU8sY0FBYyxhQUFhLHVCQUF1QixpQkFBaUI7Ozs7QUFNbEYsU0FBUyxjQUFjLFVBQVMsU0FBUyxHQUFHLE1BQU07SUFDaEQsT0FBTyxZQUFXO0FBQ3BCO0FBRUE7OztDQUdDLEdBQ0QsTUFBTSxTQUFTO0lBQ2IsU0FBUztJQUNUO1FBQ0UsTUFBTTtZQUFlLFNBQVM7O1FBQzlCLFNBQVMsT0FBTztRQUNoQjs7Ozs7Ozs7Ozs7O0tBWUMsR0FDRCxLQUFLLE1BQU07O0lBRWI7UUFBVTs7S0FDUCxTQUFVLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQmYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO1VBRUE7SUFDUixTQUFTO0lBQ1Q7UUFDRTtZQUNFLGNBQWMsa0JBQWtCO1lBQ2hDLDhEQUE4RDtZQUM5RCxPQUFPLEdBQUc7Ozs7QUFLaEIsTUFBTSxhQUFhO0lBQ2pCLEtBQUs7SUFDTCxPQUFPO0lBQ1AsUUFBUTtJQUNSLE1BQU07QUFDUjtLQUVLLFlBQVksUUFBUSxXQUFXLFNBQVM7S0FDeEMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLFdBQVcsT0FBTztBQUV2RCxNQUFNLGNBQWMsVUFBVSxzQkFBc0IsQ0FBQyxVQUFTLFFBQU87SUFDbkUsSUFBSSxhQUFZLE9BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRTtRQUMxQyxJQUFJLENBQUMsT0FBTSxJQUFJLEVBQUU7UUFDakIsSUFBSSxDQUFDLE9BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUVoQyxJQUFJLEVBQUUsT0FBQSxNQUFLLEVBQUUsR0FBRyxPQUFNLElBQUksQ0FBQyxjQUFjO1FBQ3pDLElBQUksRUFBRSxXQUFBLFVBQVMsRUFBRSxHQUFHLE9BQU0sSUFBSTtRQUU5QixJQUFJLENBQUMsUUFBTztRQUNaLElBQUksQ0FBQyxZQUFXO1FBRWhCLElBQUksRUFBRSxHQUFHLE9BQU0sRUFBRSxHQUFHLE9BQU0sRUFBRSxHQUFHO1FBQy9CLElBQUksYUFBWSxDQUFDLGNBQWEsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJO1FBQzFELElBQUksY0FBYSxVQUFVLENBQUMsV0FBVTtRQUV0QyxPQUFPLE1BQU0sQ0FBQyxPQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzlDLE1BQU0sV0FBVSxPQUFPLENBQUMsRUFBRSxRQUFPLEVBQUUsQ0FBQyxHQUFHO1lBQ3ZDLEtBQUssV0FBVSxPQUFPLENBQUMsRUFBRSxRQUFPLEVBQUUsQ0FBQyxHQUFHO1lBQ3RDLE9BQU87WUFDUCxRQUFRO1lBQ1IsQ0FBQyxZQUFXLEVBQUU7UUFDaEI7UUFFQTtJQUNGO0lBRUEsQ0FBQztRQUNDLE1BQU0sUUFBUSxPQUFPO1FBQ3JCLE9BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQztJQUN6QixDQUFDO0FBQ0g7QUFFQSxNQUFNLG9CQUFvQixrQkFBa0IsUUFBcUIsSUFBTSxLQUFLO0FBRTVFLFNBQVMsY0FBYyxhQUFZLGVBQWUsU0FBUyxFQUFFLFVBQVMsVUFBVSxTQUFTO0lBQ3ZGLElBQUksVUFBUztXQUFJLENBQUMsZUFBYyxFQUFFO0tBQUU7SUFFcEMsSUFBSSxVQUFTO1FBQ1gsUUFBTyxJQUFJLENBQUMsTUFBTTtZQUFFLFNBQUE7UUFBUTtJQUM5QjtJQUVBLE9BQU87QUFDVDtBQUVBLFNBQVMsWUFBWSxVQUFTLGNBQWMsUUFBUSxTQUFTLGNBQWM7SUFDekUsT0FBTztRQUNMLGdCQUFnQixlQUFlO1FBQy9CLEdBQUcsUUFBTztJQUNaO0FBQ0Y7QUFFQSxPQUFPLE1BQU0sU0FBUyxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JqRCxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLGVBQWUsUUFBUSJ9"],"names":["getElementTag","tagName1","Content","precompileTemplate","strictMode","scope","element","Portal","TARGETS","templateOnly","arrowSides","top","right","bottom","left","attachArrow","eModifier","element1","_1","named1","arrowElement","current","data","middlewareData","arrow","arrow1","placement","placement1","x","arrowX1","y","arrowY1","otherSide1","split","staticSide1","Object","assign","style","Promise","resolve","set","ArrowElement","cell","maybeAddArrow","middleware1","result1","push","flipOptions","options1","elementContext","Popover","setComponentTemplate","FloatingUI","hash"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"portal-targets.js","sources":["../../src/components/portal-targets.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { isDevelopingApp, macroCondition } from '@embroider/macros';\nimport type { TOC } from '@ember/component/template-only';\nexport const TARGETS = Object.freeze({\n popover: 'ember-primitives__portal-targets__popover',\n tooltip: 'ember-primitives__portal-targets__tooltip',\n modal: 'ember-primitives__portal-targets__modal'\n});\nexport function findNearestTarget(origin1: Element, name1: string) {\n assert(`first argument to \\`findNearestTarget\\` must be an element`, origin1 instanceof Element);\n assert(`second argument to \\`findNearestTarget\\` must be a string`, typeof name1 === `string`);\n let element1: Element | null = null;\n let parent1 = origin1.parentNode;\n while(!element1 && parent1){\n element1 = parent1.querySelector(`[data-portal-name=${name1}]`);\n if (element1) break;\n parent1 = parent1.parentNode;\n }\n if (macroCondition(isDevelopingApp())) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).prime0 = origin1;\n }\n assert(`Could not find element by the given name: \\`${name1}\\`.` + ` The known names are ` + `${Object.values(TARGETS).join(', ')} ` + `-- but any name will work as long as it is set to the \\`data-portal-name\\` attribute. ` + `Double check that the element you're wanting to portal to is rendered. ` + `The element passed to \\`findNearestTarget\\` is stored on \\`window.prime0\\` ` + `You can debug in your browser's console via ` + `\\`document.querySelector('[data-portal-name=\"${name1}\"]')\\``, element1);\n return element1;\n}\nexport interface Signature {\n Args: {\n };\n Blocks: {\n };\n}\nexport const PortalTargets: TOC<Signature> = template(`\n <div data-portal-name={{TARGETS.popover}}></div>\n <div data-portal-name={{TARGETS.tooltip}}></div>\n <div data-portal-name={{TARGETS.modal}}></div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default PortalTargets;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3J0YWwtdGFyZ2V0cy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGlzRGV2ZWxvcGluZ0FwcCwgbWFjcm9Db25kaXRpb24gfSBmcm9tICdAZW1icm9pZGVyL21hY3Jvcyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGNvbnN0IFRBUkdFVFMgPSBPYmplY3QuZnJlZXplKHtcbiAgcG9wb3ZlcjogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX19wb3BvdmVyJyxcbiAgdG9vbHRpcDogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX190b29sdGlwJyxcbiAgbW9kYWw6ICdlbWJlci1wcmltaXRpdmVzX19wb3J0YWwtdGFyZ2V0c19fbW9kYWwnLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmVhcmVzdFRhcmdldChvcmlnaW46IEVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICBhc3NlcnQoYGZpcnN0IGFyZ3VtZW50IHRvIFxcYGZpbmROZWFyZXN0VGFyZ2V0XFxgIG11c3QgYmUgYW4gZWxlbWVudGAsIG9yaWdpbiBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICBhc3NlcnQoYHNlY29uZCBhcmd1bWVudCB0byBcXGBmaW5kTmVhcmVzdFRhcmdldFxcYCBtdXN0IGJlIGEgc3RyaW5nYCwgdHlwZW9mIG5hbWUgPT09IGBzdHJpbmdgKTtcblxuICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBwYXJlbnQgPSBvcmlnaW4ucGFyZW50Tm9kZTtcblxuICB3aGlsZSAoIWVsZW1lbnQgJiYgcGFyZW50KSB7XG4gICAgZWxlbWVudCA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1wb3J0YWwtbmFtZT0ke25hbWV9XWApO1xuICAgIGlmIChlbGVtZW50KSBicmVhaztcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGlmIChtYWNyb0NvbmRpdGlvbihpc0RldmVsb3BpbmdBcHAoKSkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICh3aW5kb3cgYXMgYW55KS5wcmltZTAgPSBvcmlnaW47XG4gIH1cblxuICBhc3NlcnQoXG4gICAgYENvdWxkIG5vdCBmaW5kIGVsZW1lbnQgYnkgdGhlIGdpdmVuIG5hbWU6IFxcYCR7bmFtZX1cXGAuYCArXG4gICAgICBgIFRoZSBrbm93biBuYW1lcyBhcmUgYCArXG4gICAgICBgJHtPYmplY3QudmFsdWVzKFRBUkdFVFMpLmpvaW4oJywgJyl9IGAgK1xuICAgICAgYC0tIGJ1dCBhbnkgbmFtZSB3aWxsIHdvcmsgYXMgbG9uZyBhcyBpdCBpcyBzZXQgdG8gdGhlIFxcYGRhdGEtcG9ydGFsLW5hbWVcXGAgYXR0cmlidXRlLiBgICtcbiAgICAgIGBEb3VibGUgY2hlY2sgdGhhdCB0aGUgZWxlbWVudCB5b3UncmUgd2FudGluZyB0byBwb3J0YWwgdG8gaXMgcmVuZGVyZWQuIGAgK1xuICAgICAgYFRoZSBlbGVtZW50IHBhc3NlZCB0byBcXGBmaW5kTmVhcmVzdFRhcmdldFxcYCBpcyBzdG9yZWQgb24gXFxgd2luZG93LnByaW1lMFxcYCBgICtcbiAgICAgIGBZb3UgY2FuIGRlYnVnIGluIHlvdXIgYnJvd3NlcidzIGNvbnNvbGUgdmlhIGAgK1xuICAgICAgYFxcYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXBvcnRhbC1uYW1lPVwiJHtuYW1lfVwiXScpXFxgYCxcbiAgICBlbGVtZW50XG4gICk7XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgQXJnczoge307XG4gIEJsb2Nrczoge307XG59XG5cbmV4cG9ydCBjb25zdCBQb3J0YWxUYXJnZXRzOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGRpdiBkYXRhLXBvcnRhbC1uYW1lPXt7VEFSR0VUUy5wb3BvdmVyfX0-PC9kaXY-XG4gIDxkaXYgZGF0YS1wb3J0YWwtbmFtZT17e1RBUkdFVFMudG9vbHRpcH19PjwvZGl2PlxuICA8ZGl2IGRhdGEtcG9ydGFsLW5hbWU9e3tUQVJHRVRTLm1vZGFsfX0-PC9kaXY-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUG9ydGFsVGFyZ2V0cztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLGVBQWUsRUFBRSxjQUFjLFFBQVEsb0JBQW9CO0FBRXBFLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxPQUFPLE1BQU0sVUFBVSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxTQUFTO0lBQ1QsU0FBUztJQUNULE9BQU87QUFDVCxHQUFHO0FBRUgsT0FBTyxTQUFTLGtCQUFrQixTQUFRLE9BQU8sRUFBRSxPQUFNLE1BQU07SUFDN0QsT0FBTyxDQUFDLDBEQUEwRCxDQUFDLEVBQUUsbUJBQWtCO0lBQ3ZGLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQyxFQUFFLE9BQU8sVUFBUyxDQUFDLE1BQU0sQ0FBQztJQUU1RixJQUFJLFVBQVMsVUFBVSxJQUFJLEdBQUc7SUFFOUIsSUFBSSxVQUFTLFFBQU8sVUFBVTtJQUU5QixNQUFPLENBQUMsWUFBVyxRQUFRO1FBQ3pCLFdBQVUsUUFBTyxhQUFhLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLFVBQVM7UUFDYixVQUFTLFFBQU8sVUFBVTtJQUM1QjtJQUVBLElBQUksZUFBZSxvQkFBb0I7UUFDckMsOERBQThEO1FBQzlELENBQUMsVUFBVSxHQUFHLEVBQUUsTUFBTSxHQUFHO0lBQzNCO0lBRUEsT0FDRSxDQUFDLDRDQUE0QyxFQUFFLE1BQUssR0FBRyxDQUFDLEdBQ3RELENBQUMscUJBQXFCLENBQUMsR0FDdkIsQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQ3ZDLENBQUMsc0ZBQXNGLENBQUMsR0FDeEYsQ0FBQyx1RUFBdUUsQ0FBQyxHQUN6RSxDQUFDLDJFQUEyRSxDQUFDLEdBQzdFLENBQUMsNENBQTRDLENBQUMsR0FDOUMsQ0FBQyw2Q0FBNkMsRUFBRSxNQUFLLE1BQU0sQ0FBQyxFQUM5RDtJQUdGLE9BQU87QUFDVDtBQUVBLGlCQUFpQjtJQUNmOztJQUNBOzs7QUFHRixPQUFPLE1BQU0sZUFBZSxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7O0FBSXZELENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQSxHQUFFO0FBRVosZUFBZSxjQUFjIn0"],"names":["TARGETS","Object","freeze","popover","tooltip","modal","findNearestTarget","origin1","name1","assert","Element","element1","parent1","parentNode","querySelector","macroCondition","isDevelopingApp","window","prime0","values","join","PortalTargets","setComponentTemplate","precompileTemplate","strictMode","scope","templateOnly"],"mappings":";;;;;;MAKaA,OAAA,GAAUC,MAAA,CAAOC,MAAM,CAAC;AACnCC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,KAAA,EAAO,yCAAA;AACT,CAAA,EAAA;AAEO,SAASC,iBAAAA,CAAkBC,OAAe,EAAEC,KAAY,EAAA;AAC7DC,EAAAA,MAAA,CAAQ,CAAA,0DAAA,CAA2D,EAAEF,OAAA,YAAkBG,OAAA,CAAA,CAAA;AACvFD,EAAAA,MAAA,CAAQ,CAA0D,yDAAA,CAAA,EAAE,OAAOD,KAAA,KAAU,CAAO,MAAA,CAAA,CAAA,CAAA;AAE5F,EAAA,IAAIG,QAAuB,GAAG,IAAA,CAAA;AAE9B,EAAA,IAAIC,OAAA,GAASL,OAAA,CAAOM,UAAU,CAAA;AAE9B,EAAA,OAAO,CAACF,QAAA,IAAWC,OAAA,EAAQ;AACzBD,IAAAA,QAAA,GAAUC,OAAA,CAAOE,aAAa,CAAE,CAAA,kBAAA,EAAoBN,KAAK,CAAE,CAAA,CAAA,CAAA,CAAA;AAC3D,IAAA,IAAIG,QAAA,EAAS,MAAA;IACbC,OAAA,GAASA,OAAA,CAAOC,UAAU,CAAA;AAC5B,GAAA;EAEA,IAAIE,cAAA,CAAeC,eAAA,EAAoB,CAAA,EAAA;AACrC;IACCC,MAAA,CAAeC,MAAM,GAAGX,OAAA,CAAA;AAC3B,GAAA;AAEAE,EAAAA,MAAA,CACG,CAAA,4CAAA,EAA8CD,KAAK,CAAA,GAAA,CAAI,GACrD,CAAA,qBAAA,CAAsB,GACtB,CAAA,EAAEP,MAAA,CAAOkB,MAAM,CAACnB,OAAA,CAASoB,CAAAA,IAAI,CAAC,IAAA,CAAM,CAAE,CAAA,CAAA,GACtC,CAAuF,sFAAA,CAAA,GACvF,yEAAwE,GACxE,CAAA,2EAAA,CAA4E,GAC5E,CAAA,4CAAA,CAA6C,GAC7C,CAAA,6CAAA,EAA+CZ,KAAK,CAAA,MAAA,CAAO,EAC9DG,QAAA,CAAA,CAAA;AAGF,EAAA,OAAOA,QAAA,CAAA;AACT,CAAA;MAOaU,aAAmB,GAAAC,oBAAA,CAAaC,kBAAA,CAI7C,8JAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAzB,IAAAA,OAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAA0B,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"portal-targets.js","sources":["../../src/components/portal-targets.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { isDevelopingApp, macroCondition } from '@embroider/macros';\nimport type { TOC } from '@ember/component/template-only';\nexport const TARGETS = Object.freeze({\n popover: 'ember-primitives__portal-targets__popover',\n tooltip: 'ember-primitives__portal-targets__tooltip',\n modal: 'ember-primitives__portal-targets__modal'\n});\nexport function findNearestTarget(origin1: Element, name1: string) {\n assert(`first argument to \\`findNearestTarget\\` must be an element`, origin1 instanceof Element);\n assert(`second argument to \\`findNearestTarget\\` must be a string`, typeof name1 === `string`);\n let element1: Element | null = null;\n let parent1 = origin1.parentNode;\n while(!element1 && parent1){\n element1 = parent1.querySelector(`[data-portal-name=${name1}]`);\n if (element1) break;\n parent1 = parent1.parentNode;\n }\n if (macroCondition(isDevelopingApp())) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).prime0 = origin1;\n }\n assert(`Could not find element by the given name: \\`${name1}\\`.` + ` The known names are ` + `${Object.values(TARGETS).join(', ')} ` + `-- but any name will work as long as it is set to the \\`data-portal-name\\` attribute. ` + `Double check that the element you're wanting to portal to is rendered. ` + `The element passed to \\`findNearestTarget\\` is stored on \\`window.prime0\\` ` + `You can debug in your browser's console via ` + `\\`document.querySelector('[data-portal-name=\"${name1}\"]')\\``, element1);\n return element1;\n}\nexport interface Signature {\n Args: {\n };\n Blocks: {\n };\n}\nexport const PortalTargets: TOC<Signature> = template(`\n <div data-portal-name={{TARGETS.popover}}></div>\n <div data-portal-name={{TARGETS.tooltip}}></div>\n <div data-portal-name={{TARGETS.modal}}></div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default PortalTargets;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3J0YWwtdGFyZ2V0cy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGlzRGV2ZWxvcGluZ0FwcCwgbWFjcm9Db25kaXRpb24gfSBmcm9tICdAZW1icm9pZGVyL21hY3Jvcyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGNvbnN0IFRBUkdFVFMgPSBPYmplY3QuZnJlZXplKHtcbiAgcG9wb3ZlcjogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX19wb3BvdmVyJyxcbiAgdG9vbHRpcDogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX190b29sdGlwJyxcbiAgbW9kYWw6ICdlbWJlci1wcmltaXRpdmVzX19wb3J0YWwtdGFyZ2V0c19fbW9kYWwnLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmVhcmVzdFRhcmdldChvcmlnaW46IEVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICBhc3NlcnQoYGZpcnN0IGFyZ3VtZW50IHRvIFxcYGZpbmROZWFyZXN0VGFyZ2V0XFxgIG11c3QgYmUgYW4gZWxlbWVudGAsIG9yaWdpbiBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICBhc3NlcnQoYHNlY29uZCBhcmd1bWVudCB0byBcXGBmaW5kTmVhcmVzdFRhcmdldFxcYCBtdXN0IGJlIGEgc3RyaW5nYCwgdHlwZW9mIG5hbWUgPT09IGBzdHJpbmdgKTtcblxuICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBwYXJlbnQgPSBvcmlnaW4ucGFyZW50Tm9kZTtcblxuICB3aGlsZSAoIWVsZW1lbnQgJiYgcGFyZW50KSB7XG4gICAgZWxlbWVudCA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1wb3J0YWwtbmFtZT0ke25hbWV9XWApO1xuICAgIGlmIChlbGVtZW50KSBicmVhaztcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGlmIChtYWNyb0NvbmRpdGlvbihpc0RldmVsb3BpbmdBcHAoKSkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICh3aW5kb3cgYXMgYW55KS5wcmltZTAgPSBvcmlnaW47XG4gIH1cblxuICBhc3NlcnQoXG4gICAgYENvdWxkIG5vdCBmaW5kIGVsZW1lbnQgYnkgdGhlIGdpdmVuIG5hbWU6IFxcYCR7bmFtZX1cXGAuYCArXG4gICAgICBgIFRoZSBrbm93biBuYW1lcyBhcmUgYCArXG4gICAgICBgJHtPYmplY3QudmFsdWVzKFRBUkdFVFMpLmpvaW4oJywgJyl9IGAgK1xuICAgICAgYC0tIGJ1dCBhbnkgbmFtZSB3aWxsIHdvcmsgYXMgbG9uZyBhcyBpdCBpcyBzZXQgdG8gdGhlIFxcYGRhdGEtcG9ydGFsLW5hbWVcXGAgYXR0cmlidXRlLiBgICtcbiAgICAgIGBEb3VibGUgY2hlY2sgdGhhdCB0aGUgZWxlbWVudCB5b3UncmUgd2FudGluZyB0byBwb3J0YWwgdG8gaXMgcmVuZGVyZWQuIGAgK1xuICAgICAgYFRoZSBlbGVtZW50IHBhc3NlZCB0byBcXGBmaW5kTmVhcmVzdFRhcmdldFxcYCBpcyBzdG9yZWQgb24gXFxgd2luZG93LnByaW1lMFxcYCBgICtcbiAgICAgIGBZb3UgY2FuIGRlYnVnIGluIHlvdXIgYnJvd3NlcidzIGNvbnNvbGUgdmlhIGAgK1xuICAgICAgYFxcYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXBvcnRhbC1uYW1lPVwiJHtuYW1lfVwiXScpXFxgYCxcbiAgICBlbGVtZW50XG4gICk7XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgQXJnczoge307XG4gIEJsb2Nrczoge307XG59XG5cbmV4cG9ydCBjb25zdCBQb3J0YWxUYXJnZXRzOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGRpdiBkYXRhLXBvcnRhbC1uYW1lPXt7VEFSR0VUUy5wb3BvdmVyfX0-PC9kaXY-XG4gIDxkaXYgZGF0YS1wb3J0YWwtbmFtZT17e1RBUkdFVFMudG9vbHRpcH19PjwvZGl2PlxuICA8ZGl2IGRhdGEtcG9ydGFsLW5hbWU9e3tUQVJHRVRTLm1vZGFsfX0-PC9kaXY-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUG9ydGFsVGFyZ2V0cztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLGVBQWUsRUFBRSxjQUFjLFFBQVEsb0JBQW9CO0FBRXBFLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxPQUFPLE1BQU0sVUFBVSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxTQUFTO0lBQ1QsU0FBUztJQUNULE9BQU87QUFDVCxHQUFHO0FBRUgsT0FBTyxTQUFTLGtCQUFrQixTQUFRLE9BQU8sRUFBRSxPQUFNLE1BQU07SUFDN0QsT0FBTyxDQUFDLDBEQUEwRCxDQUFDLEVBQUUsbUJBQWtCO0lBQ3ZGLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQyxFQUFFLE9BQU8sVUFBUyxDQUFDLE1BQU0sQ0FBQztJQUU1RixJQUFJLFVBQVMsVUFBVSxJQUFJLEdBQUc7SUFFOUIsSUFBSSxVQUFTLFFBQU8sVUFBVTtJQUU5QixNQUFPLENBQUMsWUFBVyxRQUFRO1FBQ3pCLFdBQVUsUUFBTyxhQUFhLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLFVBQVM7UUFDYixVQUFTLFFBQU8sVUFBVTtJQUM1QjtJQUVBLElBQUksZUFBZSxvQkFBb0I7UUFDckMsOERBQThEO1FBQzlELENBQUMsVUFBVSxHQUFHLEVBQUUsTUFBTSxHQUFHO0lBQzNCO0lBRUEsT0FDRSxDQUFDLDRDQUE0QyxFQUFFLE1BQUssR0FBRyxDQUFDLEdBQ3RELENBQUMscUJBQXFCLENBQUMsR0FDdkIsQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQ3ZDLENBQUMsc0ZBQXNGLENBQUMsR0FDeEYsQ0FBQyx1RUFBdUUsQ0FBQyxHQUN6RSxDQUFDLDJFQUEyRSxDQUFDLEdBQzdFLENBQUMsNENBQTRDLENBQUMsR0FDOUMsQ0FBQyw2Q0FBNkMsRUFBRSxNQUFLLE1BQU0sQ0FBQyxFQUM5RDtJQUdGLE9BQU87QUFDVDtBQUVBLGlCQUFpQjtJQUNmOztJQUNBOzs7QUFHRixPQUFPLE1BQU0sZUFBZSxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7O0FBSXZELENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQSxHQUFFO0FBRVosZUFBZSxjQUFjIn0"],"names":["TARGETS","Object","freeze","popover","tooltip","modal","findNearestTarget","origin1","name1","assert","Element","element1","parent1","parentNode","querySelector","macroCondition","isDevelopingApp","window","prime0","values","join","PortalTargets","setComponentTemplate","precompileTemplate","strictMode","scope","templateOnly"],"mappings":";;;;;;MAKaA,OAAA,GAAUC,MAAA,CAAOC,MAAM,CAAC;AACnCC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,KAAA,EAAO,yCAAA;AACT,CAAA,EAAA;AAEO,SAASC,iBAAAA,CAAkBC,OAAe,EAAEC,KAAY,EAAA;AAC7DC,EAAAA,MAAA,CAAO,CAAA,0DAAA,CAA4D,EAAEF,OAAA,YAAkBG,OAAA,CAAA,CAAA;AACvFD,EAAAA,MAAA,CAAO,CAA2D,yDAAA,CAAA,EAAE,OAAOD,KAAA,KAAS,CAAQ,MAAA,CAAA,CAAA,CAAA;AAE5F,EAAA,IAAIG,QAAuB,GAAG,IAAA,CAAA;AAE9B,EAAA,IAAIC,OAAA,GAASL,OAAA,CAAOM,UAAU,CAAA;AAE9B,EAAA,OAAO,CAACF,QAAA,IAAWC,OAAA,EAAQ;AACzBD,IAAAA,QAAA,GAAUC,OAAA,CAAOE,aAAa,CAAC,CAAA,kBAAA,EAAqBN,KAAA,CAAO,CAAA,CAAA,CAAA,CAAA;AAC3D,IAAA,IAAIG,QAAA,EAAS,MAAA;IACbC,OAAA,GAASA,OAAA,CAAOC,UAAU,CAAA;AAC5B,GAAA;EAEA,IAAIE,cAAA,CAAeC,eAAA,EAAoB,CAAA,EAAA;AACrC;IACCC,MAAA,CAAeC,MAAM,GAAGX,OAAA,CAAA;AAC3B,GAAA;AAEAE,EAAAA,MAAA,CACE,CAAA,4CAAA,EAA+CD,KAAA,CAAA,GAAA,CAAS,GACtD,CAAA,qBAAA,CAAuB,GACvB,CAAA,EAAGP,MAAA,CAAOkB,MAAM,CAACnB,OAAA,CAASoB,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA,CAAA,CAAQ,GACvC,CAAA,sFAAA,CAAwF,GACxF,CAAA,uEAAA,CAAyE,GACzE,CAAA,2EAAA,CAA6E,GAC7E,CAAA,4CAAA,CAA8C,GAC9C,CAAA,6CAAA,EAAgDZ,KAAA,CAAA,MAAA,CAAY,EAC9DG,QAAA,CAAA,CAAA;AAGF,EAAA,OAAOA,QAAA,CAAA;AACT,CAAA;MAOaU,aAAmB,GAAAC,oBAAA,CAAaC,kBAAA,CAI7C,8JAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAzB,IAAAA,OAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAA0B,YAAA,EAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sources":["../../src/components/progress.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nexport interface Signature {\n Element: HTMLDivElement;\n Args: {\n /**\n * The current progress\n * This may be less than 0 or more than `max`,\n * but the resolved value (managed internally, and yielded out)\n * does not exceed the range [0, max]\n */ value: number;\n /**\n * The max value, defaults to 100\n */ max?: number;\n };\n Blocks: {\n default: [{\n /**\n * The indicator element with some state applied.\n * This can be used to style the progress of bar.\n */ Indicator: WithBoundArgs<typeof Indicator, 'value' | 'max' | 'percent'>;\n /**\n * The value as a percent of how far along the indicator should be\n * positioned, between 0 and 100.\n * Will be rounded to two decimal places.\n */ percent: number;\n /**\n * The value as a percent of how far along the indicator should be positioned,\n * between 0 and 1\n */ decimal: number;\n /**\n * The resolved value within the limits of the progress bar.\n */ value: number;\n }];\n };\n}\ntype ProgressState = 'indeterminate' | 'complete' | 'loading';\nconst DEFAULT_MAX = 100;\n/**\n * Non-negative, non-NaN, non-Infinite, positive, rational\n */ function isValidProgressNumber(value1: number | undefined | null): value is number {\n if (typeof value1 !== 'number') return false;\n if (!Number.isFinite(value1)) return false;\n return value1 >= 0;\n}\nfunction progressState(value1: number | undefined | null, maxValue1: number): ProgressState {\n return value1 == null ? 'indeterminate' : value1 === maxValue1 ? 'complete' : 'loading';\n}\nfunction getMax(userMax1: number | undefined | null): number {\n return isValidProgressNumber(userMax1) ? userMax1 : DEFAULT_MAX;\n}\nfunction getValue(userValue1: number | undefined | null, maxValue1: number): number {\n let max1 = getMax(maxValue1);\n if (!isValidProgressNumber(userValue1)) {\n return 0;\n }\n if (userValue1 > max1) {\n return max1;\n }\n return userValue1;\n}\nfunction getValueLabel(value1: number, max1: number) {\n return `${Math.round((value1 / max1) * 100)}%`;\n}\nconst Indicator: TOC<{\n Element: HTMLDivElement;\n Args: {\n max: number;\n value: number;\n percent: number;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n <div\n ...attributes\n data-max={{@max}}\n data-value={{@value}}\n data-state={{progressState @value @max}}\n data-percent={{@percent}}\n >\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport class Progress extends Component<Signature> {\n get max() {\n return getMax(this.args.max);\n }\n get value() {\n return getValue(this.args.value, this.max);\n }\n get valueLabel() {\n return getValueLabel(this.value, this.max);\n }\n get decimal() {\n return this.value / this.max;\n }\n get percent() {\n return Math.round(this.decimal * 100 * 100) / 100;\n }\n static{\n template(`\n <div\n ...attributes\n aria-valuemax={{this.max}}\n aria-valuemin=\"0\"\n aria-valuenow={{this.value}}\n aria-valuetext={{this.valueLabel}}\n role=\"progressbar\"\n data-value={{this.value}}\n data-state={{progressState this.value this.max}}\n data-max={{this.max}}\n data-min=\"0\"\n data-percent={{this.percent}}\n >\n\n {{yield\n (hash\n Indicator=(component Indicator value=this.value max=this.max percent=this.percent)\n value=this.value\n percent=this.percent\n decimal=this.decimal\n )\n }}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Progress;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wcm9ncmVzcy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgcHJvZ3Jlc3NcbiAgICAgKiBUaGlzIG1heSBiZSBsZXNzIHRoYW4gMCBvciBtb3JlIHRoYW4gYG1heGAsXG4gICAgICogYnV0IHRoZSByZXNvbHZlZCB2YWx1ZSAobWFuYWdlZCBpbnRlcm5hbGx5LCBhbmQgeWllbGRlZCBvdXQpXG4gICAgICogZG9lcyBub3QgZXhjZWVkIHRoZSByYW5nZSBbMCwgbWF4XVxuICAgICAqL1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIG1heCB2YWx1ZSwgZGVmYXVsdHMgdG8gMTAwXG4gICAgICovXG4gICAgbWF4PzogbnVtYmVyO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgaW5kaWNhdG9yIGVsZW1lbnQgd2l0aCBzb21lIHN0YXRlIGFwcGxpZWQuXG4gICAgICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gc3R5bGUgdGhlIHByb2dyZXNzIG9mIGJhci5cbiAgICAgICAgICovXG4gICAgICAgIEluZGljYXRvcjogV2l0aEJvdW5kQXJnczx0eXBlb2YgSW5kaWNhdG9yLCAndmFsdWUnIHwgJ21heCcgfCAncGVyY2VudCc-O1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHZhbHVlIGFzIGEgcGVyY2VudCBvZiBob3cgZmFyIGFsb25nIHRoZSBpbmRpY2F0b3Igc2hvdWxkIGJlXG4gICAgICAgICAqIHBvc2l0aW9uZWQsIGJldHdlZW4gMCBhbmQgMTAwLlxuICAgICAgICAgKiBXaWxsIGJlIHJvdW5kZWQgdG8gdHdvIGRlY2ltYWwgcGxhY2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgcGVyY2VudDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHZhbHVlIGFzIGEgcGVyY2VudCBvZiBob3cgZmFyIGFsb25nIHRoZSBpbmRpY2F0b3Igc2hvdWxkIGJlIHBvc2l0aW9uZWQsXG4gICAgICAgICAqIGJldHdlZW4gMCBhbmQgMVxuICAgICAgICAgKi9cbiAgICAgICAgZGVjaW1hbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHJlc29sdmVkIHZhbHVlIHdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufVxuXG50eXBlIFByb2dyZXNzU3RhdGUgPSAnaW5kZXRlcm1pbmF0ZScgfCAnY29tcGxldGUnIHwgJ2xvYWRpbmcnO1xuXG5jb25zdCBERUZBVUxUX01BWCA9IDEwMDtcblxuLyoqXG4gKiBOb24tbmVnYXRpdmUsIG5vbi1OYU4sIG5vbi1JbmZpbml0ZSwgcG9zaXRpdmUsIHJhdGlvbmFsXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRQcm9ncmVzc051bWJlcih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHZhbHVlIGlzIG51bWJlciB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSByZXR1cm4gZmFsc2U7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB2YWx1ZSA-PSAwO1xufVxuXG5mdW5jdGlvbiBwcm9ncmVzc1N0YXRlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsLCBtYXhWYWx1ZTogbnVtYmVyKTogUHJvZ3Jlc3NTdGF0ZSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cblxuZnVuY3Rpb24gZ2V0TWF4KHVzZXJNYXg6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpOiBudW1iZXIge1xuICByZXR1cm4gaXNWYWxpZFByb2dyZXNzTnVtYmVyKHVzZXJNYXgpID8gdXNlck1heCA6IERFRkFVTFRfTUFYO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSh1c2VyVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsIG1heFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgbWF4ID0gZ2V0TWF4KG1heFZhbHVlKTtcblxuICBpZiAoIWlzVmFsaWRQcm9ncmVzc051bWJlcih1c2VyVmFsdWUpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAodXNlclZhbHVlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiB1c2VyVmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlTGFiZWwodmFsdWU6IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgcmV0dXJuIGAke01hdGgucm91bmQoKHZhbHVlIC8gbWF4KSAqIDEwMCl9JWA7XG59XG5cbmNvbnN0IEluZGljYXRvcjogVE9DPHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHsgbWF4OiBudW1iZXI7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnQ6IG51bWJlciB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn0-ID0gPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgLi4uYXR0cmlidXRlc1xuICAgIGRhdGEtbWF4PXt7QG1heH19XG4gICAgZGF0YS12YWx1ZT17e0B2YWx1ZX19XG4gICAgZGF0YS1zdGF0ZT17e3Byb2dyZXNzU3RhdGUgQHZhbHVlIEBtYXh9fVxuICAgIGRhdGEtcGVyY2VudD17e0BwZXJjZW50fX1cbiAgPlxuICAgIHt7eWllbGR9fVxuICA8L2Rpdj5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3MgZXh0ZW5kcyBDb21wb25lbnQ8U2lnbmF0dXJlPiB7XG4gIGdldCBtYXgoKSB7XG4gICAgcmV0dXJuIGdldE1heCh0aGlzLmFyZ3MubWF4KTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5hcmdzLnZhbHVlLCB0aGlzLm1heCk7XG4gIH1cblxuICBnZXQgdmFsdWVMYWJlbCgpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWVMYWJlbCh0aGlzLnZhbHVlLCB0aGlzLm1heCk7XG4gIH1cblxuICBnZXQgZGVjaW1hbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSAvIHRoaXMubWF4O1xuICB9XG5cbiAgZ2V0IHBlcmNlbnQoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5kZWNpbWFsICogMTAwICogMTAwKSAvIDEwMDtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICBhcmlhLXZhbHVlbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgYXJpYS12YWx1ZW5vdz17e3RoaXMudmFsdWV9fVxuICAgICAgYXJpYS12YWx1ZXRleHQ9e3t0aGlzLnZhbHVlTGFiZWx9fVxuICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgIGRhdGEtdmFsdWU9e3t0aGlzLnZhbHVlfX1cbiAgICAgIGRhdGEtc3RhdGU9e3twcm9ncmVzc1N0YXRlIHRoaXMudmFsdWUgdGhpcy5tYXh9fVxuICAgICAgZGF0YS1tYXg9e3t0aGlzLm1heH19XG4gICAgICBkYXRhLW1pbj1cIjBcIlxuICAgICAgZGF0YS1wZXJjZW50PXt7dGhpcy5wZXJjZW50fX1cbiAgICA-XG5cbiAgICAgIHt7eWllbGRcbiAgICAgICAgKGhhc2hcbiAgICAgICAgICBJbmRpY2F0b3I9KGNvbXBvbmVudCBJbmRpY2F0b3IgdmFsdWU9dGhpcy52YWx1ZSBtYXg9dGhpcy5tYXggcGVyY2VudD10aGlzLnBlcmNlbnQpXG4gICAgICAgICAgdmFsdWU9dGhpcy52YWx1ZVxuICAgICAgICAgIHBlcmNlbnQ9dGhpcy5wZXJjZW50XG4gICAgICAgICAgZGVjaW1hbD10aGlzLmRlY2ltYWxcbiAgICAgICAgKVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZ3Jlc3M7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxJQUFJLFFBQVEsZ0JBQWdCO0FBRXJDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7QUFFckQsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0U7Ozs7O0tBS0MsR0FDRCxPQUFPLE1BQU07UUFDYjs7S0FFQyxHQUNELE1BQU0sTUFBTTs7SUFFZDtRQUNFO2dCQUVJOzs7U0FHQyxHQUNELFdBQVcscUJBQXFCLFdBQVcsVUFBVSxRQUFRO2dCQUM3RDs7OztTQUlDLEdBQ0QsU0FBUyxNQUFNO2dCQUNmOzs7U0FHQyxHQUNELFNBQVMsTUFBTTtnQkFDZjs7U0FFQyxHQUNELE9BQU8sTUFBTTs7OztLQU1oQixnQkFBZ0Isa0JBQWtCLGFBQWE7QUFFcEQsTUFBTSxjQUFjO0FBRXBCOztDQUVDLEdBQ0QsU0FBUyxzQkFBc0IsUUFBTyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksR0FBRyxTQUFTLE1BQU07SUFDL0UsSUFBSSxPQUFPLFdBQVUsVUFBVSxPQUFPO0lBQ3RDLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQyxTQUFRLE9BQU87SUFFcEMsT0FBTyxVQUFTO0FBQ2xCO0FBRUEsU0FBUyxjQUFjLFFBQU8sTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLEVBQUUsV0FBVSxNQUFNLEdBQUc7SUFDMUUsT0FBTyxVQUFTLE9BQU8sa0JBQWtCLFdBQVUsWUFBVyxhQUFhO0FBQzdFO0FBRUEsU0FBUyxPQUFPLFVBQVMsTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLEdBQUcsTUFBTTtJQUN6RCxPQUFPLHNCQUFzQixZQUFXLFdBQVU7QUFDcEQ7QUFFQSxTQUFTLFNBQVMsWUFBVyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksRUFBRSxXQUFVLE1BQU0sR0FBRyxNQUFNO0lBQy9FLElBQUksT0FBTSxPQUFPO0lBRWpCLElBQUksQ0FBQyxzQkFBc0IsYUFBWTtRQUNyQyxPQUFPO0lBQ1Q7SUFFQSxJQUFJLGFBQVksTUFBSztRQUNuQixPQUFPO0lBQ1Q7SUFFQSxPQUFPO0FBQ1Q7QUFFQSxTQUFTLGNBQWMsUUFBTyxNQUFNLEVBQUUsTUFBSyxNQUFNO0lBQy9DLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsU0FBUSxJQUFHLElBQUksS0FBSyxDQUFDLENBQUM7QUFDOUM7QUFFQSxNQUFNLFdBQVc7SUFDZixTQUFTO0lBQ1Q7UUFBUSxLQUFLLE1BQU07UUFBRSxPQUFPLE1BQU07UUFBRSxTQUFTLE1BQU07O0lBQ25EO1FBQVU7O0tBQ1AsU0FBVSxDQUFBOzs7Ozs7Ozs7O0FBVWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsT0FBTyxNQUFNLGlCQUFpQixVQUFVO0lBQ3RDLElBQUksTUFBTTtRQUNSLE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7SUFDN0I7SUFFQSxJQUFJLFFBQVE7UUFDVixPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUc7SUFDM0M7SUFFQSxJQUFJLGFBQWE7UUFDZixPQUFPLGNBQWMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztJQUMzQztJQUVBLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRztJQUM5QjtJQUVBLElBQUksVUFBVTtRQUNaLE9BQU8sS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLE9BQU87SUFDaEQ7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3QlYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBeEJBO0FBeUJaO0FBRUEsZUFBZSxTQUFTIn0"],"names":["DEFAULT_MAX","isValidProgressNumber","value1","Number","isFinite","progressState","maxValue1","getMax","userMax1","getValue","userValue1","max1","getValueLabel","Math","round","Indicator","precompileTemplate","strictMode","scope","templateOnly","Progress","Component","max","args","value","valueLabel","decimal","percent","setComponentTemplate","hash"],"mappings":";;;;;;AAmDA,MAAMA,WAAA,GAAc,GAAA,CAAA;AAEpB;;;AAGA,SAASC,qBAAAA,CAAsBC,MAAgC,EAAkB;AAC/E,EAAA,IAAI,OAAOA,MAAA,KAAU,QAAA,EAAU,OAAO,KAAA,CAAA;AACtC,EAAA,IAAI,CAACC,MAAA,CAAOC,QAAQ,CAACF,MAAA,GAAQ,OAAO,KAAA,CAAA;AAEpC,EAAA,OAAOA,MAAA,IAAS,CAAA,CAAA;AAClB,CAAA;AAEA,SAASG,aAAcH,CAAAA,MAAgC,EAAEI,SAAgB,EAAG;EAC1E,OAAOJ,MAAA,IAAS,IAAO,GAAA,eAAA,GAAkBA,MAAA,KAAUI,SAAA,GAAW,UAAa,GAAA,SAAA,CAAA;AAC7E,CAAA;AAEA,SAASC,MAAAA,CAAOC,QAAkC,EAAS;AACzD,EAAA,OAAOP,qBAAA,CAAsBO,QAAA,CAAWA,GAAAA,QAAA,GAAUR,WAAA,CAAA;AACpD,CAAA;AAEA,SAASS,QAASC,CAAAA,UAAoC,EAAEJ,SAAgB,EAAS;AAC/E,EAAA,IAAIK,IAAA,GAAMJ,MAAA,CAAOD,SAAA,CAAA,CAAA;AAEjB,EAAA,IAAI,CAACL,qBAAA,CAAsBS,UAAA,CAAY,EAAA;IACrC,OAAO,CAAA,CAAA;AACT,GAAA;EAEA,IAAIA,UAAA,GAAYC,IAAA,EAAK;AACnB,IAAA,OAAOA,IAAA,CAAA;AACT,GAAA;AAEA,EAAA,OAAOD,UAAA,CAAA;AACT,CAAA;AAEA,SAASE,aAAAA,CAAcV,MAAa,EAAES,IAAW,EAAA;EAC/C,OAAQ,CAAA,EAAEE,IAAA,CAAKC,KAAK,CAAEZ,MAAA,GAAQS,IAAG,GAAI,GAAA,CAAK,CAAE,CAAA,CAAA,CAAA;AAC9C,CAAA;AAEA,MAAMI,YAIDC,oBAAAA,CAAAA,kBAAA,CAUL,+JAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAb,IAAAA,aAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA,CAAA,CAAA;AAEH,MAAMC,QAAA,SAAiBC,SAAA,CAAU;AACtC,EAAA,IAAIC,MAAM;AACR,IAAA,OAAOf,MAAA,CAAO,IAAI,CAACgB,IAAI,CAACD,GAAG,CAAA,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAIE,QAAQ;IACV,OAAOf,QAAA,CAAS,IAAI,CAACc,IAAI,CAACC,KAAK,EAAE,IAAI,CAACF,GAAG,CAAA,CAAA;AAC3C,GAAA;AAEA,EAAA,IAAIG,aAAa;IACf,OAAOb,aAAA,CAAc,IAAI,CAACY,KAAK,EAAE,IAAI,CAACF,GAAG,CAAA,CAAA;AAC3C,GAAA;AAEA,EAAA,IAAII,UAAU;AACZ,IAAA,OAAO,IAAI,CAACF,KAAK,GAAG,IAAI,CAACF,GAAG,CAAA;AAC9B,GAAA;AAEA,EAAA,IAAIK,UAAU;IACZ,OAAOd,IAAA,CAAKC,KAAK,CAAC,IAAI,CAACY,OAAO,GAAG,GAAA,GAAM,GAAO,CAAA,GAAA,GAAA,CAAA;AAChD,GAAA;AAEA,EAAA;IAAAE,oBAAA,CAAAZ,kBAAA,CAwBA,qeAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAb,aAAA;QAAAwB,IAAA;AAAAd,QAAAA,SAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"progress.js","sources":["../../src/components/progress.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nexport interface Signature {\n Element: HTMLDivElement;\n Args: {\n /**\n * The current progress\n * This may be less than 0 or more than `max`,\n * but the resolved value (managed internally, and yielded out)\n * does not exceed the range [0, max]\n */ value: number;\n /**\n * The max value, defaults to 100\n */ max?: number;\n };\n Blocks: {\n default: [{\n /**\n * The indicator element with some state applied.\n * This can be used to style the progress of bar.\n */ Indicator: WithBoundArgs<typeof Indicator, 'value' | 'max' | 'percent'>;\n /**\n * The value as a percent of how far along the indicator should be\n * positioned, between 0 and 100.\n * Will be rounded to two decimal places.\n */ percent: number;\n /**\n * The value as a percent of how far along the indicator should be positioned,\n * between 0 and 1\n */ decimal: number;\n /**\n * The resolved value within the limits of the progress bar.\n */ value: number;\n }];\n };\n}\ntype ProgressState = 'indeterminate' | 'complete' | 'loading';\nconst DEFAULT_MAX = 100;\n/**\n * Non-negative, non-NaN, non-Infinite, positive, rational\n */ function isValidProgressNumber(value1: number | undefined | null): value is number {\n if (typeof value1 !== 'number') return false;\n if (!Number.isFinite(value1)) return false;\n return value1 >= 0;\n}\nfunction progressState(value1: number | undefined | null, maxValue1: number): ProgressState {\n return value1 == null ? 'indeterminate' : value1 === maxValue1 ? 'complete' : 'loading';\n}\nfunction getMax(userMax1: number | undefined | null): number {\n return isValidProgressNumber(userMax1) ? userMax1 : DEFAULT_MAX;\n}\nfunction getValue(userValue1: number | undefined | null, maxValue1: number): number {\n let max1 = getMax(maxValue1);\n if (!isValidProgressNumber(userValue1)) {\n return 0;\n }\n if (userValue1 > max1) {\n return max1;\n }\n return userValue1;\n}\nfunction getValueLabel(value1: number, max1: number) {\n return `${Math.round((value1 / max1) * 100)}%`;\n}\nconst Indicator: TOC<{\n Element: HTMLDivElement;\n Args: {\n max: number;\n value: number;\n percent: number;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n <div\n ...attributes\n data-max={{@max}}\n data-value={{@value}}\n data-state={{progressState @value @max}}\n data-percent={{@percent}}\n >\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport class Progress extends Component<Signature> {\n get max() {\n return getMax(this.args.max);\n }\n get value() {\n return getValue(this.args.value, this.max);\n }\n get valueLabel() {\n return getValueLabel(this.value, this.max);\n }\n get decimal() {\n return this.value / this.max;\n }\n get percent() {\n return Math.round(this.decimal * 100 * 100) / 100;\n }\n static{\n template(`\n <div\n ...attributes\n aria-valuemax={{this.max}}\n aria-valuemin=\"0\"\n aria-valuenow={{this.value}}\n aria-valuetext={{this.valueLabel}}\n role=\"progressbar\"\n data-value={{this.value}}\n data-state={{progressState this.value this.max}}\n data-max={{this.max}}\n data-min=\"0\"\n data-percent={{this.percent}}\n >\n\n {{yield\n (hash\n Indicator=(component Indicator value=this.value max=this.max percent=this.percent)\n value=this.value\n percent=this.percent\n decimal=this.decimal\n )\n }}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Progress;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wcm9ncmVzcy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgcHJvZ3Jlc3NcbiAgICAgKiBUaGlzIG1heSBiZSBsZXNzIHRoYW4gMCBvciBtb3JlIHRoYW4gYG1heGAsXG4gICAgICogYnV0IHRoZSByZXNvbHZlZCB2YWx1ZSAobWFuYWdlZCBpbnRlcm5hbGx5LCBhbmQgeWllbGRlZCBvdXQpXG4gICAgICogZG9lcyBub3QgZXhjZWVkIHRoZSByYW5nZSBbMCwgbWF4XVxuICAgICAqL1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIG1heCB2YWx1ZSwgZGVmYXVsdHMgdG8gMTAwXG4gICAgICovXG4gICAgbWF4PzogbnVtYmVyO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgaW5kaWNhdG9yIGVsZW1lbnQgd2l0aCBzb21lIHN0YXRlIGFwcGxpZWQuXG4gICAgICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gc3R5bGUgdGhlIHByb2dyZXNzIG9mIGJhci5cbiAgICAgICAgICovXG4gICAgICAgIEluZGljYXRvcjogV2l0aEJvdW5kQXJnczx0eXBlb2YgSW5kaWNhdG9yLCAndmFsdWUnIHwgJ21heCcgfCAncGVyY2VudCc-O1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHZhbHVlIGFzIGEgcGVyY2VudCBvZiBob3cgZmFyIGFsb25nIHRoZSBpbmRpY2F0b3Igc2hvdWxkIGJlXG4gICAgICAgICAqIHBvc2l0aW9uZWQsIGJldHdlZW4gMCBhbmQgMTAwLlxuICAgICAgICAgKiBXaWxsIGJlIHJvdW5kZWQgdG8gdHdvIGRlY2ltYWwgcGxhY2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgcGVyY2VudDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHZhbHVlIGFzIGEgcGVyY2VudCBvZiBob3cgZmFyIGFsb25nIHRoZSBpbmRpY2F0b3Igc2hvdWxkIGJlIHBvc2l0aW9uZWQsXG4gICAgICAgICAqIGJldHdlZW4gMCBhbmQgMVxuICAgICAgICAgKi9cbiAgICAgICAgZGVjaW1hbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHJlc29sdmVkIHZhbHVlIHdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufVxuXG50eXBlIFByb2dyZXNzU3RhdGUgPSAnaW5kZXRlcm1pbmF0ZScgfCAnY29tcGxldGUnIHwgJ2xvYWRpbmcnO1xuXG5jb25zdCBERUZBVUxUX01BWCA9IDEwMDtcblxuLyoqXG4gKiBOb24tbmVnYXRpdmUsIG5vbi1OYU4sIG5vbi1JbmZpbml0ZSwgcG9zaXRpdmUsIHJhdGlvbmFsXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRQcm9ncmVzc051bWJlcih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHZhbHVlIGlzIG51bWJlciB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSByZXR1cm4gZmFsc2U7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB2YWx1ZSA-PSAwO1xufVxuXG5mdW5jdGlvbiBwcm9ncmVzc1N0YXRlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsLCBtYXhWYWx1ZTogbnVtYmVyKTogUHJvZ3Jlc3NTdGF0ZSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cblxuZnVuY3Rpb24gZ2V0TWF4KHVzZXJNYXg6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpOiBudW1iZXIge1xuICByZXR1cm4gaXNWYWxpZFByb2dyZXNzTnVtYmVyKHVzZXJNYXgpID8gdXNlck1heCA6IERFRkFVTFRfTUFYO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSh1c2VyVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsIG1heFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgbWF4ID0gZ2V0TWF4KG1heFZhbHVlKTtcblxuICBpZiAoIWlzVmFsaWRQcm9ncmVzc051bWJlcih1c2VyVmFsdWUpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAodXNlclZhbHVlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiB1c2VyVmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlTGFiZWwodmFsdWU6IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgcmV0dXJuIGAke01hdGgucm91bmQoKHZhbHVlIC8gbWF4KSAqIDEwMCl9JWA7XG59XG5cbmNvbnN0IEluZGljYXRvcjogVE9DPHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHsgbWF4OiBudW1iZXI7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnQ6IG51bWJlciB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn0-ID0gPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgLi4uYXR0cmlidXRlc1xuICAgIGRhdGEtbWF4PXt7QG1heH19XG4gICAgZGF0YS12YWx1ZT17e0B2YWx1ZX19XG4gICAgZGF0YS1zdGF0ZT17e3Byb2dyZXNzU3RhdGUgQHZhbHVlIEBtYXh9fVxuICAgIGRhdGEtcGVyY2VudD17e0BwZXJjZW50fX1cbiAgPlxuICAgIHt7eWllbGR9fVxuICA8L2Rpdj5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3MgZXh0ZW5kcyBDb21wb25lbnQ8U2lnbmF0dXJlPiB7XG4gIGdldCBtYXgoKSB7XG4gICAgcmV0dXJuIGdldE1heCh0aGlzLmFyZ3MubWF4KTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5hcmdzLnZhbHVlLCB0aGlzLm1heCk7XG4gIH1cblxuICBnZXQgdmFsdWVMYWJlbCgpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWVMYWJlbCh0aGlzLnZhbHVlLCB0aGlzLm1heCk7XG4gIH1cblxuICBnZXQgZGVjaW1hbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSAvIHRoaXMubWF4O1xuICB9XG5cbiAgZ2V0IHBlcmNlbnQoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5kZWNpbWFsICogMTAwICogMTAwKSAvIDEwMDtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICBhcmlhLXZhbHVlbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgYXJpYS12YWx1ZW5vdz17e3RoaXMudmFsdWV9fVxuICAgICAgYXJpYS12YWx1ZXRleHQ9e3t0aGlzLnZhbHVlTGFiZWx9fVxuICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgIGRhdGEtdmFsdWU9e3t0aGlzLnZhbHVlfX1cbiAgICAgIGRhdGEtc3RhdGU9e3twcm9ncmVzc1N0YXRlIHRoaXMudmFsdWUgdGhpcy5tYXh9fVxuICAgICAgZGF0YS1tYXg9e3t0aGlzLm1heH19XG4gICAgICBkYXRhLW1pbj1cIjBcIlxuICAgICAgZGF0YS1wZXJjZW50PXt7dGhpcy5wZXJjZW50fX1cbiAgICA-XG5cbiAgICAgIHt7eWllbGRcbiAgICAgICAgKGhhc2hcbiAgICAgICAgICBJbmRpY2F0b3I9KGNvbXBvbmVudCBJbmRpY2F0b3IgdmFsdWU9dGhpcy52YWx1ZSBtYXg9dGhpcy5tYXggcGVyY2VudD10aGlzLnBlcmNlbnQpXG4gICAgICAgICAgdmFsdWU9dGhpcy52YWx1ZVxuICAgICAgICAgIHBlcmNlbnQ9dGhpcy5wZXJjZW50XG4gICAgICAgICAgZGVjaW1hbD10aGlzLmRlY2ltYWxcbiAgICAgICAgKVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZ3Jlc3M7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxJQUFJLFFBQVEsZ0JBQWdCO0FBRXJDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7QUFFckQsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0U7Ozs7O0tBS0MsR0FDRCxPQUFPLE1BQU07UUFDYjs7S0FFQyxHQUNELE1BQU0sTUFBTTs7SUFFZDtRQUNFO2dCQUVJOzs7U0FHQyxHQUNELFdBQVcscUJBQXFCLFdBQVcsVUFBVSxRQUFRO2dCQUM3RDs7OztTQUlDLEdBQ0QsU0FBUyxNQUFNO2dCQUNmOzs7U0FHQyxHQUNELFNBQVMsTUFBTTtnQkFDZjs7U0FFQyxHQUNELE9BQU8sTUFBTTs7OztLQU1oQixnQkFBZ0Isa0JBQWtCLGFBQWE7QUFFcEQsTUFBTSxjQUFjO0FBRXBCOztDQUVDLEdBQ0QsU0FBUyxzQkFBc0IsUUFBTyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksR0FBRyxTQUFTLE1BQU07SUFDL0UsSUFBSSxPQUFPLFdBQVUsVUFBVSxPQUFPO0lBQ3RDLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQyxTQUFRLE9BQU87SUFFcEMsT0FBTyxVQUFTO0FBQ2xCO0FBRUEsU0FBUyxjQUFjLFFBQU8sTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLEVBQUUsV0FBVSxNQUFNLEdBQUc7SUFDMUUsT0FBTyxVQUFTLE9BQU8sa0JBQWtCLFdBQVUsWUFBVyxhQUFhO0FBQzdFO0FBRUEsU0FBUyxPQUFPLFVBQVMsTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLEdBQUcsTUFBTTtJQUN6RCxPQUFPLHNCQUFzQixZQUFXLFdBQVU7QUFDcEQ7QUFFQSxTQUFTLFNBQVMsWUFBVyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksRUFBRSxXQUFVLE1BQU0sR0FBRyxNQUFNO0lBQy9FLElBQUksT0FBTSxPQUFPO0lBRWpCLElBQUksQ0FBQyxzQkFBc0IsYUFBWTtRQUNyQyxPQUFPO0lBQ1Q7SUFFQSxJQUFJLGFBQVksTUFBSztRQUNuQixPQUFPO0lBQ1Q7SUFFQSxPQUFPO0FBQ1Q7QUFFQSxTQUFTLGNBQWMsUUFBTyxNQUFNLEVBQUUsTUFBSyxNQUFNO0lBQy9DLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsU0FBUSxJQUFHLElBQUksS0FBSyxDQUFDLENBQUM7QUFDOUM7QUFFQSxNQUFNLFdBQVc7SUFDZixTQUFTO0lBQ1Q7UUFBUSxLQUFLLE1BQU07UUFBRSxPQUFPLE1BQU07UUFBRSxTQUFTLE1BQU07O0lBQ25EO1FBQVU7O0tBQ1AsU0FBVSxDQUFBOzs7Ozs7Ozs7O0FBVWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsT0FBTyxNQUFNLGlCQUFpQixVQUFVO0lBQ3RDLElBQUksTUFBTTtRQUNSLE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7SUFDN0I7SUFFQSxJQUFJLFFBQVE7UUFDVixPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUc7SUFDM0M7SUFFQSxJQUFJLGFBQWE7UUFDZixPQUFPLGNBQWMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztJQUMzQztJQUVBLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRztJQUM5QjtJQUVBLElBQUksVUFBVTtRQUNaLE9BQU8sS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLE9BQU87SUFDaEQ7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3QlYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBeEJBO0FBeUJaO0FBRUEsZUFBZSxTQUFTIn0"],"names":["DEFAULT_MAX","isValidProgressNumber","value1","Number","isFinite","progressState","maxValue1","getMax","userMax1","getValue","userValue1","max1","getValueLabel","Math","round","Indicator","precompileTemplate","strictMode","scope","templateOnly","Progress","Component","max","args","value","valueLabel","decimal","percent","setComponentTemplate","hash"],"mappings":";;;;;;AAmDA,MAAMA,WAAA,GAAc,GAAA,CAAA;AAEpB;;;AAGA,SAASC,qBAAAA,CAAsBC,MAAgC,EAAkB;AAC/E,EAAA,IAAI,OAAOA,MAAA,KAAU,QAAA,EAAU,OAAO,KAAA,CAAA;AACtC,EAAA,IAAI,CAACC,MAAA,CAAOC,QAAQ,CAACF,MAAA,GAAQ,OAAO,KAAA,CAAA;AAEpC,EAAA,OAAOA,MAAA,IAAS,CAAA,CAAA;AAClB,CAAA;AAEA,SAASG,aAAcH,CAAAA,MAAgC,EAAEI,SAAgB,EAAG;EAC1E,OAAOJ,MAAA,IAAS,IAAO,GAAA,eAAA,GAAkBA,MAAA,KAAUI,SAAA,GAAW,UAAa,GAAA,SAAA,CAAA;AAC7E,CAAA;AAEA,SAASC,MAAAA,CAAOC,QAAkC,EAAS;AACzD,EAAA,OAAOP,qBAAA,CAAsBO,QAAA,CAAWA,GAAAA,QAAA,GAAUR,WAAA,CAAA;AACpD,CAAA;AAEA,SAASS,QAASC,CAAAA,UAAoC,EAAEJ,SAAgB,EAAS;AAC/E,EAAA,IAAIK,IAAA,GAAMJ,MAAA,CAAOD,SAAA,CAAA,CAAA;AAEjB,EAAA,IAAI,CAACL,qBAAA,CAAsBS,UAAA,CAAY,EAAA;IACrC,OAAO,CAAA,CAAA;AACT,GAAA;EAEA,IAAIA,UAAA,GAAYC,IAAA,EAAK;AACnB,IAAA,OAAOA,IAAA,CAAA;AACT,GAAA;AAEA,EAAA,OAAOD,UAAA,CAAA;AACT,CAAA;AAEA,SAASE,aAAAA,CAAcV,MAAa,EAAES,IAAW,EAAA;EAC/C,OAAO,CAAA,EAAGE,IAAA,CAAKC,KAAK,CAAEZ,MAAA,GAAQS,IAAG,GAAI,GAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9C,CAAA;AAEA,MAAMI,YAIDC,oBAAAA,CAAAA,kBAAA,CAUL,+JAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAb,IAAAA,aAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA,CAAA,CAAA;AAEH,MAAMC,QAAA,SAAiBC,SAAA,CAAU;AACtC,EAAA,IAAIC,MAAM;AACR,IAAA,OAAOf,MAAA,CAAO,IAAI,CAACgB,IAAI,CAACD,GAAG,CAAA,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAIE,QAAQ;IACV,OAAOf,QAAA,CAAS,IAAI,CAACc,IAAI,CAACC,KAAK,EAAE,IAAI,CAACF,GAAG,CAAA,CAAA;AAC3C,GAAA;AAEA,EAAA,IAAIG,aAAa;IACf,OAAOb,aAAA,CAAc,IAAI,CAACY,KAAK,EAAE,IAAI,CAACF,GAAG,CAAA,CAAA;AAC3C,GAAA;AAEA,EAAA,IAAII,UAAU;AACZ,IAAA,OAAO,IAAI,CAACF,KAAK,GAAG,IAAI,CAACF,GAAG,CAAA;AAC9B,GAAA;AAEA,EAAA,IAAIK,UAAU;IACZ,OAAOd,IAAA,CAAKC,KAAK,CAAC,IAAI,CAACY,OAAO,GAAG,GAAA,GAAM,GAAO,CAAA,GAAA,GAAA,CAAA;AAChD,GAAA;AAEA,EAAA;IAAAE,oBAAA,CAAAZ,kBAAA,CAwBA,qeAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAb,aAAA;QAAAwB,IAAA;AAAAd,QAAAA,SAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"modifier.js","sources":["../../src/floating-ui/modifier.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport { autoUpdate, computePosition, flip, hide, offset, shift } from '@floating-ui/dom';\nimport Modifier from 'ember-modifier';\n\nimport { velcroData } from './middleware.ts';\n\nimport type {\n FlipOptions,\n HideOptions,\n Middleware,\n OffsetOptions,\n Placement,\n ShiftOptions,\n Strategy,\n} from '@floating-ui/dom';\n\nexport interface Signature {\n Element: HTMLElement;\n Args: {\n Positional: [referenceElement: string | HTMLElement | SVGElement];\n Named: {\n strategy?: Strategy;\n offsetOptions?: OffsetOptions;\n placement?: Placement;\n flipOptions?: FlipOptions;\n shiftOptions?: ShiftOptions;\n hideOptions?: HideOptions;\n middleware?: Middleware[];\n setVelcroData?: Middleware['fn'];\n };\n };\n}\n\nexport default class VelcroModifier extends Modifier<Signature> {\n modify(\n floatingElement: Signature['Element'],\n [_referenceElement]: Signature['Args']['Positional'],\n {\n strategy = 'fixed',\n offsetOptions = 0,\n placement = 'bottom',\n flipOptions,\n shiftOptions,\n middleware = [],\n setVelcroData,\n }: Signature['Args']['Named']\n ) {\n const referenceElement: null | HTMLElement | SVGElement =\n typeof _referenceElement === 'string'\n ? document.querySelector(_referenceElement)\n : _referenceElement;\n\n assert(\n 'no reference element defined',\n referenceElement instanceof HTMLElement || referenceElement instanceof SVGElement\n );\n\n assert(\n 'no floating element defined',\n floatingElement instanceof HTMLElement || _referenceElement instanceof SVGElement\n );\n\n assert(\n 'reference and floating elements cannot be the same element',\n floatingElement !== _referenceElement\n );\n\n assert('@middleware must be an array of one or more objects', Array.isArray(middleware));\n\n Object.assign(floatingElement.style, {\n position: strategy,\n top: '0',\n left: '0',\n });\n\n let update = async () => {\n let { middlewareData, x, y } = await computePosition(referenceElement, floatingElement, {\n middleware: [\n offset(offsetOptions),\n flip(flipOptions),\n shift(shiftOptions),\n ...middleware,\n hide({ strategy: 'referenceHidden' }),\n hide({ strategy: 'escaped' }),\n velcroData(),\n ],\n placement,\n strategy,\n });\n\n let referenceHidden = middlewareData.hide?.referenceHidden;\n\n Object.assign(floatingElement.style, {\n top: `${y}px`,\n left: `${x}px`,\n margin: 0,\n visibility: referenceHidden ? 'hidden' : 'visible',\n });\n\n setVelcroData?.(middlewareData['metadata']);\n };\n\n update();\n\n let cleanup = autoUpdate(referenceElement, floatingElement, update);\n\n registerDestructor(this, cleanup);\n }\n}\n"],"names":["VelcroModifier","Modifier","modify","floatingElement","_referenceElement","strategy","offsetOptions","placement","flipOptions","shiftOptions","middleware","setVelcroData","referenceElement","document","querySelector","assert","HTMLElement","SVGElement","Array","isArray","Object","assign","style","position","top","left","update","middlewareData","x","y","computePosition","offset","flip","shift","hide","velcroData","referenceHidden","margin","visibility","cleanup","autoUpdate","registerDestructor"],"mappings":";;;;;;AAmCe,MAAMA,cAAc,SAASC,QAAQ,CAAY;AAC9DC,EAAAA,MAAMA,CACJC,eAAqC,EACrC,CAACC,iBAAiB,CAAkC,EACpD;AACEC,IAAAA,QAAQ,GAAG,OAAO;AAClBC,IAAAA,aAAa,GAAG,CAAC;AACjBC,IAAAA,SAAS,GAAG,QAAQ;IACpBC,WAAW;IACXC,YAAY;AACZC,IAAAA,UAAU,GAAG,EAAE;AACfC,IAAAA,aAAAA;AAC0B,GAAC,EAC7B;AACA,IAAA,MAAMC,gBAAiD,GACrD,OAAOR,iBAAiB,KAAK,QAAQ,GACjCS,QAAQ,CAACC,aAAa,CAACV,iBAAiB,CAAC,GACzCA,iBAAiB,CAAA;IAEvBW,MAAM,CACJ,8BAA8B,EAC9BH,gBAAgB,YAAYI,WAAW,IAAIJ,gBAAgB,YAAYK,UACzE,CAAC,CAAA;IAEDF,MAAM,CACJ,6BAA6B,EAC7BZ,eAAe,YAAYa,WAAW,IAAIZ,iBAAiB,YAAYa,UACzE,CAAC,CAAA;AAEDF,IAAAA,MAAM,CACJ,4DAA4D,EAC5DZ,eAAe,KAAKC,iBACtB,CAAC,CAAA;IAEDW,MAAM,CAAC,qDAAqD,EAAEG,KAAK,CAACC,OAAO,CAACT,UAAU,CAAC,CAAC,CAAA;AAExFU,IAAAA,MAAM,CAACC,MAAM,CAAClB,eAAe,CAACmB,KAAK,EAAE;AACnCC,MAAAA,QAAQ,EAAElB,QAAQ;AAClBmB,MAAAA,GAAG,EAAE,GAAG;AACRC,MAAAA,IAAI,EAAE,GAAA;AACR,KAAC,CAAC,CAAA;AAEF,IAAA,IAAIC,MAAM,GAAG,YAAY;MACvB,IAAI;QAAEC,cAAc;QAAEC,CAAC;AAAEC,QAAAA,CAAAA;AAAE,OAAC,GAAG,MAAMC,eAAe,CAAClB,gBAAgB,EAAET,eAAe,EAAE;QACtFO,UAAU,EAAE,CACVqB,MAAM,CAACzB,aAAa,CAAC,EACrB0B,IAAI,CAACxB,WAAW,CAAC,EACjByB,KAAK,CAACxB,YAAY,CAAC,EACnB,GAAGC,UAAU,EACbwB,IAAI,CAAC;AAAE7B,UAAAA,QAAQ,EAAE,iBAAA;SAAmB,CAAC,EACrC6B,IAAI,CAAC;AAAE7B,UAAAA,QAAQ,EAAE,SAAA;AAAU,SAAC,CAAC,EAC7B8B,UAAU,EAAE,CACb;QACD5B,SAAS;AACTF,QAAAA,QAAAA;AACF,OAAC,CAAC,CAAA;AAEF,MAAA,IAAI+B,eAAe,GAAGT,cAAc,CAACO,IAAI,EAAEE,eAAe,CAAA;AAE1DhB,MAAAA,MAAM,CAACC,MAAM,CAAClB,eAAe,CAACmB,KAAK,EAAE;QACnCE,GAAG,EAAG,CAAEK,EAAAA,CAAE,CAAG,EAAA,CAAA;QACbJ,IAAI,EAAG,CAAEG,EAAAA,CAAE,CAAG,EAAA,CAAA;AACdS,QAAAA,MAAM,EAAE,CAAC;AACTC,QAAAA,UAAU,EAAEF,eAAe,GAAG,QAAQ,GAAG,SAAA;AAC3C,OAAC,CAAC,CAAA;AAEFzB,MAAAA,aAAa,GAAGgB,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAC5C,CAAA;AAEDD,IAAAA,MAAM,EAAE,CAAA;IAER,IAAIa,OAAO,GAAGC,UAAU,CAAC5B,gBAAgB,EAAET,eAAe,EAAEuB,MAAM,CAAC,CAAA;AAEnEe,IAAAA,kBAAkB,CAAC,IAAI,EAAEF,OAAO,CAAC,CAAA;AACnC,GAAA;AACF;;;;"}
1
+ {"version":3,"file":"modifier.js","sources":["../../src/floating-ui/modifier.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport { autoUpdate, computePosition, flip, hide, offset, shift } from '@floating-ui/dom';\nimport Modifier from 'ember-modifier';\n\nimport { velcroData } from './middleware.ts';\n\nimport type {\n FlipOptions,\n HideOptions,\n Middleware,\n OffsetOptions,\n Placement,\n ShiftOptions,\n Strategy,\n} from '@floating-ui/dom';\n\nexport interface Signature {\n Element: HTMLElement;\n Args: {\n Positional: [referenceElement: string | HTMLElement | SVGElement];\n Named: {\n strategy?: Strategy;\n offsetOptions?: OffsetOptions;\n placement?: Placement;\n flipOptions?: FlipOptions;\n shiftOptions?: ShiftOptions;\n hideOptions?: HideOptions;\n middleware?: Middleware[];\n setVelcroData?: Middleware['fn'];\n };\n };\n}\n\nexport default class VelcroModifier extends Modifier<Signature> {\n modify(\n floatingElement: Signature['Element'],\n [_referenceElement]: Signature['Args']['Positional'],\n {\n strategy = 'fixed',\n offsetOptions = 0,\n placement = 'bottom',\n flipOptions,\n shiftOptions,\n middleware = [],\n setVelcroData,\n }: Signature['Args']['Named']\n ) {\n const referenceElement: null | HTMLElement | SVGElement =\n typeof _referenceElement === 'string'\n ? document.querySelector(_referenceElement)\n : _referenceElement;\n\n assert(\n 'no reference element defined',\n referenceElement instanceof HTMLElement || referenceElement instanceof SVGElement\n );\n\n assert(\n 'no floating element defined',\n floatingElement instanceof HTMLElement || _referenceElement instanceof SVGElement\n );\n\n assert(\n 'reference and floating elements cannot be the same element',\n floatingElement !== _referenceElement\n );\n\n assert('@middleware must be an array of one or more objects', Array.isArray(middleware));\n\n Object.assign(floatingElement.style, {\n position: strategy,\n top: '0',\n left: '0',\n });\n\n let update = async () => {\n let { middlewareData, x, y } = await computePosition(referenceElement, floatingElement, {\n middleware: [\n offset(offsetOptions),\n flip(flipOptions),\n shift(shiftOptions),\n ...middleware,\n hide({ strategy: 'referenceHidden' }),\n hide({ strategy: 'escaped' }),\n velcroData(),\n ],\n placement,\n strategy,\n });\n\n let referenceHidden = middlewareData.hide?.referenceHidden;\n\n Object.assign(floatingElement.style, {\n top: `${y}px`,\n left: `${x}px`,\n margin: 0,\n visibility: referenceHidden ? 'hidden' : 'visible',\n });\n\n setVelcroData?.(middlewareData['metadata']);\n };\n\n update();\n\n let cleanup = autoUpdate(referenceElement, floatingElement, update);\n\n registerDestructor(this, cleanup);\n }\n}\n"],"names":["VelcroModifier","Modifier","modify","floatingElement","_referenceElement","strategy","offsetOptions","placement","flipOptions","shiftOptions","middleware","setVelcroData","referenceElement","document","querySelector","assert","HTMLElement","SVGElement","Array","isArray","Object","assign","style","position","top","left","update","middlewareData","x","y","computePosition","offset","flip","shift","hide","velcroData","referenceHidden","margin","visibility","cleanup","autoUpdate","registerDestructor"],"mappings":";;;;;;AAmCe,MAAMA,cAAc,SAASC,QAAQ,CAAY;AAC9DC,EAAAA,MAAMA,CACJC,eAAqC,EACrC,CAACC,iBAAiB,CAAkC,EACpD;AACEC,IAAAA,QAAQ,GAAG,OAAO;AAClBC,IAAAA,aAAa,GAAG,CAAC;AACjBC,IAAAA,SAAS,GAAG,QAAQ;IACpBC,WAAW;IACXC,YAAY;AACZC,IAAAA,UAAU,GAAG,EAAE;AACfC,IAAAA,aAAAA;AAC0B,GAAC,EAC7B;AACA,IAAA,MAAMC,gBAAiD,GACrD,OAAOR,iBAAiB,KAAK,QAAQ,GACjCS,QAAQ,CAACC,aAAa,CAACV,iBAAiB,CAAC,GACzCA,iBAAiB,CAAA;IAEvBW,MAAM,CACJ,8BAA8B,EAC9BH,gBAAgB,YAAYI,WAAW,IAAIJ,gBAAgB,YAAYK,UACzE,CAAC,CAAA;IAEDF,MAAM,CACJ,6BAA6B,EAC7BZ,eAAe,YAAYa,WAAW,IAAIZ,iBAAiB,YAAYa,UACzE,CAAC,CAAA;AAEDF,IAAAA,MAAM,CACJ,4DAA4D,EAC5DZ,eAAe,KAAKC,iBACtB,CAAC,CAAA;IAEDW,MAAM,CAAC,qDAAqD,EAAEG,KAAK,CAACC,OAAO,CAACT,UAAU,CAAC,CAAC,CAAA;AAExFU,IAAAA,MAAM,CAACC,MAAM,CAAClB,eAAe,CAACmB,KAAK,EAAE;AACnCC,MAAAA,QAAQ,EAAElB,QAAQ;AAClBmB,MAAAA,GAAG,EAAE,GAAG;AACRC,MAAAA,IAAI,EAAE,GAAA;AACR,KAAC,CAAC,CAAA;AAEF,IAAA,IAAIC,MAAM,GAAG,YAAY;MACvB,IAAI;QAAEC,cAAc;QAAEC,CAAC;AAAEC,QAAAA,CAAAA;AAAE,OAAC,GAAG,MAAMC,eAAe,CAAClB,gBAAgB,EAAET,eAAe,EAAE;QACtFO,UAAU,EAAE,CACVqB,MAAM,CAACzB,aAAa,CAAC,EACrB0B,IAAI,CAACxB,WAAW,CAAC,EACjByB,KAAK,CAACxB,YAAY,CAAC,EACnB,GAAGC,UAAU,EACbwB,IAAI,CAAC;AAAE7B,UAAAA,QAAQ,EAAE,iBAAA;SAAmB,CAAC,EACrC6B,IAAI,CAAC;AAAE7B,UAAAA,QAAQ,EAAE,SAAA;AAAU,SAAC,CAAC,EAC7B8B,UAAU,EAAE,CACb;QACD5B,SAAS;AACTF,QAAAA,QAAAA;AACF,OAAC,CAAC,CAAA;AAEF,MAAA,IAAI+B,eAAe,GAAGT,cAAc,CAACO,IAAI,EAAEE,eAAe,CAAA;AAE1DhB,MAAAA,MAAM,CAACC,MAAM,CAAClB,eAAe,CAACmB,KAAK,EAAE;QACnCE,GAAG,EAAE,CAAGK,EAAAA,CAAC,CAAI,EAAA,CAAA;QACbJ,IAAI,EAAE,CAAGG,EAAAA,CAAC,CAAI,EAAA,CAAA;AACdS,QAAAA,MAAM,EAAE,CAAC;AACTC,QAAAA,UAAU,EAAEF,eAAe,GAAG,QAAQ,GAAG,SAAA;AAC3C,OAAC,CAAC,CAAA;AAEFzB,MAAAA,aAAa,GAAGgB,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAC5C,CAAA;AAEDD,IAAAA,MAAM,EAAE,CAAA;IAER,IAAIa,OAAO,GAAGC,UAAU,CAAC5B,gBAAgB,EAAET,eAAe,EAAEuB,MAAM,CAAC,CAAA;AAEnEe,IAAAA,kBAAkB,CAAC,IAAI,EAAEF,OAAO,CAAC,CAAA;AACnC,GAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sources":["../../src/helpers/service.ts"],"sourcesContent":["import Helper from '@ember/component/helper';\nimport { assert } from '@ember/debug';\nimport { getOwner } from '@ember/owner';\n\nimport type { Registry } from '@ember/service';\nimport type Service from '@ember/service';\n\nexport interface Signature<Key extends keyof Registry> {\n Args: {\n Positional: [Key];\n };\n Return: Registry[Key] & Service;\n}\n\nexport default class GetService<Key extends keyof Registry> extends Helper<Signature<Key>> {\n compute(positional: [Key]): Registry[Key] & Service {\n let owner = getOwner(this);\n\n assert(`Could not get owner.`, owner);\n\n return owner.lookup(`service:${positional[0]}`) as Registry[Key] & Service;\n }\n}\n\nexport const service = GetService;\n"],"names":["GetService","Helper","compute","positional","owner","getOwner","assert","lookup","service"],"mappings":";;;;AAce,MAAMA,UAAU,SAAqCC,MAAM,CAAiB;EACzFC,OAAOA,CAACC,UAAiB,EAA2B;AAClD,IAAA,IAAIC,KAAK,GAAGC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAE1BC,IAAAA,MAAM,CAAE,CAAA,oBAAA,CAAqB,EAAEF,KAAK,CAAC,CAAA;IAErC,OAAOA,KAAK,CAACG,MAAM,CAAE,CAAA,QAAA,EAAUJ,UAAU,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC,CAAA;AACjD,GAAA;AACF,CAAA;AAEO,MAAMK,OAAO,GAAGR;;;;"}
1
+ {"version":3,"file":"service.js","sources":["../../src/helpers/service.ts"],"sourcesContent":["import Helper from '@ember/component/helper';\nimport { assert } from '@ember/debug';\nimport { getOwner } from '@ember/owner';\n\nimport type { Registry } from '@ember/service';\nimport type Service from '@ember/service';\n\nexport interface Signature<Key extends keyof Registry> {\n Args: {\n Positional: [Key];\n };\n Return: Registry[Key] & Service;\n}\n\nexport default class GetService<Key extends keyof Registry> extends Helper<Signature<Key>> {\n compute(positional: [Key]): Registry[Key] & Service {\n let owner = getOwner(this);\n\n assert(`Could not get owner.`, owner);\n\n return owner.lookup(`service:${positional[0]}`) as Registry[Key] & Service;\n }\n}\n\nexport const service = GetService;\n"],"names":["GetService","Helper","compute","positional","owner","getOwner","assert","lookup","service"],"mappings":";;;;AAce,MAAMA,UAAU,SAAqCC,MAAM,CAAiB;EACzFC,OAAOA,CAACC,UAAiB,EAA2B;AAClD,IAAA,IAAIC,KAAK,GAAGC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAE1BC,IAAAA,MAAM,CAAC,CAAA,oBAAA,CAAsB,EAAEF,KAAK,CAAC,CAAA;IAErC,OAAOA,KAAK,CAACG,MAAM,CAAC,CAAA,QAAA,EAAWJ,UAAU,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,CAAA;AACjD,GAAA;AACF,CAAA;AAEO,MAAMK,OAAO,GAAGR;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"proper-links.js","sources":["../src/proper-links.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\nimport { getOwner } from '@ember/owner';\n\nimport type EmberRouter from '@ember/routing/router';\nimport type RouterService from '@ember/routing/router-service';\n\ntype Constructor<T extends {} = {}> = { new (...args: any[]): T };\n\nexport interface Options {\n ignore?: string[];\n}\n\nexport function properLinks(\n options: Options\n): <Instance extends {}, Klass = { new (...args: any[]): Instance }>(klass: Klass) => Klass;\n\nexport function properLinks<Instance extends {}, Klass = { new (...args: any[]): Instance }>(\n klass: Klass\n): Klass;\n/**\n * @internal\n */\nexport function properLinks<Instance extends {}, Klass = { new (...args: any[]): Instance }>(\n options: Options,\n klass: Klass\n): Klass;\n\nexport function properLinks<Instance extends {}, Klass = { new (...args: any[]): Instance }>(\n ...args: [Options] | [Klass] | [Options, Klass]\n): Klass | ((klass: Klass) => Klass) {\n let options: Options = {};\n\n let klass: undefined | Klass = undefined;\n\n if (args.length === 2) {\n options = args[0] as Options;\n klass = args[1] as Klass;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n // TODO: how to get first arg type correct?\n return (klass: Klass) => properLinks(args[0] as any, klass);\n } else {\n klass = args[0];\n }\n }\n\n let ignore = options.ignore || [];\n\n assert(`klass was not defined. possibile incorrect arity given to properLinks`, klass);\n\n return class RouterWithProperLinks extends (klass as unknown as Constructor<EmberRouter>) {\n // SAFETY: we literally do not care about the args' type here,\n // because we just call super\n constructor(...args: any[]) {\n super(...args);\n\n setup(this, ignore);\n }\n } as unknown as Klass;\n}\n\n/**\n * Setup proper links without a decorator.\n * This function only requires that a framework object with an owner is passed.\n */\nexport function setup(parent: object, ignore?: string[]) {\n const handler = (event: MouseEvent) => {\n /**\n * event.target may not be an anchor,\n * it may be a span, svg, img, or any number of elements nested in <a>...</a>\n */\n let interactive = isLink(event);\n\n if (!interactive) return;\n\n let owner = getOwner(parent);\n\n assert('owner is not present', owner);\n\n let routerService = owner.lookup('service:router');\n\n handle(routerService, interactive, ignore ?? [], event);\n };\n\n document.body.addEventListener('click', handler, false);\n\n registerDestructor(parent, () => document.body.removeEventListener('click', handler));\n}\n\nexport function isLink(event: Event) {\n /**\n * Using composed path in case the link is removed from the DOM\n * before the event handler evaluates\n */\n let composedPath = event.composedPath();\n\n for (let element of composedPath) {\n if (element instanceof HTMLAnchorElement) {\n return element;\n }\n }\n}\n\nexport function handle(\n router: RouterService,\n element: HTMLAnchorElement,\n ignore: string[],\n event: MouseEvent\n) {\n if (!element) return;\n /**\n * If we don't have an href, the <a> is invalid.\n * If you're debugging your code and end up finding yourself\n * early-returning here, please add an href ;)\n */\n if (!element.href) return;\n\n /**\n * This is partially an escape hatch, but any time target is set,\n * we are usually wanting to escape the behavior of single-page-apps.\n *\n * Some folks desire to have in-SPA links, but still do native browser behavior\n * (which for the case of SPAs is a full page refresh)\n * but they can set target=\"_self\" to get that behavior back if they want.\n *\n * I expect that this'll be a super edge case, because the whole goal of\n * \"proper links\" is to do what is expected, always -- for in-app SPA links\n * as well as external, cross-domain links\n */\n if (element.target) return;\n\n /**\n * If the click is not a \"left click\" we don't want to intercept the event.\n * This allows folks to\n * - middle click (usually open the link in a new tab)\n * - right click (usually opens the context menu)\n */\n if (event.button !== 0) return;\n\n /**\n * for MacOS users, this default behavior opens the link in a new tab\n */\n if (event.metaKey) return;\n\n /**\n * for for everyone else, this default behavior opens the link in a new tab\n */\n if (event.ctrlKey) return;\n\n /**\n * The default behavior here downloads the link content\n */\n if (event.altKey) return;\n\n /**\n * The default behavior here opens the link in a new window\n */\n if (event.shiftKey) return;\n\n /**\n * If another event listener called event.preventDefault(), we don't want to proceed.\n */\n if (event.defaultPrevented) return;\n\n /**\n * The href includes the protocol/host/etc\n * In order to not have the page look like a full page refresh,\n * we need to chop that \"origin\" off, and just use the path\n */\n let url = new URL(element.href);\n\n /**\n * If the domains are different, we want to fall back to normal link behavior\n *\n */\n if (location.origin !== url.origin) return;\n\n /**\n * We can optionally declare some paths as ignored,\n * or \"let the browser do its default thing,\n * because there is other server-based routing to worry about\"\n */\n if (ignore.includes(url.pathname)) return;\n\n let fullHref = `${url.pathname}${url.search}${url.hash}`;\n\n let rootURL = router.rootURL;\n\n let withoutRootURL = fullHref.slice(rootURL.length);\n\n // re-add the \"root\" sigil\n // we removed it when we chopped off the rootURL,\n // because the rootURL often has this attached to it as well\n if (!withoutRootURL.startsWith('/')) {\n withoutRootURL = `/${withoutRootURL}`;\n }\n\n try {\n let routeInfo = router.recognize(fullHref);\n\n if (routeInfo) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n\n router.transitionTo(withoutRootURL);\n\n return false;\n }\n } catch (e) {\n if (e instanceof Error && e.name === 'UnrecognizedURLError') {\n return;\n }\n\n throw e;\n }\n}\n"],"names":["properLinks","args","options","klass","undefined","length","ignore","assert","RouterWithProperLinks","constructor","setup","parent","handler","event","interactive","isLink","owner","getOwner","routerService","lookup","handle","document","body","addEventListener","registerDestructor","removeEventListener","composedPath","element","HTMLAnchorElement","router","href","target","button","metaKey","ctrlKey","altKey","shiftKey","defaultPrevented","url","URL","location","origin","includes","pathname","fullHref","search","hash","rootURL","withoutRootURL","slice","startsWith","routeInfo","recognize","preventDefault","stopImmediatePropagation","stopPropagation","transitionTo","e","Error","name"],"mappings":"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"}
1
+ {"version":3,"file":"proper-links.js","sources":["../src/proper-links.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\nimport { getOwner } from '@ember/owner';\n\nimport type EmberRouter from '@ember/routing/router';\nimport type RouterService from '@ember/routing/router-service';\n\ntype Constructor<T extends {} = {}> = { new (...args: any[]): T };\n\nexport interface Options {\n ignore?: string[];\n}\n\nexport function properLinks(\n options: Options\n): <Instance extends {}, Klass = { new (...args: any[]): Instance }>(klass: Klass) => Klass;\n\nexport function properLinks<Instance extends {}, Klass = { new (...args: any[]): Instance }>(\n klass: Klass\n): Klass;\n/**\n * @internal\n */\nexport function properLinks<Instance extends {}, Klass = { new (...args: any[]): Instance }>(\n options: Options,\n klass: Klass\n): Klass;\n\nexport function properLinks<Instance extends {}, Klass = { new (...args: any[]): Instance }>(\n ...args: [Options] | [Klass] | [Options, Klass]\n): Klass | ((klass: Klass) => Klass) {\n let options: Options = {};\n\n let klass: undefined | Klass = undefined;\n\n if (args.length === 2) {\n options = args[0] as Options;\n klass = args[1] as Klass;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n // TODO: how to get first arg type correct?\n return (klass: Klass) => properLinks(args[0] as any, klass);\n } else {\n klass = args[0];\n }\n }\n\n let ignore = options.ignore || [];\n\n assert(`klass was not defined. possibile incorrect arity given to properLinks`, klass);\n\n return class RouterWithProperLinks extends (klass as unknown as Constructor<EmberRouter>) {\n // SAFETY: we literally do not care about the args' type here,\n // because we just call super\n constructor(...args: any[]) {\n super(...args);\n\n setup(this, ignore);\n }\n } as unknown as Klass;\n}\n\n/**\n * Setup proper links without a decorator.\n * This function only requires that a framework object with an owner is passed.\n */\nexport function setup(parent: object, ignore?: string[]) {\n const handler = (event: MouseEvent) => {\n /**\n * event.target may not be an anchor,\n * it may be a span, svg, img, or any number of elements nested in <a>...</a>\n */\n let interactive = isLink(event);\n\n if (!interactive) return;\n\n let owner = getOwner(parent);\n\n assert('owner is not present', owner);\n\n let routerService = owner.lookup('service:router');\n\n handle(routerService, interactive, ignore ?? [], event);\n };\n\n document.body.addEventListener('click', handler, false);\n\n registerDestructor(parent, () => document.body.removeEventListener('click', handler));\n}\n\nexport function isLink(event: Event) {\n /**\n * Using composed path in case the link is removed from the DOM\n * before the event handler evaluates\n */\n let composedPath = event.composedPath();\n\n for (let element of composedPath) {\n if (element instanceof HTMLAnchorElement) {\n return element;\n }\n }\n}\n\nexport function handle(\n router: RouterService,\n element: HTMLAnchorElement,\n ignore: string[],\n event: MouseEvent\n) {\n if (!element) return;\n /**\n * If we don't have an href, the <a> is invalid.\n * If you're debugging your code and end up finding yourself\n * early-returning here, please add an href ;)\n */\n if (!element.href) return;\n\n /**\n * This is partially an escape hatch, but any time target is set,\n * we are usually wanting to escape the behavior of single-page-apps.\n *\n * Some folks desire to have in-SPA links, but still do native browser behavior\n * (which for the case of SPAs is a full page refresh)\n * but they can set target=\"_self\" to get that behavior back if they want.\n *\n * I expect that this'll be a super edge case, because the whole goal of\n * \"proper links\" is to do what is expected, always -- for in-app SPA links\n * as well as external, cross-domain links\n */\n if (element.target) return;\n\n /**\n * If the click is not a \"left click\" we don't want to intercept the event.\n * This allows folks to\n * - middle click (usually open the link in a new tab)\n * - right click (usually opens the context menu)\n */\n if (event.button !== 0) return;\n\n /**\n * for MacOS users, this default behavior opens the link in a new tab\n */\n if (event.metaKey) return;\n\n /**\n * for for everyone else, this default behavior opens the link in a new tab\n */\n if (event.ctrlKey) return;\n\n /**\n * The default behavior here downloads the link content\n */\n if (event.altKey) return;\n\n /**\n * The default behavior here opens the link in a new window\n */\n if (event.shiftKey) return;\n\n /**\n * If another event listener called event.preventDefault(), we don't want to proceed.\n */\n if (event.defaultPrevented) return;\n\n /**\n * The href includes the protocol/host/etc\n * In order to not have the page look like a full page refresh,\n * we need to chop that \"origin\" off, and just use the path\n */\n let url = new URL(element.href);\n\n /**\n * If the domains are different, we want to fall back to normal link behavior\n *\n */\n if (location.origin !== url.origin) return;\n\n /**\n * We can optionally declare some paths as ignored,\n * or \"let the browser do its default thing,\n * because there is other server-based routing to worry about\"\n */\n if (ignore.includes(url.pathname)) return;\n\n let fullHref = `${url.pathname}${url.search}${url.hash}`;\n\n let rootURL = router.rootURL;\n\n let withoutRootURL = fullHref.slice(rootURL.length);\n\n // re-add the \"root\" sigil\n // we removed it when we chopped off the rootURL,\n // because the rootURL often has this attached to it as well\n if (!withoutRootURL.startsWith('/')) {\n withoutRootURL = `/${withoutRootURL}`;\n }\n\n try {\n let routeInfo = router.recognize(fullHref);\n\n if (routeInfo) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n\n router.transitionTo(withoutRootURL);\n\n return false;\n }\n } catch (e) {\n if (e instanceof Error && e.name === 'UnrecognizedURLError') {\n return;\n }\n\n throw e;\n }\n}\n"],"names":["properLinks","args","options","klass","undefined","length","ignore","assert","RouterWithProperLinks","constructor","setup","parent","handler","event","interactive","isLink","owner","getOwner","routerService","lookup","handle","document","body","addEventListener","registerDestructor","removeEventListener","composedPath","element","HTMLAnchorElement","router","href","target","button","metaKey","ctrlKey","altKey","shiftKey","defaultPrevented","url","URL","location","origin","includes","pathname","fullHref","search","hash","rootURL","withoutRootURL","slice","startsWith","routeInfo","recognize","preventDefault","stopImmediatePropagation","stopPropagation","transitionTo","e","Error","name"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"otp.js","sources":["../../src/test-support/otp.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { fillIn, find, settled } from '@ember/test-helpers';\n\n/**\n * @param {string} code the code to fill the input(s) with.\n * @param {string} [ selector ] if there are multiple OTP components on a page, this can be used to select one of them.\n */\nexport async function fillOTP(code: string, selector?: string) {\n let ancestor = selector ? find(selector) : document;\n\n assert(\n `Could not find ancestor element, does your selector match an existing element?`,\n ancestor\n );\n\n let fieldset =\n ancestor instanceof HTMLFieldSetElement ? ancestor : ancestor.querySelector('fieldset');\n\n assert(\n `Could not find containing fieldset element (this holds the OTP Input fields). Was the OTP component rendered?`,\n fieldset\n );\n\n let inputs = fieldset.querySelectorAll('input');\n\n assert(\n `code cannot be longer than the available inputs. code is of length ${code.length} but there are ${inputs.length}`,\n code.length <= inputs.length\n );\n\n let chars = code.split('');\n\n assert(`OTP Input for index 0 is missing!`, inputs[0]);\n assert(`Character at index 0 is missing`, chars[0]);\n\n for (let i = 0; i < chars.length; i++) {\n let input = inputs[i];\n let char = chars[i];\n\n assert(`Input at index ${i} is missing`, input);\n assert(`Character at index ${i} is missing`, char);\n\n input.value = char;\n }\n\n await fillIn(inputs[0], chars[0]);\n\n // Account for out-of-settled-system delay due to RAF debounce.\n await new Promise((resolve) => requestAnimationFrame(resolve));\n await settled();\n}\n"],"names":["fillOTP","code","selector","ancestor","find","document","assert","fieldset","HTMLFieldSetElement","querySelector","inputs","querySelectorAll","length","chars","split","i","input","char","value","fillIn","Promise","resolve","requestAnimationFrame","settled"],"mappings":";;;AAGA;AACA;AACA;AACA;AACO,eAAeA,OAAOA,CAACC,IAAY,EAAEC,QAAiB,EAAE;EAC7D,IAAIC,QAAQ,GAAGD,QAAQ,GAAGE,IAAI,CAACF,QAAQ,CAAC,GAAGG,QAAQ,CAAA;AAEnDC,EAAAA,MAAM,CACH,CAAA,8EAAA,CAA+E,EAChFH,QACF,CAAC,CAAA;AAED,EAAA,IAAII,QAAQ,GACVJ,QAAQ,YAAYK,mBAAmB,GAAGL,QAAQ,GAAGA,QAAQ,CAACM,aAAa,CAAC,UAAU,CAAC,CAAA;AAEzFH,EAAAA,MAAM,CACH,CAAA,6GAAA,CAA8G,EAC/GC,QACF,CAAC,CAAA;AAED,EAAA,IAAIG,MAAM,GAAGH,QAAQ,CAACI,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAE/CL,EAAAA,MAAM,CACH,CAAqEL,mEAAAA,EAAAA,IAAI,CAACW,MAAO,CAAA,eAAA,EAAiBF,MAAM,CAACE,MAAO,CAAC,CAAA,EAClHX,IAAI,CAACW,MAAM,IAAIF,MAAM,CAACE,MACxB,CAAC,CAAA;AAED,EAAA,IAAIC,KAAK,GAAGZ,IAAI,CAACa,KAAK,CAAC,EAAE,CAAC,CAAA;AAE1BR,EAAAA,MAAM,CAAE,CAAkC,iCAAA,CAAA,EAAEI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACtDJ,EAAAA,MAAM,CAAE,CAAgC,+BAAA,CAAA,EAAEO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnD,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACD,MAAM,EAAEG,CAAC,EAAE,EAAE;AACrC,IAAA,IAAIC,KAAK,GAAGN,MAAM,CAACK,CAAC,CAAC,CAAA;AACrB,IAAA,IAAIE,IAAI,GAAGJ,KAAK,CAACE,CAAC,CAAC,CAAA;AAEnBT,IAAAA,MAAM,CAAE,CAAiBS,eAAAA,EAAAA,CAAE,CAAY,WAAA,CAAA,EAAEC,KAAK,CAAC,CAAA;AAC/CV,IAAAA,MAAM,CAAE,CAAqBS,mBAAAA,EAAAA,CAAE,CAAY,WAAA,CAAA,EAAEE,IAAI,CAAC,CAAA;IAElDD,KAAK,CAACE,KAAK,GAAGD,IAAI,CAAA;AACpB,GAAA;EAEA,MAAME,MAAM,CAACT,MAAM,CAAC,CAAC,CAAC,EAAEG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;;AAEjC;EACA,MAAM,IAAIO,OAAO,CAAEC,OAAO,IAAKC,qBAAqB,CAACD,OAAO,CAAC,CAAC,CAAA;EAC9D,MAAME,OAAO,EAAE,CAAA;AACjB;;;;"}
1
+ {"version":3,"file":"otp.js","sources":["../../src/test-support/otp.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { fillIn, find, settled } from '@ember/test-helpers';\n\n/**\n * @param {string} code the code to fill the input(s) with.\n * @param {string} [ selector ] if there are multiple OTP components on a page, this can be used to select one of them.\n */\nexport async function fillOTP(code: string, selector?: string) {\n let ancestor = selector ? find(selector) : document;\n\n assert(\n `Could not find ancestor element, does your selector match an existing element?`,\n ancestor\n );\n\n let fieldset =\n ancestor instanceof HTMLFieldSetElement ? ancestor : ancestor.querySelector('fieldset');\n\n assert(\n `Could not find containing fieldset element (this holds the OTP Input fields). Was the OTP component rendered?`,\n fieldset\n );\n\n let inputs = fieldset.querySelectorAll('input');\n\n assert(\n `code cannot be longer than the available inputs. code is of length ${code.length} but there are ${inputs.length}`,\n code.length <= inputs.length\n );\n\n let chars = code.split('');\n\n assert(`OTP Input for index 0 is missing!`, inputs[0]);\n assert(`Character at index 0 is missing`, chars[0]);\n\n for (let i = 0; i < chars.length; i++) {\n let input = inputs[i];\n let char = chars[i];\n\n assert(`Input at index ${i} is missing`, input);\n assert(`Character at index ${i} is missing`, char);\n\n input.value = char;\n }\n\n await fillIn(inputs[0], chars[0]);\n\n // Account for out-of-settled-system delay due to RAF debounce.\n await new Promise((resolve) => requestAnimationFrame(resolve));\n await settled();\n}\n"],"names":["fillOTP","code","selector","ancestor","find","document","assert","fieldset","HTMLFieldSetElement","querySelector","inputs","querySelectorAll","length","chars","split","i","input","char","value","fillIn","Promise","resolve","requestAnimationFrame","settled"],"mappings":";;;AAGA;AACA;AACA;AACA;AACO,eAAeA,OAAOA,CAACC,IAAY,EAAEC,QAAiB,EAAE;EAC7D,IAAIC,QAAQ,GAAGD,QAAQ,GAAGE,IAAI,CAACF,QAAQ,CAAC,GAAGG,QAAQ,CAAA;AAEnDC,EAAAA,MAAM,CACJ,CAAA,8EAAA,CAAgF,EAChFH,QACF,CAAC,CAAA;AAED,EAAA,IAAII,QAAQ,GACVJ,QAAQ,YAAYK,mBAAmB,GAAGL,QAAQ,GAAGA,QAAQ,CAACM,aAAa,CAAC,UAAU,CAAC,CAAA;AAEzFH,EAAAA,MAAM,CACJ,CAAA,6GAAA,CAA+G,EAC/GC,QACF,CAAC,CAAA;AAED,EAAA,IAAIG,MAAM,GAAGH,QAAQ,CAACI,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAE/CL,EAAAA,MAAM,CACJ,CAAsEL,mEAAAA,EAAAA,IAAI,CAACW,MAAM,CAAA,eAAA,EAAkBF,MAAM,CAACE,MAAM,CAAE,CAAA,EAClHX,IAAI,CAACW,MAAM,IAAIF,MAAM,CAACE,MACxB,CAAC,CAAA;AAED,EAAA,IAAIC,KAAK,GAAGZ,IAAI,CAACa,KAAK,CAAC,EAAE,CAAC,CAAA;AAE1BR,EAAAA,MAAM,CAAC,CAAmC,iCAAA,CAAA,EAAEI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACtDJ,EAAAA,MAAM,CAAC,CAAiC,+BAAA,CAAA,EAAEO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnD,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACD,MAAM,EAAEG,CAAC,EAAE,EAAE;AACrC,IAAA,IAAIC,KAAK,GAAGN,MAAM,CAACK,CAAC,CAAC,CAAA;AACrB,IAAA,IAAIE,IAAI,GAAGJ,KAAK,CAACE,CAAC,CAAC,CAAA;AAEnBT,IAAAA,MAAM,CAAC,CAAkBS,eAAAA,EAAAA,CAAC,CAAa,WAAA,CAAA,EAAEC,KAAK,CAAC,CAAA;AAC/CV,IAAAA,MAAM,CAAC,CAAsBS,mBAAAA,EAAAA,CAAC,CAAa,WAAA,CAAA,EAAEE,IAAI,CAAC,CAAA;IAElDD,KAAK,CAACE,KAAK,GAAGD,IAAI,CAAA;AACpB,GAAA;EAEA,MAAME,MAAM,CAACT,MAAM,CAAC,CAAC,CAAC,EAAEG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;;AAEjC;EACA,MAAM,IAAIO,OAAO,CAAEC,OAAO,IAAKC,qBAAqB,CAACD,OAAO,CAAC,CAAC,CAAA;EAC9D,MAAME,OAAO,EAAE,CAAA;AACjB;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-primitives",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Making apps easier to build",
5
5
  "sideEffects": [
6
6
  "*.css"
@@ -85,24 +85,6 @@
85
85
  "type": "addon",
86
86
  "main": "addon-main.cjs",
87
87
  "app-js": {
88
- "./components/accordion.js": "./dist/_app_/components/accordion.js",
89
- "./components/avatar.js": "./dist/_app_/components/avatar.js",
90
- "./components/dialog.js": "./dist/_app_/components/dialog.js",
91
- "./components/external-link.js": "./dist/_app_/components/external-link.js",
92
- "./components/form.js": "./dist/_app_/components/form.js",
93
- "./components/link.js": "./dist/_app_/components/link.js",
94
- "./components/menu.js": "./dist/_app_/components/menu.js",
95
- "./components/popover.js": "./dist/_app_/components/popover.js",
96
- "./components/portal-targets.js": "./dist/_app_/components/portal-targets.js",
97
- "./components/portal.js": "./dist/_app_/components/portal.js",
98
- "./components/progress.js": "./dist/_app_/components/progress.js",
99
- "./components/scroller.js": "./dist/_app_/components/scroller.js",
100
- "./components/shadowed.js": "./dist/_app_/components/shadowed.js",
101
- "./components/switch.js": "./dist/_app_/components/switch.js",
102
- "./components/toggle-group.js": "./dist/_app_/components/toggle-group.js",
103
- "./components/toggle.js": "./dist/_app_/components/toggle.js",
104
- "./helpers/link.js": "./dist/_app_/helpers/link.js",
105
- "./helpers/service.js": "./dist/_app_/helpers/service.js",
106
88
  "./services/ember-primitives/setup.js": "./dist/_app_/services/ember-primitives/setup.js"
107
89
  }
108
90
  },
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/accordion";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/avatar";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/dialog";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/external-link";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/form";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/link";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/menu";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/popover";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/portal-targets";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/portal";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/progress";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/scroller";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/shadowed";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/switch";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/toggle-group";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/components/toggle";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/helpers/link";
@@ -1 +0,0 @@
1
- export { default } from "ember-primitives/helpers/service";