domma-js 0.57.0 → 0.58.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 CHANGED
@@ -474,13 +474,13 @@ Domma.theme.init({ theme: 'ocean-dark' });
474
474
  Domma.theme.set('forest-light');
475
475
 
476
476
  // Toggle between light/dark
477
- Domma.theme.toggle();
477
+ Domma.theme.set(`${Domma.theme.getBase()}-${Domma.theme.isDark() ? 'light' : 'dark'}`);
478
478
 
479
479
  // Auto-detect system preference
480
480
  Domma.theme.init({ autoDetect: true });
481
481
 
482
482
  // List everything available
483
- Domma.theme.listThemes(); // also listBases() and listVariants()
483
+ Domma.theme.listThemes(); // also listBases()
484
484
  ```
485
485
 
486
486
  **Light/dark families:**
@@ -125,8 +125,6 @@ export class Modal extends Component {
125
125
  _later(fn: any, ms: any): void;
126
126
  _clearTimers(): void;
127
127
  _duration(): number;
128
- /** The deprecated unprefixed DOM event, dispatched on the element only (no bubbling). */
129
- _legacyEvent(name: any): void;
130
128
  /**
131
129
  * Open the modal.
132
130
  * @returns {this}
@@ -75,11 +75,11 @@
75
75
  * @property {(selector?: string|HTMLElement|null, options?: import('./components/back-to-top.js').BackToTopOptions) => import('./components/back-to-top.js').BackToTopInstance} backToTop
76
76
  * Create a BackToTop button: a button / link selector is used as the button, anything else adds one
77
77
  * @property {{
78
- * (selector: string|HTMLElement, options?: ButtonGroupOptions): ButtonGroupInstance,
78
+ * (selector: string|HTMLElement, options?: ButtonGroupOptions): (ButtonGroupInstance & {all(): ButtonGroup[]})|null,
79
79
  * all(selector: string|HTMLElement, options?: ButtonGroupOptions): ButtonGroup[]
80
80
  * }} buttonGroup
81
81
  * A button group on every match; returns the first (with `all()` for the rest). `E.buttonGroup.all()`
82
- * returns them as an array. (A selector that matches nothing returns an empty array.)
82
+ * returns them as an array. A selector that matches nothing returns null.
83
83
  * @property {(selector: import('./components/shared.js').ComponentTarget, options?: import('./components/loader.js').LoaderOptions) => import('./components/loader.js').LoaderInstance|null} loader
84
84
  * Create a Loader on an element (null when nothing matches)
85
85
  * @property {(selector: import('./components/shared.js').ComponentTarget, options?: import('./components/loader.js').LoaderOptions) => import('./components/loader.js').LoaderInstance|null} showLoader
@@ -145,13 +145,11 @@
145
145
  * @property {(selector: string|HTMLElement, options?: ProgressionOptions) => ProgressionInstance} progression
146
146
  * A timeline or roadmap
147
147
  * @property {{
148
- * (selector: string|HTMLElement, options?: ListGroupOptions): ListGroupInstance,
148
+ * (selector: string|HTMLElement, options?: ListGroupOptions): (ListGroupInstance & {all(): ListGroup[]})|null,
149
149
  * all(selector: string|HTMLElement, options?: ListGroupOptions): ListGroup[]
150
150
  * }} listGroup
151
151
  * A list group on every match; returns the first (with `all()` for the rest). `E.listGroup.all()`
152
- * returns them as an array. (A selector that matches nothing returns an empty array.)
153
- * @property {(selector: string|HTMLElement, options?: ProgressionOptions) => ProgressionInstance} timeline
154
- * Deprecated: `progression(selector, {mode: 'timeline', ...})`
152
+ * returns them as an array. A selector that matches nothing returns null.
155
153
  * @property {import('./components/toast.js').ToastStatic} toast
156
154
  * Toast notifications: `E.toast(message, options)` plus `.show/.success/.error/.warning/.info/.closeAll`
157
155
  * @property {{
@@ -1941,10 +1939,12 @@ export type Elements = {
1941
1939
  backToTop: (selector?: string | HTMLElement | null, options?: import("./components/back-to-top.js").BackToTopOptions) => import("./components/back-to-top.js").BackToTopInstance;
1942
1940
  /**
1943
1941
  * A button group on every match; returns the first (with `all()` for the rest). `E.buttonGroup.all()`
1944
- * returns them as an array. (A selector that matches nothing returns an empty array.)
1942
+ * returns them as an array. A selector that matches nothing returns null.
1945
1943
  */
1946
1944
  buttonGroup: {
1947
- (selector: string | HTMLElement, options?: ButtonGroupOptions): ButtonGroupInstance;
1945
+ (selector: string | HTMLElement, options?: ButtonGroupOptions): (ButtonGroupInstance & {
1946
+ all(): ButtonGroup[];
1947
+ }) | null;
1948
1948
  all(selector: string | HTMLElement, options?: ButtonGroupOptions): ButtonGroup[];
1949
1949
  };
1950
1950
  /**
@@ -2079,16 +2079,14 @@ export type Elements = {
2079
2079
  progression: (selector: string | HTMLElement, options?: ProgressionOptions) => ProgressionInstance;
2080
2080
  /**
2081
2081
  * A list group on every match; returns the first (with `all()` for the rest). `E.listGroup.all()`
2082
- * returns them as an array. (A selector that matches nothing returns an empty array.)
2082
+ * returns them as an array. A selector that matches nothing returns null.
2083
2083
  */
2084
2084
  listGroup: {
2085
- (selector: string | HTMLElement, options?: ListGroupOptions): ListGroupInstance;
2085
+ (selector: string | HTMLElement, options?: ListGroupOptions): (ListGroupInstance & {
2086
+ all(): ListGroup[];
2087
+ }) | null;
2086
2088
  all(selector: string | HTMLElement, options?: ListGroupOptions): ListGroup[];
2087
2089
  };
2088
- /**
2089
- * Deprecated: `progression(selector, {mode: 'timeline', ...})`
2090
- */
2091
- timeline: (selector: string | HTMLElement, options?: ProgressionOptions) => ProgressionInstance;
2092
2090
  /**
2093
2091
  * Toast notifications: `E.toast(message, options)` plus `.show/.success/.error/.warning/.info/.closeAll`
2094
2092
  */
@@ -131,10 +131,11 @@ export type PopoverOptions = {
131
131
  onHidden?: ((popover: Popover) => void) | null;
132
132
  };
133
133
  /**
134
- * event.detail of popover:show / popover:shown / popover:hide / popover:hidden (fired on the trigger).
134
+ * event.detail of dm:popover:show / shown / hide / hidden (bubbling, fired on the trigger).
135
135
  */
136
136
  export type PopoverEventDetail = {
137
- popover: Popover;
137
+ instance: Popover;
138
+ args: Popover[];
138
139
  };
139
140
  export type PopoverInstance = Popover;
140
141
  /**
@@ -195,9 +196,10 @@ export type PopoverStatic = {
195
196
  * @property {((popover: Popover) => void)|null} [onHidden] - After the panel has been removed
196
197
  */
197
198
  /**
198
- * event.detail of popover:show / popover:shown / popover:hide / popover:hidden (fired on the trigger).
199
+ * event.detail of dm:popover:show / shown / hide / hidden (bubbling, fired on the trigger).
199
200
  * @typedef {object} PopoverEventDetail
200
- * @property {Popover} popover
201
+ * @property {Popover} instance
202
+ * @property {Popover[]} args
201
203
  */
202
204
  /** @typedef {Popover} PopoverInstance */
203
205
  /**
@@ -402,9 +404,8 @@ declare class Popover extends Component {
402
404
  _isAncestorOf(other: any): boolean;
403
405
  _position(): void;
404
406
  /**
405
- * Run the callback, the .on() listeners and `dm:popover:<name>`, then the older
406
- * `popover:<name>` event (kept until 1.0). For a cancelable phase, returns false
407
- * when any of them said no.
407
+ * Run the callback, then the .on() listeners and `dm:popover:<name>`. For a
408
+ * cancelable phase, returns false when any of them said no.
408
409
  */
409
410
  _phase(name: any, cancelable?: boolean): boolean;
410
411
  }
@@ -362,8 +362,7 @@ declare class Sortable extends Component {
362
362
  /** Live mode: move elements and slide everything, the slot included, into place. */
363
363
  _flipItems(mutate: any): void;
364
364
  _save(order: any): void;
365
- /** The onX callback, .on() listeners and `dm:sortable:<name>`, then the older `sortable:<name>` (kept until 1.0). */
365
+ /** The onX callback, then the .on() listeners and `dm:sortable:<name>`. */
366
366
  _signal(name: any, detail: any): void;
367
- _dispatch(name: any, detail: any): void;
368
367
  }
369
368
  import Component from './component.js';
@@ -172,16 +172,6 @@ declare class ThemeEngine {
172
172
  * @returns {this}
173
173
  */
174
174
  set(theme: ThemeName): this;
175
- /**
176
- * @deprecated Use set() with full theme name instead (e.g., set('ocean-dark'))
177
- * @returns {this}
178
- */
179
- setVariant(): this;
180
- /**
181
- * @deprecated No longer applicable with unified theme system. Use variant selector UI instead.
182
- * @returns {this}
183
- */
184
- toggle(): this;
185
175
  /**
186
176
  * Register a callback for theme changes
187
177
  * @param {ThemeChangeCallback} callback - Callback function(oldTheme, newTheme)
@@ -204,11 +194,6 @@ declare class ThemeEngine {
204
194
  * @returns {ThemeVariant[]}
205
195
  */
206
196
  listBases(): ThemeVariant[];
207
- /**
208
- * @deprecated Use listThemes() instead. Kept for backward compatibility.
209
- * @returns {ThemeVariant[]}
210
- */
211
- listVariants(): ThemeVariant[];
212
197
  /**
213
198
  * Get current theme configuration
214
199
  * @returns {ThemeConfig}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "description": "Dynamic Object Manipulation & Modeling API - A complete front-end toolkit.",
5
5
  "main": "public/dist/domma.min.js",
6
6
  "module": "public/dist/domma.esm.js",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.57.0
2
+ * Domma Complete CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:51.370Z
5
+ * Built: 2026-10-24T22:17:45.122Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.57.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T20:04:51.166Z
18
- * Commit: 8ca8224
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.57.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T20:04:51.170Z
4978
- * Commit: 8ca8224
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -5596,11 +5596,11 @@ body.dm-cloaked.dm-ready {
5596
5596
  ============================================ */
5597
5597
 
5598
5598
  /*!
5599
- * Domma Elements CSS v0.57.0
5599
+ * Domma Elements CSS v0.58.0
5600
5600
  * Dynamic Object Manipulation & Modeling API
5601
5601
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5602
- * Built: 2026-10-24T20:04:51.175Z
5603
- * Commit: 8ca8224
5602
+ * Built: 2026-10-24T22:17:45.003Z
5603
+ * Commit: 6edd082
5604
5604
  */
5605
5605
 
5606
5606
  /**
@@ -16613,11 +16613,11 @@ a.avatar-more-person:hover .avatar-more-name {
16613
16613
  ============================================ */
16614
16614
 
16615
16615
  /*!
16616
- * Domma Themes v0.57.0
16616
+ * Domma Themes v0.58.0
16617
16617
  * Dynamic Object Manipulation & Modeling API
16618
16618
  * (c) 2026 Darryl Waterhouse & DCBW-IT
16619
- * Built: 2026-10-24T20:04:51.154Z
16620
- * Commit: 8ca8224
16619
+ * Built: 2026-10-24T22:17:44.986Z
16620
+ * Commit: 6edd082
16621
16621
  */
16622
16622
 
16623
16623
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.57.0
2
+ * Domma Data-Focused CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:51.363Z
5
+ * Built: 2026-10-24T22:17:45.120Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.57.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T20:04:51.166Z
18
- * Commit: 8ca8224
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.57.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T20:04:51.170Z
4978
- * Commit: 8ca8224
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -5596,11 +5596,11 @@ body.dm-cloaked.dm-ready {
5596
5596
  ============================================ */
5597
5597
 
5598
5598
  /*!
5599
- * Domma Elements CSS v0.57.0
5599
+ * Domma Elements CSS v0.58.0
5600
5600
  * Dynamic Object Manipulation & Modeling API
5601
5601
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5602
- * Built: 2026-10-24T20:04:51.175Z
5603
- * Commit: 8ca8224
5602
+ * Built: 2026-10-24T22:17:45.003Z
5603
+ * Commit: 6edd082
5604
5604
  */
5605
5605
 
5606
5606
  /**
@@ -16613,11 +16613,11 @@ a.avatar-more-person:hover .avatar-more-name {
16613
16613
  ============================================ */
16614
16614
 
16615
16615
  /*!
16616
- * Domma Themes v0.57.0
16616
+ * Domma Themes v0.58.0
16617
16617
  * Dynamic Object Manipulation & Modeling API
16618
16618
  * (c) 2026 Darryl Waterhouse & DCBW-IT
16619
- * Built: 2026-10-24T20:04:51.154Z
16620
- * Commit: 8ca8224
16619
+ * Built: 2026-10-24T22:17:44.986Z
16620
+ * Commit: 6edd082
16621
16621
  */
16622
16622
 
16623
16623
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Essentials CSS Bundle v0.57.0
2
+ * Domma Essentials CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:51.348Z
5
+ * Built: 2026-10-24T22:17:45.113Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.57.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T20:04:51.166Z
18
- * Commit: 8ca8224
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.57.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T20:04:51.170Z
4978
- * Commit: 8ca8224
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -5596,11 +5596,11 @@ body.dm-cloaked.dm-ready {
5596
5596
  ============================================ */
5597
5597
 
5598
5598
  /*!
5599
- * Domma Elements CSS v0.57.0
5599
+ * Domma Elements CSS v0.58.0
5600
5600
  * Dynamic Object Manipulation & Modeling API
5601
5601
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5602
- * Built: 2026-10-24T20:04:51.175Z
5603
- * Commit: 8ca8224
5602
+ * Built: 2026-10-24T22:17:45.003Z
5603
+ * Commit: 6edd082
5604
5604
  */
5605
5605
 
5606
5606
  /**
@@ -16613,11 +16613,11 @@ a.avatar-more-person:hover .avatar-more-name {
16613
16613
  ============================================ */
16614
16614
 
16615
16615
  /*!
16616
- * Domma Themes v0.57.0
16616
+ * Domma Themes v0.58.0
16617
16617
  * Dynamic Object Manipulation & Modeling API
16618
16618
  * (c) 2026 Darryl Waterhouse & DCBW-IT
16619
- * Built: 2026-10-24T20:04:51.154Z
16620
- * Commit: 8ca8224
16619
+ * Built: 2026-10-24T22:17:44.986Z
16620
+ * Commit: 6edd082
16621
16621
  */
16622
16622
 
16623
16623
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.57.0
2
+ * Domma Full CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:51.357Z
5
+ * Built: 2026-10-24T22:17:45.117Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.57.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T20:04:51.166Z
18
- * Commit: 8ca8224
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.57.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T20:04:51.170Z
4978
- * Commit: 8ca8224
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -5596,11 +5596,11 @@ body.dm-cloaked.dm-ready {
5596
5596
  ============================================ */
5597
5597
 
5598
5598
  /*!
5599
- * Domma Elements CSS v0.57.0
5599
+ * Domma Elements CSS v0.58.0
5600
5600
  * Dynamic Object Manipulation & Modeling API
5601
5601
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5602
- * Built: 2026-10-24T20:04:51.175Z
5603
- * Commit: 8ca8224
5602
+ * Built: 2026-10-24T22:17:45.003Z
5603
+ * Commit: 6edd082
5604
5604
  */
5605
5605
 
5606
5606
  /**
@@ -16613,11 +16613,11 @@ a.avatar-more-person:hover .avatar-more-name {
16613
16613
  ============================================ */
16614
16614
 
16615
16615
  /*!
16616
- * Domma Themes v0.57.0
16616
+ * Domma Themes v0.58.0
16617
16617
  * Dynamic Object Manipulation & Modeling API
16618
16618
  * (c) 2026 Darryl Waterhouse & DCBW-IT
16619
- * Built: 2026-10-24T20:04:51.154Z
16620
- * Commit: 8ca8224
16619
+ * Built: 2026-10-24T22:17:44.986Z
16620
+ * Commit: 6edd082
16621
16621
  */
16622
16622
 
16623
16623
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Minimal CSS Bundle v0.57.0
2
+ * Domma Minimal CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:51.347Z
5
+ * Built: 2026-10-24T22:17:45.112Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.57.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T20:04:51.166Z
18
- * Commit: 8ca8224
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.57.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T20:04:51.170Z
4978
- * Commit: 8ca8224
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.57.0
2
+ * Domma Flags v0.58.0
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:32.228Z
6
- * Commit: 8ca8224
5
+ * Built: 2026-10-24T22:17:31.236Z
6
+ * Commit: 6edd082
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.57.0
2
+ * Domma Flags v0.58.0
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:32.228Z
6
- * Commit: 8ca8224
5
+ * Built: 2026-10-24T22:17:31.236Z
6
+ * Commit: 6edd082
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Syntax Highlighter v0.57.0
2
+ * Domma Syntax Highlighter v0.58.0
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:32.225Z
6
- * Commit: 8ca8224
5
+ * Built: 2026-10-24T22:17:31.233Z
6
+ * Commit: 6edd082
7
7
  */
8
8
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).DommaSyntax={})}(this,function(t){"use strict";const e={javascript:[{type:"comment",pattern:/\/\*[\s\S]*?\*\//g},{type:"comment",pattern:/\/\/.*/g},{type:"template-string",pattern:/`(?:\\.|[^`\\])*`/g},{type:"string",pattern:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g},{type:"keyword",pattern:/\b(const|let|var|function|return|if|else|for|while|do|break|continue|switch|case|default|try|catch|finally|throw|async|await|class|extends|static|new|this|super|import|export|from|as|default|yield|typeof|instanceof|in|of|delete|void)\b/g},{type:"boolean",pattern:/\b(true|false|null|undefined|NaN|Infinity)\b/g},{type:"number",pattern:/\b\d+\.?\d*([eE][+-]?\d+)?\b/g},{type:"function",pattern:/\b([a-zA-Z_$][\w$]*)\s*(?=\()/g},{type:"class-name",pattern:/\b[A-Z][\w$]*\b/g},{type:"operator",pattern:/[+\-*/%=<>!&|^~?:]+|===|!==|==|!=|<=|>=|&&|\|\||<<|>>|>>>/g},{type:"punctuation",pattern:/[{}[\]();,.]/g}],html:[{type:"comment",pattern:/<!--[\s\S]*?-->/g},{type:"doctype",pattern:/<!DOCTYPE[^>]*>/gi},{type:"tag-open",pattern:/<\/?[a-zA-Z][\w-]*/g},{type:"tag-close",pattern:/\/?>/g},{type:"attr-name",pattern:/\s+[a-zA-Z:@][\w:.-]*(?=\s*=)/g},{type:"attr-value",pattern:/=\s*"[^"]*"|=\s*'[^']*'/g},{type:"entity",pattern:/&[#\w]+;/g}],css:[{type:"comment",pattern:/\/\*[\s\S]*?\*\//g},{type:"at-rule",pattern:/@[\w-]+/g},{type:"selector",pattern:/[.#]?[a-zA-Z][\w-]*(?=\s*[{,])/g},{type:"property",pattern:/\b[\w-]+(?=\s*:)/g},{type:"string",pattern:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g},{type:"function",pattern:/\b[\w-]+(?=\()/g},{type:"important",pattern:/!important\b/g},{type:"number",pattern:/\b\d+\.?\d*(px|em|rem|%|vh|vw|pt|cm|mm|in|pc|ex|ch|vmin|vmax|fr)?\b/g},{type:"color",pattern:/#[\da-fA-F]{3,8}\b/g},{type:"punctuation",pattern:/[{}:;,()]/g}]};function n(t){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return t.replace(/[&<>"']/g,t=>e[t])}class a{constructor(){this.config={autoDetect:!0,preserveOriginal:!0,selector:".code-block",showLanguageBadge:!1,languagePrefix:"language-"}}highlight(t,a=null){const r="string"==typeof t?document.querySelector(t):t;if(!r||r.hasAttribute("data-syntax-highlighted"))return!1;if(!a&&this.config.autoDetect){const t=Array.from(r.classList).find(t=>t.startsWith(this.config.languagePrefix));t&&(a=t.substring(this.config.languagePrefix.length))}if(!a||!e[a])return!1;const o=r.textContent||"";this.config.preserveOriginal&&r.setAttribute("data-original-code",o);const i=function(t,a){const r=e[a];if(!r)return n(t);const o=[];for(const{type:e,pattern:n}of r){if("html"===a&&"entity"===e)continue;let r;for(n.lastIndex=0;null!==(r=n.exec(t));)o.push({start:r.index,end:r.index+r[0].length,text:r[0],type:e})}o.sort((t,e)=>t.start-e.start);const i=[];let s=0;for(const t of o)t.start>=s&&(i.push(t),s=t.end);let c="",p=0;for(const e of i)e.start>p&&(c+=n(t.substring(p,e.start))),c+=`<span class="syntax-${e.type}">${n(e.text)}</span>`,p=e.end;return p<t.length&&(c+=n(t.substring(p))),c}(o,a);return r.innerHTML=i,r.setAttribute("data-syntax-highlighted","true"),r.setAttribute("data-language",a),this.config.showLanguageBadge&&this.addLanguageBadge(r,a),!0}scan(t={}){const e=t.selector||this.config.selector,n=document.querySelectorAll(e);let a=0;return n.forEach(e=>{this.highlight(e,t.language||null)&&(this.addCopyButton(e),a++)}),a}register(t,n){t&&Array.isArray(n)?e[t]=n:console.error("SyntaxHighlighter: Invalid language registration")}configure(t){return t?(Object.assign(this.config,t),this.config):{...this.config}}addLanguageBadge(t,e){if(t.querySelector(".syntax-language-badge"))return;const n=document.createElement("div");n.className="syntax-language-badge",n.textContent=e.toUpperCase(),t.style.position="relative",t.insertBefore(n,t.firstChild)}getLanguages(){return Object.keys(e)}isLanguageSupported(t){return t in e}addCopyButton(t){if(t.parentElement&&t.parentElement.classList.contains("code-block-wrapper"))return;const e=document.createElement("div");e.className="code-block-wrapper";const n=document.createElement("button");n.className="code-block-copy",n.setAttribute("aria-label","Copy code to clipboard"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>',n.addEventListener("click",async()=>{const e=t.getAttribute("data-original-code")||t.textContent;try{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}n.classList.add("copied"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>',setTimeout(()=>{n.classList.remove("copied"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>'},2e3)}catch(t){console.error("Failed to copy code:",t)}}),t.parentNode.insertBefore(e,t),e.appendChild(t),e.appendChild(n)}}const r=new a;"undefined"!=typeof document&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{r.scan()}):setTimeout(()=>r.scan(),0)),"undefined"!=typeof window&&(window.Domma&&(window.Domma.syntax=r),window.DommaSyntax=r),t.LANGUAGES=e,t.SyntaxHighlighter=a,t.default=r,t.syntax=r,Object.defineProperty(t,"__esModule",{value:!0})});
9
9
  //# sourceMappingURL=domma-syntax.min.js.map
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Core CSS v0.57.0
2
+ * Domma Core CSS v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T20:04:51.166Z
6
- * Commit: 8ca8224
5
+ * Built: 2026-10-24T22:17:44.996Z
6
+ * Commit: 6edd082
7
7
  */
8
8
 
9
9
  /**