domma-js 0.27.1 → 0.27.3

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.
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.27.1
2
+ * Domma Full CSS Bundle v0.27.3
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-30T10:04:08.195Z
5
+ * Built: 2026-06-13T07:03:29.828Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.27.1
14
+ * Domma Core CSS v0.27.3
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-05-30T10:04:07.988Z
18
- * Commit: 0c4c061
17
+ * Built: 2026-06-13T07:03:29.622Z
18
+ * Commit: 8b31341
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.27.1
4832
+ * Domma Grid CSS v0.27.3
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-05-30T10:04:07.992Z
4836
- * Commit: 0c4c061
4835
+ * Built: 2026-06-13T07:03:29.627Z
4836
+ * Commit: 8b31341
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.27.1
5457
+ * Domma Elements CSS v0.27.3
5458
5458
  * Dynamic Object Manipulation & Modeling API
5459
5459
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5460
- * Built: 2026-05-30T10:04:07.998Z
5461
- * Commit: 0c4c061
5460
+ * Built: 2026-06-13T07:03:29.632Z
5461
+ * Commit: 8b31341
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -7918,7 +7918,7 @@ code {
7918
7918
  transition: transform 0.2s ease;
7919
7919
  }
7920
7920
 
7921
- .navbar-dropdown.open .navbar-caret {
7921
+ .navbar-dropdown.open > .navbar-dropdown-toggle:not(.navbar-submenu-toggle) .navbar-caret {
7922
7922
  transform: rotate(180deg);
7923
7923
  }
7924
7924
 
@@ -7938,7 +7938,7 @@ code {
7938
7938
  z-index: var(--dm-z-dropdown, 1000);
7939
7939
  }
7940
7940
 
7941
- .navbar-dropdown.open .navbar-dropdown-menu {
7941
+ .navbar-dropdown.open > .navbar-dropdown-menu {
7942
7942
  display: block;
7943
7943
  }
7944
7944
 
@@ -7995,6 +7995,89 @@ code {
7995
7995
  background: var(--dm-surface);
7996
7996
  }
7997
7997
 
7998
+ /* ============================================
7999
+ NAVBAR - NESTED (MULTI-LEVEL) DROPDOWNS
8000
+ ============================================ */
8001
+
8002
+ .navbar-dropdown-sub {
8003
+ position: relative;
8004
+ }
8005
+
8006
+ /* A submenu toggle looks like a dropdown item but opens a nested menu */
8007
+ .navbar-submenu-toggle {
8008
+ display: flex;
8009
+ align-items: center;
8010
+ justify-content: space-between;
8011
+ gap: 0.5rem;
8012
+ width: 100%;
8013
+ padding: 0.5rem 1rem;
8014
+ background: none;
8015
+ border: none;
8016
+ cursor: pointer;
8017
+ font: inherit;
8018
+ font-size: var(--dm-font-size-sm);
8019
+ color: var(--dm-text, #212529);
8020
+ text-align: left;
8021
+ text-decoration: none;
8022
+ }
8023
+
8024
+ .navbar-submenu-toggle:hover {
8025
+ background: var(--dm-hover-bg, rgba(0, 0, 0, 0.05));
8026
+ }
8027
+
8028
+ .navbar-light .navbar-submenu-toggle:hover,
8029
+ [data-mode="light"] .navbar-submenu-toggle:hover {
8030
+ background: #1e293b !important;
8031
+ color: #ffffff !important;
8032
+ border-radius: var(--dm-radius-md);
8033
+ }
8034
+
8035
+ .navbar-dark .navbar-submenu-toggle {
8036
+ color: var(--dm-gray-400, #adb5bd);
8037
+ }
8038
+
8039
+ .navbar-dark .navbar-submenu-toggle:hover {
8040
+ background: rgba(255, 255, 255, 0.3);
8041
+ color: var(--dm-text-inverse, var(--dm-white));
8042
+ }
8043
+
8044
+ /* Submenu caret points to the side to signal a fly-out */
8045
+ .navbar-submenu-toggle .navbar-caret {
8046
+ transform: rotate(-90deg);
8047
+ margin-left: auto;
8048
+ }
8049
+
8050
+ /* The nested menu flies out to the right of its parent entry (desktop) */
8051
+ .navbar-dropdown-submenu {
8052
+ top: 0;
8053
+ left: 100%;
8054
+ margin: 0 0 0 0.25rem;
8055
+ }
8056
+
8057
+ .navbar-dark .navbar-dropdown-submenu {
8058
+ background: var(--dm-surface);
8059
+ border-color: var(--dm-border-dark, var(--dm-border));
8060
+ }
8061
+
8062
+ /* On mobile the nested menu stacks and indents instead of flying out */
8063
+ @media (max-width: 992px) {
8064
+ .navbar-dropdown-submenu {
8065
+ position: static;
8066
+ left: auto;
8067
+ margin: 0;
8068
+ min-width: 0;
8069
+ padding: 0 0 0 0.75rem;
8070
+ border: none;
8071
+ border-left: 1px solid var(--dm-border, #dee2e6);
8072
+ border-radius: 0;
8073
+ box-shadow: none;
8074
+ }
8075
+
8076
+ .navbar-submenu-toggle .navbar-caret {
8077
+ transform: rotate(0deg);
8078
+ }
8079
+ }
8080
+
7998
8081
  /* Pill button styles (for Download button) */
7999
8082
  .pill {
8000
8083
  display: inline-block;
@@ -13317,11 +13400,11 @@ code {
13317
13400
  ============================================ */
13318
13401
 
13319
13402
  /*!
13320
- * Domma Themes v0.27.1
13403
+ * Domma Themes v0.27.3
13321
13404
  * Dynamic Object Manipulation & Modeling API
13322
13405
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13323
- * Built: 2026-05-30T10:04:07.972Z
13324
- * Commit: 0c4c061
13406
+ * Built: 2026-06-13T07:03:29.606Z
13407
+ * Commit: 8b31341
13325
13408
  */
13326
13409
 
13327
13410
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Minimal CSS Bundle v0.27.1
2
+ * Domma Minimal CSS Bundle v0.27.3
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-30T10:04:08.186Z
5
+ * Built: 2026-06-13T07:03:29.820Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.27.1
14
+ * Domma Core CSS v0.27.3
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-05-30T10:04:07.988Z
18
- * Commit: 0c4c061
17
+ * Built: 2026-06-13T07:03:29.622Z
18
+ * Commit: 8b31341
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.27.1
4832
+ * Domma Grid CSS v0.27.3
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-05-30T10:04:07.992Z
4836
- * Commit: 0c4c061
4835
+ * Built: 2026-06-13T07:03:29.627Z
4836
+ * Commit: 8b31341
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * Domma Flags v0.27.3
3
+ * Nation flags as inline SVG (opt-in module)
4
+ * (c) 2026 Darryl Waterhouse & DCBW-IT
5
+ * Built: 2026-06-13T07:03:17.344Z
6
+ * Commit: 8b31341
7
+ *
8
+ * Requires: domma.min.js
9
+ */
10
+ const e={gb:{name:"United Kingdom",svg:'<rect width="60" height="40" fill="#012169"/><path d="M0,0 60,40 M60,0 0,40" stroke="#fff" stroke-width="8"/><path d="M0,0 60,40 M60,0 0,40" stroke="#C8102E" stroke-width="4"/><path d="M30,0 V40 M0,20 H60" stroke="#fff" stroke-width="13"/><path d="M30,0 V40 M0,20 H60" stroke="#C8102E" stroke-width="8"/>'},fr:{name:"France",stripes:{dir:"v",colors:["#0055A4","#FFFFFF","#EF4135"]}},de:{name:"Germany",stripes:{dir:"h",colors:["#000000","#DD0000","#FFCE00"]}},it:{name:"Italy",stripes:{dir:"v",colors:["#009246","#FFFFFF","#CE2B37"]}},es:{name:"Spain",stripes:{dir:"h",colors:["#AA151B","#F1BF00","#AA151B"],weights:[1,2,1]}},pt:{name:"Portugal",stripes:{dir:"v",colors:["#006600","#FF0000"],weights:[2,3]},overlays:[{type:"circle",cx:24,cy:20,r:5,fill:"#FFE936",stroke:"#006600",strokeWidth:1},{type:"circle",cx:24,cy:20,r:2.4,fill:"#FF0000"}]},nl:{name:"Netherlands",stripes:{dir:"h",colors:["#AE1C28","#FFFFFF","#21468B"]}},be:{name:"Belgium",stripes:{dir:"v",colors:["#000000","#FAE042","#ED2939"]}},ie:{name:"Ireland",stripes:{dir:"v",colors:["#169B62","#FFFFFF","#FF883E"]}},ch:{name:"Switzerland",bg:"#FF0000",overlays:[{type:"rect",x:27,y:11,w:6,h:18,fill:"#fff"},{type:"rect",x:21,y:17,w:18,h:6,fill:"#fff"}]},at:{name:"Austria",stripes:{dir:"h",colors:["#ED2939","#FFFFFF","#ED2939"]}},se:{name:"Sweden",cross:{bg:"#006AA7",colour:"#FECC00"}},no:{name:"Norway",cross:{bg:"#BA0C2F",border:"#FFFFFF",colour:"#00205B"}},dk:{name:"Denmark",cross:{bg:"#C60C30",colour:"#FFFFFF"}},fi:{name:"Finland",cross:{bg:"#FFFFFF",colour:"#003580"}},is:{name:"Iceland",cross:{bg:"#02529C",border:"#FFFFFF",colour:"#DC1E35"}},pl:{name:"Poland",stripes:{dir:"h",colors:["#FFFFFF","#DC143C"]}},ua:{name:"Ukraine",stripes:{dir:"h",colors:["#0057B7","#FFD700"]}},gr:{name:"Greece",stripes:{dir:"h",colors:["#0D5EAF","#fff","#0D5EAF","#fff","#0D5EAF","#fff","#0D5EAF","#fff","#0D5EAF"]},overlays:[{type:"rect",x:0,y:0,w:22.22,h:22.22,fill:"#0D5EAF"},{type:"rect",x:8.9,y:0,w:4.44,h:22.22,fill:"#fff"},{type:"rect",x:0,y:8.9,w:22.22,h:4.44,fill:"#fff"}]},hr:{name:"Croatia",stripes:{dir:"h",colors:["#FF0000","#FFFFFF","#171796"]}},ru:{name:"Russia",stripes:{dir:"h",colors:["#FFFFFF","#0039A6","#D52B1E"]}},cz:{name:"Czechia",stripes:{dir:"h",colors:["#FFFFFF","#D7141A"]},overlays:[{type:"path",d:"M0,0 L30,20 L0,40 Z",fill:"#11457E"}]}},t={us:{name:"United States",svg:'<rect width="60" height="40" fill="#fff"/><g fill="#B22234"><rect y="0" width="60" height="3.08"/><rect y="6.15" width="60" height="3.08"/><rect y="12.31" width="60" height="3.08"/><rect y="18.46" width="60" height="3.08"/><rect y="24.62" width="60" height="3.08"/><rect y="30.77" width="60" height="3.08"/><rect y="36.92" width="60" height="3.08"/></g><rect width="24" height="21.54" fill="#3C3B6E"/><g fill="#fff"><circle cx="3" cy="3" r="0.9"/><circle cx="7" cy="3" r="0.9"/><circle cx="11" cy="3" r="0.9"/><circle cx="15" cy="3" r="0.9"/><circle cx="19" cy="3" r="0.9"/><circle cx="5" cy="6" r="0.9"/><circle cx="9" cy="6" r="0.9"/><circle cx="13" cy="6" r="0.9"/><circle cx="17" cy="6" r="0.9"/><circle cx="21" cy="6" r="0.9"/><circle cx="3" cy="9" r="0.9"/><circle cx="7" cy="9" r="0.9"/><circle cx="11" cy="9" r="0.9"/><circle cx="15" cy="9" r="0.9"/><circle cx="19" cy="9" r="0.9"/><circle cx="5" cy="12" r="0.9"/><circle cx="9" cy="12" r="0.9"/><circle cx="13" cy="12" r="0.9"/><circle cx="17" cy="12" r="0.9"/><circle cx="21" cy="12" r="0.9"/><circle cx="3" cy="15" r="0.9"/><circle cx="7" cy="15" r="0.9"/><circle cx="11" cy="15" r="0.9"/><circle cx="15" cy="15" r="0.9"/><circle cx="19" cy="15" r="0.9"/><circle cx="5" cy="18" r="0.9"/><circle cx="9" cy="18" r="0.9"/><circle cx="13" cy="18" r="0.9"/><circle cx="17" cy="18" r="0.9"/><circle cx="21" cy="18" r="0.9"/></g>'},ca:{name:"Canada",stripes:{dir:"v",colors:["#FF0000","#FFFFFF","#FF0000"],weights:[1,2,1]},overlays:[{type:"path",fill:"#FF0000",d:"M30 8 l1.6 3.4 3.6-0.8-1.2 2.6 2.4 1-2 1.8 3.4 1-3.4 1 0.5 1.2-3.1-0.4 0.4 4-1.6-2.4-1.6 2.4 0.4-4-3.1 0.4 0.5-1.2-3.4-1 3.4-1-2-1.8 2.4-1-1.2-2.6 3.6 0.8z"}]},br:{name:"Brazil",bg:"#009C3B",overlays:[{type:"path",d:"M30,5 L53,20 L30,35 L7,20 Z",fill:"#FFDF00"},{type:"circle",cx:30,cy:20,r:9,fill:"#002776"},{type:"path",d:"M21.5,17.5 A12,12 0 0 1 38.5,21",fill:"none",stroke:"#fff",strokeWidth:1.6},{type:"star",cx:27,cy:18,r:1.1,fill:"#fff"},{type:"star",cx:33,cy:17,r:1.1,fill:"#fff"},{type:"star",cx:30,cy:23,r:1.1,fill:"#fff"},{type:"star",cx:35,cy:22,r:1.1,fill:"#fff"},{type:"star",cx:25,cy:22,r:1.1,fill:"#fff"}]},ar:{name:"Argentina",stripes:{dir:"h",colors:["#74ACDF","#FFFFFF","#74ACDF"]},overlays:[{type:"circle",cx:30,cy:20,r:3.4,fill:"#F6B40E",stroke:"#85340A",strokeWidth:.4}]},mx:{name:"Mexico",stripes:{dir:"v",colors:["#006847","#FFFFFF","#CE1126"]},overlays:[{type:"circle",cx:30,cy:20,r:3.2,fill:"#8C9A5B"}]},cl:{name:"Chile",overlays:[{type:"rect",x:0,y:0,w:60,h:20,fill:"#fff"},{type:"rect",x:0,y:20,w:60,h:20,fill:"#D52B1E"},{type:"rect",x:0,y:0,w:20,h:20,fill:"#0039A6"},{type:"star",cx:10,cy:10,r:6,fill:"#fff"}]},co:{name:"Colombia",stripes:{dir:"h",colors:["#FCD116","#003893","#CE1126"],weights:[2,1,1]}},pe:{name:"Peru",stripes:{dir:"v",colors:["#D91023","#FFFFFF","#D91023"]}},uy:{name:"Uruguay",stripes:{dir:"h",colors:["#fff","#0038A8","#fff","#0038A8","#fff","#0038A8","#fff","#0038A8","#fff"]},overlays:[{type:"rect",x:0,y:0,w:20,h:17.78,fill:"#fff"},{type:"circle",cx:10,cy:8.9,r:4.5,fill:"#FCD116",stroke:"#7B3F00",strokeWidth:.5}]}},r={za:{name:"South Africa",svg:'<rect width="60" height="40" fill="#fff"/><path d="M0,0 H22 L40,20 L22,40 H0 Z" fill="#002395"/><path d="M0,0 L26,20 L0,40 Z" fill="#000"/><rect x="0" y="0" width="60" height="13.3" fill="#DE3831"/><rect x="0" y="26.7" width="60" height="13.3" fill="#002395"/><path d="M0,0 L26,20 L0,40" fill="none" stroke="#FFB915" stroke-width="3"/><path d="M0,3 L21,20 L0,37" fill="none" stroke="#007749" stroke-width="6"/><path d="M-1,13.3 H60 M-1,26.7 H60" stroke="#fff" stroke-width="0"/><rect x="26" y="14.8" width="34" height="10.4" fill="#007749"/><path d="M0,6 L18,20 L0,34" fill="none" stroke="#fff" stroke-width="1.5"/>'},ng:{name:"Nigeria",stripes:{dir:"v",colors:["#008751","#FFFFFF","#008751"]}},gh:{name:"Ghana",stripes:{dir:"h",colors:["#CE1126","#FCD116","#006B3F"]},overlays:[{type:"star",cx:30,cy:20,r:5,fill:"#000"}]},eg:{name:"Egypt",stripes:{dir:"h",colors:["#CE1126","#FFFFFF","#000000"]},overlays:[{type:"path",d:"M30,17 l1.2,2.6 2.8-0.4-2,2 0.7,2.8-2.7-1.4-2.7,1.4 0.7-2.8-2-2 2.8,0.4z",fill:"#C09300"}]},ma:{name:"Morocco",bg:"#C1272D",overlays:[{type:"star",cx:30,cy:20,r:8,fill:"none",stroke:"#006233",strokeWidth:1.6}]},sn:{name:"Senegal",stripes:{dir:"v",colors:["#00853F","#FDEF42","#E31B23"]},overlays:[{type:"star",cx:30,cy:20,r:4.5,fill:"#00853F"}]},ci:{name:"Ivory Coast",stripes:{dir:"v",colors:["#F77F00","#FFFFFF","#009E60"]}},cm:{name:"Cameroon",stripes:{dir:"v",colors:["#007A5E","#CE1126","#FCD116"]},overlays:[{type:"star",cx:30,cy:20,r:4,fill:"#FCD116"}]},dz:{name:"Algeria",overlays:[{type:"rect",x:0,y:0,w:30,h:40,fill:"#006233"},{type:"rect",x:30,y:0,w:30,h:40,fill:"#fff"},{type:"crescent",cx:28,cy:20,r:7,off:3,fill:"#D21034"},{type:"star",cx:36,cy:20,r:4,fill:"#D21034"}]},tn:{name:"Tunisia",bg:"#E70013",overlays:[{type:"circle",cx:30,cy:20,r:9,fill:"#fff"},{type:"crescent",cx:31,cy:20,r:5.5,off:2.6,fill:"#E70013"},{type:"star",cx:33,cy:20,r:3,fill:"#E70013"}]},ke:{name:"Kenya",stripes:{dir:"h",colors:["#000000","#fff","#BB0000","#fff","#006600"],weights:[12,1,12,1,12]},overlays:[{type:"line",x1:24,y1:8,x2:36,y2:32,stroke:"#000",strokeWidth:1},{type:"line",x1:36,y1:8,x2:24,y2:32,stroke:"#000",strokeWidth:1},{type:"ellipse",cx:30,cy:20,rx:4,ry:8,fill:"#fff"},{type:"ellipse",cx:30,cy:20,rx:2.6,ry:6.4,fill:"#BB0000"}]}},i={jp:{name:"Japan",bg:"#FFFFFF",overlays:[{type:"circle",cx:30,cy:20,r:10,fill:"#BC002D"}]},cn:{name:"China",bg:"#DE2910",overlays:[{type:"star",cx:12,cy:11,r:6,fill:"#FFDE00"},{type:"star",cx:22,cy:5,r:2,fill:"#FFDE00"},{type:"star",cx:26,cy:9,r:2,fill:"#FFDE00"},{type:"star",cx:26,cy:15,r:2,fill:"#FFDE00"},{type:"star",cx:22,cy:19,r:2,fill:"#FFDE00"}]},kr:{name:"South Korea",bg:"#FFFFFF",overlays:[{type:"path",d:"M30,13 a7,7 0 0 1 0,14 a3.5,3.5 0 0 1 0,-7 a3.5,3.5 0 0 0 0,-7 Z",fill:"#CD2E3A"},{type:"path",d:"M30,13 a7,7 0 0 0 0,14 a3.5,3.5 0 0 0 0,-7 a3.5,3.5 0 0 1 0,-7 Z",fill:"#0047A0"},{type:"circle",cx:30,cy:16.5,r:3.5,fill:"#CD2E3A"},{type:"circle",cx:30,cy:23.5,r:3.5,fill:"#0047A0"},{type:"group",children:[{type:"rect",x:9,y:8,w:7,h:1.3,fill:"#000"},{type:"rect",x:9,y:10.4,w:7,h:1.3,fill:"#000"},{type:"rect",x:9,y:12.8,w:7,h:1.3,fill:"#000"}]},{type:"group",children:[{type:"rect",x:44,y:8,w:7,h:1.3,fill:"#000"},{type:"rect",x:44,y:10.4,w:7,h:1.3,fill:"#000"},{type:"rect",x:44,y:12.8,w:7,h:1.3,fill:"#000"}]}]},in:{name:"India",stripes:{dir:"h",colors:["#FF9933","#FFFFFF","#138808"]},overlays:[{type:"circle",cx:30,cy:20,r:5,fill:"none",stroke:"#000080",strokeWidth:.8},{type:"circle",cx:30,cy:20,r:1,fill:"#000080"},{type:"path",d:"M30,15 V25 M25,20 H35 M26.5,16.5 L33.5,23.5 M33.5,16.5 L26.5,23.5",stroke:"#000080",strokeWidth:.5}]},sa:{name:"Saudi Arabia",bg:"#006C35",overlays:[{type:"rect",x:10,y:26,w:40,h:1.6,fill:"#fff"},{type:"path",d:"M10,26.8 l4,-2 v4 z",fill:"#fff"},{type:"rect",x:14,y:14,w:32,h:5,fill:"none"}]},ae:{name:"United Arab Emirates",overlays:[{type:"rect",x:0,y:0,w:60,h:13.33,fill:"#00732F"},{type:"rect",x:0,y:13.33,w:60,h:13.33,fill:"#fff"},{type:"rect",x:0,y:26.66,w:60,h:13.34,fill:"#000"},{type:"rect",x:0,y:0,w:15,h:40,fill:"#FF0000"}]},qa:{name:"Qatar",bg:"#FFFFFF",overlays:[{type:"path",d:"M22,0 H60 V40 H22 L27,36 L22,32 L27,28 L22,24 L27,20 L22,16 L27,12 L22,8 L27,4 Z",fill:"#8A1538"}]},id:{name:"Indonesia",stripes:{dir:"h",colors:["#FF0000","#FFFFFF"]}},th:{name:"Thailand",stripes:{dir:"h",colors:["#A51931","#F4F5F8","#2D2A4A","#F4F5F8","#A51931"],weights:[1,1,2,1,1]}},vn:{name:"Vietnam",bg:"#DA251D",overlays:[{type:"star",cx:30,cy:20,r:9,fill:"#FFFF00"}]},tr:{name:"Turkey",bg:"#E30A17",overlays:[{type:"crescent",cx:24,cy:20,r:8,off:3.2,fill:"#fff"},{type:"star",cx:35,cy:20,r:4,rotation:-54,fill:"#fff"}]},il:{name:"Israel",bg:"#FFFFFF",overlays:[{type:"rect",x:0,y:4,w:60,h:4,fill:"#0038B8"},{type:"rect",x:0,y:32,w:60,h:4,fill:"#0038B8"},{type:"path",d:"M30,13 L33.5,19 H26.5 Z",fill:"none",stroke:"#0038B8",strokeWidth:1},{type:"path",d:"M30,27 L33.5,21 H26.5 Z",fill:"none",stroke:"#0038B8",strokeWidth:1}]}},l='<g transform="scale(0.5)"><rect width="60" height="40" fill="#012169"/><path d="M0,0 60,40 M60,0 0,40" stroke="#fff" stroke-width="8"/><path d="M0,0 60,40 M60,0 0,40" stroke="#C8102E" stroke-width="4"/><path d="M30,0 V40 M0,20 H60" stroke="#fff" stroke-width="13"/><path d="M30,0 V40 M0,20 H60" stroke="#C8102E" stroke-width="8"/></g>',c={au:{name:"Australia",svg:'<rect width="60" height="40" fill="#012169"/>'+l+'<path fill="#fff" d="M15,25 l1.3,3.9 4.1,0 -3.3,2.4 1.3,3.9 -3.4,-2.4 -3.4,2.4 1.3,-3.9 -3.3,-2.4 4.1,0 Z"/><g fill="#fff"><path d="M47,7 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><path d="M40,19 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><path d="M47,31 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><path d="M54,18 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><circle cx="49" cy="24" r="1.2"/></g>'},nz:{name:"New Zealand",svg:'<rect width="60" height="40" fill="#00247D"/>'+l+'<g><path fill="#fff" d="M47,7 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M47,8.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/><path fill="#fff" d="M41,20 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M41,21.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/><path fill="#fff" d="M53,18 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M53,19.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/><path fill="#fff" d="M47,32 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M47,33.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/></g>'}},s={...e,...t,...r,...i,...c},a={europe:{name:"Europe",description:"European nations",codes:Object.keys(e)},americas:{name:"Americas",description:"North, Central & South America",codes:Object.keys(t)},africa:{name:"Africa",description:"African nations",codes:Object.keys(r)},asia:{name:"Asia & Middle East",description:"Asian and Middle Eastern nations",codes:Object.keys(i)},oceania:{name:"Oceania",description:"Australia, New Zealand & the Pacific",codes:Object.keys(c)}};let o=0;function n(e){return String(e).replace(/"/g,"&quot;")}function f(e){const t=void 0!==e.fill?` fill="${n(e.fill)}"`:"",r=e.stroke?` stroke="${n(e.stroke)}"`:"",i=void 0!==e.strokeWidth?` stroke-width="${e.strokeWidth}"`:"",l=r+i+(r&&!e.fill?' fill="none"':"");switch(e.type){case"rect":return`<rect x="${e.x}" y="${e.y}" width="${e.w}" height="${e.h}"${e.rx?` rx="${e.rx}"`:""}${t}${l}/>`;case"circle":return`<circle cx="${e.cx}" cy="${e.cy}" r="${e.r}"${t}${l}/>`;case"ellipse":return`<ellipse cx="${e.cx}" cy="${e.cy}" rx="${e.rx}" ry="${e.ry}"${t}${l}/>`;case"line":return`<line x1="${e.x1}" y1="${e.y1}" x2="${e.x2}" y2="${e.y2}"${r}${i}/>`;case"path":return`<path d="${e.d}"${t}${l}/>`;case"star":return`<path d="${function(e,t,r,i=5,l=.382,c=-90){const s=r*l,a=Math.PI/i,o=c*Math.PI/180;let n="";for(let l=0;l<2*i;l++){const i=l%2==0?r:s,c=o+l*a;n+=(0===l?"M":"L")+(e+i*Math.cos(c)).toFixed(2)+","+(t+i*Math.sin(c)).toFixed(2)}return n+"Z"}(e.cx,e.cy,e.r,e.points||5,e.innerRatio||.382,void 0===e.rotation?-90:e.rotation)}"${t||' fill="#fff"'}${l}/>`;case"crescent":return`<path d="${function(e,t,r,i=.45*r){const l=Math.sqrt(i*i+r*r),c=(t-r).toFixed(2),s=(t+r).toFixed(2),a=e.toFixed(2);return`M${a},${c} A${r},${r} 0 1 0 ${a},${s} A${l.toFixed(2)},${l.toFixed(2)} 0 0 1 ${a},${c}Z`}(e.cx,e.cy,e.r,e.off)}"${t||' fill="#fff"'}${l}/>`;case"group":return`<g${e.transform?` transform="${n(e.transform)}"`:""}>${(e.children||[]).map(f).join("")}</g>`;default:return""}}function h(e){if(e.svg)return e.svg;let t="";return e.stripes&&(t+=function({dir:e="h",colors:t=[],weights:r=null}){const i=r?r.reduce((e,t)=>e+t,0):t.length;let l=0,c="";return t.forEach((t,s)=>{const a=r?r[s]:1;if("v"===e){const e=60*a/i;c+=`<rect x="${(60*l/i).toFixed(3)}" y="0" width="${e.toFixed(3)}" height="40" fill="${n(t)}"/>`}else{const e=40*a/i;c+=`<rect x="0" y="${(40*l/i).toFixed(3)}" width="60" height="${e.toFixed(3)}" fill="${n(t)}"/>`}l+=a}),c}(e.stripes)),e.cross&&(t+=function({bg:e,colour:t,border:r=null,thickness:i=8}){const l=i,c=20-l/2;let s=`<rect x="0" y="0" width="60" height="40" fill="${n(e)}"/>`;if(r){const e=2;s+=`<rect x="${16-e}" y="0" width="${l+2*e}" height="40" fill="${n(r)}"/>`,s+=`<rect x="0" y="${c-e}" width="60" height="${l+2*e}" fill="${n(r)}"/>`}return s+=`<rect x="16" y="0" width="${l}" height="40" fill="${n(t)}"/>`,s+=`<rect x="0" y="${c}" width="60" height="${l}" fill="${n(t)}"/>`,s}(e.cross)),!e.bg||e.stripes||e.cross||(t=`<rect x="0" y="0" width="60" height="40" fill="${n(e.bg)}"/>`+t),e.overlays&&(t+=e.overlays.map(f).join("")),t}class d{constructor(){this._flags={...s},this._regions={...a},this._cache={}}_markup(e){if(void 0!==this._cache[e])return this._cache[e];const t=this._flags[e],r=t?h(t):null;return this._cache[e]=r,r}render(e,t={}){e=String(e||"").toLowerCase();const r=this._flags[e];if(!r)return console.warn(`Flag "${e}" not found`),null;const{size:i=24,width:l=null,height:c=null,shape:s="rect",border:a=!1,class:f="",title:h=null,attrs:d={}}=t,y="square"===s||"circle"===s,F=c||i,p=l||(y?F:1.5*F),g=document.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("viewBox",y?"10 0 40 40":"0 0 60 40"),g.setAttribute("width",p),g.setAttribute("height",F),g.setAttribute("role","img");const x=h||r.name||e.toUpperCase();g.setAttribute("aria-label",x);const u=["dm-flag",`dm-flag-${s}`];f&&u.push(f),g.setAttribute("class",u.join(" ")),Object.entries(d).forEach(([e,t])=>g.setAttribute(e,t));const w="dm-flag-clip-"+ ++o;let m=`<title>${n(x)}</title>`;const $=this._markup(e)||"";if("circle"===s){if(m+=`<defs><clipPath id="${w}"><circle cx="30" cy="20" r="20"/></clipPath></defs>`,m+=`<g clip-path="url(#${w})">${$}</g>`,a){m+=`<circle cx="30" cy="20" r="19.25" fill="none" stroke="${n("string"==typeof a?a:"rgba(0,0,0,0.15)")}" stroke-width="1.5"/>`}}else if("rounded"===s){if(m+=`<defs><clipPath id="${w}"><rect x="0" y="0" width="60" height="40" rx="6"/></clipPath></defs>`,m+=`<g clip-path="url(#${w})">${$}</g>`,a){m+=`<rect x="0.75" y="0.75" width="58.5" height="38.5" rx="5.25" fill="none" stroke="${n("string"==typeof a?a:"rgba(0,0,0,0.15)")}" stroke-width="1.5"/>`}}else if(m+=$,a){const e="string"==typeof a?a:"rgba(0,0,0,0.15)",t=y?{x:10.5,y:.5,w:39,h:39}:{x:.5,y:.5,w:59,h:39};m+=`<rect x="${t.x}" y="${t.y}" width="${t.w}" height="${t.h}" fill="none" stroke="${n(e)}" stroke-width="1"/>`}return g.innerHTML=m,g}html(e,t={}){const r=this.render(e,t);if(!r)return"";const i=document.createElement("div");return i.appendChild(r),i.innerHTML}inject(e,t,r={}){const{position:i="prepend",...l}=r,c="string"==typeof e?document.querySelector(e):e;if(!c)return console.warn(`Target element not found: ${e}`),null;const s=this.render(t,l);return s?("append"===i?c.appendChild(s):"replace"===i?(c.innerHTML="",c.appendChild(s)):c.insertBefore(s,c.firstChild),s):null}scan(e=document){const t="string"==typeof e?document.querySelector(e):e;if(!t)return 0;const r=t.querySelectorAll("[data-flag]:not([data-flag-processed])");let i=0;return r.forEach(e=>{if("svg"===e.tagName.toLowerCase()||e.querySelector("svg"))return;const t=e.dataset.flag,r=parseInt(e.dataset.flagSize,10)||24,l=e.dataset.flagShape||"rect",c=e.dataset.flagClass||"",s=void 0!==e.dataset.flagBorder&&(""===e.dataset.flagBorder||"true"===e.dataset.flagBorder||e.dataset.flagBorder),a=e.dataset.flagTitle||null,o=this.render(t,{size:r,shape:l,class:c,border:s,title:a});o?(e.className&&o.classList.add(...e.className.split(" ").filter(Boolean)),o.setAttribute("data-flag",t),o.setAttribute("data-flag-processed","true"),e.replaceWith(o),i++):e.setAttribute("data-flag-processed","true")}),i}register(e,t){if(!e||!t)return console.warn("Invalid flag registration: code and definition required"),this;e=String(e).toLowerCase(),this._flags[e]=t,delete this._cache[e];const r=t.region||"custom";return this._regions[r]||(this._regions[r]={name:r.charAt(0).toUpperCase()+r.slice(1),codes:[]}),this._regions[r].codes.includes(e)||this._regions[r].codes.push(e),this}unregister(e){return e=String(e||"").toLowerCase(),!!this._flags[e]&&(delete this._flags[e],delete this._cache[e],Object.values(this._regions).forEach(t=>{const r=t.codes.indexOf(e);r>-1&&t.codes.splice(r,1)}),!0)}has(e){return!!this._flags[String(e||"").toLowerCase()]}get(e){return this._flags[String(e||"").toLowerCase()]||null}name(e){const t=this.get(e);return t?t.name:null}list(e=null){return e&&this._regions[e]?[...this._regions[e].codes]:Object.keys(this._flags)}listRegions(){return{...this._regions}}count(){return Object.keys(this._flags).length}search(e){const t=String(e||"").toLowerCase().trim();return t?Object.keys(this._flags).filter(e=>e.includes(t)||(this._flags[e].name||"").toLowerCase().includes(t)):[]}}const y=new d;"undefined"!=typeof window&&window.Domma&&(window.Domma.flags=y,window.Domma.FL=y),"undefined"!=typeof window&&(window.FL=y);export{d as FlagRegistry,y as default,y as flags};
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * Domma Flags v0.27.3
3
+ * Nation flags as inline SVG (opt-in module)
4
+ * (c) 2026 Darryl Waterhouse & DCBW-IT
5
+ * Built: 2026-06-13T07:03:17.344Z
6
+ * Commit: 8b31341
7
+ *
8
+ * Requires: domma.min.js
9
+ */
10
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).DommaFlags={})}(this,function(e){"use strict";const t={gb:{name:"United Kingdom",svg:'<rect width="60" height="40" fill="#012169"/><path d="M0,0 60,40 M60,0 0,40" stroke="#fff" stroke-width="8"/><path d="M0,0 60,40 M60,0 0,40" stroke="#C8102E" stroke-width="4"/><path d="M30,0 V40 M0,20 H60" stroke="#fff" stroke-width="13"/><path d="M30,0 V40 M0,20 H60" stroke="#C8102E" stroke-width="8"/>'},fr:{name:"France",stripes:{dir:"v",colors:["#0055A4","#FFFFFF","#EF4135"]}},de:{name:"Germany",stripes:{dir:"h",colors:["#000000","#DD0000","#FFCE00"]}},it:{name:"Italy",stripes:{dir:"v",colors:["#009246","#FFFFFF","#CE2B37"]}},es:{name:"Spain",stripes:{dir:"h",colors:["#AA151B","#F1BF00","#AA151B"],weights:[1,2,1]}},pt:{name:"Portugal",stripes:{dir:"v",colors:["#006600","#FF0000"],weights:[2,3]},overlays:[{type:"circle",cx:24,cy:20,r:5,fill:"#FFE936",stroke:"#006600",strokeWidth:1},{type:"circle",cx:24,cy:20,r:2.4,fill:"#FF0000"}]},nl:{name:"Netherlands",stripes:{dir:"h",colors:["#AE1C28","#FFFFFF","#21468B"]}},be:{name:"Belgium",stripes:{dir:"v",colors:["#000000","#FAE042","#ED2939"]}},ie:{name:"Ireland",stripes:{dir:"v",colors:["#169B62","#FFFFFF","#FF883E"]}},ch:{name:"Switzerland",bg:"#FF0000",overlays:[{type:"rect",x:27,y:11,w:6,h:18,fill:"#fff"},{type:"rect",x:21,y:17,w:18,h:6,fill:"#fff"}]},at:{name:"Austria",stripes:{dir:"h",colors:["#ED2939","#FFFFFF","#ED2939"]}},se:{name:"Sweden",cross:{bg:"#006AA7",colour:"#FECC00"}},no:{name:"Norway",cross:{bg:"#BA0C2F",border:"#FFFFFF",colour:"#00205B"}},dk:{name:"Denmark",cross:{bg:"#C60C30",colour:"#FFFFFF"}},fi:{name:"Finland",cross:{bg:"#FFFFFF",colour:"#003580"}},is:{name:"Iceland",cross:{bg:"#02529C",border:"#FFFFFF",colour:"#DC1E35"}},pl:{name:"Poland",stripes:{dir:"h",colors:["#FFFFFF","#DC143C"]}},ua:{name:"Ukraine",stripes:{dir:"h",colors:["#0057B7","#FFD700"]}},gr:{name:"Greece",stripes:{dir:"h",colors:["#0D5EAF","#fff","#0D5EAF","#fff","#0D5EAF","#fff","#0D5EAF","#fff","#0D5EAF"]},overlays:[{type:"rect",x:0,y:0,w:22.22,h:22.22,fill:"#0D5EAF"},{type:"rect",x:8.9,y:0,w:4.44,h:22.22,fill:"#fff"},{type:"rect",x:0,y:8.9,w:22.22,h:4.44,fill:"#fff"}]},hr:{name:"Croatia",stripes:{dir:"h",colors:["#FF0000","#FFFFFF","#171796"]}},ru:{name:"Russia",stripes:{dir:"h",colors:["#FFFFFF","#0039A6","#D52B1E"]}},cz:{name:"Czechia",stripes:{dir:"h",colors:["#FFFFFF","#D7141A"]},overlays:[{type:"path",d:"M0,0 L30,20 L0,40 Z",fill:"#11457E"}]}},r={us:{name:"United States",svg:'<rect width="60" height="40" fill="#fff"/><g fill="#B22234"><rect y="0" width="60" height="3.08"/><rect y="6.15" width="60" height="3.08"/><rect y="12.31" width="60" height="3.08"/><rect y="18.46" width="60" height="3.08"/><rect y="24.62" width="60" height="3.08"/><rect y="30.77" width="60" height="3.08"/><rect y="36.92" width="60" height="3.08"/></g><rect width="24" height="21.54" fill="#3C3B6E"/><g fill="#fff"><circle cx="3" cy="3" r="0.9"/><circle cx="7" cy="3" r="0.9"/><circle cx="11" cy="3" r="0.9"/><circle cx="15" cy="3" r="0.9"/><circle cx="19" cy="3" r="0.9"/><circle cx="5" cy="6" r="0.9"/><circle cx="9" cy="6" r="0.9"/><circle cx="13" cy="6" r="0.9"/><circle cx="17" cy="6" r="0.9"/><circle cx="21" cy="6" r="0.9"/><circle cx="3" cy="9" r="0.9"/><circle cx="7" cy="9" r="0.9"/><circle cx="11" cy="9" r="0.9"/><circle cx="15" cy="9" r="0.9"/><circle cx="19" cy="9" r="0.9"/><circle cx="5" cy="12" r="0.9"/><circle cx="9" cy="12" r="0.9"/><circle cx="13" cy="12" r="0.9"/><circle cx="17" cy="12" r="0.9"/><circle cx="21" cy="12" r="0.9"/><circle cx="3" cy="15" r="0.9"/><circle cx="7" cy="15" r="0.9"/><circle cx="11" cy="15" r="0.9"/><circle cx="15" cy="15" r="0.9"/><circle cx="19" cy="15" r="0.9"/><circle cx="5" cy="18" r="0.9"/><circle cx="9" cy="18" r="0.9"/><circle cx="13" cy="18" r="0.9"/><circle cx="17" cy="18" r="0.9"/><circle cx="21" cy="18" r="0.9"/></g>'},ca:{name:"Canada",stripes:{dir:"v",colors:["#FF0000","#FFFFFF","#FF0000"],weights:[1,2,1]},overlays:[{type:"path",fill:"#FF0000",d:"M30 8 l1.6 3.4 3.6-0.8-1.2 2.6 2.4 1-2 1.8 3.4 1-3.4 1 0.5 1.2-3.1-0.4 0.4 4-1.6-2.4-1.6 2.4 0.4-4-3.1 0.4 0.5-1.2-3.4-1 3.4-1-2-1.8 2.4-1-1.2-2.6 3.6 0.8z"}]},br:{name:"Brazil",bg:"#009C3B",overlays:[{type:"path",d:"M30,5 L53,20 L30,35 L7,20 Z",fill:"#FFDF00"},{type:"circle",cx:30,cy:20,r:9,fill:"#002776"},{type:"path",d:"M21.5,17.5 A12,12 0 0 1 38.5,21",fill:"none",stroke:"#fff",strokeWidth:1.6},{type:"star",cx:27,cy:18,r:1.1,fill:"#fff"},{type:"star",cx:33,cy:17,r:1.1,fill:"#fff"},{type:"star",cx:30,cy:23,r:1.1,fill:"#fff"},{type:"star",cx:35,cy:22,r:1.1,fill:"#fff"},{type:"star",cx:25,cy:22,r:1.1,fill:"#fff"}]},ar:{name:"Argentina",stripes:{dir:"h",colors:["#74ACDF","#FFFFFF","#74ACDF"]},overlays:[{type:"circle",cx:30,cy:20,r:3.4,fill:"#F6B40E",stroke:"#85340A",strokeWidth:.4}]},mx:{name:"Mexico",stripes:{dir:"v",colors:["#006847","#FFFFFF","#CE1126"]},overlays:[{type:"circle",cx:30,cy:20,r:3.2,fill:"#8C9A5B"}]},cl:{name:"Chile",overlays:[{type:"rect",x:0,y:0,w:60,h:20,fill:"#fff"},{type:"rect",x:0,y:20,w:60,h:20,fill:"#D52B1E"},{type:"rect",x:0,y:0,w:20,h:20,fill:"#0039A6"},{type:"star",cx:10,cy:10,r:6,fill:"#fff"}]},co:{name:"Colombia",stripes:{dir:"h",colors:["#FCD116","#003893","#CE1126"],weights:[2,1,1]}},pe:{name:"Peru",stripes:{dir:"v",colors:["#D91023","#FFFFFF","#D91023"]}},uy:{name:"Uruguay",stripes:{dir:"h",colors:["#fff","#0038A8","#fff","#0038A8","#fff","#0038A8","#fff","#0038A8","#fff"]},overlays:[{type:"rect",x:0,y:0,w:20,h:17.78,fill:"#fff"},{type:"circle",cx:10,cy:8.9,r:4.5,fill:"#FCD116",stroke:"#7B3F00",strokeWidth:.5}]}},i={za:{name:"South Africa",svg:'<rect width="60" height="40" fill="#fff"/><path d="M0,0 H22 L40,20 L22,40 H0 Z" fill="#002395"/><path d="M0,0 L26,20 L0,40 Z" fill="#000"/><rect x="0" y="0" width="60" height="13.3" fill="#DE3831"/><rect x="0" y="26.7" width="60" height="13.3" fill="#002395"/><path d="M0,0 L26,20 L0,40" fill="none" stroke="#FFB915" stroke-width="3"/><path d="M0,3 L21,20 L0,37" fill="none" stroke="#007749" stroke-width="6"/><path d="M-1,13.3 H60 M-1,26.7 H60" stroke="#fff" stroke-width="0"/><rect x="26" y="14.8" width="34" height="10.4" fill="#007749"/><path d="M0,6 L18,20 L0,34" fill="none" stroke="#fff" stroke-width="1.5"/>'},ng:{name:"Nigeria",stripes:{dir:"v",colors:["#008751","#FFFFFF","#008751"]}},gh:{name:"Ghana",stripes:{dir:"h",colors:["#CE1126","#FCD116","#006B3F"]},overlays:[{type:"star",cx:30,cy:20,r:5,fill:"#000"}]},eg:{name:"Egypt",stripes:{dir:"h",colors:["#CE1126","#FFFFFF","#000000"]},overlays:[{type:"path",d:"M30,17 l1.2,2.6 2.8-0.4-2,2 0.7,2.8-2.7-1.4-2.7,1.4 0.7-2.8-2-2 2.8,0.4z",fill:"#C09300"}]},ma:{name:"Morocco",bg:"#C1272D",overlays:[{type:"star",cx:30,cy:20,r:8,fill:"none",stroke:"#006233",strokeWidth:1.6}]},sn:{name:"Senegal",stripes:{dir:"v",colors:["#00853F","#FDEF42","#E31B23"]},overlays:[{type:"star",cx:30,cy:20,r:4.5,fill:"#00853F"}]},ci:{name:"Ivory Coast",stripes:{dir:"v",colors:["#F77F00","#FFFFFF","#009E60"]}},cm:{name:"Cameroon",stripes:{dir:"v",colors:["#007A5E","#CE1126","#FCD116"]},overlays:[{type:"star",cx:30,cy:20,r:4,fill:"#FCD116"}]},dz:{name:"Algeria",overlays:[{type:"rect",x:0,y:0,w:30,h:40,fill:"#006233"},{type:"rect",x:30,y:0,w:30,h:40,fill:"#fff"},{type:"crescent",cx:28,cy:20,r:7,off:3,fill:"#D21034"},{type:"star",cx:36,cy:20,r:4,fill:"#D21034"}]},tn:{name:"Tunisia",bg:"#E70013",overlays:[{type:"circle",cx:30,cy:20,r:9,fill:"#fff"},{type:"crescent",cx:31,cy:20,r:5.5,off:2.6,fill:"#E70013"},{type:"star",cx:33,cy:20,r:3,fill:"#E70013"}]},ke:{name:"Kenya",stripes:{dir:"h",colors:["#000000","#fff","#BB0000","#fff","#006600"],weights:[12,1,12,1,12]},overlays:[{type:"line",x1:24,y1:8,x2:36,y2:32,stroke:"#000",strokeWidth:1},{type:"line",x1:36,y1:8,x2:24,y2:32,stroke:"#000",strokeWidth:1},{type:"ellipse",cx:30,cy:20,rx:4,ry:8,fill:"#fff"},{type:"ellipse",cx:30,cy:20,rx:2.6,ry:6.4,fill:"#BB0000"}]}},l={jp:{name:"Japan",bg:"#FFFFFF",overlays:[{type:"circle",cx:30,cy:20,r:10,fill:"#BC002D"}]},cn:{name:"China",bg:"#DE2910",overlays:[{type:"star",cx:12,cy:11,r:6,fill:"#FFDE00"},{type:"star",cx:22,cy:5,r:2,fill:"#FFDE00"},{type:"star",cx:26,cy:9,r:2,fill:"#FFDE00"},{type:"star",cx:26,cy:15,r:2,fill:"#FFDE00"},{type:"star",cx:22,cy:19,r:2,fill:"#FFDE00"}]},kr:{name:"South Korea",bg:"#FFFFFF",overlays:[{type:"path",d:"M30,13 a7,7 0 0 1 0,14 a3.5,3.5 0 0 1 0,-7 a3.5,3.5 0 0 0 0,-7 Z",fill:"#CD2E3A"},{type:"path",d:"M30,13 a7,7 0 0 0 0,14 a3.5,3.5 0 0 0 0,-7 a3.5,3.5 0 0 1 0,-7 Z",fill:"#0047A0"},{type:"circle",cx:30,cy:16.5,r:3.5,fill:"#CD2E3A"},{type:"circle",cx:30,cy:23.5,r:3.5,fill:"#0047A0"},{type:"group",children:[{type:"rect",x:9,y:8,w:7,h:1.3,fill:"#000"},{type:"rect",x:9,y:10.4,w:7,h:1.3,fill:"#000"},{type:"rect",x:9,y:12.8,w:7,h:1.3,fill:"#000"}]},{type:"group",children:[{type:"rect",x:44,y:8,w:7,h:1.3,fill:"#000"},{type:"rect",x:44,y:10.4,w:7,h:1.3,fill:"#000"},{type:"rect",x:44,y:12.8,w:7,h:1.3,fill:"#000"}]}]},in:{name:"India",stripes:{dir:"h",colors:["#FF9933","#FFFFFF","#138808"]},overlays:[{type:"circle",cx:30,cy:20,r:5,fill:"none",stroke:"#000080",strokeWidth:.8},{type:"circle",cx:30,cy:20,r:1,fill:"#000080"},{type:"path",d:"M30,15 V25 M25,20 H35 M26.5,16.5 L33.5,23.5 M33.5,16.5 L26.5,23.5",stroke:"#000080",strokeWidth:.5}]},sa:{name:"Saudi Arabia",bg:"#006C35",overlays:[{type:"rect",x:10,y:26,w:40,h:1.6,fill:"#fff"},{type:"path",d:"M10,26.8 l4,-2 v4 z",fill:"#fff"},{type:"rect",x:14,y:14,w:32,h:5,fill:"none"}]},ae:{name:"United Arab Emirates",overlays:[{type:"rect",x:0,y:0,w:60,h:13.33,fill:"#00732F"},{type:"rect",x:0,y:13.33,w:60,h:13.33,fill:"#fff"},{type:"rect",x:0,y:26.66,w:60,h:13.34,fill:"#000"},{type:"rect",x:0,y:0,w:15,h:40,fill:"#FF0000"}]},qa:{name:"Qatar",bg:"#FFFFFF",overlays:[{type:"path",d:"M22,0 H60 V40 H22 L27,36 L22,32 L27,28 L22,24 L27,20 L22,16 L27,12 L22,8 L27,4 Z",fill:"#8A1538"}]},id:{name:"Indonesia",stripes:{dir:"h",colors:["#FF0000","#FFFFFF"]}},th:{name:"Thailand",stripes:{dir:"h",colors:["#A51931","#F4F5F8","#2D2A4A","#F4F5F8","#A51931"],weights:[1,1,2,1,1]}},vn:{name:"Vietnam",bg:"#DA251D",overlays:[{type:"star",cx:30,cy:20,r:9,fill:"#FFFF00"}]},tr:{name:"Turkey",bg:"#E30A17",overlays:[{type:"crescent",cx:24,cy:20,r:8,off:3.2,fill:"#fff"},{type:"star",cx:35,cy:20,r:4,rotation:-54,fill:"#fff"}]},il:{name:"Israel",bg:"#FFFFFF",overlays:[{type:"rect",x:0,y:4,w:60,h:4,fill:"#0038B8"},{type:"rect",x:0,y:32,w:60,h:4,fill:"#0038B8"},{type:"path",d:"M30,13 L33.5,19 H26.5 Z",fill:"none",stroke:"#0038B8",strokeWidth:1},{type:"path",d:"M30,27 L33.5,21 H26.5 Z",fill:"none",stroke:"#0038B8",strokeWidth:1}]}},c='<g transform="scale(0.5)"><rect width="60" height="40" fill="#012169"/><path d="M0,0 60,40 M60,0 0,40" stroke="#fff" stroke-width="8"/><path d="M0,0 60,40 M60,0 0,40" stroke="#C8102E" stroke-width="4"/><path d="M30,0 V40 M0,20 H60" stroke="#fff" stroke-width="13"/><path d="M30,0 V40 M0,20 H60" stroke="#C8102E" stroke-width="8"/></g>',s={au:{name:"Australia",svg:'<rect width="60" height="40" fill="#012169"/>'+c+'<path fill="#fff" d="M15,25 l1.3,3.9 4.1,0 -3.3,2.4 1.3,3.9 -3.4,-2.4 -3.4,2.4 1.3,-3.9 -3.3,-2.4 4.1,0 Z"/><g fill="#fff"><path d="M47,7 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><path d="M40,19 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><path d="M47,31 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><path d="M54,18 l0.9,2.7 2.8,0 -2.3,1.7 0.9,2.7 -2.3,-1.7 -2.3,1.7 0.9,-2.7 -2.3,-1.7 2.8,0 Z"/><circle cx="49" cy="24" r="1.2"/></g>'},nz:{name:"New Zealand",svg:'<rect width="60" height="40" fill="#00247D"/>'+c+'<g><path fill="#fff" d="M47,7 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M47,8.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/><path fill="#fff" d="M41,20 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M41,21.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/><path fill="#fff" d="M53,18 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M53,19.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/><path fill="#fff" d="M47,32 l1,2.9 3,0 -2.5,1.9 1,2.9 -2.5,-1.8 -2.5,1.8 1,-2.9 -2.5,-1.9 3,0 Z"/><path fill="#CC142B" d="M47,33.5 l0.6,1.9 2,0 -1.6,1.2 0.6,1.9 -1.6,-1.2 -1.6,1.2 0.6,-1.9 -1.6,-1.2 2,0 Z"/></g>'}},a={...t,...r,...i,...l,...s},o={europe:{name:"Europe",description:"European nations",codes:Object.keys(t)},americas:{name:"Americas",description:"North, Central & South America",codes:Object.keys(r)},africa:{name:"Africa",description:"African nations",codes:Object.keys(i)},asia:{name:"Asia & Middle East",description:"Asian and Middle Eastern nations",codes:Object.keys(l)},oceania:{name:"Oceania",description:"Australia, New Zealand & the Pacific",codes:Object.keys(s)}};let f=0;function n(e){return String(e).replace(/"/g,"&quot;")}function h(e){const t=void 0!==e.fill?` fill="${n(e.fill)}"`:"",r=e.stroke?` stroke="${n(e.stroke)}"`:"",i=void 0!==e.strokeWidth?` stroke-width="${e.strokeWidth}"`:"",l=r+i+(r&&!e.fill?' fill="none"':"");switch(e.type){case"rect":return`<rect x="${e.x}" y="${e.y}" width="${e.w}" height="${e.h}"${e.rx?` rx="${e.rx}"`:""}${t}${l}/>`;case"circle":return`<circle cx="${e.cx}" cy="${e.cy}" r="${e.r}"${t}${l}/>`;case"ellipse":return`<ellipse cx="${e.cx}" cy="${e.cy}" rx="${e.rx}" ry="${e.ry}"${t}${l}/>`;case"line":return`<line x1="${e.x1}" y1="${e.y1}" x2="${e.x2}" y2="${e.y2}"${r}${i}/>`;case"path":return`<path d="${e.d}"${t}${l}/>`;case"star":return`<path d="${function(e,t,r,i=5,l=.382,c=-90){const s=r*l,a=Math.PI/i,o=c*Math.PI/180;let f="";for(let l=0;l<2*i;l++){const i=l%2==0?r:s,c=o+l*a;f+=(0===l?"M":"L")+(e+i*Math.cos(c)).toFixed(2)+","+(t+i*Math.sin(c)).toFixed(2)}return f+"Z"}(e.cx,e.cy,e.r,e.points||5,e.innerRatio||.382,void 0===e.rotation?-90:e.rotation)}"${t||' fill="#fff"'}${l}/>`;case"crescent":return`<path d="${function(e,t,r,i=.45*r){const l=Math.sqrt(i*i+r*r),c=(t-r).toFixed(2),s=(t+r).toFixed(2),a=e.toFixed(2);return`M${a},${c} A${r},${r} 0 1 0 ${a},${s} A${l.toFixed(2)},${l.toFixed(2)} 0 0 1 ${a},${c}Z`}(e.cx,e.cy,e.r,e.off)}"${t||' fill="#fff"'}${l}/>`;case"group":return`<g${e.transform?` transform="${n(e.transform)}"`:""}>${(e.children||[]).map(h).join("")}</g>`;default:return""}}function d(e){if(e.svg)return e.svg;let t="";return e.stripes&&(t+=function({dir:e="h",colors:t=[],weights:r=null}){const i=r?r.reduce((e,t)=>e+t,0):t.length;let l=0,c="";return t.forEach((t,s)=>{const a=r?r[s]:1;if("v"===e){const e=60*a/i;c+=`<rect x="${(60*l/i).toFixed(3)}" y="0" width="${e.toFixed(3)}" height="40" fill="${n(t)}"/>`}else{const e=40*a/i;c+=`<rect x="0" y="${(40*l/i).toFixed(3)}" width="60" height="${e.toFixed(3)}" fill="${n(t)}"/>`}l+=a}),c}(e.stripes)),e.cross&&(t+=function({bg:e,colour:t,border:r=null,thickness:i=8}){const l=i,c=20-l/2;let s=`<rect x="0" y="0" width="60" height="40" fill="${n(e)}"/>`;if(r){const e=2;s+=`<rect x="${16-e}" y="0" width="${l+2*e}" height="40" fill="${n(r)}"/>`,s+=`<rect x="0" y="${c-e}" width="60" height="${l+2*e}" fill="${n(r)}"/>`}return s+=`<rect x="16" y="0" width="${l}" height="40" fill="${n(t)}"/>`,s+=`<rect x="0" y="${c}" width="60" height="${l}" fill="${n(t)}"/>`,s}(e.cross)),!e.bg||e.stripes||e.cross||(t=`<rect x="0" y="0" width="60" height="40" fill="${n(e.bg)}"/>`+t),e.overlays&&(t+=e.overlays.map(h).join("")),t}class y{constructor(){this._flags={...a},this._regions={...o},this._cache={}}_markup(e){if(void 0!==this._cache[e])return this._cache[e];const t=this._flags[e],r=t?d(t):null;return this._cache[e]=r,r}render(e,t={}){e=String(e||"").toLowerCase();const r=this._flags[e];if(!r)return console.warn(`Flag "${e}" not found`),null;const{size:i=24,width:l=null,height:c=null,shape:s="rect",border:a=!1,class:o="",title:h=null,attrs:d={}}=t,y="square"===s||"circle"===s,F=c||i,p=l||(y?F:1.5*F),g=document.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("viewBox",y?"10 0 40 40":"0 0 60 40"),g.setAttribute("width",p),g.setAttribute("height",F),g.setAttribute("role","img");const x=h||r.name||e.toUpperCase();g.setAttribute("aria-label",x);const u=["dm-flag",`dm-flag-${s}`];o&&u.push(o),g.setAttribute("class",u.join(" ")),Object.entries(d).forEach(([e,t])=>g.setAttribute(e,t));const w="dm-flag-clip-"+ ++f;let m=`<title>${n(x)}</title>`;const $=this._markup(e)||"";if("circle"===s){if(m+=`<defs><clipPath id="${w}"><circle cx="30" cy="20" r="20"/></clipPath></defs>`,m+=`<g clip-path="url(#${w})">${$}</g>`,a){m+=`<circle cx="30" cy="20" r="19.25" fill="none" stroke="${n("string"==typeof a?a:"rgba(0,0,0,0.15)")}" stroke-width="1.5"/>`}}else if("rounded"===s){if(m+=`<defs><clipPath id="${w}"><rect x="0" y="0" width="60" height="40" rx="6"/></clipPath></defs>`,m+=`<g clip-path="url(#${w})">${$}</g>`,a){m+=`<rect x="0.75" y="0.75" width="58.5" height="38.5" rx="5.25" fill="none" stroke="${n("string"==typeof a?a:"rgba(0,0,0,0.15)")}" stroke-width="1.5"/>`}}else if(m+=$,a){const e="string"==typeof a?a:"rgba(0,0,0,0.15)",t=y?{x:10.5,y:.5,w:39,h:39}:{x:.5,y:.5,w:59,h:39};m+=`<rect x="${t.x}" y="${t.y}" width="${t.w}" height="${t.h}" fill="none" stroke="${n(e)}" stroke-width="1"/>`}return g.innerHTML=m,g}html(e,t={}){const r=this.render(e,t);if(!r)return"";const i=document.createElement("div");return i.appendChild(r),i.innerHTML}inject(e,t,r={}){const{position:i="prepend",...l}=r,c="string"==typeof e?document.querySelector(e):e;if(!c)return console.warn(`Target element not found: ${e}`),null;const s=this.render(t,l);return s?("append"===i?c.appendChild(s):"replace"===i?(c.innerHTML="",c.appendChild(s)):c.insertBefore(s,c.firstChild),s):null}scan(e=document){const t="string"==typeof e?document.querySelector(e):e;if(!t)return 0;const r=t.querySelectorAll("[data-flag]:not([data-flag-processed])");let i=0;return r.forEach(e=>{if("svg"===e.tagName.toLowerCase()||e.querySelector("svg"))return;const t=e.dataset.flag,r=parseInt(e.dataset.flagSize,10)||24,l=e.dataset.flagShape||"rect",c=e.dataset.flagClass||"",s=void 0!==e.dataset.flagBorder&&(""===e.dataset.flagBorder||"true"===e.dataset.flagBorder||e.dataset.flagBorder),a=e.dataset.flagTitle||null,o=this.render(t,{size:r,shape:l,class:c,border:s,title:a});o?(e.className&&o.classList.add(...e.className.split(" ").filter(Boolean)),o.setAttribute("data-flag",t),o.setAttribute("data-flag-processed","true"),e.replaceWith(o),i++):e.setAttribute("data-flag-processed","true")}),i}register(e,t){if(!e||!t)return console.warn("Invalid flag registration: code and definition required"),this;e=String(e).toLowerCase(),this._flags[e]=t,delete this._cache[e];const r=t.region||"custom";return this._regions[r]||(this._regions[r]={name:r.charAt(0).toUpperCase()+r.slice(1),codes:[]}),this._regions[r].codes.includes(e)||this._regions[r].codes.push(e),this}unregister(e){return e=String(e||"").toLowerCase(),!!this._flags[e]&&(delete this._flags[e],delete this._cache[e],Object.values(this._regions).forEach(t=>{const r=t.codes.indexOf(e);r>-1&&t.codes.splice(r,1)}),!0)}has(e){return!!this._flags[String(e||"").toLowerCase()]}get(e){return this._flags[String(e||"").toLowerCase()]||null}name(e){const t=this.get(e);return t?t.name:null}list(e=null){return e&&this._regions[e]?[...this._regions[e].codes]:Object.keys(this._flags)}listRegions(){return{...this._regions}}count(){return Object.keys(this._flags).length}search(e){const t=String(e||"").toLowerCase().trim();return t?Object.keys(this._flags).filter(e=>e.includes(t)||(this._flags[e].name||"").toLowerCase().includes(t)):[]}}const F=new y;"undefined"!=typeof window&&window.Domma&&(window.Domma.flags=F,window.Domma.FL=F),"undefined"!=typeof window&&(window.FL=F),e.FlagRegistry=y,e.default=F,e.flags=F,Object.defineProperty(e,"__esModule",{value:!0})});
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Syntax Highlighter v0.27.1
2
+ * Domma Syntax Highlighter v0.27.3
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-30T10:03:55.944Z
6
- * Commit: 0c4c061
5
+ * Built: 2026-06-13T07:03:17.341Z
6
+ * Commit: 8b31341
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.27.1
2
+ * Domma Core CSS v0.27.3
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-30T10:04:07.988Z
6
- * Commit: 0c4c061
5
+ * Built: 2026-06-13T07:03:29.622Z
6
+ * Commit: 8b31341
7
7
  */
8
8
 
9
9
  /**