@duskmoon-dev/el-slider 0.4.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.
@@ -0,0 +1,377 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/index.ts
30
+ var exports_src = {};
31
+ __export(exports_src, {
32
+ register: () => register,
33
+ ElDmSlider: () => ElDmSlider
34
+ });
35
+ module.exports = __toCommonJS(exports_src);
36
+
37
+ // src/el-dm-slider.ts
38
+ var import_el_core = require("@duskmoon-dev/el-core");
39
+ var import_slider = require("@duskmoon-dev/core/components/slider");
40
+ var SIZE_CLASSES = {
41
+ sm: "slider-sm",
42
+ md: "",
43
+ lg: "slider-lg"
44
+ };
45
+ var COLOR_CLASSES = {
46
+ primary: "",
47
+ secondary: "slider-secondary",
48
+ tertiary: "slider-tertiary",
49
+ success: "slider-success",
50
+ warning: "slider-warning",
51
+ error: "slider-error"
52
+ };
53
+ var coreStyles = import_slider.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
54
+ var styles = import_el_core.css`
55
+ :host {
56
+ display: block;
57
+ width: 100%;
58
+ }
59
+
60
+ :host([hidden]) {
61
+ display: none !important;
62
+ }
63
+
64
+ ${coreStyles}
65
+
66
+ /* Web component specific adjustments */
67
+ .slider {
68
+ font-family: inherit;
69
+ position: relative;
70
+ display: flex;
71
+ align-items: center;
72
+ width: 100%;
73
+ height: 2.5rem;
74
+ touch-action: none;
75
+ }
76
+
77
+ .slider-track {
78
+ position: relative;
79
+ flex: 1;
80
+ height: 0.375rem;
81
+ background-color: var(--color-surface-container-high, #e0e0e0);
82
+ border-radius: 0.1875rem;
83
+ cursor: pointer;
84
+ }
85
+
86
+ .slider-track-filled {
87
+ position: absolute;
88
+ top: 0;
89
+ left: 0;
90
+ height: 100%;
91
+ background-color: var(--color-primary);
92
+ border-radius: 0.1875rem;
93
+ transition: width 0.1s ease;
94
+ }
95
+
96
+ .slider-thumb {
97
+ position: absolute;
98
+ top: 50%;
99
+ width: 1.25rem;
100
+ height: 1.25rem;
101
+ background-color: var(--color-primary);
102
+ border-radius: 50%;
103
+ transform: translate(-50%, -50%);
104
+ cursor: grab;
105
+ transition: box-shadow 0.15s ease;
106
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
107
+ }
108
+
109
+ .slider-thumb:hover {
110
+ box-shadow: 0 0 0 8px rgba(var(--color-primary-rgb, 98, 0, 238), 0.1);
111
+ }
112
+
113
+ .slider-thumb:active {
114
+ cursor: grabbing;
115
+ box-shadow: 0 0 0 12px rgba(var(--color-primary-rgb, 98, 0, 238), 0.2);
116
+ }
117
+
118
+ .slider-thumb-label {
119
+ position: absolute;
120
+ bottom: calc(100% + 8px);
121
+ left: 50%;
122
+ transform: translateX(-50%);
123
+ padding: 0.25rem 0.5rem;
124
+ font-size: 0.75rem;
125
+ font-weight: 500;
126
+ color: var(--color-on-primary);
127
+ background-color: var(--color-primary);
128
+ border-radius: 0.25rem;
129
+ white-space: nowrap;
130
+ opacity: 0;
131
+ transition: opacity 0.15s ease;
132
+ }
133
+
134
+ .slider-thumb:hover .slider-thumb-label,
135
+ .slider-thumb:active .slider-thumb-label,
136
+ .slider.show-value .slider-thumb-label {
137
+ opacity: 1;
138
+ }
139
+
140
+ /* Size variants */
141
+ .slider-sm .slider-track {
142
+ height: 0.25rem;
143
+ }
144
+
145
+ .slider-sm .slider-thumb {
146
+ width: 1rem;
147
+ height: 1rem;
148
+ }
149
+
150
+ .slider-lg .slider-track {
151
+ height: 0.5rem;
152
+ }
153
+
154
+ .slider-lg .slider-thumb {
155
+ width: 1.5rem;
156
+ height: 1.5rem;
157
+ }
158
+
159
+ /* Color variants */
160
+ .slider-secondary .slider-track-filled,
161
+ .slider-secondary .slider-thumb {
162
+ background-color: var(--color-secondary);
163
+ }
164
+
165
+ .slider-tertiary .slider-track-filled,
166
+ .slider-tertiary .slider-thumb {
167
+ background-color: var(--color-tertiary);
168
+ }
169
+
170
+ .slider-success .slider-track-filled,
171
+ .slider-success .slider-thumb {
172
+ background-color: var(--color-success);
173
+ }
174
+
175
+ .slider-warning .slider-track-filled,
176
+ .slider-warning .slider-thumb {
177
+ background-color: var(--color-warning);
178
+ }
179
+
180
+ .slider-error .slider-track-filled,
181
+ .slider-error .slider-thumb {
182
+ background-color: var(--color-error);
183
+ }
184
+
185
+ /* Disabled state */
186
+ :host([disabled]) .slider {
187
+ opacity: 0.5;
188
+ pointer-events: none;
189
+ }
190
+
191
+ :host([disabled]) .slider-thumb {
192
+ cursor: not-allowed;
193
+ }
194
+
195
+ /* Labels container */
196
+ .slider-labels {
197
+ display: flex;
198
+ justify-content: space-between;
199
+ margin-top: 0.25rem;
200
+ font-size: 0.75rem;
201
+ color: var(--color-on-surface);
202
+ opacity: 0.7;
203
+ }
204
+ `;
205
+
206
+ class ElDmSlider extends import_el_core.BaseElement {
207
+ static properties = {
208
+ value: { type: Number, reflect: true, default: 0 },
209
+ min: { type: Number, reflect: true, default: 0 },
210
+ max: { type: Number, reflect: true, default: 100 },
211
+ step: { type: Number, reflect: true, default: 1 },
212
+ disabled: { type: Boolean, reflect: true },
213
+ size: { type: String, reflect: true },
214
+ color: { type: String, reflect: true, default: "primary" },
215
+ showValue: {
216
+ type: Boolean,
217
+ reflect: true,
218
+ attribute: "show-value"
219
+ }
220
+ };
221
+ _isDragging = false;
222
+ constructor() {
223
+ super();
224
+ this.attachStyles(styles);
225
+ }
226
+ _getClasses() {
227
+ const classes = ["slider"];
228
+ if (this.size && SIZE_CLASSES[this.size]) {
229
+ classes.push(SIZE_CLASSES[this.size]);
230
+ }
231
+ if (this.color && COLOR_CLASSES[this.color]) {
232
+ classes.push(COLOR_CLASSES[this.color]);
233
+ }
234
+ if (this.showValue) {
235
+ classes.push("show-value");
236
+ }
237
+ return classes.join(" ");
238
+ }
239
+ _getPercentage() {
240
+ const range = this.max - this.min;
241
+ if (range === 0)
242
+ return 0;
243
+ return (this.value - this.min) / range * 100;
244
+ }
245
+ _valueFromPosition(clientX) {
246
+ const track = this.shadowRoot?.querySelector(".slider-track");
247
+ if (!track)
248
+ return this.value;
249
+ const rect = track.getBoundingClientRect();
250
+ const percentage = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
251
+ const rawValue = this.min + percentage * (this.max - this.min);
252
+ const steppedValue = Math.round(rawValue / this.step) * this.step;
253
+ return Math.max(this.min, Math.min(this.max, steppedValue));
254
+ }
255
+ _handleTrackClick(e) {
256
+ if (this.disabled)
257
+ return;
258
+ const newValue = this._valueFromPosition(e.clientX);
259
+ if (newValue !== this.value) {
260
+ this.value = newValue;
261
+ this._updateUI();
262
+ this.emit("input", { value: this.value });
263
+ this.emit("change", { value: this.value });
264
+ }
265
+ }
266
+ _handleThumbMouseDown(e) {
267
+ if (this.disabled)
268
+ return;
269
+ e.preventDefault();
270
+ this._isDragging = true;
271
+ const handleMouseMove = (moveEvent) => {
272
+ const newValue = this._valueFromPosition(moveEvent.clientX);
273
+ if (newValue !== this.value) {
274
+ this.value = newValue;
275
+ this._updateUI();
276
+ this.emit("input", { value: this.value });
277
+ }
278
+ };
279
+ const handleMouseUp = () => {
280
+ this._isDragging = false;
281
+ document.removeEventListener("mousemove", handleMouseMove);
282
+ document.removeEventListener("mouseup", handleMouseUp);
283
+ this.emit("change", { value: this.value });
284
+ };
285
+ document.addEventListener("mousemove", handleMouseMove);
286
+ document.addEventListener("mouseup", handleMouseUp);
287
+ }
288
+ _handleKeyDown(e) {
289
+ if (this.disabled)
290
+ return;
291
+ let newValue = this.value;
292
+ const bigStep = (this.max - this.min) / 10;
293
+ switch (e.key) {
294
+ case "ArrowRight":
295
+ case "ArrowUp":
296
+ newValue = Math.min(this.max, this.value + this.step);
297
+ break;
298
+ case "ArrowLeft":
299
+ case "ArrowDown":
300
+ newValue = Math.max(this.min, this.value - this.step);
301
+ break;
302
+ case "PageUp":
303
+ newValue = Math.min(this.max, this.value + bigStep);
304
+ break;
305
+ case "PageDown":
306
+ newValue = Math.max(this.min, this.value - bigStep);
307
+ break;
308
+ case "Home":
309
+ newValue = this.min;
310
+ break;
311
+ case "End":
312
+ newValue = this.max;
313
+ break;
314
+ default:
315
+ return;
316
+ }
317
+ e.preventDefault();
318
+ if (newValue !== this.value) {
319
+ this.value = newValue;
320
+ this._updateUI();
321
+ this.emit("input", { value: this.value });
322
+ this.emit("change", { value: this.value });
323
+ }
324
+ }
325
+ _updateUI() {
326
+ const percentage = this._getPercentage();
327
+ const filled = this.shadowRoot?.querySelector(".slider-track-filled");
328
+ const thumb = this.shadowRoot?.querySelector(".slider-thumb");
329
+ const label = this.shadowRoot?.querySelector(".slider-thumb-label");
330
+ if (filled) {
331
+ filled.style.width = `${percentage}%`;
332
+ }
333
+ if (thumb) {
334
+ thumb.style.left = `${percentage}%`;
335
+ }
336
+ if (label) {
337
+ label.textContent = String(this.value);
338
+ }
339
+ }
340
+ render() {
341
+ const classes = this._getClasses();
342
+ const percentage = this._getPercentage();
343
+ return `
344
+ <div class="${classes}" part="slider" role="slider"
345
+ aria-valuemin="${this.min}"
346
+ aria-valuemax="${this.max}"
347
+ aria-valuenow="${this.value}"
348
+ tabindex="${this.disabled ? -1 : 0}">
349
+ <div class="slider-track" part="track">
350
+ <div class="slider-track-filled" style="width: ${percentage}%"></div>
351
+ <div class="slider-thumb" part="thumb" style="left: ${percentage}%">
352
+ <span class="slider-thumb-label">${this.value}</span>
353
+ </div>
354
+ </div>
355
+ </div>
356
+ `;
357
+ }
358
+ update() {
359
+ super.update();
360
+ const track = this.shadowRoot?.querySelector(".slider-track");
361
+ const thumb = this.shadowRoot?.querySelector(".slider-thumb");
362
+ const slider = this.shadowRoot?.querySelector(".slider");
363
+ track?.addEventListener("click", (e) => this._handleTrackClick(e));
364
+ thumb?.addEventListener("mousedown", (e) => this._handleThumbMouseDown(e));
365
+ slider?.addEventListener("keydown", (e) => this._handleKeyDown(e));
366
+ }
367
+ }
368
+
369
+ // src/index.ts
370
+ function register() {
371
+ if (!customElements.get("el-dm-slider")) {
372
+ customElements.define("el-dm-slider", ElDmSlider);
373
+ }
374
+ }
375
+
376
+ //# debugId=BF9B2E1BF7539B1564756E2164756E21
377
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/el-dm-slider.ts", "../../src/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * DuskMoon Slider Element\n *\n * A range slider component for selecting numeric values.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-slider\n *\n * @attr {number} value - Current slider value\n * @attr {number} min - Minimum value\n * @attr {number} max - Maximum value\n * @attr {number} step - Step increment\n * @attr {boolean} disabled - Whether the slider is disabled\n * @attr {string} size - Size: sm, md, lg\n * @attr {string} color - Color: primary, secondary, tertiary\n * @attr {boolean} show-value - Show current value label\n *\n * @csspart slider - The slider container\n * @csspart track - The slider track\n * @csspart thumb - The slider thumb\n *\n * @fires change - Fired when value changes (on release)\n * @fires input - Fired during drag\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\nimport { css as sliderCSS } from '@duskmoon-dev/core/components/slider';\n\nexport type SliderSize = 'sm' | 'md' | 'lg';\nexport type SliderColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'error';\n\nconst SIZE_CLASSES: Record<string, string> = {\n sm: 'slider-sm',\n md: '',\n lg: 'slider-lg',\n};\n\nconst COLOR_CLASSES: Record<string, string> = {\n primary: '',\n secondary: 'slider-secondary',\n tertiary: 'slider-tertiary',\n success: 'slider-success',\n warning: 'slider-warning',\n error: 'slider-error',\n};\n\n// Strip @layer wrapper for Shadow DOM compatibility\nconst coreStyles = sliderCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst styles = css`\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n ${coreStyles}\n\n /* Web component specific adjustments */\n .slider {\n font-family: inherit;\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 2.5rem;\n touch-action: none;\n }\n\n .slider-track {\n position: relative;\n flex: 1;\n height: 0.375rem;\n background-color: var(--color-surface-container-high, #e0e0e0);\n border-radius: 0.1875rem;\n cursor: pointer;\n }\n\n .slider-track-filled {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background-color: var(--color-primary);\n border-radius: 0.1875rem;\n transition: width 0.1s ease;\n }\n\n .slider-thumb {\n position: absolute;\n top: 50%;\n width: 1.25rem;\n height: 1.25rem;\n background-color: var(--color-primary);\n border-radius: 50%;\n transform: translate(-50%, -50%);\n cursor: grab;\n transition: box-shadow 0.15s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .slider-thumb:hover {\n box-shadow: 0 0 0 8px rgba(var(--color-primary-rgb, 98, 0, 238), 0.1);\n }\n\n .slider-thumb:active {\n cursor: grabbing;\n box-shadow: 0 0 0 12px rgba(var(--color-primary-rgb, 98, 0, 238), 0.2);\n }\n\n .slider-thumb-label {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--color-on-primary);\n background-color: var(--color-primary);\n border-radius: 0.25rem;\n white-space: nowrap;\n opacity: 0;\n transition: opacity 0.15s ease;\n }\n\n .slider-thumb:hover .slider-thumb-label,\n .slider-thumb:active .slider-thumb-label,\n .slider.show-value .slider-thumb-label {\n opacity: 1;\n }\n\n /* Size variants */\n .slider-sm .slider-track {\n height: 0.25rem;\n }\n\n .slider-sm .slider-thumb {\n width: 1rem;\n height: 1rem;\n }\n\n .slider-lg .slider-track {\n height: 0.5rem;\n }\n\n .slider-lg .slider-thumb {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n /* Color variants */\n .slider-secondary .slider-track-filled,\n .slider-secondary .slider-thumb {\n background-color: var(--color-secondary);\n }\n\n .slider-tertiary .slider-track-filled,\n .slider-tertiary .slider-thumb {\n background-color: var(--color-tertiary);\n }\n\n .slider-success .slider-track-filled,\n .slider-success .slider-thumb {\n background-color: var(--color-success);\n }\n\n .slider-warning .slider-track-filled,\n .slider-warning .slider-thumb {\n background-color: var(--color-warning);\n }\n\n .slider-error .slider-track-filled,\n .slider-error .slider-thumb {\n background-color: var(--color-error);\n }\n\n /* Disabled state */\n :host([disabled]) .slider {\n opacity: 0.5;\n pointer-events: none;\n }\n\n :host([disabled]) .slider-thumb {\n cursor: not-allowed;\n }\n\n /* Labels container */\n .slider-labels {\n display: flex;\n justify-content: space-between;\n margin-top: 0.25rem;\n font-size: 0.75rem;\n color: var(--color-on-surface);\n opacity: 0.7;\n }\n`;\n\nexport class ElDmSlider extends BaseElement {\n static properties = {\n value: { type: Number, reflect: true, default: 0 },\n min: { type: Number, reflect: true, default: 0 },\n max: { type: Number, reflect: true, default: 100 },\n step: { type: Number, reflect: true, default: 1 },\n disabled: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n color: { type: String, reflect: true, default: 'primary' },\n showValue: {\n type: Boolean,\n reflect: true,\n attribute: 'show-value',\n },\n };\n\n declare value: number;\n declare min: number;\n declare max: number;\n declare step: number;\n declare disabled: boolean;\n declare size: SliderSize;\n declare color: SliderColor;\n declare showValue: boolean;\n\n private _isDragging = false;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _getClasses(): string {\n const classes = ['slider'];\n\n if (this.size && SIZE_CLASSES[this.size]) {\n classes.push(SIZE_CLASSES[this.size]);\n }\n\n if (this.color && COLOR_CLASSES[this.color]) {\n classes.push(COLOR_CLASSES[this.color]);\n }\n\n if (this.showValue) {\n classes.push('show-value');\n }\n\n return classes.join(' ');\n }\n\n private _getPercentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n return ((this.value - this.min) / range) * 100;\n }\n\n private _valueFromPosition(clientX: number): number {\n const track = this.shadowRoot?.querySelector('.slider-track');\n if (!track) return this.value;\n\n const rect = track.getBoundingClientRect();\n const percentage = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const rawValue = this.min + percentage * (this.max - this.min);\n\n // Snap to step\n const steppedValue = Math.round(rawValue / this.step) * this.step;\n return Math.max(this.min, Math.min(this.max, steppedValue));\n }\n\n private _handleTrackClick(e: MouseEvent): void {\n if (this.disabled) return;\n const newValue = this._valueFromPosition(e.clientX);\n if (newValue !== this.value) {\n this.value = newValue;\n this._updateUI();\n this.emit('input', { value: this.value });\n this.emit('change', { value: this.value });\n }\n }\n\n private _handleThumbMouseDown(e: MouseEvent): void {\n if (this.disabled) return;\n e.preventDefault();\n this._isDragging = true;\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const newValue = this._valueFromPosition(moveEvent.clientX);\n if (newValue !== this.value) {\n this.value = newValue;\n this._updateUI();\n this.emit('input', { value: this.value });\n }\n };\n\n const handleMouseUp = () => {\n this._isDragging = false;\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n this.emit('change', { value: this.value });\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }\n\n private _handleKeyDown(e: KeyboardEvent): void {\n if (this.disabled) return;\n\n let newValue = this.value;\n const bigStep = (this.max - this.min) / 10;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = Math.min(this.max, this.value + this.step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = Math.max(this.min, this.value - this.step);\n break;\n case 'PageUp':\n newValue = Math.min(this.max, this.value + bigStep);\n break;\n case 'PageDown':\n newValue = Math.max(this.min, this.value - bigStep);\n break;\n case 'Home':\n newValue = this.min;\n break;\n case 'End':\n newValue = this.max;\n break;\n default:\n return;\n }\n\n e.preventDefault();\n if (newValue !== this.value) {\n this.value = newValue;\n this._updateUI();\n this.emit('input', { value: this.value });\n this.emit('change', { value: this.value });\n }\n }\n\n private _updateUI(): void {\n const percentage = this._getPercentage();\n const filled = this.shadowRoot?.querySelector('.slider-track-filled') as HTMLElement;\n const thumb = this.shadowRoot?.querySelector('.slider-thumb') as HTMLElement;\n const label = this.shadowRoot?.querySelector('.slider-thumb-label') as HTMLElement;\n\n if (filled) {\n filled.style.width = `${percentage}%`;\n }\n if (thumb) {\n thumb.style.left = `${percentage}%`;\n }\n if (label) {\n label.textContent = String(this.value);\n }\n }\n\n render(): string {\n const classes = this._getClasses();\n const percentage = this._getPercentage();\n\n return `\n <div class=\"${classes}\" part=\"slider\" role=\"slider\"\n aria-valuemin=\"${this.min}\"\n aria-valuemax=\"${this.max}\"\n aria-valuenow=\"${this.value}\"\n tabindex=\"${this.disabled ? -1 : 0}\">\n <div class=\"slider-track\" part=\"track\">\n <div class=\"slider-track-filled\" style=\"width: ${percentage}%\"></div>\n <div class=\"slider-thumb\" part=\"thumb\" style=\"left: ${percentage}%\">\n <span class=\"slider-thumb-label\">${this.value}</span>\n </div>\n </div>\n </div>\n `;\n }\n\n update(): void {\n super.update();\n\n const track = this.shadowRoot?.querySelector('.slider-track');\n const thumb = this.shadowRoot?.querySelector('.slider-thumb');\n const slider = this.shadowRoot?.querySelector('.slider');\n\n track?.addEventListener('click', ((e: MouseEvent) =>\n this._handleTrackClick(e)) as EventListener);\n thumb?.addEventListener('mousedown', ((e: MouseEvent) =>\n this._handleThumbMouseDown(e)) as EventListener);\n slider?.addEventListener('keydown', ((e: KeyboardEvent) =>\n this._handleKeyDown(e)) as EventListener);\n }\n}\n",
6
+ "/**\n * @duskmoon-dev/el-slider\n *\n * DuskMoon Slider custom element\n */\n\nimport { ElDmSlider } from './el-dm-slider.js';\n\nexport { ElDmSlider };\nexport type { SliderSize, SliderColor } from './el-dm-slider.js';\n\n/**\n * Register the el-dm-slider custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-slider';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-slider')) {\n customElements.define('el-dm-slider', ElDmSlider);\n }\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "BF9B2E1BF7539B1564756E2164756E21",
10
+ "names": []
11
+ }