@spectrum-web-components/slider 0.14.0-devmode.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["HandleController.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2021 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { html, TemplateResult } from '@spectrum-web-components/base';\nimport {\n classMap,\n ifDefined,\n styleMap,\n} from '@spectrum-web-components/base/src/directives.js';\nimport { MutationController } from '@lit-labs/observers/mutation_controller.js';\nimport { Slider } from './Slider.js';\nimport {\n Controller,\n SliderHandle,\n SliderNormalization,\n} from './SliderHandle.js';\n\ninterface HandleReference {\n handle: HTMLElement;\n input: HTMLInputElement;\n}\n\ninterface HandleComponents extends HandleReference {\n model: SliderHandle;\n}\n\ninterface RangeAndClamp {\n range: { min: number; max: number };\n clamp: { min: number; max: number };\n}\ninterface ModelValue extends RangeAndClamp {\n name: string;\n value: number;\n normalizedValue: number;\n step: number;\n highlight: boolean;\n ariaLabel?: string;\n normalization: SliderNormalization;\n handle: SliderHandle;\n}\n\ninterface InputWithModel extends HTMLInputElement {\n model: ModelValue;\n}\n\ninterface DataFromPointerEvent {\n resolvedInput: boolean;\n input: InputWithModel;\n model?: ModelValue;\n}\n\nexport interface HandleValueDictionary {\n [key: string]: number;\n}\n\nexport class HandleController implements Controller {\n private host!: Slider;\n private handles: Map<string, SliderHandle> = new Map();\n private model: ModelValue[] = [];\n private handleOrder: string[] = [];\n private draggingHandle?: SliderHandle;\n private handleRefMap?: WeakMap<SliderHandle, HandleReference>;\n\n constructor(host: Slider) {\n this.host = host;\n\n new MutationController(this.host, {\n config: {\n subtree: true,\n childList: true,\n },\n callback: () => {\n this.extractModelFromLightDom();\n },\n });\n\n this.extractModelFromLightDom();\n }\n\n public get values(): HandleValueDictionary {\n const result: HandleValueDictionary = {};\n for (const model of this.handles.values()) {\n result[model.handleName] = model.value;\n }\n return result;\n }\n\n public get size(): number {\n return this.handles.size;\n }\n\n public inputForHandle(handle: SliderHandle): HTMLInputElement | undefined {\n if (this.handles.has(handle.handleName)) {\n const { input } = this.getHandleElements(handle);\n return input;\n }\n /* c8 ignore next 2 */\n throw new Error(`No input for handle \"${handle.name}\"`);\n }\n\n public requestUpdate(): void {\n if (this.host.hasUpdated) {\n this.host.requestUpdate();\n }\n }\n\n /**\n * It is possible for value attributes to be set programmatically. The <input>\n * for a particular slider needs to have an opportunity to validate any such\n * values\n *\n * @param handle Handle who's value needs validation\n */\n public setValueFromHandle(handle: SliderHandle): void {\n const elements = this.getHandleElements(handle);\n /* c8 ignore next */\n if (!elements) return;\n\n const { input } = elements;\n if (input.valueAsNumber === handle.value) {\n if (handle.dragging) {\n handle.dispatchInputEvent();\n }\n } else {\n input.valueAsNumber = handle.value;\n this.requestUpdate();\n }\n handle.value = input.valueAsNumber;\n }\n\n public handleHasChanged(handle: SliderHandle): void {\n if (handle !== this.host) {\n this.requestUpdate();\n }\n }\n\n public formattedValueForHandle(model: ModelValue): string {\n const { handle } = model;\n const numberFormat = handle.numberFormat ?? this.host.numberFormat;\n return handle.getAriaHandleText(model.value, numberFormat);\n }\n\n public get formattedValues(): Map<string, string> {\n const result = new Map<string, string>();\n for (const model of this.model) {\n result.set(model.name, this.formattedValueForHandle(model));\n }\n return result;\n }\n\n public get focusElement(): HTMLElement {\n const { input } = this.getActiveHandleElements();\n if (\n this.host.editable &&\n !(input as InputWithModel).model.handle.dragging\n ) {\n return this.host.numberField;\n }\n return input;\n }\n\n protected handleOrientation = (): void => {\n this.updateBoundingRect();\n };\n\n public hostConnected(): void {\n if ('orientation' in screen) {\n screen.orientation.addEventListener(\n 'change',\n this.handleOrientation\n );\n } else {\n window.addEventListener(\n 'orientationchange',\n this.handleOrientation\n );\n }\n }\n\n public hostDisconnected(): void {\n if ('orientation' in screen) {\n screen.orientation.removeEventListener(\n 'change',\n this.handleOrientation\n );\n } else {\n window.removeEventListener(\n 'orientationchange',\n this.handleOrientation\n );\n }\n }\n\n public hostUpdate(): void {\n this.updateModel();\n }\n\n // Since extractModelFromLightDom bails on the first un-upgraded handle,\n // a maximum of one listener will be set up per extraction attempt.\n private waitForUpgrade(handle: HTMLElement): boolean {\n if (handle instanceof SliderHandle) {\n return false;\n }\n handle.addEventListener(\n 'sp-slider-handle-ready',\n () => this.extractModelFromLightDom(),\n { once: true, passive: true }\n );\n return true;\n }\n\n private extractModelFromLightDom = (): void => {\n let handles = [\n ...this.host.querySelectorAll('[slot=\"handle\"]'),\n ] as SliderHandle[];\n if (handles.length === 0) {\n handles = [this.host as SliderHandle];\n }\n // extractModelFromLightDom depends on slotted handles already having been upgraded\n if (handles.some((h) => this.waitForUpgrade(h))) {\n return;\n }\n this.handles = new Map();\n this.handleOrder = [];\n handles.forEach((handle, index) => {\n /* c8 ignore next */\n if (!handle.handleName?.length) {\n handle.name = `handle${index + 1}`;\n }\n this.handles.set(handle.handleName, handle);\n this.handleOrder.push(handle.handleName);\n handle.handleController = this;\n });\n this.requestUpdate();\n };\n\n public get activeHandle(): string {\n return this.handleOrder[this.handleOrder.length - 1];\n }\n\n public get activeHandleInputId(): string {\n const active = this.activeHandle;\n const index = this.model.findIndex((model) => model.name === active);\n return `input-${index}`;\n }\n\n public activateHandle(name: string): void {\n const index = this.handleOrder.findIndex((item) => item === name);\n if (index >= 0) {\n this.handleOrder.splice(index, 1);\n }\n this.handleOrder.push(name);\n }\n\n private getActiveHandleElements(): HandleComponents {\n const name = this.activeHandle;\n const handleSlider = this.handles.get(name) as SliderHandle;\n const elements = this.getHandleElements(\n handleSlider\n ) as HandleReference;\n return { model: handleSlider, ...elements };\n }\n\n private getHandleElements(sliderHandle: SliderHandle): HandleReference {\n if (!this.handleRefMap) {\n this.handleRefMap = new WeakMap();\n\n const inputNodes =\n this.host.shadowRoot.querySelectorAll('.handle > input');\n for (const inputNode of inputNodes) {\n const input = inputNode as HTMLInputElement;\n const handle = input.parentElement as HTMLElement;\n const model = this.handles.get(\n handle.getAttribute('name') as string\n );\n if (model) {\n this.handleRefMap.set(model, { input, handle });\n }\n }\n }\n\n const components = this.handleRefMap.get(\n sliderHandle\n ) as HandleReference;\n return components;\n }\n\n private clearHandleComponentCache(): void {\n delete this.handleRefMap;\n }\n\n private _boundingClientRect?: DOMRect;\n\n private get boundingClientRect(): DOMRect {\n if (!this._boundingClientRect) {\n this._boundingClientRect = this.host.track.getBoundingClientRect();\n }\n return this._boundingClientRect;\n }\n\n private updateBoundingRect(): void {\n delete this._boundingClientRect;\n }\n\n /**\n * Return the `input` and `model` associated with the event and\n * whether the `input` is a `resolvedInput` meaning it was acquired\n * from the `model` rather than the event.\n */\n protected extractDataFromEvent(event: PointerEvent): DataFromPointerEvent {\n if (!this._activePointerEventData) {\n let input = (event.target as Element).querySelector(\n ':scope > .input'\n ) as InputWithModel;\n const resolvedInput = !input;\n const model = input\n ? input.model\n : this.model.find((item) => item.name === this.activeHandle);\n if (!input && !!model) {\n input = model.handle.focusElement as InputWithModel;\n }\n this._activePointerEventData = {\n input,\n model,\n resolvedInput,\n };\n }\n return this._activePointerEventData;\n }\n\n private _activePointerEventData!: DataFromPointerEvent | undefined;\n\n public handlePointerdown(event: PointerEvent): void {\n const { resolvedInput, model } = this.extractDataFromEvent(event);\n if (!model || this.host.disabled || event.button !== 0) {\n event.preventDefault();\n return;\n }\n this.host.track.setPointerCapture(event.pointerId);\n this.updateBoundingRect();\n this.host.labelEl.click();\n this.draggingHandle = model.handle;\n model.handle.dragging = true;\n this.activateHandle(model.name);\n if (resolvedInput) {\n // When the input is resolved forward the pointer event to\n // `handlePointermove` in order to update the value/UI becuase\n // the pointer event was on the track not a handle\n this.handlePointermove(event);\n }\n this.requestUpdate();\n }\n\n public handlePointerup(event: PointerEvent): void {\n const { input, model } = this.extractDataFromEvent(event);\n delete this._activePointerEventData;\n if (!model) return;\n this.host.labelEl.click();\n this.cancelDrag(model);\n this.requestUpdate();\n this.host.track.releasePointerCapture(event.pointerId);\n this.dispatchChangeEvent(input, model.handle);\n }\n\n public handlePointermove(event: PointerEvent): void {\n const { input, model } = this.extractDataFromEvent(event);\n if (!model) return;\n /* c8 ignore next 3 */\n if (!this.draggingHandle) {\n return;\n }\n event.stopPropagation();\n input.value = this.calculateHandlePosition(event, model).toString();\n model.handle.value = parseFloat(input.value);\n this.host.indeterminate = false;\n this.requestUpdate();\n }\n\n public cancelDrag(model?: ModelValue): void {\n model =\n model || this.model.find((item) => item.name === this.activeHandle);\n if (!model) return;\n model.handle.highlight = false;\n delete this.draggingHandle;\n model.handle.dragging = false;\n }\n\n /**\n * Keep the slider value property in sync with the input element's value\n */\n private onInputChange = (event: Event): void => {\n const input = event.target as InputWithModel;\n input.model.handle.value = input.valueAsNumber;\n\n this.requestUpdate();\n this.dispatchChangeEvent(input, input.model.handle);\n };\n\n private onInputFocus = (event: Event): void => {\n const input = event.target as InputWithModel;\n let isFocusVisible;\n try {\n isFocusVisible =\n input.matches(':focus-visible') ||\n this.host.matches('.focus-visible');\n /* c8 ignore next 3 */\n } catch (error) {\n isFocusVisible = this.host.matches('.focus-visible');\n }\n input.model.handle.highlight = isFocusVisible;\n this.requestUpdate();\n };\n\n private onInputBlur = (event: Event): void => {\n const input = event.target as InputWithModel;\n input.model.handle.highlight = false;\n this.requestUpdate();\n };\n\n private onInputKeydown = (event: Event): void => {\n const input = event.target as InputWithModel;\n input.model.handle.highlight = true;\n this.requestUpdate();\n };\n\n private dispatchChangeEvent(\n input: HTMLInputElement,\n handle: SliderHandle\n ): void {\n input.valueAsNumber = handle.value;\n\n const changeEvent = new Event('change', {\n bubbles: true,\n composed: true,\n });\n\n handle.dispatchEvent(changeEvent);\n }\n\n /**\n * Returns the value under the cursor\n * @param: PointerEvent on slider\n * @return: Slider value that correlates to the position under the pointer\n */\n private calculateHandlePosition(\n event: PointerEvent | MouseEvent,\n model: ModelValue\n ): number {\n const rect = this.boundingClientRect;\n const minOffset = rect.left;\n const offset = event.clientX;\n const size = rect.width;\n\n const directionalOffset = this.host.isLTR\n ? offset - minOffset\n : size - (offset - minOffset);\n const normalized = directionalOffset / size;\n\n return model.normalization.fromNormalized(\n normalized,\n model.range.min,\n model.range.max\n );\n }\n\n public renderHandle(\n model: ModelValue,\n index: number,\n zIndex: number,\n isMultiHandle: boolean\n ): TemplateResult {\n const classes = {\n handle: true,\n dragging: this.draggingHandle?.handleName === model.name,\n 'handle-highlight': model.highlight,\n };\n const style = {\n [this.host.isLTR ? 'left' : 'right']: `${\n model.normalizedValue * 100\n }%`,\n 'z-index': zIndex.toString(),\n // Allow setting background per-handle\n 'background-color': `var(--spectrum-slider-handle-background-color-${index}, var(--spectrum-slider-handle-default-background-color))`,\n 'border-color': `var(--spectrum-slider-handle-border-color-${index}, var(-spectrum-slider-handle-default-border-color))`,\n };\n const ariaLabelledBy = isMultiHandle ? `label input-${index}` : 'label';\n return html`\n <div\n class=${classMap(classes)}\n name=${model.name}\n style=${styleMap(style)}\n role=\"presentation\"\n >\n <input\n type=\"range\"\n class=\"input\"\n id=\"input-${index}\"\n min=${model.clamp.min}\n max=${model.clamp.max}\n step=${model.step}\n value=${model.value}\n aria-disabled=${ifDefined(\n this.host.disabled ? 'true' : undefined\n )}\n tabindex=${ifDefined(this.host.editable ? -1 : undefined)}\n aria-label=${ifDefined(model.ariaLabel)}\n aria-labelledby=${ariaLabelledBy}\n aria-valuetext=${this.formattedValueForHandle(model)}\n @change=${this.onInputChange}\n @focus=${this.onInputFocus}\n @blur=${this.onInputBlur}\n @keydown=${this.onInputKeydown}\n .model=${model}\n />\n </div>\n `;\n }\n\n public render(): TemplateResult[] {\n this.clearHandleComponentCache();\n return this.model.map((model, index) => {\n const zIndex = this.handleOrder.indexOf(model.name) + 1;\n return this.renderHandle(\n model,\n index,\n zIndex,\n this.model.length > 1\n );\n });\n }\n\n /**\n * Returns a list of track segment [start, end] tuples where the values are\n * normalized to be between 0 and 1.\n * @returns A list of track segment tuples [start, end]\n */\n public trackSegments(): [number, number][] {\n const values = this.model.map((model) => model.normalizedValue);\n values.sort((a, b) => a - b);\n\n // The first segment always starts at 0\n values.unshift(0);\n return values.map((value, index, array) => [\n value,\n array[index + 1] ?? 1,\n ]);\n }\n\n private updateModel(): void {\n const handles = [...this.handles.values()];\n\n const getRangeAndClamp = (index: number): RangeAndClamp => {\n const handle = handles[index];\n const previous = handles[index - 1];\n const next = handles[index + 1];\n\n const min =\n typeof handle.min === 'number'\n ? handle.min\n : (this.host.min as number);\n const max =\n typeof handle.max === 'number'\n ? handle.max\n : (this.host.max as number);\n\n const result: RangeAndClamp = {\n range: { min: min, max: max },\n clamp: { min: min, max: max },\n };\n\n if (handle.min === 'previous') {\n if (previous) {\n for (let j = index - 1; j >= 0; j--) {\n const item = handles[j];\n if (typeof item.min === 'number') {\n result.range.min = item.min;\n break;\n }\n }\n result.clamp.min = Math.max(\n previous.value,\n result.range.min\n );\n }\n if (window.__swc.DEBUG) {\n if (!previous) {\n window.__swc.warn(\n this.host,\n '<sp-slider-handle> elements that are the first child of an <sp-slider> element cannot have attribute \"min=\\'previous\\'\"`',\n 'https://opensource.adobe.com/spectrum-web-components/components/slider-handle/#multi-handle-slider-with-ordered-handles'\n );\n }\n }\n }\n if (handle.max === 'next') {\n if (next) {\n for (let j = index + 1; j < handles.length; j++) {\n const item = handles[j];\n if (typeof item.max === 'number') {\n result.range.max = item.max;\n break;\n }\n }\n result.clamp.max = Math.min(next.value, result.range.max);\n }\n if (window.__swc.DEBUG) {\n if (!next) {\n window.__swc.warn(\n this.host,\n '<sp-slider-handle> elements that are the last child of an <sp-slider> element cannot have attribute \"max=\\'next\\'\"',\n 'https://opensource.adobe.com/spectrum-web-components/components/slider-handle/#multi-handle-slider-with-ordered-handles'\n );\n }\n }\n }\n return result;\n };\n\n const modelValues = handles.map((handle, index) => {\n const rangeAndClamp = getRangeAndClamp(index);\n const { toNormalized } = handle.normalization;\n const clampedValue = Math.max(\n Math.min(handle.value, rangeAndClamp.clamp.max),\n rangeAndClamp.clamp.min\n );\n const normalizedValue = toNormalized(\n clampedValue,\n rangeAndClamp.range.min,\n rangeAndClamp.range.max\n );\n const model = {\n name: handle.handleName,\n value: clampedValue,\n normalizedValue,\n highlight: handle.highlight,\n step: handle.step ?? this.host.step,\n normalization: handle.normalization,\n handle,\n ariaLabel:\n handle !== this.host && handle?.label.length > 0\n ? handle.label\n : undefined,\n ...rangeAndClamp,\n };\n return model;\n });\n\n this.model = modelValues;\n }\n\n public async handleUpdatesComplete(): Promise<void> {\n const updates = [...this.handles.values()]\n .filter((handle) => handle !== this.host)\n .map((handle) => handle.updateComplete);\n await Promise.all(updates);\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "AAWA,qDACA,wGAKA,gFAEA,iDA4CO,aAAM,gBAAuC,CAQhD,YAAY,EAAc,CANlB,aAAqC,GAAI,KACzC,WAAsB,CAAC,EACvB,iBAAwB,CAAC,EAsGvB,uBAAoB,IAAY,CACtC,KAAK,mBAAmB,CAC5B,EAgDQ,8BAA2B,IAAY,CAC3C,GAAI,GAAU,CACV,GAAG,KAAK,KAAK,iBAAiB,iBAAiB,CACnD,EAKA,AAJI,EAAQ,SAAW,GACnB,GAAU,CAAC,KAAK,IAAoB,GAGpC,GAAQ,KAAK,AAAC,GAAM,KAAK,eAAe,CAAC,CAAC,GAG9C,MAAK,QAAU,GAAI,KACnB,KAAK,YAAc,CAAC,EACpB,EAAQ,QAAQ,CAAC,EAAQ,IAAU,CAxO3C,MA0OY,AAAK,KAAO,aAAP,QAAmB,QACpB,GAAO,KAAO,SAAS,EAAQ,KAEnC,KAAK,QAAQ,IAAI,EAAO,WAAY,CAAM,EAC1C,KAAK,YAAY,KAAK,EAAO,UAAU,EACvC,EAAO,iBAAmB,IAC9B,CAAC,EACD,KAAK,cAAc,EACvB,EA4JQ,mBAAgB,AAAC,GAAuB,CAC5C,KAAM,GAAQ,EAAM,OACpB,EAAM,MAAM,OAAO,MAAQ,EAAM,cAEjC,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAAO,EAAM,MAAM,MAAM,CACtD,EAEQ,kBAAe,AAAC,GAAuB,CAC3C,KAAM,GAAQ,EAAM,OACpB,GAAI,GACJ,GAAI,CACA,EACI,EAAM,QAAQ,gBAAgB,GAC9B,KAAK,KAAK,QAAQ,gBAAgB,CAE1C,OAAS,EAAP,CACE,EAAiB,KAAK,KAAK,QAAQ,gBAAgB,CACvD,CACA,EAAM,MAAM,OAAO,UAAY,EAC/B,KAAK,cAAc,CACvB,EAEQ,iBAAc,AAAC,GAAuB,CAC1C,KAAM,GAAQ,EAAM,OACpB,EAAM,MAAM,OAAO,UAAY,GAC/B,KAAK,cAAc,CACvB,EAEQ,oBAAiB,AAAC,GAAuB,CAC7C,KAAM,GAAQ,EAAM,OACpB,EAAM,MAAM,OAAO,UAAY,GAC/B,KAAK,cAAc,CACvB,EAvWI,KAAK,KAAO,EAEZ,GAAI,GAAmB,KAAK,KAAM,CAC9B,OAAQ,CACJ,QAAS,GACT,UAAW,EACf,EACA,SAAU,IAAM,CACZ,KAAK,yBAAyB,CAClC,CACJ,CAAC,EAED,KAAK,yBAAyB,CAClC,IAEW,SAAgC,CACvC,KAAM,GAAgC,CAAC,EACvC,SAAW,KAAS,MAAK,QAAQ,OAAO,EACpC,EAAO,EAAM,YAAc,EAAM,MAErC,MAAO,EACX,IAEW,OAAe,CACtB,MAAO,MAAK,QAAQ,IACxB,CAEO,eAAe,EAAoD,CACtE,GAAI,KAAK,QAAQ,IAAI,EAAO,UAAU,EAAG,CACrC,KAAM,CAAE,SAAU,KAAK,kBAAkB,CAAM,EAC/C,MAAO,EACX,CAEA,KAAM,IAAI,OAAM,wBAAwB,EAAO,OAAO,CAC1D,CAEO,eAAsB,CACzB,AAAI,KAAK,KAAK,YACV,KAAK,KAAK,cAAc,CAEhC,CASO,mBAAmB,EAA4B,CAClD,KAAM,GAAW,KAAK,kBAAkB,CAAM,EAE9C,GAAI,CAAC,EAAU,OAEf,KAAM,CAAE,SAAU,EAClB,AAAI,EAAM,gBAAkB,EAAO,MAC3B,EAAO,UACP,EAAO,mBAAmB,EAG9B,GAAM,cAAgB,EAAO,MAC7B,KAAK,cAAc,GAEvB,EAAO,MAAQ,EAAM,aACzB,CAEO,iBAAiB,EAA4B,CAChD,AAAI,IAAW,KAAK,MAChB,KAAK,cAAc,CAE3B,CAEO,wBAAwB,EAA2B,CAhJ9D,MAiJQ,KAAM,CAAE,UAAW,EACb,EAAe,KAAO,eAAP,OAAuB,KAAK,KAAK,aACtD,MAAO,GAAO,kBAAkB,EAAM,MAAO,CAAY,CAC7D,IAEW,kBAAuC,CAC9C,KAAM,GAAS,GAAI,KACnB,SAAW,KAAS,MAAK,MACrB,EAAO,IAAI,EAAM,KAAM,KAAK,wBAAwB,CAAK,CAAC,EAE9D,MAAO,EACX,IAEW,eAA4B,CACnC,KAAM,CAAE,SAAU,KAAK,wBAAwB,EAC/C,MACI,MAAK,KAAK,UACV,CAAE,EAAyB,MAAM,OAAO,SAEjC,KAAK,KAAK,YAEd,CACX,CAMO,eAAsB,CACzB,AAAI,eAAiB,QACjB,OAAO,YAAY,iBACf,SACA,KAAK,iBACT,EAEA,OAAO,iBACH,oBACA,KAAK,iBACT,CAER,CAEO,kBAAyB,CAC5B,AAAI,eAAiB,QACjB,OAAO,YAAY,oBACf,SACA,KAAK,iBACT,EAEA,OAAO,oBACH,oBACA,KAAK,iBACT,CAER,CAEO,YAAmB,CACtB,KAAK,YAAY,CACrB,CAIQ,eAAe,EAA8B,CACjD,MAAI,aAAkB,GACX,GAEX,GAAO,iBACH,yBACA,IAAM,KAAK,yBAAyB,EACpC,CAAE,KAAM,GAAM,QAAS,EAAK,CAChC,EACO,GACX,IA2BW,eAAuB,CAC9B,MAAO,MAAK,YAAY,KAAK,YAAY,OAAS,EACtD,IAEW,sBAA8B,CACrC,KAAM,GAAS,KAAK,aAEpB,MAAO,SADO,KAAK,MAAM,UAAU,AAAC,GAAU,EAAM,OAAS,CAAM,GAEvE,CAEO,eAAe,EAAoB,CACtC,KAAM,GAAQ,KAAK,YAAY,UAAU,AAAC,GAAS,IAAS,CAAI,EAChE,AAAI,GAAS,GACT,KAAK,YAAY,OAAO,EAAO,CAAC,EAEpC,KAAK,YAAY,KAAK,CAAI,CAC9B,CAEQ,yBAA4C,CAChD,KAAM,GAAO,KAAK,aACZ,EAAe,KAAK,QAAQ,IAAI,CAAI,EACpC,EAAW,KAAK,kBAClB,CACJ,EACA,MAAO,CAAE,MAAO,KAAiB,CAAS,CAC9C,CAEQ,kBAAkB,EAA6C,CACnE,GAAI,CAAC,KAAK,aAAc,CACpB,KAAK,aAAe,GAAI,SAExB,KAAM,GACF,KAAK,KAAK,WAAW,iBAAiB,iBAAiB,EAC3D,SAAW,KAAa,GAAY,CAChC,KAAM,GAAQ,EACR,EAAS,EAAM,cACf,EAAQ,KAAK,QAAQ,IACvB,EAAO,aAAa,MAAM,CAC9B,EACA,AAAI,GACA,KAAK,aAAa,IAAI,EAAO,CAAE,QAAO,QAAO,CAAC,CAEtD,CACJ,CAKA,MAHmB,MAAK,aAAa,IACjC,CACJ,CAEJ,CAEQ,2BAAkC,CACtC,MAAO,MAAK,YAChB,IAIY,qBAA8B,CACtC,MAAK,MAAK,qBACN,MAAK,oBAAsB,KAAK,KAAK,MAAM,sBAAsB,GAE9D,KAAK,mBAChB,CAEQ,oBAA2B,CAC/B,MAAO,MAAK,mBAChB,CAOU,qBAAqB,EAA2C,CACtE,GAAI,CAAC,KAAK,wBAAyB,CAC/B,GAAI,GAAS,EAAM,OAAmB,cAClC,iBACJ,EACA,KAAM,GAAgB,CAAC,EACjB,EAAQ,EACR,EAAM,MACN,KAAK,MAAM,KAAK,AAAC,GAAS,EAAK,OAAS,KAAK,YAAY,EAC/D,AAAI,CAAC,GAAS,CAAC,CAAC,GACZ,GAAQ,EAAM,OAAO,cAEzB,KAAK,wBAA0B,CAC3B,QACA,QACA,eACJ,CACJ,CACA,MAAO,MAAK,uBAChB,CAIO,kBAAkB,EAA2B,CAChD,KAAM,CAAE,gBAAe,SAAU,KAAK,qBAAqB,CAAK,EAChE,GAAI,CAAC,GAAS,KAAK,KAAK,UAAY,EAAM,SAAW,EAAG,CACpD,EAAM,eAAe,EACrB,MACJ,CACA,KAAK,KAAK,MAAM,kBAAkB,EAAM,SAAS,EACjD,KAAK,mBAAmB,EACxB,KAAK,KAAK,QAAQ,MAAM,EACxB,KAAK,eAAiB,EAAM,OAC5B,EAAM,OAAO,SAAW,GACxB,KAAK,eAAe,EAAM,IAAI,EAC1B,GAIA,KAAK,kBAAkB,CAAK,EAEhC,KAAK,cAAc,CACvB,CAEO,gBAAgB,EAA2B,CAC9C,KAAM,CAAE,QAAO,SAAU,KAAK,qBAAqB,CAAK,EAExD,AADA,MAAO,MAAK,wBACR,AAAC,GACL,MAAK,KAAK,QAAQ,MAAM,EACxB,KAAK,WAAW,CAAK,EACrB,KAAK,cAAc,EACnB,KAAK,KAAK,MAAM,sBAAsB,EAAM,SAAS,EACrD,KAAK,oBAAoB,EAAO,EAAM,MAAM,EAChD,CAEO,kBAAkB,EAA2B,CAChD,KAAM,CAAE,QAAO,SAAU,KAAK,qBAAqB,CAAK,EACxD,AAAI,CAAC,GAED,CAAC,KAAK,gBAGV,GAAM,gBAAgB,EACtB,EAAM,MAAQ,KAAK,wBAAwB,EAAO,CAAK,EAAE,SAAS,EAClE,EAAM,OAAO,MAAQ,WAAW,EAAM,KAAK,EAC3C,KAAK,KAAK,cAAgB,GAC1B,KAAK,cAAc,EACvB,CAEO,WAAW,EAA0B,CAGxC,AAFA,EACI,GAAS,KAAK,MAAM,KAAK,AAAC,GAAS,EAAK,OAAS,KAAK,YAAY,EAClE,AAAC,GACL,GAAM,OAAO,UAAY,GACzB,MAAO,MAAK,eACZ,EAAM,OAAO,SAAW,GAC5B,CAwCQ,oBACJ,EACA,EACI,CACJ,EAAM,cAAgB,EAAO,MAE7B,KAAM,GAAc,GAAI,OAAM,SAAU,CACpC,QAAS,GACT,SAAU,EACd,CAAC,EAED,EAAO,cAAc,CAAW,CACpC,CAOQ,wBACJ,EACA,EACM,CACN,KAAM,GAAO,KAAK,mBACZ,EAAY,EAAK,KACjB,EAAS,EAAM,QACf,EAAO,EAAK,MAKZ,EAAa,AAHO,MAAK,KAAK,MAC9B,EAAS,EACT,EAAQ,GAAS,IACgB,EAEvC,MAAO,GAAM,cAAc,eACvB,EACA,EAAM,MAAM,IACZ,EAAM,MAAM,GAChB,CACJ,CAEO,aACH,EACA,EACA,EACA,EACc,CA9dtB,MA+dQ,KAAM,GAAU,CACZ,OAAQ,GACR,SAAU,SAAK,iBAAL,cAAqB,cAAe,EAAM,KACpD,mBAAoB,EAAM,SAC9B,EACM,EAAQ,EACT,KAAK,KAAK,MAAQ,OAAS,SAAU,GAClC,EAAM,gBAAkB,OAE5B,UAAW,EAAO,SAAS,EAE3B,mBAAoB,iDAAiD,6DACrE,eAAgB,6CAA6C,uDACjE,EACM,EAAiB,EAAgB,eAAe,IAAU,QAChE,MAAO;AAAA;AAAA,wBAES,EAAS,CAAO;AAAA,uBACjB,EAAM;AAAA,wBACL,EAAS,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAMN;AAAA,0BACN,EAAM,MAAM;AAAA,0BACZ,EAAM,MAAM;AAAA,2BACX,EAAM;AAAA,4BACL,EAAM;AAAA,oCACE,EACZ,KAAK,KAAK,SAAW,OAAS,MAClC;AAAA,+BACW,EAAU,KAAK,KAAK,SAAW,GAAK,MAAS;AAAA,iCAC3C,EAAU,EAAM,SAAS;AAAA,sCACpB;AAAA,qCACD,KAAK,wBAAwB,CAAK;AAAA,8BACzC,KAAK;AAAA,6BACN,KAAK;AAAA,4BACN,KAAK;AAAA,+BACF,KAAK;AAAA,6BACP;AAAA;AAAA;AAAA,SAIzB,CAEO,QAA2B,CAC9B,YAAK,0BAA0B,EACxB,KAAK,MAAM,IAAI,CAAC,EAAO,IAAU,CACpC,KAAM,GAAS,KAAK,YAAY,QAAQ,EAAM,IAAI,EAAI,EACtD,MAAO,MAAK,aACR,EACA,EACA,EACA,KAAK,MAAM,OAAS,CACxB,CACJ,CAAC,CACL,CAOO,eAAoC,CACvC,KAAM,GAAS,KAAK,MAAM,IAAI,AAAC,GAAU,EAAM,eAAe,EAC9D,SAAO,KAAK,CAAC,EAAG,IAAM,EAAI,CAAC,EAG3B,EAAO,QAAQ,CAAC,EACT,EAAO,IAAI,CAAC,EAAO,EAAO,IAAO,CAtiBhD,MAsiBmD,OACvC,EACA,KAAM,EAAQ,KAAd,OAAoB,CACxB,EAAC,CACL,CAEQ,aAAoB,CACxB,KAAM,GAAU,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EAEnC,EAAmB,AAAC,GAAiC,CACvD,KAAM,GAAS,EAAQ,GACjB,EAAW,EAAQ,EAAQ,GAC3B,EAAO,EAAQ,EAAQ,GAEvB,EACF,MAAO,GAAO,KAAQ,SAChB,EAAO,IACN,KAAK,KAAK,IACf,EACF,MAAO,GAAO,KAAQ,SAChB,EAAO,IACN,KAAK,KAAK,IAEf,EAAwB,CAC1B,MAAO,CAAE,IAAK,EAAK,IAAK,CAAI,EAC5B,MAAO,CAAE,IAAK,EAAK,IAAK,CAAI,CAChC,EAEA,GAAI,EAAO,MAAQ,YACX,EAAU,CACV,OAAS,GAAI,EAAQ,EAAG,GAAK,EAAG,IAAK,CACjC,KAAM,GAAO,EAAQ,GACrB,GAAI,MAAO,GAAK,KAAQ,SAAU,CAC9B,EAAO,MAAM,IAAM,EAAK,IACxB,KACJ,CACJ,CACA,EAAO,MAAM,IAAM,KAAK,IACpB,EAAS,MACT,EAAO,MAAM,GACjB,CACJ,CAWJ,GAAI,EAAO,MAAQ,QACX,EAAM,CACN,OAAS,GAAI,EAAQ,EAAG,EAAI,EAAQ,OAAQ,IAAK,CAC7C,KAAM,GAAO,EAAQ,GACrB,GAAI,MAAO,GAAK,KAAQ,SAAU,CAC9B,EAAO,MAAM,IAAM,EAAK,IACxB,KACJ,CACJ,CACA,EAAO,MAAM,IAAM,KAAK,IAAI,EAAK,MAAO,EAAO,MAAM,GAAG,CAC5D,CAWJ,MAAO,EACX,EAEM,EAAc,EAAQ,IAAI,CAAC,EAAQ,IAAU,CAlnB3D,MAmnBY,KAAM,GAAgB,EAAiB,CAAK,EACtC,CAAE,gBAAiB,EAAO,cAC1B,EAAe,KAAK,IACtB,KAAK,IAAI,EAAO,MAAO,EAAc,MAAM,GAAG,EAC9C,EAAc,MAAM,GACxB,EACM,EAAkB,EACpB,EACA,EAAc,MAAM,IACpB,EAAc,MAAM,GACxB,EAeA,MAdc,CACV,KAAM,EAAO,WACb,MAAO,EACP,kBACA,UAAW,EAAO,UAClB,KAAM,KAAO,OAAP,OAAe,KAAK,KAAK,KAC/B,cAAe,EAAO,cACtB,SACA,UACI,IAAW,KAAK,MAAQ,kBAAQ,MAAM,QAAS,EACzC,EAAO,MACP,UACP,CACP,CAEJ,CAAC,EAED,KAAK,MAAQ,CACjB,MAEa,wBAAuC,CAChD,KAAM,GAAU,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EACpC,OAAO,AAAC,GAAW,IAAW,KAAK,IAAI,EACvC,IAAI,AAAC,GAAW,EAAO,cAAc,EAC1C,KAAM,SAAQ,IAAI,CAAO,CAC7B,CACJ",
6
6
  "names": []
7
7
  }
package/src/Slider.js CHANGED
@@ -1,123 +1,8 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result)
9
- __defProp(target, key, result);
10
- return result;
11
- };
12
- import {
13
- html
14
- } from "@spectrum-web-components/base";
15
- import {
16
- property,
17
- query
18
- } from "@spectrum-web-components/base/src/decorators.js";
19
- import {
20
- classMap,
21
- ifDefined,
22
- repeat,
23
- styleMap
24
- } from "@spectrum-web-components/base/src/directives.js";
25
- import sliderStyles from "./slider.css.js";
26
- import { ObserveSlotText } from "@spectrum-web-components/shared/src/observe-slot-text.js";
27
- import "@spectrum-web-components/field-label/sp-field-label.js";
28
- import { HandleController } from "./HandleController.js";
29
- import { SliderHandle } from "./SliderHandle.js";
30
- import { streamingListener } from "@spectrum-web-components/base/src/streaming-listener.js";
31
- export const variants = ["filled", "ramp", "range", "tick"];
32
- export class Slider extends ObserveSlotText(SliderHandle, "") {
33
- constructor() {
34
- super(...arguments);
35
- this.handleController = new HandleController(this);
36
- this._editable = false;
37
- this.hideStepper = false;
38
- this.type = "";
39
- this._variant = "";
40
- this.getAriaValueText = (values) => {
41
- const valueArray = [...values.values()];
42
- if (valueArray.length === 2)
43
- return `${valueArray[0]}${this._forcedUnit} - ${valueArray[1]}${this._forcedUnit}`;
44
- return valueArray.join(`${this._forcedUnit}, `) + this._forcedUnit;
45
- };
46
- this.min = 0;
47
- this.max = 100;
48
- this.step = 1;
49
- this.tickStep = 0;
50
- this.tickLabels = false;
51
- this.disabled = false;
52
- this.quiet = false;
53
- this.indeterminate = false;
54
- this._numberFieldInput = Promise.resolve();
55
- }
56
- static get styles() {
57
- return [sliderStyles];
58
- }
59
- get editable() {
60
- return this._editable;
61
- }
62
- set editable(editable) {
63
- if (editable === this.editable)
64
- return;
65
- const oldValue = this.editable;
66
- this._editable = this.handleController.size < 2 ? editable : false;
67
- if (this.editable) {
68
- this._numberFieldInput = import("@spectrum-web-components/number-field/sp-number-field.js");
69
- }
70
- if (oldValue !== this.editable) {
71
- this.requestUpdate("editable", oldValue);
72
- }
73
- }
74
- set variant(variant) {
75
- const oldVariant = this.variant;
76
- if (variant === this.variant) {
77
- return;
78
- }
79
- if (variants.includes(variant)) {
80
- this.setAttribute("variant", variant);
81
- this._variant = variant;
82
- } else {
83
- this.removeAttribute("variant");
84
- this._variant = "";
85
- }
86
- this.requestUpdate("variant", oldVariant);
87
- }
88
- get variant() {
89
- return this._variant;
90
- }
91
- get values() {
92
- return this.handleController.values;
93
- }
94
- get handleName() {
95
- return "value";
96
- }
97
- get ariaValueText() {
98
- if (!this.getAriaValueText) {
99
- return `${this.value}${this._forcedUnit}`;
100
- }
101
- return this.getAriaValueText(this.handleController.formattedValues);
102
- }
103
- get numberFormat() {
104
- return this.getNumberFormat();
105
- }
106
- get focusElement() {
107
- return this.handleController.focusElement;
108
- }
109
- handleLabelClick(event) {
110
- if (this.editable) {
111
- event.preventDefault();
112
- this.focus();
113
- }
114
- }
115
- render() {
116
- return html`
1
+ var c=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var r=(d,e,t,i)=>{for(var n=i>1?void 0:i?h(e,t):e,s=d.length-1,o;s>=0;s--)(o=d[s])&&(n=(i?o(e,t,n):o(n))||n);return i&&n&&c(e,t,n),n};import{html as l}from"@spectrum-web-components/base";import{property as a,query as u}from"@spectrum-web-components/base/src/decorators.js";import{classMap as p,ifDefined as b,repeat as m,styleMap as v}from"@spectrum-web-components/base/src/directives.js";import f from"./slider.css.js";import{ObserveSlotText as g}from"@spectrum-web-components/shared/src/observe-slot-text.js";import"@spectrum-web-components/field-label/sp-field-label.js";import{HandleController as k}from"./HandleController.js";import{SliderHandle as y}from"./SliderHandle.js";import{streamingListener as $}from"@spectrum-web-components/base/src/streaming-listener.js";export const variants=["filled","ramp","range","tick"];export class Slider extends g(y,""){constructor(){super(...arguments);this.handleController=new k(this);this._editable=!1;this.hideStepper=!1;this.type="";this._variant="";this.getAriaValueText=e=>{const t=[...e.values()];return t.length===2?`${t[0]}${this._forcedUnit} - ${t[1]}${this._forcedUnit}`:t.join(`${this._forcedUnit}, `)+this._forcedUnit};this.min=0;this.max=100;this.step=1;this.tickStep=0;this.tickLabels=!1;this.disabled=!1;this.quiet=!1;this.indeterminate=!1;this._numberFieldInput=Promise.resolve()}static get styles(){return[f]}get editable(){return this._editable}set editable(e){if(e===this.editable)return;const t=this.editable;this._editable=this.handleController.size<2?e:!1,this.editable&&(this._numberFieldInput=import("@spectrum-web-components/number-field/sp-number-field.js")),t!==this.editable&&this.requestUpdate("editable",t)}set variant(e){const t=this.variant;e!==this.variant&&(variants.includes(e)?(this.setAttribute("variant",e),this._variant=e):(this.removeAttribute("variant"),this._variant=""),this.requestUpdate("variant",t))}get variant(){return this._variant}get values(){return this.handleController.values}get handleName(){return"value"}get ariaValueText(){return this.getAriaValueText?this.getAriaValueText(this.handleController.formattedValues):`${this.value}${this._forcedUnit}`}get numberFormat(){return this.getNumberFormat()}get focusElement(){return this.handleController.focusElement}handleLabelClick(e){this.editable&&(e.preventDefault(),this.focus())}render(){return l`
117
2
  ${this.renderLabel()} ${this.renderTrack()}
118
- ${this.editable ? html`
3
+ ${this.editable?l`
119
4
  <sp-number-field
120
- .formatOptions=${this.formatOptions || {}}
5
+ .formatOptions=${this.formatOptions||{}}
121
6
  id="number-field"
122
7
  min=${this.min}
123
8
  max=${this.max}
@@ -130,45 +15,21 @@ export class Slider extends ObserveSlotText(SliderHandle, "") {
130
15
  @input=${this.handleNumberInput}
131
16
  @change=${this.handleNumberChange}
132
17
  ></sp-number-field>
133
- ` : html``}
134
- `;
135
- }
136
- connectedCallback() {
137
- super.connectedCallback();
138
- this.handleController.hostConnected();
139
- }
140
- disconnectedCallback() {
141
- super.disconnectedCallback();
142
- this.handleController.hostDisconnected();
143
- }
144
- update(changedProperties) {
145
- this.handleController.hostUpdate();
146
- if (changedProperties.has("disabled") && this.disabled) {
147
- this.handleController.cancelDrag();
148
- }
149
- super.update(changedProperties);
150
- }
151
- renderLabel() {
152
- const textLabelVisible = this.labelVisibility === "none" || this.labelVisibility === "value";
153
- const valueLabelVisible = this.labelVisibility === "none" || this.labelVisibility === "text";
154
- return html`
18
+ `:l``}
19
+ `}connectedCallback(){super.connectedCallback(),this.handleController.hostConnected()}disconnectedCallback(){super.disconnectedCallback(),this.handleController.hostDisconnected()}update(e){this.handleController.hostUpdate(),e.has("disabled")&&this.disabled&&this.handleController.cancelDrag(),super.update(e)}renderLabel(){const e=this.labelVisibility==="none"||this.labelVisibility==="value",t=this.labelVisibility==="none"||this.labelVisibility==="text";return l`
155
20
  <div id="label-container">
156
21
  <sp-field-label
157
- class=${classMap({
158
- "visually-hidden": textLabelVisible
159
- })}
22
+ class=${p({"visually-hidden":e})}
160
23
  ?disabled=${this.disabled}
161
24
  id="label"
162
- for=${this.editable ? "number-field" : this.handleController.activeHandleInputId}
25
+ for=${this.editable?"number-field":this.handleController.activeHandleInputId}
163
26
  @click=${this.handleLabelClick}
164
27
  >
165
- ${this.slotHasContent ? html`` : this.label}
28
+ ${this.slotHasContent?l``:this.label}
166
29
  <slot>${this.label}</slot>
167
30
  </sp-field-label>
168
31
  <output
169
- class=${classMap({
170
- "visually-hidden": valueLabelVisible
171
- })}
32
+ class=${p({"visually-hidden":t})}
172
33
  id="value"
173
34
  aria-live="off"
174
35
  for="input"
@@ -176,13 +37,7 @@ export class Slider extends ObserveSlotText(SliderHandle, "") {
176
37
  ${this.ariaValueText}
177
38
  </output>
178
39
  </div>
179
- `;
180
- }
181
- renderRamp() {
182
- if (this.variant !== "ramp") {
183
- return html``;
184
- }
185
- return html`
40
+ `}renderRamp(){return this.variant!=="ramp"?l``:l`
186
41
  <div id="ramp">
187
42
  <svg
188
43
  viewBox="0 0 240 16"
@@ -195,173 +50,35 @@ export class Slider extends ObserveSlotText(SliderHandle, "") {
195
50
  ></path>
196
51
  </svg>
197
52
  </div>
198
- `;
199
- }
200
- renderTicks() {
201
- if (this.variant !== "tick") {
202
- return html``;
203
- }
204
- const tickStep = this.tickStep || this.step;
205
- const tickCount = (this.max - this.min) / tickStep;
206
- const partialFit = tickCount % 1 !== 0;
207
- const ticks = new Array(Math.floor(tickCount + 1));
208
- ticks.fill(0, 0, tickCount + 1);
209
- return html`
53
+ `}renderTicks(){if(this.variant!=="tick")return l``;const e=this.tickStep||this.step,t=(this.max-this.min)/e,i=t%1!==0,n=new Array(Math.floor(t+1));return n.fill(0,0,t+1),l`
210
54
  <div
211
- class="${partialFit ? "not-exact " : ""}ticks"
212
- style=${ifDefined(partialFit ? `--sp-slider-tick-offset: calc(100% / ${this.max} * ${this.tickStep}` : void 0)}
55
+ class="${i?"not-exact ":""}ticks"
56
+ style=${b(i?`--sp-slider-tick-offset: calc(100% / ${this.max} * ${this.tickStep}`:void 0)}
213
57
  >
214
- ${ticks.map((_tick, i) => html`
58
+ ${n.map((s,o)=>l`
215
59
  <div class="tick">
216
- ${this.tickLabels ? html`
60
+ ${this.tickLabels?l`
217
61
  <div class="tickLabel">
218
- ${i * tickStep + this.min}
62
+ ${o*e+this.min}
219
63
  </div>
220
- ` : html``}
64
+ `:l``}
221
65
  </div>
222
66
  `)}
223
67
  </div>
224
- `;
225
- }
226
- renderTrackSegment(start, end) {
227
- if (this.variant === "ramp") {
228
- return html``;
229
- }
230
- return html`
68
+ `}renderTrackSegment(e,t){return this.variant==="ramp"?l``:l`
231
69
  <div
232
70
  class="track"
233
- style=${styleMap(this.trackSegmentStyles(start, end))}
71
+ style=${v(this.trackSegmentStyles(e,t))}
234
72
  role="presentation"
235
73
  ></div>
236
- `;
237
- }
238
- renderTrack() {
239
- const segments = this.handleController.trackSegments();
240
- const trackItems = [
241
- { id: "track0", html: this.renderTrackSegment(...segments[0]) },
242
- { id: "ramp", html: this.renderRamp() },
243
- { id: "ticks", html: this.renderTicks() },
244
- { id: "handles", html: this.handleController.render() },
245
- ...segments.slice(1).map(([start, end], index) => ({
246
- id: `track${index + 1}`,
247
- html: this.renderTrackSegment(start, end)
248
- }))
249
- ];
250
- return html`
74
+ `}renderTrack(){const e=this.handleController.trackSegments(),t=[{id:"track0",html:this.renderTrackSegment(...e[0])},{id:"ramp",html:this.renderRamp()},{id:"ticks",html:this.renderTicks()},{id:"handles",html:this.handleController.render()},...e.slice(1).map(([i,n],s)=>({id:`track${s+1}`,html:this.renderTrackSegment(i,n)}))];return l`
251
75
  <div
252
76
  id="track"
253
- ${streamingListener({
254
- start: ["pointerdown", this.handlePointerdown],
255
- streamInside: ["pointermove", this.handlePointermove],
256
- end: [["pointerup", "pointercancel"], this.handlePointerup]
257
- })}
77
+ ${$({start:["pointerdown",this.handlePointerdown],streamInside:["pointermove",this.handlePointermove],end:[["pointerup","pointercancel"],this.handlePointerup]})}
258
78
  >
259
79
  <div id="controls">
260
- ${repeat(trackItems, (item) => item.id, (item) => item.html)}
80
+ ${m(t,i=>i.id,i=>i.html)}
261
81
  </div>
262
82
  </div>
263
- `;
264
- }
265
- handlePointerdown(event) {
266
- this.handleController.handlePointerdown(event);
267
- }
268
- handlePointermove(event) {
269
- this.handleController.handlePointermove(event);
270
- }
271
- handlePointerup(event) {
272
- this.handleController.handlePointerup(event);
273
- }
274
- handleNumberInput(event) {
275
- var _a;
276
- const { value } = event.target;
277
- if (((_a = event.target) == null ? void 0 : _a.stepperActive) && !isNaN(value)) {
278
- this.value = value;
279
- return;
280
- }
281
- event.stopPropagation();
282
- }
283
- handleNumberChange(event) {
284
- var _a;
285
- const { value } = event.target;
286
- if (isNaN(value)) {
287
- event.target.value = this.value;
288
- event.stopPropagation();
289
- } else {
290
- this.value = value;
291
- if (!((_a = event.target) == null ? void 0 : _a.stepperActive)) {
292
- this.dispatchInputEvent();
293
- }
294
- }
295
- this.indeterminate = false;
296
- }
297
- trackSegmentStyles(start, end) {
298
- const size = end - start;
299
- const styles = {
300
- width: `${size * 100}%`,
301
- "--spectrum-slider-track-background-size": `${1 / size * 100}%`,
302
- "--spectrum-slider-track-segment-position": `${start * 100}%`
303
- };
304
- return styles;
305
- }
306
- async getUpdateComplete() {
307
- const complete = await super.getUpdateComplete();
308
- if (this.editable) {
309
- await this._numberFieldInput;
310
- await this.numberField.updateComplete;
311
- }
312
- await this.handleController.handleUpdatesComplete();
313
- return complete;
314
- }
315
- }
316
- __decorateClass([
317
- property({ type: Boolean, reflect: true })
318
- ], Slider.prototype, "editable", 1);
319
- __decorateClass([
320
- property({ type: Boolean, reflect: true, attribute: "hide-stepper" })
321
- ], Slider.prototype, "hideStepper", 2);
322
- __decorateClass([
323
- property()
324
- ], Slider.prototype, "type", 2);
325
- __decorateClass([
326
- property({ type: String })
327
- ], Slider.prototype, "variant", 1);
328
- __decorateClass([
329
- property({ attribute: false })
330
- ], Slider.prototype, "getAriaValueText", 2);
331
- __decorateClass([
332
- property({ type: String, reflect: true, attribute: "label-visibility" })
333
- ], Slider.prototype, "labelVisibility", 2);
334
- __decorateClass([
335
- property({ type: Number, reflect: true })
336
- ], Slider.prototype, "min", 2);
337
- __decorateClass([
338
- property({ type: Number, reflect: true })
339
- ], Slider.prototype, "max", 2);
340
- __decorateClass([
341
- property({ type: Number })
342
- ], Slider.prototype, "step", 2);
343
- __decorateClass([
344
- property({ type: Number, attribute: "tick-step" })
345
- ], Slider.prototype, "tickStep", 2);
346
- __decorateClass([
347
- property({ type: Boolean, attribute: "tick-labels" })
348
- ], Slider.prototype, "tickLabels", 2);
349
- __decorateClass([
350
- property({ type: Boolean, reflect: true })
351
- ], Slider.prototype, "disabled", 2);
352
- __decorateClass([
353
- property({ type: Boolean })
354
- ], Slider.prototype, "quiet", 2);
355
- __decorateClass([
356
- property({ type: Boolean })
357
- ], Slider.prototype, "indeterminate", 2);
358
- __decorateClass([
359
- query("#label")
360
- ], Slider.prototype, "labelEl", 2);
361
- __decorateClass([
362
- query("#number-field")
363
- ], Slider.prototype, "numberField", 2);
364
- __decorateClass([
365
- query("#track")
366
- ], Slider.prototype, "track", 2);
83
+ `}handlePointerdown(e){this.handleController.handlePointerdown(e)}handlePointermove(e){this.handleController.handlePointermove(e)}handlePointerup(e){this.handleController.handlePointerup(e)}handleNumberInput(e){var i;const{value:t}=e.target;if(((i=e.target)==null?void 0:i.stepperActive)&&!isNaN(t)){this.value=t;return}e.stopPropagation()}handleNumberChange(e){var i;const{value:t}=e.target;isNaN(t)?(e.target.value=this.value,e.stopPropagation()):(this.value=t,(i=e.target)!=null&&i.stepperActive||this.dispatchInputEvent()),this.indeterminate=!1}trackSegmentStyles(e,t){const i=t-e;return{width:`${i*100}%`,"--spectrum-slider-track-background-size":`${1/i*100}%`,"--spectrum-slider-track-segment-position":`${e*100}%`}}async getUpdateComplete(){const e=await super.getUpdateComplete();return this.editable&&(await this._numberFieldInput,await this.numberField.updateComplete),await this.handleController.handleUpdatesComplete(),e}}r([a({type:Boolean,reflect:!0})],Slider.prototype,"editable",1),r([a({type:Boolean,reflect:!0,attribute:"hide-stepper"})],Slider.prototype,"hideStepper",2),r([a()],Slider.prototype,"type",2),r([a({type:String})],Slider.prototype,"variant",1),r([a({attribute:!1})],Slider.prototype,"getAriaValueText",2),r([a({type:String,reflect:!0,attribute:"label-visibility"})],Slider.prototype,"labelVisibility",2),r([a({type:Number,reflect:!0})],Slider.prototype,"min",2),r([a({type:Number,reflect:!0})],Slider.prototype,"max",2),r([a({type:Number})],Slider.prototype,"step",2),r([a({type:Number,attribute:"tick-step"})],Slider.prototype,"tickStep",2),r([a({type:Boolean,attribute:"tick-labels"})],Slider.prototype,"tickLabels",2),r([a({type:Boolean,reflect:!0})],Slider.prototype,"disabled",2),r([a({type:Boolean})],Slider.prototype,"quiet",2),r([a({type:Boolean})],Slider.prototype,"indeterminate",2),r([u("#label")],Slider.prototype,"labelEl",2),r([u("#number-field")],Slider.prototype,"numberField",2),r([u("#track")],Slider.prototype,"track",2);
367
84
  //# sourceMappingURL=Slider.js.map
package/src/Slider.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["Slider.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n classMap,\n ifDefined,\n repeat,\n styleMap,\n} from '@spectrum-web-components/base/src/directives.js';\n\nimport sliderStyles from './slider.css.js';\nimport { ObserveSlotText } from '@spectrum-web-components/shared/src/observe-slot-text.js';\nimport { StyleInfo } from 'lit-html/directives/style-map';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport type { NumberField } from '@spectrum-web-components/number-field';\nimport { HandleController, HandleValueDictionary } from './HandleController.js';\nimport { SliderHandle } from './SliderHandle.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport type { NumberFormatter } from '@internationalized/number';\n\nexport const variants = ['filled', 'ramp', 'range', 'tick'];\n\n/**\n * @element sp-slider\n *\n * @slot - text label for the Slider\n * @slot handle - optionally accepts two or more sp-slider-handle elements\n */\nexport class Slider extends ObserveSlotText(SliderHandle, '') {\n public static override get styles(): CSSResultArray {\n return [sliderStyles];\n }\n\n public override handleController: HandleController = new HandleController(\n this\n );\n\n /**\n * Whether to display a Number Field along side the slider UI\n */\n @property({ type: Boolean, reflect: true })\n public get editable(): boolean {\n return this._editable;\n }\n\n public set editable(editable: boolean) {\n if (editable === this.editable) return;\n const oldValue = this.editable;\n this._editable = this.handleController.size < 2 ? editable : false;\n if (this.editable) {\n this._numberFieldInput = import(\n '@spectrum-web-components/number-field/sp-number-field.js'\n );\n }\n if (oldValue !== this.editable) {\n this.requestUpdate('editable', oldValue);\n }\n }\n\n private _editable = false;\n\n /**\n * Whether the stepper UI of the Number Field is hidden or not\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-stepper' })\n public hideStepper = false;\n\n @property()\n public type = '';\n\n @property({ type: String })\n public set variant(variant: string) {\n const oldVariant = this.variant;\n if (variant === this.variant) {\n return;\n }\n if (variants.includes(variant)) {\n this.setAttribute('variant', variant);\n this._variant = variant;\n } else {\n this.removeAttribute('variant');\n this._variant = '';\n }\n this.requestUpdate('variant', oldVariant);\n }\n\n public get variant(): string {\n return this._variant;\n }\n\n public get values(): HandleValueDictionary {\n return this.handleController.values;\n }\n\n public override get handleName(): string {\n return 'value';\n }\n\n /* Ensure that a '' value for `variant` removes the attribute instead of a blank value */\n private _variant = '';\n\n @property({ attribute: false })\n public getAriaValueText: (values: Map<string, string>) => string = (\n values\n ) => {\n const valueArray = [...values.values()];\n if (valueArray.length === 2)\n return `${valueArray[0]}${this._forcedUnit} - ${valueArray[1]}${this._forcedUnit}`;\n return valueArray.join(`${this._forcedUnit}, `) + this._forcedUnit;\n };\n\n public override get ariaValueText(): string {\n if (!this.getAriaValueText) {\n return `${this.value}${this._forcedUnit}`;\n }\n return this.getAriaValueText(this.handleController.formattedValues);\n }\n\n @property({ type: String, reflect: true, attribute: 'label-visibility' })\n public labelVisibility?: 'text' | 'value' | 'none';\n\n @property({ type: Number, reflect: true })\n public override min = 0;\n\n @property({ type: Number, reflect: true })\n public override max = 100;\n\n @property({ type: Number })\n public override step = 1;\n\n @property({ type: Number, attribute: 'tick-step' })\n public tickStep = 0;\n\n @property({ type: Boolean, attribute: 'tick-labels' })\n public tickLabels = false;\n\n @property({ type: Boolean, reflect: true })\n public override disabled = false;\n\n /**\n * Applies `quiet` to the underlying `sp-number-field` when `editable === true`.\n */\n @property({ type: Boolean })\n public quiet = false;\n\n /**\n * Applies `indeterminate` to the underlying `sp-number-field` when `editable === true`. Is removed on the next `change` event.\n */\n @property({ type: Boolean })\n public indeterminate = false;\n\n @query('#label')\n public labelEl!: HTMLLabelElement;\n\n @query('#number-field')\n public numberField!: NumberField;\n\n @query('#track')\n public track!: HTMLDivElement;\n\n public override get numberFormat(): NumberFormatter {\n return this.getNumberFormat();\n }\n\n public override get focusElement(): HTMLElement {\n return this.handleController.focusElement;\n }\n\n protected handleLabelClick(event: Event): void {\n if (this.editable) {\n event.preventDefault();\n this.focus();\n }\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderLabel()} ${this.renderTrack()}\n ${this.editable\n ? html`\n <sp-number-field\n .formatOptions=${this.formatOptions || {}}\n id=\"number-field\"\n min=${this.min}\n max=${this.max}\n step=${this.step}\n value=${this.value}\n ?hide-stepper=${this.hideStepper}\n ?disabled=${this.disabled}\n ?quiet=${this.quiet}\n ?indeterminate=${this.indeterminate}\n @input=${this.handleNumberInput}\n @change=${this.handleNumberChange}\n ></sp-number-field>\n `\n : html``}\n `;\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.handleController.hostConnected();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.handleController.hostDisconnected();\n }\n\n public override update(changedProperties: Map<string, boolean>): void {\n this.handleController.hostUpdate();\n if (changedProperties.has('disabled') && this.disabled) {\n this.handleController.cancelDrag();\n }\n super.update(changedProperties);\n }\n\n private renderLabel(): TemplateResult {\n const textLabelVisible =\n this.labelVisibility === 'none' || this.labelVisibility === 'value';\n const valueLabelVisible =\n this.labelVisibility === 'none' || this.labelVisibility === 'text';\n return html`\n <div id=\"label-container\">\n <sp-field-label\n class=${classMap({\n 'visually-hidden': textLabelVisible,\n })}\n ?disabled=${this.disabled}\n id=\"label\"\n for=${this.editable\n ? 'number-field'\n : this.handleController.activeHandleInputId}\n @click=${this.handleLabelClick}\n >\n ${this.slotHasContent ? html`` : this.label}\n <slot>${this.label}</slot>\n </sp-field-label>\n <output\n class=${classMap({\n 'visually-hidden': valueLabelVisible,\n })}\n id=\"value\"\n aria-live=\"off\"\n for=\"input\"\n >\n ${this.ariaValueText}\n </output>\n </div>\n `;\n }\n\n private renderRamp(): TemplateResult {\n if (this.variant !== 'ramp') {\n return html``;\n }\n return html`\n <div id=\"ramp\">\n <svg\n viewBox=\"0 0 240 16\"\n preserveAspectRatio=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M240,4v8c0,2.3-1.9,4.1-4.2,4L1,9C0.4,9,0,8.5,0,8c0-0.5,0.4-1,1-1l234.8-7C238.1-0.1,240,1.7,240,4z\"\n ></path>\n </svg>\n </div>\n `;\n }\n\n private renderTicks(): TemplateResult {\n if (this.variant !== 'tick') {\n return html``;\n }\n const tickStep = this.tickStep || this.step;\n const tickCount =\n ((this.max as number) - (this.min as number)) / tickStep;\n const partialFit = tickCount % 1 !== 0;\n const ticks = new Array(Math.floor(tickCount + 1));\n ticks.fill(0, 0, tickCount + 1);\n return html`\n <div\n class=\"${partialFit ? 'not-exact ' : ''}ticks\"\n style=${ifDefined(\n partialFit\n ? `--sp-slider-tick-offset: calc(100% / ${this.max} * ${this.tickStep}`\n : undefined\n )}\n >\n ${ticks.map(\n (_tick, i) => html`\n <div class=\"tick\">\n ${this.tickLabels\n ? html`\n <div class=\"tickLabel\">\n ${i * tickStep + this.min}\n </div>\n `\n : html``}\n </div>\n `\n )}\n </div>\n `;\n }\n\n private renderTrackSegment(start: number, end: number): TemplateResult {\n if (this.variant === 'ramp') {\n return html``;\n }\n return html`\n <div\n class=\"track\"\n style=${styleMap(this.trackSegmentStyles(start, end))}\n role=\"presentation\"\n ></div>\n `;\n }\n\n private renderTrack(): TemplateResult {\n const segments = this.handleController.trackSegments();\n\n const trackItems = [\n { id: 'track0', html: this.renderTrackSegment(...segments[0]) },\n { id: 'ramp', html: this.renderRamp() },\n { id: 'ticks', html: this.renderTicks() },\n { id: 'handles', html: this.handleController.render() },\n ...segments.slice(1).map(([start, end], index) => ({\n id: `track${index + 1}`,\n html: this.renderTrackSegment(start, end),\n })),\n ];\n\n return html`\n <div\n id=\"track\"\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: ['pointermove', this.handlePointermove],\n end: [['pointerup', 'pointercancel'], this.handlePointerup],\n })}\n >\n <div id=\"controls\">\n ${repeat(\n trackItems,\n (item) => item.id,\n (item) => item.html\n )}\n </div>\n </div>\n `;\n }\n\n protected handlePointerdown(event: PointerEvent): void {\n this.handleController.handlePointerdown(event);\n }\n\n protected handlePointermove(event: PointerEvent): void {\n this.handleController.handlePointermove(event);\n }\n\n protected handlePointerup(event: PointerEvent): void {\n this.handleController.handlePointerup(event);\n }\n\n private handleNumberInput(event: Event & { target: NumberField }): void {\n const { value } = event.target;\n if (event.target?.stepperActive && !isNaN(value)) {\n this.value = value;\n return;\n }\n // Do not apply uncommited values to the parent element unless interacting with the stepper UI.\n // Stop uncommited input from being annoucned to the parent application.\n event.stopPropagation();\n }\n\n private handleNumberChange(event: Event & { target: NumberField }): void {\n const { value } = event.target;\n if (isNaN(value)) {\n event.target.value = this.value;\n event.stopPropagation();\n } else {\n this.value = value;\n if (!event.target?.stepperActive) {\n // When stepper is not active, sythesize an `input` event so that the\n // `change` event isn't surprising.\n this.dispatchInputEvent();\n }\n }\n this.indeterminate = false;\n }\n\n private trackSegmentStyles(start: number, end: number): StyleInfo {\n const size = end - start;\n const styles: StyleInfo = {\n width: `${size * 100}%`,\n '--spectrum-slider-track-background-size': `${(1 / size) * 100}%`,\n '--spectrum-slider-track-segment-position': `${start * 100}%`,\n };\n return styles;\n }\n\n private _numberFieldInput: Promise<unknown> = Promise.resolve();\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n if (this.editable) {\n await this._numberFieldInput;\n await this.numberField.updateComplete;\n }\n await this.handleController.handleUpdatesComplete();\n return complete;\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }