domma-js 0.39.1 → 0.39.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.39.1",
3
+ "version": "0.39.2",
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.39.1
2
+ * Domma Complete CSS Bundle v0.39.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:27.962Z
5
+ * Built: 2026-08-21T12:14:59.775Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.39.1
14
+ * Domma Core CSS v0.39.2
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-08-21T11:42:27.812Z
18
- * Commit: 1a8178f
17
+ * Built: 2026-08-21T12:14:59.633Z
18
+ * Commit: c7a693e
19
19
  */
20
20
 
21
21
  /**
@@ -4838,11 +4838,11 @@ body.dm-cloaked.dm-ready {
4838
4838
  ============================================ */
4839
4839
 
4840
4840
  /*!
4841
- * Domma Grid CSS v0.39.1
4841
+ * Domma Grid CSS v0.39.2
4842
4842
  * Dynamic Object Manipulation & Modeling API
4843
4843
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-08-21T11:42:27.817Z
4845
- * Commit: 1a8178f
4844
+ * Built: 2026-08-21T12:14:59.637Z
4845
+ * Commit: c7a693e
4846
4846
  */
4847
4847
 
4848
4848
  /**
@@ -5463,11 +5463,11 @@ body.dm-cloaked.dm-ready {
5463
5463
  ============================================ */
5464
5464
 
5465
5465
  /*!
5466
- * Domma Elements CSS v0.39.1
5466
+ * Domma Elements CSS v0.39.2
5467
5467
  * Dynamic Object Manipulation & Modeling API
5468
5468
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-08-21T11:42:27.822Z
5470
- * Commit: 1a8178f
5469
+ * Built: 2026-08-21T12:14:59.641Z
5470
+ * Commit: c7a693e
5471
5471
  */
5472
5472
 
5473
5473
  /**
@@ -8889,12 +8889,28 @@ code {
8889
8889
  display: block;
8890
8890
  }
8891
8891
 
8892
+ /* Slide content sits IN FLOW by default, so a text-only slide has height.
8893
+ It used to be unconditionally absolute - a caption overlay for a background
8894
+ image - which meant a slide with no <img> had nothing in flow at all: the
8895
+ slide collapsed to 0px, and with it the whole carousel. A text-only
8896
+ carousel simply did not appear. */
8892
8897
  .carousel-slide-content {
8898
+ position: relative;
8899
+ /* Clears the arrows (40px + 1rem inset) on both sides and the indicator
8900
+ dots below. On an image slide the controls sit over the picture; on a
8901
+ text slide they would sit over the words. */
8902
+ padding: var(--dm-space-6) clamp(1rem, 6vw, 3.75rem) calc(var(--dm-space-6) + 1.25rem);
8903
+ color: inherit;
8904
+ }
8905
+
8906
+ /* A slide that DOES carry an image gets the overlay caption it was designed
8907
+ for. Stated as the enhancement rather than the default, so a browser without
8908
+ :has() renders the caption under the image instead of hiding the slide. */
8909
+ .carousel-slide:has(> img) .carousel-slide-content {
8893
8910
  position: absolute;
8894
8911
  bottom: 0;
8895
8912
  left: 0;
8896
8913
  right: 0;
8897
- padding: var(--dm-space-6);
8898
8914
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
8899
8915
  color: var(--dm-white);
8900
8916
  }
@@ -13554,11 +13570,11 @@ code {
13554
13570
  ============================================ */
13555
13571
 
13556
13572
  /*!
13557
- * Domma Themes v0.39.1
13573
+ * Domma Themes v0.39.2
13558
13574
  * Dynamic Object Manipulation & Modeling API
13559
13575
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13560
- * Built: 2026-08-21T11:42:27.798Z
13561
- * Commit: 1a8178f
13576
+ * Built: 2026-08-21T12:14:59.620Z
13577
+ * Commit: c7a693e
13562
13578
  */
13563
13579
 
13564
13580
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.39.1
2
+ * Domma Data-Focused CSS Bundle v0.39.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:27.959Z
5
+ * Built: 2026-08-21T12:14:59.772Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.39.1
14
+ * Domma Core CSS v0.39.2
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-08-21T11:42:27.812Z
18
- * Commit: 1a8178f
17
+ * Built: 2026-08-21T12:14:59.633Z
18
+ * Commit: c7a693e
19
19
  */
20
20
 
21
21
  /**
@@ -4838,11 +4838,11 @@ body.dm-cloaked.dm-ready {
4838
4838
  ============================================ */
4839
4839
 
4840
4840
  /*!
4841
- * Domma Grid CSS v0.39.1
4841
+ * Domma Grid CSS v0.39.2
4842
4842
  * Dynamic Object Manipulation & Modeling API
4843
4843
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-08-21T11:42:27.817Z
4845
- * Commit: 1a8178f
4844
+ * Built: 2026-08-21T12:14:59.637Z
4845
+ * Commit: c7a693e
4846
4846
  */
4847
4847
 
4848
4848
  /**
@@ -5463,11 +5463,11 @@ body.dm-cloaked.dm-ready {
5463
5463
  ============================================ */
5464
5464
 
5465
5465
  /*!
5466
- * Domma Elements CSS v0.39.1
5466
+ * Domma Elements CSS v0.39.2
5467
5467
  * Dynamic Object Manipulation & Modeling API
5468
5468
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-08-21T11:42:27.822Z
5470
- * Commit: 1a8178f
5469
+ * Built: 2026-08-21T12:14:59.641Z
5470
+ * Commit: c7a693e
5471
5471
  */
5472
5472
 
5473
5473
  /**
@@ -8889,12 +8889,28 @@ code {
8889
8889
  display: block;
8890
8890
  }
8891
8891
 
8892
+ /* Slide content sits IN FLOW by default, so a text-only slide has height.
8893
+ It used to be unconditionally absolute - a caption overlay for a background
8894
+ image - which meant a slide with no <img> had nothing in flow at all: the
8895
+ slide collapsed to 0px, and with it the whole carousel. A text-only
8896
+ carousel simply did not appear. */
8892
8897
  .carousel-slide-content {
8898
+ position: relative;
8899
+ /* Clears the arrows (40px + 1rem inset) on both sides and the indicator
8900
+ dots below. On an image slide the controls sit over the picture; on a
8901
+ text slide they would sit over the words. */
8902
+ padding: var(--dm-space-6) clamp(1rem, 6vw, 3.75rem) calc(var(--dm-space-6) + 1.25rem);
8903
+ color: inherit;
8904
+ }
8905
+
8906
+ /* A slide that DOES carry an image gets the overlay caption it was designed
8907
+ for. Stated as the enhancement rather than the default, so a browser without
8908
+ :has() renders the caption under the image instead of hiding the slide. */
8909
+ .carousel-slide:has(> img) .carousel-slide-content {
8893
8910
  position: absolute;
8894
8911
  bottom: 0;
8895
8912
  left: 0;
8896
8913
  right: 0;
8897
- padding: var(--dm-space-6);
8898
8914
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
8899
8915
  color: var(--dm-white);
8900
8916
  }
@@ -13554,11 +13570,11 @@ code {
13554
13570
  ============================================ */
13555
13571
 
13556
13572
  /*!
13557
- * Domma Themes v0.39.1
13573
+ * Domma Themes v0.39.2
13558
13574
  * Dynamic Object Manipulation & Modeling API
13559
13575
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13560
- * Built: 2026-08-21T11:42:27.798Z
13561
- * Commit: 1a8178f
13576
+ * Built: 2026-08-21T12:14:59.620Z
13577
+ * Commit: c7a693e
13562
13578
  */
13563
13579
 
13564
13580
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Essentials CSS Bundle v0.39.1
2
+ * Domma Essentials CSS Bundle v0.39.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:27.952Z
5
+ * Built: 2026-08-21T12:14:59.765Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.39.1
14
+ * Domma Core CSS v0.39.2
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-08-21T11:42:27.812Z
18
- * Commit: 1a8178f
17
+ * Built: 2026-08-21T12:14:59.633Z
18
+ * Commit: c7a693e
19
19
  */
20
20
 
21
21
  /**
@@ -4838,11 +4838,11 @@ body.dm-cloaked.dm-ready {
4838
4838
  ============================================ */
4839
4839
 
4840
4840
  /*!
4841
- * Domma Grid CSS v0.39.1
4841
+ * Domma Grid CSS v0.39.2
4842
4842
  * Dynamic Object Manipulation & Modeling API
4843
4843
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-08-21T11:42:27.817Z
4845
- * Commit: 1a8178f
4844
+ * Built: 2026-08-21T12:14:59.637Z
4845
+ * Commit: c7a693e
4846
4846
  */
4847
4847
 
4848
4848
  /**
@@ -5463,11 +5463,11 @@ body.dm-cloaked.dm-ready {
5463
5463
  ============================================ */
5464
5464
 
5465
5465
  /*!
5466
- * Domma Elements CSS v0.39.1
5466
+ * Domma Elements CSS v0.39.2
5467
5467
  * Dynamic Object Manipulation & Modeling API
5468
5468
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-08-21T11:42:27.822Z
5470
- * Commit: 1a8178f
5469
+ * Built: 2026-08-21T12:14:59.641Z
5470
+ * Commit: c7a693e
5471
5471
  */
5472
5472
 
5473
5473
  /**
@@ -8889,12 +8889,28 @@ code {
8889
8889
  display: block;
8890
8890
  }
8891
8891
 
8892
+ /* Slide content sits IN FLOW by default, so a text-only slide has height.
8893
+ It used to be unconditionally absolute - a caption overlay for a background
8894
+ image - which meant a slide with no <img> had nothing in flow at all: the
8895
+ slide collapsed to 0px, and with it the whole carousel. A text-only
8896
+ carousel simply did not appear. */
8892
8897
  .carousel-slide-content {
8898
+ position: relative;
8899
+ /* Clears the arrows (40px + 1rem inset) on both sides and the indicator
8900
+ dots below. On an image slide the controls sit over the picture; on a
8901
+ text slide they would sit over the words. */
8902
+ padding: var(--dm-space-6) clamp(1rem, 6vw, 3.75rem) calc(var(--dm-space-6) + 1.25rem);
8903
+ color: inherit;
8904
+ }
8905
+
8906
+ /* A slide that DOES carry an image gets the overlay caption it was designed
8907
+ for. Stated as the enhancement rather than the default, so a browser without
8908
+ :has() renders the caption under the image instead of hiding the slide. */
8909
+ .carousel-slide:has(> img) .carousel-slide-content {
8893
8910
  position: absolute;
8894
8911
  bottom: 0;
8895
8912
  left: 0;
8896
8913
  right: 0;
8897
- padding: var(--dm-space-6);
8898
8914
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
8899
8915
  color: var(--dm-white);
8900
8916
  }
@@ -13554,11 +13570,11 @@ code {
13554
13570
  ============================================ */
13555
13571
 
13556
13572
  /*!
13557
- * Domma Themes v0.39.1
13573
+ * Domma Themes v0.39.2
13558
13574
  * Dynamic Object Manipulation & Modeling API
13559
13575
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13560
- * Built: 2026-08-21T11:42:27.798Z
13561
- * Commit: 1a8178f
13576
+ * Built: 2026-08-21T12:14:59.620Z
13577
+ * Commit: c7a693e
13562
13578
  */
13563
13579
 
13564
13580
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.39.1
2
+ * Domma Full CSS Bundle v0.39.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:27.956Z
5
+ * Built: 2026-08-21T12:14:59.769Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.39.1
14
+ * Domma Core CSS v0.39.2
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-08-21T11:42:27.812Z
18
- * Commit: 1a8178f
17
+ * Built: 2026-08-21T12:14:59.633Z
18
+ * Commit: c7a693e
19
19
  */
20
20
 
21
21
  /**
@@ -4838,11 +4838,11 @@ body.dm-cloaked.dm-ready {
4838
4838
  ============================================ */
4839
4839
 
4840
4840
  /*!
4841
- * Domma Grid CSS v0.39.1
4841
+ * Domma Grid CSS v0.39.2
4842
4842
  * Dynamic Object Manipulation & Modeling API
4843
4843
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-08-21T11:42:27.817Z
4845
- * Commit: 1a8178f
4844
+ * Built: 2026-08-21T12:14:59.637Z
4845
+ * Commit: c7a693e
4846
4846
  */
4847
4847
 
4848
4848
  /**
@@ -5463,11 +5463,11 @@ body.dm-cloaked.dm-ready {
5463
5463
  ============================================ */
5464
5464
 
5465
5465
  /*!
5466
- * Domma Elements CSS v0.39.1
5466
+ * Domma Elements CSS v0.39.2
5467
5467
  * Dynamic Object Manipulation & Modeling API
5468
5468
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-08-21T11:42:27.822Z
5470
- * Commit: 1a8178f
5469
+ * Built: 2026-08-21T12:14:59.641Z
5470
+ * Commit: c7a693e
5471
5471
  */
5472
5472
 
5473
5473
  /**
@@ -8889,12 +8889,28 @@ code {
8889
8889
  display: block;
8890
8890
  }
8891
8891
 
8892
+ /* Slide content sits IN FLOW by default, so a text-only slide has height.
8893
+ It used to be unconditionally absolute - a caption overlay for a background
8894
+ image - which meant a slide with no <img> had nothing in flow at all: the
8895
+ slide collapsed to 0px, and with it the whole carousel. A text-only
8896
+ carousel simply did not appear. */
8892
8897
  .carousel-slide-content {
8898
+ position: relative;
8899
+ /* Clears the arrows (40px + 1rem inset) on both sides and the indicator
8900
+ dots below. On an image slide the controls sit over the picture; on a
8901
+ text slide they would sit over the words. */
8902
+ padding: var(--dm-space-6) clamp(1rem, 6vw, 3.75rem) calc(var(--dm-space-6) + 1.25rem);
8903
+ color: inherit;
8904
+ }
8905
+
8906
+ /* A slide that DOES carry an image gets the overlay caption it was designed
8907
+ for. Stated as the enhancement rather than the default, so a browser without
8908
+ :has() renders the caption under the image instead of hiding the slide. */
8909
+ .carousel-slide:has(> img) .carousel-slide-content {
8893
8910
  position: absolute;
8894
8911
  bottom: 0;
8895
8912
  left: 0;
8896
8913
  right: 0;
8897
- padding: var(--dm-space-6);
8898
8914
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
8899
8915
  color: var(--dm-white);
8900
8916
  }
@@ -13554,11 +13570,11 @@ code {
13554
13570
  ============================================ */
13555
13571
 
13556
13572
  /*!
13557
- * Domma Themes v0.39.1
13573
+ * Domma Themes v0.39.2
13558
13574
  * Dynamic Object Manipulation & Modeling API
13559
13575
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13560
- * Built: 2026-08-21T11:42:27.798Z
13561
- * Commit: 1a8178f
13576
+ * Built: 2026-08-21T12:14:59.620Z
13577
+ * Commit: c7a693e
13562
13578
  */
13563
13579
 
13564
13580
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Minimal CSS Bundle v0.39.1
2
+ * Domma Minimal CSS Bundle v0.39.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:27.951Z
5
+ * Built: 2026-08-21T12:14:59.764Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.39.1
14
+ * Domma Core CSS v0.39.2
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-08-21T11:42:27.812Z
18
- * Commit: 1a8178f
17
+ * Built: 2026-08-21T12:14:59.633Z
18
+ * Commit: c7a693e
19
19
  */
20
20
 
21
21
  /**
@@ -4838,11 +4838,11 @@ body.dm-cloaked.dm-ready {
4838
4838
  ============================================ */
4839
4839
 
4840
4840
  /*!
4841
- * Domma Grid CSS v0.39.1
4841
+ * Domma Grid CSS v0.39.2
4842
4842
  * Dynamic Object Manipulation & Modeling API
4843
4843
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-08-21T11:42:27.817Z
4845
- * Commit: 1a8178f
4844
+ * Built: 2026-08-21T12:14:59.637Z
4845
+ * Commit: c7a693e
4846
4846
  */
4847
4847
 
4848
4848
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.39.1
2
+ * Domma Flags v0.39.2
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:18.298Z
6
- * Commit: 1a8178f
5
+ * Built: 2026-08-21T12:14:50.799Z
6
+ * Commit: c7a693e
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.39.1
2
+ * Domma Flags v0.39.2
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:18.298Z
6
- * Commit: 1a8178f
5
+ * Built: 2026-08-21T12:14:50.799Z
6
+ * Commit: c7a693e
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Syntax Highlighter v0.39.1
2
+ * Domma Syntax Highlighter v0.39.2
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:18.293Z
6
- * Commit: 1a8178f
5
+ * Built: 2026-08-21T12:14:50.795Z
6
+ * Commit: c7a693e
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.39.1
2
+ * Domma Core CSS v0.39.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T11:42:27.812Z
6
- * Commit: 1a8178f
5
+ * Built: 2026-08-21T12:14:59.633Z
6
+ * Commit: c7a693e
7
7
  */
8
8
 
9
9
  /**