@duskmoon-dev/el-core 0.1.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/README.md ADDED
@@ -0,0 +1,137 @@
1
+ # @duskmoon-dev/el-core
2
+
3
+ Core utilities and base classes for DuskMoon custom elements.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ bun add @duskmoon-dev/el-core
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### BaseElement
14
+
15
+ The `BaseElement` class provides a foundation for creating custom elements with:
16
+
17
+ - Shadow DOM setup with adoptedStyleSheets
18
+ - Reactive properties with attribute reflection
19
+ - Style injection utilities
20
+ - Common lifecycle methods
21
+
22
+ ```typescript
23
+ import { BaseElement, css } from '@duskmoon-dev/el-core';
24
+
25
+ const styles = css`
26
+ :host {
27
+ display: block;
28
+ }
29
+ .greeting {
30
+ color: var(--dm-primary);
31
+ }
32
+ `;
33
+
34
+ class MyGreeting extends BaseElement {
35
+ static properties = {
36
+ name: { type: String, reflect: true, default: 'World' },
37
+ };
38
+
39
+ declare name: string;
40
+
41
+ constructor() {
42
+ super();
43
+ this.attachStyles(styles);
44
+ }
45
+
46
+ render() {
47
+ return `<div class="greeting">Hello, ${this.name}!</div>`;
48
+ }
49
+ }
50
+
51
+ customElements.define('my-greeting', MyGreeting);
52
+ ```
53
+
54
+ ### CSS Utilities
55
+
56
+ #### `css` Template Tag
57
+
58
+ Creates a `CSSStyleSheet` from a template literal:
59
+
60
+ ```typescript
61
+ import { css } from '@duskmoon-dev/el-core';
62
+
63
+ const styles = css`
64
+ :host {
65
+ display: inline-flex;
66
+ }
67
+ button {
68
+ padding: 0.5rem 1rem;
69
+ }
70
+ `;
71
+ ```
72
+
73
+ #### `combineStyles`
74
+
75
+ Combines multiple stylesheets:
76
+
77
+ ```typescript
78
+ import { combineStyles } from '@duskmoon-dev/el-core';
79
+
80
+ const combinedStyles = combineStyles(baseStyles, themeStyles, componentStyles);
81
+ ```
82
+
83
+ #### `cssVars`
84
+
85
+ Creates CSS custom property declarations:
86
+
87
+ ```typescript
88
+ import { cssVars } from '@duskmoon-dev/el-core';
89
+
90
+ const vars = cssVars({
91
+ 'dm-primary': '#3b82f6',
92
+ 'dm-spacing': '1rem',
93
+ });
94
+ // Returns: '--dm-primary: #3b82f6; --dm-spacing: 1rem;'
95
+ ```
96
+
97
+ ### Default Theme
98
+
99
+ The package includes default CSS custom properties for theming:
100
+
101
+ - Colors: `--dm-primary`, `--dm-secondary`, `--dm-success`, `--dm-warning`, `--dm-error`
102
+ - Grays: `--dm-gray-50` through `--dm-gray-900`
103
+ - Typography: `--dm-font-family`, `--dm-font-size-*`, `--dm-font-weight-*`
104
+ - Spacing: `--dm-spacing-xs` through `--dm-spacing-xl`
105
+ - Border Radius: `--dm-radius-sm` through `--dm-radius-full`
106
+ - Shadows: `--dm-shadow-sm`, `--dm-shadow-md`, `--dm-shadow-lg`
107
+ - Transitions: `--dm-transition-fast`, `--dm-transition-normal`, `--dm-transition-slow`
108
+
109
+ ## API
110
+
111
+ ### BaseElement
112
+
113
+ | Method | Description |
114
+ | ---------------------- | --------------------------------- |
115
+ | `attachStyles(styles)` | Attach stylesheets to Shadow DOM |
116
+ | `render()` | Override to return HTML content |
117
+ | `update()` | Called when element should update |
118
+ | `emit(name, detail?)` | Emit a custom event |
119
+ | `query(selector)` | Query element in Shadow DOM |
120
+ | `queryAll(selector)` | Query all elements in Shadow DOM |
121
+
122
+ ### Property Definitions
123
+
124
+ ```typescript
125
+ static properties = {
126
+ myProp: {
127
+ type: String, // String, Number, Boolean, Object, Array
128
+ reflect: true, // Reflect to attribute
129
+ attribute: 'my-prop', // Custom attribute name
130
+ default: 'value' // Default value
131
+ }
132
+ };
133
+ ```
134
+
135
+ ## License
136
+
137
+ MIT
@@ -0,0 +1,298 @@
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
+ resetStyles: () => resetStyles,
33
+ defaultTheme: () => defaultTheme,
34
+ cssVars: () => cssVars,
35
+ css: () => css,
36
+ combineStyles: () => combineStyles,
37
+ BaseElement: () => BaseElement
38
+ });
39
+ module.exports = __toCommonJS(exports_src);
40
+
41
+ // src/styles.ts
42
+ var styleSheetCache = new WeakMap;
43
+ function css(strings, ...values) {
44
+ const cached = styleSheetCache.get(strings);
45
+ if (cached && values.length === 0) {
46
+ return cached;
47
+ }
48
+ let cssText = strings[0];
49
+ for (let i = 0;i < values.length; i++) {
50
+ cssText += String(values[i]) + strings[i + 1];
51
+ }
52
+ const sheet = new CSSStyleSheet;
53
+ sheet.replaceSync(cssText);
54
+ if (values.length === 0) {
55
+ styleSheetCache.set(strings, sheet);
56
+ }
57
+ return sheet;
58
+ }
59
+ function combineStyles(...sheets) {
60
+ return sheets;
61
+ }
62
+ function cssVars(vars) {
63
+ return Object.entries(vars).map(([key, value]) => `--${key}: ${value}`).join("; ");
64
+ }
65
+ var defaultTheme = css`
66
+ :host {
67
+ /* Colors */
68
+ --dm-primary: #3b82f6;
69
+ --dm-primary-hover: #2563eb;
70
+ --dm-primary-active: #1d4ed8;
71
+ --dm-secondary: #6b7280;
72
+ --dm-secondary-hover: #4b5563;
73
+ --dm-secondary-active: #374151;
74
+ --dm-success: #22c55e;
75
+ --dm-warning: #f59e0b;
76
+ --dm-error: #ef4444;
77
+ --dm-info: #3b82f6;
78
+
79
+ /* Neutrals */
80
+ --dm-gray-50: #f9fafb;
81
+ --dm-gray-100: #f3f4f6;
82
+ --dm-gray-200: #e5e7eb;
83
+ --dm-gray-300: #d1d5db;
84
+ --dm-gray-400: #9ca3af;
85
+ --dm-gray-500: #6b7280;
86
+ --dm-gray-600: #4b5563;
87
+ --dm-gray-700: #374151;
88
+ --dm-gray-800: #1f2937;
89
+ --dm-gray-900: #111827;
90
+
91
+ /* Typography */
92
+ --dm-font-family: system-ui, -apple-system, sans-serif;
93
+ --dm-font-size-xs: 0.75rem;
94
+ --dm-font-size-sm: 0.875rem;
95
+ --dm-font-size-md: 1rem;
96
+ --dm-font-size-lg: 1.125rem;
97
+ --dm-font-size-xl: 1.25rem;
98
+ --dm-font-weight-normal: 400;
99
+ --dm-font-weight-medium: 500;
100
+ --dm-font-weight-semibold: 600;
101
+ --dm-font-weight-bold: 700;
102
+
103
+ /* Spacing */
104
+ --dm-spacing-xs: 0.25rem;
105
+ --dm-spacing-sm: 0.5rem;
106
+ --dm-spacing-md: 1rem;
107
+ --dm-spacing-lg: 1.5rem;
108
+ --dm-spacing-xl: 2rem;
109
+
110
+ /* Border Radius */
111
+ --dm-radius-sm: 0.25rem;
112
+ --dm-radius-md: 0.5rem;
113
+ --dm-radius-lg: 0.75rem;
114
+ --dm-radius-xl: 1rem;
115
+ --dm-radius-full: 9999px;
116
+
117
+ /* Shadows */
118
+ --dm-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
119
+ --dm-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
120
+ --dm-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
121
+
122
+ /* Transitions */
123
+ --dm-transition-fast: 150ms ease;
124
+ --dm-transition-normal: 200ms ease;
125
+ --dm-transition-slow: 300ms ease;
126
+
127
+ /* Focus */
128
+ --dm-focus-ring: 0 0 0 2px var(--dm-primary);
129
+ --dm-focus-ring-offset: 0 0 0 2px white, 0 0 0 4px var(--dm-primary);
130
+ }
131
+ `;
132
+ var resetStyles = css`
133
+ *,
134
+ *::before,
135
+ *::after {
136
+ box-sizing: border-box;
137
+ }
138
+
139
+ :host {
140
+ font-family: var(--dm-font-family, system-ui, -apple-system, sans-serif);
141
+ }
142
+
143
+ :host([hidden]) {
144
+ display: none !important;
145
+ }
146
+ `;
147
+
148
+ // src/base-element.ts
149
+ class BaseElement extends HTMLElement {
150
+ static properties = {};
151
+ static get observedAttributes() {
152
+ return Object.entries(this.properties).filter(([, def]) => def.attribute !== false).map(([name, def]) => def.attribute || toKebabCase(name));
153
+ }
154
+ _styles = [];
155
+ _isConnected = false;
156
+ _pendingUpdate = false;
157
+ _propertyValues = new Map;
158
+ constructor() {
159
+ super();
160
+ this.attachShadow({ mode: "open" });
161
+ this._styles = [resetStyles, defaultTheme];
162
+ this.shadowRoot.adoptedStyleSheets = this._styles;
163
+ this._initializeProperties();
164
+ }
165
+ _initializeProperties() {
166
+ const ctor = this.constructor;
167
+ const properties = ctor.properties;
168
+ for (const [name, def] of Object.entries(properties)) {
169
+ if (def.default !== undefined) {
170
+ this._propertyValues.set(name, def.default);
171
+ }
172
+ Object.defineProperty(this, name, {
173
+ get: () => this._propertyValues.get(name),
174
+ set: (value) => {
175
+ const oldValue = this._propertyValues.get(name);
176
+ if (oldValue === value)
177
+ return;
178
+ this._propertyValues.set(name, value);
179
+ if (def.reflect && def.attribute !== false) {
180
+ const attrName = def.attribute || toKebabCase(name);
181
+ this._reflectToAttribute(attrName, value, def.type);
182
+ }
183
+ this._scheduleUpdate();
184
+ },
185
+ enumerable: true,
186
+ configurable: true
187
+ });
188
+ }
189
+ }
190
+ _reflectToAttribute(attrName, value, type) {
191
+ if (value === null || value === undefined) {
192
+ this.removeAttribute(attrName);
193
+ return;
194
+ }
195
+ if (type === Boolean) {
196
+ if (value) {
197
+ this.setAttribute(attrName, "");
198
+ } else {
199
+ this.removeAttribute(attrName);
200
+ }
201
+ return;
202
+ }
203
+ if (type === Object || type === Array) {
204
+ this.setAttribute(attrName, JSON.stringify(value));
205
+ return;
206
+ }
207
+ this.setAttribute(attrName, String(value));
208
+ }
209
+ _attributeToProperty(value, type) {
210
+ if (value === null) {
211
+ return type === Boolean ? false : undefined;
212
+ }
213
+ switch (type) {
214
+ case Boolean:
215
+ return true;
216
+ case Number:
217
+ return Number(value);
218
+ case Object:
219
+ case Array:
220
+ try {
221
+ return JSON.parse(value);
222
+ } catch {
223
+ return;
224
+ }
225
+ default:
226
+ return value;
227
+ }
228
+ }
229
+ _scheduleUpdate() {
230
+ if (this._pendingUpdate)
231
+ return;
232
+ this._pendingUpdate = true;
233
+ queueMicrotask(() => {
234
+ this._pendingUpdate = false;
235
+ if (this._isConnected) {
236
+ this.update();
237
+ }
238
+ });
239
+ }
240
+ attachStyles(styles) {
241
+ const sheets = Array.isArray(styles) ? styles : [styles];
242
+ this._styles = [...this._styles, ...sheets];
243
+ this.shadowRoot.adoptedStyleSheets = this._styles;
244
+ }
245
+ connectedCallback() {
246
+ this._isConnected = true;
247
+ this.update();
248
+ }
249
+ disconnectedCallback() {
250
+ this._isConnected = false;
251
+ }
252
+ attributeChangedCallback(name, oldValue, newValue) {
253
+ if (oldValue === newValue)
254
+ return;
255
+ const ctor = this.constructor;
256
+ const properties = ctor.properties;
257
+ for (const [propName, def] of Object.entries(properties)) {
258
+ const attrName = def.attribute || toKebabCase(propName);
259
+ if (attrName === name) {
260
+ const value = this._attributeToProperty(newValue, def.type);
261
+ this._propertyValues.set(propName, value);
262
+ this._scheduleUpdate();
263
+ break;
264
+ }
265
+ }
266
+ }
267
+ update() {
268
+ const content = this.render();
269
+ if (content !== undefined) {
270
+ this.shadowRoot.innerHTML = content;
271
+ }
272
+ }
273
+ render() {
274
+ return;
275
+ }
276
+ emit(name, detail, options) {
277
+ const event = new CustomEvent(name, {
278
+ bubbles: true,
279
+ composed: true,
280
+ cancelable: true,
281
+ ...options,
282
+ detail
283
+ });
284
+ return this.dispatchEvent(event);
285
+ }
286
+ query(selector) {
287
+ return this.shadowRoot.querySelector(selector);
288
+ }
289
+ queryAll(selector) {
290
+ return this.shadowRoot.querySelectorAll(selector);
291
+ }
292
+ }
293
+ function toKebabCase(str) {
294
+ return str.replace(/([A-Z])/g, "-$1").toLowerCase();
295
+ }
296
+
297
+ //# debugId=97B7DA3023EBE86C64756E2164756E21
298
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/styles.ts", "../../src/base-element.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * CSS-in-JS utilities for constructable stylesheets\n */\n\n/**\n * Cache for constructed stylesheets\n */\nconst styleSheetCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * Creates a CSSStyleSheet from a template literal\n * Results are cached for performance\n *\n * @example\n * ```ts\n * const styles = css`\n * :host {\n * display: block;\n * }\n * `;\n * ```\n *\n * @param strings - Template literal strings\n * @param values - Interpolated values\n * @returns A CSSStyleSheet instance\n */\nexport function css(strings: TemplateStringsArray, ...values: (string | number)[]): CSSStyleSheet {\n // Check cache first\n const cached = styleSheetCache.get(strings);\n if (cached && values.length === 0) {\n return cached;\n }\n\n // Construct the CSS string\n let cssText = strings[0];\n for (let i = 0; i < values.length; i++) {\n cssText += String(values[i]) + strings[i + 1];\n }\n\n // Create and cache the stylesheet\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n\n // Only cache if there are no dynamic values\n if (values.length === 0) {\n styleSheetCache.set(strings, sheet);\n }\n\n return sheet;\n}\n\n/**\n * Combines multiple CSSStyleSheet instances into an array\n * Useful for composing styles from multiple sources\n *\n * @param sheets - Stylesheets to combine\n * @returns Array of stylesheets\n */\nexport function combineStyles(...sheets: CSSStyleSheet[]): CSSStyleSheet[] {\n return sheets;\n}\n\n/**\n * Creates CSS custom property declarations from an object\n *\n * @example\n * ```ts\n * const vars = cssVars({\n * 'dm-primary': '#3b82f6',\n * 'dm-spacing': '1rem'\n * });\n * // Returns: '--dm-primary: #3b82f6; --dm-spacing: 1rem;'\n * ```\n *\n * @param vars - Object of variable names to values\n * @returns CSS custom property declarations string\n */\nexport function cssVars(vars: Record<string, string | number>): string {\n return Object.entries(vars)\n .map(([key, value]) => `--${key}: ${value}`)\n .join('; ');\n}\n\n/**\n * Default theme CSS custom properties\n */\nexport const defaultTheme = css`\n :host {\n /* Colors */\n --dm-primary: #3b82f6;\n --dm-primary-hover: #2563eb;\n --dm-primary-active: #1d4ed8;\n --dm-secondary: #6b7280;\n --dm-secondary-hover: #4b5563;\n --dm-secondary-active: #374151;\n --dm-success: #22c55e;\n --dm-warning: #f59e0b;\n --dm-error: #ef4444;\n --dm-info: #3b82f6;\n\n /* Neutrals */\n --dm-gray-50: #f9fafb;\n --dm-gray-100: #f3f4f6;\n --dm-gray-200: #e5e7eb;\n --dm-gray-300: #d1d5db;\n --dm-gray-400: #9ca3af;\n --dm-gray-500: #6b7280;\n --dm-gray-600: #4b5563;\n --dm-gray-700: #374151;\n --dm-gray-800: #1f2937;\n --dm-gray-900: #111827;\n\n /* Typography */\n --dm-font-family: system-ui, -apple-system, sans-serif;\n --dm-font-size-xs: 0.75rem;\n --dm-font-size-sm: 0.875rem;\n --dm-font-size-md: 1rem;\n --dm-font-size-lg: 1.125rem;\n --dm-font-size-xl: 1.25rem;\n --dm-font-weight-normal: 400;\n --dm-font-weight-medium: 500;\n --dm-font-weight-semibold: 600;\n --dm-font-weight-bold: 700;\n\n /* Spacing */\n --dm-spacing-xs: 0.25rem;\n --dm-spacing-sm: 0.5rem;\n --dm-spacing-md: 1rem;\n --dm-spacing-lg: 1.5rem;\n --dm-spacing-xl: 2rem;\n\n /* Border Radius */\n --dm-radius-sm: 0.25rem;\n --dm-radius-md: 0.5rem;\n --dm-radius-lg: 0.75rem;\n --dm-radius-xl: 1rem;\n --dm-radius-full: 9999px;\n\n /* Shadows */\n --dm-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --dm-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);\n --dm-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);\n\n /* Transitions */\n --dm-transition-fast: 150ms ease;\n --dm-transition-normal: 200ms ease;\n --dm-transition-slow: 300ms ease;\n\n /* Focus */\n --dm-focus-ring: 0 0 0 2px var(--dm-primary);\n --dm-focus-ring-offset: 0 0 0 2px white, 0 0 0 4px var(--dm-primary);\n }\n`;\n\n/**\n * Reset styles for Shadow DOM elements\n */\nexport const resetStyles = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n font-family: var(--dm-font-family, system-ui, -apple-system, sans-serif);\n }\n\n :host([hidden]) {\n display: none !important;\n }\n`;\n",
6
+ "/**\n * Base class for all DuskMoon custom elements\n */\n\nimport { resetStyles, defaultTheme } from './styles.js';\n\n/**\n * Property definition for reactive properties\n */\nexport interface PropertyDefinition {\n /** Attribute name (defaults to kebab-case of property name) */\n attribute?: string | false;\n /** Whether changes should reflect to attribute */\n reflect?: boolean;\n /** Property type for conversion */\n type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array;\n /** Default value */\n default?: unknown;\n}\n\n/**\n * Map of property names to their definitions\n */\nexport type PropertyDefinitions = Record<string, PropertyDefinition>;\n\n/**\n * Base class for all DuskMoon custom elements\n *\n * Provides:\n * - Shadow DOM setup with adoptedStyleSheets\n * - Reactive properties with attribute reflection\n * - Style injection utilities\n * - Common lifecycle methods\n *\n * @example\n * ```ts\n * class MyElement extends BaseElement {\n * static properties = {\n * name: { type: String, reflect: true }\n * };\n *\n * constructor() {\n * super();\n * this.attachStyles(myStyles);\n * }\n *\n * render() {\n * return `<div>Hello, ${this.name}!</div>`;\n * }\n * }\n * ```\n */\nexport abstract class BaseElement extends HTMLElement {\n /**\n * Property definitions for reactive properties\n * Override in subclasses to define properties\n */\n static properties: PropertyDefinitions = {};\n\n /**\n * Observed attributes derived from property definitions\n */\n static get observedAttributes(): string[] {\n return Object.entries(this.properties)\n .filter(([, def]) => def.attribute !== false)\n .map(([name, def]) => def.attribute || toKebabCase(name));\n }\n\n /**\n * Shadow root for the element\n */\n declare shadowRoot: ShadowRoot;\n\n /**\n * Stylesheets attached to this element\n */\n private _styles: CSSStyleSheet[] = [];\n\n /**\n * Whether the element has been connected to the DOM\n */\n private _isConnected = false;\n\n /**\n * Queue of pending property updates\n */\n private _pendingUpdate = false;\n\n /**\n * Internal property values storage\n */\n private _propertyValues = new Map<string, unknown>();\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n\n // Apply default styles\n this._styles = [resetStyles, defaultTheme];\n this.shadowRoot.adoptedStyleSheets = this._styles;\n\n // Initialize properties\n this._initializeProperties();\n }\n\n /**\n * Initialize reactive properties from static definitions\n */\n private _initializeProperties(): void {\n const ctor = this.constructor as typeof BaseElement;\n const properties = ctor.properties;\n\n for (const [name, def] of Object.entries(properties)) {\n // Set default value\n if (def.default !== undefined) {\n this._propertyValues.set(name, def.default);\n }\n\n // Define property accessor\n Object.defineProperty(this, name, {\n get: () => this._propertyValues.get(name),\n set: (value: unknown) => {\n const oldValue = this._propertyValues.get(name);\n if (oldValue === value) return;\n\n this._propertyValues.set(name, value);\n\n // Reflect to attribute if needed\n if (def.reflect && def.attribute !== false) {\n const attrName = def.attribute || toKebabCase(name);\n this._reflectToAttribute(attrName, value, def.type);\n }\n\n // Schedule update\n this._scheduleUpdate();\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n /**\n * Reflect a property value to an attribute\n */\n private _reflectToAttribute(\n attrName: string,\n value: unknown,\n type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array,\n ): void {\n if (value === null || value === undefined) {\n this.removeAttribute(attrName);\n return;\n }\n\n if (type === Boolean) {\n if (value) {\n this.setAttribute(attrName, '');\n } else {\n this.removeAttribute(attrName);\n }\n return;\n }\n\n if (type === Object || type === Array) {\n this.setAttribute(attrName, JSON.stringify(value));\n return;\n }\n\n this.setAttribute(attrName, String(value));\n }\n\n /**\n * Convert an attribute value to a property value\n */\n private _attributeToProperty(\n value: string | null,\n type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array,\n ): unknown {\n if (value === null) {\n return type === Boolean ? false : undefined;\n }\n\n switch (type) {\n case Boolean:\n return true;\n case Number:\n return Number(value);\n case Object:\n case Array:\n try {\n return JSON.parse(value);\n } catch {\n return undefined;\n }\n default:\n return value;\n }\n }\n\n /**\n * Schedule an update for the next microtask\n */\n private _scheduleUpdate(): void {\n if (this._pendingUpdate) return;\n this._pendingUpdate = true;\n\n queueMicrotask(() => {\n this._pendingUpdate = false;\n if (this._isConnected) {\n this.update();\n }\n });\n }\n\n /**\n * Attach additional stylesheets to the Shadow DOM\n *\n * @param styles - CSSStyleSheet or array of stylesheets to attach\n */\n protected attachStyles(styles: CSSStyleSheet | CSSStyleSheet[]): void {\n const sheets = Array.isArray(styles) ? styles : [styles];\n this._styles = [...this._styles, ...sheets];\n this.shadowRoot.adoptedStyleSheets = this._styles;\n }\n\n /**\n * Called when the element is connected to the DOM\n */\n connectedCallback(): void {\n this._isConnected = true;\n this.update();\n }\n\n /**\n * Called when the element is disconnected from the DOM\n */\n disconnectedCallback(): void {\n this._isConnected = false;\n }\n\n /**\n * Called when an observed attribute changes\n */\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return;\n\n const ctor = this.constructor as typeof BaseElement;\n const properties = ctor.properties;\n\n // Find the property for this attribute\n for (const [propName, def] of Object.entries(properties)) {\n const attrName = def.attribute || toKebabCase(propName);\n if (attrName === name) {\n const value = this._attributeToProperty(newValue, def.type);\n this._propertyValues.set(propName, value);\n this._scheduleUpdate();\n break;\n }\n }\n }\n\n /**\n * Called when the element should update its DOM\n * Override to customize update behavior\n */\n protected update(): void {\n const content = this.render();\n if (content !== undefined) {\n this.shadowRoot.innerHTML = content;\n }\n }\n\n /**\n * Returns the HTML content for the element\n * Override in subclasses to define the element's template\n *\n * @returns HTML string or undefined if no update needed\n */\n protected render(): string | undefined {\n return undefined;\n }\n\n /**\n * Emit a custom event from this element\n *\n * @param name - Event name\n * @param detail - Event detail data\n * @param options - Additional event options\n */\n protected emit<T>(name: string, detail?: T, options?: Omit<CustomEventInit, 'detail'>): boolean {\n const event = new CustomEvent(name, {\n bubbles: true,\n composed: true,\n cancelable: true,\n ...options,\n detail,\n });\n return this.dispatchEvent(event);\n }\n\n /**\n * Query an element in the Shadow DOM\n */\n protected query<T extends Element>(selector: string): T | null {\n return this.shadowRoot.querySelector<T>(selector);\n }\n\n /**\n * Query all matching elements in the Shadow DOM\n */\n protected queryAll<T extends Element>(selector: string): NodeListOf<T> {\n return this.shadowRoot.querySelectorAll<T>(selector);\n }\n}\n\n/**\n * Convert a camelCase string to kebab-case\n */\nfunction toKebabCase(str: string): string {\n return str.replace(/([A-Z])/g, '-$1').toLowerCase();\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "97B7DA3023EBE86C64756E2164756E21",
10
+ "names": []
11
+ }
@@ -0,0 +1,266 @@
1
+ // src/styles.ts
2
+ var styleSheetCache = new WeakMap;
3
+ function css(strings, ...values) {
4
+ const cached = styleSheetCache.get(strings);
5
+ if (cached && values.length === 0) {
6
+ return cached;
7
+ }
8
+ let cssText = strings[0];
9
+ for (let i = 0;i < values.length; i++) {
10
+ cssText += String(values[i]) + strings[i + 1];
11
+ }
12
+ const sheet = new CSSStyleSheet;
13
+ sheet.replaceSync(cssText);
14
+ if (values.length === 0) {
15
+ styleSheetCache.set(strings, sheet);
16
+ }
17
+ return sheet;
18
+ }
19
+ function combineStyles(...sheets) {
20
+ return sheets;
21
+ }
22
+ function cssVars(vars) {
23
+ return Object.entries(vars).map(([key, value]) => `--${key}: ${value}`).join("; ");
24
+ }
25
+ var defaultTheme = css`
26
+ :host {
27
+ /* Colors */
28
+ --dm-primary: #3b82f6;
29
+ --dm-primary-hover: #2563eb;
30
+ --dm-primary-active: #1d4ed8;
31
+ --dm-secondary: #6b7280;
32
+ --dm-secondary-hover: #4b5563;
33
+ --dm-secondary-active: #374151;
34
+ --dm-success: #22c55e;
35
+ --dm-warning: #f59e0b;
36
+ --dm-error: #ef4444;
37
+ --dm-info: #3b82f6;
38
+
39
+ /* Neutrals */
40
+ --dm-gray-50: #f9fafb;
41
+ --dm-gray-100: #f3f4f6;
42
+ --dm-gray-200: #e5e7eb;
43
+ --dm-gray-300: #d1d5db;
44
+ --dm-gray-400: #9ca3af;
45
+ --dm-gray-500: #6b7280;
46
+ --dm-gray-600: #4b5563;
47
+ --dm-gray-700: #374151;
48
+ --dm-gray-800: #1f2937;
49
+ --dm-gray-900: #111827;
50
+
51
+ /* Typography */
52
+ --dm-font-family: system-ui, -apple-system, sans-serif;
53
+ --dm-font-size-xs: 0.75rem;
54
+ --dm-font-size-sm: 0.875rem;
55
+ --dm-font-size-md: 1rem;
56
+ --dm-font-size-lg: 1.125rem;
57
+ --dm-font-size-xl: 1.25rem;
58
+ --dm-font-weight-normal: 400;
59
+ --dm-font-weight-medium: 500;
60
+ --dm-font-weight-semibold: 600;
61
+ --dm-font-weight-bold: 700;
62
+
63
+ /* Spacing */
64
+ --dm-spacing-xs: 0.25rem;
65
+ --dm-spacing-sm: 0.5rem;
66
+ --dm-spacing-md: 1rem;
67
+ --dm-spacing-lg: 1.5rem;
68
+ --dm-spacing-xl: 2rem;
69
+
70
+ /* Border Radius */
71
+ --dm-radius-sm: 0.25rem;
72
+ --dm-radius-md: 0.5rem;
73
+ --dm-radius-lg: 0.75rem;
74
+ --dm-radius-xl: 1rem;
75
+ --dm-radius-full: 9999px;
76
+
77
+ /* Shadows */
78
+ --dm-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
79
+ --dm-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
80
+ --dm-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
81
+
82
+ /* Transitions */
83
+ --dm-transition-fast: 150ms ease;
84
+ --dm-transition-normal: 200ms ease;
85
+ --dm-transition-slow: 300ms ease;
86
+
87
+ /* Focus */
88
+ --dm-focus-ring: 0 0 0 2px var(--dm-primary);
89
+ --dm-focus-ring-offset: 0 0 0 2px white, 0 0 0 4px var(--dm-primary);
90
+ }
91
+ `;
92
+ var resetStyles = css`
93
+ *,
94
+ *::before,
95
+ *::after {
96
+ box-sizing: border-box;
97
+ }
98
+
99
+ :host {
100
+ font-family: var(--dm-font-family, system-ui, -apple-system, sans-serif);
101
+ }
102
+
103
+ :host([hidden]) {
104
+ display: none !important;
105
+ }
106
+ `;
107
+
108
+ // src/base-element.ts
109
+ class BaseElement extends HTMLElement {
110
+ static properties = {};
111
+ static get observedAttributes() {
112
+ return Object.entries(this.properties).filter(([, def]) => def.attribute !== false).map(([name, def]) => def.attribute || toKebabCase(name));
113
+ }
114
+ _styles = [];
115
+ _isConnected = false;
116
+ _pendingUpdate = false;
117
+ _propertyValues = new Map;
118
+ constructor() {
119
+ super();
120
+ this.attachShadow({ mode: "open" });
121
+ this._styles = [resetStyles, defaultTheme];
122
+ this.shadowRoot.adoptedStyleSheets = this._styles;
123
+ this._initializeProperties();
124
+ }
125
+ _initializeProperties() {
126
+ const ctor = this.constructor;
127
+ const properties = ctor.properties;
128
+ for (const [name, def] of Object.entries(properties)) {
129
+ if (def.default !== undefined) {
130
+ this._propertyValues.set(name, def.default);
131
+ }
132
+ Object.defineProperty(this, name, {
133
+ get: () => this._propertyValues.get(name),
134
+ set: (value) => {
135
+ const oldValue = this._propertyValues.get(name);
136
+ if (oldValue === value)
137
+ return;
138
+ this._propertyValues.set(name, value);
139
+ if (def.reflect && def.attribute !== false) {
140
+ const attrName = def.attribute || toKebabCase(name);
141
+ this._reflectToAttribute(attrName, value, def.type);
142
+ }
143
+ this._scheduleUpdate();
144
+ },
145
+ enumerable: true,
146
+ configurable: true
147
+ });
148
+ }
149
+ }
150
+ _reflectToAttribute(attrName, value, type) {
151
+ if (value === null || value === undefined) {
152
+ this.removeAttribute(attrName);
153
+ return;
154
+ }
155
+ if (type === Boolean) {
156
+ if (value) {
157
+ this.setAttribute(attrName, "");
158
+ } else {
159
+ this.removeAttribute(attrName);
160
+ }
161
+ return;
162
+ }
163
+ if (type === Object || type === Array) {
164
+ this.setAttribute(attrName, JSON.stringify(value));
165
+ return;
166
+ }
167
+ this.setAttribute(attrName, String(value));
168
+ }
169
+ _attributeToProperty(value, type) {
170
+ if (value === null) {
171
+ return type === Boolean ? false : undefined;
172
+ }
173
+ switch (type) {
174
+ case Boolean:
175
+ return true;
176
+ case Number:
177
+ return Number(value);
178
+ case Object:
179
+ case Array:
180
+ try {
181
+ return JSON.parse(value);
182
+ } catch {
183
+ return;
184
+ }
185
+ default:
186
+ return value;
187
+ }
188
+ }
189
+ _scheduleUpdate() {
190
+ if (this._pendingUpdate)
191
+ return;
192
+ this._pendingUpdate = true;
193
+ queueMicrotask(() => {
194
+ this._pendingUpdate = false;
195
+ if (this._isConnected) {
196
+ this.update();
197
+ }
198
+ });
199
+ }
200
+ attachStyles(styles) {
201
+ const sheets = Array.isArray(styles) ? styles : [styles];
202
+ this._styles = [...this._styles, ...sheets];
203
+ this.shadowRoot.adoptedStyleSheets = this._styles;
204
+ }
205
+ connectedCallback() {
206
+ this._isConnected = true;
207
+ this.update();
208
+ }
209
+ disconnectedCallback() {
210
+ this._isConnected = false;
211
+ }
212
+ attributeChangedCallback(name, oldValue, newValue) {
213
+ if (oldValue === newValue)
214
+ return;
215
+ const ctor = this.constructor;
216
+ const properties = ctor.properties;
217
+ for (const [propName, def] of Object.entries(properties)) {
218
+ const attrName = def.attribute || toKebabCase(propName);
219
+ if (attrName === name) {
220
+ const value = this._attributeToProperty(newValue, def.type);
221
+ this._propertyValues.set(propName, value);
222
+ this._scheduleUpdate();
223
+ break;
224
+ }
225
+ }
226
+ }
227
+ update() {
228
+ const content = this.render();
229
+ if (content !== undefined) {
230
+ this.shadowRoot.innerHTML = content;
231
+ }
232
+ }
233
+ render() {
234
+ return;
235
+ }
236
+ emit(name, detail, options) {
237
+ const event = new CustomEvent(name, {
238
+ bubbles: true,
239
+ composed: true,
240
+ cancelable: true,
241
+ ...options,
242
+ detail
243
+ });
244
+ return this.dispatchEvent(event);
245
+ }
246
+ query(selector) {
247
+ return this.shadowRoot.querySelector(selector);
248
+ }
249
+ queryAll(selector) {
250
+ return this.shadowRoot.querySelectorAll(selector);
251
+ }
252
+ }
253
+ function toKebabCase(str) {
254
+ return str.replace(/([A-Z])/g, "-$1").toLowerCase();
255
+ }
256
+ export {
257
+ resetStyles,
258
+ defaultTheme,
259
+ cssVars,
260
+ css,
261
+ combineStyles,
262
+ BaseElement
263
+ };
264
+
265
+ //# debugId=DFE5949A28D8D9C864756E2164756E21
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/styles.ts", "../../src/base-element.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * CSS-in-JS utilities for constructable stylesheets\n */\n\n/**\n * Cache for constructed stylesheets\n */\nconst styleSheetCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * Creates a CSSStyleSheet from a template literal\n * Results are cached for performance\n *\n * @example\n * ```ts\n * const styles = css`\n * :host {\n * display: block;\n * }\n * `;\n * ```\n *\n * @param strings - Template literal strings\n * @param values - Interpolated values\n * @returns A CSSStyleSheet instance\n */\nexport function css(strings: TemplateStringsArray, ...values: (string | number)[]): CSSStyleSheet {\n // Check cache first\n const cached = styleSheetCache.get(strings);\n if (cached && values.length === 0) {\n return cached;\n }\n\n // Construct the CSS string\n let cssText = strings[0];\n for (let i = 0; i < values.length; i++) {\n cssText += String(values[i]) + strings[i + 1];\n }\n\n // Create and cache the stylesheet\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n\n // Only cache if there are no dynamic values\n if (values.length === 0) {\n styleSheetCache.set(strings, sheet);\n }\n\n return sheet;\n}\n\n/**\n * Combines multiple CSSStyleSheet instances into an array\n * Useful for composing styles from multiple sources\n *\n * @param sheets - Stylesheets to combine\n * @returns Array of stylesheets\n */\nexport function combineStyles(...sheets: CSSStyleSheet[]): CSSStyleSheet[] {\n return sheets;\n}\n\n/**\n * Creates CSS custom property declarations from an object\n *\n * @example\n * ```ts\n * const vars = cssVars({\n * 'dm-primary': '#3b82f6',\n * 'dm-spacing': '1rem'\n * });\n * // Returns: '--dm-primary: #3b82f6; --dm-spacing: 1rem;'\n * ```\n *\n * @param vars - Object of variable names to values\n * @returns CSS custom property declarations string\n */\nexport function cssVars(vars: Record<string, string | number>): string {\n return Object.entries(vars)\n .map(([key, value]) => `--${key}: ${value}`)\n .join('; ');\n}\n\n/**\n * Default theme CSS custom properties\n */\nexport const defaultTheme = css`\n :host {\n /* Colors */\n --dm-primary: #3b82f6;\n --dm-primary-hover: #2563eb;\n --dm-primary-active: #1d4ed8;\n --dm-secondary: #6b7280;\n --dm-secondary-hover: #4b5563;\n --dm-secondary-active: #374151;\n --dm-success: #22c55e;\n --dm-warning: #f59e0b;\n --dm-error: #ef4444;\n --dm-info: #3b82f6;\n\n /* Neutrals */\n --dm-gray-50: #f9fafb;\n --dm-gray-100: #f3f4f6;\n --dm-gray-200: #e5e7eb;\n --dm-gray-300: #d1d5db;\n --dm-gray-400: #9ca3af;\n --dm-gray-500: #6b7280;\n --dm-gray-600: #4b5563;\n --dm-gray-700: #374151;\n --dm-gray-800: #1f2937;\n --dm-gray-900: #111827;\n\n /* Typography */\n --dm-font-family: system-ui, -apple-system, sans-serif;\n --dm-font-size-xs: 0.75rem;\n --dm-font-size-sm: 0.875rem;\n --dm-font-size-md: 1rem;\n --dm-font-size-lg: 1.125rem;\n --dm-font-size-xl: 1.25rem;\n --dm-font-weight-normal: 400;\n --dm-font-weight-medium: 500;\n --dm-font-weight-semibold: 600;\n --dm-font-weight-bold: 700;\n\n /* Spacing */\n --dm-spacing-xs: 0.25rem;\n --dm-spacing-sm: 0.5rem;\n --dm-spacing-md: 1rem;\n --dm-spacing-lg: 1.5rem;\n --dm-spacing-xl: 2rem;\n\n /* Border Radius */\n --dm-radius-sm: 0.25rem;\n --dm-radius-md: 0.5rem;\n --dm-radius-lg: 0.75rem;\n --dm-radius-xl: 1rem;\n --dm-radius-full: 9999px;\n\n /* Shadows */\n --dm-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --dm-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);\n --dm-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);\n\n /* Transitions */\n --dm-transition-fast: 150ms ease;\n --dm-transition-normal: 200ms ease;\n --dm-transition-slow: 300ms ease;\n\n /* Focus */\n --dm-focus-ring: 0 0 0 2px var(--dm-primary);\n --dm-focus-ring-offset: 0 0 0 2px white, 0 0 0 4px var(--dm-primary);\n }\n`;\n\n/**\n * Reset styles for Shadow DOM elements\n */\nexport const resetStyles = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n font-family: var(--dm-font-family, system-ui, -apple-system, sans-serif);\n }\n\n :host([hidden]) {\n display: none !important;\n }\n`;\n",
6
+ "/**\n * Base class for all DuskMoon custom elements\n */\n\nimport { resetStyles, defaultTheme } from './styles.js';\n\n/**\n * Property definition for reactive properties\n */\nexport interface PropertyDefinition {\n /** Attribute name (defaults to kebab-case of property name) */\n attribute?: string | false;\n /** Whether changes should reflect to attribute */\n reflect?: boolean;\n /** Property type for conversion */\n type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array;\n /** Default value */\n default?: unknown;\n}\n\n/**\n * Map of property names to their definitions\n */\nexport type PropertyDefinitions = Record<string, PropertyDefinition>;\n\n/**\n * Base class for all DuskMoon custom elements\n *\n * Provides:\n * - Shadow DOM setup with adoptedStyleSheets\n * - Reactive properties with attribute reflection\n * - Style injection utilities\n * - Common lifecycle methods\n *\n * @example\n * ```ts\n * class MyElement extends BaseElement {\n * static properties = {\n * name: { type: String, reflect: true }\n * };\n *\n * constructor() {\n * super();\n * this.attachStyles(myStyles);\n * }\n *\n * render() {\n * return `<div>Hello, ${this.name}!</div>`;\n * }\n * }\n * ```\n */\nexport abstract class BaseElement extends HTMLElement {\n /**\n * Property definitions for reactive properties\n * Override in subclasses to define properties\n */\n static properties: PropertyDefinitions = {};\n\n /**\n * Observed attributes derived from property definitions\n */\n static get observedAttributes(): string[] {\n return Object.entries(this.properties)\n .filter(([, def]) => def.attribute !== false)\n .map(([name, def]) => def.attribute || toKebabCase(name));\n }\n\n /**\n * Shadow root for the element\n */\n declare shadowRoot: ShadowRoot;\n\n /**\n * Stylesheets attached to this element\n */\n private _styles: CSSStyleSheet[] = [];\n\n /**\n * Whether the element has been connected to the DOM\n */\n private _isConnected = false;\n\n /**\n * Queue of pending property updates\n */\n private _pendingUpdate = false;\n\n /**\n * Internal property values storage\n */\n private _propertyValues = new Map<string, unknown>();\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n\n // Apply default styles\n this._styles = [resetStyles, defaultTheme];\n this.shadowRoot.adoptedStyleSheets = this._styles;\n\n // Initialize properties\n this._initializeProperties();\n }\n\n /**\n * Initialize reactive properties from static definitions\n */\n private _initializeProperties(): void {\n const ctor = this.constructor as typeof BaseElement;\n const properties = ctor.properties;\n\n for (const [name, def] of Object.entries(properties)) {\n // Set default value\n if (def.default !== undefined) {\n this._propertyValues.set(name, def.default);\n }\n\n // Define property accessor\n Object.defineProperty(this, name, {\n get: () => this._propertyValues.get(name),\n set: (value: unknown) => {\n const oldValue = this._propertyValues.get(name);\n if (oldValue === value) return;\n\n this._propertyValues.set(name, value);\n\n // Reflect to attribute if needed\n if (def.reflect && def.attribute !== false) {\n const attrName = def.attribute || toKebabCase(name);\n this._reflectToAttribute(attrName, value, def.type);\n }\n\n // Schedule update\n this._scheduleUpdate();\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n /**\n * Reflect a property value to an attribute\n */\n private _reflectToAttribute(\n attrName: string,\n value: unknown,\n type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array,\n ): void {\n if (value === null || value === undefined) {\n this.removeAttribute(attrName);\n return;\n }\n\n if (type === Boolean) {\n if (value) {\n this.setAttribute(attrName, '');\n } else {\n this.removeAttribute(attrName);\n }\n return;\n }\n\n if (type === Object || type === Array) {\n this.setAttribute(attrName, JSON.stringify(value));\n return;\n }\n\n this.setAttribute(attrName, String(value));\n }\n\n /**\n * Convert an attribute value to a property value\n */\n private _attributeToProperty(\n value: string | null,\n type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array,\n ): unknown {\n if (value === null) {\n return type === Boolean ? false : undefined;\n }\n\n switch (type) {\n case Boolean:\n return true;\n case Number:\n return Number(value);\n case Object:\n case Array:\n try {\n return JSON.parse(value);\n } catch {\n return undefined;\n }\n default:\n return value;\n }\n }\n\n /**\n * Schedule an update for the next microtask\n */\n private _scheduleUpdate(): void {\n if (this._pendingUpdate) return;\n this._pendingUpdate = true;\n\n queueMicrotask(() => {\n this._pendingUpdate = false;\n if (this._isConnected) {\n this.update();\n }\n });\n }\n\n /**\n * Attach additional stylesheets to the Shadow DOM\n *\n * @param styles - CSSStyleSheet or array of stylesheets to attach\n */\n protected attachStyles(styles: CSSStyleSheet | CSSStyleSheet[]): void {\n const sheets = Array.isArray(styles) ? styles : [styles];\n this._styles = [...this._styles, ...sheets];\n this.shadowRoot.adoptedStyleSheets = this._styles;\n }\n\n /**\n * Called when the element is connected to the DOM\n */\n connectedCallback(): void {\n this._isConnected = true;\n this.update();\n }\n\n /**\n * Called when the element is disconnected from the DOM\n */\n disconnectedCallback(): void {\n this._isConnected = false;\n }\n\n /**\n * Called when an observed attribute changes\n */\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return;\n\n const ctor = this.constructor as typeof BaseElement;\n const properties = ctor.properties;\n\n // Find the property for this attribute\n for (const [propName, def] of Object.entries(properties)) {\n const attrName = def.attribute || toKebabCase(propName);\n if (attrName === name) {\n const value = this._attributeToProperty(newValue, def.type);\n this._propertyValues.set(propName, value);\n this._scheduleUpdate();\n break;\n }\n }\n }\n\n /**\n * Called when the element should update its DOM\n * Override to customize update behavior\n */\n protected update(): void {\n const content = this.render();\n if (content !== undefined) {\n this.shadowRoot.innerHTML = content;\n }\n }\n\n /**\n * Returns the HTML content for the element\n * Override in subclasses to define the element's template\n *\n * @returns HTML string or undefined if no update needed\n */\n protected render(): string | undefined {\n return undefined;\n }\n\n /**\n * Emit a custom event from this element\n *\n * @param name - Event name\n * @param detail - Event detail data\n * @param options - Additional event options\n */\n protected emit<T>(name: string, detail?: T, options?: Omit<CustomEventInit, 'detail'>): boolean {\n const event = new CustomEvent(name, {\n bubbles: true,\n composed: true,\n cancelable: true,\n ...options,\n detail,\n });\n return this.dispatchEvent(event);\n }\n\n /**\n * Query an element in the Shadow DOM\n */\n protected query<T extends Element>(selector: string): T | null {\n return this.shadowRoot.querySelector<T>(selector);\n }\n\n /**\n * Query all matching elements in the Shadow DOM\n */\n protected queryAll<T extends Element>(selector: string): NodeListOf<T> {\n return this.shadowRoot.querySelectorAll<T>(selector);\n }\n}\n\n/**\n * Convert a camelCase string to kebab-case\n */\nfunction toKebabCase(str: string): string {\n return str.replace(/([A-Z])/g, '-$1').toLowerCase();\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "DFE5949A28D8D9C864756E2164756E21",
10
+ "names": []
11
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/styles.ts","../src/base-element.ts","../src/types.ts","../src/index.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/globals.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/assert.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/buffer.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/child_process.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/cluster.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/console.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/constants.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/crypto.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/dgram.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/dns.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/domain.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/events.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/fs.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/http.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/http2.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/https.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/inspector.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/module.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/net.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/os.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/path.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/process.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/punycode.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/querystring.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/quic.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/readline.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/repl.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/sea.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/stream.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/test.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/timers.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/tls.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/tty.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/url.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/util.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/util/types.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/v8.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/vm.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/wasi.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/zlib.d.ts","../../../node_modules/.bun/@types+node@25.0.3/node_modules/@types/node/index.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.bun/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/globals.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/s3.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/fetch.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/bun.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/extensions.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/devserver.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/ffi.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/html-rewriter.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/jsc.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/sqlite.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/utils.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/overloads.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/branding.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/messages.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/vendor/expect-type/index.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/test.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/wasm.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/overrides.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/deprecated.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/redis.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/shell.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/serve.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/sql.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/security.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/bundle.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/bun.ns.d.ts","../../../node_modules/.bun/bun-types@1.3.5/node_modules/bun-types/index.d.ts","../../../node_modules/.bun/@types+bun@1.3.5/node_modules/@types/bun/index.d.ts"],"fileIdsList":[[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210,213],[71,89,90,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,91,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,131,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,93,98,100,103,104,107,109,110,111,113,123,128,140,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,93,94,100,103,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,95,100,104,107,109,110,111,123,141,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,96,97,100,104,107,109,110,111,114,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,107,109,110,111,123,128,137,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,98,100,103,104,107,109,110,111,113,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,91,92,99,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,101,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,102,103,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,91,92,100,103,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,105,107,109,110,111,123,128,140,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,103,104,105,107,109,110,111,123,128,131,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,103,104,106,107,109,110,111,113,123,128,140,186,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,106,107,109,110,111,113,123,128,137,140,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,106,107,108,109,110,111,123,128,137,140,187,188,189,190,192,203,204,205,206,207,208,209,210],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,112,123,140,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,107,109,110,111,113,123,128,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,114,123,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,115,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,107,109,110,111,118,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,120,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,121,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,107,109,110,111,113,123,131,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,107,109,110,111,123,124,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,125,141,144,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,107,109,110,111,123,128,130,131,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,129,131,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,131,141,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,132,187,188,189,190,192,203,205,206,207,208,209,210],[71,89,92,100,104,107,109,110,111,123,128,134,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,128,133,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,107,109,110,111,123,135,136,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,135,136,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,107,109,110,111,113,123,128,137,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,138,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,113,123,139,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,106,107,109,110,111,121,123,140,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,141,142,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,107,109,110,111,123,142,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,128,143,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,112,123,144,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,145,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,95,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,141,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,186,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,140,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,146,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,118,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,131,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,136,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,103,104,105,107,109,110,111,118,123,128,131,140,143,144,146,186,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,128,147,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,106,107,109,110,111,123,137,141,146,186,187,188,189,192,193,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,186,187,188,190,192,203,205,206,207,208,209,210],[71,92,97,100,104,107,109,110,111,118,123,128,131,137,141,146,186,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,148,187,188,189,190,191,192,193,194,195,196,202,203,204,205,206,207,208,209,210,211,212],[71,92,95,97,100,104,105,107,109,110,111,114,123,131,137,140,147,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,196,203,205,206,207,208,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,201,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,197,198,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,197,198,199,200,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,197,199,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,197,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,187,188,189,190,192,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,140,152,155,158,159,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,128,140,155,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,140,155,159,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,128,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,149,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,153,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,140,151,152,155,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,113,123,137,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,148,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,148,149,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,113,123,140,151,155,187,188,189,190,192,203,204,205,206,207,208,209,210],[66,67,68,71,92,100,103,104,107,109,110,111,123,128,140,150,154,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,163,171,187,188,189,190,192,203,205,206,207,208,209,210],[67,71,92,100,104,107,109,110,111,123,153,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,180,181,187,188,189,190,192,203,205,206,207,208,209,210],[67,71,92,100,104,107,109,110,111,123,131,140,148,150,155,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,148,149,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,140,151,155,187,188,189,190,192,203,204,205,206,207,208,209,210],[66,71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,149,150,151,153,154,155,156,157,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,183,184,185,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,173,176,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,163,164,165,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,153,155,164,166,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,154,187,188,189,190,192,203,205,206,207,208,209,210],[67,71,92,100,104,107,109,110,111,123,149,155,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,159,164,166,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,159,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,140,153,155,158,187,188,189,190,192,203,204,205,206,207,208,209,210],[67,71,92,100,104,107,109,110,111,123,151,155,163,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,128,187,188,189,190,192,203,204,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,155,173,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,166,187,188,189,190,192,203,205,206,207,208,209,210],[71,92,100,104,107,109,110,111,123,131,146,148,149,155,180,187,188,189,190,192,203,204,205,206,207,208,209,210],[62,71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210],[62,63,64,71,92,100,104,107,109,110,111,123,187,188,189,190,192,203,205,206,207,208,209,210]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3c3b532cc65c1a93a34dc2ae57f6f3bb54f7f037788151a18ba6772e436a26a2","signature":"aa3212178492041452dd5bee7abc648e3d0e533e900ae3de0bae6d33002a2f56"},{"version":"6d3fb2b35052eca88b795222a17c3cffd6b81bfe652f9f30619aa63fadc4aa93","signature":"d4a48751b4227ab81b82552c7d5efcfc4810bcca247298010215d874c3ab5191"},{"version":"82edc91abe13099b1dcd5d69b967ca709b215f12595c45cc6eb4bd25c17d86ae","signature":"d3a328c0eccf652bc8b6c14515a8b848a558b9d684e15a7c0c2e15de5016df57"},{"version":"8c300228afded2724347502b01dd29cb84bf5ea328291b106987ada1116cc74d","signature":"3d80d8bcd5166b8b8b5c5e1c7d6261fdacfcbf7c876412610dc7b1742bb39df3"},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"dd0109710de4cd93e245121ab86d8c66d20f3ead80074b68e9c3e349c4f53342","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf83d90d5faf27b994c2e79af02e32b555dbfe42cd9bd1571445f2168d1f4e2d","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"0e28335ac43f4d94dd2fe6d9e6fa6813570640839addd10d309d7985f33a6308","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"961cf7535b9c521cd634055b1b6ac49b94d055f0b573ce7fdc4cfaddab080b7c","impliedFormat":1},{"version":"806a8c6daae69e5695e7200d9eca6bc1e4298f38d90edda3ce67a794da31a24f","impliedFormat":1},{"version":"ac86245c2f31335bfd52cbe7fc760f9fc4f165387875869a478a6d9616a95e72","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"9d96a7ce809392ff2cb99691acf7c62e632fe56897356ba013b689277aca3619","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c0a08e343c6a0ae17bd13ba6d44a9758236dc904cd5e4b43456996cd51f520","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"6f80e51ba310608cd71bcdc09a171d7bbfb3b316048601c9ec215ce16a8dcfbc","impliedFormat":1},{"version":"a3bdc774995d56caaac759a424831091bb22450ca3590f34dae53d98323be191","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"2ca2bca6845a7234eff5c3d192727a068fca72ac565f3c819c6b04ccc83dadc0","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"6c00f77f0335ae0c18bd45a6c7c9c97c9625fb7e5dd6d5936eadf70718bce52e","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"586eaf66bace2e731cee0ddfbfac326ad74a83c1acfeac4afb2db85ad23226c7","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"d1a14d87cedcf4f0b8173720d6eb29cc02878bf2b6dabf9c9d9cee742f275368","impliedFormat":1},{"version":"e60efae9fe48a2955f66bf4cbf0f082516185b877daf50d9c5e2a009660a7714","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"cd9189eacf0f9143b8830e9d6769335aa6d902c04195f04145bcbf19e7f26fcb","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"6e215dac8b234548d91b718f9c07d5b09473cd5cabb29053fcd8be0af190acb6","affectsGlobalScope":true,"impliedFormat":1},{"version":"0da1adb8d70eba31791b5f9203a384a628f9a1b03162bc68306838e842eff203","impliedFormat":1},{"version":"f3d3e999a323c85c8a63ce90c6e4624ff89fe137a0e2508fddc08e0556d08abf","impliedFormat":1},{"version":"a1fdda024d346cd1906d4a1f66c2804217ef88b554946ac7d9b7bcbadcc75f11","impliedFormat":1},{"version":"49ae37a1b5de16f762c8a151eeaec6b558ce3c27251052ef7a361144af42cad4","impliedFormat":1},{"version":"fc9e630f9302d0414ccd6c8ed2706659cff5ae454a56560c6122fa4a3fac5bbd","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa0a44af370a2d7c1aac988a17836f57910a6c52689f52f5b3ac1d4c6cadcb23","impliedFormat":1},{"version":"0ac74c7586880e26b6a599c710b59284a284e084a2bbc82cd40fb3fbfdea71ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ce12357dadbb8efc4e4ec4dab709c8071bf992722fc9adfea2fe0bd5b50923f","impliedFormat":1},{"version":"31bd1a31f935276adf90384a35edbd4614018ff008f57d62ffb57ac538e94e51","impliedFormat":1},{"version":"ffd344731abee98a0a85a735b19052817afd2156d97d1410819cd9bcd1bd575e","impliedFormat":1},{"version":"475e07c959f4766f90678425b45cf58ac9b95e50de78367759c1e5118e85d5c3","impliedFormat":1},{"version":"a524ae401b30a1b0814f1bbcdae459da97fa30ae6e22476e506bb3f82e3d9456","impliedFormat":1},{"version":"7375e803c033425e27cb33bae21917c106cb37b508fd242cccd978ef2ee244c7","impliedFormat":1},{"version":"eeb890c7e9218afdad2f30ad8a76b0b0b5161d11ce13b6723879de408e6bc47a","impliedFormat":1},{"version":"561c795984d06b91091780cebeac616e9e41d83240770e1af14e6ec083b713d5","impliedFormat":1},{"version":"dfbcc400ac6d20b941ccc7bd9031b9d9f54e4d495dd79117334e771959df4805","affectsGlobalScope":true,"impliedFormat":1},{"version":"944d65951e33a13068be5cd525ec42bf9bc180263ba0b723fa236970aa21f611","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b386c7b6ce6f369d18246904fa5eac73566167c88fb6508feba74fa7501a384","affectsGlobalScope":true,"impliedFormat":1},{"version":"592a109e67b907ffd2078cd6f727d5c326e06eaada169eef8fb18546d96f6797","impliedFormat":1},{"version":"f2eb1e35cae499d57e34b4ac3650248776fe7dbd9a3ec34b23754cfd8c22fceb","impliedFormat":1},{"version":"fbed43a6fcf5b675f5ec6fc960328114777862b58a2bb19c109e8fc1906caa09","impliedFormat":1},{"version":"9e98bd421e71f70c75dae7029e316745c89fa7b8bc8b43a91adf9b82c206099c","impliedFormat":1},{"version":"fc803e6b01f4365f71f51f9ce13f71396766848204d4f7a1b2b6154434b84b15","impliedFormat":1},{"version":"f3afcc0d6f77a9ca2d2c5c92eb4b89cd38d6fa4bdc1410d626bd701760a977ec","impliedFormat":1},{"version":"c8109fe76467db6e801d0edfbc50e6826934686467c9418ce6b246232ce7f109","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6f803e4e45915d58e721c04ec17830c6e6678d1e3e00e28edf3d52720909cea","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be812b06e518320ba82e2aff3ac2ca37370a9df917db708f081b9043fa3315","impliedFormat":1}],"root":[[62,65]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[214,1],[89,2],[90,2],[91,3],[71,4],[92,5],[93,6],[94,7],[69,8],[95,9],[96,10],[97,11],[98,12],[99,13],[100,14],[101,14],[102,15],[103,16],[104,17],[105,18],[72,8],[70,8],[106,19],[107,20],[108,21],[148,22],[109,23],[110,24],[111,23],[112,25],[113,26],[114,27],[115,28],[116,28],[117,28],[118,29],[119,30],[120,31],[121,32],[122,33],[123,34],[124,34],[125,35],[126,8],[127,8],[128,36],[129,37],[130,36],[131,38],[132,39],[133,40],[134,41],[135,42],[136,43],[137,44],[138,45],[139,46],[140,47],[141,48],[142,49],[143,50],[144,51],[145,52],[73,23],[74,8],[75,53],[76,54],[77,8],[78,55],[79,8],[80,56],[81,57],[82,58],[83,58],[84,59],[85,8],[86,60],[87,61],[88,57],[146,62],[147,63],[190,64],[212,8],[211,8],[205,65],[192,66],[191,8],[189,67],[193,8],[187,68],[194,8],[213,69],[195,8],[204,70],[206,71],[188,72],[210,73],[208,74],[207,75],[209,76],[196,8],[202,77],[199,78],[201,79],[200,80],[198,81],[197,8],[203,82],[60,8],[61,8],[10,8],[11,8],[13,8],[12,8],[2,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[3,8],[22,8],[23,8],[4,8],[24,8],[28,8],[25,8],[26,8],[27,8],[29,8],[30,8],[31,8],[5,8],[32,8],[33,8],[34,8],[35,8],[6,8],[39,8],[36,8],[37,8],[38,8],[40,8],[7,8],[41,8],[46,8],[47,8],[42,8],[43,8],[44,8],[45,8],[8,8],[51,8],[48,8],[49,8],[50,8],[52,8],[9,8],[53,8],[54,8],[55,8],[57,8],[56,8],[1,8],[58,8],[59,8],[163,83],[175,84],[161,85],[176,86],[185,87],[152,88],[153,89],[151,90],[184,91],[179,92],[183,93],[155,94],[172,95],[154,96],[182,97],[149,98],[150,99],[156,100],[157,8],[162,101],[160,100],[67,102],[186,103],[177,104],[166,105],[165,100],[167,106],[170,107],[164,108],[168,109],[180,91],[158,110],[159,111],[171,112],[68,113],[174,114],[173,100],[169,115],[178,8],[66,8],[181,116],[63,117],[65,118],[62,8],[64,8]],"latestChangedDtsFile":"./types/index.d.ts","version":"5.9.3"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Base class for all DuskMoon custom elements
3
+ */
4
+ /**
5
+ * Property definition for reactive properties
6
+ */
7
+ export interface PropertyDefinition {
8
+ /** Attribute name (defaults to kebab-case of property name) */
9
+ attribute?: string | false;
10
+ /** Whether changes should reflect to attribute */
11
+ reflect?: boolean;
12
+ /** Property type for conversion */
13
+ type?: typeof String | typeof Number | typeof Boolean | typeof Object | typeof Array;
14
+ /** Default value */
15
+ default?: unknown;
16
+ }
17
+ /**
18
+ * Map of property names to their definitions
19
+ */
20
+ export type PropertyDefinitions = Record<string, PropertyDefinition>;
21
+ /**
22
+ * Base class for all DuskMoon custom elements
23
+ *
24
+ * Provides:
25
+ * - Shadow DOM setup with adoptedStyleSheets
26
+ * - Reactive properties with attribute reflection
27
+ * - Style injection utilities
28
+ * - Common lifecycle methods
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * class MyElement extends BaseElement {
33
+ * static properties = {
34
+ * name: { type: String, reflect: true }
35
+ * };
36
+ *
37
+ * constructor() {
38
+ * super();
39
+ * this.attachStyles(myStyles);
40
+ * }
41
+ *
42
+ * render() {
43
+ * return `<div>Hello, ${this.name}!</div>`;
44
+ * }
45
+ * }
46
+ * ```
47
+ */
48
+ export declare abstract class BaseElement extends HTMLElement {
49
+ /**
50
+ * Property definitions for reactive properties
51
+ * Override in subclasses to define properties
52
+ */
53
+ static properties: PropertyDefinitions;
54
+ /**
55
+ * Observed attributes derived from property definitions
56
+ */
57
+ static get observedAttributes(): string[];
58
+ /**
59
+ * Shadow root for the element
60
+ */
61
+ shadowRoot: ShadowRoot;
62
+ /**
63
+ * Stylesheets attached to this element
64
+ */
65
+ private _styles;
66
+ /**
67
+ * Whether the element has been connected to the DOM
68
+ */
69
+ private _isConnected;
70
+ /**
71
+ * Queue of pending property updates
72
+ */
73
+ private _pendingUpdate;
74
+ /**
75
+ * Internal property values storage
76
+ */
77
+ private _propertyValues;
78
+ constructor();
79
+ /**
80
+ * Initialize reactive properties from static definitions
81
+ */
82
+ private _initializeProperties;
83
+ /**
84
+ * Reflect a property value to an attribute
85
+ */
86
+ private _reflectToAttribute;
87
+ /**
88
+ * Convert an attribute value to a property value
89
+ */
90
+ private _attributeToProperty;
91
+ /**
92
+ * Schedule an update for the next microtask
93
+ */
94
+ private _scheduleUpdate;
95
+ /**
96
+ * Attach additional stylesheets to the Shadow DOM
97
+ *
98
+ * @param styles - CSSStyleSheet or array of stylesheets to attach
99
+ */
100
+ protected attachStyles(styles: CSSStyleSheet | CSSStyleSheet[]): void;
101
+ /**
102
+ * Called when the element is connected to the DOM
103
+ */
104
+ connectedCallback(): void;
105
+ /**
106
+ * Called when the element is disconnected from the DOM
107
+ */
108
+ disconnectedCallback(): void;
109
+ /**
110
+ * Called when an observed attribute changes
111
+ */
112
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
113
+ /**
114
+ * Called when the element should update its DOM
115
+ * Override to customize update behavior
116
+ */
117
+ protected update(): void;
118
+ /**
119
+ * Returns the HTML content for the element
120
+ * Override in subclasses to define the element's template
121
+ *
122
+ * @returns HTML string or undefined if no update needed
123
+ */
124
+ protected render(): string | undefined;
125
+ /**
126
+ * Emit a custom event from this element
127
+ *
128
+ * @param name - Event name
129
+ * @param detail - Event detail data
130
+ * @param options - Additional event options
131
+ */
132
+ protected emit<T>(name: string, detail?: T, options?: Omit<CustomEventInit, 'detail'>): boolean;
133
+ /**
134
+ * Query an element in the Shadow DOM
135
+ */
136
+ protected query<T extends Element>(selector: string): T | null;
137
+ /**
138
+ * Query all matching elements in the Shadow DOM
139
+ */
140
+ protected queryAll<T extends Element>(selector: string): NodeListOf<T>;
141
+ }
142
+ //# sourceMappingURL=base-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-element.d.ts","sourceRoot":"","sources":["../../src/base-element.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,MAAM,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM,GAAG,OAAO,KAAK,CAAC;IACrF,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,8BAAsB,WAAY,SAAQ,WAAW;IACnD;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAM;IAE5C;;OAEG;IACH,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAIxC;IAED;;OAEG;IACK,UAAU,EAAE,UAAU,CAAC;IAE/B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAuB;IAEtC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,cAAc,CAAS;IAE/B;;OAEG;IACH,OAAO,CAAC,eAAe,CAA8B;;IAcrD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,IAAI;IAMrE;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAKzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;OAEG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAkB9F;;;OAGG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAOxB;;;;;OAKG;IACH,SAAS,CAAC,MAAM,IAAI,MAAM,GAAG,SAAS;IAItC;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,OAAO;IAW/F;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CAGvE"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @duskmoon-dev/el-core
3
+ *
4
+ * Core utilities and base classes for DuskMoon custom elements
5
+ */
6
+ export { BaseElement } from './base-element.js';
7
+ export type { PropertyDefinition, PropertyDefinitions } from './base-element.js';
8
+ export { css, combineStyles, cssVars, defaultTheme, resetStyles } from './styles.js';
9
+ export type { CSSValue, Size, Variant, ValidationState, BaseElementProps, SizableProps, VariantProps, FormElementProps, ValidatableProps, ValueChangeEventDetail, AttributeConverter, } from './types.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGjF,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGrF,YAAY,EACV,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * CSS-in-JS utilities for constructable stylesheets
3
+ */
4
+ /**
5
+ * Creates a CSSStyleSheet from a template literal
6
+ * Results are cached for performance
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const styles = css`
11
+ * :host {
12
+ * display: block;
13
+ * }
14
+ * `;
15
+ * ```
16
+ *
17
+ * @param strings - Template literal strings
18
+ * @param values - Interpolated values
19
+ * @returns A CSSStyleSheet instance
20
+ */
21
+ export declare function css(strings: TemplateStringsArray, ...values: (string | number)[]): CSSStyleSheet;
22
+ /**
23
+ * Combines multiple CSSStyleSheet instances into an array
24
+ * Useful for composing styles from multiple sources
25
+ *
26
+ * @param sheets - Stylesheets to combine
27
+ * @returns Array of stylesheets
28
+ */
29
+ export declare function combineStyles(...sheets: CSSStyleSheet[]): CSSStyleSheet[];
30
+ /**
31
+ * Creates CSS custom property declarations from an object
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const vars = cssVars({
36
+ * 'dm-primary': '#3b82f6',
37
+ * 'dm-spacing': '1rem'
38
+ * });
39
+ * // Returns: '--dm-primary: #3b82f6; --dm-spacing: 1rem;'
40
+ * ```
41
+ *
42
+ * @param vars - Object of variable names to values
43
+ * @returns CSS custom property declarations string
44
+ */
45
+ export declare function cssVars(vars: Record<string, string | number>): string;
46
+ /**
47
+ * Default theme CSS custom properties
48
+ */
49
+ export declare const defaultTheme: CSSStyleSheet;
50
+ /**
51
+ * Reset styles for Shadow DOM elements
52
+ */
53
+ export declare const resetStyles: CSSStyleSheet;
54
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,aAAa,CAuBhG;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAEzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAIrE;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,eAkExB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,eAcvB,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Common types and interfaces for DuskMoon Elements
3
+ */
4
+ /**
5
+ * Represents a CSS property value with support for CSS custom properties
6
+ */
7
+ export type CSSValue = string | number;
8
+ /**
9
+ * Size variants available for elements
10
+ */
11
+ export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
+ /**
13
+ * Color variants available for elements
14
+ */
15
+ export type Variant = 'primary' | 'secondary' | 'tertiary' | 'ghost' | 'outline';
16
+ /**
17
+ * Validation state for form elements
18
+ */
19
+ export type ValidationState = 'valid' | 'invalid' | 'pending' | undefined;
20
+ /**
21
+ * Base props shared by all elements
22
+ */
23
+ export interface BaseElementProps {
24
+ /** Whether the element is disabled */
25
+ disabled?: boolean;
26
+ /** Additional CSS classes */
27
+ class?: string;
28
+ }
29
+ /**
30
+ * Props for elements with size variants
31
+ */
32
+ export interface SizableProps {
33
+ /** Size variant */
34
+ size?: Size;
35
+ }
36
+ /**
37
+ * Props for elements with color variants
38
+ */
39
+ export interface VariantProps {
40
+ /** Color variant */
41
+ variant?: Variant;
42
+ }
43
+ /**
44
+ * Props for form elements
45
+ */
46
+ export interface FormElementProps extends BaseElementProps {
47
+ /** Name attribute for form submission */
48
+ name?: string;
49
+ /** Current value */
50
+ value?: string;
51
+ /** Whether the field is required */
52
+ required?: boolean;
53
+ /** Whether the field is readonly */
54
+ readonly?: boolean;
55
+ }
56
+ /**
57
+ * Props for validatable form elements
58
+ */
59
+ export interface ValidatableProps {
60
+ /** Current validation state */
61
+ validationState?: ValidationState;
62
+ /** Error message to display */
63
+ errorMessage?: string;
64
+ }
65
+ /**
66
+ * Event detail for value change events
67
+ */
68
+ export interface ValueChangeEventDetail<T = string> {
69
+ /** The new value */
70
+ value: T;
71
+ /** The previous value */
72
+ previousValue?: T;
73
+ }
74
+ /**
75
+ * Type for attribute converters
76
+ */
77
+ export interface AttributeConverter<T> {
78
+ /** Convert from attribute string to property value */
79
+ fromAttribute: (value: string | null) => T;
80
+ /** Convert from property value to attribute string */
81
+ toAttribute: (value: T) => string | null;
82
+ }
83
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,MAAM;IAChD,oBAAoB;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,yBAAyB;IACzB,aAAa,CAAC,EAAE,CAAC,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,sDAAsD;IACtD,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC;IAC3C,sDAAsD;IACtD,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;CAC1C"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@duskmoon-dev/el-core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.js",
7
+ "types": "./dist/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/types/index.d.ts",
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "prebuild": "bun run clean",
20
+ "build": "bun run build:esm && bun run build:cjs && bun run build:types",
21
+ "build:esm": "bun build ./src/index.ts --outdir ./dist/esm --format esm --sourcemap",
22
+ "build:cjs": "bun build ./src/index.ts --outdir ./dist/cjs --format cjs --sourcemap",
23
+ "build:types": "tsc --emitDeclarationOnly --outDir ./dist/types",
24
+ "dev": "bun build ./src/index.ts --outdir ./dist/esm --format esm --sourcemap --watch",
25
+ "clean": "del-cli dist",
26
+ "test": "bun test",
27
+ "typecheck": "tsc --noEmit",
28
+ "format": "prettier --write 'src/**/*.ts' '*.json' '*.md'",
29
+ "format:check": "prettier --check 'src/**/*.ts' '*.json' '*.md'",
30
+ "lint": "eslint src",
31
+ "lint:check": "eslint src --max-warnings 0",
32
+ "lint:fix": "eslint src --fix",
33
+ "release": "bun publish",
34
+ "release:dry-run": "bun publish --dry-run"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "^5.7.2"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ }
42
+ }