@aurelia-mdc-web/all 9.3.0-au2 → 9.3.1-au2

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.
Files changed (27) hide show
  1. package/dist/chips/mdc-chip/mdc-chip.js.map +1 -1
  2. package/dist/data-table/mdc-data-table.js.map +1 -1
  3. package/dist/dialog/mdc-dialog-service.js.map +1 -1
  4. package/dist/expandable/mdc-expandable.js.map +1 -1
  5. package/dist/form-field/mdc-form-field.js.map +1 -1
  6. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.js.map +1 -1
  7. package/dist/list/mdc-list-item/mdc-list-item.js.map +1 -1
  8. package/dist/menu/mdc-menu.js.map +1 -1
  9. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.js.map +1 -1
  10. package/dist/select/mdc-select-value-observer.js.map +1 -1
  11. package/dist/select/mdc-select.js.map +1 -1
  12. package/dist/text-field/mdc-text-field.js.map +1 -1
  13. package/dist/tree-view/mdc-tree-view.js.map +1 -1
  14. package/package.json +2 -2
  15. package/src/chips/mdc-chip/mdc-chip.ts +290 -290
  16. package/src/data-table/mdc-data-table.ts +432 -432
  17. package/src/dialog/mdc-dialog-service.ts +80 -80
  18. package/src/expandable/mdc-expandable.ts +104 -104
  19. package/src/form-field/mdc-form-field.ts +60 -60
  20. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.ts +108 -108
  21. package/src/list/mdc-list-item/mdc-list-item.ts +136 -136
  22. package/src/menu/mdc-menu.ts +340 -340
  23. package/src/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.ts +170 -170
  24. package/src/select/mdc-select-value-observer.ts +346 -346
  25. package/src/select/mdc-select.ts +480 -480
  26. package/src/text-field/mdc-text-field.ts +535 -535
  27. package/src/tree-view/mdc-tree-view.ts +147 -147
@@ -1 +1 @@
1
- {"version":3,"file":"mdc-select-value-observer.js","sourceRoot":"","sources":["../../src/select/mdc-select-value-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n subscriberCollection,\n AccessorType,\n} from '@aurelia/runtime';\n\nimport type {\n ICollectionObserver,\n IndexMap,\n IObserver,\n IObserverLocator,\n ISubscriber,\n ISubscriberCollection,\n} from '@aurelia/runtime';\n\nimport { INode, CustomElement } from '@aurelia/runtime-html';\nimport { IMdcSelectElement, MdcSelect } from './mdc-select';\n\n// const hasOwn = Object.prototype.hasOwnProperty;\nconst childObserverOptions = {\n childList: true,\n subtree: true,\n characterData: true\n};\n\n// function defaultMatcher(a: unknown, b: unknown): boolean {\n// return a === b;\n// }\n\nexport interface IOptionElement extends HTMLOptionElement {\n model?: unknown;\n}\n\nexport interface MdcSelectValueObserver extends\n ISubscriberCollection { }\n\nexport interface INodeObserverConfigBase {\n /**\n * Indicates the list of events can be used to observe a particular property\n */\n readonly events: string[];\n /**\n * Indicates whether this property is readonly, so observer wont attempt to assign value\n * example: input.files\n */\n readonly readonly?: boolean;\n /**\n * A default value to assign to the corresponding property if the incoming value is null/undefined\n */\n readonly default?: unknown;\n}\n\n\nexport interface INodeObserver extends IObserver {\n /**\n * Instruct this node observer event observation behavior\n */\n useConfig(config: INodeObserverConfigBase): void;\n}\n\n@subscriberCollection()\nexport class MdcSelectValueObserver implements INodeObserver {\n public currentValue: unknown = void 0;\n public oldValue: unknown = void 0;\n\n public readonly obj: IMdcSelectElement;\n public config: INodeObserverConfigBase;\n\n public hasChanges: boolean = false;\n // ObserverType.Layout is not always true\n // but for simplicity, always treat as such\n public type: AccessorType = (AccessorType.Node | AccessorType.Observer | AccessorType.Layout) as AccessorType;\n\n public arrayObserver?: ICollectionObserver<'array'> = void 0;\n public nodeObserver?: MutationObserver = void 0;\n\n private observing: boolean = false;\n private listened: boolean = false;\n\n public constructor(\n obj: INode,\n // deepscan-disable-next-line\n _key: PropertyKey,\n config: INodeObserverConfigBase,\n _: IObserverLocator\n ) {\n this.obj = obj as unknown as IMdcSelectElement;\n this.config = config;\n }\n\n optionsWereSet: boolean;\n\n setElementValue(skipNotify: boolean) {\n // do not pass the value to the element if options has never been set\n // the value will be passed on when options do arrive\n if (this.optionsWereSet) {\n CustomElement.for<MdcSelect>(this.obj).viewModel.setValue(this.currentValue, skipNotify);\n }\n }\n\n public getValue(): unknown {\n // is it safe to assume the observer has the latest value?\n // todo: ability to turn on/off cache based on type\n return this.observing\n ? this.currentValue\n // : this.obj.multiple\n // ? Array.from(this.obj.options).map(o => o.value)\n : this.obj.value;\n }\n\n public setValue(newValue: unknown): void {\n this.currentValue = newValue;\n this.hasChanges = newValue !== this.oldValue;\n // this.observeArray(newValue instanceof Array ? newValue : null);\n if (this.optionsWereSet) {\n this.flushChanges();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public flushChanges(): void {\n if (this.hasChanges) {\n this.hasChanges = false;\n this.synchronizeOptions();\n }\n }\n\n public handleCollectionChange(): void {\n // always sync \"selected\" property of <options/>\n // immediately whenever the array notifies its mutation\n this.synchronizeOptions();\n }\n\n public notify(): void {\n const oldValue = this.oldValue;\n const newValue = this.currentValue;\n if (newValue === oldValue) {\n return;\n }\n this.subs.notify(newValue, oldValue);\n }\n\n public handleEvent(): void {\n const shouldNotify = this.synchronizeValue();\n if (shouldNotify) {\n this.subs.notify(this.currentValue, this.oldValue);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public synchronizeOptions(_indexMap?: IndexMap): void {\n this.setElementValue(true);\n // const { currentValue, obj } = this;\n // // const isArray = Array.isArray(currentValue);\n // // const matcher = obj.matcher !== void 0 ? obj.matcher : defaultMatcher;\n // // const matcher = defaultMatcher;\n // const options = CustomElement.for<MdcSelect>(obj).viewModel.items;\n // let i = options.length;\n\n // while (i-- > 0) {\n // // const option = options[i];\n // // const optionValue = hasOwn.call(option, 'model') ? option.model : option.value;\n // // const optionValue = option.value;\n // // if (isArray) {\n // // option.selected = (currentValue as unknown[]).findIndex(item => !!matcher(optionValue, item)) !== -1;\n // // continue;\n // // }\n // if (!this.optionsWereSet) {\n // this.optionsWereSet = true;\n // this.setElementValue(true);\n // }\n // // option.selected = !!matcher(optionValue, currentValue);\n // }\n }\n\n public synchronizeValue(): boolean {\n // Spec for synchronizing value from `<select/>` to `SelectObserver`\n // When synchronizing value to observed <select/> element, do the following steps:\n // A. If `<select/>` is multiple\n // 1. Check if current value, called `currentValue` is an array\n // a. If not an array, return true to signal value has changed\n // b. If is an array:\n // i. gather all current selected <option/>, in to array called `values`\n // ii. loop through the `currentValue` array and remove items that are nolonger selected based on matcher\n // iii. loop through the `values` array and add items that are selected based on matcher\n // iv. Return false to signal value hasn't changed\n // B. If the select is single\n // 1. Let `value` equal the first selected option, if no option selected, then `value` is `null`\n // 2. assign `this.currentValue` to `this.oldValue`\n // 3. assign `value` to `this.currentValue`\n // 4. return `true` to signal value has changed\n const obj = this.obj;\n const options = CustomElement.for<MdcSelect>(obj).viewModel.items ?? [];\n const len = options.length;\n // const currentValue = this.currentValue;\n let i = 0;\n\n /*\n if (obj.multiple) {\n // A.\n if (!(currentValue instanceof Array)) {\n // A.1.a\n return true;\n }\n // A.1.b\n // multi select\n let option: IOptionElement;\n const matcher = obj.matcher ?? defaultMatcher;\n // A.1.b.i\n const values: unknown[] = [];\n while (i < len) {\n option = options[i];\n if (option.selected) {\n values.push(hasOwn.call(option, 'model')\n ? option.model\n : option.value\n );\n }\n ++i;\n }\n // A.1.b.ii\n i = 0;\n while (i < currentValue.length) {\n const a = currentValue[i];\n // Todo: remove arrow fn\n if (values.findIndex(b => !!matcher(a, b)) === -1) {\n currentValue.splice(i, 1);\n } else {\n ++i;\n }\n }\n // A.1.b.iii\n i = 0;\n while (i < values.length) {\n const a = values[i];\n // Todo: remove arrow fn\n if (currentValue.findIndex(b => !!matcher(a, b)) === -1) {\n currentValue.push(a);\n }\n ++i;\n }\n // A.1.b.iv\n return false;\n }\n */\n // B. single select\n // B.1\n let value: unknown = null;\n while (i < len) {\n const option = options[i];\n if (option.value === this.obj.value) {\n // value = hasOwn.call(option, 'model') ? option.model : option.value;\n value = option.value;\n break;\n }\n ++i;\n }\n // B.2\n this.oldValue = this.currentValue;\n // B.3\n this.currentValue = value;\n // B.4\n return true;\n }\n\n private start(): void {\n const vm = CustomElement.for<MdcSelect>(this.obj).viewModel;\n vm.initialised.then(() => {\n (this.nodeObserver = new this.obj.ownerDocument.defaultView!.MutationObserver(records => this.handleNodeChange(records)))\n .observe(vm.menu.root, childObserverOptions);\n // this.observeArray(this.currentValue instanceof Array ? this.currentValue : null);\n this.observing = true;\n if (vm.items?.length) {\n this.optionsWereSet = true;\n this.synchronizeOptions();\n }\n });\n }\n\n private stop(): void {\n this.optionsWereSet = false;\n this.nodeObserver?.disconnect();\n this.arrayObserver?.unsubscribe(this);\n this.nodeObserver\n = this.arrayObserver\n = void 0;\n this.observing = false;\n }\n\n // todo: observe all kind of collection\n // private observeArray(array: unknown[] | null): void {\n // this.arrayObserver?.unsubscribe(this);\n // this.arrayObserver = void 0;\n // if (array !== null) {\n // if (!this.obj.multiple) {\n // throw new Error('Only null or Array instances can be bound to a multi-select.');\n // }\n // (this.arrayObserver = this.observerLocator.getArrayObserver(array)).subscribe(this);\n // }\n // }\n\n public handleNodeChange(records: MutationRecord[]): void {\n if (records.find(x => x.type === 'childList'\n && (Array.from(x.addedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM')\n || Array.from(x.removedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM'))\n )) {\n this.optionsWereSet = true;\n this.synchronizeOptions();\n const shouldNotify = this.synchronizeValue();\n if (shouldNotify) {\n this.notify();\n }\n }\n }\n\n public subscribe(subscriber: ISubscriber): void {\n if (this.subs.add(subscriber) && this.subs.count === 1) {\n for (const e of this.config.events) {\n this.obj.addEventListener(e, this);\n }\n this.listened = true;\n this.start();\n }\n }\n\n public unsubscribe(subscriber: ISubscriber): void {\n if (this.subs.remove(subscriber) && this.subs.count === 0) {\n for (const e of this.config.events) {\n this.obj.removeEventListener(e, this);\n }\n this.listened = false;\n this.stop();\n }\n }\n\n useConfig(config: INodeObserverConfigBase): void {\n this.config = config;\n if (this.listened) {\n for (const e of this.config.events) {\n this.obj.removeEventListener(e, this);\n }\n for (const e of this.config.events) {\n this.obj.addEventListener(e, this);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"mdc-select-value-observer.js","sourceRoot":"","sources":["../../src/select/mdc-select-value-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n subscriberCollection,\r\n AccessorType,\r\n} from '@aurelia/runtime';\r\n\r\nimport type {\r\n ICollectionObserver,\r\n IndexMap,\r\n IObserver,\r\n IObserverLocator,\r\n ISubscriber,\r\n ISubscriberCollection,\r\n} from '@aurelia/runtime';\r\n\r\nimport { INode, CustomElement } from '@aurelia/runtime-html';\r\nimport { IMdcSelectElement, MdcSelect } from './mdc-select';\r\n\r\n// const hasOwn = Object.prototype.hasOwnProperty;\r\nconst childObserverOptions = {\r\n childList: true,\r\n subtree: true,\r\n characterData: true\r\n};\r\n\r\n// function defaultMatcher(a: unknown, b: unknown): boolean {\r\n// return a === b;\r\n// }\r\n\r\nexport interface IOptionElement extends HTMLOptionElement {\r\n model?: unknown;\r\n}\r\n\r\nexport interface MdcSelectValueObserver extends\r\n ISubscriberCollection { }\r\n\r\nexport interface INodeObserverConfigBase {\r\n /**\r\n * Indicates the list of events can be used to observe a particular property\r\n */\r\n readonly events: string[];\r\n /**\r\n * Indicates whether this property is readonly, so observer wont attempt to assign value\r\n * example: input.files\r\n */\r\n readonly readonly?: boolean;\r\n /**\r\n * A default value to assign to the corresponding property if the incoming value is null/undefined\r\n */\r\n readonly default?: unknown;\r\n}\r\n\r\n\r\nexport interface INodeObserver extends IObserver {\r\n /**\r\n * Instruct this node observer event observation behavior\r\n */\r\n useConfig(config: INodeObserverConfigBase): void;\r\n}\r\n\r\n@subscriberCollection()\r\nexport class MdcSelectValueObserver implements INodeObserver {\r\n public currentValue: unknown = void 0;\r\n public oldValue: unknown = void 0;\r\n\r\n public readonly obj: IMdcSelectElement;\r\n public config: INodeObserverConfigBase;\r\n\r\n public hasChanges: boolean = false;\r\n // ObserverType.Layout is not always true\r\n // but for simplicity, always treat as such\r\n public type: AccessorType = (AccessorType.Node | AccessorType.Observer | AccessorType.Layout) as AccessorType;\r\n\r\n public arrayObserver?: ICollectionObserver<'array'> = void 0;\r\n public nodeObserver?: MutationObserver = void 0;\r\n\r\n private observing: boolean = false;\r\n private listened: boolean = false;\r\n\r\n public constructor(\r\n obj: INode,\r\n // deepscan-disable-next-line\r\n _key: PropertyKey,\r\n config: INodeObserverConfigBase,\r\n _: IObserverLocator\r\n ) {\r\n this.obj = obj as unknown as IMdcSelectElement;\r\n this.config = config;\r\n }\r\n\r\n optionsWereSet: boolean;\r\n\r\n setElementValue(skipNotify: boolean) {\r\n // do not pass the value to the element if options has never been set\r\n // the value will be passed on when options do arrive\r\n if (this.optionsWereSet) {\r\n CustomElement.for<MdcSelect>(this.obj).viewModel.setValue(this.currentValue, skipNotify);\r\n }\r\n }\r\n\r\n public getValue(): unknown {\r\n // is it safe to assume the observer has the latest value?\r\n // todo: ability to turn on/off cache based on type\r\n return this.observing\r\n ? this.currentValue\r\n // : this.obj.multiple\r\n // ? Array.from(this.obj.options).map(o => o.value)\r\n : this.obj.value;\r\n }\r\n\r\n public setValue(newValue: unknown): void {\r\n this.currentValue = newValue;\r\n this.hasChanges = newValue !== this.oldValue;\r\n // this.observeArray(newValue instanceof Array ? newValue : null);\r\n if (this.optionsWereSet) {\r\n this.flushChanges();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public flushChanges(): void {\r\n if (this.hasChanges) {\r\n this.hasChanges = false;\r\n this.synchronizeOptions();\r\n }\r\n }\r\n\r\n public handleCollectionChange(): void {\r\n // always sync \"selected\" property of <options/>\r\n // immediately whenever the array notifies its mutation\r\n this.synchronizeOptions();\r\n }\r\n\r\n public notify(): void {\r\n const oldValue = this.oldValue;\r\n const newValue = this.currentValue;\r\n if (newValue === oldValue) {\r\n return;\r\n }\r\n this.subs.notify(newValue, oldValue);\r\n }\r\n\r\n public handleEvent(): void {\r\n const shouldNotify = this.synchronizeValue();\r\n if (shouldNotify) {\r\n this.subs.notify(this.currentValue, this.oldValue);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public synchronizeOptions(_indexMap?: IndexMap): void {\r\n this.setElementValue(true);\r\n // const { currentValue, obj } = this;\r\n // // const isArray = Array.isArray(currentValue);\r\n // // const matcher = obj.matcher !== void 0 ? obj.matcher : defaultMatcher;\r\n // // const matcher = defaultMatcher;\r\n // const options = CustomElement.for<MdcSelect>(obj).viewModel.items;\r\n // let i = options.length;\r\n\r\n // while (i-- > 0) {\r\n // // const option = options[i];\r\n // // const optionValue = hasOwn.call(option, 'model') ? option.model : option.value;\r\n // // const optionValue = option.value;\r\n // // if (isArray) {\r\n // // option.selected = (currentValue as unknown[]).findIndex(item => !!matcher(optionValue, item)) !== -1;\r\n // // continue;\r\n // // }\r\n // if (!this.optionsWereSet) {\r\n // this.optionsWereSet = true;\r\n // this.setElementValue(true);\r\n // }\r\n // // option.selected = !!matcher(optionValue, currentValue);\r\n // }\r\n }\r\n\r\n public synchronizeValue(): boolean {\r\n // Spec for synchronizing value from `<select/>` to `SelectObserver`\r\n // When synchronizing value to observed <select/> element, do the following steps:\r\n // A. If `<select/>` is multiple\r\n // 1. Check if current value, called `currentValue` is an array\r\n // a. If not an array, return true to signal value has changed\r\n // b. If is an array:\r\n // i. gather all current selected <option/>, in to array called `values`\r\n // ii. loop through the `currentValue` array and remove items that are nolonger selected based on matcher\r\n // iii. loop through the `values` array and add items that are selected based on matcher\r\n // iv. Return false to signal value hasn't changed\r\n // B. If the select is single\r\n // 1. Let `value` equal the first selected option, if no option selected, then `value` is `null`\r\n // 2. assign `this.currentValue` to `this.oldValue`\r\n // 3. assign `value` to `this.currentValue`\r\n // 4. return `true` to signal value has changed\r\n const obj = this.obj;\r\n const options = CustomElement.for<MdcSelect>(obj).viewModel.items ?? [];\r\n const len = options.length;\r\n // const currentValue = this.currentValue;\r\n let i = 0;\r\n\r\n /*\r\n if (obj.multiple) {\r\n // A.\r\n if (!(currentValue instanceof Array)) {\r\n // A.1.a\r\n return true;\r\n }\r\n // A.1.b\r\n // multi select\r\n let option: IOptionElement;\r\n const matcher = obj.matcher ?? defaultMatcher;\r\n // A.1.b.i\r\n const values: unknown[] = [];\r\n while (i < len) {\r\n option = options[i];\r\n if (option.selected) {\r\n values.push(hasOwn.call(option, 'model')\r\n ? option.model\r\n : option.value\r\n );\r\n }\r\n ++i;\r\n }\r\n // A.1.b.ii\r\n i = 0;\r\n while (i < currentValue.length) {\r\n const a = currentValue[i];\r\n // Todo: remove arrow fn\r\n if (values.findIndex(b => !!matcher(a, b)) === -1) {\r\n currentValue.splice(i, 1);\r\n } else {\r\n ++i;\r\n }\r\n }\r\n // A.1.b.iii\r\n i = 0;\r\n while (i < values.length) {\r\n const a = values[i];\r\n // Todo: remove arrow fn\r\n if (currentValue.findIndex(b => !!matcher(a, b)) === -1) {\r\n currentValue.push(a);\r\n }\r\n ++i;\r\n }\r\n // A.1.b.iv\r\n return false;\r\n }\r\n */\r\n // B. single select\r\n // B.1\r\n let value: unknown = null;\r\n while (i < len) {\r\n const option = options[i];\r\n if (option.value === this.obj.value) {\r\n // value = hasOwn.call(option, 'model') ? option.model : option.value;\r\n value = option.value;\r\n break;\r\n }\r\n ++i;\r\n }\r\n // B.2\r\n this.oldValue = this.currentValue;\r\n // B.3\r\n this.currentValue = value;\r\n // B.4\r\n return true;\r\n }\r\n\r\n private start(): void {\r\n const vm = CustomElement.for<MdcSelect>(this.obj).viewModel;\r\n vm.initialised.then(() => {\r\n (this.nodeObserver = new this.obj.ownerDocument.defaultView!.MutationObserver(records => this.handleNodeChange(records)))\r\n .observe(vm.menu.root, childObserverOptions);\r\n // this.observeArray(this.currentValue instanceof Array ? this.currentValue : null);\r\n this.observing = true;\r\n if (vm.items?.length) {\r\n this.optionsWereSet = true;\r\n this.synchronizeOptions();\r\n }\r\n });\r\n }\r\n\r\n private stop(): void {\r\n this.optionsWereSet = false;\r\n this.nodeObserver?.disconnect();\r\n this.arrayObserver?.unsubscribe(this);\r\n this.nodeObserver\r\n = this.arrayObserver\r\n = void 0;\r\n this.observing = false;\r\n }\r\n\r\n // todo: observe all kind of collection\r\n // private observeArray(array: unknown[] | null): void {\r\n // this.arrayObserver?.unsubscribe(this);\r\n // this.arrayObserver = void 0;\r\n // if (array !== null) {\r\n // if (!this.obj.multiple) {\r\n // throw new Error('Only null or Array instances can be bound to a multi-select.');\r\n // }\r\n // (this.arrayObserver = this.observerLocator.getArrayObserver(array)).subscribe(this);\r\n // }\r\n // }\r\n\r\n public handleNodeChange(records: MutationRecord[]): void {\r\n if (records.find(x => x.type === 'childList'\r\n && (Array.from(x.addedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM')\r\n || Array.from(x.removedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM'))\r\n )) {\r\n this.optionsWereSet = true;\r\n this.synchronizeOptions();\r\n const shouldNotify = this.synchronizeValue();\r\n if (shouldNotify) {\r\n this.notify();\r\n }\r\n }\r\n }\r\n\r\n public subscribe(subscriber: ISubscriber): void {\r\n if (this.subs.add(subscriber) && this.subs.count === 1) {\r\n for (const e of this.config.events) {\r\n this.obj.addEventListener(e, this);\r\n }\r\n this.listened = true;\r\n this.start();\r\n }\r\n }\r\n\r\n public unsubscribe(subscriber: ISubscriber): void {\r\n if (this.subs.remove(subscriber) && this.subs.count === 0) {\r\n for (const e of this.config.events) {\r\n this.obj.removeEventListener(e, this);\r\n }\r\n this.listened = false;\r\n this.stop();\r\n }\r\n }\r\n\r\n useConfig(config: INodeObserverConfigBase): void {\r\n this.config = config;\r\n if (this.listened) {\r\n for (const e of this.config.events) {\r\n this.obj.removeEventListener(e, this);\r\n }\r\n for (const e of this.config.events) {\r\n this.obj.addEventListener(e, this);\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mdc-select.js","sourceRoot":"","sources":["../../src/select/mdc-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { MdcComponent, IValidatedElement, IError, booleanAttr } from '../base';\nimport { cssClasses, MDCSelectFoundationMap, MDCSelectEventDetail, strings } from '@material/select';\nimport { inject, customElement, INode, IPlatform, bindable } from 'aurelia';\nimport { MdcSelectIcon, IMdcSelectIconElement, mdcIconStrings } from './mdc-select-icon';\nimport { MdcSelectHelperText, mdcHelperTextCssClasses } from './mdc-select-helper-text/mdc-select-helper-text';\nimport { MDCNotchedOutline } from '@material/notched-outline';\nimport { MDCMenuItemEvent, Corner } from '@material/menu';\nimport { MDCSelectFoundationAurelia } from './mdc-select-foundation-aurelia';\nimport { MDCSelectAdapterAurelia } from './mdc-select-adapter-aurelia';\nimport { MDCMenuDistance } from '@material/menu-surface';\nimport { processContent, BindingMode, CustomElement, CustomAttribute } from '@aurelia/runtime-html';\nimport { MdcDefaultSelectConfiguration } from './mdc-default-select-configuration';\nimport template from './mdc-select.html?raw';\nimport { MdcFloatingLabel } from '../floating-label/mdc-floating-label';\nimport { MdcLineRipple } from '../line-ripple/mdc-line-ripple';\nimport { MdcListItem } from '../list/mdc-list-item/mdc-list-item';\nimport { MdcMenu } from '../menu/mdc-menu';\n\nstrings.CHANGE_EVENT = strings.CHANGE_EVENT.toLowerCase();\n\nlet selectId = 0;\n\n/**\n * @selector mdc-select\n * @emits mdcselect:change | Emitted if user changed the value\n */\n@inject(Element, IPlatform, MdcDefaultSelectConfiguration)\n@customElement({ name: 'mdc-select', template })\n@processContent(function processContent(node: INode, platform: IPlatform) {\n const el = node as Element;\n\n const leadingIcon = el.querySelector(`[${mdcIconStrings.ATTRIBUTE}]`);\n leadingIcon?.remove();\n\n const template = platform.document.createElement('template');\n template.setAttribute('au-slot', '');\n template.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(template);\n\n // move icon to the slot - this allows omitting slot specification\n if (leadingIcon) {\n const div = platform.document.createElement('div');\n div.appendChild(leadingIcon);\n const iconTemplate = platform.document.createElement('template');\n iconTemplate.setAttribute('au-slot', 'leading-icon');\n iconTemplate.innerHTML = div.innerHTML;\n el.appendChild(iconTemplate);\n }\n}\n)\nexport class MdcSelect extends MdcComponent<MDCSelectFoundationAurelia> {\n constructor(root: HTMLElement, private platform: IPlatform, private defaultConfiguration: MdcDefaultSelectConfiguration) {\n super(root);\n this.outlined = this.defaultConfiguration.outlined;\n defineMdcSelectElementApis(this.root);\n this.root.id = this.id;\n }\n\n id: string = `mdc-select-${++selectId}`;\n public menu: MdcMenu;\n private selectAnchor: HTMLElement;\n private selectedText: HTMLElement;\n\n private menuElement?: Element;\n\n get items(): MdcListItem[] | undefined {\n return this.menu.list_?.items;\n }\n\n private leadingIcon?: MdcSelectIcon;\n\n private helperText?: MdcSelectHelperText;\n private lineRipple?: MdcLineRipple;\n private mdcLabel: MdcFloatingLabel;\n private outline?: MDCNotchedOutline;\n errors = new Map<IError, boolean>();\n\n /** Sets the select label */\n @bindable()\n label: string;\n labelChanged() {\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Styles the select as an outlined select */\n @bindable({ set: booleanAttr })\n outlined?: boolean;\n outlinedChanged() {\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Makes the value required */\n @bindable({ set: booleanAttr })\n required: boolean;\n requiredChanged() {\n if (this.required) {\n this.selectAnchor?.setAttribute('aria-required', 'true');\n } else {\n this.selectAnchor?.removeAttribute('aria-required');\n }\n this.foundation?.setRequired(this.required ?? false);\n this.platform.domWriteQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Enables/disables the select */\n @bindable({ set: booleanAttr })\n disabled?: boolean;\n disabledChanged() {\n if (this.disabled !== undefined) {\n this.foundation?.setDisabled(this.disabled);\n }\n }\n\n /** Hoists the select DOM to document.body */\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\n hoistToBody: boolean;\n\n /** Sets the select DOM position to fixed */\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\n fixed: boolean;\n\n /** Sets the margin between the select input and the dropdown */\n @bindable()\n anchorMargin: Partial<MDCMenuDistance>;\n\n /** Sets the select dropdown width to match content */\n @bindable({ set: booleanAttr })\n naturalWidth: boolean;\n\n private _value: unknown;\n get value(): unknown {\n if (this.foundation) {\n return this.foundation.getValue();\n } else {\n return this._value;\n }\n }\n\n set value(value: unknown) {\n this.setValue(value);\n }\n\n setValue(value: unknown, skipNotify: boolean = false) {\n this._value = value;\n if (this.foundation) {\n this.foundation.setValue(value, skipNotify);\n this.foundation.layout();\n }\n }\n\n get valid(): boolean {\n return this.foundation?.isValid() ?? true;\n }\n\n set valid(value: boolean) {\n this.foundation?.setValid(value);\n }\n\n get selectedIndex(): number {\n return this.foundation!.getSelectedIndex();\n }\n\n set selectedIndex(selectedIndex: number) {\n this.foundation?.setSelectedIndex(selectedIndex, /** closeMenu */ true);\n }\n\n addError(error: IError) {\n this.errors.set(error, true);\n this.valid = false;\n }\n\n removeError(error: IError) {\n this.errors.delete(error);\n this.valid = this.errors.size === 0;\n }\n\n renderErrors() {\n if (this.helperText) {\n this.helperText.errors = Array.from(this.errors.keys()).filter(x => x.message !== null).map(x => x.message!);\n }\n }\n\n async attaching() {\n const nextSibling = this.root.nextElementSibling;\n if (nextSibling?.tagName === mdcHelperTextCssClasses.ROOT.toUpperCase()) {\n this.helperText = CustomElement.for<MdcSelectHelperText>(nextSibling).viewModel;\n await this.helperText.initialised;\n }\n }\n\n beforeFoundationCreated() {\n const leadingIconEl = this.root.querySelector<IMdcSelectIconElement>(`${strings.LEADING_ICON_SELECTOR}`);\n if (leadingIconEl) {\n this.leadingIcon = CustomAttribute.for<MdcSelectIcon>(leadingIconEl, mdcIconStrings.ATTRIBUTE)?.viewModel;\n }\n this.menu.list_!.singleSelection = true;\n }\n\n initialSyncWithDOM() {\n // set initial value without emitting change events\n this.foundation?.setValue(this._value, true);\n this.foundation?.layout();\n this.errors = new Map<IError, boolean>();\n this.valid = true;\n\n this.labelChanged();\n this.disabledChanged();\n this.outlinedChanged();\n this.requiredChanged();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCSelectAdapterAurelia = {\n ...this.getSelectAdapterMethods(),\n ...this.getCommonAdapterMethods(),\n ...this.getOutlineAdapterMethods(),\n ...this.getLabelAdapterMethods(),\n };\n return new MDCSelectFoundationAurelia(adapter, this.getFoundationMap());\n }\n\n private getSelectAdapterMethods() {\n return {\n setSelectedText: (text: string) => {\n this.selectedText.textContent = text;\n },\n isSelectAnchorFocused: () => document.activeElement === this.selectAnchor,\n getSelectAnchorAttr: (attr: string) => this.selectAnchor.getAttribute(attr),\n setSelectAnchorAttr: (attr: string, value: string) => {\n this.selectAnchor.setAttribute(attr, value);\n },\n removeSelectAnchorAttr: (attr: string) => {\n this.selectAnchor.removeAttribute(attr);\n },\n addMenuClass: (className: string) => {\n this.menuElement?.classList.add(className);\n },\n removeMenuClass: (className: string) => {\n this.menuElement?.classList.remove(className);\n },\n openMenu: () => {\n this.menu.open = true;\n this.menu.root.style.minWidth = this.menu.root.style.maxWidth = (this.hoistToBody || this.fixed) && !this.naturalWidth\n ? `${this.root.clientWidth}px`\n : '';\n },\n closeMenu: () => { this.menu.open = false; },\n getAnchorElement: () => this.root.querySelector(strings.SELECT_ANCHOR_SELECTOR)!,\n setMenuAnchorElement: (anchorEl: HTMLElement) => {\n this.menu.anchor = anchorEl;\n },\n setMenuAnchorCorner: (anchorCorner: Corner) => {\n this.menu.setAnchorCorner(anchorCorner);\n },\n setMenuWrapFocus: (wrapFocus: boolean) => {\n this.menu.wrapFocus = wrapFocus;\n },\n getSelectedIndex: () => {\n const index = this.menu.selectedIndex;\n return index instanceof Array ? index[0] : index;\n },\n setSelectedIndex: (index: number) => {\n this.menu.selectedIndex = index;\n },\n removeAttributeAtIndex: (index: number, attributeName: string) => {\n this.menu.items[index].removeAttribute(attributeName);\n },\n focusMenuItemAtIndex: (index: number) => {\n (this.menu.items[index] as HTMLElement).focus();\n },\n getMenuItemCount: () => this.menu.items.length,\n getMenuItemValues: () => this.menu.items.map(x => CustomElement.for<MdcListItem>(x).viewModel.value),\n getMenuItemTextAtIndex: (index: number) => this.menu.getPrimaryTextAtIndex(index),\n isTypeaheadInProgress: () => this.menu.typeaheadInProgress,\n typeaheadMatchItem: (nextChar: string, startingIndex: number) => this.menu.typeaheadMatchItem(nextChar, startingIndex),\n };\n }\n\n private getCommonAdapterMethods() {\n return {\n addClass: (className: string) => {\n this.root.classList.add(className);\n },\n removeClass: (className: string) => {\n this.root.classList.remove(className);\n },\n hasClass: (className: string) => this.root.classList.contains(className),\n setRippleCenter: (normalizedX: number) => this.lineRipple?.setRippleCenter(normalizedX),\n activateBottomLine: () => this.lineRipple?.activate(),\n deactivateBottomLine: () => this.lineRipple?.deactivate(),\n notifyChange: (value: string) => {\n const index = this.selectedIndex;\n this.emit<MDCSelectEventDetail>(strings.CHANGE_EVENT, { value, index }, true /* shouldBubble */);\n this.emit<MDCSelectEventDetail>('change', { value, index }, true /* shouldBubble */);\n },\n };\n }\n\n private getOutlineAdapterMethods() {\n return {\n hasOutline: () => Boolean(this.outline),\n notchOutline: (labelWidth: number) => this.outline?.notch(labelWidth),\n closeOutline: () => this.outline?.closeNotch(),\n };\n }\n\n private getLabelAdapterMethods() {\n return {\n hasLabel: () => !!this.mdcLabel,\n floatLabel: (shouldFloat: boolean) => this.mdcLabel?.float(shouldFloat),\n getLabelWidth: () => this.mdcLabel ? this.mdcLabel.getWidth() : 0,\n setLabelRequired: (isRequired: boolean) => this.mdcLabel?.setRequired(isRequired),\n };\n }\n\n handleChange() {\n this.foundation?.handleChange();\n this.emit('change', {}, true);\n }\n\n handleFocus() {\n this.foundation?.handleFocus();\n }\n\n handleBlur() {\n this.foundation?.handleBlur();\n // if class is set it means the menu is open,\n // do not emit blur since \"conceptually\" the element is still active\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\n this.emit('blur', {}, true);\n }\n }\n\n handleClick(evt: MouseEvent) {\n this.selectAnchor.focus();\n this.foundation?.handleClick(this.getNormalizedXCoordinate(evt));\n }\n\n handleKeydown(evt: KeyboardEvent) {\n this.foundation?.handleKeydown(evt);\n return true;\n }\n\n handleMenuItemAction(evt: MDCMenuItemEvent) {\n this.foundation?.handleMenuItemAction(evt.detail.index);\n }\n\n handleMenuOpened() {\n this.foundation?.handleMenuOpened();\n }\n\n handleMenuClosed() {\n this.foundation?.handleMenuClosed();\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\n this.emit('blur', {}, true);\n }\n }\n\n handleItemsChanged() {\n this.foundation?.layoutOptions();\n this.foundation?.layout();\n }\n\n focus() {\n this.selectAnchor.focus();\n }\n\n blur() {\n this.selectAnchor.blur();\n }\n\n /**\n * @hidden\n * Calculates where the line ripple should start based on the x coordinate within the component.\n */\n private getNormalizedXCoordinate(evt: MouseEvent | TouchEvent): number {\n const targetClientRect = (evt.target as Element).getBoundingClientRect();\n const xCoordinate =\n this.isTouchEvent(evt) ? evt.touches[0].clientX : evt.clientX;\n return xCoordinate - targetClientRect.left;\n }\n\n private isTouchEvent(evt: MouseEvent | TouchEvent): evt is TouchEvent {\n return Boolean((evt as TouchEvent).touches);\n }\n\n /**\n * @hidden\n * Returns a map of all subcomponents to subfoundations.\n */\n private getFoundationMap(): Partial<MDCSelectFoundationMap> {\n return {\n helperText: this.helperText?.foundation,\n leadingIcon: this.leadingIcon?.foundation\n };\n }\n}\n\n/** @hidden */\nexport interface IMdcSelectElement extends IValidatedElement {\n $au: {\n 'au:resource:custom-element': {\n viewModel: MdcSelect;\n };\n };\n value: unknown;\n}\n\nfunction defineMdcSelectElementApis(element: HTMLElement) {\n Object.defineProperties(element, {\n value: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.value;\n },\n set(this: IMdcSelectElement, value: unknown) {\n // aurelia binding converts \"undefined\" and \"null\" into empty string\n // this does not translate well into \"empty\" menu items when several selects are bound to the same field\n CustomElement.for<MdcSelect>(this).viewModel.value = value === '' ? undefined : value;\n },\n configurable: true\n },\n options: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.root.querySelectorAll('.mdc-list-item');\n },\n configurable: true\n },\n selectedIndex: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.selectedIndex;\n },\n set(this: IMdcSelectElement, value: number) {\n CustomElement.for<MdcSelect>(this).viewModel.selectedIndex = value;\n },\n configurable: true\n },\n valid: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.valid;\n },\n set(this: IMdcSelectElement, value: boolean) {\n CustomElement.for<MdcSelect>(this).viewModel.valid = value;\n },\n configurable: true\n },\n addError: {\n value(this: IMdcSelectElement, error: IError) {\n CustomElement.for<MdcSelect>(this).viewModel.addError(error);\n },\n configurable: true\n },\n removeError: {\n value(this: IMdcSelectElement, error: IError) {\n CustomElement.for<MdcSelect>(this).viewModel.removeError(error);\n },\n configurable: true\n },\n renderErrors: {\n value(this: IMdcSelectElement): void {\n CustomElement.for<MdcSelect>(this).viewModel.renderErrors();\n },\n configurable: true\n },\n focus: {\n value(this: IMdcSelectElement) {\n CustomElement.for<MdcSelect>(this).viewModel.focus();\n },\n configurable: true\n },\n blur: {\n value(this: IMdcSelectElement) {\n CustomElement.for<MdcSelect>(this).viewModel.blur();\n },\n configurable: true\n }\n });\n}\n"]}
1
+ {"version":3,"file":"mdc-select.js","sourceRoot":"","sources":["../../src/select/mdc-select.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAA6B,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAgD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAS,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAwC,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAuB,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAG/G,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAM7C,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAE1D,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB;;;GAGG;IA0BU,SAAS;4BAzBrB,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,6BAA6B,CAAC,EACzD,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAC/C,cAAc,CAAC,SAAS,cAAc,CAAC,IAAW,EAAE,QAAmB;YACtE,MAAM,EAAE,GAAG,IAAe,CAAC;YAE3B,MAAM,WAAW,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;YACtE,WAAW,EAAE,MAAM,EAAE,CAAC;YAEtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7D,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACrC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;YAClC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;YAClB,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEzB,kEAAkE;YAClE,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjE,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACrD,YAAY,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBACvC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CACA;;;;sBAC8B,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;yBAApB,SAAQ,WAAwC;;;;iCA4BpE,QAAQ,EAAE;oCAOV,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;oCAO9B,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;oCAa9B,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;uCAS9B,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;iCAIzD,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;wCAIzD,QAAQ,EAAE;wCAIV,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;YA/C/B,iKAAA,KAAK,6BAAL,KAAK,qFAAS;YAOd,0KAAA,QAAQ,6BAAR,QAAQ,2FAAW;YAOnB,0KAAA,QAAQ,6BAAR,QAAQ,2FAAU;YAalB,0KAAA,QAAQ,6BAAR,QAAQ,2FAAW;YASnB,mLAAA,WAAW,6BAAX,WAAW,iGAAU;YAIrB,iKAAA,KAAK,6BAAL,KAAK,qFAAU;YAIf,sLAAA,YAAY,6BAAZ,YAAY,mGAA2B;YAIvC,sLAAA,YAAY,6BAAZ,YAAY,mGAAU;YA7ExB,6KA4VC;;;YA5VY,uDAAS;;QACmB,QAAQ;QAAqB,oBAAoB;QAAxF,YAAY,IAAiB,EAAU,QAAmB,EAAU,oBAAmD;YACrH,KAAK,CAAC,IAAI,CAAC,CAAC;YADyB,aAAQ,GAAR,QAAQ,CAAW;YAAU,yBAAoB,GAApB,oBAAoB,CAA+B;YAErH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACnD,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACzB,CAAC;QAED,EAAE,GAAW,cAAc,EAAE,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAU;QACb,YAAY,CAAc;QAC1B,YAAY,CAAc;QAE1B,WAAW,CAAW;QAE9B,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAChC,CAAC;QAEO,WAAW,CAAiB;QAE5B,UAAU,CAAuB;QACjC,UAAU,CAAiB;QAC3B,QAAQ,CAAmB;QAC3B,OAAO,CAAqB;QACpC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;QAEpC,4BAA4B;QAE5B,KAAK,wDAAS;QACd,YAAY;YACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,8CAA8C;QAE9C,QAAQ,gHAAW;QACnB,eAAe;YACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,+BAA+B;QAE/B,QAAQ,mHAAU;QAClB,eAAe;YACb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,kCAAkC;QAElC,QAAQ,mHAAW;QACnB,eAAe;YACb,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,6CAA6C;QAE7C,WAAW,sHAAU;QAErB,4CAA4C;QAE5C,KAAK,mHAAU;QAEf,gEAAgE;QAEhE,YAAY,oHAA2B;QAEvC,sDAAsD;QAEtD,YAAY,2HAAU;QAEd,MAAM,4DAAU;QACxB,IAAI,KAAK;YACP,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,KAAc;YACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,QAAQ,CAAC,KAAc,EAAE,aAAsB,KAAK;YAClD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,CAAC,KAAc;YACtB,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,UAAW,CAAC,gBAAgB,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,aAAa,CAAC,aAAqB;YACrC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;QAED,QAAQ,CAAC,KAAa;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,WAAW,CAAC,KAAa;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,YAAY;YACV,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC;YAC/G,CAAC;QACH,CAAC;QAED,KAAK,CAAC,SAAS;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACjD,IAAI,WAAW,EAAE,OAAO,KAAK,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxE,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAsB,WAAW,CAAC,CAAC,SAAS,CAAC;gBAChF,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YACpC,CAAC;QACH,CAAC;QAED,uBAAuB;YACrB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAwB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACzG,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,GAAG,CAAgB,aAAa,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;YAC5G,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAC1C,CAAC;QAED,kBAAkB;YAChB,mDAAmD;YACnD,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,oBAAoB;YAClB,sGAAsG;YACtG,yGAAyG;YACzG,MAAM,OAAO,GAA4B;gBACvC,GAAG,IAAI,CAAC,uBAAuB,EAAE;gBACjC,GAAG,IAAI,CAAC,uBAAuB,EAAE;gBACjC,GAAG,IAAI,CAAC,wBAAwB,EAAE;gBAClC,GAAG,IAAI,CAAC,sBAAsB,EAAE;aACjC,CAAC;YACF,OAAO,IAAI,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC1E,CAAC;QAEO,uBAAuB;YAC7B,OAAO;gBACL,eAAe,EAAE,CAAC,IAAY,EAAE,EAAE;oBAChC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvC,CAAC;gBACD,qBAAqB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY;gBACzE,mBAAmB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC3E,mBAAmB,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;oBACnD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9C,CAAC;gBACD,sBAAsB,EAAE,CAAC,IAAY,EAAE,EAAE;oBACvC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;gBACD,YAAY,EAAE,CAAC,SAAiB,EAAE,EAAE;oBAClC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7C,CAAC;gBACD,eAAe,EAAE,CAAC,SAAiB,EAAE,EAAE;oBACrC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChD,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;wBACpH,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI;wBAC9B,CAAC,CAAC,EAAE,CAAC;gBACT,CAAC;gBACD,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC5C,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAE;gBAChF,oBAAoB,EAAE,CAAC,QAAqB,EAAE,EAAE;oBAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC9B,CAAC;gBACD,mBAAmB,EAAE,CAAC,YAAoB,EAAE,EAAE;oBAC5C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;gBACD,gBAAgB,EAAE,CAAC,SAAkB,EAAE,EAAE;oBACvC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAClC,CAAC;gBACD,gBAAgB,EAAE,GAAG,EAAE;oBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;oBACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnD,CAAC;gBACD,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE;oBAClC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAClC,CAAC;gBACD,sBAAsB,EAAE,CAAC,KAAa,EAAE,aAAqB,EAAE,EAAE;oBAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACxD,CAAC;gBACD,oBAAoB,EAAE,CAAC,KAAa,EAAE,EAAE;oBACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAiB,CAAC,KAAK,EAAE,CAAC;gBAClD,CAAC;gBACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC9C,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;gBACpG,sBAAsB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBACjF,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAC1D,kBAAkB,EAAE,CAAC,QAAgB,EAAE,aAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC;aACvH,CAAC;QACJ,CAAC;QAEO,uBAAuB;YAC7B,OAAO;gBACL,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE;oBAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACrC,CAAC;gBACD,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACxC,CAAC;gBACD,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACxE,eAAe,EAAE,CAAC,WAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC;gBACvF,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE;gBACrD,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE;gBACzD,YAAY,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAuB,OAAO,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBAClG,IAAI,CAAC,IAAI,CAAuB,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACxF,CAAC;aACF,CAAC;QACJ,CAAC;QAEO,wBAAwB;YAC9B,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvC,YAAY,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;gBACrE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE;aAC/C,CAAC;QACJ,CAAC;QAEO,sBAAsB;YAC5B,OAAO;gBACL,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;gBAC/B,UAAU,EAAE,CAAC,WAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC;gBACvE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjE,gBAAgB,EAAE,CAAC,UAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;aAClF,CAAC;QACJ,CAAC;QAED,YAAY;YACV,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,WAAW;YACT,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC;QACjC,CAAC;QAED,UAAU;YACR,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;YAC9B,6CAA6C;YAC7C,oEAAoE;YACpE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,WAAW,CAAC,GAAe;YACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,aAAa,CAAC,GAAkB;YAC9B,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oBAAoB,CAAC,GAAqB;YACxC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;QAED,gBAAgB;YACd,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;QACtC,CAAC;QAED,gBAAgB;YACd,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,kBAAkB;YAChB,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC5B,CAAC;QAED,KAAK;YACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI;YACF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED;;;WAGG;QACK,wBAAwB,CAAC,GAA4B;YAC3D,MAAM,gBAAgB,GAAI,GAAG,CAAC,MAAkB,CAAC,qBAAqB,EAAE,CAAC;YACzE,MAAM,WAAW,GACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YAChE,OAAO,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAC7C,CAAC;QAEO,YAAY,CAAC,GAA4B;YAC/C,OAAO,OAAO,CAAE,GAAkB,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED;;;WAGG;QACK,gBAAgB;YACtB,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU;gBACvC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU;aAC1C,CAAC;QACJ,CAAC;;;;SA3VU,SAAS;AAwWtB,SAAS,0BAA0B,CAAC,OAAoB;IACtD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;QAC/B,KAAK,EAAE;YACL,GAAG;gBACD,OAAO,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;YAC5D,CAAC;YACD,GAAG,CAA0B,KAAc;gBACzC,oEAAoE;gBACpE,wGAAwG;gBACxG,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACxF,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,OAAO,EAAE;YACP,GAAG;gBACD,OAAO,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YAC9F,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,aAAa,EAAE;YACb,GAAG;gBACD,OAAO,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;YACpE,CAAC;YACD,GAAG,CAA0B,KAAa;gBACxC,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;YACrE,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,KAAK,EAAE;YACL,GAAG;gBACD,OAAO,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;YAC5D,CAAC;YACD,GAAG,CAA0B,KAAc;gBACzC,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC7D,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,QAAQ,EAAE;YACR,KAAK,CAA0B,KAAa;gBAC1C,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,WAAW,EAAE;YACX,KAAK,CAA0B,KAAa;gBAC1C,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAClE,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,YAAY,EAAE;YACZ,KAAK;gBACH,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAC9D,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,KAAK,EAAE;YACL,KAAK;gBACH,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvD,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;QACD,IAAI,EAAE;YACJ,KAAK;gBACH,aAAa,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;YACD,YAAY,EAAE,IAAI;SACnB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { MdcComponent, IValidatedElement, IError, booleanAttr } from '../base';\r\nimport { cssClasses, MDCSelectFoundationMap, MDCSelectEventDetail, strings } from '@material/select';\r\nimport { inject, customElement, INode, IPlatform, bindable } from 'aurelia';\r\nimport { MdcSelectIcon, IMdcSelectIconElement, mdcIconStrings } from './mdc-select-icon';\r\nimport { MdcSelectHelperText, mdcHelperTextCssClasses } from './mdc-select-helper-text/mdc-select-helper-text';\r\nimport { MDCNotchedOutline } from '@material/notched-outline';\r\nimport { MDCMenuItemEvent, Corner } from '@material/menu';\r\nimport { MDCSelectFoundationAurelia } from './mdc-select-foundation-aurelia';\r\nimport { MDCSelectAdapterAurelia } from './mdc-select-adapter-aurelia';\r\nimport { MDCMenuDistance } from '@material/menu-surface';\r\nimport { processContent, BindingMode, CustomElement, CustomAttribute } from '@aurelia/runtime-html';\r\nimport { MdcDefaultSelectConfiguration } from './mdc-default-select-configuration';\r\nimport template from './mdc-select.html?raw';\r\nimport { MdcFloatingLabel } from '../floating-label/mdc-floating-label';\r\nimport { MdcLineRipple } from '../line-ripple/mdc-line-ripple';\r\nimport { MdcListItem } from '../list/mdc-list-item/mdc-list-item';\r\nimport { MdcMenu } from '../menu/mdc-menu';\r\n\r\nstrings.CHANGE_EVENT = strings.CHANGE_EVENT.toLowerCase();\r\n\r\nlet selectId = 0;\r\n\r\n/**\r\n * @selector mdc-select\r\n * @emits mdcselect:change | Emitted if user changed the value\r\n */\r\n@inject(Element, IPlatform, MdcDefaultSelectConfiguration)\r\n@customElement({ name: 'mdc-select', template })\r\n@processContent(function processContent(node: INode, platform: IPlatform) {\r\n const el = node as Element;\r\n\r\n const leadingIcon = el.querySelector(`[${mdcIconStrings.ATTRIBUTE}]`);\r\n leadingIcon?.remove();\r\n\r\n const template = platform.document.createElement('template');\r\n template.setAttribute('au-slot', '');\r\n template.innerHTML = el.innerHTML;\r\n el.innerHTML = '';\r\n el.appendChild(template);\r\n\r\n // move icon to the slot - this allows omitting slot specification\r\n if (leadingIcon) {\r\n const div = platform.document.createElement('div');\r\n div.appendChild(leadingIcon);\r\n const iconTemplate = platform.document.createElement('template');\r\n iconTemplate.setAttribute('au-slot', 'leading-icon');\r\n iconTemplate.innerHTML = div.innerHTML;\r\n el.appendChild(iconTemplate);\r\n }\r\n}\r\n)\r\nexport class MdcSelect extends MdcComponent<MDCSelectFoundationAurelia> {\r\n constructor(root: HTMLElement, private platform: IPlatform, private defaultConfiguration: MdcDefaultSelectConfiguration) {\r\n super(root);\r\n this.outlined = this.defaultConfiguration.outlined;\r\n defineMdcSelectElementApis(this.root);\r\n this.root.id = this.id;\r\n }\r\n\r\n id: string = `mdc-select-${++selectId}`;\r\n public menu: MdcMenu;\r\n private selectAnchor: HTMLElement;\r\n private selectedText: HTMLElement;\r\n\r\n private menuElement?: Element;\r\n\r\n get items(): MdcListItem[] | undefined {\r\n return this.menu.list_?.items;\r\n }\r\n\r\n private leadingIcon?: MdcSelectIcon;\r\n\r\n private helperText?: MdcSelectHelperText;\r\n private lineRipple?: MdcLineRipple;\r\n private mdcLabel: MdcFloatingLabel;\r\n private outline?: MDCNotchedOutline;\r\n errors = new Map<IError, boolean>();\r\n\r\n /** Sets the select label */\r\n @bindable()\r\n label: string;\r\n labelChanged() {\r\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\r\n }\r\n\r\n /** Styles the select as an outlined select */\r\n @bindable({ set: booleanAttr })\r\n outlined?: boolean;\r\n outlinedChanged() {\r\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\r\n }\r\n\r\n /** Makes the value required */\r\n @bindable({ set: booleanAttr })\r\n required: boolean;\r\n requiredChanged() {\r\n if (this.required) {\r\n this.selectAnchor?.setAttribute('aria-required', 'true');\r\n } else {\r\n this.selectAnchor?.removeAttribute('aria-required');\r\n }\r\n this.foundation?.setRequired(this.required ?? false);\r\n this.platform.domWriteQueue.queueTask(() => this.foundation?.layout());\r\n }\r\n\r\n /** Enables/disables the select */\r\n @bindable({ set: booleanAttr })\r\n disabled?: boolean;\r\n disabledChanged() {\r\n if (this.disabled !== undefined) {\r\n this.foundation?.setDisabled(this.disabled);\r\n }\r\n }\r\n\r\n /** Hoists the select DOM to document.body */\r\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\r\n hoistToBody: boolean;\r\n\r\n /** Sets the select DOM position to fixed */\r\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\r\n fixed: boolean;\r\n\r\n /** Sets the margin between the select input and the dropdown */\r\n @bindable()\r\n anchorMargin: Partial<MDCMenuDistance>;\r\n\r\n /** Sets the select dropdown width to match content */\r\n @bindable({ set: booleanAttr })\r\n naturalWidth: boolean;\r\n\r\n private _value: unknown;\r\n get value(): unknown {\r\n if (this.foundation) {\r\n return this.foundation.getValue();\r\n } else {\r\n return this._value;\r\n }\r\n }\r\n\r\n set value(value: unknown) {\r\n this.setValue(value);\r\n }\r\n\r\n setValue(value: unknown, skipNotify: boolean = false) {\r\n this._value = value;\r\n if (this.foundation) {\r\n this.foundation.setValue(value, skipNotify);\r\n this.foundation.layout();\r\n }\r\n }\r\n\r\n get valid(): boolean {\r\n return this.foundation?.isValid() ?? true;\r\n }\r\n\r\n set valid(value: boolean) {\r\n this.foundation?.setValid(value);\r\n }\r\n\r\n get selectedIndex(): number {\r\n return this.foundation!.getSelectedIndex();\r\n }\r\n\r\n set selectedIndex(selectedIndex: number) {\r\n this.foundation?.setSelectedIndex(selectedIndex, /** closeMenu */ true);\r\n }\r\n\r\n addError(error: IError) {\r\n this.errors.set(error, true);\r\n this.valid = false;\r\n }\r\n\r\n removeError(error: IError) {\r\n this.errors.delete(error);\r\n this.valid = this.errors.size === 0;\r\n }\r\n\r\n renderErrors() {\r\n if (this.helperText) {\r\n this.helperText.errors = Array.from(this.errors.keys()).filter(x => x.message !== null).map(x => x.message!);\r\n }\r\n }\r\n\r\n async attaching() {\r\n const nextSibling = this.root.nextElementSibling;\r\n if (nextSibling?.tagName === mdcHelperTextCssClasses.ROOT.toUpperCase()) {\r\n this.helperText = CustomElement.for<MdcSelectHelperText>(nextSibling).viewModel;\r\n await this.helperText.initialised;\r\n }\r\n }\r\n\r\n beforeFoundationCreated() {\r\n const leadingIconEl = this.root.querySelector<IMdcSelectIconElement>(`${strings.LEADING_ICON_SELECTOR}`);\r\n if (leadingIconEl) {\r\n this.leadingIcon = CustomAttribute.for<MdcSelectIcon>(leadingIconEl, mdcIconStrings.ATTRIBUTE)?.viewModel;\r\n }\r\n this.menu.list_!.singleSelection = true;\r\n }\r\n\r\n initialSyncWithDOM() {\r\n // set initial value without emitting change events\r\n this.foundation?.setValue(this._value, true);\r\n this.foundation?.layout();\r\n this.errors = new Map<IError, boolean>();\r\n this.valid = true;\r\n\r\n this.labelChanged();\r\n this.disabledChanged();\r\n this.outlinedChanged();\r\n this.requiredChanged();\r\n }\r\n\r\n getDefaultFoundation() {\r\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\r\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\r\n const adapter: MDCSelectAdapterAurelia = {\r\n ...this.getSelectAdapterMethods(),\r\n ...this.getCommonAdapterMethods(),\r\n ...this.getOutlineAdapterMethods(),\r\n ...this.getLabelAdapterMethods(),\r\n };\r\n return new MDCSelectFoundationAurelia(adapter, this.getFoundationMap());\r\n }\r\n\r\n private getSelectAdapterMethods() {\r\n return {\r\n setSelectedText: (text: string) => {\r\n this.selectedText.textContent = text;\r\n },\r\n isSelectAnchorFocused: () => document.activeElement === this.selectAnchor,\r\n getSelectAnchorAttr: (attr: string) => this.selectAnchor.getAttribute(attr),\r\n setSelectAnchorAttr: (attr: string, value: string) => {\r\n this.selectAnchor.setAttribute(attr, value);\r\n },\r\n removeSelectAnchorAttr: (attr: string) => {\r\n this.selectAnchor.removeAttribute(attr);\r\n },\r\n addMenuClass: (className: string) => {\r\n this.menuElement?.classList.add(className);\r\n },\r\n removeMenuClass: (className: string) => {\r\n this.menuElement?.classList.remove(className);\r\n },\r\n openMenu: () => {\r\n this.menu.open = true;\r\n this.menu.root.style.minWidth = this.menu.root.style.maxWidth = (this.hoistToBody || this.fixed) && !this.naturalWidth\r\n ? `${this.root.clientWidth}px`\r\n : '';\r\n },\r\n closeMenu: () => { this.menu.open = false; },\r\n getAnchorElement: () => this.root.querySelector(strings.SELECT_ANCHOR_SELECTOR)!,\r\n setMenuAnchorElement: (anchorEl: HTMLElement) => {\r\n this.menu.anchor = anchorEl;\r\n },\r\n setMenuAnchorCorner: (anchorCorner: Corner) => {\r\n this.menu.setAnchorCorner(anchorCorner);\r\n },\r\n setMenuWrapFocus: (wrapFocus: boolean) => {\r\n this.menu.wrapFocus = wrapFocus;\r\n },\r\n getSelectedIndex: () => {\r\n const index = this.menu.selectedIndex;\r\n return index instanceof Array ? index[0] : index;\r\n },\r\n setSelectedIndex: (index: number) => {\r\n this.menu.selectedIndex = index;\r\n },\r\n removeAttributeAtIndex: (index: number, attributeName: string) => {\r\n this.menu.items[index].removeAttribute(attributeName);\r\n },\r\n focusMenuItemAtIndex: (index: number) => {\r\n (this.menu.items[index] as HTMLElement).focus();\r\n },\r\n getMenuItemCount: () => this.menu.items.length,\r\n getMenuItemValues: () => this.menu.items.map(x => CustomElement.for<MdcListItem>(x).viewModel.value),\r\n getMenuItemTextAtIndex: (index: number) => this.menu.getPrimaryTextAtIndex(index),\r\n isTypeaheadInProgress: () => this.menu.typeaheadInProgress,\r\n typeaheadMatchItem: (nextChar: string, startingIndex: number) => this.menu.typeaheadMatchItem(nextChar, startingIndex),\r\n };\r\n }\r\n\r\n private getCommonAdapterMethods() {\r\n return {\r\n addClass: (className: string) => {\r\n this.root.classList.add(className);\r\n },\r\n removeClass: (className: string) => {\r\n this.root.classList.remove(className);\r\n },\r\n hasClass: (className: string) => this.root.classList.contains(className),\r\n setRippleCenter: (normalizedX: number) => this.lineRipple?.setRippleCenter(normalizedX),\r\n activateBottomLine: () => this.lineRipple?.activate(),\r\n deactivateBottomLine: () => this.lineRipple?.deactivate(),\r\n notifyChange: (value: string) => {\r\n const index = this.selectedIndex;\r\n this.emit<MDCSelectEventDetail>(strings.CHANGE_EVENT, { value, index }, true /* shouldBubble */);\r\n this.emit<MDCSelectEventDetail>('change', { value, index }, true /* shouldBubble */);\r\n },\r\n };\r\n }\r\n\r\n private getOutlineAdapterMethods() {\r\n return {\r\n hasOutline: () => Boolean(this.outline),\r\n notchOutline: (labelWidth: number) => this.outline?.notch(labelWidth),\r\n closeOutline: () => this.outline?.closeNotch(),\r\n };\r\n }\r\n\r\n private getLabelAdapterMethods() {\r\n return {\r\n hasLabel: () => !!this.mdcLabel,\r\n floatLabel: (shouldFloat: boolean) => this.mdcLabel?.float(shouldFloat),\r\n getLabelWidth: () => this.mdcLabel ? this.mdcLabel.getWidth() : 0,\r\n setLabelRequired: (isRequired: boolean) => this.mdcLabel?.setRequired(isRequired),\r\n };\r\n }\r\n\r\n handleChange() {\r\n this.foundation?.handleChange();\r\n this.emit('change', {}, true);\r\n }\r\n\r\n handleFocus() {\r\n this.foundation?.handleFocus();\r\n }\r\n\r\n handleBlur() {\r\n this.foundation?.handleBlur();\r\n // if class is set it means the menu is open,\r\n // do not emit blur since \"conceptually\" the element is still active\r\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\r\n this.emit('blur', {}, true);\r\n }\r\n }\r\n\r\n handleClick(evt: MouseEvent) {\r\n this.selectAnchor.focus();\r\n this.foundation?.handleClick(this.getNormalizedXCoordinate(evt));\r\n }\r\n\r\n handleKeydown(evt: KeyboardEvent) {\r\n this.foundation?.handleKeydown(evt);\r\n return true;\r\n }\r\n\r\n handleMenuItemAction(evt: MDCMenuItemEvent) {\r\n this.foundation?.handleMenuItemAction(evt.detail.index);\r\n }\r\n\r\n handleMenuOpened() {\r\n this.foundation?.handleMenuOpened();\r\n }\r\n\r\n handleMenuClosed() {\r\n this.foundation?.handleMenuClosed();\r\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\r\n this.emit('blur', {}, true);\r\n }\r\n }\r\n\r\n handleItemsChanged() {\r\n this.foundation?.layoutOptions();\r\n this.foundation?.layout();\r\n }\r\n\r\n focus() {\r\n this.selectAnchor.focus();\r\n }\r\n\r\n blur() {\r\n this.selectAnchor.blur();\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Calculates where the line ripple should start based on the x coordinate within the component.\r\n */\r\n private getNormalizedXCoordinate(evt: MouseEvent | TouchEvent): number {\r\n const targetClientRect = (evt.target as Element).getBoundingClientRect();\r\n const xCoordinate =\r\n this.isTouchEvent(evt) ? evt.touches[0].clientX : evt.clientX;\r\n return xCoordinate - targetClientRect.left;\r\n }\r\n\r\n private isTouchEvent(evt: MouseEvent | TouchEvent): evt is TouchEvent {\r\n return Boolean((evt as TouchEvent).touches);\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Returns a map of all subcomponents to subfoundations.\r\n */\r\n private getFoundationMap(): Partial<MDCSelectFoundationMap> {\r\n return {\r\n helperText: this.helperText?.foundation,\r\n leadingIcon: this.leadingIcon?.foundation\r\n };\r\n }\r\n}\r\n\r\n/** @hidden */\r\nexport interface IMdcSelectElement extends IValidatedElement {\r\n $au: {\r\n 'au:resource:custom-element': {\r\n viewModel: MdcSelect;\r\n };\r\n };\r\n value: unknown;\r\n}\r\n\r\nfunction defineMdcSelectElementApis(element: HTMLElement) {\r\n Object.defineProperties(element, {\r\n value: {\r\n get(this: IMdcSelectElement) {\r\n return CustomElement.for<MdcSelect>(this).viewModel.value;\r\n },\r\n set(this: IMdcSelectElement, value: unknown) {\r\n // aurelia binding converts \"undefined\" and \"null\" into empty string\r\n // this does not translate well into \"empty\" menu items when several selects are bound to the same field\r\n CustomElement.for<MdcSelect>(this).viewModel.value = value === '' ? undefined : value;\r\n },\r\n configurable: true\r\n },\r\n options: {\r\n get(this: IMdcSelectElement) {\r\n return CustomElement.for<MdcSelect>(this).viewModel.root.querySelectorAll('.mdc-list-item');\r\n },\r\n configurable: true\r\n },\r\n selectedIndex: {\r\n get(this: IMdcSelectElement) {\r\n return CustomElement.for<MdcSelect>(this).viewModel.selectedIndex;\r\n },\r\n set(this: IMdcSelectElement, value: number) {\r\n CustomElement.for<MdcSelect>(this).viewModel.selectedIndex = value;\r\n },\r\n configurable: true\r\n },\r\n valid: {\r\n get(this: IMdcSelectElement) {\r\n return CustomElement.for<MdcSelect>(this).viewModel.valid;\r\n },\r\n set(this: IMdcSelectElement, value: boolean) {\r\n CustomElement.for<MdcSelect>(this).viewModel.valid = value;\r\n },\r\n configurable: true\r\n },\r\n addError: {\r\n value(this: IMdcSelectElement, error: IError) {\r\n CustomElement.for<MdcSelect>(this).viewModel.addError(error);\r\n },\r\n configurable: true\r\n },\r\n removeError: {\r\n value(this: IMdcSelectElement, error: IError) {\r\n CustomElement.for<MdcSelect>(this).viewModel.removeError(error);\r\n },\r\n configurable: true\r\n },\r\n renderErrors: {\r\n value(this: IMdcSelectElement): void {\r\n CustomElement.for<MdcSelect>(this).viewModel.renderErrors();\r\n },\r\n configurable: true\r\n },\r\n focus: {\r\n value(this: IMdcSelectElement) {\r\n CustomElement.for<MdcSelect>(this).viewModel.focus();\r\n },\r\n configurable: true\r\n },\r\n blur: {\r\n value(this: IMdcSelectElement) {\r\n CustomElement.for<MdcSelect>(this).viewModel.blur();\r\n },\r\n configurable: true\r\n }\r\n });\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mdc-text-field.js","sourceRoot":"","sources":["../../src/text-field/mdc-text-field.ts"],"names":[],"mappings":"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","sourcesContent":["import { inject, customElement, INode, bindable } from 'aurelia';\nimport {\n MDCTextFieldFoundation, MDCTextFieldRootAdapter, MDCTextFieldInputAdapter, MDCTextFieldLabelAdapter, MDCTextFieldAdapter, MDCTextFieldFoundationMap,\n MDCTextFieldLineRippleAdapter, MDCTextFieldOutlineAdapter, cssClasses, helperTextStrings, characterCountStrings\n} from '@material/textfield';\nimport { applyPassive } from '@material/dom/events';\nimport { MdcComponent, IValidatedElement, IError, booleanAttr, number } from '../base';\nimport { MdcTextFieldIcon, mdcIconStrings, IMdcTextFieldIconElement } from './mdc-text-field-icon';\nimport { MdcTextFieldHelperText } from './mdc-text-field-helper-text/mdc-text-field-helper-text';\nimport { MdcTextFieldCharacterCounter } from './mdc-text-field-character-counter';\nimport { MdcTextFieldHelperLine } from './mdc-text-field-helper-line/mdc-text-field-helper-line';\nimport { processContent, IPlatform, CustomAttribute, CustomElement } from '@aurelia/runtime-html';\nimport { MdcDefaultTextFieldConfiguration } from './mdc-default-text-field-configuration';\nimport template from './mdc-text-field.html?raw';\nimport { MdcFloatingLabel } from '../floating-label/mdc-floating-label';\nimport { MdcLineRipple } from '../line-ripple/mdc-line-ripple';\nimport { MdcNotchedOutline } from '../notched-outline/mdc-notched-outline';\n\nlet textFieldId = 0;\nconst leadingIconSelector = '.mdc-text-field__icon--leading';\nconst trailingIconSelector = '.mdc-text-field__icon--trailing';\n\n@inject(Element, IPlatform, MdcDefaultTextFieldConfiguration)\n@customElement({ name: 'mdc-text-field', template })\n@processContent(function processContent(node: INode) {\n const element = node as HTMLElement;\n // move icons to slots - this allows omitting slot specification\n const leadingIcon = element.querySelector(`[${mdcIconStrings.ATTRIBUTE}][${mdcIconStrings.LEADING}]`);\n leadingIcon?.setAttribute('au-slot', 'leading-icon');\n const trailingIcon = element.querySelector(`[${mdcIconStrings.ATTRIBUTE}][${mdcIconStrings.TRAILING}]`);\n trailingIcon?.setAttribute('au-slot', 'trailing-icon');\n}\n)\nexport class MdcTextField extends MdcComponent<MDCTextFieldFoundation> {\n constructor(root: HTMLElement, private platform: IPlatform, private defaultConfiguration: MdcDefaultTextFieldConfiguration) {\n super(root);\n this.outlined = this.defaultConfiguration.outlined;\n defineMdcTextFieldElementApis(this.root);\n }\n\n id: string = `mdc-text-field-${++textFieldId}`;\n id1: string = `mdc-text-field-${textFieldId}`;\n input_: HTMLInputElement;\n label_?: MdcFloatingLabel = undefined;\n lineRipple_: MdcLineRipple;\n outline_!: MdcNotchedOutline | null; // assigned in html\n helperText_: MdcTextFieldHelperText | undefined;\n characterCounter_?: MdcTextFieldCharacterCounter;\n errors = new Map<IError, boolean>();\n leadingIcon_: MdcTextFieldIcon | undefined;\n trailingIcon_: MdcTextFieldIcon | undefined;\n mutationObserver = new MutationObserver(mutations => this.mutated(mutations));\n\n @bindable()\n label: string;\n labelChanged() {\n this.platform.domQueue.queueTask(() => {\n if (this.foundation) {\n const openNotch = this.foundation.shouldFloat;\n this.foundation.notchOutline(openNotch);\n }\n });\n }\n\n @bindable({ set: booleanAttr })\n textarea: boolean;\n\n @bindable({ set: booleanAttr })\n endAligned: boolean;\n\n @bindable({ set: booleanAttr })\n ltrText: boolean;\n\n @bindable({ set: booleanAttr })\n outlined?: boolean;\n\n @bindable()\n prefix: string;\n\n @bindable()\n suffix: string;\n\n @bindable({ set: booleanAttr })\n required?: boolean;\n requiredChanged() {\n if (this.required !== undefined) {\n this.input_.required = this.required;\n this.foundation?.setUseNativeValidation(true);\n }\n }\n\n @bindable({ set: booleanAttr })\n disabled: boolean;\n disabledChanged() {\n this.input_.disabled = this.disabled;\n this.foundation?.setDisabled(this.disabled);\n }\n\n @bindable({ set: booleanAttr })\n readonly: boolean;\n readonlyChanged() {\n this.input_.readOnly = this.readonly;\n }\n\n /** Makes the element blur on Enter key press */\n @bindable({ set: booleanAttr })\n blurOnEnter: boolean;\n\n @bindable()\n maxlength: string;\n maxlengthChanged() {\n if (this.maxlength) {\n this.input_.setAttribute('maxlength', this.maxlength);\n } else {\n this.input_.removeAttribute('maxlength');\n }\n }\n\n @bindable()\n rows: string;\n rowsChanged() {\n if (this.rows) {\n this.input_.setAttribute('rows', this.rows);\n } else {\n this.input_.removeAttribute('rows');\n }\n }\n\n @bindable()\n cols: string;\n colsChanged() {\n if (this.rows) {\n this.input_.setAttribute('cols', this.cols);\n } else {\n this.input_.removeAttribute('cols');\n }\n }\n\n @bindable()\n max: string;\n maxChanged() {\n if (this.max === undefined) {\n this.input_.removeAttribute('max');\n } else {\n this.input_.max = this.max;\n }\n }\n\n @bindable()\n min: string;\n minChanged() {\n if (this.min === undefined) {\n this.input_.removeAttribute('min');\n } else {\n this.input_.min = this.min;\n }\n }\n\n @bindable()\n step: string;\n stepChanged() {\n if (this.step === undefined) {\n this.input_.removeAttribute('step');\n } else {\n this.input_.step = this.step;\n }\n }\n\n @bindable()\n autocomplete: AutoFill;\n autocompleteChanged() {\n if (this.autocomplete === undefined) {\n this.input_.removeAttribute('autocomplete');\n } else {\n this.input_.autocomplete = this.autocomplete;\n }\n }\n\n @bindable({ set: number })\n tabindex: number;\n tabindexChanged() {\n if (isNaN(this.tabindex)) {\n this.input_.removeAttribute('tabindex');\n } else {\n this.input_.tabIndex = this.tabindex;\n }\n }\n\n @bindable()\n type: string;\n typeChanged() {\n if (!this.textarea) {\n if (this.type === undefined) {\n this.input_.removeAttribute('type');\n } else {\n this.input_.type = this.type;\n }\n }\n }\n\n @bindable()\n name: string;\n nameChanged() {\n if (this.name === undefined) {\n this.input_.removeAttribute('name');\n } else {\n this.input_.name = this.name;\n }\n }\n\n @bindable()\n placeholder: string = ' '; // non empty placeholder solves the issue of misplaced labels in Safari\n\n private initialValue: string;\n get value(): string {\n if (this.foundation) {\n return this.foundation.getValue();\n } else {\n return this.initialValue;\n }\n }\n set value(value: string) {\n if (this.foundation) {\n if (this.foundation.getValue() !== value) {\n this.foundation.setValue(value === null || value === undefined ? '' : value.toString());\n }\n } else {\n this.initialValue = value;\n }\n }\n\n addError(error: IError) {\n this.errors.set(error, true);\n this.valid = false;\n }\n\n removeError(error: IError) {\n this.errors.delete(error);\n this.valid = this.errors.size === 0;\n }\n\n get valid(): boolean {\n return this.foundation?.isValid() ?? true;\n }\n\n set valid(value: boolean) {\n this.foundation?.setUseNativeValidation(false);\n this.foundation?.setValid(value);\n }\n\n renderErrors() {\n const helperLine = this.root.nextElementSibling;\n if (helperLine?.tagName === 'MDC-TEXT-FIELD-HELPER-LINE') {\n CustomElement.for<MdcTextFieldHelperLine>(helperLine).viewModel.errors = Array.from(this.errors.keys())\n .filter(x => x.message !== null).map(x => x.message!);\n }\n }\n\n async attaching() {\n const nextSibling = this.root.nextElementSibling;\n if (nextSibling?.tagName === cssClasses.HELPER_LINE.toUpperCase()) {\n await CustomElement.for<MdcTextFieldHelperLine>(nextSibling).viewModel.attachedPromise;\n const helperTextEl = nextSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\n this.helperText_ = helperTextEl ? CustomElement.for<MdcTextFieldHelperText>(nextSibling).viewModel : undefined;\n const characterCounterEl = nextSibling.querySelector(characterCountStrings.ROOT_SELECTOR);\n this.characterCounter_ = characterCounterEl ? CustomElement.for<MdcTextFieldCharacterCounter>(characterCounterEl).viewModel : undefined;\n }\n }\n\n beforeFoundationCreated() {\n this.maxlengthChanged();\n this.typeChanged();\n this.mutationObserver.observe(this.root, { subtree: true, childList: true });\n this.leadingIconChanged();\n this.trailingIconChanged();\n }\n\n mutated(mutations: MutationRecord[]) {\n if (mutations.find(x => [...Array.from(x.addedNodes), ...Array.from(x.removedNodes)].find(y => y instanceof HTMLElement && y.matches(leadingIconSelector)))) {\n this.leadingIconChanged();\n }\n if (mutations.find(x => [...Array.from(x.addedNodes), ...Array.from(x.removedNodes)].find(y => y instanceof HTMLElement && y.matches(trailingIconSelector)))) {\n this.trailingIconChanged();\n }\n }\n\n trailingIconChanged() {\n const el = this.root.querySelector<IMdcTextFieldIconElement>(trailingIconSelector);\n this.trailingIcon_ = el ? CustomAttribute.for<MdcTextFieldIcon>(el, mdcIconStrings.ATTRIBUTE)?.viewModel : undefined;\n }\n\n leadingIconChanged() {\n const el = this.root.querySelector<IMdcTextFieldIconElement>(leadingIconSelector);\n this.leadingIcon_ = el ? CustomAttribute.for<MdcTextFieldIcon>(el, mdcIconStrings.ATTRIBUTE)?.viewModel : undefined;\n }\n\n override destroy() {\n this.mutationObserver.disconnect();\n }\n\n initialSyncWithDOM() {\n this.value = this.initialValue;\n this.errors = new Map<IError, boolean>();\n this.valid = true;\n\n this.requiredChanged();\n this.disabledChanged();\n this.readonlyChanged();\n this.tabindexChanged();\n this.rowsChanged();\n this.colsChanged();\n this.minChanged();\n this.maxChanged();\n this.stepChanged();\n this.autocompleteChanged();\n this.nameChanged();\n // handle the case when attribute value was set, not bound, in html\n if (this.root.hasAttribute('value')) {\n this.value = this.root.getAttribute('value') ?? '';\n }\n }\n\n getDefaultFoundation() {\n const adapter: Partial<MDCTextFieldAdapter> = {\n ...this.getRootAdapterMethods_(),\n ...this.getInputAdapterMethods_(),\n ...this.getLabelAdapterMethods_(),\n ...this.getLineRippleAdapterMethods_(),\n ...this.getOutlineAdapterMethods_(),\n };\n return new MDCTextFieldFoundation(adapter, this.getFoundationMap_());\n }\n\n private getRootAdapterMethods_(): MDCTextFieldRootAdapter {\n return {\n addClass: (className) => this.root.classList.add(className),\n removeClass: (className) => this.root.classList.remove(className),\n hasClass: (className) => this.root.classList.contains(className),\n registerTextFieldInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterTextFieldInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\n registerValidationAttributeChangeHandler: (handler) => {\n const getAttributesList = (mutationsList: MutationRecord[]): string[] => {\n return mutationsList\n .map((mutation) => mutation.attributeName)\n .filter((attributeName) => attributeName) as string[];\n };\n const observer = new MutationObserver((mutationsList) => handler(getAttributesList(mutationsList)));\n const config = { attributes: true };\n observer.observe(this.input_, config);\n return observer;\n },\n deregisterValidationAttributeChangeHandler: (observer) => observer.disconnect(),\n };\n }\n\n private getInputAdapterMethods_(): MDCTextFieldInputAdapter {\n return {\n getNativeInput: () => this.input_,\n setInputAttr: (attr, value) => {\n this.input_.setAttribute(attr, value);\n },\n removeInputAttr: (attr) => {\n this.input_.removeAttribute(attr);\n },\n isFocused: () => document.activeElement === this.input_,\n registerInputInteractionHandler: (evtType, handler) => this.input_.addEventListener(evtType, handler, applyPassive()),\n deregisterInputInteractionHandler: (evtType, handler) => this.input_?.removeEventListener(evtType, handler, applyPassive()),\n };\n }\n\n private getLabelAdapterMethods_(): MDCTextFieldLabelAdapter {\n return {\n floatLabel: (shouldFloat) => this.label_?.float(shouldFloat),\n getLabelWidth: () => this.label_ ? this.label_.getWidth() : 0,\n hasLabel: () => Boolean(this.label_),\n shakeLabel: (shouldShake) => this.label_?.shake(shouldShake),\n setLabelRequired: (isRequired) => this.label_?.setRequired(isRequired),\n };\n }\n\n private getLineRippleAdapterMethods_(): MDCTextFieldLineRippleAdapter {\n return {\n activateLineRipple: () => this.lineRipple_?.activate(),\n deactivateLineRipple: () => this.lineRipple_?.deactivate(),\n setLineRippleTransformOrigin: (normalizedX) => this.lineRipple_?.setRippleCenter(normalizedX)\n };\n }\n\n private getOutlineAdapterMethods_(): MDCTextFieldOutlineAdapter {\n return {\n closeOutline: () => this.outline_?.closeNotch(),\n hasOutline: () => Boolean(this.outline_),\n notchOutline: (labelWidth) => this.outline_?.notch(labelWidth),\n };\n }\n\n /**\n * @return A map of all subcomponents to subfoundations.\n */\n private getFoundationMap_(): Partial<MDCTextFieldFoundationMap> {\n return {\n characterCounter: this.characterCounter_ ? this.characterCounter_?.foundationForTextField : undefined,\n helperText: this.helperText_ ? this.helperText_.foundationForTextField : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundationForTextField : undefined,\n trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundationForTextField : undefined,\n };\n }\n\n onInput(evt: Event): void {\n const value = (evt.target as HTMLInputElement).value;\n this.value = value;\n }\n\n onFocus() {\n this.foundation?.activateFocus();\n this.emit('focus', {}, true);\n }\n\n onChange(evt: Event): void {\n const value = (evt.target as HTMLInputElement).value;\n this.value = value;\n }\n\n onBlur(): void {\n this.foundation?.deactivateFocus();\n this.emit('blur', {}, true);\n }\n\n focus() {\n this.input_.focus();\n }\n\n blur() {\n this.input_.blur();\n }\n\n onKeyup(e: KeyboardEvent) {\n if (this.blurOnEnter && e.keyCode === 13) {\n this.blur();\n }\n return true;\n }\n}\n\n/** @hidden */\nexport interface IMdcTextFieldElement extends IValidatedElement {\n $au: {\n 'au:resource:custom-element': {\n viewModel: MdcTextField;\n };\n };\n value: string;\n}\n\nfunction defineMdcTextFieldElementApis(element: HTMLElement) {\n Object.defineProperties(element, {\n tagName: {\n get() {\n return 'MDC-TEXT-FIELD';\n }\n },\n value: {\n get(this: IMdcTextFieldElement) {\n return CustomElement.for<MdcTextField>(this).viewModel.value;\n },\n set(this: IMdcTextFieldElement, value: string) {\n CustomElement.for<MdcTextField>(this).viewModel.value = value;\n },\n configurable: true\n },\n disabled: {\n get(this: IMdcTextFieldElement) {\n return CustomElement.for<MdcTextField>(this).viewModel.disabled;\n },\n set(this: IMdcTextFieldElement, value: boolean) {\n CustomElement.for<MdcTextField>(this).viewModel.disabled = value;\n },\n configurable: true\n },\n readOnly: {\n get(this: IMdcTextFieldElement) {\n return CustomElement.for<MdcTextField>(this).viewModel.readonly;\n },\n set(this: IMdcTextFieldElement, value: boolean) {\n CustomElement.for<MdcTextField>(this).viewModel.readonly = value;\n },\n configurable: true\n },\n valid: {\n get(this: IMdcTextFieldElement) {\n return CustomElement.for<MdcTextField>(this).viewModel.valid;\n },\n set(this: IMdcTextFieldElement, value: boolean) {\n CustomElement.for<MdcTextField>(this).viewModel.valid = value;\n },\n configurable: true\n },\n addError: {\n value(this: IMdcTextFieldElement, error: IError) {\n CustomElement.for<MdcTextField>(this).viewModel.addError(error);\n },\n configurable: true\n },\n removeError: {\n value(this: IMdcTextFieldElement, error: IError) {\n CustomElement.for<MdcTextField>(this).viewModel.removeError(error);\n },\n configurable: true\n },\n renderErrors: {\n value(this: IMdcTextFieldElement): void {\n CustomElement.for<MdcTextField>(this).viewModel.renderErrors();\n },\n configurable: true\n },\n focus: {\n value(this: IMdcTextFieldElement) {\n CustomElement.for<MdcTextField>(this).viewModel.focus();\n },\n configurable: true\n },\n blur: {\n value(this: IMdcTextFieldElement) {\n CustomElement.for<MdcTextField>(this).viewModel.blur();\n },\n configurable: true\n },\n isFocused: {\n get(this: IMdcTextFieldElement) {\n return document.activeElement === CustomElement.for<MdcTextField>(this).viewModel.input_;\n },\n configurable: true\n }\n });\n}\n"]}
1
+ {"version":3,"file":"mdc-text-field.js","sourceRoot":"","sources":["../../src/text-field/mdc-text-field.ts"],"names":[],"mappings":"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","sourcesContent":["import { inject, customElement, INode, bindable } from 'aurelia';\r\nimport {\r\n MDCTextFieldFoundation, MDCTextFieldRootAdapter, MDCTextFieldInputAdapter, MDCTextFieldLabelAdapter, MDCTextFieldAdapter, MDCTextFieldFoundationMap,\r\n MDCTextFieldLineRippleAdapter, MDCTextFieldOutlineAdapter, cssClasses, helperTextStrings, characterCountStrings\r\n} from '@material/textfield';\r\nimport { applyPassive } from '@material/dom/events';\r\nimport { MdcComponent, IValidatedElement, IError, booleanAttr, number } from '../base';\r\nimport { MdcTextFieldIcon, mdcIconStrings, IMdcTextFieldIconElement } from './mdc-text-field-icon';\r\nimport { MdcTextFieldHelperText } from './mdc-text-field-helper-text/mdc-text-field-helper-text';\r\nimport { MdcTextFieldCharacterCounter } from './mdc-text-field-character-counter';\r\nimport { MdcTextFieldHelperLine } from './mdc-text-field-helper-line/mdc-text-field-helper-line';\r\nimport { processContent, IPlatform, CustomAttribute, CustomElement } from '@aurelia/runtime-html';\r\nimport { MdcDefaultTextFieldConfiguration } from './mdc-default-text-field-configuration';\r\nimport template from './mdc-text-field.html?raw';\r\nimport { MdcFloatingLabel } from '../floating-label/mdc-floating-label';\r\nimport { MdcLineRipple } from '../line-ripple/mdc-line-ripple';\r\nimport { MdcNotchedOutline } from '../notched-outline/mdc-notched-outline';\r\n\r\nlet textFieldId = 0;\r\nconst leadingIconSelector = '.mdc-text-field__icon--leading';\r\nconst trailingIconSelector = '.mdc-text-field__icon--trailing';\r\n\r\n@inject(Element, IPlatform, MdcDefaultTextFieldConfiguration)\r\n@customElement({ name: 'mdc-text-field', template })\r\n@processContent(function processContent(node: INode) {\r\n const element = node as HTMLElement;\r\n // move icons to slots - this allows omitting slot specification\r\n const leadingIcon = element.querySelector(`[${mdcIconStrings.ATTRIBUTE}][${mdcIconStrings.LEADING}]`);\r\n leadingIcon?.setAttribute('au-slot', 'leading-icon');\r\n const trailingIcon = element.querySelector(`[${mdcIconStrings.ATTRIBUTE}][${mdcIconStrings.TRAILING}]`);\r\n trailingIcon?.setAttribute('au-slot', 'trailing-icon');\r\n}\r\n)\r\nexport class MdcTextField extends MdcComponent<MDCTextFieldFoundation> {\r\n constructor(root: HTMLElement, private platform: IPlatform, private defaultConfiguration: MdcDefaultTextFieldConfiguration) {\r\n super(root);\r\n this.outlined = this.defaultConfiguration.outlined;\r\n defineMdcTextFieldElementApis(this.root);\r\n }\r\n\r\n id: string = `mdc-text-field-${++textFieldId}`;\r\n id1: string = `mdc-text-field-${textFieldId}`;\r\n input_: HTMLInputElement;\r\n label_?: MdcFloatingLabel = undefined;\r\n lineRipple_: MdcLineRipple;\r\n outline_!: MdcNotchedOutline | null; // assigned in html\r\n helperText_: MdcTextFieldHelperText | undefined;\r\n characterCounter_?: MdcTextFieldCharacterCounter;\r\n errors = new Map<IError, boolean>();\r\n leadingIcon_: MdcTextFieldIcon | undefined;\r\n trailingIcon_: MdcTextFieldIcon | undefined;\r\n mutationObserver = new MutationObserver(mutations => this.mutated(mutations));\r\n\r\n @bindable()\r\n label: string;\r\n labelChanged() {\r\n this.platform.domQueue.queueTask(() => {\r\n if (this.foundation) {\r\n const openNotch = this.foundation.shouldFloat;\r\n this.foundation.notchOutline(openNotch);\r\n }\r\n });\r\n }\r\n\r\n @bindable({ set: booleanAttr })\r\n textarea: boolean;\r\n\r\n @bindable({ set: booleanAttr })\r\n endAligned: boolean;\r\n\r\n @bindable({ set: booleanAttr })\r\n ltrText: boolean;\r\n\r\n @bindable({ set: booleanAttr })\r\n outlined?: boolean;\r\n\r\n @bindable()\r\n prefix: string;\r\n\r\n @bindable()\r\n suffix: string;\r\n\r\n @bindable({ set: booleanAttr })\r\n required?: boolean;\r\n requiredChanged() {\r\n if (this.required !== undefined) {\r\n this.input_.required = this.required;\r\n this.foundation?.setUseNativeValidation(true);\r\n }\r\n }\r\n\r\n @bindable({ set: booleanAttr })\r\n disabled: boolean;\r\n disabledChanged() {\r\n this.input_.disabled = this.disabled;\r\n this.foundation?.setDisabled(this.disabled);\r\n }\r\n\r\n @bindable({ set: booleanAttr })\r\n readonly: boolean;\r\n readonlyChanged() {\r\n this.input_.readOnly = this.readonly;\r\n }\r\n\r\n /** Makes the element blur on Enter key press */\r\n @bindable({ set: booleanAttr })\r\n blurOnEnter: boolean;\r\n\r\n @bindable()\r\n maxlength: string;\r\n maxlengthChanged() {\r\n if (this.maxlength) {\r\n this.input_.setAttribute('maxlength', this.maxlength);\r\n } else {\r\n this.input_.removeAttribute('maxlength');\r\n }\r\n }\r\n\r\n @bindable()\r\n rows: string;\r\n rowsChanged() {\r\n if (this.rows) {\r\n this.input_.setAttribute('rows', this.rows);\r\n } else {\r\n this.input_.removeAttribute('rows');\r\n }\r\n }\r\n\r\n @bindable()\r\n cols: string;\r\n colsChanged() {\r\n if (this.rows) {\r\n this.input_.setAttribute('cols', this.cols);\r\n } else {\r\n this.input_.removeAttribute('cols');\r\n }\r\n }\r\n\r\n @bindable()\r\n max: string;\r\n maxChanged() {\r\n if (this.max === undefined) {\r\n this.input_.removeAttribute('max');\r\n } else {\r\n this.input_.max = this.max;\r\n }\r\n }\r\n\r\n @bindable()\r\n min: string;\r\n minChanged() {\r\n if (this.min === undefined) {\r\n this.input_.removeAttribute('min');\r\n } else {\r\n this.input_.min = this.min;\r\n }\r\n }\r\n\r\n @bindable()\r\n step: string;\r\n stepChanged() {\r\n if (this.step === undefined) {\r\n this.input_.removeAttribute('step');\r\n } else {\r\n this.input_.step = this.step;\r\n }\r\n }\r\n\r\n @bindable()\r\n autocomplete: AutoFill;\r\n autocompleteChanged() {\r\n if (this.autocomplete === undefined) {\r\n this.input_.removeAttribute('autocomplete');\r\n } else {\r\n this.input_.autocomplete = this.autocomplete;\r\n }\r\n }\r\n\r\n @bindable({ set: number })\r\n tabindex: number;\r\n tabindexChanged() {\r\n if (isNaN(this.tabindex)) {\r\n this.input_.removeAttribute('tabindex');\r\n } else {\r\n this.input_.tabIndex = this.tabindex;\r\n }\r\n }\r\n\r\n @bindable()\r\n type: string;\r\n typeChanged() {\r\n if (!this.textarea) {\r\n if (this.type === undefined) {\r\n this.input_.removeAttribute('type');\r\n } else {\r\n this.input_.type = this.type;\r\n }\r\n }\r\n }\r\n\r\n @bindable()\r\n name: string;\r\n nameChanged() {\r\n if (this.name === undefined) {\r\n this.input_.removeAttribute('name');\r\n } else {\r\n this.input_.name = this.name;\r\n }\r\n }\r\n\r\n @bindable()\r\n placeholder: string = ' '; // non empty placeholder solves the issue of misplaced labels in Safari\r\n\r\n private initialValue: string;\r\n get value(): string {\r\n if (this.foundation) {\r\n return this.foundation.getValue();\r\n } else {\r\n return this.initialValue;\r\n }\r\n }\r\n set value(value: string) {\r\n if (this.foundation) {\r\n if (this.foundation.getValue() !== value) {\r\n this.foundation.setValue(value === null || value === undefined ? '' : value.toString());\r\n }\r\n } else {\r\n this.initialValue = value;\r\n }\r\n }\r\n\r\n addError(error: IError) {\r\n this.errors.set(error, true);\r\n this.valid = false;\r\n }\r\n\r\n removeError(error: IError) {\r\n this.errors.delete(error);\r\n this.valid = this.errors.size === 0;\r\n }\r\n\r\n get valid(): boolean {\r\n return this.foundation?.isValid() ?? true;\r\n }\r\n\r\n set valid(value: boolean) {\r\n this.foundation?.setUseNativeValidation(false);\r\n this.foundation?.setValid(value);\r\n }\r\n\r\n renderErrors() {\r\n const helperLine = this.root.nextElementSibling;\r\n if (helperLine?.tagName === 'MDC-TEXT-FIELD-HELPER-LINE') {\r\n CustomElement.for<MdcTextFieldHelperLine>(helperLine).viewModel.errors = Array.from(this.errors.keys())\r\n .filter(x => x.message !== null).map(x => x.message!);\r\n }\r\n }\r\n\r\n async attaching() {\r\n const nextSibling = this.root.nextElementSibling;\r\n if (nextSibling?.tagName === cssClasses.HELPER_LINE.toUpperCase()) {\r\n await CustomElement.for<MdcTextFieldHelperLine>(nextSibling).viewModel.attachedPromise;\r\n const helperTextEl = nextSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\r\n this.helperText_ = helperTextEl ? CustomElement.for<MdcTextFieldHelperText>(nextSibling).viewModel : undefined;\r\n const characterCounterEl = nextSibling.querySelector(characterCountStrings.ROOT_SELECTOR);\r\n this.characterCounter_ = characterCounterEl ? CustomElement.for<MdcTextFieldCharacterCounter>(characterCounterEl).viewModel : undefined;\r\n }\r\n }\r\n\r\n beforeFoundationCreated() {\r\n this.maxlengthChanged();\r\n this.typeChanged();\r\n this.mutationObserver.observe(this.root, { subtree: true, childList: true });\r\n this.leadingIconChanged();\r\n this.trailingIconChanged();\r\n }\r\n\r\n mutated(mutations: MutationRecord[]) {\r\n if (mutations.find(x => [...Array.from(x.addedNodes), ...Array.from(x.removedNodes)].find(y => y instanceof HTMLElement && y.matches(leadingIconSelector)))) {\r\n this.leadingIconChanged();\r\n }\r\n if (mutations.find(x => [...Array.from(x.addedNodes), ...Array.from(x.removedNodes)].find(y => y instanceof HTMLElement && y.matches(trailingIconSelector)))) {\r\n this.trailingIconChanged();\r\n }\r\n }\r\n\r\n trailingIconChanged() {\r\n const el = this.root.querySelector<IMdcTextFieldIconElement>(trailingIconSelector);\r\n this.trailingIcon_ = el ? CustomAttribute.for<MdcTextFieldIcon>(el, mdcIconStrings.ATTRIBUTE)?.viewModel : undefined;\r\n }\r\n\r\n leadingIconChanged() {\r\n const el = this.root.querySelector<IMdcTextFieldIconElement>(leadingIconSelector);\r\n this.leadingIcon_ = el ? CustomAttribute.for<MdcTextFieldIcon>(el, mdcIconStrings.ATTRIBUTE)?.viewModel : undefined;\r\n }\r\n\r\n override destroy() {\r\n this.mutationObserver.disconnect();\r\n }\r\n\r\n initialSyncWithDOM() {\r\n this.value = this.initialValue;\r\n this.errors = new Map<IError, boolean>();\r\n this.valid = true;\r\n\r\n this.requiredChanged();\r\n this.disabledChanged();\r\n this.readonlyChanged();\r\n this.tabindexChanged();\r\n this.rowsChanged();\r\n this.colsChanged();\r\n this.minChanged();\r\n this.maxChanged();\r\n this.stepChanged();\r\n this.autocompleteChanged();\r\n this.nameChanged();\r\n // handle the case when attribute value was set, not bound, in html\r\n if (this.root.hasAttribute('value')) {\r\n this.value = this.root.getAttribute('value') ?? '';\r\n }\r\n }\r\n\r\n getDefaultFoundation() {\r\n const adapter: Partial<MDCTextFieldAdapter> = {\r\n ...this.getRootAdapterMethods_(),\r\n ...this.getInputAdapterMethods_(),\r\n ...this.getLabelAdapterMethods_(),\r\n ...this.getLineRippleAdapterMethods_(),\r\n ...this.getOutlineAdapterMethods_(),\r\n };\r\n return new MDCTextFieldFoundation(adapter, this.getFoundationMap_());\r\n }\r\n\r\n private getRootAdapterMethods_(): MDCTextFieldRootAdapter {\r\n return {\r\n addClass: (className) => this.root.classList.add(className),\r\n removeClass: (className) => this.root.classList.remove(className),\r\n hasClass: (className) => this.root.classList.contains(className),\r\n registerTextFieldInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\r\n deregisterTextFieldInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\r\n registerValidationAttributeChangeHandler: (handler) => {\r\n const getAttributesList = (mutationsList: MutationRecord[]): string[] => {\r\n return mutationsList\r\n .map((mutation) => mutation.attributeName)\r\n .filter((attributeName) => attributeName) as string[];\r\n };\r\n const observer = new MutationObserver((mutationsList) => handler(getAttributesList(mutationsList)));\r\n const config = { attributes: true };\r\n observer.observe(this.input_, config);\r\n return observer;\r\n },\r\n deregisterValidationAttributeChangeHandler: (observer) => observer.disconnect(),\r\n };\r\n }\r\n\r\n private getInputAdapterMethods_(): MDCTextFieldInputAdapter {\r\n return {\r\n getNativeInput: () => this.input_,\r\n setInputAttr: (attr, value) => {\r\n this.input_.setAttribute(attr, value);\r\n },\r\n removeInputAttr: (attr) => {\r\n this.input_.removeAttribute(attr);\r\n },\r\n isFocused: () => document.activeElement === this.input_,\r\n registerInputInteractionHandler: (evtType, handler) => this.input_.addEventListener(evtType, handler, applyPassive()),\r\n deregisterInputInteractionHandler: (evtType, handler) => this.input_?.removeEventListener(evtType, handler, applyPassive()),\r\n };\r\n }\r\n\r\n private getLabelAdapterMethods_(): MDCTextFieldLabelAdapter {\r\n return {\r\n floatLabel: (shouldFloat) => this.label_?.float(shouldFloat),\r\n getLabelWidth: () => this.label_ ? this.label_.getWidth() : 0,\r\n hasLabel: () => Boolean(this.label_),\r\n shakeLabel: (shouldShake) => this.label_?.shake(shouldShake),\r\n setLabelRequired: (isRequired) => this.label_?.setRequired(isRequired),\r\n };\r\n }\r\n\r\n private getLineRippleAdapterMethods_(): MDCTextFieldLineRippleAdapter {\r\n return {\r\n activateLineRipple: () => this.lineRipple_?.activate(),\r\n deactivateLineRipple: () => this.lineRipple_?.deactivate(),\r\n setLineRippleTransformOrigin: (normalizedX) => this.lineRipple_?.setRippleCenter(normalizedX)\r\n };\r\n }\r\n\r\n private getOutlineAdapterMethods_(): MDCTextFieldOutlineAdapter {\r\n return {\r\n closeOutline: () => this.outline_?.closeNotch(),\r\n hasOutline: () => Boolean(this.outline_),\r\n notchOutline: (labelWidth) => this.outline_?.notch(labelWidth),\r\n };\r\n }\r\n\r\n /**\r\n * @return A map of all subcomponents to subfoundations.\r\n */\r\n private getFoundationMap_(): Partial<MDCTextFieldFoundationMap> {\r\n return {\r\n characterCounter: this.characterCounter_ ? this.characterCounter_?.foundationForTextField : undefined,\r\n helperText: this.helperText_ ? this.helperText_.foundationForTextField : undefined,\r\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundationForTextField : undefined,\r\n trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundationForTextField : undefined,\r\n };\r\n }\r\n\r\n onInput(evt: Event): void {\r\n const value = (evt.target as HTMLInputElement).value;\r\n this.value = value;\r\n }\r\n\r\n onFocus() {\r\n this.foundation?.activateFocus();\r\n this.emit('focus', {}, true);\r\n }\r\n\r\n onChange(evt: Event): void {\r\n const value = (evt.target as HTMLInputElement).value;\r\n this.value = value;\r\n }\r\n\r\n onBlur(): void {\r\n this.foundation?.deactivateFocus();\r\n this.emit('blur', {}, true);\r\n }\r\n\r\n focus() {\r\n this.input_.focus();\r\n }\r\n\r\n blur() {\r\n this.input_.blur();\r\n }\r\n\r\n onKeyup(e: KeyboardEvent) {\r\n if (this.blurOnEnter && e.keyCode === 13) {\r\n this.blur();\r\n }\r\n return true;\r\n }\r\n}\r\n\r\n/** @hidden */\r\nexport interface IMdcTextFieldElement extends IValidatedElement {\r\n $au: {\r\n 'au:resource:custom-element': {\r\n viewModel: MdcTextField;\r\n };\r\n };\r\n value: string;\r\n}\r\n\r\nfunction defineMdcTextFieldElementApis(element: HTMLElement) {\r\n Object.defineProperties(element, {\r\n tagName: {\r\n get() {\r\n return 'MDC-TEXT-FIELD';\r\n }\r\n },\r\n value: {\r\n get(this: IMdcTextFieldElement) {\r\n return CustomElement.for<MdcTextField>(this).viewModel.value;\r\n },\r\n set(this: IMdcTextFieldElement, value: string) {\r\n CustomElement.for<MdcTextField>(this).viewModel.value = value;\r\n },\r\n configurable: true\r\n },\r\n disabled: {\r\n get(this: IMdcTextFieldElement) {\r\n return CustomElement.for<MdcTextField>(this).viewModel.disabled;\r\n },\r\n set(this: IMdcTextFieldElement, value: boolean) {\r\n CustomElement.for<MdcTextField>(this).viewModel.disabled = value;\r\n },\r\n configurable: true\r\n },\r\n readOnly: {\r\n get(this: IMdcTextFieldElement) {\r\n return CustomElement.for<MdcTextField>(this).viewModel.readonly;\r\n },\r\n set(this: IMdcTextFieldElement, value: boolean) {\r\n CustomElement.for<MdcTextField>(this).viewModel.readonly = value;\r\n },\r\n configurable: true\r\n },\r\n valid: {\r\n get(this: IMdcTextFieldElement) {\r\n return CustomElement.for<MdcTextField>(this).viewModel.valid;\r\n },\r\n set(this: IMdcTextFieldElement, value: boolean) {\r\n CustomElement.for<MdcTextField>(this).viewModel.valid = value;\r\n },\r\n configurable: true\r\n },\r\n addError: {\r\n value(this: IMdcTextFieldElement, error: IError) {\r\n CustomElement.for<MdcTextField>(this).viewModel.addError(error);\r\n },\r\n configurable: true\r\n },\r\n removeError: {\r\n value(this: IMdcTextFieldElement, error: IError) {\r\n CustomElement.for<MdcTextField>(this).viewModel.removeError(error);\r\n },\r\n configurable: true\r\n },\r\n renderErrors: {\r\n value(this: IMdcTextFieldElement): void {\r\n CustomElement.for<MdcTextField>(this).viewModel.renderErrors();\r\n },\r\n configurable: true\r\n },\r\n focus: {\r\n value(this: IMdcTextFieldElement) {\r\n CustomElement.for<MdcTextField>(this).viewModel.focus();\r\n },\r\n configurable: true\r\n },\r\n blur: {\r\n value(this: IMdcTextFieldElement) {\r\n CustomElement.for<MdcTextField>(this).viewModel.blur();\r\n },\r\n configurable: true\r\n },\r\n isFocused: {\r\n get(this: IMdcTextFieldElement) {\r\n return document.activeElement === CustomElement.for<MdcTextField>(this).viewModel.input_;\r\n },\r\n configurable: true\r\n }\r\n });\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mdc-tree-view.js","sourceRoot":"","sources":["../../src/tree-view/mdc-tree-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { MdcComponent } from '../base';\nimport { MDCFoundation } from '@material/base';\nimport { customElement, bindable, inject, ViewFactory, INode } from 'aurelia';\nimport { ITreeNode } from './i-tree-node';\nimport { processContent } from '@aurelia/runtime-html';\nimport template from './mdc-tree-view.html?raw';\n\nlet id = 0;\nconst templateLookup: Record<string, string> = {};\nconst getNextNodeTemplateId = () => ++id;\nconst NODE_SELECTED_EVENT = 'mdctree:node-selected';\n\nexport class MDCTreeViewFoundation extends MDCFoundation { }\n\n@inject(Element)\n@customElement({ name: 'mdc-tree-view', template })\n@processContent(function processContent(node: INode) {\n const element = node as Element;\n const treeNode = element.querySelector('mdc-tree-node');\n if (treeNode) {\n const nodeTemplateId = getNextNodeTemplateId();\n element.setAttribute('data-template-id', nodeTemplateId.toString());\n templateLookup[nodeTemplateId] = treeNode.innerHTML;\n }\n element.innerHTML = '';\n return false;\n}\n)\nexport class MdcTreeView extends MdcComponent<MDCTreeViewFoundation> {\n getDefaultFoundation(): MDCTreeViewFoundation {\n return new MDCTreeViewFoundation();\n }\n\n constructor(root: HTMLElement) {\n super(root);\n const templateId = root.getAttribute('data-template-id');\n if (templateId !== null) {\n this.nodeTemplate = templateLookup[templateId];\n }\n }\n\n nodeViewFactory: ViewFactory;\n selectedNode?: ITreeNode;\n\n @bindable()\n nodeTemplate: string;\n\n @bindable()\n nodes: ITreeNode[];\n\n /**\n * Allows for filtering tree nodes\n */\n @bindable()\n filter: (n: ITreeNode) => boolean = () => true;\n\n @bindable()\n rootBindingContext: Record<string, unknown>;\n\n bind(bindingContext: Record<string, unknown>) {\n this.rootBindingContext = this.rootBindingContext ?? bindingContext;\n }\n\n toggleExpanded(n: ITreeNode, e: Event): boolean {\n n.expanded = !n.expanded;\n e.stopPropagation();\n return false;\n }\n\n nodeClicked(n?: ITreeNode) {\n if (this.selectedNode) {\n this.selectedNode.selected = false;\n }\n if (n) {\n n.selected = true;\n }\n this.selectedNode = n;\n this.root.dispatchEvent(new CustomEvent(NODE_SELECTED_EVENT,\n { detail: { node: n }, bubbles: true })\n );\n return true;\n }\n\n childNodeSelected(n: ITreeNode) {\n if (this.selectedNode && this.selectedNode !== n) {\n this.selectedNode.selected = false;\n }\n this.selectedNode = n;\n }\n\n findPath<T extends ITreeNode>(nodes: T[], predicate: (node: T) => boolean): number[] {\n const path: number[] = [];\n for (let i = 0; i < nodes.length; ++i) {\n if (predicate(nodes[i])) {\n return [i];\n }\n if (!nodes[i].children) {\n continue;\n }\n const childPath = this.findPath(nodes[i].children!, predicate);\n if (childPath.length) {\n return [i, ...childPath];\n }\n }\n return path;\n }\n\n async expandPath(path: number[]) {\n const filteredNodes = this.nodes.filter(x => this.filter(x));\n if (path.length === 1) {\n this.nodeClicked(filteredNodes[path[0]]);\n this.root.querySelectorAll('.mdc-tree-view__node')[path[0]].scrollIntoView();\n } else {\n filteredNodes[path[0]].expanded = true;\n // child tree views are hidden with 'if.bind'\n // promises are created by a helper element `mdc-promisify-reference`\n // this lets dependent code to wait till a view model reference is assigned\n await this.initialised;\n const childTreeView = await (filteredNodes[path[0]].childTreeViewPromise);\n await childTreeView?.expandPath(path.slice(1));\n }\n }\n\n async find<T extends ITreeNode>(predicate: (node: T) => boolean) {\n // to avoid rendering the whole tree finding a node is a 2-step process\n // firstly, find the path - nodes which need to be expanded to display the target node\n const filteredNodes = this.nodes.filter(x => this.filter(x));\n const path = this.findPath(filteredNodes, predicate);\n if (path.length) {\n // secondly, expand the path\n await this.expandPath(path);\n }\n }\n\n dispatchEvent(type: string, node: ITreeNode) {\n this.root.dispatchEvent(new CustomEvent(type, { bubbles: true, detail: { node } }));\n }\n}\n\n/** @hidden */\nexport interface IMdcTreeElement extends HTMLElement {\n $au: {\n 'au:resource:custom-element': {\n viewModel: MdcTreeView;\n };\n };\n}\n"]}
1
+ {"version":3,"file":"mdc-tree-view.js","sourceRoot":"","sources":["../../src/tree-view/mdc-tree-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { MdcComponent } from '../base';\r\nimport { MDCFoundation } from '@material/base';\r\nimport { customElement, bindable, inject, ViewFactory, INode } from 'aurelia';\r\nimport { ITreeNode } from './i-tree-node';\r\nimport { processContent } from '@aurelia/runtime-html';\r\nimport template from './mdc-tree-view.html?raw';\r\n\r\nlet id = 0;\r\nconst templateLookup: Record<string, string> = {};\r\nconst getNextNodeTemplateId = () => ++id;\r\nconst NODE_SELECTED_EVENT = 'mdctree:node-selected';\r\n\r\nexport class MDCTreeViewFoundation extends MDCFoundation { }\r\n\r\n@inject(Element)\r\n@customElement({ name: 'mdc-tree-view', template })\r\n@processContent(function processContent(node: INode) {\r\n const element = node as Element;\r\n const treeNode = element.querySelector('mdc-tree-node');\r\n if (treeNode) {\r\n const nodeTemplateId = getNextNodeTemplateId();\r\n element.setAttribute('data-template-id', nodeTemplateId.toString());\r\n templateLookup[nodeTemplateId] = treeNode.innerHTML;\r\n }\r\n element.innerHTML = '';\r\n return false;\r\n}\r\n)\r\nexport class MdcTreeView extends MdcComponent<MDCTreeViewFoundation> {\r\n getDefaultFoundation(): MDCTreeViewFoundation {\r\n return new MDCTreeViewFoundation();\r\n }\r\n\r\n constructor(root: HTMLElement) {\r\n super(root);\r\n const templateId = root.getAttribute('data-template-id');\r\n if (templateId !== null) {\r\n this.nodeTemplate = templateLookup[templateId];\r\n }\r\n }\r\n\r\n nodeViewFactory: ViewFactory;\r\n selectedNode?: ITreeNode;\r\n\r\n @bindable()\r\n nodeTemplate: string;\r\n\r\n @bindable()\r\n nodes: ITreeNode[];\r\n\r\n /**\r\n * Allows for filtering tree nodes\r\n */\r\n @bindable()\r\n filter: (n: ITreeNode) => boolean = () => true;\r\n\r\n @bindable()\r\n rootBindingContext: Record<string, unknown>;\r\n\r\n bind(bindingContext: Record<string, unknown>) {\r\n this.rootBindingContext = this.rootBindingContext ?? bindingContext;\r\n }\r\n\r\n toggleExpanded(n: ITreeNode, e: Event): boolean {\r\n n.expanded = !n.expanded;\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n nodeClicked(n?: ITreeNode) {\r\n if (this.selectedNode) {\r\n this.selectedNode.selected = false;\r\n }\r\n if (n) {\r\n n.selected = true;\r\n }\r\n this.selectedNode = n;\r\n this.root.dispatchEvent(new CustomEvent(NODE_SELECTED_EVENT,\r\n { detail: { node: n }, bubbles: true })\r\n );\r\n return true;\r\n }\r\n\r\n childNodeSelected(n: ITreeNode) {\r\n if (this.selectedNode && this.selectedNode !== n) {\r\n this.selectedNode.selected = false;\r\n }\r\n this.selectedNode = n;\r\n }\r\n\r\n findPath<T extends ITreeNode>(nodes: T[], predicate: (node: T) => boolean): number[] {\r\n const path: number[] = [];\r\n for (let i = 0; i < nodes.length; ++i) {\r\n if (predicate(nodes[i])) {\r\n return [i];\r\n }\r\n if (!nodes[i].children) {\r\n continue;\r\n }\r\n const childPath = this.findPath(nodes[i].children!, predicate);\r\n if (childPath.length) {\r\n return [i, ...childPath];\r\n }\r\n }\r\n return path;\r\n }\r\n\r\n async expandPath(path: number[]) {\r\n const filteredNodes = this.nodes.filter(x => this.filter(x));\r\n if (path.length === 1) {\r\n this.nodeClicked(filteredNodes[path[0]]);\r\n this.root.querySelectorAll('.mdc-tree-view__node')[path[0]].scrollIntoView();\r\n } else {\r\n filteredNodes[path[0]].expanded = true;\r\n // child tree views are hidden with 'if.bind'\r\n // promises are created by a helper element `mdc-promisify-reference`\r\n // this lets dependent code to wait till a view model reference is assigned\r\n await this.initialised;\r\n const childTreeView = await (filteredNodes[path[0]].childTreeViewPromise);\r\n await childTreeView?.expandPath(path.slice(1));\r\n }\r\n }\r\n\r\n async find<T extends ITreeNode>(predicate: (node: T) => boolean) {\r\n // to avoid rendering the whole tree finding a node is a 2-step process\r\n // firstly, find the path - nodes which need to be expanded to display the target node\r\n const filteredNodes = this.nodes.filter(x => this.filter(x));\r\n const path = this.findPath(filteredNodes, predicate);\r\n if (path.length) {\r\n // secondly, expand the path\r\n await this.expandPath(path);\r\n }\r\n }\r\n\r\n dispatchEvent(type: string, node: ITreeNode) {\r\n this.root.dispatchEvent(new CustomEvent(type, { bubbles: true, detail: { node } }));\r\n }\r\n}\r\n\r\n/** @hidden */\r\nexport interface IMdcTreeElement extends HTMLElement {\r\n $au: {\r\n 'au:resource:custom-element': {\r\n viewModel: MdcTreeView;\r\n };\r\n };\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurelia-mdc-web/all",
3
- "version": "9.3.0-au2",
3
+ "version": "9.3.1-au2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -89,7 +89,7 @@
89
89
  "@material/tooltip": "^14.0.0",
90
90
  "@material/top-app-bar": "^14.0.0",
91
91
  "@material/typography": "^14.0.0",
92
- "aurelia": "2.0.0-beta.23",
92
+ "aurelia": "2.0.0-beta.24",
93
93
  "tslib": "^2.8.1"
94
94
  }
95
95
  }