@tylertech/forge 3.0.0-next.7 → 3.0.0-next.8

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 (114) hide show
  1. package/custom-elements.json +1095 -5
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/app-bar/help-button/index.js +1 -1
  4. package/dist/esm/app-bar/index.js +1 -1
  5. package/dist/esm/app-bar/menu-button/index.js +1 -1
  6. package/dist/esm/app-bar/notification-button/index.js +1 -1
  7. package/dist/esm/app-bar/profile-button/index.js +1 -1
  8. package/dist/esm/app-bar/search/index.js +1 -1
  9. package/dist/esm/autocomplete/index.js +1 -1
  10. package/dist/esm/banner/index.js +1 -1
  11. package/dist/esm/bottom-sheet/index.js +1 -1
  12. package/dist/esm/button-toggle/index.js +1 -1
  13. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  14. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  15. package/dist/esm/calendar/index.js +1 -1
  16. package/dist/esm/card/index.js +1 -1
  17. package/dist/esm/checkbox/index.js +1 -1
  18. package/dist/esm/chip-field/index.js +1 -1
  19. package/dist/esm/chips/chip/index.js +1 -1
  20. package/dist/esm/chips/chip-set/index.js +1 -1
  21. package/dist/esm/chips/index.js +1 -1
  22. package/dist/esm/chunks/{chunk.STGRPD2L.js → chunk.3AF7CJP2.js} +2 -2
  23. package/dist/esm/chunks/{chunk.STGRPD2L.js.map → chunk.3AF7CJP2.js.map} +1 -1
  24. package/dist/esm/chunks/chunk.57XQ4F6F.js +12 -0
  25. package/dist/esm/chunks/chunk.57XQ4F6F.js.map +7 -0
  26. package/dist/esm/chunks/{chunk.OT6H5NHX.js → chunk.5MK5YWCK.js} +2 -2
  27. package/dist/esm/chunks/chunk.C2LTB7EX.js +7 -0
  28. package/dist/esm/chunks/chunk.C2LTB7EX.js.map +7 -0
  29. package/dist/esm/chunks/{chunk.OHNPVHPF.js → chunk.CN27IHDN.js} +2 -2
  30. package/dist/esm/chunks/chunk.IIXLFXHZ.js +7 -0
  31. package/dist/esm/chunks/chunk.IIXLFXHZ.js.map +7 -0
  32. package/dist/esm/chunks/chunk.JQIOVCKI.js +7 -0
  33. package/dist/esm/chunks/chunk.JQIOVCKI.js.map +7 -0
  34. package/dist/esm/chunks/chunk.LJYTJ3RV.js +7 -0
  35. package/dist/esm/chunks/chunk.LJYTJ3RV.js.map +7 -0
  36. package/dist/esm/chunks/{chunk.XMFQFFKR.js → chunk.NDGFQILG.js} +2 -2
  37. package/dist/esm/chunks/chunk.WH6C36MO.js +7 -0
  38. package/dist/esm/chunks/chunk.WH6C36MO.js.map +7 -0
  39. package/dist/esm/color-picker/index.js +1 -1
  40. package/dist/esm/core/index.js +1 -1
  41. package/dist/esm/date-picker/index.js +1 -1
  42. package/dist/esm/date-range-picker/index.js +1 -1
  43. package/dist/esm/expansion-panel/index.js +1 -1
  44. package/dist/esm/file-picker/index.js +1 -1
  45. package/dist/esm/focus-indicator/index.js +7 -0
  46. package/dist/esm/focus-indicator/index.js.map +7 -0
  47. package/dist/esm/icon/index.js +1 -1
  48. package/dist/esm/icon-button/index.js +1 -1
  49. package/dist/esm/index.js +1 -1
  50. package/dist/esm/list-dropdown/index.js +1 -1
  51. package/dist/esm/menu/index.js +1 -1
  52. package/dist/esm/open-icon/index.js +1 -1
  53. package/dist/esm/paginator/index.js +1 -1
  54. package/dist/esm/profile-card/index.js +1 -1
  55. package/dist/esm/quantity-field/index.js +1 -1
  56. package/dist/esm/select/core/index.js +1 -1
  57. package/dist/esm/select/index.js +1 -1
  58. package/dist/esm/select/select/index.js +1 -1
  59. package/dist/esm/select/select-dropdown/index.js +1 -1
  60. package/dist/esm/slider/index.js +1 -1
  61. package/dist/esm/split-view/index.js +1 -1
  62. package/dist/esm/split-view/split-view/index.js +1 -1
  63. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  64. package/dist/esm/stepper/index.js +1 -1
  65. package/dist/esm/stepper/step/index.js +1 -1
  66. package/dist/esm/stepper/stepper/index.js +1 -1
  67. package/dist/esm/switch/index.js +1 -1
  68. package/dist/esm/table/index.js +1 -1
  69. package/dist/esm/tabs/index.js +1 -1
  70. package/dist/esm/tabs/tab/index.js +1 -1
  71. package/dist/esm/tabs/tab-bar/index.js +1 -1
  72. package/dist/esm/time-picker/index.js +1 -1
  73. package/dist/esm/toast/index.js +1 -1
  74. package/esm/card/card-constants.d.ts +2 -2
  75. package/esm/card/card-constants.js +2 -2
  76. package/esm/card/card.d.ts +19 -8
  77. package/esm/card/card.js +30 -21
  78. package/esm/focus-indicator/focus-indicator-adapter.d.ts +37 -0
  79. package/esm/focus-indicator/focus-indicator-adapter.js +59 -0
  80. package/esm/focus-indicator/focus-indicator-constants.d.ts +15 -0
  81. package/esm/focus-indicator/focus-indicator-constants.js +19 -0
  82. package/esm/focus-indicator/focus-indicator-foundation.d.ts +43 -0
  83. package/esm/focus-indicator/focus-indicator-foundation.js +110 -0
  84. package/esm/focus-indicator/focus-indicator.d.ts +67 -0
  85. package/esm/focus-indicator/focus-indicator.js +112 -0
  86. package/esm/focus-indicator/index.d.ts +10 -0
  87. package/esm/focus-indicator/index.js +14 -0
  88. package/esm/index.d.ts +1 -0
  89. package/esm/index.js +3 -0
  90. package/esm/slider/slider-utils.js +3 -0
  91. package/esm/slider/slider.d.ts +0 -1
  92. package/esm/slider/slider.js +7 -4
  93. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  94. package/esm/tabs/tab/tab-adapter.d.ts +1 -1
  95. package/esm/tabs/tab/tab-adapter.js +4 -4
  96. package/esm/tabs/tab/tab.js +7 -3
  97. package/package.json +1 -1
  98. package/styles/card/_mixins.scss +8 -7
  99. package/styles/focus-indicator/_mixins.scss +147 -0
  100. package/styles/focus-indicator/_variables.scss +20 -0
  101. package/styles/focus-indicator/focus-indicator.scss +32 -0
  102. package/styles/slider/_mixins.scss +9 -0
  103. package/styles/tabs/tab/_mixins.scss +11 -0
  104. package/dist/esm/chunks/chunk.BWZKQ6WX.js +0 -7
  105. package/dist/esm/chunks/chunk.BWZKQ6WX.js.map +0 -7
  106. package/dist/esm/chunks/chunk.GWIVOPRO.js +0 -7
  107. package/dist/esm/chunks/chunk.GWIVOPRO.js.map +0 -7
  108. package/dist/esm/chunks/chunk.JHXNEHWR.js +0 -12
  109. package/dist/esm/chunks/chunk.JHXNEHWR.js.map +0 -7
  110. package/dist/esm/chunks/chunk.WFDIA7R6.js +0 -7
  111. package/dist/esm/chunks/chunk.WFDIA7R6.js.map +0 -7
  112. /package/dist/esm/chunks/{chunk.OT6H5NHX.js.map → chunk.5MK5YWCK.js.map} +0 -0
  113. /package/dist/esm/chunks/{chunk.OHNPVHPF.js.map → chunk.CN27IHDN.js.map} +0 -0
  114. /package/dist/esm/chunks/{chunk.XMFQFFKR.js.map → chunk.NDGFQILG.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/focus-indicator/focus-indicator-adapter.ts", "../../src/focus-indicator/focus-indicator-constants.ts", "../../src/focus-indicator/focus-indicator-foundation.ts", "../../src/focus-indicator/focus-indicator.ts"],
4
+ "sourcesContent": ["import { BaseAdapter, IBaseAdapter } from '../core';\nimport { IFocusIndicatorComponent } from './focus-indicator';\n\nexport interface IFocusIndicatorAdapter extends IBaseAdapter {\n destroy(): void;\n hasTargetElement(): boolean;\n addTargetListener(type: string, listener: EventListener): void;\n removeTargetListener(type: string, listener: EventListener): void;\n getTargetElement(): HTMLElement | null;\n setTargetElement(el: HTMLElement | null): void;\n trySetTarget(value: string | null): void;\n isActive(selector: string): boolean;\n}\n\nexport class FocusIndicatorAdapter extends BaseAdapter<IFocusIndicatorComponent> implements IFocusIndicatorAdapter {\n private _targetElement: HTMLElement | null = null;\n\n constructor(component: IFocusIndicatorComponent) {\n super(component);\n }\n\n public destroy(): void {\n this._targetElement = null;\n }\n \n public hasTargetElement(): boolean {\n return !!this._targetElement;\n }\n\n public addTargetListener(type: string, listener: EventListener): void {\n this._targetElement?.addEventListener(type, listener);\n }\n\n public removeTargetListener(type: string, listener: EventListener): void {\n this._targetElement?.removeEventListener(type, listener);\n }\n\n public getTargetElement(): HTMLElement | null {\n return this._targetElement;\n }\n\n public setTargetElement(el: HTMLElement | null): void {\n this._targetElement = el;\n }\n\n /**\n * We use the following heuristic for locating the target element:\n * - If the `target` attribute is set, we use that value to query the DOM for the target element\n * - If the `target` attribute is set to `:host`, we use the host element from within a shadow tree (only if the root node is a ShadowRoot instance)\n * - If the `target` attribute is set but the querySelector returns null, we use the parent element as the target element\n * - If the `target` attribute is not set, we use the parent element as the target element\n * @param value {string | null} - A selector string to query the DOM for the target element\n */\n public trySetTarget(value: string | null): void {\n if (value) {\n const rootNode = this._component.getRootNode() as Document | ShadowRoot;\n\n // Special case handling for a `:host` selector to easily target a host element\n // from within a shadow tree, given that this is a very common scenario\n if (value === ':host' && rootNode instanceof ShadowRoot) {\n this._targetElement = rootNode.host as HTMLElement;\n return;\n }\n\n this._targetElement = rootNode.querySelector(`#${value}`);\n }\n\n if (!this._targetElement) {\n this.setTargetElement(this._component.parentElement);\n }\n }\n\n public isActive(selector: string): boolean {\n return !!this._targetElement?.matches(selector);\n }\n}\n", "import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}focus-indicator`;\n\nconst observedAttributes = {\n TARGET: 'target',\n ACTIVE: 'active',\n INWARD: 'inward',\n CIRCULAR: 'circular',\n ALLOW_FOCUS: 'allow-focus'\n};\n\nconst attributes = {\n ...observedAttributes\n};\n\nexport const FOCUS_INDICATOR_CONSTANTS = {\n elementName,\n attributes\n};\n", "import { IFocusIndicatorAdapter } from './focus-indicator-adapter';\nimport { FOCUS_INDICATOR_CONSTANTS } from './focus-indicator-constants';\n\nexport interface IFocusIndicatorFoundation {\n targetElement: HTMLElement | null;\n target: string | null;\n active: boolean;\n inward: boolean;\n circular: boolean;\n allowFocus: boolean;\n initialize(): void;\n destroy(): void;\n}\n\nexport class FocusIndicatorFoundation implements IFocusIndicatorFoundation {\n private _target: string | null = null;\n private _active = false;\n private _inward = false;\n private _circular = false;\n private _allowFocus = false;\n private _interactionListener: EventListener;\n\n constructor(private _adapter: IFocusIndicatorAdapter) {\n this._interactionListener = evt => this._onInteraction(evt);\n }\n\n public initialize(): void {\n if (!this._adapter.hasTargetElement()) {\n this._adapter.trySetTarget(this._target);\n }\n this._addListeners();\n }\n\n public destroy(): void {\n this._adapter.destroy();\n this._removeListeners();\n }\n\n private _addListeners(): void {\n this._adapter.addTargetListener('focusin', this._interactionListener);\n this._adapter.addTargetListener('focusout', this._interactionListener);\n this._adapter.addTargetListener('pointerdown', this._interactionListener);\n }\n\n private _removeListeners(): void {\n this._adapter.removeTargetListener('focusin', this._interactionListener);\n this._adapter.removeTargetListener('focusout', this._interactionListener);\n this._adapter.removeTargetListener('pointerdown', this._interactionListener);\n }\n\n private _onInteraction(evt: Event): void {\n switch (evt.type) {\n case 'focusin':\n this.active = this._adapter.isActive(this._allowFocus ? ':focus' : ':focus-visible');\n break;\n case 'focusout':\n this.active = false;\n break;\n case 'pointerdown':\n this.active = this._allowFocus ? this._adapter.isActive(':focus') : false;\n break;\n }\n }\n\n public get targetElement(): HTMLElement | null {\n return this._adapter.getTargetElement();\n }\n public set targetElement(value: HTMLElement | null) {\n this._removeListeners();\n this._adapter.setTargetElement(value);\n this._addListeners();\n }\n\n public get target(): string | null {\n return this._adapter.getHostAttribute(FOCUS_INDICATOR_CONSTANTS.attributes.TARGET);\n }\n public set target(value: string | null) {\n if (this._target !== value) {\n this._target = value;\n if (this._adapter.isConnected) {\n this._adapter.trySetTarget(value);\n }\n this._adapter.toggleHostAttribute(FOCUS_INDICATOR_CONSTANTS.attributes.TARGET, Boolean(this._target), this._target as string);\n }\n }\n\n public get active(): boolean {\n return this._active;\n }\n public set active(value: boolean) {\n value = Boolean(value);\n if (this._active !== value) {\n this._active = value;\n this._adapter.toggleHostAttribute(FOCUS_INDICATOR_CONSTANTS.attributes.ACTIVE, this._active);\n }\n }\n\n public get inward(): boolean {\n return this._inward;\n }\n public set inward(value: boolean) {\n value = Boolean(value);\n if (this._inward !== value) {\n this._inward = value;\n this._adapter.toggleHostAttribute(FOCUS_INDICATOR_CONSTANTS.attributes.INWARD, this._inward);\n }\n }\n\n public get circular(): boolean {\n return this._circular;\n }\n public set circular(value: boolean) {\n value = Boolean(value);\n if (this._circular !== value) {\n this._circular = value;\n this._adapter.toggleHostAttribute(FOCUS_INDICATOR_CONSTANTS.attributes.CIRCULAR, this._circular);\n }\n }\n\n public get allowFocus(): boolean {\n return this._allowFocus;\n }\n public set allowFocus(value: boolean) {\n value = Boolean(value);\n if (this._allowFocus !== value) {\n this._allowFocus = value;\n this._adapter.toggleHostAttribute(FOCUS_INDICATOR_CONSTANTS.attributes.ALLOW_FOCUS, this._allowFocus);\n }\n }\n}\n", "import { attachShadowTemplate, coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { FocusIndicatorAdapter } from './focus-indicator-adapter';\nimport { FOCUS_INDICATOR_CONSTANTS } from './focus-indicator-constants';\nimport { FocusIndicatorFoundation } from './focus-indicator-foundation';\n\nconst template = '<template><div class=\\\"forge-focus-indicator\\\" part=\\\"indicator\\\"></div></template>';\nconst styles = '.forge-focus-indicator{--_active-width:var(--forge-focus-indicator-active-width, 6px);--_color:var(--forge-focus-indicator-color, var(--mdc-theme-primary, #3f51b5));--_duration:var(--forge-focus-indicator-duration, 600ms);--_outward-offset:var(--forge-focus-indicator-outward-offset, 4px);--_inward-offset:var(--forge-focus-indicator-inward-offset, 0px);--_shape:var(--forge-focus-indicator-shape, 1px);--_width:var(--forge-focus-indicator-width, 3px);--_easing:var(--forge-focus-indicator-easing, cubic-bezier(0.2, 0, 0, 1));--_shape-start-start:var(--forge-focus-indicator-shape-start-start, var(--_shape));--_shape-start-end:var(--forge-focus-indicator-shape-start-end, var(--_shape));--_shape-end-start:var(--forge-focus-indicator-shape-end-start, var(--_shape));--_shape-end-end:var(--forge-focus-indicator-shape-end-end, var(--_shape));--_margin-block:var(--forge-focus-indicator-offset-block, 0);--_margin-inline:var(--forge-focus-indicator-offset-inline, 0);-webkit-animation-delay:0s,calc(var(--_duration) * .25);animation-delay:0s,calc(var(--_duration) * .25);-webkit-animation-duration:calc(var(--_duration) * .25),calc(var(--_duration) * .75);animation-duration:calc(var(--_duration) * .25),calc(var(--_duration) * .75);-webkit-animation-timing-function:var(--_easing);animation-timing-function:var(--_easing);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--_color);display:none;pointer-events:none;position:absolute;margin-block:var(--_margin-block);margin-inline:var(--_margin-inline)}@media (prefers-reduced-motion){.forge-focus-indicator{-webkit-animation:none;animation:none}}@-webkit-keyframes outward-grow{from{outline-width:0}to{outline-width:var(--_active-width)}}@keyframes outward-grow{from{outline-width:0}to{outline-width:var(--_active-width)}}@-webkit-keyframes outward-shrink{from{outline-width:var(--_active-width)}}@keyframes outward-shrink{from{outline-width:var(--_active-width)}}@-webkit-keyframes inward-grow{from{border-width:0}to{border-width:var(--_active-width)}}@keyframes inward-grow{from{border-width:0}to{border-width:var(--_active-width)}}@-webkit-keyframes inward-shrink{from{border-width:var(--_active-width)}}@keyframes inward-shrink{from{border-width:var(--_active-width)}}:host{display:contents}:host([hidden]){display:none}:host([active]) .forge-focus-indicator{display:-webkit-box;display:flex}:host(:not([inward])) .forge-focus-indicator{-webkit-animation-name:outward-grow,outward-shrink;animation-name:outward-grow,outward-shrink;border-end-end-radius:calc(var(--_shape-end-end) + var(--_outward-offset));border-end-start-radius:calc(var(--_shape-end-start) + var(--_outward-offset));border-start-end-radius:calc(var(--_shape-start-end) + var(--_outward-offset));border-start-start-radius:calc(var(--_shape-start-start) + var(--_outward-offset));inset:calc(-1 * var(--_outward-offset));outline:var(--_width) solid currentColor}:host([inward]) .forge-focus-indicator{-webkit-animation-name:inward-grow,inward-shrink;animation-name:inward-grow,inward-shrink;border-end-end-radius:calc(var(--_shape-end-end) - var(--_inward-offset));border-end-start-radius:calc(var(--_shape-end-start) - var(--_inward-offset));border-start-end-radius:calc(var(--_shape-start-end) - var(--_inward-offset));border-start-start-radius:calc(var(--_shape-start-start) - var(--_inward-offset));border:var(--_width) solid currentColor;inset:var(--_inward-offset)}:host([circular]) .forge-focus-indicator{--_shape:50%}';\n\nexport interface IFocusIndicatorComponent extends IBaseComponent {\n targetElement: HTMLElement;\n target: string | null;\n active: boolean;\n inward: boolean;\n circular: boolean;\n allowFocus: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-focus-indicator': IFocusIndicatorComponent;\n }\n}\n\n/**\n * @tag forge-focus-indicator\n * \n * @summary Renders a focus indicator when an attached element matches `:focus-visible`.\n * \n * @property {HTMLElement} targetElement - The element to attach the focus indicator to.\n * @property {string} target - The id of the element to attach the focus indicator to.\n * @property {boolean} active - Controls whether the indicator is active.\n * @property {boolean} inward - Controls whether the indicator renders inward.\n * @property {boolean} circular - Controls whether the indicator renders circular.\n * @property {boolean} allowFocus - Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.\n * \n * @attribute {string} target - The id of the element to attach the focus indicator to.\n * @attribute {boolean} active - Controls whether the indicator is active.\n * @attribute {boolean} inward - Controls whether the indicator renders inward.\n * @attribute {boolean} circular - Controls whether the indicator renders circular.\n * @attribute {boolean} allow-focus - Controls whether the indicator renders when the target element matches `:focus` instead of `:focus-visible`.\n * \n * @cssproperty --forge-focus-indicator-active-width - The width of the focus indicator when active. When animating this is the max extent.\n * @cssproperty --forge-focus-indicator-color - The color of the focus indicator.\n * @cssproperty --forge-focus-indicator-duration - The animation duration.\n * @cssproperty --forge-focus-indicator-outward-offset - The offset of the focus indicator when outward.\n * @cssproperty --forge-focus-indicator-inward-offset - The offset of the focus indicator when inward.\n * @cssproperty --forge-focus-indicator-shape - The shape of the focus indicator.\n * @cssproperty --forge-focus-indicator-width - The width of the focus indicator when resting.\n * @cssproperty --forge-focus-indicator-shape-start-start - The start start shape.\n * @cssproperty --forge-focus-indicator-shape-start-end - The start end shape.\n * @cssproperty --forge-focus-indicator-shape-end-start - The end start shape.\n * @cssproperty --forge-focus-indicator-shape-end-end - The end end shape.\n * @cssproperty --forge-focus-indicator-offset-block - The block offset.\n * @cssproperty --forge-focus-indicator-offset-inline - The inline offset.\n * \n * @csspart indicator - The focus indicator element.\n */\n@CustomElement({\n name: FOCUS_INDICATOR_CONSTANTS.elementName\n})\nexport class FocusIndicatorComponent extends BaseComponent implements IFocusIndicatorComponent {\n public static get observedAttributes(): string[] {\n return [\n FOCUS_INDICATOR_CONSTANTS.attributes.TARGET,\n FOCUS_INDICATOR_CONSTANTS.attributes.ACTIVE,\n FOCUS_INDICATOR_CONSTANTS.attributes.INWARD,\n FOCUS_INDICATOR_CONSTANTS.attributes.CIRCULAR,\n FOCUS_INDICATOR_CONSTANTS.attributes.ALLOW_FOCUS\n ];\n }\n\n private _foundation: FocusIndicatorFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new FocusIndicatorFoundation(new FocusIndicatorAdapter(this));\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.destroy();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case FOCUS_INDICATOR_CONSTANTS.attributes.TARGET:\n this.target = newValue;\n break;\n case FOCUS_INDICATOR_CONSTANTS.attributes.ACTIVE:\n this.active = coerceBoolean(newValue);\n break;\n case FOCUS_INDICATOR_CONSTANTS.attributes.INWARD:\n this.inward = coerceBoolean(newValue);\n break;\n case FOCUS_INDICATOR_CONSTANTS.attributes.CIRCULAR:\n this.circular = coerceBoolean(newValue);\n break;\n case FOCUS_INDICATOR_CONSTANTS.attributes.ALLOW_FOCUS:\n this.allowFocus = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public declare targetElement: HTMLElement;\n\n @FoundationProperty()\n public declare target: string | null;\n\n @FoundationProperty()\n public declare active: boolean;\n\n @FoundationProperty()\n public declare inward: boolean;\n\n @FoundationProperty()\n public declare circular: boolean;\n\n @FoundationProperty()\n public declare allowFocus: boolean;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["FocusIndicatorAdapter", "BaseAdapter", "component", "type", "listener", "_a", "el", "value", "rootNode", "selector", "elementName", "COMPONENT_NAME_PREFIX", "observedAttributes", "attributes", "__spreadValues", "FOCUS_INDICATOR_CONSTANTS", "FocusIndicatorFoundation", "_adapter", "evt", "value", "FOCUS_INDICATOR_CONSTANTS", "template", "styles", "FocusIndicatorComponent", "BaseComponent", "attachShadowTemplate", "FocusIndicatorFoundation", "FocusIndicatorAdapter", "FOCUS_INDICATOR_CONSTANTS", "name", "oldValue", "newValue", "coerceBoolean", "__decorateClass", "FoundationProperty", "CustomElement"]
7
+ }
@@ -3,5 +3,5 @@
3
3
  * Copyright 2023 Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import{a as g,b as r,c as B,f as V}from"./chunk.GWIVOPRO.js";import{b as H}from"./chunk.A5R7KUIP.js";import{q as h,r as m,s as _,t as v}from"./chunk.FYWPZFLJ.js";import{d as N,l as R}from"./chunk.H5D54EHO.js";import{a as b}from"./chunk.NVUMRW44.js";import{a as O}from"./chunk.5V5ABSHI.js";import{a as C}from"./chunk.DTZFWZPB.js";import{a as L,e as I,f as y,k as z}from"./chunk.NK7H3MMM.js";import{u as E}from"./chunk.CFDK4RCW.js";import{k as p,l as A}from"./chunk.J2M2MXP2.js";import{d}from"./chunk.M3QDAYD2.js";var w=class extends O{constructor(e){super(e);this._defaultSlotElement=y(this._component,r.selectors.DEFAULT_SLOT),this._container=y(this._component,r.selectors.CONTAINER),this._scrollContainer=y(this._component,r.selectors.SCROLL_CONTAINER)}initializeContainerSizeObserver(e){this._resizeObserver=new ResizeObserver(()=>e()),this._resizeObserver.observe(this._component)}initializeScrollObserver(e){this._scrollContainer.addEventListener("scroll",e,{passive:!0})}destroyContainerSizeObserver(){var e;(e=this._resizeObserver)==null||e.disconnect(),this._resizeObserver=void 0}destroyScrollObserver(e){this._scrollContainer.removeEventListener("scroll",e,{passive:!0})}setVertical(e){E(this._scrollContainer,!!e,"aria-orientation","vertical")}setScrollBackwardButtonListener(e){var o,i;(i=(o=this._backwardScrollButton)==null?void 0:o.querySelector("button"))==null||i.addEventListener("click",e)}setScrollForwardButtonListener(e){var o,i;(i=(o=this._forwardScrollButton)==null?void 0:o.querySelector("button"))==null||i.addEventListener("click",e)}addSlotListener(e){this._defaultSlotElement.addEventListener("slotchange",e)}getTabs(){return Array.from(this._component.querySelectorAll(g.elementName))}async tryScrollTabIntoView(e){if(await new Promise(requestAnimationFrame),!e.isConnected||!e.selected&&!e.matches(":focus"))return;let o=this._component.vertical,i=o?this._scrollContainer.offsetTop:this._scrollContainer.offsetLeft,a=o?e.offsetTop:e.offsetLeft,c=o?e.offsetHeight:e.offsetWidth,l=o?this._scrollContainer.scrollTop:this._scrollContainer.scrollLeft,n=o?this._scrollContainer.offsetHeight:this._scrollContainer.offsetWidth,u=a-(r.numbers.SCROLL_MARGIN+i),f=a+c-n+(r.numbers.SCROLL_MARGIN-i),k=Math.min(u,Math.max(f,l)),S=e.matches(":focus")?"smooth":"instant";this._scrollContainer.scrollTo({behavior:S,[o?"left":"top"]:0,[o?"top":"left"]:k})}getScrollState(){let{scrollHeight:e,scrollWidth:o,scrollLeft:i,scrollTop:a,clientHeight:c,clientWidth:l}=this._scrollContainer,n=this._component.vertical?c+a:l+i,u=this._component.vertical?e:o,f=n===u;return{isScrolledStart:(this._component.vertical?n-c:n-l)===0,isScrolledEnd:f}}isScrollable(){let{scrollHeight:e,scrollWidth:o,clientHeight:i,clientWidth:a}=this._scrollContainer;return this._component.vertical?e>i:o>a}setScrollButtons(e){var o,i;e?(this._backwardScrollButton=this._createScrollButton(this._component.vertical?v.name:m.name),this._container.insertAdjacentElement("afterbegin",this._backwardScrollButton),this._forwardScrollButton=this._createScrollButton(this._component.vertical?h.name:_.name),this._container.insertAdjacentElement("beforeend",this._forwardScrollButton)):((o=this._backwardScrollButton)==null||o.remove(),this._backwardScrollButton=void 0,(i=this._forwardScrollButton)==null||i.remove(),this._forwardScrollButton=void 0)}syncScrollButtons({backwardEnabled:e,forwardEnabled:o}){var c,l;let i=(c=this._backwardScrollButton)==null?void 0:c.querySelector("button"),a=(l=this._forwardScrollButton)==null?void 0:l.querySelector("button");if(i){let n=!e;n&&i.matches(":focus")&&(a==null||a.focus()),i.disabled=n}if(a){let n=!o;n&&a.matches(":focus")&&(i==null||i.focus()),a.disabled=n}}scroll(e){let o=this._component.vertical?this._scrollContainer.offsetHeight:this._scrollContainer.offsetWidth;this._scrollContainer.scrollBy({behavior:"smooth",[this._component.vertical?"top":"left"]:o*(e==="forward"?1:-1)})}updateScrollButtonIcons(e){var a,c;let o=(a=this._backwardScrollButton)==null?void 0:a.querySelector("forge-icon");o&&(o.name=e?v.name:m.name);let i=(c=this._forwardScrollButton)==null?void 0:c.querySelector("forge-icon");i&&(i.name=e?h.name:_.name)}_createScrollButton(e){let o=document.createElement("forge-icon-button");o.classList.add(r.classes.SCROLL_BUTTON);let i=document.createElement("button");i.type="button",i.tabIndex=-1,i.setAttribute("aria-hidden","true"),o.appendChild(i);let a=document.createElement("forge-icon");return a.name=e,i.appendChild(a),o}};var T=class{constructor(t){this._adapter=t;this._isInitialized=!1;this._disabled=!1;this._vertical=!1;this._clustered=!1;this._stacked=!1;this._secondary=!1;this._inverted=!1;this._autoActivate=!1;this._scrollButtons=!1;this._tabs=[];this._scrollButtonsVisible=!1;this._tabsChangedListener=()=>this._onTabsChanged(),this._tabSelectedListener=e=>this._onTabSelected(e),this._keydownListener=e=>this._onKeydown(e),this._resizeListener=()=>this._onResize(),this._scrollListener=()=>this._onScroll(),this._scrollBackwardButtonListener=()=>this._onScrollBackward(),this._scrollForwardButtonListener=()=>this._onScrollForward()}initialize(){this._adapter.addSlotListener(this._tabsChangedListener),this._adapter.addHostListener(g.events.SELECT,this._tabSelectedListener),this._adapter.addHostListener("keydown",this._keydownListener),this._adapter.setVertical(this._vertical),this._scrollButtons&&(this._adapter.initializeContainerSizeObserver(this._resizeListener),this._adapter.initializeScrollObserver(this._scrollListener),this._updateScrollState()),this._tryScrollActiveTabIntoView(),this._isInitialized=!0}destroy(){this._adapter.destroyContainerSizeObserver(),this._adapter.destroyScrollObserver(this._scrollListener),this._isInitialized=!1}async _onTabsChanged(){this._tabs=this._adapter.getTabs(),this._syncTabState(),this._tryScrollActiveTabIntoView()}_onTabSelected(t){this._selectTab(t.target)}async _onKeydown(t){var a,c;let e=this._vertical?"vertical":"horizontal";if(!(((a=B.get("default"))==null?void 0:a.has(t.key))||((c=B.get(e))==null?void 0:c.has(t.key))))return;t.preventDefault();let i=-1;if(t.key==="Home")i=this._tabs.findIndex(l=>!l.disabled);else if(t.key==="End")i=this._tabs.reduceRight((l,n,u)=>!n.disabled&&l===-1?u:l,-1);else{let l=this._tabs.findIndex(f=>f.matches(":focus")),n=t.key==="ArrowLeft"||t.key==="ArrowUp",u=f=>{var S;i=f+(n?-1:1),i=i<0?this._tabs.length-1:i%this._tabs.length,!this._tabs.every(D=>D.disabled)&&((S=this._tabs[i])!=null&&S.disabled)&&u(i)};u(l)}i!==-1&&(this._autoActivate?this._selectTab(this._tabs[i]):(this._tabs[i].focus({preventScroll:!0}),await this._adapter.tryScrollTabIntoView(this._tabs[i])))}async _selectTab(t,e=!0){if(!t||t.disabled)return;let o=this._tabs.find(i=>i.selected);if(o!==t){if(e){let i=this._tabs.indexOf(t);if(!this._adapter.emitHostEvent(r.events.CHANGE,i,!0,!0))return}t.selected=!0,t.focus({preventScroll:!0}),await this._adapter.tryScrollTabIntoView(t),o&&(o.selected=!1),this._activeTab=this._tabs.indexOf(t)}}_syncTabState(){this._tabs.forEach((t,e)=>{t.selected=e===this._activeTab,t.disabled=this._disabled,t.vertical=this._vertical,t.stacked=this._stacked,t.secondary=this._secondary,t.inverted=this._inverted})}_onResize(){this._detectScrollableStatus()}_onScroll(){this._updateScrollState()}_onScrollBackward(){this._adapter.scroll("backward")}_onScrollForward(){this._adapter.scroll("forward")}_detectScrollableStatus(){let t=this._adapter.isScrollable();this._scrollButtonsVisible!==t&&(this._adapter.setScrollButtons(t),t?(this._adapter.initializeScrollObserver(this._scrollListener),this._updateScrollState(),this._adapter.setScrollBackwardButtonListener(this._scrollBackwardButtonListener),this._adapter.setScrollForwardButtonListener(this._scrollForwardButtonListener)):this._adapter.destroyScrollObserver(this._scrollListener),this._scrollButtonsVisible=t)}_updateScrollState(){let{isScrolledEnd:t,isScrolledStart:e}=this._adapter.getScrollState(),o={backwardEnabled:!e,forwardEnabled:!t};this._adapter.syncScrollButtons(o)}_tryScrollActiveTabIntoView(){this._tabScrollAnimationFrame&&window.cancelAnimationFrame(this._tabScrollAnimationFrame),this._tabScrollAnimationFrame=window.requestAnimationFrame(()=>{this._tabScrollAnimationFrame=void 0,this._adapter.isScrollable()&&typeof this._activeTab=="number"&&this._activeTab>=0&&this._tabs[this._activeTab]&&this._adapter.tryScrollTabIntoView(this._tabs[this._activeTab])})}get disabled(){return this._disabled}set disabled(t){t=!!t,this._disabled!==t&&(this._disabled=t,this._tabs.forEach(e=>e.disabled=this._disabled),this._adapter.toggleHostAttribute(r.attributes.DISABLED,this._disabled))}get activeTab(){return this._activeTab}set activeTab(t){if(this._activeTab!==t)if(this._activeTab=t!=null?t:void 0,typeof this._activeTab=="number"){let e=this._tabs[this._activeTab];this._selectTab(e,!1),this._adapter.setHostAttribute(r.attributes.ACTIVE_TAB,String(this._activeTab))}else this._tabs.forEach(e=>e.selected=!1),this._adapter.removeHostAttribute(r.attributes.ACTIVE_TAB)}get vertical(){return this._vertical}set vertical(t){t=!!t,this._vertical!==t&&(this._vertical=t,this._isInitialized&&this._adapter.setVertical(this._vertical),this._tabs.forEach(e=>e.vertical=this._vertical),this._scrollButtonsVisible&&this._adapter.updateScrollButtonIcons(this._vertical),this._adapter.toggleHostAttribute(g.attributes.VERTICAL,this._vertical))}get clustered(){return this._clustered}set clustered(t){t=!!t,this._clustered!==t&&(this._clustered=t,this._adapter.toggleHostAttribute(r.attributes.CLUSTERED,this._clustered))}get stacked(){return this._stacked}set stacked(t){t=!!t,this._stacked!==t&&(this._stacked=t,this._tabs.forEach(e=>e.stacked=this._stacked),this._adapter.toggleHostAttribute(r.attributes.STACKED,this._stacked))}get secondary(){return this._secondary}set secondary(t){t=!!t,this._secondary!==t&&(this._secondary=t,this._tabs.forEach(e=>e.secondary=this._secondary),this._adapter.toggleHostAttribute(r.attributes.SECONDARY,this._secondary))}get inverted(){return this._inverted}set inverted(t){t=!!t,this._inverted!==t&&(this._inverted=t,this._tabs.forEach(e=>e.inverted=this._inverted),this._adapter.toggleHostAttribute(r.attributes.INVERTED,this._inverted))}get autoActivate(){return this._autoActivate}set autoActivate(t){t=!!t,this._autoActivate!==t&&(this._autoActivate=t,this._adapter.toggleHostAttribute(r.attributes.AUTO_ACTIVATE,this._autoActivate))}get scrollButtons(){return this._scrollButtons}set scrollButtons(t){t=!!t,this._scrollButtons!==t&&(this._scrollButtons=!!t,this._isInitialized&&(this._scrollButtons?(this._adapter.initializeContainerSizeObserver(this._resizeListener),this._adapter.initializeScrollObserver(this._scrollListener),this._detectScrollableStatus(),this._updateScrollState(),this._tryScrollActiveTabIntoView()):(this._adapter.destroyContainerSizeObserver(),this._adapter.destroyScrollObserver(this._scrollListener),this._adapter.setScrollButtons(this._scrollButtons),this._scrollButtonsVisible=!1)),this._adapter.setHostAttribute(r.attributes.SCROLL_BUTTONS,String(this._scrollButtons)))}};var F='<template><div class="container" part="container"><div role="tablist" class="scroll-container" part="scroll-container"><slot></slot></div></div></template>',K='.forge-icon-button{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;background-color:transparent;fill:currentColor;color:inherit;font-size:24px;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:48px;height:48px;padding:12px}.forge-icon-button forge-icon,.forge-icon-button img,.forge-icon-button svg{width:24px;height:24px}.forge-icon-button:disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38))}.forge-icon-button:disabled{cursor:default;pointer-events:none}.forge-icon-button__icon{display:inline-block}.forge-icon-button__icon.forge-icon-button__icon--on{display:none}.forge-icon-button--on .forge-icon-button__icon{display:none}.forge-icon-button--on .forge-icon-button__icon.forge-icon-button__icon--on{display:inline-block}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-icon-button{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity}.forge-icon-button::after,.forge-icon-button::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.forge-icon-button::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.forge-icon-button::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-icon-button.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-icon-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-icon-button.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.forge-icon-button.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button::after,.forge-icon-button::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.forge-icon-button.mdc-ripple-upgraded::after,.forge-icon-button.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button::after,.forge-icon-button::before{background-color:#000;background-color:var(--mdc-ripple-color,var(--mdc-theme-on-surface,#000))}.forge-icon-button.mdc-ripple-surface--hover::before,.forge-icon-button:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button.mdc-ripple-upgraded--background-focused::before,.forge-icon-button:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}forge-icon-button{position:relative;display:inline-block;overflow:visible}.forge-icon-button--on{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-icon-button--on::after,.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-icon-button--on.mdc-ripple-surface--hover::before,.forge-icon-button--on:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button--on.mdc-ripple-upgraded--background-focused::before,.forge-icon-button--on:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button--on:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button--on:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button--on.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-theme-primary,#3f51b5);opacity:.08}.forge-icon-button--dense{width:28px;height:28px;padding:2px;padding:0}.forge-icon-button--dense-1{width:44px;height:44px;padding:10px}.forge-icon-button--dense-2{width:40px;height:40px;padding:8px}.forge-icon-button--dense-3{width:36px;height:36px;padding:6px}.forge-icon-button--dense-4{width:32px;height:32px;padding:4px}.forge-icon-button--dense-5{width:28px;height:28px;padding:2px}.forge-icon-button--dense-6{width:24px;height:24px;padding:0}.forge-icon-button--with-badge forge-badge{z-index:1;z-index:var(--forge-z-index-surface,1);pointer-events:none;--forge-badge-max-width:32px;--forge-badge-border:1px solid transparent}.forge-icon-button--with-badge forge-badge[app-bar-context]{--forge-badge-border:2px solid var(--forge-app-bar-theme-background)}.container{--_container-justify:var(--forge-tab-bar-justify, space-between);--_tab-flex:var(--forge-tab-bar-stretch, 1);--_divider-color:var(--forge-tab-bar-underline-color, var(--forge-theme-border-color, #e0e0e0));--_divider-thickness:var(--forge-tab-bar-underline-thickness, 1px);position:relative;display:grid;grid-template-columns:auto 1fr auto;max-width:100%;max-height:100%;-webkit-box-align:center;align-items:center;border-bottom:var(--_divider-thickness) solid var(--_divider-color)}.scroll-container{position:relative;display:-webkit-box;display:flex;-webkit-box-pack:var(--_container-justify);justify-content:var(--_container-justify);-webkit-box-align:end;align-items:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;scroll-behavior:smooth;scrollbar-width:none;grid-column:2}.scroll-container::-webkit-scrollbar{display:none}::slotted(*){-webkit-box-flex:var(--_tab-flex);flex:var(--_tab-flex)}::slotted([selected]){z-index:1}:host{position:relative;display:block}:host([vertical]) .container{grid-template-columns:none;grid-template-rows:auto 1fr auto;-webkit-box-align:initial;align-items:initial;border-bottom:none;border-right:var(--_divider-thickness) solid var(--_divider-color);height:100%}:host([vertical]) .scroll-container{display:-webkit-inline-box;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:stretch;align-items:stretch;gap:0;grid-column:auto;grid-row:2}:host([vertical]) .scroll-button{justify-self:center}:host([inverted]:not([vertical])) .container{border-bottom:none;border-top:var(--_divider-thickness) solid var(--_divider-color)}:host([inverted][vertical]) .container{border-right:none;border-left:var(--_divider-thickness) solid var(--_divider-color)}:host([clustered]){--forge-tab-bar-justify:flex-start;--forge-tab-bar-stretch:0}:host([clustered=start]){--forge-tab-bar-justify:flex-start}:host([clustered=center]){--forge-tab-bar-justify:center}:host([clustered=end]){--forge-tab-bar-justify:flex-end}:host([hidden]){display:none}',s=class extends z{constructor(){super();N.define([m,_,v,h]),I(this,F,K),this._foundation=new T(new w(this))}static get observedAttributes(){return[r.attributes.DISABLED,r.attributes.ACTIVE_TAB,r.attributes.VERTICAL,r.attributes.CLUSTERED,r.attributes.STACKED,r.attributes.SECONDARY,r.attributes.INVERTED,r.attributes.AUTO_ACTIVATE,r.attributes.SCROLL_BUTTONS]}connectedCallback(){this._foundation.initialize()}disconnectedCallback(){this._foundation.destroy()}attributeChangedCallback(e,o,i){switch(e){case r.attributes.DISABLED:this.disabled=p(i);break;case r.attributes.ACTIVE_TAB:this.activeTab=i?A(i):void 0;break;case r.attributes.VERTICAL:this.vertical=p(i);break;case r.attributes.CLUSTERED:this.clustered=p(i);break;case r.attributes.STACKED:this.stacked=p(i);break;case r.attributes.SECONDARY:this.secondary=p(i);break;case r.attributes.INVERTED:this.inverted=p(i);break;case r.attributes.AUTO_ACTIVATE:this.autoActivate=p(i);break;case r.attributes.SCROLL_BUTTONS:this.scrollButtons=p(i);break}}};d([b()],s.prototype,"disabled",2),d([b()],s.prototype,"activeTab",2),d([b()],s.prototype,"vertical",2),d([b()],s.prototype,"clustered",2),d([b()],s.prototype,"stacked",2),d([b()],s.prototype,"secondary",2),d([b()],s.prototype,"inverted",2),d([b()],s.prototype,"autoActivate",2),d([b()],s.prototype,"scrollButtons",2),s=d([C({name:r.elementName,dependencies:[V,H,R]})],s);function bt(){L(s)}export{w as a,T as b,s as c,bt as d};
7
- //# sourceMappingURL=chunk.OHNPVHPF.js.map
6
+ import{a as r,b as B,c as g,f as V}from"./chunk.LJYTJ3RV.js";import{b as H}from"./chunk.A5R7KUIP.js";import{q as h,r as m,s as _,t as v}from"./chunk.FYWPZFLJ.js";import{d as N,l as R}from"./chunk.H5D54EHO.js";import{a as b}from"./chunk.NVUMRW44.js";import{a as O}from"./chunk.5V5ABSHI.js";import{a as C}from"./chunk.DTZFWZPB.js";import{a as L,e as I,f as y,k as z}from"./chunk.NK7H3MMM.js";import{u as E}from"./chunk.CFDK4RCW.js";import{k as p,l as A}from"./chunk.J2M2MXP2.js";import{d}from"./chunk.M3QDAYD2.js";var w=class extends O{constructor(e){super(e);this._defaultSlotElement=y(this._component,r.selectors.DEFAULT_SLOT),this._container=y(this._component,r.selectors.CONTAINER),this._scrollContainer=y(this._component,r.selectors.SCROLL_CONTAINER)}initializeContainerSizeObserver(e){this._resizeObserver=new ResizeObserver(()=>e()),this._resizeObserver.observe(this._component)}initializeScrollObserver(e){this._scrollContainer.addEventListener("scroll",e,{passive:!0})}destroyContainerSizeObserver(){var e;(e=this._resizeObserver)==null||e.disconnect(),this._resizeObserver=void 0}destroyScrollObserver(e){this._scrollContainer.removeEventListener("scroll",e,{passive:!0})}setVertical(e){E(this._scrollContainer,!!e,"aria-orientation","vertical")}setScrollBackwardButtonListener(e){var o,i;(i=(o=this._backwardScrollButton)==null?void 0:o.querySelector("button"))==null||i.addEventListener("click",e)}setScrollForwardButtonListener(e){var o,i;(i=(o=this._forwardScrollButton)==null?void 0:o.querySelector("button"))==null||i.addEventListener("click",e)}addSlotListener(e){this._defaultSlotElement.addEventListener("slotchange",e)}getTabs(){return Array.from(this._component.querySelectorAll(g.elementName))}async tryScrollTabIntoView(e){if(await new Promise(requestAnimationFrame),!e.isConnected||!e.selected&&!e.matches(":focus"))return;let o=this._component.vertical,i=o?this._scrollContainer.offsetTop:this._scrollContainer.offsetLeft,a=o?e.offsetTop:e.offsetLeft,c=o?e.offsetHeight:e.offsetWidth,l=o?this._scrollContainer.scrollTop:this._scrollContainer.scrollLeft,n=o?this._scrollContainer.offsetHeight:this._scrollContainer.offsetWidth,u=a-(r.numbers.SCROLL_MARGIN+i),f=a+c-n+(r.numbers.SCROLL_MARGIN-i),k=Math.min(u,Math.max(f,l)),S=e.matches(":focus")?"smooth":"instant";this._scrollContainer.scrollTo({behavior:S,[o?"left":"top"]:0,[o?"top":"left"]:k})}getScrollState(){let{scrollHeight:e,scrollWidth:o,scrollLeft:i,scrollTop:a,clientHeight:c,clientWidth:l}=this._scrollContainer,n=this._component.vertical?c+a:l+i,u=this._component.vertical?e:o,f=n===u;return{isScrolledStart:(this._component.vertical?n-c:n-l)===0,isScrolledEnd:f}}isScrollable(){let{scrollHeight:e,scrollWidth:o,clientHeight:i,clientWidth:a}=this._scrollContainer;return this._component.vertical?e>i:o>a}setScrollButtons(e){var o,i;e?(this._backwardScrollButton=this._createScrollButton(this._component.vertical?v.name:m.name),this._container.insertAdjacentElement("afterbegin",this._backwardScrollButton),this._forwardScrollButton=this._createScrollButton(this._component.vertical?h.name:_.name),this._container.insertAdjacentElement("beforeend",this._forwardScrollButton)):((o=this._backwardScrollButton)==null||o.remove(),this._backwardScrollButton=void 0,(i=this._forwardScrollButton)==null||i.remove(),this._forwardScrollButton=void 0)}syncScrollButtons({backwardEnabled:e,forwardEnabled:o}){var c,l;let i=(c=this._backwardScrollButton)==null?void 0:c.querySelector("button"),a=(l=this._forwardScrollButton)==null?void 0:l.querySelector("button");if(i){let n=!e;n&&i.matches(":focus")&&(a==null||a.focus()),i.disabled=n}if(a){let n=!o;n&&a.matches(":focus")&&(i==null||i.focus()),a.disabled=n}}scroll(e){let o=this._component.vertical?this._scrollContainer.offsetHeight:this._scrollContainer.offsetWidth;this._scrollContainer.scrollBy({behavior:"smooth",[this._component.vertical?"top":"left"]:o*(e==="forward"?1:-1)})}updateScrollButtonIcons(e){var a,c;let o=(a=this._backwardScrollButton)==null?void 0:a.querySelector("forge-icon");o&&(o.name=e?v.name:m.name);let i=(c=this._forwardScrollButton)==null?void 0:c.querySelector("forge-icon");i&&(i.name=e?h.name:_.name)}_createScrollButton(e){let o=document.createElement("forge-icon-button");o.classList.add(r.classes.SCROLL_BUTTON);let i=document.createElement("button");i.type="button",i.tabIndex=-1,i.setAttribute("aria-hidden","true"),o.appendChild(i);let a=document.createElement("forge-icon");return a.name=e,i.appendChild(a),o}};var T=class{constructor(t){this._adapter=t;this._isInitialized=!1;this._disabled=!1;this._vertical=!1;this._clustered=!1;this._stacked=!1;this._secondary=!1;this._inverted=!1;this._autoActivate=!1;this._scrollButtons=!1;this._tabs=[];this._scrollButtonsVisible=!1;this._tabsChangedListener=()=>this._onTabsChanged(),this._tabSelectedListener=e=>this._onTabSelected(e),this._keydownListener=e=>this._onKeydown(e),this._resizeListener=()=>this._onResize(),this._scrollListener=()=>this._onScroll(),this._scrollBackwardButtonListener=()=>this._onScrollBackward(),this._scrollForwardButtonListener=()=>this._onScrollForward()}initialize(){this._adapter.addSlotListener(this._tabsChangedListener),this._adapter.addHostListener(g.events.SELECT,this._tabSelectedListener),this._adapter.addHostListener("keydown",this._keydownListener),this._adapter.setVertical(this._vertical),this._scrollButtons&&(this._adapter.initializeContainerSizeObserver(this._resizeListener),this._adapter.initializeScrollObserver(this._scrollListener),this._updateScrollState()),this._tryScrollActiveTabIntoView(),this._isInitialized=!0}destroy(){this._adapter.destroyContainerSizeObserver(),this._adapter.destroyScrollObserver(this._scrollListener),this._isInitialized=!1}async _onTabsChanged(){this._tabs=this._adapter.getTabs(),this._syncTabState(),this._tryScrollActiveTabIntoView()}_onTabSelected(t){this._selectTab(t.target)}async _onKeydown(t){var a,c;let e=this._vertical?"vertical":"horizontal";if(!(((a=B.get("default"))==null?void 0:a.has(t.key))||((c=B.get(e))==null?void 0:c.has(t.key))))return;t.preventDefault();let i=-1;if(t.key==="Home")i=this._tabs.findIndex(l=>!l.disabled);else if(t.key==="End")i=this._tabs.reduceRight((l,n,u)=>!n.disabled&&l===-1?u:l,-1);else{let l=this._tabs.findIndex(f=>f.matches(":focus")),n=t.key==="ArrowLeft"||t.key==="ArrowUp",u=f=>{var S;i=f+(n?-1:1),i=i<0?this._tabs.length-1:i%this._tabs.length,!this._tabs.every(D=>D.disabled)&&((S=this._tabs[i])!=null&&S.disabled)&&u(i)};u(l)}i!==-1&&(this._autoActivate?this._selectTab(this._tabs[i]):(this._tabs[i].focus({preventScroll:!0}),await this._adapter.tryScrollTabIntoView(this._tabs[i])))}async _selectTab(t,e=!0){if(!t||t.disabled)return;let o=this._tabs.find(i=>i.selected);if(o!==t){if(e){let i=this._tabs.indexOf(t);if(!this._adapter.emitHostEvent(r.events.CHANGE,i,!0,!0))return}t.selected=!0,t.focus({preventScroll:!0}),await this._adapter.tryScrollTabIntoView(t),o&&(o.selected=!1),this._activeTab=this._tabs.indexOf(t)}}_syncTabState(){this._tabs.forEach((t,e)=>{t.selected=e===this._activeTab,t.disabled=this._disabled,t.vertical=this._vertical,t.stacked=this._stacked,t.secondary=this._secondary,t.inverted=this._inverted})}_onResize(){this._detectScrollableStatus()}_onScroll(){this._updateScrollState()}_onScrollBackward(){this._adapter.scroll("backward")}_onScrollForward(){this._adapter.scroll("forward")}_detectScrollableStatus(){let t=this._adapter.isScrollable();this._scrollButtonsVisible!==t&&(this._adapter.setScrollButtons(t),t?(this._adapter.initializeScrollObserver(this._scrollListener),this._updateScrollState(),this._adapter.setScrollBackwardButtonListener(this._scrollBackwardButtonListener),this._adapter.setScrollForwardButtonListener(this._scrollForwardButtonListener)):this._adapter.destroyScrollObserver(this._scrollListener),this._scrollButtonsVisible=t)}_updateScrollState(){let{isScrolledEnd:t,isScrolledStart:e}=this._adapter.getScrollState(),o={backwardEnabled:!e,forwardEnabled:!t};this._adapter.syncScrollButtons(o)}_tryScrollActiveTabIntoView(){this._tabScrollAnimationFrame&&window.cancelAnimationFrame(this._tabScrollAnimationFrame),this._tabScrollAnimationFrame=window.requestAnimationFrame(()=>{this._tabScrollAnimationFrame=void 0,this._adapter.isScrollable()&&typeof this._activeTab=="number"&&this._activeTab>=0&&this._tabs[this._activeTab]&&this._adapter.tryScrollTabIntoView(this._tabs[this._activeTab])})}get disabled(){return this._disabled}set disabled(t){t=!!t,this._disabled!==t&&(this._disabled=t,this._tabs.forEach(e=>e.disabled=this._disabled),this._adapter.toggleHostAttribute(r.attributes.DISABLED,this._disabled))}get activeTab(){return this._activeTab}set activeTab(t){if(this._activeTab!==t)if(this._activeTab=t!=null?t:void 0,typeof this._activeTab=="number"){let e=this._tabs[this._activeTab];this._selectTab(e,!1),this._adapter.setHostAttribute(r.attributes.ACTIVE_TAB,String(this._activeTab))}else this._tabs.forEach(e=>e.selected=!1),this._adapter.removeHostAttribute(r.attributes.ACTIVE_TAB)}get vertical(){return this._vertical}set vertical(t){t=!!t,this._vertical!==t&&(this._vertical=t,this._isInitialized&&this._adapter.setVertical(this._vertical),this._tabs.forEach(e=>e.vertical=this._vertical),this._scrollButtonsVisible&&this._adapter.updateScrollButtonIcons(this._vertical),this._adapter.toggleHostAttribute(g.attributes.VERTICAL,this._vertical))}get clustered(){return this._clustered}set clustered(t){t=!!t,this._clustered!==t&&(this._clustered=t,this._adapter.toggleHostAttribute(r.attributes.CLUSTERED,this._clustered))}get stacked(){return this._stacked}set stacked(t){t=!!t,this._stacked!==t&&(this._stacked=t,this._tabs.forEach(e=>e.stacked=this._stacked),this._adapter.toggleHostAttribute(r.attributes.STACKED,this._stacked))}get secondary(){return this._secondary}set secondary(t){t=!!t,this._secondary!==t&&(this._secondary=t,this._tabs.forEach(e=>e.secondary=this._secondary),this._adapter.toggleHostAttribute(r.attributes.SECONDARY,this._secondary))}get inverted(){return this._inverted}set inverted(t){t=!!t,this._inverted!==t&&(this._inverted=t,this._tabs.forEach(e=>e.inverted=this._inverted),this._adapter.toggleHostAttribute(r.attributes.INVERTED,this._inverted))}get autoActivate(){return this._autoActivate}set autoActivate(t){t=!!t,this._autoActivate!==t&&(this._autoActivate=t,this._adapter.toggleHostAttribute(r.attributes.AUTO_ACTIVATE,this._autoActivate))}get scrollButtons(){return this._scrollButtons}set scrollButtons(t){t=!!t,this._scrollButtons!==t&&(this._scrollButtons=!!t,this._isInitialized&&(this._scrollButtons?(this._adapter.initializeContainerSizeObserver(this._resizeListener),this._adapter.initializeScrollObserver(this._scrollListener),this._detectScrollableStatus(),this._updateScrollState(),this._tryScrollActiveTabIntoView()):(this._adapter.destroyContainerSizeObserver(),this._adapter.destroyScrollObserver(this._scrollListener),this._adapter.setScrollButtons(this._scrollButtons),this._scrollButtonsVisible=!1)),this._adapter.setHostAttribute(r.attributes.SCROLL_BUTTONS,String(this._scrollButtons)))}};var F='<template><div class="container" part="container"><div role="tablist" class="scroll-container" part="scroll-container"><slot></slot></div></div></template>',K='.forge-icon-button{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;background-color:transparent;fill:currentColor;color:inherit;font-size:24px;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:48px;height:48px;padding:12px}.forge-icon-button forge-icon,.forge-icon-button img,.forge-icon-button svg{width:24px;height:24px}.forge-icon-button:disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38))}.forge-icon-button:disabled{cursor:default;pointer-events:none}.forge-icon-button__icon{display:inline-block}.forge-icon-button__icon.forge-icon-button__icon--on{display:none}.forge-icon-button--on .forge-icon-button__icon{display:none}.forge-icon-button--on .forge-icon-button__icon.forge-icon-button__icon--on{display:inline-block}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-icon-button{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity}.forge-icon-button::after,.forge-icon-button::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.forge-icon-button::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.forge-icon-button::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-icon-button.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-icon-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-icon-button.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.forge-icon-button.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button::after,.forge-icon-button::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.forge-icon-button.mdc-ripple-upgraded::after,.forge-icon-button.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button::after,.forge-icon-button::before{background-color:#000;background-color:var(--mdc-ripple-color,var(--mdc-theme-on-surface,#000))}.forge-icon-button.mdc-ripple-surface--hover::before,.forge-icon-button:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button.mdc-ripple-upgraded--background-focused::before,.forge-icon-button:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}forge-icon-button{position:relative;display:inline-block;overflow:visible}.forge-icon-button--on{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-icon-button--on::after,.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-icon-button--on.mdc-ripple-surface--hover::before,.forge-icon-button--on:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button--on.mdc-ripple-upgraded--background-focused::before,.forge-icon-button--on:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button--on:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button--on:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button--on.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-theme-primary,#3f51b5);opacity:.08}.forge-icon-button--dense{width:28px;height:28px;padding:2px;padding:0}.forge-icon-button--dense-1{width:44px;height:44px;padding:10px}.forge-icon-button--dense-2{width:40px;height:40px;padding:8px}.forge-icon-button--dense-3{width:36px;height:36px;padding:6px}.forge-icon-button--dense-4{width:32px;height:32px;padding:4px}.forge-icon-button--dense-5{width:28px;height:28px;padding:2px}.forge-icon-button--dense-6{width:24px;height:24px;padding:0}.forge-icon-button--with-badge forge-badge{z-index:1;z-index:var(--forge-z-index-surface,1);pointer-events:none;--forge-badge-max-width:32px;--forge-badge-border:1px solid transparent}.forge-icon-button--with-badge forge-badge[app-bar-context]{--forge-badge-border:2px solid var(--forge-app-bar-theme-background)}.container{--_container-justify:var(--forge-tab-bar-justify, space-between);--_tab-flex:var(--forge-tab-bar-stretch, 1);--_divider-color:var(--forge-tab-bar-underline-color, var(--forge-theme-border-color, #e0e0e0));--_divider-thickness:var(--forge-tab-bar-underline-thickness, 1px);position:relative;display:grid;grid-template-columns:auto 1fr auto;max-width:100%;max-height:100%;-webkit-box-align:center;align-items:center;border-bottom:var(--_divider-thickness) solid var(--_divider-color)}.scroll-container{position:relative;display:-webkit-box;display:flex;-webkit-box-pack:var(--_container-justify);justify-content:var(--_container-justify);-webkit-box-align:end;align-items:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;scroll-behavior:smooth;scrollbar-width:none;grid-column:2}.scroll-container::-webkit-scrollbar{display:none}::slotted(*){-webkit-box-flex:var(--_tab-flex);flex:var(--_tab-flex)}::slotted([selected]){z-index:1}:host{position:relative;display:block}:host([vertical]) .container{grid-template-columns:none;grid-template-rows:auto 1fr auto;-webkit-box-align:initial;align-items:initial;border-bottom:none;border-right:var(--_divider-thickness) solid var(--_divider-color);height:100%}:host([vertical]) .scroll-container{display:-webkit-inline-box;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:stretch;align-items:stretch;gap:0;grid-column:auto;grid-row:2}:host([vertical]) .scroll-button{justify-self:center}:host([inverted]:not([vertical])) .container{border-bottom:none;border-top:var(--_divider-thickness) solid var(--_divider-color)}:host([inverted][vertical]) .container{border-right:none;border-left:var(--_divider-thickness) solid var(--_divider-color)}:host([clustered]){--forge-tab-bar-justify:flex-start;--forge-tab-bar-stretch:0}:host([clustered=start]){--forge-tab-bar-justify:flex-start}:host([clustered=center]){--forge-tab-bar-justify:center}:host([clustered=end]){--forge-tab-bar-justify:flex-end}:host([hidden]){display:none}',s=class extends z{constructor(){super();N.define([m,_,v,h]),I(this,F,K),this._foundation=new T(new w(this))}static get observedAttributes(){return[r.attributes.DISABLED,r.attributes.ACTIVE_TAB,r.attributes.VERTICAL,r.attributes.CLUSTERED,r.attributes.STACKED,r.attributes.SECONDARY,r.attributes.INVERTED,r.attributes.AUTO_ACTIVATE,r.attributes.SCROLL_BUTTONS]}connectedCallback(){this._foundation.initialize()}disconnectedCallback(){this._foundation.destroy()}attributeChangedCallback(e,o,i){switch(e){case r.attributes.DISABLED:this.disabled=p(i);break;case r.attributes.ACTIVE_TAB:this.activeTab=i?A(i):void 0;break;case r.attributes.VERTICAL:this.vertical=p(i);break;case r.attributes.CLUSTERED:this.clustered=p(i);break;case r.attributes.STACKED:this.stacked=p(i);break;case r.attributes.SECONDARY:this.secondary=p(i);break;case r.attributes.INVERTED:this.inverted=p(i);break;case r.attributes.AUTO_ACTIVATE:this.autoActivate=p(i);break;case r.attributes.SCROLL_BUTTONS:this.scrollButtons=p(i);break}}};d([b()],s.prototype,"disabled",2),d([b()],s.prototype,"activeTab",2),d([b()],s.prototype,"vertical",2),d([b()],s.prototype,"clustered",2),d([b()],s.prototype,"stacked",2),d([b()],s.prototype,"secondary",2),d([b()],s.prototype,"inverted",2),d([b()],s.prototype,"autoActivate",2),d([b()],s.prototype,"scrollButtons",2),s=d([C({name:r.elementName,dependencies:[V,H,R]})],s);function bt(){L(s)}export{w as a,T as b,s as c,bt as d};
7
+ //# sourceMappingURL=chunk.CN27IHDN.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ import{d as r}from"./chunk.C2LTB7EX.js";import{a as o}from"./chunk.NK7H3MMM.js";function m(){o(r)}export{m as a};
7
+ //# sourceMappingURL=chunk.IIXLFXHZ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/focus-indicator/index.ts"],
4
+ "sourcesContent": ["import { defineCustomElement } from '@tylertech/forge-core';\nimport { FocusIndicatorComponent } from './focus-indicator';\n\nexport * from './focus-indicator-adapter';\nexport * from './focus-indicator-constants';\nexport * from './focus-indicator-foundation';\nexport * from './focus-indicator';\n\nexport function defineFocusIndicatorComponent(): void {\n defineCustomElement(FocusIndicatorComponent);\n}\n"],
5
+ "mappings": "gFAQO,SAASA,GAAsC,CACpDC,EAAoBC,CAAuB,CAC7C",
6
+ "names": ["defineFocusIndicatorComponent", "defineCustomElement", "FocusIndicatorComponent"]
7
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ import{d as U}from"./chunk.C2LTB7EX.js";import{b as L,c as P}from"./chunk.SZIM4KFZ.js";import{b as O,h as F,i as k}from"./chunk.NVMILGC2.js";import{a as M}from"./chunk.G4IN6Y46.js";import{a as d}from"./chunk.NVUMRW44.js";import{a as D}from"./chunk.5V5ABSHI.js";import{a as N,b as B}from"./chunk.DTZFWZPB.js";import{a as x,e as R,f as c,k as C}from"./chunk.NK7H3MMM.js";import{f as z,g as w,t as b,u as m}from"./chunk.CFDK4RCW.js";import{k as h,l as u}from"./chunk.J2M2MXP2.js";import{a as T,b as H,d as o}from"./chunk.M3QDAYD2.js";var Y=`${B}slider`,q={ARIA_LABEL:"data-aria-label",ARIA_LABEL_START:"data-aria-label-start",ARIA_LABEL_END:"data-aria-label-end",VALUE:"value",VALUE_START:"value-start",VALUE_END:"value-end",LABEL:"label",LABEL_START:"label-start",LABEL_END:"label-end",MIN:"min",MAX:"max",STEP:"step",TICKMARKS:"tickmarks",LABELED:"labeled",RANGE:"range",DISABLED:"disabled",READONLY:"readonly"},$={ROOT:".forge-slider",TRACK:".track",HANDLE_CONTAINER:".handle-container",START_INPUT:"input.start",END_INPUT:"input.end",START_HANDLE:".handle.start",START_HANDLE_THUMB:".handle.start .handle-thumb",END_HANDLE:".handle.end",END_HANDLE_THUMB:".handle.end .handle-thumb",START_LABEL:".handle.start .handle-label",START_LABEL_CONTENT:".handle.start .handle-label-content",END_LABEL:".handle.end .handle-label",END_LABEL_CONTENT:".handle.end .handle-label-content",START_RIPPLE_SURFACE:".handle.start .handle-ripple",END_RIPPLE_SURFACE:".handle.end .handle-ripple",LABEL:".handle-label",INPUT:"input[type=range]"},J={RANGE:"range",TICKMARKS:"tickmarks",ON_TOP:"on-top",OVERLAPPING:"overlapping",HOVER:"hover",HANDLE:"handle",HANDLE_RIPPLE:"handle-ripple",HANDLE_THUMB:"handle-thumb",HANDLE_START:"start",HANDLE_LABEL:"handle-label",LABEL:"handle-label",LABEL_CONTENT:"handle-label-content"},Q={INPUT:"forge-slider-input",CHANGE:"forge-slider-change"},W={START_FRACTION:"--_start-fraction",END_FRACTION:"--_end-fraction",TICK_COUNT:"--_tick-count"},Z={DEFAULT_STEP:1,DEFAULT_VALUE:50,DEFAULT_START_VALUE:33,DEFAULT_END_VALUE:67},a={elementName:Y,attributes:q,selectors:$,classes:J,events:Q,numbers:Z,cssCustomProperties:W};var _=class{constructor(t,e){this._root=t;this._inputElement=e;let r=H(T({},L.createAdapter(this)),{registerInteractionHandler:(i,n)=>this._inputElement.addEventListener(i,n,{passive:!0}),deregisterInteractionHandler:(i,n)=>this._inputElement.removeEventListener(i,n,{passive:!0}),isSurfaceActive:()=>this._inputElement.matches(":active"),isUnbounded:()=>this.unbounded,isSurfaceDisabled:()=>this.disabled,addClass:i=>z(i,this._root),removeClass:i=>w(i,this._root),updateCssVariable:(i,n)=>this._root.style.setProperty(i,n)});this._rippleInstance=new L(this._root,new P(r))}destroy(){var t;(t=this._rippleInstance)==null||t.destroy(),this._rippleInstance=void 0}emulateFocus(){var t;(t=this._rippleInstance)==null||t.handleFocus()}emulateBlur(){var t;(t=this._rippleInstance)==null||t.handleBlur()}get root(){return this._root}get unbounded(){return!0}get disabled(){return this._inputElement.disabled}};function V(l){let t=document.createElement("input");return t.type="range",t.id="start",t.min=String(l.min),t.max=String(l.max),t.step=String(l.step),t.valueAsNumber=l.valueStart,t.disabled=l.disabled,t.classList.add("start"),l.hasAttribute(a.attributes.ARIA_LABEL_START)&&t.setAttribute("aria-label",l.getAttribute(a.attributes.ARIA_LABEL_START)),t.setAttribute("aria-valuetext",String(l.valueStart)),t}function K(l){let t=document.createElement("div");t.classList.add(a.classes.HANDLE,a.classes.HANDLE_START),t.setAttribute("part","handle-start");let e=document.createElement("forge-focus-indicator");e.target="start",t.appendChild(e);let r=document.createElement("div");r.classList.add(a.classes.HANDLE_THUMB),r.setAttribute("part","handle-start-thumb"),t.appendChild(r);let i=document.createElement("div");i.classList.add(a.classes.HANDLE_LABEL),i.setAttribute("part","handle-start-label"),t.appendChild(i);let n=document.createElement("span");n.textContent=l,n.classList.add(a.classes.LABEL_CONTENT),n.setAttribute("part","handle-start-label-content"),i.appendChild(n);let p=document.createElement("span");return p.classList.add(a.classes.HANDLE_RIPPLE),t.appendChild(p),t}function y(l){let t=document.createElement("div");t.classList.add(a.classes.LABEL);let e=document.createElement("span");return e.textContent=l,e.classList.add(a.classes.LABEL_CONTENT),t.appendChild(e),t}var v=class extends D{constructor(e){super(e);this._ripplesInitialized=!1;this._rootElement=c(e,a.selectors.ROOT),this._trackElement=c(e,a.selectors.TRACK),this._handleContainerElement=c(e,a.selectors.HANDLE_CONTAINER),this._endInputElement=c(e,a.selectors.END_INPUT),this._endHandleElement=c(e,a.selectors.END_HANDLE),this._endHandleThumbElement=c(e,a.selectors.END_HANDLE_THUMB),this._endHandleRippleSurfaceElement=c(e,a.selectors.END_RIPPLE_SURFACE),this._endLabelContentElement=c(e,a.selectors.END_LABEL_CONTENT)}initialize(){this._deferRippleInitialization()}destroy(){var e,r;(e=this._startHandleRipple)==null||e.destroy(),this._startHandleRipple=void 0,(r=this._endHandleRipple)==null||r.destroy(),this._endHandleRipple=void 0,this._ripplesInitialized=!1}addInputListener(e,r){this._getInputs().forEach(n=>n.addEventListener(e,r))}update({startFraction:e,endFraction:r,tickCount:i}){this._rootElement.style.setProperty(a.cssCustomProperties.START_FRACTION,String(e)),this._rootElement.style.setProperty(a.cssCustomProperties.END_FRACTION,String(r)),this._rootElement.style.setProperty(a.cssCustomProperties.TICK_COUNT,String(i))}updateLabels(e,r){var i;this._startLabelContentElement&&(this._startLabelContentElement.textContent=e),this._endLabelContentElement&&(this._endLabelContentElement.textContent=r),(i=this._startInputElement)==null||i.setAttribute("aria-valuetext",e),this._endInputElement.setAttribute("aria-valuetext",r)}updateHandleLayering(){let e=this._endInputElement.matches(":focus");this._startHandleElement&&b(this._startHandleElement,!e,a.classes.ON_TOP),b(this._endHandleElement,e,a.classes.ON_TOP)}tryHoverStartHandle(e){var r,i,n,p;this._component.disabled||(r=this._startHandleRipple)==null||r.emulateFocus(),this._startHandleThumbElement&&k(e,this._startHandleThumbElement)?(this._handleContainerElement.classList.add(a.classes.HOVER),(i=this._startHandleElement)==null||i.classList.add(a.classes.HOVER)):(n=this._startInputElement)!=null&&n.matches(":focus")||(this._handleContainerElement.classList.remove(a.classes.HOVER),(p=this._startHandleElement)==null||p.classList.remove(a.classes.HOVER))}tryHoverEndHandle(e){var r;this._component.disabled||(r=this._endHandleRipple)==null||r.emulateFocus(),k(e,this._endHandleThumbElement)?(this._handleContainerElement.classList.add(a.classes.HOVER),this._endHandleThumbElement.classList.add(a.classes.HOVER)):this._endInputElement.matches(":focus")||(this._handleContainerElement.classList.remove(a.classes.HOVER),this._endHandleThumbElement.classList.remove(a.classes.HOVER))}tryBlurStartHandle(){var e,r;(e=this._startInputElement)!=null&&e.matches(":focus")||(r=this._startHandleRipple)==null||r.emulateBlur()}tryBlurEndHandle(){var e;this._endInputElement.matches(":focus")||(e=this._endHandleRipple)==null||e.emulateBlur()}tryDetectOverlap(){if(this._startHandleElement){let e=F(this._startHandleElement,this._endHandleElement);b(this._endHandleElement,e,a.classes.OVERLAPPING),b(this._startHandleElement,e,a.classes.OVERLAPPING)}}leaveHandleContainer(){this._handleContainerElement.classList.remove(a.classes.HOVER)}syncInputValues(e,r){if(this._startInputElement&&(this._startInputElement.valueAsNumber=e),this._endInputElement.valueAsNumber=r,this._startInputElement){let i=new FormData;i.append(this._component.nameStart,String(e)),i.append(this._component.nameEnd,String(r)),this._component.internals.setFormValue(i)}else this._component.internals.setFormValue(String(r))}setRange(e){var r,i,n;if(this._rootElement.classList.toggle(a.classes.RANGE,e),e){this._startInputElement=V(this._component),this._rootElement.insertAdjacentElement("afterbegin",this._startInputElement),this._endInputElement.valueAsNumber=this._component.valueEnd;let p=this._startInputElement.value;this._startHandleElement=K(p),this._handleContainerElement.insertAdjacentElement("afterbegin",this._startHandleElement),this._startHandleThumbElement=c(this._component,a.selectors.START_HANDLE_THUMB),this._startHandleRippleSurfaceElement=c(this._component,a.selectors.START_RIPPLE_SURFACE),this._startLabelContentElement=c(this._component,a.selectors.START_LABEL_CONTENT),this._ripplesInitialized&&this._tryInitializeStartHandleRipple()}else(r=this._startInputElement)==null||r.remove(),(i=this._startHandleElement)==null||i.remove(),(n=this._startHandleRipple)==null||n.destroy(),this._startHandleRipple=void 0,this._startInputElement=void 0,this._startHandleElement=void 0,this._startHandleThumbElement=void 0,this._startHandleRippleSurfaceElement=void 0,this._startLabelContentElement=void 0}setTickmarks(e){this._trackElement.classList.toggle(a.classes.TICKMARKS,e)}setStep(e){this._getInputs().forEach(i=>i.step=String(e))}setMin(e){this._getInputs().forEach(i=>i.min=String(e))}setMax(e){this._getInputs().forEach(i=>i.max=String(e))}setDisabled(e){this._getInputs().forEach(i=>i.disabled=e)}setReadonly(e){this._getInputs().forEach(i=>i.readOnly=e)}toggleLabels(e){var i;if(this._rootElement.querySelectorAll(a.selectors.LABEL).forEach(n=>n.remove()),this._endLabelContentElement=void 0,this._startLabelContentElement=void 0,e){let n=y(this._endInputElement.value);if(this._endHandleElement.insertAdjacentElement("beforeend",n),this._endLabelContentElement=c(this._component,a.selectors.END_LABEL_CONTENT),this._startInputElement){let p=y(this._startInputElement.value);(i=this._startHandleElement)==null||i.insertAdjacentElement("beforeend",p),this._startLabelContentElement=c(this._component,a.selectors.START_LABEL_CONTENT)}}}setStartAriaLabel(e){this._startInputElement&&m(this._startInputElement,!!e,"aria-label",e)}setEndAriaLabel(e){m(this._endInputElement,!!e,"aria-label",e)}_getInputs(){let e=[];return this._startInputElement&&e.push(this._startInputElement),[...e,this._endInputElement]}async _deferRippleInitialization(){let e=await O(this._rootElement);this._ripplesInitialized=!0,this._tryInitializeEndHandleRipple(e),this._tryInitializeStartHandleRipple(e)}_tryInitializeEndHandleRipple(e){this._endHandleRipple=new _(this._endHandleRippleSurfaceElement,this._endInputElement),e==="focusin"&&this._endInputElement.matches(":focus")&&this._endHandleRipple.emulateFocus()}_tryInitializeStartHandleRipple(e){var r;this._startHandleRipple||!this._startInputElement||!this._startHandleRippleSurfaceElement||(this._startHandleRipple=new _(this._startHandleRippleSurfaceElement,this._startInputElement),e==="focusin"&&((r=this._startInputElement)!=null&&r.matches(":focus"))&&this._startHandleRipple.emulateFocus())}};var f=class{constructor(t){this._adapter=t;this._value=a.numbers.DEFAULT_VALUE;this._valueStart=a.numbers.DEFAULT_START_VALUE;this._valueEnd=a.numbers.DEFAULT_END_VALUE;this._min=0;this._max=100;this._step=a.numbers.DEFAULT_STEP;this._tickmarks=!1;this._labeled=!0;this._range=!1;this._disabled=!1;this._readonly=!1;this._pointerEnterListener=e=>this._handlePointerEnter(e),this._pointerMoveListener=e=>this._handlePointerMove(e),this._pointerLeaveListener=e=>this._handlePointerLeave(e),this._changeUpdateListener=e=>this._handleInputUpdate(e),this._focusListener=e=>this._handleFocus(e)}initialize(){this._adapter.initialize(),this._applyInputListeners(),this._update()}destroy(){this._adapter.destroy()}_update(){var S,I;let{value:t,valueStart:e,valueEnd:r}=this._clampMinMax(),i=this._step<=0?1:this._step,n=Math.max(this._max-this._min,i),p=this._range?((e!=null?e:this._min)-this._min)/n:0,g=this._range?r:t,X=((g!=null?g:this.min)-this.min)/n,j=n/i;this._adapter.update({startFraction:p,endFraction:X,tickCount:j}),this._adapter.syncInputValues(e,this._range?r:t),this._range&&this._adapter.tryDetectOverlap();let A=(S=this._labelStart)!=null?S:String(e),E=(I=this._labelEnd)!=null?I:String(this._range?r:t);typeof this._labelBuilder=="function"&&(this._range?(A=this._labelBuilder(e,"start"),E=this._labelBuilder(r,"end")):E=this._labelBuilder(t)),this._adapter.updateLabels(A,E)}_clampMinMax(){let t=this._value,e=this._valueStart,r=this._valueEnd;return this._range?(e>this._max?e=this._max:e<this._min&&(e=this._min),r>this._max?r=this._max:r<this._min&&(r=this._min)):t>this._max?t=this._max:this._value<this._min&&(t=this._min),{value:t,valueStart:e,valueEnd:r}}_applyInputListeners(){this._adapter.addInputListener("pointerenter",this._pointerEnterListener),this._adapter.addInputListener("pointermove",this._pointerMoveListener),this._adapter.addInputListener("pointerleave",this._pointerLeaveListener),this._adapter.addInputListener("input",this._changeUpdateListener),this._adapter.addInputListener("change",this._changeUpdateListener),this._adapter.addInputListener("focus",this._focusListener)}_handlePointerEnter(t){this._handlePointerMove(t)}_handlePointerMove({target:t,x:e,y:r}){t.id==="start"?this._adapter.tryHoverStartHandle({x:e,y:r}):this._adapter.tryHoverEndHandle({x:e,y:r})}_handlePointerLeave(t){this._adapter.leaveHandleContainer(),this._adapter.tryBlurStartHandle(),this._adapter.tryBlurEndHandle()}_handleInputUpdate(t){if(t.stopPropagation(),this._disabled||this._readonly){this._adapter.syncInputValues(this._valueStart,this._range?this._valueEnd:this._value);return}let e=t.target;if(this._range){let n=e.id==="start";if(n?this._valueStart=e.valueAsNumber:this._valueEnd=e.valueAsNumber,this._canClamp()){n?this._valueStart=this._valueEnd:this._valueEnd=this._valueStart,this._adapter.syncInputValues(this._valueStart,this._valueEnd),this._update();return}}else this._value=e.valueAsNumber;let r=t.type==="change"?a.events.CHANGE:a.events.INPUT,i=this._range?{valueStart:this._valueStart,valueEnd:this._valueEnd}:this._value;this._adapter.emitHostEvent(r,i,!0),this._update()}_handleFocus(t){this._adapter.updateHandleLayering()}_canClamp(){return this._valueStart>this._valueEnd||this._valueEnd<this._valueStart}get value(){return this._value}set value(t){this._value!==t&&(this._value=t,this._update())}get valueStart(){return this._valueStart}set valueStart(t){this._valueStart!==t&&(this._valueStart=t,this._update())}get valueEnd(){return this._valueEnd}set valueEnd(t){this._valueEnd!==t&&(this._valueEnd=t,this._update())}get label(){return this.labelEnd}set label(t){this.labelEnd=t}get labelStart(){return this._labelStart}set labelStart(t){this._labelStart!==t&&(this._labelStart=t,this._adapter.updateLabels(this._labelStart,this._labelEnd))}get labelEnd(){return this._labelEnd}set labelEnd(t){this._labelEnd!==t&&(this._labelEnd=t,this._adapter.updateLabels(this._labelStart,this._labelEnd))}get labelBuilder(){return this._labelBuilder}set labelBuilder(t){this._labelBuilder=t,this._update()}get min(){return this._min}set min(t){this._min!==t&&(this._min=t,this._adapter.setMin(this._min),this._update(),this._adapter.setHostAttribute(a.attributes.MIN,String(this._min)))}get max(){return this._max}set max(t){this._max!==t&&(this._max=t,this._adapter.setMax(this._max),this._update(),this._adapter.setHostAttribute(a.attributes.MAX,String(this._max)))}get step(){return this._step}set step(t){this._step!==t&&(this._step=t,this._adapter.setStep(this._step),this._update(),this._adapter.setHostAttribute(a.attributes.STEP,String(this._step)))}get tickmarks(){return this._tickmarks}set tickmarks(t){this._tickmarks!==t&&(this._tickmarks=t,this._adapter.setTickmarks(this._tickmarks),this._adapter.toggleHostAttribute(a.attributes.TICKMARKS,this._tickmarks))}get labeled(){return this._labeled}set labeled(t){this._labeled!==t&&(this._labeled=t,this._adapter.toggleLabels(this._labeled),this._update(),this._adapter.toggleHostAttribute(a.attributes.LABELED,this._labeled))}get range(){return this._range}set range(t){this._range!==t&&(this._range=t,this._adapter.setRange(this._range),this._range&&this._applyInputListeners(),this._update(),this._adapter.toggleHostAttribute(a.attributes.RANGE,this._range))}get disabled(){return this._disabled}set disabled(t){this._disabled!==t&&(this._disabled=t,this._adapter.setDisabled(t),this._adapter.toggleHostAttribute(a.attributes.DISABLED,this._disabled))}get readonly(){return this._readonly}set readonly(t){this._readonly!==t&&(this._readonly=t,this._adapter.setReadonly(t),this._adapter.toggleHostAttribute(a.attributes.READONLY,this._readonly))}set ariaLabel(t){this.ariaLabelEnd=t}set ariaLabelStart(t){this._adapter.setStartAriaLabel(t)}set ariaLabelEnd(t){this._adapter.setEndAriaLabel(t)}};var ee='<template><div part="root" class="forge-slider"><input type="range" class="end" id="end" min="0" max="100" step="1" aria-valuetext="0"><div class="track" part="track"></div><div class="handle-container-padded"><div class="handle-container-block"><div class="handle-container"><div class="handle end" part="handle-end"><forge-focus-indicator target="end"></forge-focus-indicator><div class="handle-thumb" part="handle-end-thumb"></div><span class="handle-ripple"></span><div class="handle-label" part="handle-end-label"><span class="handle-label-content" part="handle-end-label-content"></span></div></div></div></div></div></div></template>',te=':host{display:-webkit-inline-box;display:inline-flex;vertical-align:middle;min-inline-size:100%}:host([hidden]){display:none}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-slider{--_start-fraction:0;--_end-fraction:0;--_tick-count:100;--_track-height:var(--forge-slider-track-height, 4px);--_active-track-color:var(--forge-slider-active-track-color, var(--mdc-theme-primary, #3f51b5));--_active-track-height:var(--forge-slider-active-track-height, var(--_track-height));--_active-track-shape:var(--forge-slider-active-track-shape, 9999px);--_disabled-active-track-color:var(--forge-slider-disabled-active-track-color, #9e9e9e);--_disabled-active-track-opacity:var(--forge-slider-disabled-active-track-opacity, 0.38);--_disabled-handle-color:var(--forge-slider-disabled-handle-color, #9e9e9e);--_disabled-inactive-track-color:var(--forge-slider-disabled-inactive-track-color, #9e9e9e);--_disabled-inactive-track-opacity:var(--forge-slider-disabled-inactive-track-opacity, 0.12);--_focus-handle-color:var(--forge-slider-focus-handle-color, var(--mdc-theme-primary, #3f51b5));--_handle-color:var(--forge-slider-handle-color, var(--mdc-theme-primary, #3f51b5));--_handle-height:var(--forge-slider-handle-height, 20px);--_handle-shape:var(--forge-slider-handle-shape, 9999px);--_handle-width:var(--forge-slider-handle-width, 20px);--_hover-handle-color:var(--forge-slider-hover-handle-color, var(--mdc-theme-primary, #3f51b5));--_inactive-track-color-fallback:var(--forge-slider-inactive-track-color, #d5d8ee);--_inactive-track-color:var(--forge-slider-inactive-track-color, color-mix(in srgb, var(--mdc-theme-primary, #3f51b5) 24%, transparent));--_inactive-track-height:var(--forge-slider-inactive-track-height, var(--_track-height));--_inactive-track-shape:var(--forge-slider-inactive-track-shape, 9999px);--_label-container-color:var(--forge-slider-label-container-color, var(--mdc-theme-primary, #3f51b5));--_label-container-height:var(--forge-slider-label-container-height, 28px);--_label-label-text-color:var(--forge-slider-label-label-text-color, var(--mdc-theme-on-primary, #ffffff));--_pressed-handle-color:var(--forge-slider-pressed-handle-color, var(--mdc-theme-primary, #3f51b5));--_state-layer-size:var(--forge-slider-state-layer-size, 40px);--_with-overlap-handle-outline-color:var(--forge-slider-with-overlap-handle-outline-color, var(--mdc-theme-on-primary, #ffffff));--_with-overlap-handle-outline-width:var(--forge-slider-with-overlap-handle-outline-width, 1px);--_with-tick-marks-active-container-color:var(--forge-slider-with-tick-marks-active-container-color, var(--mdc-theme-on-primary, #ffffff));--_with-tick-marks-container-size:var(--forge-slider-with-tick-marks-container-size, 2px);--_with-tick-marks-disabled-active-container-color:var(--forge-slider-with-tick-marks-disabled-active-container-color, var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87)));--_with-tick-marks-disabled-inactive-container-color:var(--forge-slider-with-tick-marks-disabled-inactive-container-color, color-mix(in srgb, var(--mdc-theme-on-primary, #ffffff) 50%, transparent));--_with-tick-marks-inactive-container-color:var(--forge-slider-with-tick-marks-inactive-container-color, var(--mdc-theme-primary, #3f51b5));-webkit-box-flex:1;flex:1;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;block-size:var(--_state-layer-size);pointer-events:none;touch-action:none}.forge-slider.range :host-context([dir=rtl]) input.start{-webkit-clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))));clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))))}.forge-slider.range :host([dir=rtl]) input.start{-webkit-clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))));clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))))}.forge-slider.range input.start:dir(rtl){-webkit-clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))));clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))))}.forge-slider.range input.start{-webkit-clip-path:inset(0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))) 0 0);clip-path:inset(0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))) 0 0)}.forge-slider.range input.end{-webkit-clip-path:inset(0 0 0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)));clip-path:inset(0 0 0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)))}.forge-slider.range :host-context([dir=rtl]) input.end{-webkit-clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0);clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0)}.forge-slider.range :host([dir=rtl]) input.end{-webkit-clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0);clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0)}.forge-slider.range input.end:dir(rtl){-webkit-clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0);clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0)}.track{position:absolute;inset:0;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.track::after,.track::before{content:"";position:absolute;inset-inline-start:calc(var(--_state-layer-size)/ 2 - var(--_with-tick-marks-container-size));inset-inline-end:calc(var(--_state-layer-size)/ 2 - var(--_with-tick-marks-container-size));background-size:calc((100% - var(--_with-tick-marks-container-size) * 2)/ var(--_tick-count)) 100%}.track::before{block-size:var(--_inactive-track-height);border-radius:var(--_inactive-track-shape);background-color:var(--_inactive-track-color-fallback)}@supports (background-color:color-mix(in srgb,red 50%,transparent)){.track::before{background-color:var(--_inactive-track-color)}}.track::after{block-size:var(--_active-track-height);border-radius:var(--_active-track-shape);-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))) 0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))) 0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)));background-color:var(--_active-track-color)}.track.tickmarks::before{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-inactive-container-color) 0,var(--_with-tick-marks-inactive-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}.track.tickmarks::after{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-active-container-color) 0,var(--_with-tick-marks-active-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}.handle-container-block,.handle-container-padded{position:relative;block-size:100%;inline-size:100%}.handle-container-padded{padding-inline:calc(var(--_state-layer-size)/ 2)}.handle-container{position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:calc(100% * var(--_start-fraction));inline-size:calc(100% * (var(--_end-fraction) - var(--_start-fraction)))}.handle{position:absolute;block-size:var(--_state-layer-size);inline-size:var(--_state-layer-size);border-radius:var(--_handle-shape);display:grid;place-items:center}.handle.start{inset-inline-start:calc(0px - var(--_state-layer-size)/ 2)}.handle.end{inset-inline-end:calc(0px - var(--_state-layer-size)/ 2)}.handle-thumb{position:absolute;height:var(--_handle-height);width:var(--_handle-width);border-radius:var(--_handle-shape);background:var(--_handle-color);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.handle-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;padding:4px;place-items:center;border-radius:9999px;color:var(--_label-label-text-color);font-weight:500;white-space:nowrap;inset-block-end:100%;min-inline-size:var(--_label-container-height);min-block-size:var(--_label-container-height);background:var(--_label-container-color);-webkit-transition:-webkit-transform .1s cubic-bezier(.2, 0, 0, 1);transition:-webkit-transform .1s cubic-bezier(.2, 0, 0, 1);transition:transform .1s cubic-bezier(.2, 0, 0, 1);transition:transform .1s cubic-bezier(.2, 0, 0, 1),-webkit-transform .1s cubic-bezier(.2, 0, 0, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transform:scale(0);transform:scale(0)}.handle-label::after,.handle-label::before{content:"";position:absolute;display:block;background:inherit}.handle-label::before{inline-size:calc(var(--_label-container-height)/ 2);block-size:calc(var(--_label-container-height)/ 2);bottom:calc(var(--_label-container-height)/ -10);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.handle-label::after{inset:0;border-radius:inherit}.handle-label-content{z-index:1}.handle-ripple{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;-webkit-box-sizing:content-box;box-sizing:content-box;width:100%;height:100%}.handle-ripple::after,.handle-ripple::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.handle-ripple::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.handle-ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.handle-ripple.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.handle-ripple.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.handle-ripple.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.handle-ripple.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.handle-ripple.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.handle-ripple::after,.handle-ripple::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.handle-ripple.mdc-ripple-upgraded::after,.handle-ripple.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.handle-ripple.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.handle-ripple::after,.handle-ripple::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.handle-ripple.mdc-ripple-surface--hover::before,.handle-ripple:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.handle-ripple.mdc-ripple-upgraded--background-focused::before,.handle-ripple:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.handle-ripple:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.handle-ripple:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.handle-ripple.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.handle-container.hover .handle-thumb{background:var(--_hover-handle-color)}:host(:not([disabled])) input.end:active~.handle-container-padded .handle.end>.handle-thumb,:host(:not([disabled])) input.start:active~.handle-container-padded .handle.start>.handle-thumb{background:var(--_pressed-handle-color)}:host([disabled]) .handle-thumb{background:var(--_disabled-handle-color);-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}:host([disabled]) .handle-label{background:var(--_disabled-handle-color)}:host([disabled]) .track::before{opacity:calc(1 / var(--_disabled-active-track-opacity) * var(--_disabled-inactive-track-opacity));background-color:var(--_disabled-inactive-track-color)}:host([disabled]) .track::after{background-color:var(--_disabled-active-track-color)}:host([disabled]) .track.tickmarks::before{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-disabled-active-container-color) 0,var(--_with-tick-marks-disabled-active-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}:host([disabled]) .track.tickmarks::after{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-disabled-inactive-container-color) 0,var(--_with-tick-marks-disabled-inactive-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}:host([disabled]) input[type=range]{cursor:not-allowed}:host-context([dir=rtl]) .track::after{-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))))}:host([dir=rtl]) .track::after{-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))))}.track:dir(rtl)::after{-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))))}input.end:focus~.handle-container-padded .handle.end>.handle-thumb,input.start:focus~.handle-container-padded .handle.start>.handle-thumb{background:var(--_focus-handle-color)}.on-top.overlapping .handle-label,.on-top.overlapping .handle-label::before,.on-top.overlapping .handle-thumb{border:var(--_with-overlap-handle-outline-color) solid var(--_with-overlap-handle-outline-width)}.handle-container.hover .handle-label,:host(:focus-within) .handle-label,:where(:has(input:active)) .handle-label{-webkit-transform:scale(1);transform:scale(1)}input[type=range]{opacity:0;-webkit-tap-highlight-color:transparent;position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;width:100%;margin:0;background:0 0;cursor:pointer;pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=range]:focus{outline:0}input[type=range]::-webkit-slider-runnable-track{-webkit-appearance:none}input[type=range]::-moz-range-track{-moz-appearance:none;appearance:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;block-size:var(--_state-layer-size);inline-size:var(--_state-layer-size);-webkit-transform:scaleX(0);transform:scaleX(0);opacity:0;z-index:2}input[type=range]::-moz-range-thumb{-moz-appearance:none;appearance:none;block-size:var(--_state-layer-size);inline-size:var(--_state-layer-size);transform:scaleX(0);opacity:0;z-index:2}.on-top{z-index:1}@media (prefers-reduced-motion){.handle-label{-webkit-transition-duration:0;transition-duration:0}}forge-focus-indicator{--forge-focus-indicator-shape:50%;--forge-focus-indicator-outward-offset:0px}',s=class extends C{constructor(){super();R(this,ee,te),this.internals=this.attachInternals(),this._foundation=new f(new v(this))}static get observedAttributes(){return[a.attributes.ARIA_LABEL,a.attributes.ARIA_LABEL_START,a.attributes.ARIA_LABEL_END,a.attributes.VALUE,a.attributes.VALUE_START,a.attributes.VALUE_END,a.attributes.LABEL,a.attributes.LABEL_START,a.attributes.LABEL_END,a.attributes.MAX,a.attributes.MIN,a.attributes.STEP,a.attributes.TICKMARKS,a.attributes.LABELED,a.attributes.RANGE,a.attributes.DISABLED,a.attributes.READONLY]}get form(){return this.internals.form}get labels(){return this.internals.labels}get name(){var e;return(e=this.getAttribute("name"))!=null?e:""}set name(e){m(this,!!e,"name",e!=null?e:"")}get nameStart(){var e;return(e=this.getAttribute("name-start"))!=null?e:this.name}set nameStart(e){m(this,!!e,"name-start",e!=null?e:"")}get nameEnd(){var e;return(e=this.getAttribute("name-end"))!=null?e:this.nameStart}set nameEnd(e){m(this,!!e,"name-end",e!=null?e:"")}connectedCallback(){this._foundation.initialize()}disconnectedCallback(){this._foundation.destroy()}attributeChangedCallback(e,r,i){switch(e){case a.attributes.ARIA_LABEL:this._foundation.ariaLabel=i;break;case a.attributes.ARIA_LABEL_START:this._foundation.ariaLabelStart=i;break;case a.attributes.ARIA_LABEL_END:this._foundation.ariaLabelEnd=i;break;case a.attributes.VALUE:this.value=u(i);break;case a.attributes.VALUE_START:this.valueStart=u(i);break;case a.attributes.VALUE_END:this.valueEnd=u(i);break;case a.attributes.LABEL:this.label=i;break;case a.attributes.LABEL_START:this.labelStart=i;break;case a.attributes.LABEL_END:this.labelEnd=i;break;case a.attributes.MIN:this.min=u(i);break;case a.attributes.MAX:this.max=u(i);break;case a.attributes.STEP:this.step=u(i);break;case a.attributes.TICKMARKS:this.tickmarks=h(i);break;case a.attributes.LABELED:this.labeled=h(i);break;case a.attributes.RANGE:this.range=h(i);break;case a.attributes.DISABLED:this.disabled=h(i);break;case a.attributes.READONLY:this.readonly=h(i);break}}formResetCallback(){if(this._foundation.range){let r=this.getAttribute("value-start");this.valueStart=r!==null?Number(r):a.numbers.DEFAULT_START_VALUE;let i=this.getAttribute("value-end");this.valueEnd=i!==null?Number(i):a.numbers.DEFAULT_END_VALUE;return}let e=this.getAttribute("value");this.value=e!==null?Number(e):a.numbers.DEFAULT_VALUE}formStateRestoreCallback(e){if(e&&e[0]instanceof FormData){let r=Array.from(e[0]),[[,i],[,n]]=r;this.valueStart=Number(i),this.valueEnd=Number(n),this.range=!0;return}this.value=Number(e),this.range=!1}};s.formAssociated=!0,o([d()],s.prototype,"value",2),o([d()],s.prototype,"valueStart",2),o([d()],s.prototype,"valueEnd",2),o([d()],s.prototype,"label",2),o([d()],s.prototype,"labelStart",2),o([d()],s.prototype,"labelEnd",2),o([d()],s.prototype,"labelBuilder",2),o([d()],s.prototype,"min",2),o([d()],s.prototype,"max",2),o([d()],s.prototype,"step",2),o([d()],s.prototype,"tickmarks",2),o([d()],s.prototype,"labeled",2),o([d()],s.prototype,"range",2),o([d()],s.prototype,"disabled",2),o([d()],s.prototype,"readonly",2),s=o([N({name:a.elementName,dependencies:[U]})],s);var G=class extends M{constructor(t){super(t)}get value(){return this._element.value}set value(t){this._element.value=t}get valueStart(){return this._element.valueStart}set valueStart(t){this._element.valueStart=t}get valueEnd(){return this._element.valueEnd}set valueEnd(t){this._element.valueEnd=t}get disabled(){return this._element.disabled}set disabled(t){this._element.disabled=t}get min(){return this._element.min}set min(t){this._element.min=t}get max(){return this._element.max}set max(t){this._element.max=t}get step(){return this._element.step}get range(){return this._element.range}set range(t){this._element.range=t}get tickmarks(){return this._element.tickmarks}set tickmarks(t){this._element.tickmarks=t}get labeled(){return this._element.labeled}set labeled(t){this._element.labeled=t}get labelBuilder(){return this._element.labelBuilder}set labelBuilder(t){this._element.labelBuilder=t}onInput(t){this._element.addEventListener("forge-slider-input",({detail:e})=>t(e))}onChange(t){this._element.addEventListener("forge-slider-change",({detail:e})=>t(e))}onFocus(t){this._element.addEventListener("focus",e=>t(e))}onBlur(t){this._element.addEventListener("blur",e=>t(e))}_build(){return document.createElement(a.elementName)}};function Ve(){x(s)}export{a,s as b,G as c,Ve as d};
7
+ //# sourceMappingURL=chunk.JQIOVCKI.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/slider/slider-constants.ts", "../../src/slider/slider-handle-ripple.ts", "../../src/slider/slider-utils.ts", "../../src/slider/slider-adapter.ts", "../../src/slider/slider-foundation.ts", "../../src/slider/slider.ts", "../../src/slider/slider-component-delegate.ts", "../../src/slider/index.ts"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}slider`;\n\nconst attributes = {\n ARIA_LABEL: 'data-aria-label',\n ARIA_LABEL_START: 'data-aria-label-start',\n ARIA_LABEL_END: 'data-aria-label-end',\n VALUE: 'value',\n VALUE_START: 'value-start',\n VALUE_END: 'value-end',\n LABEL: 'label',\n LABEL_START: 'label-start',\n LABEL_END: 'label-end',\n MIN: 'min',\n MAX: 'max',\n STEP: 'step',\n TICKMARKS: 'tickmarks',\n LABELED: 'labeled',\n RANGE: 'range',\n DISABLED: 'disabled',\n READONLY: 'readonly'\n};\n\nconst selectors = {\n ROOT: '.forge-slider',\n TRACK: '.track',\n HANDLE_CONTAINER: '.handle-container',\n START_INPUT: 'input.start',\n END_INPUT: 'input.end',\n START_HANDLE: '.handle.start',\n START_HANDLE_THUMB: '.handle.start .handle-thumb',\n END_HANDLE: '.handle.end',\n END_HANDLE_THUMB: '.handle.end .handle-thumb',\n START_LABEL: '.handle.start .handle-label',\n START_LABEL_CONTENT: '.handle.start .handle-label-content',\n END_LABEL: '.handle.end .handle-label',\n END_LABEL_CONTENT: '.handle.end .handle-label-content',\n START_RIPPLE_SURFACE: '.handle.start .handle-ripple',\n END_RIPPLE_SURFACE: '.handle.end .handle-ripple',\n LABEL: '.handle-label',\n INPUT: 'input[type=range]'\n};\n\nconst classes = {\n RANGE: 'range',\n TICKMARKS: 'tickmarks',\n ON_TOP: 'on-top',\n OVERLAPPING: 'overlapping',\n HOVER: 'hover',\n HANDLE: 'handle',\n HANDLE_RIPPLE: 'handle-ripple',\n HANDLE_THUMB: 'handle-thumb',\n HANDLE_START: 'start',\n HANDLE_LABEL: 'handle-label',\n LABEL: 'handle-label',\n LABEL_CONTENT: 'handle-label-content'\n};\n\nconst events = {\n INPUT: 'forge-slider-input',\n CHANGE: 'forge-slider-change'\n};\n\nconst cssCustomProperties = {\n START_FRACTION: '--_start-fraction',\n END_FRACTION: '--_end-fraction',\n TICK_COUNT: '--_tick-count'\n};\n\nconst numbers = {\n DEFAULT_STEP: 1,\n DEFAULT_VALUE: 50,\n DEFAULT_START_VALUE: 33,\n DEFAULT_END_VALUE: 67\n};\n\nexport const SLIDER_CONSTANTS = {\n elementName,\n attributes,\n selectors,\n classes,\n events,\n numbers,\n cssCustomProperties\n};\n\nexport interface ISliderRangeEventData {\n valueStart: number;\n valueEnd: number;\n}\n\nexport type SliderLabelBuilder = (value: number, which?: 'start' | 'end') => string;\n", "import { addClass, removeClass } from '@tylertech/forge-core';\nimport { ForgeRippleCapableSurface, ForgeRipple, ForgeRippleAdapter, ForgeRippleFoundation } from '../ripple';\n\nexport class SliderHandleRipple implements ForgeRippleCapableSurface {\n private _rippleInstance: ForgeRipple | undefined;\n\n constructor(private _root: HTMLElement, private _inputElement: HTMLInputElement) {\n const adapter: ForgeRippleAdapter = {\n ...ForgeRipple.createAdapter(this),\n registerInteractionHandler: (evtType, handler) => this._inputElement.addEventListener(evtType, handler, { passive: true }),\n deregisterInteractionHandler: (evtType, handler) => this._inputElement.removeEventListener(evtType, handler, { passive: true } as AddEventListenerOptions),\n isSurfaceActive: () => this._inputElement.matches(':active'),\n isUnbounded: () => this.unbounded,\n isSurfaceDisabled: () => this.disabled,\n addClass: (className: string) => addClass(className, this._root),\n removeClass: (className: string) => removeClass(className, this._root),\n updateCssVariable: (varName: string, value: string | null) => this._root.style.setProperty(varName, value)\n };\n this._rippleInstance = new ForgeRipple(this._root, new ForgeRippleFoundation(adapter));\n }\n\n public destroy(): void {\n this._rippleInstance?.destroy();\n this._rippleInstance = undefined;\n }\n\n public emulateFocus(): void {\n this._rippleInstance?.handleFocus();\n }\n\n public emulateBlur(): void {\n this._rippleInstance?.handleBlur();\n }\n\n public get root(): Element {\n return this._root;\n }\n\n public get unbounded(): boolean {\n return true;\n }\n\n public get disabled(): boolean {\n return this._inputElement.disabled;\n }\n}\n", "import { ISliderComponent } from '../slider';\nimport { SLIDER_CONSTANTS } from './slider-constants';\n\nexport function createStartInputElement(component: ISliderComponent): HTMLInputElement {\n const startInput = document.createElement('input');\n startInput.type = 'range';\n startInput.id = 'start';\n startInput.min = String(component.min);\n startInput.max = String(component.max);\n startInput.step = String(component.step);\n startInput.valueAsNumber = component.valueStart;\n startInput.disabled = component.disabled;\n startInput.classList.add('start');\n \n if (component.hasAttribute(SLIDER_CONSTANTS.attributes.ARIA_LABEL_START)) {\n startInput.setAttribute('aria-label', component.getAttribute(SLIDER_CONSTANTS.attributes.ARIA_LABEL_START) as string);\n }\n startInput.setAttribute('aria-valuetext', String(component.valueStart));\n\n return startInput;\n}\n\nexport function createStartHandleElement(thumbLabel: string): HTMLElement {\n const startHandle = document.createElement('div');\n startHandle.classList.add(SLIDER_CONSTANTS.classes.HANDLE, SLIDER_CONSTANTS.classes.HANDLE_START);\n startHandle.setAttribute('part', 'handle-start');\n\n const startHandleFocusIndicator = document.createElement('forge-focus-indicator');\n startHandleFocusIndicator.target = 'start';\n startHandle.appendChild(startHandleFocusIndicator);\n \n const startHandleThumb = document.createElement('div');\n startHandleThumb.classList.add(SLIDER_CONSTANTS.classes.HANDLE_THUMB);\n startHandleThumb.setAttribute('part', 'handle-start-thumb');\n startHandle.appendChild(startHandleThumb);\n \n const startHandleLabel = document.createElement('div');\n startHandleLabel.classList.add(SLIDER_CONSTANTS.classes.HANDLE_LABEL);\n startHandleLabel.setAttribute('part', 'handle-start-label');\n startHandle.appendChild(startHandleLabel);\n\n const startHandleLabelContent = document.createElement('span');\n startHandleLabelContent.textContent = thumbLabel;\n startHandleLabelContent.classList.add(SLIDER_CONSTANTS.classes.LABEL_CONTENT);\n startHandleLabelContent.setAttribute('part', 'handle-start-label-content');\n startHandleLabel.appendChild(startHandleLabelContent);\n\n const startHandleRipple = document.createElement('span');\n startHandleRipple.classList.add(SLIDER_CONSTANTS.classes.HANDLE_RIPPLE);\n startHandle.appendChild(startHandleRipple);\n \n return startHandle;\n}\n\nexport function createLabel(text: string): HTMLElement {\n const labelElement = document.createElement('div');\n labelElement.classList.add(SLIDER_CONSTANTS.classes.LABEL);\n\n const labelContentElement = document.createElement('span');\n labelContentElement.textContent = text;\n labelContentElement.classList.add(SLIDER_CONSTANTS.classes.LABEL_CONTENT);\n labelElement.appendChild(labelContentElement);\n\n return labelElement;\n}\n", "import { getShadowElement, toggleAttribute, toggleClass } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { elementsOverlapping, isPointerOverElement, userInteractionListener } from '../core/utils/utils';\nimport { ISliderComponent } from '../slider';\nimport { SLIDER_CONSTANTS } from './slider-constants';\nimport { SliderHandleRipple } from './slider-handle-ripple';\nimport { createLabel, createStartHandleElement, createStartInputElement } from './slider-utils';\n\nexport interface ISliderState {\n startFraction: number;\n endFraction: number;\n tickCount: number;\n}\n\nexport interface ISliderAdapter extends IBaseAdapter {\n initialize(): void;\n destroy(): void;\n addInputListener(type: keyof HTMLElementEventMap, listener: EventListener): void;\n update(state: ISliderState): void;\n updateLabels(labelStart: string, labelEnd: string): void;\n updateHandleLayering(): void;\n tryHoverStartHandle(coords: { x: number; y: number }): void;\n tryHoverEndHandle(coords: { x: number; y: number }): void;\n tryBlurStartHandle(): void;\n tryBlurEndHandle(): void;\n tryDetectOverlap(): void;\n leaveHandleContainer(): void;\n syncInputValues(valueStart: number, valueEnd: number): void;\n setRange(value: boolean): void;\n setTickmarks(value: boolean): void;\n setStep(step: number): void;\n setMin(value: number): void;\n setMax(value: number): void;\n setDisabled(value: boolean): void;\n setReadonly(value: boolean): void;\n toggleLabels(value: boolean): void;\n setStartAriaLabel(value: string | null): void;\n setEndAriaLabel(value: string | null): void;\n}\n\nexport class SliderAdapter extends BaseAdapter<ISliderComponent> {\n private readonly _rootElement: HTMLElement;\n private readonly _trackElement: HTMLElement;\n private readonly _handleContainerElement: HTMLElement;\n private readonly _endInputElement: HTMLInputElement;\n private readonly _endHandleElement: HTMLElement;\n private readonly _endHandleThumbElement: HTMLElement;\n private readonly _endHandleRippleSurfaceElement: HTMLElement;\n private _endLabelContentElement: HTMLElement | undefined;\n private _startInputElement: HTMLInputElement | undefined;\n private _startHandleElement: HTMLElement | undefined;\n private _startHandleThumbElement: HTMLElement | undefined;\n private _startHandleRippleSurfaceElement: HTMLElement | undefined;\n private _startLabelContentElement: HTMLElement | undefined;\n private _startHandleRipple: SliderHandleRipple | undefined;\n private _endHandleRipple: SliderHandleRipple | undefined;\n private _ripplesInitialized = false;\n\n constructor(component: ISliderComponent) {\n super(component);\n\n this._rootElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.ROOT);\n this._trackElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.TRACK);\n this._handleContainerElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.HANDLE_CONTAINER);\n this._endInputElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.END_INPUT) as HTMLInputElement;\n this._endHandleElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.END_HANDLE);\n this._endHandleThumbElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.END_HANDLE_THUMB);\n this._endHandleRippleSurfaceElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.END_RIPPLE_SURFACE);\n this._endLabelContentElement = getShadowElement(component, SLIDER_CONSTANTS.selectors.END_LABEL_CONTENT);\n }\n\n public initialize(): void {\n this._deferRippleInitialization();\n }\n\n public destroy(): void {\n this._startHandleRipple?.destroy();\n this._startHandleRipple = undefined;\n\n this._endHandleRipple?.destroy();\n this._endHandleRipple = undefined;\n\n this._ripplesInitialized = false;\n }\n\n public addInputListener(type: keyof HTMLElementEventMap, listener: EventListener): void {\n const inputs = this._getInputs();\n inputs.forEach(input => input.addEventListener(type, listener));\n }\n\n public update({ startFraction, endFraction, tickCount }: ISliderState): void {\n this._rootElement.style.setProperty(SLIDER_CONSTANTS.cssCustomProperties.START_FRACTION, String(startFraction));\n this._rootElement.style.setProperty(SLIDER_CONSTANTS.cssCustomProperties.END_FRACTION, String(endFraction));\n this._rootElement.style.setProperty(SLIDER_CONSTANTS.cssCustomProperties.TICK_COUNT, String(tickCount));\n }\n\n public updateLabels(labelStart: string, labelEnd: string): void {\n if (this._startLabelContentElement) {\n this._startLabelContentElement.textContent = labelStart;\n }\n \n if (this._endLabelContentElement) {\n this._endLabelContentElement.textContent = labelEnd;\n }\n\n this._startInputElement?.setAttribute('aria-valuetext', labelStart);\n this._endInputElement.setAttribute('aria-valuetext', labelEnd);\n }\n\n public updateHandleLayering(): void {\n const isEndFocused = this._endInputElement.matches(':focus');\n if (this._startHandleElement) {\n toggleClass(this._startHandleElement, !isEndFocused, SLIDER_CONSTANTS.classes.ON_TOP);\n }\n toggleClass(this._endHandleElement, isEndFocused, SLIDER_CONSTANTS.classes.ON_TOP);\n }\n\n public tryHoverStartHandle(coords: { x: number; y: number }): void {\n if (!this._component.disabled) {\n this._startHandleRipple?.emulateFocus();\n }\n\n if (this._startHandleThumbElement && isPointerOverElement(coords, this._startHandleThumbElement)) {\n this._handleContainerElement.classList.add(SLIDER_CONSTANTS.classes.HOVER);\n this._startHandleElement?.classList.add(SLIDER_CONSTANTS.classes.HOVER);\n } else if (!this._startInputElement?.matches(':focus')) {\n this._handleContainerElement.classList.remove(SLIDER_CONSTANTS.classes.HOVER);\n this._startHandleElement?.classList.remove(SLIDER_CONSTANTS.classes.HOVER);\n }\n }\n\n public tryHoverEndHandle(coords: { x: number; y: number }): void {\n if (!this._component.disabled) {\n this._endHandleRipple?.emulateFocus();\n }\n\n if (isPointerOverElement(coords, this._endHandleThumbElement)) {\n this._handleContainerElement.classList.add(SLIDER_CONSTANTS.classes.HOVER);\n this._endHandleThumbElement.classList.add(SLIDER_CONSTANTS.classes.HOVER);\n } else if (!this._endInputElement.matches(':focus')) {\n this._handleContainerElement.classList.remove(SLIDER_CONSTANTS.classes.HOVER);\n this._endHandleThumbElement.classList.remove(SLIDER_CONSTANTS.classes.HOVER);\n }\n }\n\n public tryBlurStartHandle(): void {\n if (!this._startInputElement?.matches(':focus')) {\n this._startHandleRipple?.emulateBlur();\n }\n }\n\n public tryBlurEndHandle(): void {\n if (!this._endInputElement.matches(':focus')) {\n this._endHandleRipple?.emulateBlur();\n }\n }\n\n public tryDetectOverlap(): void {\n if (this._startHandleElement) {\n const isOverlapping = elementsOverlapping(this._startHandleElement, this._endHandleElement);\n toggleClass(this._endHandleElement, isOverlapping, SLIDER_CONSTANTS.classes.OVERLAPPING);\n toggleClass(this._startHandleElement, isOverlapping, SLIDER_CONSTANTS.classes.OVERLAPPING);\n }\n }\n\n public leaveHandleContainer(): void {\n this._handleContainerElement.classList.remove(SLIDER_CONSTANTS.classes.HOVER);\n }\n\n public syncInputValues(valueStart: number, valueEnd: number): void {\n if (this._startInputElement) {\n this._startInputElement.valueAsNumber = valueStart;\n }\n this._endInputElement.valueAsNumber = valueEnd;\n\n if (this._startInputElement) {\n const data = new FormData();\n data.append(this._component.nameStart, String(valueStart));\n data.append(this._component.nameEnd, String(valueEnd));\n this._component.internals.setFormValue(data);\n } else {\n this._component.internals.setFormValue(String(valueEnd));\n }\n }\n\n public setRange(value: boolean): void {\n this._rootElement.classList.toggle(SLIDER_CONSTANTS.classes.RANGE, value);\n\n if (value) {\n // Create start input\n this._startInputElement = createStartInputElement(this._component);\n this._rootElement.insertAdjacentElement('afterbegin', this._startInputElement);\n\n // Ensure the end input is updated to the valueEnd property value now that we are in range mode\n this._endInputElement.valueAsNumber = this._component.valueEnd;\n\n // Create start handle\n const thumbLabel = this._startInputElement.value;\n this._startHandleElement = createStartHandleElement(thumbLabel);\n this._handleContainerElement.insertAdjacentElement('afterbegin', this._startHandleElement);\n this._startHandleThumbElement = getShadowElement(this._component, SLIDER_CONSTANTS.selectors.START_HANDLE_THUMB);\n this._startHandleRippleSurfaceElement = getShadowElement(this._component, SLIDER_CONSTANTS.selectors.START_RIPPLE_SURFACE);\n this._startLabelContentElement = getShadowElement(this._component, SLIDER_CONSTANTS.selectors.START_LABEL_CONTENT);\n\n // Initialize start handle ripple if the end handle ripple has already been initialized\n if (this._ripplesInitialized) {\n this._tryInitializeStartHandleRipple();\n }\n } else {\n this._startInputElement?.remove();\n this._startHandleElement?.remove();\n\n this._startHandleRipple?.destroy();\n this._startHandleRipple = undefined;\n\n this._startInputElement = undefined;\n this._startHandleElement = undefined;\n this._startHandleThumbElement = undefined;\n this._startHandleRippleSurfaceElement = undefined;\n this._startLabelContentElement = undefined;\n }\n }\n\n public setTickmarks(value: boolean): void {\n this._trackElement.classList.toggle(SLIDER_CONSTANTS.classes.TICKMARKS, value);\n }\n\n public setStep(step: number): void {\n const inputs = this._getInputs();\n inputs.forEach(input => input.step = String(step));\n }\n\n public setMin(value: number): void {\n const inputs = this._getInputs();\n inputs.forEach(input => input.min = String(value));\n }\n\n public setMax(value: number): void {\n const inputs = this._getInputs();\n inputs.forEach(input => input.max = String(value));\n }\n\n public setDisabled(value: boolean): void {\n const inputs = this._getInputs();\n inputs.forEach(input => input.disabled = value);\n }\n\n public setReadonly(value: boolean): void {\n const inputs = this._getInputs();\n inputs.forEach(input => input.readOnly = value);\n }\n\n public toggleLabels(value: boolean): void {\n const labels = this._rootElement.querySelectorAll(SLIDER_CONSTANTS.selectors.LABEL);\n labels.forEach(label => label.remove());\n\n this._endLabelContentElement = undefined;\n this._startLabelContentElement = undefined;\n\n if (value) {\n const endLabelEl = createLabel(this._endInputElement.value);\n this._endHandleElement.insertAdjacentElement('beforeend', endLabelEl);\n this._endLabelContentElement = getShadowElement(this._component, SLIDER_CONSTANTS.selectors.END_LABEL_CONTENT);\n \n if (this._startInputElement) {\n const startLabelEl = createLabel(this._startInputElement.value);\n this._startHandleElement?.insertAdjacentElement('beforeend', startLabelEl);\n this._startLabelContentElement = getShadowElement(this._component, SLIDER_CONSTANTS.selectors.START_LABEL_CONTENT);\n }\n }\n }\n\n public setStartAriaLabel(value: string | null): void {\n if (this._startInputElement) {\n toggleAttribute(this._startInputElement, !!value, 'aria-label', value as string);\n }\n }\n\n public setEndAriaLabel(value: string | null): void {\n toggleAttribute(this._endInputElement, !!value, 'aria-label', value as string);\n }\n\n private _getInputs(): HTMLInputElement[] {\n const inputs: HTMLInputElement[] = [];\n if (this._startInputElement) {\n inputs.push(this._startInputElement);\n }\n return [...inputs, this._endInputElement];\n }\n\n private async _deferRippleInitialization(): Promise<void> {\n const type = await userInteractionListener(this._rootElement);\n this._ripplesInitialized = true;\n this._tryInitializeEndHandleRipple(type);\n this._tryInitializeStartHandleRipple(type);\n }\n\n private _tryInitializeEndHandleRipple(type?: string): void {\n this._endHandleRipple = new SliderHandleRipple(this._endHandleRippleSurfaceElement, this._endInputElement);\n if (type === 'focusin' && this._endInputElement.matches(':focus')) {\n this._endHandleRipple.emulateFocus();\n }\n }\n\n private _tryInitializeStartHandleRipple(type?: string): void {\n if (this._startHandleRipple || !this._startInputElement || !this._startHandleRippleSurfaceElement) {\n return;\n }\n this._startHandleRipple = new SliderHandleRipple(this._startHandleRippleSurfaceElement, this._startInputElement);\n if (type === 'focusin' && this._startInputElement?.matches(':focus')) {\n this._startHandleRipple.emulateFocus();\n }\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { ISliderAdapter } from './slider-adapter';\nimport { SLIDER_CONSTANTS, SliderLabelBuilder, ISliderRangeEventData } from './slider-constants';\n\nexport interface ISliderFoundation extends ICustomElementFoundation {\n ariaLabel: string | null;\n ariaLabelStart: string | null;\n ariaLabelEnd: string | null;\n value: number;\n valueStart: number;\n valueEnd: number;\n label: string;\n labelStart: string;\n labelEnd: string;\n labelBuilder: SliderLabelBuilder;\n min: number;\n max: number;\n step: number;\n tickmarks: boolean;\n labeled: boolean;\n range: boolean;\n disabled: boolean;\n readonly: boolean;\n}\n\nexport class SliderFoundation implements ISliderFoundation {\n // State\n private _value = SLIDER_CONSTANTS.numbers.DEFAULT_VALUE;\n private _valueStart = SLIDER_CONSTANTS.numbers.DEFAULT_START_VALUE;\n private _valueEnd = SLIDER_CONSTANTS.numbers.DEFAULT_END_VALUE;\n private _labelStart: string;\n private _labelEnd: string;\n private _labelBuilder: SliderLabelBuilder;\n private _min = 0;\n private _max = 100;\n private _step = SLIDER_CONSTANTS.numbers.DEFAULT_STEP;\n private _tickmarks = false;\n private _labeled = true;\n private _range = false;\n private _disabled = false;\n private _readonly = false;\n\n // Listeners\n private readonly _pointerEnterListener: EventListener;\n private readonly _pointerMoveListener: EventListener;\n private readonly _pointerLeaveListener: EventListener;\n private readonly _changeUpdateListener: EventListener;\n private readonly _focusListener: EventListener;\n\n constructor(private readonly _adapter: ISliderAdapter) {\n this._pointerEnterListener = (evt: PointerEvent) => this._handlePointerEnter(evt);\n this._pointerMoveListener = (evt: PointerEvent) => this._handlePointerMove(evt);\n this._pointerLeaveListener = (evt: PointerEvent) => this._handlePointerLeave(evt);\n this._changeUpdateListener = (evt: InputEvent) => this._handleInputUpdate(evt);\n this._focusListener = (evt: FocusEvent) => this._handleFocus(evt);\n }\n\n public initialize(): void {\n this._adapter.initialize();\n this._applyInputListeners();\n this._update();\n }\n\n public destroy(): void {\n this._adapter.destroy();\n }\n\n private _update(): void {\n const {\n value: renderValue,\n valueStart: renderValueStart,\n valueEnd: renderValueEnd\n } = this._clampMinMax();\n const step = this._step <= 0 ? 1 : this._step;\n const range = Math.max(this._max - this._min, step);\n const startFraction = this._range ? ((renderValueStart ?? this._min) - this._min) / range : 0;\n const valueEnd = this._range ? renderValueEnd : renderValue;\n const endFraction = ((valueEnd ?? this.min) - this.min) / range;\n const tickCount = range / step;\n\n this._adapter.update({ startFraction, endFraction, tickCount });\n this._adapter.syncInputValues(renderValueStart, this._range ? renderValueEnd : renderValue);\n\n if (this._range) {\n this._adapter.tryDetectOverlap();\n }\n\n let labelStart = this._labelStart ?? String(renderValueStart);\n let labelEnd = this._labelEnd ?? String(this._range ? renderValueEnd : renderValue);\n\n if (typeof this._labelBuilder === 'function') {\n if (this._range) {\n labelStart = this._labelBuilder(renderValueStart, 'start');\n labelEnd = this._labelBuilder(renderValueEnd, 'end');\n } else {\n labelEnd = this._labelBuilder(renderValue);\n }\n }\n\n this._adapter.updateLabels(labelStart, labelEnd);\n }\n\n private _clampMinMax(): { value: number; valueStart: number; valueEnd: number } {\n // We make copies of our values so we can mutate them without affecting the original values\n let valueCopy = this._value;\n let valueStartCopy = this._valueStart;\n let valueEndCopy = this._valueEnd;\n\n if (this._range) {\n if (valueStartCopy > this._max) {\n valueStartCopy = this._max;\n } else if (valueStartCopy < this._min) {\n valueStartCopy = this._min;\n }\n\n if (valueEndCopy > this._max) {\n valueEndCopy = this._max;\n } else if (valueEndCopy < this._min) {\n valueEndCopy = this._min;\n }\n } else {\n if (valueCopy > this._max) {\n valueCopy = this._max;\n } else if (this._value < this._min) {\n valueCopy = this._min;\n }\n }\n\n return {\n value: valueCopy,\n valueStart: valueStartCopy,\n valueEnd: valueEndCopy\n };\n }\n\n private _applyInputListeners(): void {\n this._adapter.addInputListener('pointerenter', this._pointerEnterListener);\n this._adapter.addInputListener('pointermove', this._pointerMoveListener);\n this._adapter.addInputListener('pointerleave', this._pointerLeaveListener);\n this._adapter.addInputListener('input', this._changeUpdateListener);\n this._adapter.addInputListener('change', this._changeUpdateListener);\n this._adapter.addInputListener('focus', this._focusListener);\n }\n\n private _handlePointerEnter(evt: PointerEvent): void {\n this._handlePointerMove(evt);\n }\n\n private _handlePointerMove({ target, x, y }: PointerEvent): void {\n const isStart = (target as HTMLInputElement).id === 'start';\n if (isStart) {\n this._adapter.tryHoverStartHandle({ x, y });\n } else {\n this._adapter.tryHoverEndHandle({ x, y });\n }\n }\n\n private _handlePointerLeave(_evt: PointerEvent): void {\n this._adapter.leaveHandleContainer();\n this._adapter.tryBlurStartHandle();\n this._adapter.tryBlurEndHandle();\n }\n\n private _handleInputUpdate(evt: InputEvent): void {\n evt.stopPropagation(); // We don't allow the native input & change events to bubble outside of the component\n\n if (this._disabled || this._readonly) {\n this._adapter.syncInputValues(this._valueStart, this._range ? this._valueEnd : this._value);\n return;\n }\n\n const input = evt.target as HTMLInputElement;\n \n if (this._range) {\n const isStart = input.id === 'start';\n if (isStart) {\n this._valueStart = input.valueAsNumber;\n } else {\n this._valueEnd = input.valueAsNumber;\n }\n\n // Clamp values to keep start and end from going past each other\n if (this._canClamp()) {\n if (isStart) {\n this._valueStart = this._valueEnd;\n } else {\n this._valueEnd = this._valueStart;\n }\n\n // Ensure our underlying inputs are synchronized with our state since they continue moving even when we clamp\n this._adapter.syncInputValues(this._valueStart, this._valueEnd);\n this._update();\n return; // We don't dispatch events when clamping\n }\n } else {\n this._value = input.valueAsNumber;\n }\n\n const type = evt.type === 'change' ? SLIDER_CONSTANTS.events.CHANGE : SLIDER_CONSTANTS.events.INPUT;\n const data: number | ISliderRangeEventData = this._range ? { valueStart: this._valueStart, valueEnd: this._valueEnd } : this._value;\n this._adapter.emitHostEvent(type, data, true);\n this._update();\n }\n\n private _handleFocus(_evt: FocusEvent): void {\n this._adapter.updateHandleLayering();\n }\n\n private _canClamp(): boolean {\n return this._valueStart > this._valueEnd || this._valueEnd < this._valueStart;\n }\n\n public get value(): number {\n return this._value;\n }\n public set value(value: number) {\n if (this._value !== value) {\n this._value = value;\n this._update();\n }\n }\n\n public get valueStart(): number {\n return this._valueStart;\n }\n public set valueStart(value: number) {\n if (this._valueStart !== value) {\n this._valueStart = value;\n this._update();\n }\n }\n\n public get valueEnd(): number {\n return this._valueEnd;\n }\n public set valueEnd(value: number) {\n if (this._valueEnd !== value) {\n this._valueEnd = value;\n this._update();\n }\n }\n\n public get label(): string {\n return this.labelEnd;\n }\n public set label(value: string) {\n this.labelEnd = value;\n }\n\n public get labelStart(): string {\n return this._labelStart;\n }\n public set labelStart(value: string) {\n if (this._labelStart !== value) {\n this._labelStart = value;\n this._adapter.updateLabels(this._labelStart, this._labelEnd);\n }\n }\n\n public get labelEnd(): string {\n return this._labelEnd;\n }\n public set labelEnd(value: string) {\n if (this._labelEnd !== value) {\n this._labelEnd = value;\n this._adapter.updateLabels(this._labelStart, this._labelEnd);\n }\n }\n\n public get labelBuilder(): SliderLabelBuilder {\n return this._labelBuilder;\n }\n public set labelBuilder(cb: SliderLabelBuilder) {\n this._labelBuilder = cb;\n this._update();\n }\n\n public get min(): number {\n return this._min;\n }\n public set min(value: number) {\n if (this._min !== value) {\n this._min = value;\n this._adapter.setMin(this._min);\n this._update();\n this._adapter.setHostAttribute(SLIDER_CONSTANTS.attributes.MIN, String(this._min));\n }\n }\n\n public get max(): number {\n return this._max;\n }\n public set max(value: number) {\n if (this._max !== value) {\n this._max = value;\n this._adapter.setMax(this._max);\n this._update();\n this._adapter.setHostAttribute(SLIDER_CONSTANTS.attributes.MAX, String(this._max));\n }\n }\n\n public get step(): number {\n return this._step;\n }\n public set step(value: number) {\n if (this._step !== value) {\n this._step = value;\n this._adapter.setStep(this._step);\n this._update();\n this._adapter.setHostAttribute(SLIDER_CONSTANTS.attributes.STEP, String(this._step));\n }\n }\n\n public get tickmarks(): boolean {\n return this._tickmarks;\n }\n public set tickmarks(value: boolean) {\n if (this._tickmarks !== value) {\n this._tickmarks = value;\n this._adapter.setTickmarks(this._tickmarks);\n this._adapter.toggleHostAttribute(SLIDER_CONSTANTS.attributes.TICKMARKS, this._tickmarks);\n }\n }\n\n public get labeled(): boolean {\n return this._labeled;\n }\n public set labeled(value: boolean) {\n if (this._labeled !== value) {\n this._labeled = value;\n this._adapter.toggleLabels(this._labeled);\n this._update();\n this._adapter.toggleHostAttribute(SLIDER_CONSTANTS.attributes.LABELED, this._labeled);\n }\n }\n\n public get range(): boolean {\n return this._range;\n }\n public set range(value: boolean) {\n if (this._range !== value) {\n this._range = value;\n this._adapter.setRange(this._range);\n if (this._range) {\n this._applyInputListeners();\n }\n this._update();\n this._adapter.toggleHostAttribute(SLIDER_CONSTANTS.attributes.RANGE, this._range);\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._adapter.setDisabled(value);\n this._adapter.toggleHostAttribute(SLIDER_CONSTANTS.attributes.DISABLED, this._disabled);\n }\n }\n\n public get readonly(): boolean {\n return this._readonly;\n }\n public set readonly(value: boolean) {\n if (this._readonly !== value) {\n this._readonly = value;\n this._adapter.setReadonly(value);\n this._adapter.toggleHostAttribute(SLIDER_CONSTANTS.attributes.READONLY, this._readonly);\n }\n }\n\n public set ariaLabel(value: string | null) {\n this.ariaLabelEnd = value;\n }\n\n public set ariaLabelStart(value: string | null) {\n this._adapter.setStartAriaLabel(value);\n }\n\n public set ariaLabelEnd(value: string | null) {\n this._adapter.setEndAriaLabel(value);\n }\n}\n", "import { attachShadowTemplate, coerceBoolean, coerceNumber, CustomElement, FoundationProperty, toggleAttribute } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { FocusIndicatorComponent } from '../focus-indicator/focus-indicator';\nimport { SliderAdapter } from './slider-adapter';\nimport { SLIDER_CONSTANTS, SliderLabelBuilder, ISliderRangeEventData } from './slider-constants';\nimport { SliderFoundation } from './slider-foundation';\n\nconst template = '<template><div part=\\\"root\\\" class=\\\"forge-slider\\\"><input type=\\\"range\\\" class=\\\"end\\\" id=\\\"end\\\" min=\\\"0\\\" max=\\\"100\\\" step=\\\"1\\\" aria-valuetext=\\\"0\\\"><div class=\\\"track\\\" part=\\\"track\\\"></div><div class=\\\"handle-container-padded\\\"><div class=\\\"handle-container-block\\\"><div class=\\\"handle-container\\\"><div class=\\\"handle end\\\" part=\\\"handle-end\\\"><forge-focus-indicator target=\\\"end\\\"></forge-focus-indicator><div class=\\\"handle-thumb\\\" part=\\\"handle-end-thumb\\\"></div><span class=\\\"handle-ripple\\\"></span><div class=\\\"handle-label\\\" part=\\\"handle-end-label\\\"><span class=\\\"handle-label-content\\\" part=\\\"handle-end-label-content\\\"></span></div></div></div></div></div></div></template>';\nconst styles = ':host{display:-webkit-inline-box;display:inline-flex;vertical-align:middle;min-inline-size:100%}:host([hidden]){display:none}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-slider{--_start-fraction:0;--_end-fraction:0;--_tick-count:100;--_track-height:var(--forge-slider-track-height, 4px);--_active-track-color:var(--forge-slider-active-track-color, var(--mdc-theme-primary, #3f51b5));--_active-track-height:var(--forge-slider-active-track-height, var(--_track-height));--_active-track-shape:var(--forge-slider-active-track-shape, 9999px);--_disabled-active-track-color:var(--forge-slider-disabled-active-track-color, #9e9e9e);--_disabled-active-track-opacity:var(--forge-slider-disabled-active-track-opacity, 0.38);--_disabled-handle-color:var(--forge-slider-disabled-handle-color, #9e9e9e);--_disabled-inactive-track-color:var(--forge-slider-disabled-inactive-track-color, #9e9e9e);--_disabled-inactive-track-opacity:var(--forge-slider-disabled-inactive-track-opacity, 0.12);--_focus-handle-color:var(--forge-slider-focus-handle-color, var(--mdc-theme-primary, #3f51b5));--_handle-color:var(--forge-slider-handle-color, var(--mdc-theme-primary, #3f51b5));--_handle-height:var(--forge-slider-handle-height, 20px);--_handle-shape:var(--forge-slider-handle-shape, 9999px);--_handle-width:var(--forge-slider-handle-width, 20px);--_hover-handle-color:var(--forge-slider-hover-handle-color, var(--mdc-theme-primary, #3f51b5));--_inactive-track-color-fallback:var(--forge-slider-inactive-track-color, #d5d8ee);--_inactive-track-color:var(--forge-slider-inactive-track-color, color-mix(in srgb, var(--mdc-theme-primary, #3f51b5) 24%, transparent));--_inactive-track-height:var(--forge-slider-inactive-track-height, var(--_track-height));--_inactive-track-shape:var(--forge-slider-inactive-track-shape, 9999px);--_label-container-color:var(--forge-slider-label-container-color, var(--mdc-theme-primary, #3f51b5));--_label-container-height:var(--forge-slider-label-container-height, 28px);--_label-label-text-color:var(--forge-slider-label-label-text-color, var(--mdc-theme-on-primary, #ffffff));--_pressed-handle-color:var(--forge-slider-pressed-handle-color, var(--mdc-theme-primary, #3f51b5));--_state-layer-size:var(--forge-slider-state-layer-size, 40px);--_with-overlap-handle-outline-color:var(--forge-slider-with-overlap-handle-outline-color, var(--mdc-theme-on-primary, #ffffff));--_with-overlap-handle-outline-width:var(--forge-slider-with-overlap-handle-outline-width, 1px);--_with-tick-marks-active-container-color:var(--forge-slider-with-tick-marks-active-container-color, var(--mdc-theme-on-primary, #ffffff));--_with-tick-marks-container-size:var(--forge-slider-with-tick-marks-container-size, 2px);--_with-tick-marks-disabled-active-container-color:var(--forge-slider-with-tick-marks-disabled-active-container-color, var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87)));--_with-tick-marks-disabled-inactive-container-color:var(--forge-slider-with-tick-marks-disabled-inactive-container-color, color-mix(in srgb, var(--mdc-theme-on-primary, #ffffff) 50%, transparent));--_with-tick-marks-inactive-container-color:var(--forge-slider-with-tick-marks-inactive-container-color, var(--mdc-theme-primary, #3f51b5));-webkit-box-flex:1;flex:1;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;block-size:var(--_state-layer-size);pointer-events:none;touch-action:none}.forge-slider.range :host-context([dir=rtl]) input.start{-webkit-clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))));clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))))}.forge-slider.range :host([dir=rtl]) input.start{-webkit-clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))));clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))))}.forge-slider.range input.start:dir(rtl){-webkit-clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))));clip-path:inset(0 0 0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))))}.forge-slider.range input.start{-webkit-clip-path:inset(0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))) 0 0);clip-path:inset(0 calc(100% - (var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2))) 0 0)}.forge-slider.range input.end{-webkit-clip-path:inset(0 0 0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)));clip-path:inset(0 0 0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)))}.forge-slider.range :host-context([dir=rtl]) input.end{-webkit-clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0);clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0)}.forge-slider.range :host([dir=rtl]) input.end{-webkit-clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0);clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0)}.forge-slider.range input.end:dir(rtl){-webkit-clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0);clip-path:inset(0 calc(var(--_state-layer-size)/ 2 + (100% - var(--_state-layer-size)) * (var(--_start-fraction) + (var(--_end-fraction) - var(--_start-fraction))/ 2)) 0 0)}.track{position:absolute;inset:0;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.track::after,.track::before{content:\\\"\\\";position:absolute;inset-inline-start:calc(var(--_state-layer-size)/ 2 - var(--_with-tick-marks-container-size));inset-inline-end:calc(var(--_state-layer-size)/ 2 - var(--_with-tick-marks-container-size));background-size:calc((100% - var(--_with-tick-marks-container-size) * 2)/ var(--_tick-count)) 100%}.track::before{block-size:var(--_inactive-track-height);border-radius:var(--_inactive-track-shape);background-color:var(--_inactive-track-color-fallback)}@supports (background-color:color-mix(in srgb,red 50%,transparent)){.track::before{background-color:var(--_inactive-track-color)}}.track::after{block-size:var(--_active-track-height);border-radius:var(--_active-track-shape);-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))) 0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))) 0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)));background-color:var(--_active-track-color)}.track.tickmarks::before{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-inactive-container-color) 0,var(--_with-tick-marks-inactive-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}.track.tickmarks::after{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-active-container-color) 0,var(--_with-tick-marks-active-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}.handle-container-block,.handle-container-padded{position:relative;block-size:100%;inline-size:100%}.handle-container-padded{padding-inline:calc(var(--_state-layer-size)/ 2)}.handle-container{position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:calc(100% * var(--_start-fraction));inline-size:calc(100% * (var(--_end-fraction) - var(--_start-fraction)))}.handle{position:absolute;block-size:var(--_state-layer-size);inline-size:var(--_state-layer-size);border-radius:var(--_handle-shape);display:grid;place-items:center}.handle.start{inset-inline-start:calc(0px - var(--_state-layer-size)/ 2)}.handle.end{inset-inline-end:calc(0px - var(--_state-layer-size)/ 2)}.handle-thumb{position:absolute;height:var(--_handle-height);width:var(--_handle-width);border-radius:var(--_handle-shape);background:var(--_handle-color);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.handle-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;padding:4px;place-items:center;border-radius:9999px;color:var(--_label-label-text-color);font-weight:500;white-space:nowrap;inset-block-end:100%;min-inline-size:var(--_label-container-height);min-block-size:var(--_label-container-height);background:var(--_label-container-color);-webkit-transition:-webkit-transform .1s cubic-bezier(.2, 0, 0, 1);transition:-webkit-transform .1s cubic-bezier(.2, 0, 0, 1);transition:transform .1s cubic-bezier(.2, 0, 0, 1);transition:transform .1s cubic-bezier(.2, 0, 0, 1),-webkit-transform .1s cubic-bezier(.2, 0, 0, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transform:scale(0);transform:scale(0)}.handle-label::after,.handle-label::before{content:\\\"\\\";position:absolute;display:block;background:inherit}.handle-label::before{inline-size:calc(var(--_label-container-height)/ 2);block-size:calc(var(--_label-container-height)/ 2);bottom:calc(var(--_label-container-height)/ -10);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.handle-label::after{inset:0;border-radius:inherit}.handle-label-content{z-index:1}.handle-ripple{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;-webkit-box-sizing:content-box;box-sizing:content-box;width:100%;height:100%}.handle-ripple::after,.handle-ripple::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\"}.handle-ripple::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.handle-ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.handle-ripple.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.handle-ripple.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.handle-ripple.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.handle-ripple.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.handle-ripple.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.handle-ripple::after,.handle-ripple::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.handle-ripple.mdc-ripple-upgraded::after,.handle-ripple.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.handle-ripple.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.handle-ripple::after,.handle-ripple::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.handle-ripple.mdc-ripple-surface--hover::before,.handle-ripple:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.handle-ripple.mdc-ripple-upgraded--background-focused::before,.handle-ripple:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.handle-ripple:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.handle-ripple:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.handle-ripple.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.handle-container.hover .handle-thumb{background:var(--_hover-handle-color)}:host(:not([disabled])) input.end:active~.handle-container-padded .handle.end>.handle-thumb,:host(:not([disabled])) input.start:active~.handle-container-padded .handle.start>.handle-thumb{background:var(--_pressed-handle-color)}:host([disabled]) .handle-thumb{background:var(--_disabled-handle-color);-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}:host([disabled]) .handle-label{background:var(--_disabled-handle-color)}:host([disabled]) .track::before{opacity:calc(1 / var(--_disabled-active-track-opacity) * var(--_disabled-inactive-track-opacity));background-color:var(--_disabled-inactive-track-color)}:host([disabled]) .track::after{background-color:var(--_disabled-active-track-color)}:host([disabled]) .track.tickmarks::before{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-disabled-active-container-color) 0,var(--_with-tick-marks-disabled-active-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}:host([disabled]) .track.tickmarks::after{background-image:radial-gradient(circle at var(--_with-tick-marks-container-size) center,var(--_with-tick-marks-disabled-inactive-container-color) 0,var(--_with-tick-marks-disabled-inactive-container-color) calc(var(--_with-tick-marks-container-size)/ 2),transparent calc(var(--_with-tick-marks-container-size)/ 2))}:host([disabled]) input[type=range]{cursor:not-allowed}:host-context([dir=rtl]) .track::after{-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))))}:host([dir=rtl]) .track::after{-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))))}.track:dir(rtl)::after{-webkit-clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))));clip-path:inset(0 calc(var(--_with-tick-marks-container-size) * min(var(--_start-fraction) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * var(--_start-fraction)) 0 calc(var(--_with-tick-marks-container-size) * min((1 - var(--_end-fraction)) * 1000000000,1) + (100% - var(--_with-tick-marks-container-size) * 2) * (1 - var(--_end-fraction))))}input.end:focus~.handle-container-padded .handle.end>.handle-thumb,input.start:focus~.handle-container-padded .handle.start>.handle-thumb{background:var(--_focus-handle-color)}.on-top.overlapping .handle-label,.on-top.overlapping .handle-label::before,.on-top.overlapping .handle-thumb{border:var(--_with-overlap-handle-outline-color) solid var(--_with-overlap-handle-outline-width)}.handle-container.hover .handle-label,:host(:focus-within) .handle-label,:where(:has(input:active)) .handle-label{-webkit-transform:scale(1);transform:scale(1)}input[type=range]{opacity:0;-webkit-tap-highlight-color:transparent;position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;width:100%;margin:0;background:0 0;cursor:pointer;pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=range]:focus{outline:0}input[type=range]::-webkit-slider-runnable-track{-webkit-appearance:none}input[type=range]::-moz-range-track{-moz-appearance:none;appearance:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;block-size:var(--_state-layer-size);inline-size:var(--_state-layer-size);-webkit-transform:scaleX(0);transform:scaleX(0);opacity:0;z-index:2}input[type=range]::-moz-range-thumb{-moz-appearance:none;appearance:none;block-size:var(--_state-layer-size);inline-size:var(--_state-layer-size);transform:scaleX(0);opacity:0;z-index:2}.on-top{z-index:1}@media (prefers-reduced-motion){.handle-label{-webkit-transition-duration:0;transition-duration:0}}forge-focus-indicator{--forge-focus-indicator-shape:50%;--forge-focus-indicator-outward-offset:0px}';\n\nexport interface ISliderComponent extends IBaseComponent {\n value: number;\n valueStart: number;\n valueEnd: number;\n label: string;\n labelStart: string;\n labelEnd: string;\n labelBuilder: SliderLabelBuilder;\n min: number;\n max: number;\n step: number;\n range: boolean;\n tickmarks: boolean;\n labeled: boolean;\n disabled: boolean;\n readonly: boolean;\n form: HTMLFormElement | null;\n name: string;\n nameStart: string;\n nameEnd: string;\n labels: NodeList;\n internals: ElementInternals;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-slider': ISliderComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-slider-input': CustomEvent<number | ISliderRangeEventData>;\n 'forge-slider-change': CustomEvent<number | ISliderRangeEventData>;\n }\n}\n\n/**\n * @tag forge-slider\n * \n * @summary Sliders allow users to make selections from a range of values.\n * \n * @description Use sliders to enable users to select a value from a continuous or discrete range of values.\n * \n * @property {number} value - The current value of the slider.\n * @property {number} valueStart - The current start value of the slider.\n * @property {number} valueEnd - The current end value of the slider.\n * @property {string} label - The label text for the slider handle.\n * @property {string} labelStart - The label text for the start slider handle.\n * @property {string} labelEnd - The label text for the end slider handle.\n * @property {SliderLabelBuilder} labelBuilder - A function that returns a label for the slider handle.\n * @property {number} min - The minimum value of the slider.\n * @property {number} max - The maximum value of the slider.\n * @property {number} step - The step value of the slider.\n * @property {boolean} range - Controls range mode.\n * @property {boolean} tickmarks - Controls if tickmarks are visible.\n * @property {boolean} labeled - Controls if labels are visible.\n * @property {boolean} disabled - Controls if the slider is disabled.\n * @property {boolean} readonly - Controls if the slider is readonly.\n * @property {string} name - The form control name.\n * @property {string} nameStart - The form control name for the start handle in range mode.\n * @property {string} nameEnd - The form control name for the end handle in range mode.\n * \n * @attribute {string} value - Sets the current value of the slider.\n * @attribute {string} value-start - Sets the current start value of the slider in range mode.\n * @attribute {string} value-end - Sets the current end value of the slider in range mode.\n * @attribute {string} label - Sets the label text for the slider handle.\n * @attribute {string} label-start - Sets the label text for the start slider handle in range mode.\n * @attribute {string} label-end - Sets the label text for the end slider handle in range mode.\n * @attribute {string} min - Sets the minimum value of the slider.\n * @attribute {string} max - Sets the maximum value of the slider.\n * @attribute {string} step - Sets the step value of the slider.\n * @attribute {string} tickmarks - Controls if tickmarks are visible.\n * @attribute {string} labeled - Controls if labels are visible.\n * @attribute {string} range - Controls range mode.\n * @attribute {string} disabled - Controls if the slider is disabled.\n * @attribute {string} readonly - Controls if the slider is readonly.\n * @attribute {string} name - Controls the form control name.\n * @attribute {string} name-start - Controls the form control name for the start handle in range mode.\n * @attribute {string} name-end - Controls the form control name for the end handle in range mode.\n * \n * @event forge-slider-input {CustomEvent} - Dispatches when the slider value changes.\n * @event forge-slider-change {CustomEvent} - Dispatches when the slider value changes and the value has been committed.\n * \n * @cssproperty --mdc-theme-primary - The primary color of the slider.\n * @cssproperty --mdc-theme-on-primary - The color of elements placed on top of the primary color (the label text for example).\n * @cssproperty --forge-slider-track-height - The height of the track.\n * @cssproperty --forge-slider-active-track-color - The color of the active track.\n * @cssproperty --forge-slider-active-track-height - The height of the active track.\n * @cssproperty --forge-slider-active-track-shape - The shape of the active track.\n * @cssproperty --forge-slider-disabled-active-track-color - The color of the active track when disabled.\n * @cssproperty --forge-slider-disabled-active-track-opacity - The opacity of the active track when disabled.\n * @cssproperty --forge-slider-disabled-handle-color - The color of the slider handle when disabled.\n * @cssproperty --forge-slider-disabled-inactive-track-color - The color of the inactive track when disabled.\n * @cssproperty --forge-slider-disabled-inactive-track-opacity - The opacity of the inactive track when disabled.\n * @cssproperty --forge-slider-focus-handle-color - The color of the slider handle when focused.\n * @cssproperty --forge-slider-handle-color - The color of the slider handle.\n * @cssproperty --forge-slider-handle-height - The height of the slider handle.\n * @cssproperty --forge-slider-handle-width - The width of the slider handle.\n * @cssproperty --forge-slider-handle-shape - The shape of the slider handle.\n * @cssproperty --forge-slider-hover-handle-color - The color of the slider handle when hovered.\n * @cssproperty --forge-slider-inactive-track-color - The color of the inactive track.\n * @cssproperty --forge-slider-inactive-track-height - The height of the inactive track.\n * @cssproperty --forge-slider-inactive-track-shape - The shape of the inactive track.\n * @cssproperty --forge-slider-label-container-color - The color of the label container.\n * @cssproperty --forge-slider-label-container-height - The height of the label container.\n * @cssproperty --forge-slider-label-label-text-color - The color of the label text.\n * @cssproperty --forge-slider-pressed-handle-color - The color of the slider handle when pressed.\n * @cssproperty --forge-slider-state-layer-size - The size of the state layer.\n * @cssproperty --forge-slider-with-overlap-handle-outline-color - The color of the slider handle outline when overlapping.\n * @cssproperty --forge-slider-with-overlap-handle-outline-width - The width of the slider handle outline when overlapping.\n * @cssproperty --forge-slider-with-tick-marks-active-container-color - The color of the active tick mark container when tick marks are visible.\n * @cssproperty --forge-slider-with-tick-marks-container-size - The size of the tick mark container when tick marks are visible.\n * @cssproperty --forge-slider-with-tick-marks-disabled-active-container-color - The color of the active tick mark container when tick marks are visible and disabled.\n * @cssproperty --forge-slider-with-tick-marks-disabled-inactive-container-color - The color of the inactive tick mark container when tick marks are visible and disabled.\n * @cssproperty --forge-slider-with-tick-marks-inactive-container-color - The color of the inactive tick mark container when tick marks are visible.\n * \n * @csspart slider - Styles the slider container element.\n * @csspart track - Styles the track element.\n * @csspart handle-end - Styles the end handle element.\n * @csspart handle-end-thumb - Styles the end handle thumb element.\n * @csspart handle-end-label - Styles the end handle label element.\n * @csspart handle-end-label-content - Styles the end handle label content element.\n * @csspart handle-start - Styles the start handle element.\n * @csspart handle-start-thumb - Styles the start handle thumb element.\n * @csspart handle-start-label - Styles the start handle label element.\n * @csspart handle-start-label-content - Styles the start handle label content element.\n */\n@CustomElement({\n name: SLIDER_CONSTANTS.elementName,\n dependencies: [\n FocusIndicatorComponent\n ]\n})\nexport class SliderComponent extends BaseComponent implements ISliderComponent {\n public static get observedAttributes(): string[] {\n return [\n SLIDER_CONSTANTS.attributes.ARIA_LABEL,\n SLIDER_CONSTANTS.attributes.ARIA_LABEL_START,\n SLIDER_CONSTANTS.attributes.ARIA_LABEL_END,\n SLIDER_CONSTANTS.attributes.VALUE,\n SLIDER_CONSTANTS.attributes.VALUE_START,\n SLIDER_CONSTANTS.attributes.VALUE_END,\n SLIDER_CONSTANTS.attributes.LABEL,\n SLIDER_CONSTANTS.attributes.LABEL_START,\n SLIDER_CONSTANTS.attributes.LABEL_END,\n SLIDER_CONSTANTS.attributes.MAX,\n SLIDER_CONSTANTS.attributes.MIN,\n SLIDER_CONSTANTS.attributes.STEP,\n SLIDER_CONSTANTS.attributes.TICKMARKS,\n SLIDER_CONSTANTS.attributes.LABELED,\n SLIDER_CONSTANTS.attributes.RANGE,\n SLIDER_CONSTANTS.attributes.DISABLED,\n SLIDER_CONSTANTS.attributes.READONLY\n ];\n }\n\n public static formAssociated = true;\n\n public get form(): HTMLFormElement | null {\n return this.internals.form;\n }\n\n public get labels(): NodeList {\n return this.internals.labels;\n }\n\n public get name(): string {\n return this.getAttribute('name') ?? '';\n }\n public set name(value: string) {\n toggleAttribute(this, !!value, 'name', value ?? '');\n }\n\n public get nameStart(): string {\n return this.getAttribute('name-start') ?? this.name;\n }\n public set nameStart(value: string) {\n toggleAttribute(this, !!value, 'name-start', value ?? '');\n }\n\n public get nameEnd(): string {\n return this.getAttribute('name-end') ?? this.nameStart;\n }\n public set nameEnd(value: string) {\n toggleAttribute(this, !!value, 'name-end', value ?? '');\n }\n\n public readonly internals: ElementInternals;\n private readonly _foundation: SliderFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this.internals = this.attachInternals();\n this._foundation = new SliderFoundation(new SliderAdapter(this));\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.destroy();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case SLIDER_CONSTANTS.attributes.ARIA_LABEL:\n this._foundation.ariaLabel = newValue;\n break;\n case SLIDER_CONSTANTS.attributes.ARIA_LABEL_START:\n this._foundation.ariaLabelStart = newValue;\n break;\n case SLIDER_CONSTANTS.attributes.ARIA_LABEL_END:\n this._foundation.ariaLabelEnd = newValue;\n break;\n case SLIDER_CONSTANTS.attributes.VALUE:\n this.value = coerceNumber(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.VALUE_START:\n this.valueStart = coerceNumber(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.VALUE_END:\n this.valueEnd = coerceNumber(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.LABEL:\n this.label = newValue;\n break;\n case SLIDER_CONSTANTS.attributes.LABEL_START:\n this.labelStart = newValue;\n break;\n case SLIDER_CONSTANTS.attributes.LABEL_END:\n this.labelEnd = newValue;\n break;\n case SLIDER_CONSTANTS.attributes.MIN:\n this.min = coerceNumber(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.MAX:\n this.max = coerceNumber(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.STEP:\n this.step = coerceNumber(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.TICKMARKS:\n this.tickmarks = coerceBoolean(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.LABELED:\n this.labeled = coerceBoolean(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.RANGE:\n this.range = coerceBoolean(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n case SLIDER_CONSTANTS.attributes.READONLY:\n this.readonly = coerceBoolean(newValue);\n break;\n }\n }\n\n public formResetCallback(): void {\n if (this._foundation.range) {\n const valueStart = this.getAttribute('value-start');\n this.valueStart = valueStart !== null ? Number(valueStart) : SLIDER_CONSTANTS.numbers.DEFAULT_START_VALUE;\n const valueEnd = this.getAttribute('value-end');\n this.valueEnd = valueEnd !== null ? Number(valueEnd) : SLIDER_CONSTANTS.numbers.DEFAULT_END_VALUE;\n return;\n }\n const value = this.getAttribute('value');\n this.value = value !== null ? Number(value) : SLIDER_CONSTANTS.numbers.DEFAULT_VALUE;\n }\n\n public formStateRestoreCallback(state: string | Array<[string, string]> | null): void {\n if (state && state[0] instanceof FormData) {\n const values = Array.from(state[0]);\n const [[, valueStart], [, valueEnd]] = values;\n this.valueStart = Number(valueStart);\n this.valueEnd = Number(valueEnd);\n this.range = true;\n return;\n }\n\n this.value = Number(state);\n this.range = false;\n }\n\n @FoundationProperty()\n public declare value: number;\n\n @FoundationProperty()\n public declare valueStart: number;\n\n @FoundationProperty()\n public declare valueEnd: number;\n\n @FoundationProperty()\n public declare label: string;\n\n @FoundationProperty()\n public declare labelStart: string;\n\n @FoundationProperty()\n public declare labelEnd: string;\n\n @FoundationProperty()\n public declare labelBuilder: SliderLabelBuilder;\n\n @FoundationProperty()\n public declare min: number;\n\n @FoundationProperty()\n public declare max: number;\n\n @FoundationProperty()\n public declare step: number;\n\n @FoundationProperty()\n public declare tickmarks: boolean;\n \n @FoundationProperty()\n public declare labeled: boolean;\n\n @FoundationProperty()\n public declare range: boolean;\n\n @FoundationProperty()\n public declare disabled: boolean;\n\n @FoundationProperty()\n public declare readonly: boolean;\n}\n", "import { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core';\nimport { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { ISliderComponent } from '../slider';\nimport { ISliderRangeEventData, SLIDER_CONSTANTS } from './slider-constants';\n\nexport type SliderComponentDelegateProps = Partial<ISliderComponent>;\nexport interface ISliderComponentDelegateOptions extends IFormFieldComponentDelegateOptions {}\nexport interface ISliderComponentDelegateConfig extends IBaseComponentDelegateConfig<ISliderComponent, ISliderComponentDelegateOptions> {}\n\nexport class SliderComponentDelegate extends FormFieldComponentDelegate<ISliderComponent, ISliderComponentDelegateOptions> {\n constructor(config?: ISliderComponentDelegateConfig) {\n super(config);\n }\n\n public get value(): number {\n return this._element.value;\n }\n public set value(value: number) {\n this._element.value = value;\n }\n\n public get valueStart(): number {\n return this._element.valueStart;\n }\n public set valueStart(value: number) {\n this._element.valueStart = value;\n }\n\n public get valueEnd(): number {\n return this._element.valueEnd;\n }\n public set valueEnd(value: number) {\n this._element.valueEnd = value;\n }\n\n public get disabled(): boolean {\n return this._element.disabled;\n }\n public set disabled(value: boolean) {\n this._element.disabled = value;\n }\n\n public get min(): number {\n return this._element.min;\n }\n public set min(value: number) {\n this._element.min = value;\n }\n\n public get max(): number {\n return this._element.max;\n }\n public set max(value: number) {\n this._element.max = value;\n }\n\n public get step(): number {\n return this._element.step;\n }\n\n public get range(): boolean {\n return this._element.range;\n }\n public set range(value: boolean) {\n this._element.range = value;\n }\n\n public get tickmarks(): boolean {\n return this._element.tickmarks;\n }\n public set tickmarks(value: boolean) {\n this._element.tickmarks = value;\n }\n\n public get labeled(): boolean {\n return this._element.labeled;\n }\n public set labeled(value: boolean) {\n this._element.labeled = value;\n }\n\n public get labelBuilder(): (value: number, which?: 'start' | 'end') => string {\n return this._element.labelBuilder;\n }\n public set labelBuilder(value: (value: number, which?: 'start' | 'end') => string) {\n this._element.labelBuilder = value;\n }\n\n public onInput(listener: (value: number | ISliderRangeEventData) => void): void {\n this._element.addEventListener('forge-slider-input', ({ detail }: CustomEvent<number | ISliderRangeEventData>) => listener(detail));\n }\n\n public onChange(listener: (value: number | ISliderRangeEventData) => void): void {\n this._element.addEventListener('forge-slider-change', ({ detail }: CustomEvent<number | ISliderRangeEventData>) => listener(detail));\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._element.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._element.addEventListener('blur', evt => listener(evt));\n }\n\n protected _build(): ISliderComponent {\n return document.createElement(SLIDER_CONSTANTS.elementName);\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { SliderComponent } from './slider';\n\nexport * from './slider-constants';\nexport * from './slider';\nexport * from './slider-component-delegate';\n\nexport function defineSliderComponent(): void {\n defineCustomElement(SliderComponent);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["elementName", "COMPONENT_NAME_PREFIX", "attributes", "selectors", "classes", "events", "cssCustomProperties", "numbers", "SLIDER_CONSTANTS", "SliderHandleRipple", "_root", "_inputElement", "adapter", "__spreadProps", "__spreadValues", "ForgeRipple", "evtType", "handler", "className", "addClass", "removeClass", "varName", "value", "ForgeRippleFoundation", "_a", "createStartInputElement", "component", "startInput", "SLIDER_CONSTANTS", "createStartHandleElement", "thumbLabel", "startHandle", "startHandleFocusIndicator", "startHandleThumb", "startHandleLabel", "startHandleLabelContent", "startHandleRipple", "createLabel", "text", "labelElement", "labelContentElement", "SliderAdapter", "BaseAdapter", "component", "getShadowElement", "SLIDER_CONSTANTS", "_a", "_b", "type", "listener", "input", "startFraction", "endFraction", "tickCount", "labelStart", "labelEnd", "isEndFocused", "toggleClass", "coords", "_c", "_d", "isPointerOverElement", "isOverlapping", "elementsOverlapping", "valueStart", "valueEnd", "data", "value", "createStartInputElement", "thumbLabel", "createStartHandleElement", "step", "label", "endLabelEl", "createLabel", "startLabelEl", "toggleAttribute", "inputs", "userInteractionListener", "SliderHandleRipple", "SliderFoundation", "_adapter", "SLIDER_CONSTANTS", "evt", "_a", "_b", "renderValue", "renderValueStart", "renderValueEnd", "step", "range", "startFraction", "valueEnd", "endFraction", "tickCount", "labelStart", "labelEnd", "valueCopy", "valueStartCopy", "valueEndCopy", "target", "x", "y", "_evt", "input", "isStart", "type", "data", "value", "cb", "template", "styles", "SliderComponent", "BaseComponent", "attachShadowTemplate", "SliderFoundation", "SliderAdapter", "SLIDER_CONSTANTS", "_a", "value", "toggleAttribute", "name", "oldValue", "newValue", "coerceNumber", "coerceBoolean", "valueStart", "valueEnd", "state", "values", "__decorateClass", "FoundationProperty", "CustomElement", "FocusIndicatorComponent", "SliderComponentDelegate", "FormFieldComponentDelegate", "config", "value", "listener", "detail", "evt", "SLIDER_CONSTANTS", "defineSliderComponent", "defineCustomElement", "SliderComponent"]
7
+ }