domma-js 0.29.3 → 0.30.1

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.
@@ -77,6 +77,15 @@ export interface ConfigEngine {
77
77
  * Reset/destroy configuration for a selector or all selectors
78
78
  * @param selector - Optional selector to reset
79
79
  */
80
+ /**
81
+ * Retrieve the live component instance created by setup() for a selector.
82
+ * Instances are NOT stored on the element — $(sel).data('component') is
83
+ * always undefined.
84
+ * @param selector - Selector the component was configured under
85
+ */
86
+ getComponent(selector: string): any | null;
87
+ getComponent(): Map<string, any>;
88
+
80
89
  reset(selector?: string): void;
81
90
 
82
91
  /**
@@ -48,16 +48,53 @@ export interface BindingOptions {
48
48
  twoWay?: boolean;
49
49
  }
50
50
 
51
+ /**
52
+ * A lazily-evaluated, dependency-tracked derived value.
53
+ */
54
+ export interface ComputedRef<T = any> {
55
+ /** Current value, recomputing only if a dependency changed. */
56
+ get(): T;
57
+
58
+ /** Current value without registering a dependency on the caller. */
59
+ peek(): T;
60
+
61
+ /** Unlink from the dependency graph. */
62
+ dispose(): void;
63
+ }
64
+
65
+ export interface ComputedOptions<T = any> {
66
+ /** Debug label used in console warnings. */
67
+ label?: string;
68
+
69
+ /** Called with the new value whenever it changes. */
70
+ onChange?: (value: T) => void;
71
+ }
72
+
73
+ export interface EffectOptions {
74
+ /** Debug label used in console warnings. */
75
+ label?: string;
76
+ }
77
+
51
78
  /**
52
79
  * Reactive Model class
53
80
  */
54
81
  export declare class Model {
55
82
  constructor(schema: Schema, data?: Record<string, any>, options?: ModelOptions);
56
83
 
57
- /** Get field value or all data */
84
+ /**
85
+ * Get field value or all data.
86
+ * Reads inside a computed or effect are tracked as dependencies.
87
+ */
58
88
  get(): Record<string, any>;
59
89
  get(field: string): any;
60
90
 
91
+ /**
92
+ * Read-tracked, write-through view of the model's data.
93
+ * Property reads register a dependency; writes route through set(),
94
+ * preserving validation, change notification and persistence.
95
+ */
96
+ tracked(): Record<string, any>;
97
+
61
98
  /** Set field value(s) */
62
99
  set(field: string, value: any): Model;
63
100
  set(data: Record<string, any>): Model;
@@ -68,9 +105,12 @@ export declare class Model {
68
105
  /** Get model data as JSON */
69
106
  toJSON(): Record<string, any>;
70
107
 
71
- /** Subscribe to any change */
108
+ /** Subscribe to any change; callback receives {field, newValue, oldValue, model} */
72
109
  onChange(callback: ChangeCallback): UnsubscribeFn;
73
110
 
111
+ /** Subscribe to changes on a single field; callback receives the same change object */
112
+ onChange(field: string, callback: ChangeCallback): UnsubscribeFn;
113
+
74
114
  /** Subscribe to specific field change */
75
115
  onFieldChange(field: string, callback: FieldChangeCallback): UnsubscribeFn;
76
116
 
@@ -158,6 +198,38 @@ export interface Models {
158
198
  /** Create a new reactive model */
159
199
  create(schema: Schema, initialData?: Record<string, any>, options?: ModelOptions): Model;
160
200
 
201
+ /** Extend a blueprint with additional fields */
202
+ extend(...blueprints: Schema[]): Schema;
203
+
204
+ /** Pick specific fields from a blueprint */
205
+ pick(blueprint: Schema, fields: string[]): Schema;
206
+
207
+ /** Omit specific fields from a blueprint */
208
+ omit(blueprint: Schema, fields: string[]): Schema;
209
+
210
+ // ============================================
211
+ // Dependency-Tracked Reactivity
212
+ // ============================================
213
+
214
+ /**
215
+ * Create a lazily-evaluated derived value that tracks whatever it reads.
216
+ * The body must be synchronous — tracking stops at the first `await`.
217
+ */
218
+ computed<T = any>(fn: () => T, options?: ComputedOptions<T>): ComputedRef<T>;
219
+
220
+ /**
221
+ * Run a function now, and again whenever any field it read changes.
222
+ * Re-runs are batched into a single microtask flush.
223
+ * Returns a function that stops the effect.
224
+ */
225
+ effect(fn: () => void, options?: EffectOptions): UnsubscribeFn;
226
+
227
+ /** Read values without registering them as dependencies. */
228
+ untracked<T = any>(fn: () => T): T;
229
+
230
+ /** Settle pending reactive work immediately instead of on the microtask. */
231
+ flush(): void;
232
+
161
233
  // ============================================
162
234
  // Type Validators
163
235
  // ============================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.29.3",
3
+ "version": "0.30.1",
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",
@@ -79,6 +79,7 @@
79
79
  "@rollup/plugin-terser": "^0.4.4",
80
80
  "@vitest/coverage-v8": "^4.0.16",
81
81
  "cypress": "^15.8.1",
82
+ "dompurify": "^3.4.13",
82
83
  "dotenv": "^17.2.3",
83
84
  "jsdom": "^24.1.0",
84
85
  "live-server": "^1.2.0",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.29.3
2
+ * Domma Complete CSS Bundle v0.30.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:03:03.066Z
5
+ * Built: 2026-08-04T15:36:25.117Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.29.3
14
+ * Domma Core CSS v0.30.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-07-01T10:03:02.844Z
18
- * Commit: 63e2f20
17
+ * Built: 2026-08-04T15:36:24.895Z
18
+ * Commit: 05ddf4e
19
19
  */
20
20
 
21
21
  /**
@@ -4829,11 +4829,11 @@ body.dm-cloaked.dm-ready {
4829
4829
  ============================================ */
4830
4830
 
4831
4831
  /*!
4832
- * Domma Grid CSS v0.29.3
4832
+ * Domma Grid CSS v0.30.1
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-07-01T10:03:02.849Z
4836
- * Commit: 63e2f20
4835
+ * Built: 2026-08-04T15:36:24.900Z
4836
+ * Commit: 05ddf4e
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -5454,11 +5454,11 @@ body.dm-cloaked.dm-ready {
5454
5454
  ============================================ */
5455
5455
 
5456
5456
  /*!
5457
- * Domma Elements CSS v0.29.3
5457
+ * Domma Elements CSS v0.30.1
5458
5458
  * Dynamic Object Manipulation & Modeling API
5459
5459
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5460
- * Built: 2026-07-01T10:03:02.855Z
5461
- * Commit: 63e2f20
5460
+ * Built: 2026-08-04T15:36:24.905Z
5461
+ * Commit: 05ddf4e
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -13439,11 +13439,11 @@ code {
13439
13439
  ============================================ */
13440
13440
 
13441
13441
  /*!
13442
- * Domma Themes v0.29.3
13442
+ * Domma Themes v0.30.1
13443
13443
  * Dynamic Object Manipulation & Modeling API
13444
13444
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13445
- * Built: 2026-07-01T10:03:02.824Z
13446
- * Commit: 63e2f20
13445
+ * Built: 2026-08-04T15:36:24.877Z
13446
+ * Commit: 05ddf4e
13447
13447
  */
13448
13448
 
13449
13449
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.29.3
2
+ * Domma Data-Focused CSS Bundle v0.30.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:03:03.061Z
5
+ * Built: 2026-08-04T15:36:25.111Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.29.3
14
+ * Domma Core CSS v0.30.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-07-01T10:03:02.844Z
18
- * Commit: 63e2f20
17
+ * Built: 2026-08-04T15:36:24.895Z
18
+ * Commit: 05ddf4e
19
19
  */
20
20
 
21
21
  /**
@@ -4829,11 +4829,11 @@ body.dm-cloaked.dm-ready {
4829
4829
  ============================================ */
4830
4830
 
4831
4831
  /*!
4832
- * Domma Grid CSS v0.29.3
4832
+ * Domma Grid CSS v0.30.1
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-07-01T10:03:02.849Z
4836
- * Commit: 63e2f20
4835
+ * Built: 2026-08-04T15:36:24.900Z
4836
+ * Commit: 05ddf4e
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -5454,11 +5454,11 @@ body.dm-cloaked.dm-ready {
5454
5454
  ============================================ */
5455
5455
 
5456
5456
  /*!
5457
- * Domma Elements CSS v0.29.3
5457
+ * Domma Elements CSS v0.30.1
5458
5458
  * Dynamic Object Manipulation & Modeling API
5459
5459
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5460
- * Built: 2026-07-01T10:03:02.855Z
5461
- * Commit: 63e2f20
5460
+ * Built: 2026-08-04T15:36:24.905Z
5461
+ * Commit: 05ddf4e
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -13439,11 +13439,11 @@ code {
13439
13439
  ============================================ */
13440
13440
 
13441
13441
  /*!
13442
- * Domma Themes v0.29.3
13442
+ * Domma Themes v0.30.1
13443
13443
  * Dynamic Object Manipulation & Modeling API
13444
13444
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13445
- * Built: 2026-07-01T10:03:02.824Z
13446
- * Commit: 63e2f20
13445
+ * Built: 2026-08-04T15:36:24.877Z
13446
+ * Commit: 05ddf4e
13447
13447
  */
13448
13448
 
13449
13449
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Essentials CSS Bundle v0.29.3
2
+ * Domma Essentials CSS Bundle v0.30.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:03:03.048Z
5
+ * Built: 2026-08-04T15:36:25.097Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.29.3
14
+ * Domma Core CSS v0.30.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-07-01T10:03:02.844Z
18
- * Commit: 63e2f20
17
+ * Built: 2026-08-04T15:36:24.895Z
18
+ * Commit: 05ddf4e
19
19
  */
20
20
 
21
21
  /**
@@ -4829,11 +4829,11 @@ body.dm-cloaked.dm-ready {
4829
4829
  ============================================ */
4830
4830
 
4831
4831
  /*!
4832
- * Domma Grid CSS v0.29.3
4832
+ * Domma Grid CSS v0.30.1
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-07-01T10:03:02.849Z
4836
- * Commit: 63e2f20
4835
+ * Built: 2026-08-04T15:36:24.900Z
4836
+ * Commit: 05ddf4e
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -5454,11 +5454,11 @@ body.dm-cloaked.dm-ready {
5454
5454
  ============================================ */
5455
5455
 
5456
5456
  /*!
5457
- * Domma Elements CSS v0.29.3
5457
+ * Domma Elements CSS v0.30.1
5458
5458
  * Dynamic Object Manipulation & Modeling API
5459
5459
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5460
- * Built: 2026-07-01T10:03:02.855Z
5461
- * Commit: 63e2f20
5460
+ * Built: 2026-08-04T15:36:24.905Z
5461
+ * Commit: 05ddf4e
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -13439,11 +13439,11 @@ code {
13439
13439
  ============================================ */
13440
13440
 
13441
13441
  /*!
13442
- * Domma Themes v0.29.3
13442
+ * Domma Themes v0.30.1
13443
13443
  * Dynamic Object Manipulation & Modeling API
13444
13444
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13445
- * Built: 2026-07-01T10:03:02.824Z
13446
- * Commit: 63e2f20
13445
+ * Built: 2026-08-04T15:36:24.877Z
13446
+ * Commit: 05ddf4e
13447
13447
  */
13448
13448
 
13449
13449
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.29.3
2
+ * Domma Full CSS Bundle v0.30.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:03:03.056Z
5
+ * Built: 2026-08-04T15:36:25.105Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.29.3
14
+ * Domma Core CSS v0.30.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-07-01T10:03:02.844Z
18
- * Commit: 63e2f20
17
+ * Built: 2026-08-04T15:36:24.895Z
18
+ * Commit: 05ddf4e
19
19
  */
20
20
 
21
21
  /**
@@ -4829,11 +4829,11 @@ body.dm-cloaked.dm-ready {
4829
4829
  ============================================ */
4830
4830
 
4831
4831
  /*!
4832
- * Domma Grid CSS v0.29.3
4832
+ * Domma Grid CSS v0.30.1
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-07-01T10:03:02.849Z
4836
- * Commit: 63e2f20
4835
+ * Built: 2026-08-04T15:36:24.900Z
4836
+ * Commit: 05ddf4e
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -5454,11 +5454,11 @@ body.dm-cloaked.dm-ready {
5454
5454
  ============================================ */
5455
5455
 
5456
5456
  /*!
5457
- * Domma Elements CSS v0.29.3
5457
+ * Domma Elements CSS v0.30.1
5458
5458
  * Dynamic Object Manipulation & Modeling API
5459
5459
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5460
- * Built: 2026-07-01T10:03:02.855Z
5461
- * Commit: 63e2f20
5460
+ * Built: 2026-08-04T15:36:24.905Z
5461
+ * Commit: 05ddf4e
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -13439,11 +13439,11 @@ code {
13439
13439
  ============================================ */
13440
13440
 
13441
13441
  /*!
13442
- * Domma Themes v0.29.3
13442
+ * Domma Themes v0.30.1
13443
13443
  * Dynamic Object Manipulation & Modeling API
13444
13444
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13445
- * Built: 2026-07-01T10:03:02.824Z
13446
- * Commit: 63e2f20
13445
+ * Built: 2026-08-04T15:36:24.877Z
13446
+ * Commit: 05ddf4e
13447
13447
  */
13448
13448
 
13449
13449
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Minimal CSS Bundle v0.29.3
2
+ * Domma Minimal CSS Bundle v0.30.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:03:03.046Z
5
+ * Built: 2026-08-04T15:36:25.095Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.29.3
14
+ * Domma Core CSS v0.30.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-07-01T10:03:02.844Z
18
- * Commit: 63e2f20
17
+ * Built: 2026-08-04T15:36:24.895Z
18
+ * Commit: 05ddf4e
19
19
  */
20
20
 
21
21
  /**
@@ -4829,11 +4829,11 @@ body.dm-cloaked.dm-ready {
4829
4829
  ============================================ */
4830
4830
 
4831
4831
  /*!
4832
- * Domma Grid CSS v0.29.3
4832
+ * Domma Grid CSS v0.30.1
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-07-01T10:03:02.849Z
4836
- * Commit: 63e2f20
4835
+ * Built: 2026-08-04T15:36:24.900Z
4836
+ * Commit: 05ddf4e
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.29.3
2
+ * Domma Flags v0.30.1
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:02:50.744Z
6
- * Commit: 63e2f20
5
+ * Built: 2026-08-04T15:36:12.223Z
6
+ * Commit: 05ddf4e
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.29.3
2
+ * Domma Flags v0.30.1
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:02:50.744Z
6
- * Commit: 63e2f20
5
+ * Built: 2026-08-04T15:36:12.223Z
6
+ * Commit: 05ddf4e
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Syntax Highlighter v0.29.3
2
+ * Domma Syntax Highlighter v0.30.1
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:02:50.741Z
6
- * Commit: 63e2f20
5
+ * Built: 2026-08-04T15:36:12.220Z
6
+ * Commit: 05ddf4e
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})});
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Core CSS v0.29.3
2
+ * Domma Core CSS v0.30.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-07-01T10:03:02.844Z
6
- * Commit: 63e2f20
5
+ * Built: 2026-08-04T15:36:24.895Z
6
+ * Commit: 05ddf4e
7
7
  */
8
8
 
9
9
  /**