@cas-smartdesign/lit-slider 7.1.0 → 7.2.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.
- package/dist/docs/basic-usages.js +9 -1
- package/dist/docs/doc.css +1 -1
- package/dist/docs/doc.mjs +120 -89
- package/dist/slider-with-externals.js +23 -41
- package/dist/slider-with-externals.js.map +4 -4
- package/dist/slider.d.ts +4 -3
- package/dist/slider.mjs +35 -32
- package/dist/slider.mjs.map +1 -1
- package/npm-third-party-licenses.json +53 -48
- package/package.json +7 -7
- package/readme.md +3 -1
package/dist/slider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement,
|
|
1
|
+
import { LitElement, TemplateResult } from "lit";
|
|
2
2
|
import { ValidationLevel } from "@cas-smartdesign/field-validation-message";
|
|
3
3
|
import "@cas-smartdesign/lit-input";
|
|
4
4
|
declare global {
|
|
@@ -50,8 +50,9 @@ export default class Slider extends LitElement {
|
|
|
50
50
|
connectedCallback(): void;
|
|
51
51
|
disconnectedCallback(): void;
|
|
52
52
|
private upgradeProperty;
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
static get observedAttributes(): string[];
|
|
54
|
+
attributeChangedCallback(name: string, old: string | null, value: string | null): void;
|
|
55
|
+
private updateValue;
|
|
55
56
|
get value(): number;
|
|
56
57
|
set value(newValue: number);
|
|
57
58
|
private roundToStep;
|
package/dist/slider.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { LitElement as p,
|
|
1
|
+
import { LitElement as p, unsafeCSS as g, css as m, html as d } from "lit";
|
|
2
2
|
import { property as o } from "lit/decorators/property.js";
|
|
3
3
|
import v from "hex-rgb";
|
|
4
4
|
import "@cas-smartdesign/lit-input";
|
|
5
|
-
import { Big as
|
|
6
|
-
class
|
|
5
|
+
import { Big as b } from "big.js";
|
|
6
|
+
class f {
|
|
7
7
|
constructor() {
|
|
8
8
|
this._rgbaColors = /* @__PURE__ */ new Map(), this._originalColors = /* @__PURE__ */ new Map();
|
|
9
9
|
}
|
|
@@ -73,21 +73,21 @@ class b {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
const C = ":host{display:block;position:relative;width:100%;height:48px;cursor:pointer;touch-action:none;contain:layout style}:host([hidden]){display:none!important}:host([disabled]){opacity:.6;cursor:default;filter:grayscale(100%)}:host([disabled]) sd-lit-input{opacity:1}#track-container{position:absolute;top:50%;left:0;height:2px;overflow:hidden}#track{position:absolute;width:100%;height:100%;transform-origin:left top;will-change:transform}:host(:focus) #thumb{top:11px;left:-14px;border-width:8px}#thumb[active]{top:7px!important;left:-18px!important;border-width:12px!important}#thumb{width:12px;height:12px;position:absolute;top:19px;left:-6px;border-radius:50%;border-width:0;background-clip:padding-box;-webkit-user-select:none;user-select:none;will-change:transform;border-style:solid}sd-lit-input{position:absolute;height:100%;width:var(--slider-suffix-width, 50px);right:0;text-align:center;outline:none;white-space:nowrap}sd-field-validation-message{position:absolute;bottom:0}";
|
|
76
|
-
var y = Object.defineProperty,
|
|
77
|
-
for (var r =
|
|
78
|
-
(h = u[s]) && (r =
|
|
79
|
-
return
|
|
76
|
+
var y = Object.defineProperty, n = (u, t, e, i) => {
|
|
77
|
+
for (var r = void 0, s = u.length - 1, h; s >= 0; s--)
|
|
78
|
+
(h = u[s]) && (r = h(t, e, r) || r);
|
|
79
|
+
return r && y(t, e, r), r;
|
|
80
80
|
}, l;
|
|
81
81
|
const a = (l = class extends p {
|
|
82
82
|
constructor() {
|
|
83
|
-
super(), this.thumbPosition = 0, this._value = 0, this._relativeValue = 0, this.min = 0, this.max = 1, this.colorBlender = new
|
|
83
|
+
super(), this.thumbPosition = 0, this._value = 0, this._relativeValue = 0, this.min = 0, this.max = 1, this.colorBlender = new f(), this.baseColor = l.defaultColor, this.resizeObserver = new ResizeObserver(() => {
|
|
84
84
|
window.requestAnimationFrame(() => {
|
|
85
85
|
this.lastKnownWidth !== this.trackContainerWidth && (this.lastKnownWidth = this.trackContainerWidth, this.doUpdateRelativeValue(this._relativeValue, !0));
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
firstUpdated(t) {
|
|
90
|
-
super.firstUpdated(t), this.
|
|
90
|
+
super.firstUpdated(t), this.updateValue(Number.parseFloat(this.getAttribute("value")) || this._value), this.addEventListener(
|
|
91
91
|
this.useTouchEvents() ? "touchstart" : "pointerdown",
|
|
92
92
|
(e) => {
|
|
93
93
|
!this.hasAttribute("disabled") && e.composedPath().indexOf(this.inputElement) === -1 && (e.preventDefault(), e.pointerId && this.setPointerCapture(e.pointerId), this.focus(), this.listenMoveEvents(
|
|
@@ -110,12 +110,15 @@ const a = (l = class extends p {
|
|
|
110
110
|
delete this[t], this[t] = e;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
|
|
114
|
-
const t =
|
|
115
|
-
|
|
113
|
+
static get observedAttributes() {
|
|
114
|
+
const t = super.observedAttributes;
|
|
115
|
+
return t.push("value"), t;
|
|
116
116
|
}
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
attributeChangedCallback(t, e, i) {
|
|
118
|
+
super.attributeChangedCallback(t, e, i), (t === "value" || t == "step") && this.hasUpdated && this.updateValue(Number.parseFloat(i));
|
|
119
|
+
}
|
|
120
|
+
updateValue(t) {
|
|
121
|
+
this.setValueInternal(t) && (this.inputElement && (this.inputElement.value = this.formattedValue()), this._value != t && this.fireBothValueChangeEvents());
|
|
119
122
|
}
|
|
120
123
|
get value() {
|
|
121
124
|
return this._value;
|
|
@@ -127,8 +130,8 @@ const a = (l = class extends p {
|
|
|
127
130
|
let e = Number.parseFloat(t);
|
|
128
131
|
if (Number.isNaN(e))
|
|
129
132
|
return this._value;
|
|
130
|
-
if (this.step) {
|
|
131
|
-
const i =
|
|
133
|
+
if (this.step && e >= this.min && e <= this.max) {
|
|
134
|
+
const i = new b(e).minus(this.min).div(this.step).round().mul(this.step).plus(this.min);
|
|
132
135
|
e = Number.parseFloat(i.toString());
|
|
133
136
|
}
|
|
134
137
|
return e;
|
|
@@ -160,8 +163,8 @@ const a = (l = class extends p {
|
|
|
160
163
|
}
|
|
161
164
|
static get styles() {
|
|
162
165
|
return [
|
|
163
|
-
|
|
164
|
-
${
|
|
166
|
+
m`
|
|
167
|
+
${g(C)}
|
|
165
168
|
`
|
|
166
169
|
];
|
|
167
170
|
}
|
|
@@ -277,46 +280,46 @@ const a = (l = class extends p {
|
|
|
277
280
|
}, l.ID = "sd-lit-slider", l.defaultColor = "rgb(20, 103, 186)", l);
|
|
278
281
|
n([
|
|
279
282
|
o({ type: Number })
|
|
280
|
-
], a.prototype, "thumbPosition"
|
|
283
|
+
], a.prototype, "thumbPosition");
|
|
281
284
|
n([
|
|
282
285
|
o({ type: Number, reflect: !0 })
|
|
283
|
-
], a.prototype, "min"
|
|
286
|
+
], a.prototype, "min");
|
|
284
287
|
n([
|
|
285
288
|
o({ type: Number, reflect: !0 })
|
|
286
|
-
], a.prototype, "max"
|
|
289
|
+
], a.prototype, "max");
|
|
287
290
|
n([
|
|
288
291
|
o({ type: Number, reflect: !0 })
|
|
289
|
-
], a.prototype, "step"
|
|
292
|
+
], a.prototype, "step");
|
|
290
293
|
n([
|
|
291
294
|
o({ type: Boolean, reflect: !0 })
|
|
292
|
-
], a.prototype, "editable"
|
|
295
|
+
], a.prototype, "editable");
|
|
293
296
|
n([
|
|
294
297
|
o({ type: Boolean, reflect: !0 })
|
|
295
|
-
], a.prototype, "clampValue"
|
|
298
|
+
], a.prototype, "clampValue");
|
|
296
299
|
n([
|
|
297
300
|
o({ type: String, reflect: !0 })
|
|
298
|
-
], a.prototype, "inputSuffix"
|
|
301
|
+
], a.prototype, "inputSuffix");
|
|
299
302
|
n([
|
|
300
303
|
o({ type: Boolean, reflect: !0 })
|
|
301
|
-
], a.prototype, "disabled"
|
|
304
|
+
], a.prototype, "disabled");
|
|
302
305
|
n([
|
|
303
306
|
o({ type: String, attribute: !0 })
|
|
304
|
-
], a.prototype, "validationMessage"
|
|
307
|
+
], a.prototype, "validationMessage");
|
|
305
308
|
n([
|
|
306
309
|
o({ type: String, attribute: !0 })
|
|
307
|
-
], a.prototype, "validationIconSrc"
|
|
310
|
+
], a.prototype, "validationIconSrc");
|
|
308
311
|
n([
|
|
309
312
|
o({ type: String, attribute: !0 })
|
|
310
|
-
], a.prototype, "validationLevel"
|
|
313
|
+
], a.prototype, "validationLevel");
|
|
311
314
|
n([
|
|
312
315
|
o({ type: String, attribute: !0 })
|
|
313
|
-
], a.prototype, "decimalSeparator"
|
|
316
|
+
], a.prototype, "decimalSeparator");
|
|
314
317
|
n([
|
|
315
318
|
o({ type: Boolean })
|
|
316
|
-
], a.prototype, "active"
|
|
319
|
+
], a.prototype, "active");
|
|
317
320
|
n([
|
|
318
321
|
o()
|
|
319
|
-
], a.prototype, "baseColor"
|
|
322
|
+
], a.prototype, "baseColor");
|
|
320
323
|
let c = a;
|
|
321
324
|
customElements.get(c.ID) || customElements.define(c.ID, c);
|
|
322
325
|
export {
|
package/dist/slider.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.mjs","sources":["../colorblender.ts","../slider.ts"],"sourcesContent":["import hexRgb from \"hex-rgb\";\n\nexport interface IColor {\n red: number;\n green: number;\n blue: number;\n alpha: number;\n}\n\nexport default class ColorBlender {\n private _rgbaColors: Map<number, IColor> = new Map();\n private _originalColors: Map<number, string> = new Map();\n\n public get colors(): Map<number, string> {\n return this._originalColors;\n }\n\n public set colors(newColors: Map<number, string>) {\n this._rgbaColors.clear();\n this._originalColors = newColors;\n if (newColors && newColors.size) {\n const invalidColorKey = Array.from(newColors.keys()).find((value) => {\n return value < 0 || value > 1;\n });\n if (invalidColorKey) {\n throw Error(\n \"The keys of the colors must represent the relative value where the color is fully applied.\",\n );\n }\n newColors.forEach((value, key) => {\n const color: IColor = this.convertFromRGBAString(value) || this.convertFromHex(value);\n if (Object.keys(color).length === 0 && color.constructor === Object) {\n throw Error(`Cannot convert color: ${value} to rgba-color`);\n } else {\n this._rgbaColors.set(key, color);\n }\n });\n const sortedEntries = Array.from(this._rgbaColors.entries()).sort();\n this._rgbaColors = new Map(sortedEntries);\n }\n }\n\n public blend(relativeValue: number): string {\n if (!this._rgbaColors.size) {\n throw Error(\"It is not possible to blend without a color list.\");\n }\n let leftColor: [number, IColor];\n let rightColor: [number, IColor];\n for (const entry of this._rgbaColors) {\n if (!leftColor) {\n leftColor = entry;\n }\n if (entry[0] < relativeValue) {\n leftColor = entry;\n } else if (entry[0] === relativeValue) {\n leftColor = rightColor = entry;\n break;\n } else {\n rightColor = entry;\n break;\n }\n }\n if (!rightColor) {\n rightColor = leftColor;\n }\n const diff = rightColor[0] - leftColor[0];\n if (diff) {\n return this.blendColors(leftColor[1], rightColor[1], (relativeValue - leftColor[0]) / diff);\n } else {\n return this.convertToRGBAString(leftColor[1]);\n }\n }\n\n private blendColors(colorA: IColor, colorB: IColor, relativeOffsetFromA: number): string {\n return this.convertToRGBAString({\n red: Math.round(colorA.red + (colorB.red - colorA.red) * relativeOffsetFromA),\n green: Math.round(colorA.green + (colorB.green - colorA.green) * relativeOffsetFromA),\n blue: Math.round(colorA.blue + (colorB.blue - colorA.blue) * relativeOffsetFromA),\n alpha: colorA.alpha + (colorB.alpha - colorA.alpha) * relativeOffsetFromA,\n });\n }\n\n private convertFromHex(hexColor: string): IColor {\n const color = hexRgb(hexColor);\n if (color.alpha > 1) {\n color.alpha /= 255;\n }\n return color;\n }\n\n private convertFromRGBAString(rgbaColor: string): IColor {\n const match = rgbaColor.match(/rgba?\\((\\d{1,3}), ?(\\d{1,3}), ?(\\d{1,3})\\)?(?:, ?(\\d(?:\\.\\d?))\\))?/);\n return match\n ? {\n red: parseInt(match[1], 10),\n green: parseInt(match[2], 10),\n blue: parseInt(match[3], 10),\n alpha: parseInt(match[4], 10) || 1,\n }\n : null;\n }\n\n public transparentize(color: string, alpha: number): string {\n return this.convertToRGBAString(this.convertFromRGBAString(color), alpha);\n }\n\n private convertToRGBAString(color: IColor, alpha?: number): string {\n return `rgba(${color.red},${color.green},${color.blue},${alpha || color.alpha})`;\n }\n}\n","import { LitElement, html, PropertyValues, unsafeCSS, TemplateResult, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport ColorBlender from \"./colorblender\";\nimport { ValidationLevel } from \"@cas-smartdesign/field-validation-message\";\nimport SDInput from \"@cas-smartdesign/lit-input\";\nimport \"@cas-smartdesign/lit-input\";\nimport { Big } from \"big.js\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Slider.ID]: Slider;\n }\n}\n\nimport style from \"./style.scss?inline\";\n\ninterface IEventListenerRegistration {\n remove();\n}\n\nexport interface IValueChangeEvent {\n value: number;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n \"immediate-value-change\": CustomEvent<IValueChangeEvent>;\n \"value-change\": CustomEvent<IValueChangeEvent>;\n}\n\nexport default interface Slider {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class Slider extends LitElement {\n public static readonly ID = \"sd-lit-slider\";\n\n @property({ type: Number })\n private thumbPosition = 0;\n private _value = 0;\n private _relativeValue = 0;\n\n @property({ type: Number, reflect: true })\n public min = 0;\n @property({ type: Number, reflect: true })\n public max = 1;\n @property({ type: Number, reflect: true })\n public step: number;\n @property({ type: Boolean, reflect: true })\n public editable: boolean;\n @property({ type: Boolean, reflect: true })\n public clampValue: boolean;\n @property({ type: String, reflect: true })\n public inputSuffix: string;\n @property({ type: Boolean, reflect: true })\n public disabled: boolean;\n @property({ type: String, attribute: true })\n public validationMessage: string;\n @property({ type: String, attribute: true })\n public validationIconSrc: string;\n @property({ type: String, attribute: true })\n public validationLevel: ValidationLevel;\n @property({ type: String, attribute: true })\n public decimalSeparator: string;\n\n @property({ type: Boolean })\n private active: boolean;\n\n private colorBlender: ColorBlender = new ColorBlender();\n private static defaultColor = \"rgb(20, 103, 186)\";\n @property()\n private baseColor: string = Slider.defaultColor;\n\n private resizeObserver: ResizeObserver;\n private lastKnownWidth: number;\n private _trackContainer: HTMLElement;\n private _inputElement: SDInput;\n private updateAlreadyRequested: boolean;\n\n constructor() {\n super();\n this.resizeObserver = new ResizeObserver(() => {\n window.requestAnimationFrame(() => {\n if (this.lastKnownWidth !== this.trackContainerWidth) {\n this.lastKnownWidth = this.trackContainerWidth;\n this.doUpdateRelativeValue(this._relativeValue, true);\n }\n });\n });\n }\n\n public firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n this.updateInitialValue();\n\n this.addEventListener(\n this.useTouchEvents() ? \"touchstart\" : \"pointerdown\",\n (event: TouchEvent | PointerEvent) => {\n if (!this.hasAttribute(\"disabled\") && event.composedPath().indexOf(this.inputElement) === -1) {\n event.preventDefault();\n if ((event as PointerEvent).pointerId) {\n this.setPointerCapture((event as PointerEvent).pointerId);\n }\n this.focus();\n this.listenMoveEvents(\n (event as PointerEvent).clientX || (event as TouchEvent).changedTouches[0].clientX,\n );\n }\n },\n );\n this.addEventListener(\"keydown\", this.handleKeyDown, true);\n this.setAttribute(\"aria-valuemin\", this.min.toString());\n this.setAttribute(\"aria-valuemax\", this.max.toString());\n if (!this.hasAttribute(\"tabindex\")) {\n this.setAttribute(\"tabindex\", \"0\");\n }\n }\n\n public connectedCallback() {\n super.connectedCallback();\n [\"colors\", \"min\", \"max\", \"step\", \"editable\", \"inputSuffix\", \"value\"].forEach((p) => {\n this.upgradeProperty(p);\n });\n this.resizeObserver.observe(this);\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n this.lastKnownWidth = undefined;\n this.resizeObserver.disconnect();\n }\n\n private upgradeProperty(propertyName: string): void {\n if (Object.prototype.hasOwnProperty.call(this, propertyName)) {\n const value = this[propertyName];\n delete this[propertyName];\n this[propertyName] = value;\n }\n }\n\n private updateInitialValue(): void {\n const initialValue = Number.parseFloat(this.getAttribute(\"value\")) || this._value;\n if (this.setValueInternal(initialValue)) {\n if (this.inputElement) {\n this.inputElement.value = this.formattedValue();\n }\n this.fireBothValueChangeEvents();\n }\n }\n\n protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n if (_changedProperties.has(\"step\")) {\n // Ensure value is rounded based on step.\n if (this.setValueInternal(this._value)) {\n this.fireBothValueChangeEvents();\n }\n }\n return super.shouldUpdate(_changedProperties);\n }\n\n public get value(): number {\n return this._value;\n }\n\n public set value(newValue: number) {\n const hasChanged = this.setValueInternal(newValue);\n if (hasChanged) {\n this.fireBothValueChangeEvents();\n }\n }\n\n private roundToStep(rawValue: number): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let roundedValue = Number.parseFloat(rawValue as any);\n if (Number.isNaN(roundedValue)) {\n return this._value;\n }\n if (this.step) {\n const coercedBigDecimal = Big(roundedValue).div(this.step).round().mul(this.step);\n roundedValue = Number.parseFloat(coercedBigDecimal.toString());\n }\n return roundedValue;\n }\n\n private setValueInternal(newValue: number): boolean {\n const roundedValue = this.roundToStep(newValue);\n const clampedValue = this.clampValue ? Math.max(this.min, Math.min(this.max, roundedValue)) : roundedValue;\n if (this._value !== clampedValue) {\n const oldValue = this._value;\n this._value = clampedValue;\n this.relativeValue = (clampedValue - this.min) / (this.max - this.min);\n this.setAttribute(\"aria-valuenow\", this._value.toString());\n this.requestUpdate(\"value\", oldValue);\n return true;\n }\n return false;\n }\n\n get relativeValue() {\n return this._relativeValue;\n }\n\n set relativeValue(newRelativeValue: number) {\n if (this._relativeValue !== newRelativeValue) {\n this.doUpdateRelativeValue(newRelativeValue);\n }\n }\n\n private doUpdateRelativeValue(newRelativeValue: number, skipColorUpdate?: boolean) {\n this._relativeValue = newRelativeValue;\n this.thumbPosition = Math.min(Math.max(0, newRelativeValue), 1) * this.trackContainerWidth;\n const newValueBasedOnRelativeValue = this.min + (this.max - this.min) * this._relativeValue;\n this.setValueInternal(newValueBasedOnRelativeValue);\n if (!skipColorUpdate && this.colors && this.colors.size) {\n this.baseColor = this.colorBlender.blend(this._relativeValue);\n }\n }\n\n public get colors(): Map<number, string> {\n return this.colorBlender.colors;\n }\n\n public set colors(newColors: Map<number, string>) {\n this.colorBlender.colors = newColors;\n if (this.colors && this.colors.size) {\n this.baseColor = this.colorBlender.blend(this._relativeValue);\n } else {\n this.baseColor = Slider.defaultColor;\n }\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n public render(): TemplateResult {\n const trackBackgroundColor = this.colorBlender.transparentize(this.baseColor, 0.26);\n const trackContainerStyle = `background-color:${trackBackgroundColor}; right: ${\n this.editable ? \"calc(var(--slider-suffix-width, 50px) + 8px)\" : \"0\"\n }`;\n const trackStyle = `transform: scaleX(${this.relativeValue}); background-color:${this.baseColor};`;\n const thumbStyle = `transform: translateX(${this.thumbPosition}px); background-color:${this.baseColor}; border-color:${trackBackgroundColor};`;\n return html`\n <div id=\"track-container\" style=\"${trackContainerStyle}\">\n <div id=\"track\" style=\"${trackStyle}\"></div>\n </div>\n <div id=\"thumb\" ?active=\"${this.active}\" style=\"${thumbStyle}\"></div>\n ${this.editable &&\n html`\n <sd-lit-input\n .value=\"${this.formattedValue()}\"\n @value-change=\"${this.onInputValueChange}\"\n ?disabled=\"${this.disabled}\"\n ><span slot=\"suffix\">${this.inputSuffix}</span>\n </sd-lit-input>\n `}\n ${this.validationMessage &&\n html`\n <sd-field-validation-message\n .message=\"${this.validationMessage}\"\n .icon=\"${this.validationIconSrc}\"\n .level=\"${this.validationLevel}\"\n >\n </sd-field-validation-message>\n `}\n `;\n }\n\n private listenMoveEvents(currentClientX: number) {\n this.active = true;\n this.onPointerMove(currentClientX);\n\n const eventListenersToRemove: IEventListenerRegistration[] = [];\n const pointerMoveListener = (event) => {\n event.stopPropagation();\n event.preventDefault();\n this.onPointerMove(event.clientX || (event.changedTouches && event.changedTouches[0].clientX));\n };\n const pointerUpListener = () => {\n this.active = false;\n eventListenersToRemove.forEach((reg) => reg.remove());\n this.fireValueChange();\n };\n if (this.useTouchEvents()) {\n eventListenersToRemove.push(this.addPointerEventListener(\"touchmove\", pointerMoveListener));\n eventListenersToRemove.push(this.addPointerEventListener(\"touchend\", pointerUpListener));\n eventListenersToRemove.push(this.addPointerEventListener(\"touchcancel\", pointerUpListener));\n } else {\n eventListenersToRemove.push(this.addPointerEventListener(\"pointermove\", pointerMoveListener));\n eventListenersToRemove.push(this.addPointerEventListener(\"pointerup\", pointerUpListener));\n }\n }\n\n private onPointerMove(clientX: number): void {\n if (this.updateAlreadyRequested) {\n return;\n }\n this.updateAlreadyRequested = true;\n window.requestAnimationFrame(async () => {\n this.updateAlreadyRequested = false;\n this.updateThumbPosition(clientX);\n const previousValue = this.relativeValue;\n this.relativeValue = this.thumbPosition / this.trackContainerWidth;\n if (this.relativeValue !== previousValue) {\n await this.updateComplete;\n this.fireValueChange(true);\n if (!this.active) {\n this.fireValueChange();\n }\n }\n });\n }\n\n private addPointerEventListener(type: string, listener: EventListener): IEventListenerRegistration {\n window.addEventListener(type, listener, true);\n return {\n remove: () => {\n window.removeEventListener(type, listener, true);\n },\n };\n }\n\n private updateThumbPosition(clientX: number): void {\n this.thumbPosition = Math.min(\n this.trackContainerWidth,\n Math.max(0, clientX - this.getBoundingClientRect().left),\n );\n if (this.max - this.min > 1) {\n // Enforce integer steps by pointer move events. Fixes #231868\n const thumbStepForIntegerOffset = this.trackContainerWidth / (this.max - this.min);\n const thumbPositionError = this.thumbPosition % thumbStepForIntegerOffset;\n if (thumbPositionError) {\n if (thumbPositionError < thumbStepForIntegerOffset / 2) {\n this.thumbPosition -= thumbPositionError;\n } else {\n this.thumbPosition += thumbStepForIntegerOffset - thumbPositionError;\n }\n }\n }\n }\n\n private onInputValueChange(event: CustomEvent) {\n this.value = Number(event.detail.value.replace(RegExp(this.escapedDecimalSeparator), \".\"));\n if (String(this.value) !== String(event.detail.value)) {\n (event.target as SDInput).value = String(this.value);\n }\n }\n\n private formattedValue(): string {\n return this.value.toString().replace(/\\./, this.decimalSeparatorOrDefault);\n }\n\n private get escapedDecimalSeparator(): string {\n return this.decimalSeparatorOrDefault.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n private get decimalSeparatorOrDefault(): string {\n return this.decimalSeparator || Number(1.1).toLocaleString(this.navigatorLanguage).substring(1, 2);\n }\n\n private get navigatorLanguage(): string {\n if (navigator.languages && navigator.languages.length) {\n return navigator.languages[0];\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (navigator as any).userLanguage || navigator.language || (navigator as any).browserLanguage || \"en\";\n }\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (!this.hasAttribute(\"disabled\") && event.composedPath().indexOf(this.inputElement) === -1) {\n let offset = this.step || (this.max - this.min) / 100;\n if (this.max - this.min > 1) {\n // Enforce integer steps by keydown events. Fixes #231868\n offset = Math.round(offset) || 1;\n }\n switch (event.keyCode) {\n case 37:\n case 40:\n this.value = Math.max(this.value - offset, this.min);\n event.preventDefault();\n break;\n case 38:\n case 39:\n this.value = Math.min(this.value + offset, this.max);\n event.preventDefault();\n break;\n }\n }\n }\n\n private get inputElement(): SDInput {\n if (!this._inputElement) {\n this._inputElement = this.shadowRoot.querySelector(\"sd-lit-input\");\n }\n return this._inputElement;\n }\n\n private get trackContainer(): HTMLElement {\n if (!this._trackContainer) {\n this._trackContainer = this.shadowRoot.querySelector(\"#track-container\");\n }\n return this._trackContainer;\n }\n\n private get trackContainerWidth(): number {\n return this.trackContainer && this.trackContainer.offsetWidth;\n }\n\n private fireBothValueChangeEvents(): void {\n this.fireValueChange(true);\n this.fireValueChange();\n }\n\n private fireValueChange(immediate?: boolean): void {\n this.dispatchEvent(\n new CustomEvent<IValueChangeEvent>(`${immediate ? \"immediate-\" : \"\"}value-change`, {\n detail: { value: this.value },\n }),\n );\n }\n\n private useTouchEvents(): boolean {\n return this.hasAttribute(\"use-touch-events\");\n }\n}\n\nif (!customElements.get(Slider.ID)) {\n customElements.define(Slider.ID, Slider);\n}\n"],"names":["ColorBlender","newColors","value","key","color","sortedEntries","relativeValue","leftColor","rightColor","entry","diff","colorA","colorB","relativeOffsetFromA","hexColor","hexRgb","rgbaColor","match","alpha","_Slider","_a","LitElement","changedProperties","event","p","propertyName","initialValue","_changedProperties","newValue","rawValue","roundedValue","coercedBigDecimal","Big","clampedValue","oldValue","newRelativeValue","skipColorUpdate","newValueBasedOnRelativeValue","css","unsafeCSS","style","trackBackgroundColor","trackContainerStyle","trackStyle","thumbStyle","html","currentClientX","eventListenersToRemove","pointerMoveListener","pointerUpListener","reg","clientX","previousValue","type","listener","thumbStepForIntegerOffset","thumbPositionError","offset","immediate","__decorateClass","property","Slider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slider.mjs","sources":["../colorblender.ts","../slider.ts"],"sourcesContent":["import hexRgb from \"hex-rgb\";\n\nexport interface IColor {\n red: number;\n green: number;\n blue: number;\n alpha: number;\n}\n\nexport default class ColorBlender {\n private _rgbaColors: Map<number, IColor> = new Map();\n private _originalColors: Map<number, string> = new Map();\n\n public get colors(): Map<number, string> {\n return this._originalColors;\n }\n\n public set colors(newColors: Map<number, string>) {\n this._rgbaColors.clear();\n this._originalColors = newColors;\n if (newColors && newColors.size) {\n const invalidColorKey = Array.from(newColors.keys()).find((value) => {\n return value < 0 || value > 1;\n });\n if (invalidColorKey) {\n throw Error(\n \"The keys of the colors must represent the relative value where the color is fully applied.\",\n );\n }\n newColors.forEach((value, key) => {\n const color: IColor = this.convertFromRGBAString(value) || this.convertFromHex(value);\n if (Object.keys(color).length === 0 && color.constructor === Object) {\n throw Error(`Cannot convert color: ${value} to rgba-color`);\n } else {\n this._rgbaColors.set(key, color);\n }\n });\n const sortedEntries = Array.from(this._rgbaColors.entries()).sort();\n this._rgbaColors = new Map(sortedEntries);\n }\n }\n\n public blend(relativeValue: number): string {\n if (!this._rgbaColors.size) {\n throw Error(\"It is not possible to blend without a color list.\");\n }\n let leftColor: [number, IColor];\n let rightColor: [number, IColor];\n for (const entry of this._rgbaColors) {\n if (!leftColor) {\n leftColor = entry;\n }\n if (entry[0] < relativeValue) {\n leftColor = entry;\n } else if (entry[0] === relativeValue) {\n leftColor = rightColor = entry;\n break;\n } else {\n rightColor = entry;\n break;\n }\n }\n if (!rightColor) {\n rightColor = leftColor;\n }\n const diff = rightColor[0] - leftColor[0];\n if (diff) {\n return this.blendColors(leftColor[1], rightColor[1], (relativeValue - leftColor[0]) / diff);\n } else {\n return this.convertToRGBAString(leftColor[1]);\n }\n }\n\n private blendColors(colorA: IColor, colorB: IColor, relativeOffsetFromA: number): string {\n return this.convertToRGBAString({\n red: Math.round(colorA.red + (colorB.red - colorA.red) * relativeOffsetFromA),\n green: Math.round(colorA.green + (colorB.green - colorA.green) * relativeOffsetFromA),\n blue: Math.round(colorA.blue + (colorB.blue - colorA.blue) * relativeOffsetFromA),\n alpha: colorA.alpha + (colorB.alpha - colorA.alpha) * relativeOffsetFromA,\n });\n }\n\n private convertFromHex(hexColor: string): IColor {\n const color = hexRgb(hexColor);\n if (color.alpha > 1) {\n color.alpha /= 255;\n }\n return color;\n }\n\n private convertFromRGBAString(rgbaColor: string): IColor {\n const match = rgbaColor.match(/rgba?\\((\\d{1,3}), ?(\\d{1,3}), ?(\\d{1,3})\\)?(?:, ?(\\d(?:\\.\\d?))\\))?/);\n return match\n ? {\n red: parseInt(match[1], 10),\n green: parseInt(match[2], 10),\n blue: parseInt(match[3], 10),\n alpha: parseInt(match[4], 10) || 1,\n }\n : null;\n }\n\n public transparentize(color: string, alpha: number): string {\n return this.convertToRGBAString(this.convertFromRGBAString(color), alpha);\n }\n\n private convertToRGBAString(color: IColor, alpha?: number): string {\n return `rgba(${color.red},${color.green},${color.blue},${alpha || color.alpha})`;\n }\n}\n","import { LitElement, html, PropertyValues, unsafeCSS, TemplateResult, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport ColorBlender from \"./colorblender\";\nimport { ValidationLevel } from \"@cas-smartdesign/field-validation-message\";\nimport SDInput from \"@cas-smartdesign/lit-input\";\nimport \"@cas-smartdesign/lit-input\";\nimport { Big } from \"big.js\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Slider.ID]: Slider;\n }\n}\n\nimport style from \"./style.scss?inline\";\n\ninterface IEventListenerRegistration {\n remove();\n}\n\nexport interface IValueChangeEvent {\n value: number;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n \"immediate-value-change\": CustomEvent<IValueChangeEvent>;\n \"value-change\": CustomEvent<IValueChangeEvent>;\n}\n\nexport default interface Slider {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class Slider extends LitElement {\n public static readonly ID = \"sd-lit-slider\";\n\n @property({ type: Number })\n private thumbPosition = 0;\n private _value = 0;\n private _relativeValue = 0;\n\n @property({ type: Number, reflect: true })\n public min = 0;\n @property({ type: Number, reflect: true })\n public max = 1;\n @property({ type: Number, reflect: true })\n public step: number;\n @property({ type: Boolean, reflect: true })\n public editable: boolean;\n @property({ type: Boolean, reflect: true })\n public clampValue: boolean;\n @property({ type: String, reflect: true })\n public inputSuffix: string;\n @property({ type: Boolean, reflect: true })\n public disabled: boolean;\n @property({ type: String, attribute: true })\n public validationMessage: string;\n @property({ type: String, attribute: true })\n public validationIconSrc: string;\n @property({ type: String, attribute: true })\n public validationLevel: ValidationLevel;\n @property({ type: String, attribute: true })\n public decimalSeparator: string;\n\n @property({ type: Boolean })\n private active: boolean;\n\n private colorBlender: ColorBlender = new ColorBlender();\n private static defaultColor = \"rgb(20, 103, 186)\";\n @property()\n private baseColor: string = Slider.defaultColor;\n\n private resizeObserver: ResizeObserver;\n private lastKnownWidth: number;\n private _trackContainer: HTMLElement;\n private _inputElement: SDInput;\n private updateAlreadyRequested: boolean;\n\n constructor() {\n super();\n this.resizeObserver = new ResizeObserver(() => {\n window.requestAnimationFrame(() => {\n if (this.lastKnownWidth !== this.trackContainerWidth) {\n this.lastKnownWidth = this.trackContainerWidth;\n this.doUpdateRelativeValue(this._relativeValue, true);\n }\n });\n });\n }\n\n public firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n this.updateValue(Number.parseFloat(this.getAttribute(\"value\")) || this._value);\n\n this.addEventListener(\n this.useTouchEvents() ? \"touchstart\" : \"pointerdown\",\n (event: TouchEvent | PointerEvent) => {\n if (!this.hasAttribute(\"disabled\") && event.composedPath().indexOf(this.inputElement) === -1) {\n event.preventDefault();\n if ((event as PointerEvent).pointerId) {\n this.setPointerCapture((event as PointerEvent).pointerId);\n }\n this.focus();\n this.listenMoveEvents(\n (event as PointerEvent).clientX || (event as TouchEvent).changedTouches[0].clientX,\n );\n }\n },\n );\n this.addEventListener(\"keydown\", this.handleKeyDown, true);\n this.setAttribute(\"aria-valuemin\", this.min.toString());\n this.setAttribute(\"aria-valuemax\", this.max.toString());\n if (!this.hasAttribute(\"tabindex\")) {\n this.setAttribute(\"tabindex\", \"0\");\n }\n }\n\n public connectedCallback() {\n super.connectedCallback();\n [\"colors\", \"min\", \"max\", \"step\", \"editable\", \"inputSuffix\", \"value\"].forEach((p) => {\n this.upgradeProperty(p);\n });\n this.resizeObserver.observe(this);\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n this.lastKnownWidth = undefined;\n this.resizeObserver.disconnect();\n }\n\n private upgradeProperty(propertyName: string): void {\n if (Object.prototype.hasOwnProperty.call(this, propertyName)) {\n const value = this[propertyName];\n delete this[propertyName];\n this[propertyName] = value;\n }\n }\n\n static get observedAttributes() {\n const attributes = super.observedAttributes;\n attributes.push(\"value\");\n return attributes;\n }\n\n attributeChangedCallback(name: string, old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, old, value);\n\n if ((name === \"value\" || name == \"step\") && this.hasUpdated) {\n this.updateValue(Number.parseFloat(value));\n }\n }\n\n private updateValue(newValue: number) {\n if (this.setValueInternal(newValue)) {\n if (this.inputElement) {\n this.inputElement.value = this.formattedValue();\n }\n if (this._value != newValue) {\n this.fireBothValueChangeEvents();\n }\n }\n }\n\n public get value(): number {\n return this._value;\n }\n\n public set value(newValue: number) {\n const hasChanged = this.setValueInternal(newValue);\n if (hasChanged) {\n this.fireBothValueChangeEvents();\n }\n }\n\n private roundToStep(rawValue: number): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let roundedValue = Number.parseFloat(rawValue as any);\n if (Number.isNaN(roundedValue)) {\n return this._value;\n }\n if (this.step && roundedValue >= this.min && roundedValue <= this.max) {\n const offsetBigDecimal = new Big(roundedValue)\n .minus(this.min)\n .div(this.step)\n .round()\n .mul(this.step)\n .plus(this.min);\n roundedValue = Number.parseFloat(offsetBigDecimal.toString());\n }\n return roundedValue;\n }\n\n private setValueInternal(newValue: number): boolean {\n const roundedValue = this.roundToStep(newValue);\n const clampedValue = this.clampValue ? Math.max(this.min, Math.min(this.max, roundedValue)) : roundedValue;\n if (this._value !== clampedValue) {\n const oldValue = this._value;\n this._value = clampedValue;\n this.relativeValue = (clampedValue - this.min) / (this.max - this.min);\n this.setAttribute(\"aria-valuenow\", this._value.toString());\n this.requestUpdate(\"value\", oldValue);\n return true;\n }\n return false;\n }\n\n get relativeValue() {\n return this._relativeValue;\n }\n\n set relativeValue(newRelativeValue: number) {\n if (this._relativeValue !== newRelativeValue) {\n this.doUpdateRelativeValue(newRelativeValue);\n }\n }\n\n private doUpdateRelativeValue(newRelativeValue: number, skipColorUpdate?: boolean) {\n this._relativeValue = newRelativeValue;\n this.thumbPosition = Math.min(Math.max(0, newRelativeValue), 1) * this.trackContainerWidth;\n const newValueBasedOnRelativeValue = this.min + (this.max - this.min) * this._relativeValue;\n this.setValueInternal(newValueBasedOnRelativeValue);\n if (!skipColorUpdate && this.colors && this.colors.size) {\n this.baseColor = this.colorBlender.blend(this._relativeValue);\n }\n }\n\n public get colors(): Map<number, string> {\n return this.colorBlender.colors;\n }\n\n public set colors(newColors: Map<number, string>) {\n this.colorBlender.colors = newColors;\n if (this.colors && this.colors.size) {\n this.baseColor = this.colorBlender.blend(this._relativeValue);\n } else {\n this.baseColor = Slider.defaultColor;\n }\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n public render(): TemplateResult {\n const trackBackgroundColor = this.colorBlender.transparentize(this.baseColor, 0.26);\n const trackContainerStyle = `background-color:${trackBackgroundColor}; right: ${\n this.editable ? \"calc(var(--slider-suffix-width, 50px) + 8px)\" : \"0\"\n }`;\n const trackStyle = `transform: scaleX(${this.relativeValue}); background-color:${this.baseColor};`;\n const thumbStyle = `transform: translateX(${this.thumbPosition}px); background-color:${this.baseColor}; border-color:${trackBackgroundColor};`;\n return html`\n <div id=\"track-container\" style=\"${trackContainerStyle}\">\n <div id=\"track\" style=\"${trackStyle}\"></div>\n </div>\n <div id=\"thumb\" ?active=\"${this.active}\" style=\"${thumbStyle}\"></div>\n ${this.editable &&\n html`\n <sd-lit-input\n .value=\"${this.formattedValue()}\"\n @value-change=\"${this.onInputValueChange}\"\n ?disabled=\"${this.disabled}\"\n ><span slot=\"suffix\">${this.inputSuffix}</span>\n </sd-lit-input>\n `}\n ${this.validationMessage &&\n html`\n <sd-field-validation-message\n .message=\"${this.validationMessage}\"\n .icon=\"${this.validationIconSrc}\"\n .level=\"${this.validationLevel}\"\n >\n </sd-field-validation-message>\n `}\n `;\n }\n\n private listenMoveEvents(currentClientX: number) {\n this.active = true;\n this.onPointerMove(currentClientX);\n\n const eventListenersToRemove: IEventListenerRegistration[] = [];\n const pointerMoveListener = (event) => {\n event.stopPropagation();\n event.preventDefault();\n this.onPointerMove(event.clientX || (event.changedTouches && event.changedTouches[0].clientX));\n };\n const pointerUpListener = () => {\n this.active = false;\n eventListenersToRemove.forEach((reg) => reg.remove());\n this.fireValueChange();\n };\n if (this.useTouchEvents()) {\n eventListenersToRemove.push(this.addPointerEventListener(\"touchmove\", pointerMoveListener));\n eventListenersToRemove.push(this.addPointerEventListener(\"touchend\", pointerUpListener));\n eventListenersToRemove.push(this.addPointerEventListener(\"touchcancel\", pointerUpListener));\n } else {\n eventListenersToRemove.push(this.addPointerEventListener(\"pointermove\", pointerMoveListener));\n eventListenersToRemove.push(this.addPointerEventListener(\"pointerup\", pointerUpListener));\n }\n }\n\n private onPointerMove(clientX: number): void {\n if (this.updateAlreadyRequested) {\n return;\n }\n this.updateAlreadyRequested = true;\n window.requestAnimationFrame(async () => {\n this.updateAlreadyRequested = false;\n this.updateThumbPosition(clientX);\n const previousValue = this.relativeValue;\n this.relativeValue = this.thumbPosition / this.trackContainerWidth;\n if (this.relativeValue !== previousValue) {\n await this.updateComplete;\n this.fireValueChange(true);\n if (!this.active) {\n this.fireValueChange();\n }\n }\n });\n }\n\n private addPointerEventListener(type: string, listener: EventListener): IEventListenerRegistration {\n window.addEventListener(type, listener, true);\n return {\n remove: () => {\n window.removeEventListener(type, listener, true);\n },\n };\n }\n\n private updateThumbPosition(clientX: number): void {\n this.thumbPosition = Math.min(\n this.trackContainerWidth,\n Math.max(0, clientX - this.getBoundingClientRect().left),\n );\n if (this.max - this.min > 1) {\n // Enforce integer steps by pointer move events. Fixes #231868\n const thumbStepForIntegerOffset = this.trackContainerWidth / (this.max - this.min);\n const thumbPositionError = this.thumbPosition % thumbStepForIntegerOffset;\n if (thumbPositionError) {\n if (thumbPositionError < thumbStepForIntegerOffset / 2) {\n this.thumbPosition -= thumbPositionError;\n } else {\n this.thumbPosition += thumbStepForIntegerOffset - thumbPositionError;\n }\n }\n }\n }\n\n private onInputValueChange(event: CustomEvent) {\n this.value = Number(event.detail.value.replace(RegExp(this.escapedDecimalSeparator), \".\"));\n if (String(this.value) !== String(event.detail.value)) {\n (event.target as SDInput).value = String(this.value);\n }\n }\n\n private formattedValue(): string {\n return this.value.toString().replace(/\\./, this.decimalSeparatorOrDefault);\n }\n\n private get escapedDecimalSeparator(): string {\n return this.decimalSeparatorOrDefault.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n private get decimalSeparatorOrDefault(): string {\n return this.decimalSeparator || Number(1.1).toLocaleString(this.navigatorLanguage).substring(1, 2);\n }\n\n private get navigatorLanguage(): string {\n if (navigator.languages && navigator.languages.length) {\n return navigator.languages[0];\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (navigator as any).userLanguage || navigator.language || (navigator as any).browserLanguage || \"en\";\n }\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (!this.hasAttribute(\"disabled\") && event.composedPath().indexOf(this.inputElement) === -1) {\n let offset = this.step || (this.max - this.min) / 100;\n if (this.max - this.min > 1) {\n // Enforce integer steps by keydown events. Fixes #231868\n offset = Math.round(offset) || 1;\n }\n switch (event.keyCode) {\n case 37:\n case 40:\n this.value = Math.max(this.value - offset, this.min);\n event.preventDefault();\n break;\n case 38:\n case 39:\n this.value = Math.min(this.value + offset, this.max);\n event.preventDefault();\n break;\n }\n }\n }\n\n private get inputElement(): SDInput {\n if (!this._inputElement) {\n this._inputElement = this.shadowRoot.querySelector(\"sd-lit-input\");\n }\n return this._inputElement;\n }\n\n private get trackContainer(): HTMLElement {\n if (!this._trackContainer) {\n this._trackContainer = this.shadowRoot.querySelector(\"#track-container\");\n }\n return this._trackContainer;\n }\n\n private get trackContainerWidth(): number {\n return this.trackContainer && this.trackContainer.offsetWidth;\n }\n\n private fireBothValueChangeEvents(): void {\n this.fireValueChange(true);\n this.fireValueChange();\n }\n\n private fireValueChange(immediate?: boolean): void {\n this.dispatchEvent(\n new CustomEvent<IValueChangeEvent>(`${immediate ? \"immediate-\" : \"\"}value-change`, {\n detail: { value: this.value },\n }),\n );\n }\n\n private useTouchEvents(): boolean {\n return this.hasAttribute(\"use-touch-events\");\n }\n}\n\nif (!customElements.get(Slider.ID)) {\n customElements.define(Slider.ID, Slider);\n}\n"],"names":["ColorBlender","newColors","value","key","color","sortedEntries","relativeValue","leftColor","rightColor","entry","diff","colorA","colorB","relativeOffsetFromA","hexColor","hexRgb","rgbaColor","match","alpha","_Slider","_a","LitElement","changedProperties","event","p","propertyName","attributes","name","old","newValue","rawValue","roundedValue","offsetBigDecimal","Big","clampedValue","oldValue","newRelativeValue","skipColorUpdate","newValueBasedOnRelativeValue","css","unsafeCSS","style","trackBackgroundColor","trackContainerStyle","trackStyle","thumbStyle","html","currentClientX","eventListenersToRemove","pointerMoveListener","pointerUpListener","reg","clientX","previousValue","type","listener","thumbStepForIntegerOffset","thumbPositionError","offset","immediate","__decorateClass","property","Slider"],"mappings":"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"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"@cypress/vite-dev-server@
|
|
2
|
+
"@cypress/vite-dev-server@7.0.0": {
|
|
3
3
|
"licenses": "MIT",
|
|
4
4
|
"repository": "https://github.com/cypress-io/cypress",
|
|
5
5
|
"licenseUrl": "https://github.com/cypress-io/cypress/tree/develop/npm/vite-dev-server#readme"
|
|
6
6
|
},
|
|
7
|
-
"@
|
|
7
|
+
"@eslint/js@9.34.0": {
|
|
8
|
+
"licenses": "MIT",
|
|
9
|
+
"repository": "https://github.com/eslint/eslint",
|
|
10
|
+
"licenseUrl": "https://github.com/eslint/eslint/raw/HEAD/LICENSE"
|
|
11
|
+
},
|
|
12
|
+
"@rollup/plugin-node-resolve@16.0.1": {
|
|
8
13
|
"licenses": "MIT",
|
|
9
14
|
"repository": "https://github.com/rollup/plugins",
|
|
10
15
|
"licenseUrl": "https://github.com/rollup/plugins/raw/HEAD/LICENSE"
|
|
@@ -14,7 +19,7 @@
|
|
|
14
19
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
15
20
|
"licenseUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped/raw/HEAD/LICENSE"
|
|
16
21
|
},
|
|
17
|
-
"@types/node@
|
|
22
|
+
"@types/node@24.3.0": {
|
|
18
23
|
"licenses": "MIT",
|
|
19
24
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
20
25
|
"licenseUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped/raw/HEAD/LICENSE"
|
|
@@ -24,52 +29,47 @@
|
|
|
24
29
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
25
30
|
"licenseUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped/raw/HEAD/LICENSE"
|
|
26
31
|
},
|
|
27
|
-
"@typescript-eslint/eslint-plugin@
|
|
32
|
+
"@typescript-eslint/eslint-plugin@8.41.0": {
|
|
28
33
|
"licenses": "MIT",
|
|
29
34
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
30
35
|
"licenseUrl": "https://github.com/typescript-eslint/typescript-eslint/raw/HEAD/LICENSE"
|
|
31
36
|
},
|
|
32
|
-
"@typescript-eslint/parser@
|
|
33
|
-
"licenses": "
|
|
37
|
+
"@typescript-eslint/parser@8.41.0": {
|
|
38
|
+
"licenses": "MIT",
|
|
34
39
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
35
40
|
"licenseUrl": "https://github.com/typescript-eslint/typescript-eslint/raw/HEAD/LICENSE"
|
|
36
41
|
},
|
|
37
|
-
"@vitest/coverage-v8@
|
|
42
|
+
"@vitest/coverage-v8@3.2.4": {
|
|
38
43
|
"licenses": "MIT",
|
|
39
44
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
40
45
|
"licenseUrl": "https://github.com/vitest-dev/vitest/raw/HEAD/LICENSE"
|
|
41
46
|
},
|
|
42
|
-
"@vitest/ui@
|
|
47
|
+
"@vitest/ui@3.2.4": {
|
|
43
48
|
"licenses": "MIT",
|
|
44
49
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
45
50
|
"licenseUrl": "https://github.com/vitest-dev/vitest/raw/HEAD/LICENSE"
|
|
46
51
|
},
|
|
47
|
-
"axe-core@4.
|
|
52
|
+
"axe-core@4.10.3": {
|
|
48
53
|
"licenses": "MPL-2.0",
|
|
49
54
|
"repository": "https://github.com/dequelabs/axe-core",
|
|
50
55
|
"licenseUrl": "https://github.com/dequelabs/axe-core/raw/HEAD/LICENSE"
|
|
51
56
|
},
|
|
52
|
-
"big.js@
|
|
57
|
+
"big.js@7.0.1": {
|
|
53
58
|
"licenses": "MIT",
|
|
54
59
|
"repository": "https://github.com/MikeMcl/big.js",
|
|
55
60
|
"licenseUrl": "https://github.com/MikeMcl/big.js/raw/HEAD/LICENCE.md"
|
|
56
61
|
},
|
|
57
|
-
"cypress-axe@1.
|
|
62
|
+
"cypress-axe@1.7.0": {
|
|
58
63
|
"licenses": "MIT",
|
|
59
64
|
"repository": "https://github.com/component-driven/cypress-axe",
|
|
60
65
|
"licenseUrl": "https://github.com/component-driven/cypress-axe/raw/HEAD/License.md"
|
|
61
66
|
},
|
|
62
|
-
"cypress
|
|
63
|
-
"licenses": "MIT",
|
|
64
|
-
"repository": "https://github.com/dmtrKovalenko/cypress-real-events",
|
|
65
|
-
"licenseUrl": "https://github.com/dmtrKovalenko/cypress-real-events"
|
|
66
|
-
},
|
|
67
|
-
"cypress@13.6.2": {
|
|
67
|
+
"cypress@15.0.0": {
|
|
68
68
|
"licenses": "MIT",
|
|
69
69
|
"repository": "https://github.com/cypress-io/cypress",
|
|
70
70
|
"licenseUrl": "https://cypress.io"
|
|
71
71
|
},
|
|
72
|
-
"esbuild@0.
|
|
72
|
+
"esbuild@0.25.9": {
|
|
73
73
|
"licenses": "MIT",
|
|
74
74
|
"repository": "https://github.com/evanw/esbuild",
|
|
75
75
|
"licenseUrl": "https://github.com/evanw/esbuild/raw/HEAD/LICENSE.md"
|
|
@@ -79,17 +79,17 @@
|
|
|
79
79
|
"repository": "https://github.com/google/eslint-config-google",
|
|
80
80
|
"licenseUrl": "https://github.com/google/eslint-config-google/raw/HEAD/LICENSE"
|
|
81
81
|
},
|
|
82
|
-
"eslint-config-prettier@
|
|
82
|
+
"eslint-config-prettier@10.1.8": {
|
|
83
83
|
"licenses": "MIT",
|
|
84
84
|
"repository": "https://github.com/prettier/eslint-config-prettier",
|
|
85
85
|
"licenseUrl": "https://github.com/prettier/eslint-config-prettier/raw/HEAD/LICENSE"
|
|
86
86
|
},
|
|
87
|
-
"eslint@
|
|
87
|
+
"eslint@9.34.0": {
|
|
88
88
|
"licenses": "MIT",
|
|
89
89
|
"repository": "https://github.com/eslint/eslint",
|
|
90
90
|
"licenseUrl": "https://github.com/eslint/eslint/raw/HEAD/LICENSE"
|
|
91
91
|
},
|
|
92
|
-
"github-markdown-css@5.
|
|
92
|
+
"github-markdown-css@5.8.1": {
|
|
93
93
|
"licenses": "MIT",
|
|
94
94
|
"repository": "https://github.com/sindresorhus/github-markdown-css",
|
|
95
95
|
"licenseUrl": "https://github.com/sindresorhus/github-markdown-css/raw/HEAD/license"
|
|
@@ -99,42 +99,42 @@
|
|
|
99
99
|
"repository": "https://github.com/sindresorhus/hex-rgb",
|
|
100
100
|
"licenseUrl": "https://github.com/sindresorhus/hex-rgb/raw/HEAD/license"
|
|
101
101
|
},
|
|
102
|
-
"highlight.js@11.
|
|
102
|
+
"highlight.js@11.11.1": {
|
|
103
103
|
"licenses": "BSD-3-Clause",
|
|
104
104
|
"repository": "https://github.com/highlightjs/highlight.js",
|
|
105
105
|
"licenseUrl": "https://github.com/highlightjs/highlight.js/raw/HEAD/LICENSE"
|
|
106
106
|
},
|
|
107
|
-
"junit-report-builder@
|
|
107
|
+
"junit-report-builder@5.1.1": {
|
|
108
108
|
"licenses": "MIT",
|
|
109
109
|
"repository": "https://github.com/davidparsson/junit-report-builder",
|
|
110
110
|
"licenseUrl": "https://github.com/davidparsson/junit-report-builder/raw/HEAD/LICENSE"
|
|
111
111
|
},
|
|
112
|
-
"lint-staged@
|
|
112
|
+
"lint-staged@16.1.5": {
|
|
113
113
|
"licenses": "MIT",
|
|
114
|
-
"repository": "https://github.com/
|
|
115
|
-
"licenseUrl": "https://github.com/
|
|
114
|
+
"repository": "https://github.com/lint-staged/lint-staged",
|
|
115
|
+
"licenseUrl": "https://github.com/lint-staged/lint-staged/raw/HEAD/LICENSE"
|
|
116
116
|
},
|
|
117
|
-
"lit@
|
|
117
|
+
"lit@3.3.1": {
|
|
118
118
|
"licenses": "BSD-3-Clause",
|
|
119
119
|
"repository": "https://github.com/lit/lit",
|
|
120
120
|
"licenseUrl": "https://github.com/lit/lit/raw/HEAD/LICENSE"
|
|
121
121
|
},
|
|
122
|
-
"marked@
|
|
122
|
+
"marked@16.2.1": {
|
|
123
123
|
"licenses": "MIT",
|
|
124
124
|
"repository": "https://github.com/markedjs/marked",
|
|
125
125
|
"licenseUrl": "https://github.com/markedjs/marked/raw/HEAD/LICENSE.md"
|
|
126
126
|
},
|
|
127
|
-
"postcss-prefix-selector@1.
|
|
127
|
+
"postcss-prefix-selector@2.1.1": {
|
|
128
128
|
"licenses": "MIT",
|
|
129
129
|
"repository": "https://github.com/RadValentin/postcss-prefix-selector",
|
|
130
130
|
"licenseUrl": "https://github.com/RadValentin/postcss-prefix-selector/raw/HEAD/LICENSE"
|
|
131
131
|
},
|
|
132
|
-
"postcss@8.
|
|
132
|
+
"postcss@8.5.6": {
|
|
133
133
|
"licenses": "MIT",
|
|
134
134
|
"repository": "https://github.com/postcss/postcss",
|
|
135
135
|
"licenseUrl": "https://github.com/postcss/postcss/raw/HEAD/LICENSE"
|
|
136
136
|
},
|
|
137
|
-
"prettier@3.
|
|
137
|
+
"prettier@3.6.2": {
|
|
138
138
|
"licenses": "MIT",
|
|
139
139
|
"repository": "https://github.com/prettier/prettier",
|
|
140
140
|
"licenseUrl": "https://github.com/prettier/prettier/raw/HEAD/LICENSE"
|
|
@@ -144,62 +144,67 @@
|
|
|
144
144
|
"repository": "https://github.com/sindresorhus/resolve-pkg",
|
|
145
145
|
"licenseUrl": "https://github.com/sindresorhus/resolve-pkg/raw/HEAD/license"
|
|
146
146
|
},
|
|
147
|
-
"sass@1.
|
|
147
|
+
"sass@1.91.0": {
|
|
148
148
|
"licenses": "MIT",
|
|
149
149
|
"repository": "https://github.com/sass/dart-sass",
|
|
150
150
|
"licenseUrl": "https://github.com/sass/dart-sass/raw/HEAD/LICENSE"
|
|
151
151
|
},
|
|
152
|
-
"stylelint-config-recommended-scss@
|
|
152
|
+
"stylelint-config-recommended-scss@16.0.0": {
|
|
153
153
|
"licenses": "MIT",
|
|
154
154
|
"repository": "https://github.com/stylelint-scss/stylelint-config-recommended-scss",
|
|
155
155
|
"licenseUrl": "https://github.com/stylelint-scss/stylelint-config-recommended-scss/raw/HEAD/LICENSE"
|
|
156
156
|
},
|
|
157
|
-
"stylelint-config-standard@
|
|
157
|
+
"stylelint-config-standard@39.0.0": {
|
|
158
158
|
"licenses": "MIT",
|
|
159
159
|
"repository": "https://github.com/stylelint/stylelint-config-standard",
|
|
160
160
|
"licenseUrl": "https://github.com/stylelint/stylelint-config-standard/raw/HEAD/LICENSE"
|
|
161
161
|
},
|
|
162
|
-
"stylelint-scss@6.
|
|
162
|
+
"stylelint-scss@6.12.1": {
|
|
163
163
|
"licenses": "MIT",
|
|
164
164
|
"repository": "https://github.com/stylelint-scss/stylelint-scss",
|
|
165
165
|
"licenseUrl": "https://github.com/stylelint-scss/stylelint-scss/raw/HEAD/LICENSE"
|
|
166
166
|
},
|
|
167
|
-
"stylelint@16.1
|
|
167
|
+
"stylelint@16.23.1": {
|
|
168
168
|
"licenses": "MIT",
|
|
169
169
|
"repository": "https://github.com/stylelint/stylelint",
|
|
170
170
|
"licenseUrl": "https://github.com/stylelint/stylelint/raw/HEAD/LICENSE"
|
|
171
171
|
},
|
|
172
|
-
"tsup@8.0
|
|
172
|
+
"tsup@8.5.0": {
|
|
173
173
|
"licenses": "MIT",
|
|
174
174
|
"repository": "https://github.com/egoist/tsup",
|
|
175
175
|
"licenseUrl": "https://github.com/egoist/tsup/raw/HEAD/LICENSE"
|
|
176
176
|
},
|
|
177
|
-
"turbo@
|
|
178
|
-
"licenses": "
|
|
179
|
-
"repository": "https://github.com/vercel/
|
|
180
|
-
"licenseUrl": "https://github.com/vercel/
|
|
177
|
+
"turbo@2.5.6": {
|
|
178
|
+
"licenses": "MIT",
|
|
179
|
+
"repository": "https://github.com/vercel/turborepo",
|
|
180
|
+
"licenseUrl": "https://github.com/vercel/turborepo/raw/HEAD/LICENSE"
|
|
181
|
+
},
|
|
182
|
+
"typescript-eslint@8.41.0": {
|
|
183
|
+
"licenses": "MIT",
|
|
184
|
+
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
185
|
+
"licenseUrl": "https://github.com/typescript-eslint/typescript-eslint/raw/HEAD/LICENSE"
|
|
181
186
|
},
|
|
182
|
-
"typescript@5.
|
|
187
|
+
"typescript@5.9.2": {
|
|
183
188
|
"licenses": "Apache-2.0",
|
|
184
|
-
"repository": "https://github.com/
|
|
185
|
-
"licenseUrl": "https://github.com/
|
|
189
|
+
"repository": "https://github.com/microsoft/TypeScript",
|
|
190
|
+
"licenseUrl": "https://github.com/microsoft/TypeScript/raw/HEAD/LICENSE.txt"
|
|
186
191
|
},
|
|
187
|
-
"vite-tsconfig-paths@
|
|
192
|
+
"vite-tsconfig-paths@5.1.4": {
|
|
188
193
|
"licenses": "MIT",
|
|
189
194
|
"repository": "https://github.com/aleclarson/vite-tsconfig-paths",
|
|
190
195
|
"licenseUrl": "https://github.com/aleclarson/vite-tsconfig-paths/raw/HEAD/LICENSE"
|
|
191
196
|
},
|
|
192
|
-
"vite@
|
|
197
|
+
"vite@7.1.3": {
|
|
193
198
|
"licenses": "MIT",
|
|
194
199
|
"repository": "https://github.com/vitejs/vite",
|
|
195
200
|
"licenseUrl": "https://github.com/vitejs/vite/raw/HEAD/LICENSE.md"
|
|
196
201
|
},
|
|
197
|
-
"vitest@
|
|
202
|
+
"vitest@3.2.4": {
|
|
198
203
|
"licenses": "MIT",
|
|
199
204
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
200
205
|
"licenseUrl": "https://github.com/vitest-dev/vitest/raw/HEAD/LICENSE.md"
|
|
201
206
|
},
|
|
202
|
-
"yargs@
|
|
207
|
+
"yargs@18.0.0": {
|
|
203
208
|
"licenses": "MIT",
|
|
204
209
|
"repository": "https://github.com/yargs/yargs",
|
|
205
210
|
"licenseUrl": "https://github.com/yargs/yargs/raw/HEAD/LICENSE"
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cas-smartdesign/lit-slider",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.2.0",
|
|
4
4
|
"description": "A slider element based on LitElement & material components",
|
|
5
5
|
"main": "dist/slider-with-externals.js",
|
|
6
6
|
"module": "dist/slider.mjs",
|
|
7
7
|
"license": "SEE LICENSE IN LICENSE",
|
|
8
8
|
"types": "dist/slider.d.ts",
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"big.js": "^
|
|
10
|
+
"big.js": "^7.0.1",
|
|
11
11
|
"hex-rgb": "^5.0.0",
|
|
12
|
-
"lit": "^
|
|
13
|
-
"@cas-smartdesign/
|
|
14
|
-
"@cas-smartdesign/
|
|
12
|
+
"lit": "^3.3.1",
|
|
13
|
+
"@cas-smartdesign/lit-input": "^7.4.0",
|
|
14
|
+
"@cas-smartdesign/field-validation-message": "^5.1.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/big.js": "^6.2.2",
|
|
18
|
-
"@cas-smartdesign/element-preview": "^0.
|
|
19
|
-
"@cas-smartdesign/license-generator": "^1.
|
|
18
|
+
"@cas-smartdesign/element-preview": "^0.3.0",
|
|
19
|
+
"@cas-smartdesign/license-generator": "^1.7.0"
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
22
|
"dist",
|
package/readme.md
CHANGED
|
@@ -21,7 +21,9 @@ The following properties are available:
|
|
|
21
21
|
- `max` **_number (default=1)_**
|
|
22
22
|
- reflects the corresponding attribute
|
|
23
23
|
- `step` **_number (default=undefined)_**
|
|
24
|
-
-
|
|
24
|
+
- Reflects the corresponding attribute, if undefined then the _(max - min) / 100_ value is used.
|
|
25
|
+
- Valid values are defined based on the `min` value and increments of the `step` value, up to the `max` value.
|
|
26
|
+
- If difference between `min` and `max` is bigger than 1, only steps larger than 1 are supported on user interactions done directly on the slider part.
|
|
25
27
|
- `colors` **_Map<number, string> (default=empty)_**
|
|
26
28
|
- A relative-value -> color mapping which can be used to configure a color blending mode for the slider. For further details check the examples.
|
|
27
29
|
- `editable` **_boolean (default=false)_**
|