domma-js 0.56.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +2 -2
  2. package/assets/types/generated/public/assets/flags/africa.d.ts +6 -0
  3. package/assets/types/generated/public/assets/flags/americas.d.ts +6 -0
  4. package/assets/types/generated/public/assets/flags/asia.d.ts +6 -0
  5. package/assets/types/generated/public/assets/flags/europe.d.ts +9 -0
  6. package/assets/types/generated/public/assets/flags/index.d.ts +11 -0
  7. package/assets/types/generated/public/assets/flags/oceania.d.ts +2 -0
  8. package/assets/types/generated/public/assets/icons/buildings.d.ts +6 -0
  9. package/assets/types/generated/public/assets/icons/code.d.ts +2 -0
  10. package/assets/types/generated/public/assets/icons/commerce.d.ts +7 -0
  11. package/assets/types/generated/public/assets/icons/communication.d.ts +7 -0
  12. package/assets/types/generated/public/assets/icons/devices.d.ts +6 -0
  13. package/assets/types/generated/public/assets/icons/emojis.d.ts +6 -0
  14. package/assets/types/generated/public/assets/icons/files.d.ts +7 -0
  15. package/assets/types/generated/public/assets/icons/finance.d.ts +6 -0
  16. package/assets/types/generated/public/assets/icons/forms.d.ts +5 -0
  17. package/assets/types/generated/public/assets/icons/health.d.ts +6 -0
  18. package/assets/types/generated/public/assets/icons/index.d.ts +24 -0
  19. package/assets/types/generated/public/assets/icons/media.d.ts +7 -0
  20. package/assets/types/generated/public/assets/icons/navigation.d.ts +7 -0
  21. package/assets/types/generated/public/assets/icons/seasonal.d.ts +6 -0
  22. package/assets/types/generated/public/assets/icons/social.d.ts +7 -0
  23. package/assets/types/generated/public/assets/icons/sport.d.ts +6 -0
  24. package/assets/types/generated/public/assets/icons/status.d.ts +7 -0
  25. package/assets/types/generated/public/assets/icons/transport.d.ts +7 -0
  26. package/assets/types/generated/public/assets/icons/ui.d.ts +7 -0
  27. package/assets/types/generated/public/assets/icons/weather.d.ts +6 -0
  28. package/assets/types/generated/src/auth.d.ts +424 -0
  29. package/assets/types/generated/src/avatar.d.ts +270 -0
  30. package/assets/types/generated/src/binding-source.d.ts +58 -0
  31. package/assets/types/generated/src/butterfly-drawing.d.ts +2 -0
  32. package/assets/types/generated/src/component-factory.d.ts +150 -0
  33. package/assets/types/generated/src/component.d.ts +162 -0
  34. package/assets/types/generated/src/components/back-to-top.d.ts +150 -0
  35. package/assets/types/generated/src/components/badge.d.ts +208 -0
  36. package/assets/types/generated/src/components/card.d.ts +189 -0
  37. package/assets/types/generated/src/components/command-palette.d.ts +352 -0
  38. package/assets/types/generated/src/components/dropzone.d.ts +342 -0
  39. package/assets/types/generated/src/components/focus-trap.d.ts +238 -0
  40. package/assets/types/generated/src/components/loader.d.ts +133 -0
  41. package/assets/types/generated/src/components/modal.d.ts +339 -0
  42. package/assets/types/generated/src/components/range-slider.d.ts +267 -0
  43. package/assets/types/generated/src/components/shared.d.ts +91 -0
  44. package/assets/types/generated/src/components/split-pane.d.ts +239 -0
  45. package/assets/types/generated/src/components/toast.d.ts +284 -0
  46. package/assets/types/generated/src/components/tooltip.d.ts +200 -0
  47. package/assets/types/generated/src/components/virtual-list.d.ts +340 -0
  48. package/assets/types/generated/src/config.d.ts +193 -0
  49. package/assets/types/generated/src/context-cursor.d.ts +69 -0
  50. package/assets/types/generated/src/context-menu.d.ts +596 -0
  51. package/assets/types/generated/src/dates.d.ts +367 -0
  52. package/assets/types/generated/src/dom.d.ts +1221 -0
  53. package/assets/types/generated/src/effects.d.ts +1281 -0
  54. package/assets/types/generated/src/elements.d.ts +4994 -0
  55. package/assets/types/generated/src/escape.d.ts +5 -0
  56. package/assets/types/generated/src/flags-bundle.d.ts +4 -0
  57. package/assets/types/generated/src/flags.d.ts +338 -0
  58. package/assets/types/generated/src/forms.d.ts +1060 -0
  59. package/assets/types/generated/src/globals.d.ts +45 -0
  60. package/assets/types/generated/src/http.d.ts +131 -0
  61. package/assets/types/generated/src/i18n.d.ts +261 -0
  62. package/assets/types/generated/src/icons.d.ts +213 -0
  63. package/assets/types/generated/src/index.d.ts +249 -0
  64. package/assets/types/generated/src/input-group.d.ts +135 -0
  65. package/assets/types/generated/src/models.d.ts +968 -0
  66. package/assets/types/generated/src/popover.d.ts +413 -0
  67. package/assets/types/generated/src/router.d.ts +344 -0
  68. package/assets/types/generated/src/safe-url.d.ts +10 -0
  69. package/assets/types/generated/src/sanitize.d.ts +97 -0
  70. package/assets/types/generated/src/schema-builder.d.ts +420 -0
  71. package/assets/types/generated/src/skeleton.d.ts +135 -0
  72. package/assets/types/generated/src/smooth-caret.d.ts +61 -0
  73. package/assets/types/generated/src/sortable.d.ts +368 -0
  74. package/assets/types/generated/src/storage.d.ts +93 -0
  75. package/assets/types/generated/src/tables.d.ts +901 -0
  76. package/assets/types/generated/src/theme.d.ts +262 -0
  77. package/assets/types/generated/src/ticker-tape-drawing.d.ts +2 -0
  78. package/assets/types/generated/src/treeview.d.ts +504 -0
  79. package/assets/types/generated/src/utils.d.ts +1667 -0
  80. package/assets/types/generated/src/web-components/base/domma-element.d.ts +134 -0
  81. package/assets/types/generated/src/web-components/index.d.ts +14 -0
  82. package/assets/types/generated/vendor/domma-reactive.d.ts +587 -0
  83. package/assets/types/index.d.ts +104 -226
  84. package/package.json +5 -2
  85. package/public/dist/bundles/domma-complete.css +20 -14
  86. package/public/dist/bundles/domma-data-focused.css +20 -14
  87. package/public/dist/bundles/domma-essentials.css +20 -14
  88. package/public/dist/bundles/domma-full.css +20 -14
  89. package/public/dist/bundles/domma-minimal.css +8 -8
  90. package/public/dist/domma-flags.esm.js +3 -3
  91. package/public/dist/domma-flags.esm.js.map +1 -1
  92. package/public/dist/domma-flags.min.js +3 -3
  93. package/public/dist/domma-flags.min.js.map +1 -1
  94. package/public/dist/domma-syntax.min.js +3 -3
  95. package/public/dist/domma.css +3 -3
  96. package/public/dist/domma.esm.js +5 -5
  97. package/public/dist/domma.esm.js.map +1 -1
  98. package/public/dist/domma.min.js +5 -5
  99. package/public/dist/domma.min.js.map +1 -1
  100. package/public/dist/elements.css +9 -3
  101. package/public/dist/grid.css +3 -3
  102. package/public/dist/syntax.css +3 -3
  103. package/public/dist/themes/domma-themes.css +3 -3
  104. package/templates/kickstart/.claude/snippets.md +1 -1
  105. package/templates/kickstart/CLAUDE.md +1 -1
  106. package/templates/kickstart/frontend/types/domma.d.ts +7 -4
  107. package/templates/kickstart-spa/.claude/snippets.md +1 -1
  108. package/assets/types/config.d.ts +0 -136
  109. package/assets/types/dates.d.ts +0 -209
  110. package/assets/types/dom.d.ts +0 -448
  111. package/assets/types/elements.d.ts +0 -1168
  112. package/assets/types/flags.d.ts +0 -130
  113. package/assets/types/http.d.ts +0 -97
  114. package/assets/types/i18n.d.ts +0 -99
  115. package/assets/types/icons.d.ts +0 -147
  116. package/assets/types/models.d.ts +0 -260
  117. package/assets/types/smooth-caret.d.ts +0 -12
  118. package/assets/types/storage.d.ts +0 -93
  119. package/assets/types/tables.d.ts +0 -327
  120. package/assets/types/theme.d.ts +0 -137
  121. package/assets/types/utils.d.ts +0 -675
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.56.0
2
+ * Domma Full CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T16:12:49.300Z
5
+ * Built: 2026-10-24T22:17:45.117Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.56.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T16:12:49.151Z
18
- * Commit: f768320
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.56.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T16:12:49.154Z
4978
- * Commit: f768320
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -5596,11 +5596,11 @@ body.dm-cloaked.dm-ready {
5596
5596
  ============================================ */
5597
5597
 
5598
5598
  /*!
5599
- * Domma Elements CSS v0.56.0
5599
+ * Domma Elements CSS v0.58.0
5600
5600
  * Dynamic Object Manipulation & Modeling API
5601
5601
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5602
- * Built: 2026-10-24T16:12:49.159Z
5603
- * Commit: f768320
5602
+ * Built: 2026-10-24T22:17:45.003Z
5603
+ * Commit: 6edd082
5604
5604
  */
5605
5605
 
5606
5606
  /**
@@ -9583,6 +9583,12 @@ code {
9583
9583
  z-index: 10000;
9584
9584
  }
9585
9585
 
9586
+ /* A slideover takes focus itself on open (its focus trap), so the first Tab reaches its
9587
+ first control; the panel is not a tab stop and needs no ring of its own. */
9588
+ .dm-slideover[tabindex="-1"]:focus {
9589
+ outline: none;
9590
+ }
9591
+
9586
9592
  .dm-dialog-overlay {
9587
9593
  position: fixed;
9588
9594
  top: 0;
@@ -16607,11 +16613,11 @@ a.avatar-more-person:hover .avatar-more-name {
16607
16613
  ============================================ */
16608
16614
 
16609
16615
  /*!
16610
- * Domma Themes v0.56.0
16616
+ * Domma Themes v0.58.0
16611
16617
  * Dynamic Object Manipulation & Modeling API
16612
16618
  * (c) 2026 Darryl Waterhouse & DCBW-IT
16613
- * Built: 2026-10-24T16:12:49.139Z
16614
- * Commit: f768320
16619
+ * Built: 2026-10-24T22:17:44.986Z
16620
+ * Commit: 6edd082
16615
16621
  */
16616
16622
 
16617
16623
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Minimal CSS Bundle v0.56.0
2
+ * Domma Minimal CSS Bundle v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T16:12:49.293Z
5
+ * Built: 2026-10-24T22:17:45.112Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.56.0
14
+ * Domma Core CSS v0.58.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-24T16:12:49.151Z
18
- * Commit: f768320
17
+ * Built: 2026-10-24T22:17:44.996Z
18
+ * Commit: 6edd082
19
19
  */
20
20
 
21
21
  /**
@@ -4971,11 +4971,11 @@ body.dm-cloaked.dm-ready {
4971
4971
  ============================================ */
4972
4972
 
4973
4973
  /*!
4974
- * Domma Grid CSS v0.56.0
4974
+ * Domma Grid CSS v0.58.0
4975
4975
  * Dynamic Object Manipulation & Modeling API
4976
4976
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4977
- * Built: 2026-10-24T16:12:49.154Z
4978
- * Commit: f768320
4977
+ * Built: 2026-10-24T22:17:44.999Z
4978
+ * Commit: 6edd082
4979
4979
  */
4980
4980
 
4981
4981
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.56.0
2
+ * Domma Flags v0.58.0
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T16:12:31.779Z
6
- * Commit: f768320
5
+ * Built: 2026-10-24T22:17:31.236Z
6
+ * Commit: 6edd082
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"domma-flags.esm.js","sources":["../assets/flags/europe.js","../assets/flags/americas.js","../assets/flags/africa.js","../assets/flags/asia.js","../assets/flags/oceania.js","../assets/flags/index.js","../../src/flags.js","../../src/flags-bundle.js"],"sourcesContent":["/**\n * Domma Flags - Europe\n *\n * Compact flag descriptors expanded to SVG at render time. Canvas is 60×40 (3:2).\n * Complex emblems (coats of arms, etc.) are simplified for icon-scale clarity;\n * override any flag with FL.register(code, def) for a precise rendering.\n */\n\nexport const europe = {\n gb: {\n name: 'United Kingdom',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#012169\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#fff\" stroke-width=\"8\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#C8102E\" stroke-width=\"4\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#fff\" stroke-width=\"13\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#C8102E\" stroke-width=\"8\"/>'\n },\n fr: {name: 'France', stripes: {dir: 'v', colors: ['#0055A4', '#FFFFFF', '#EF4135']}},\n de: {name: 'Germany', stripes: {dir: 'h', colors: ['#000000', '#DD0000', '#FFCE00']}},\n it: {name: 'Italy', stripes: {dir: 'v', colors: ['#009246', '#FFFFFF', '#CE2B37']}},\n es: {\n name: 'Spain',\n stripes: {dir: 'h', colors: ['#AA151B', '#F1BF00', '#AA151B'], weights: [1, 2, 1]}\n },\n pt: {\n name: 'Portugal',\n stripes: {dir: 'v', colors: ['#006600', '#FF0000'], weights: [2, 3]},\n overlays: [\n {type: 'circle', cx: 24, cy: 20, r: 5, fill: '#FFE936', stroke: '#006600', strokeWidth: 1},\n {type: 'circle', cx: 24, cy: 20, r: 2.4, fill: '#FF0000'}\n ]\n },\n nl: {name: 'Netherlands', stripes: {dir: 'h', colors: ['#AE1C28', '#FFFFFF', '#21468B']}},\n be: {name: 'Belgium', stripes: {dir: 'v', colors: ['#000000', '#FAE042', '#ED2939']}},\n ie: {name: 'Ireland', stripes: {dir: 'v', colors: ['#169B62', '#FFFFFF', '#FF883E']}},\n ch: {\n name: 'Switzerland',\n bg: '#FF0000',\n overlays: [\n {type: 'rect', x: 27, y: 11, w: 6, h: 18, fill: '#fff'},\n {type: 'rect', x: 21, y: 17, w: 18, h: 6, fill: '#fff'}\n ]\n },\n at: {name: 'Austria', stripes: {dir: 'h', colors: ['#ED2939', '#FFFFFF', '#ED2939']}},\n se: {name: 'Sweden', cross: {bg: '#006AA7', colour: '#FECC00'}},\n no: {name: 'Norway', cross: {bg: '#BA0C2F', border: '#FFFFFF', colour: '#00205B'}},\n dk: {name: 'Denmark', cross: {bg: '#C60C30', colour: '#FFFFFF'}},\n fi: {name: 'Finland', cross: {bg: '#FFFFFF', colour: '#003580'}},\n is: {name: 'Iceland', cross: {bg: '#02529C', border: '#FFFFFF', colour: '#DC1E35'}},\n pl: {name: 'Poland', stripes: {dir: 'h', colors: ['#FFFFFF', '#DC143C']}},\n ua: {name: 'Ukraine', stripes: {dir: 'h', colors: ['#0057B7', '#FFD700']}},\n gr: {\n name: 'Greece',\n stripes: {\n dir: 'h',\n colors: ['#0D5EAF', '#fff', '#0D5EAF', '#fff', '#0D5EAF', '#fff', '#0D5EAF', '#fff', '#0D5EAF']\n },\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 22.22, h: 22.22, fill: '#0D5EAF'},\n {type: 'rect', x: 8.9, y: 0, w: 4.44, h: 22.22, fill: '#fff'},\n {type: 'rect', x: 0, y: 8.9, w: 22.22, h: 4.44, fill: '#fff'}\n ]\n },\n hr: {name: 'Croatia', stripes: {dir: 'h', colors: ['#FF0000', '#FFFFFF', '#171796']}},\n ru: {name: 'Russia', stripes: {dir: 'h', colors: ['#FFFFFF', '#0039A6', '#D52B1E']}},\n cz: {\n name: 'Czechia',\n stripes: {dir: 'h', colors: ['#FFFFFF', '#D7141A']},\n overlays: [{type: 'path', d: 'M0,0 L30,20 L0,40 Z', fill: '#11457E'}]\n }\n};\n","/**\n * Domma Flags - Americas\n * Canvas 60×40 (3:2). Complex emblems simplified for icon-scale clarity.\n */\n\nexport const americas = {\n us: {\n name: 'United States',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#fff\"/>' +\n '<g fill=\"#B22234\">' +\n '<rect y=\"0\" width=\"60\" height=\"3.08\"/><rect y=\"6.15\" width=\"60\" height=\"3.08\"/>' +\n '<rect y=\"12.31\" width=\"60\" height=\"3.08\"/><rect y=\"18.46\" width=\"60\" height=\"3.08\"/>' +\n '<rect y=\"24.62\" width=\"60\" height=\"3.08\"/><rect y=\"30.77\" width=\"60\" height=\"3.08\"/>' +\n '<rect y=\"36.92\" width=\"60\" height=\"3.08\"/></g>' +\n '<rect width=\"24\" height=\"21.54\" fill=\"#3C3B6E\"/>' +\n '<g fill=\"#fff\">' +\n '<circle cx=\"3\" cy=\"3\" r=\"0.9\"/><circle cx=\"7\" cy=\"3\" r=\"0.9\"/><circle cx=\"11\" cy=\"3\" r=\"0.9\"/>' +\n '<circle cx=\"15\" cy=\"3\" r=\"0.9\"/><circle cx=\"19\" cy=\"3\" r=\"0.9\"/>' +\n '<circle cx=\"5\" cy=\"6\" r=\"0.9\"/><circle cx=\"9\" cy=\"6\" r=\"0.9\"/><circle cx=\"13\" cy=\"6\" r=\"0.9\"/>' +\n '<circle cx=\"17\" cy=\"6\" r=\"0.9\"/><circle cx=\"21\" cy=\"6\" r=\"0.9\"/>' +\n '<circle cx=\"3\" cy=\"9\" r=\"0.9\"/><circle cx=\"7\" cy=\"9\" r=\"0.9\"/><circle cx=\"11\" cy=\"9\" r=\"0.9\"/>' +\n '<circle cx=\"15\" cy=\"9\" r=\"0.9\"/><circle cx=\"19\" cy=\"9\" r=\"0.9\"/>' +\n '<circle cx=\"5\" cy=\"12\" r=\"0.9\"/><circle cx=\"9\" cy=\"12\" r=\"0.9\"/><circle cx=\"13\" cy=\"12\" r=\"0.9\"/>' +\n '<circle cx=\"17\" cy=\"12\" r=\"0.9\"/><circle cx=\"21\" cy=\"12\" r=\"0.9\"/>' +\n '<circle cx=\"3\" cy=\"15\" r=\"0.9\"/><circle cx=\"7\" cy=\"15\" r=\"0.9\"/><circle cx=\"11\" cy=\"15\" r=\"0.9\"/>' +\n '<circle cx=\"15\" cy=\"15\" r=\"0.9\"/><circle cx=\"19\" cy=\"15\" r=\"0.9\"/>' +\n '<circle cx=\"5\" cy=\"18\" r=\"0.9\"/><circle cx=\"9\" cy=\"18\" r=\"0.9\"/><circle cx=\"13\" cy=\"18\" r=\"0.9\"/>' +\n '<circle cx=\"17\" cy=\"18\" r=\"0.9\"/><circle cx=\"21\" cy=\"18\" r=\"0.9\"/></g>'\n },\n ca: {\n name: 'Canada',\n stripes: {dir: 'v', colors: ['#FF0000', '#FFFFFF', '#FF0000'], weights: [1, 2, 1]},\n overlays: [\n {\n type: 'path',\n fill: '#FF0000',\n 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'\n }\n ]\n },\n br: {\n name: 'Brazil',\n bg: '#009C3B',\n overlays: [\n {type: 'path', d: 'M30,5 L53,20 L30,35 L7,20 Z', fill: '#FFDF00'},\n {type: 'circle', cx: 30, cy: 20, r: 9, fill: '#002776'},\n {type: 'path', d: 'M21.5,17.5 A12,12 0 0 1 38.5,21', fill: 'none', stroke: '#fff', strokeWidth: 1.6},\n {type: 'star', cx: 27, cy: 18, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 33, cy: 17, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 30, cy: 23, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 35, cy: 22, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 25, cy: 22, r: 1.1, fill: '#fff'}\n ]\n },\n ar: {\n name: 'Argentina',\n stripes: {dir: 'h', colors: ['#74ACDF', '#FFFFFF', '#74ACDF']},\n overlays: [{type: 'circle', cx: 30, cy: 20, r: 3.4, fill: '#F6B40E', stroke: '#85340A', strokeWidth: 0.4}]\n },\n mx: {\n name: 'Mexico',\n stripes: {dir: 'v', colors: ['#006847', '#FFFFFF', '#CE1126']},\n overlays: [{type: 'circle', cx: 30, cy: 20, r: 3.2, fill: '#8C9A5B'}]\n },\n cl: {\n name: 'Chile',\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 60, h: 20, fill: '#fff'},\n {type: 'rect', x: 0, y: 20, w: 60, h: 20, fill: '#D52B1E'},\n {type: 'rect', x: 0, y: 0, w: 20, h: 20, fill: '#0039A6'},\n {type: 'star', cx: 10, cy: 10, r: 6, fill: '#fff'}\n ]\n },\n co: {\n name: 'Colombia',\n stripes: {dir: 'h', colors: ['#FCD116', '#003893', '#CE1126'], weights: [2, 1, 1]}\n },\n pe: {name: 'Peru', stripes: {dir: 'v', colors: ['#D91023', '#FFFFFF', '#D91023']}},\n uy: {\n name: 'Uruguay',\n stripes: {\n dir: 'h',\n colors: ['#fff', '#0038A8', '#fff', '#0038A8', '#fff', '#0038A8', '#fff', '#0038A8', '#fff']\n },\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 20, h: 17.78, fill: '#fff'},\n {type: 'circle', cx: 10, cy: 8.9, r: 4.5, fill: '#FCD116', stroke: '#7B3F00', strokeWidth: 0.5}\n ]\n }\n};\n","/**\n * Domma Flags - Africa\n * Canvas 60×40 (3:2). Complex emblems simplified for icon-scale clarity.\n */\n\nexport const africa = {\n za: {\n name: 'South Africa',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#fff\"/>' +\n '<path d=\"M0,0 H22 L40,20 L22,40 H0 Z\" fill=\"#002395\"/>' +\n '<path d=\"M0,0 L26,20 L0,40 Z\" fill=\"#000\"/>' +\n '<rect x=\"0\" y=\"0\" width=\"60\" height=\"13.3\" fill=\"#DE3831\"/>' +\n '<rect x=\"0\" y=\"26.7\" width=\"60\" height=\"13.3\" fill=\"#002395\"/>' +\n '<path d=\"M0,0 L26,20 L0,40\" fill=\"none\" stroke=\"#FFB915\" stroke-width=\"3\"/>' +\n '<path d=\"M0,3 L21,20 L0,37\" fill=\"none\" stroke=\"#007749\" stroke-width=\"6\"/>' +\n '<path d=\"M-1,13.3 H60 M-1,26.7 H60\" stroke=\"#fff\" stroke-width=\"0\"/>' +\n '<rect x=\"26\" y=\"14.8\" width=\"34\" height=\"10.4\" fill=\"#007749\"/>' +\n '<path d=\"M0,6 L18,20 L0,34\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.5\"/>'\n },\n ng: {name: 'Nigeria', stripes: {dir: 'v', colors: ['#008751', '#FFFFFF', '#008751']}},\n gh: {\n name: 'Ghana',\n stripes: {dir: 'h', colors: ['#CE1126', '#FCD116', '#006B3F']},\n overlays: [{type: 'star', cx: 30, cy: 20, r: 5, fill: '#000'}]\n },\n eg: {\n name: 'Egypt',\n stripes: {dir: 'h', colors: ['#CE1126', '#FFFFFF', '#000000']},\n 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'}]\n },\n ma: {\n name: 'Morocco',\n bg: '#C1272D',\n overlays: [{type: 'star', cx: 30, cy: 20, r: 8, fill: 'none', stroke: '#006233', strokeWidth: 1.6}]\n },\n sn: {\n name: 'Senegal',\n stripes: {dir: 'v', colors: ['#00853F', '#FDEF42', '#E31B23']},\n overlays: [{type: 'star', cx: 30, cy: 20, r: 4.5, fill: '#00853F'}]\n },\n ci: {name: 'Ivory Coast', stripes: {dir: 'v', colors: ['#F77F00', '#FFFFFF', '#009E60']}},\n cm: {\n name: 'Cameroon',\n stripes: {dir: 'v', colors: ['#007A5E', '#CE1126', '#FCD116']},\n overlays: [{type: 'star', cx: 30, cy: 20, r: 4, fill: '#FCD116'}]\n },\n dz: {\n name: 'Algeria',\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 30, h: 40, fill: '#006233'},\n {type: 'rect', x: 30, y: 0, w: 30, h: 40, fill: '#fff'},\n {type: 'crescent', cx: 28, cy: 20, r: 7, off: 3, fill: '#D21034'},\n {type: 'star', cx: 36, cy: 20, r: 4, fill: '#D21034'}\n ]\n },\n tn: {\n name: 'Tunisia',\n bg: '#E70013',\n overlays: [\n {type: 'circle', cx: 30, cy: 20, r: 9, fill: '#fff'},\n {type: 'crescent', cx: 31, cy: 20, r: 5.5, off: 2.6, fill: '#E70013'},\n {type: 'star', cx: 33, cy: 20, r: 3, fill: '#E70013'}\n ]\n },\n ke: {\n name: 'Kenya',\n stripes: {\n dir: 'h',\n colors: ['#000000', '#fff', '#BB0000', '#fff', '#006600'],\n weights: [12, 1, 12, 1, 12]\n },\n overlays: [\n {type: 'line', x1: 24, y1: 8, x2: 36, y2: 32, stroke: '#000', strokeWidth: 1},\n {type: 'line', x1: 36, y1: 8, x2: 24, y2: 32, stroke: '#000', strokeWidth: 1},\n {type: 'ellipse', cx: 30, cy: 20, rx: 4, ry: 8, fill: '#fff'},\n {type: 'ellipse', cx: 30, cy: 20, rx: 2.6, ry: 6.4, fill: '#BB0000'}\n ]\n }\n};\n","/**\n * Domma Flags - Asia & Middle East\n * Canvas 60×40 (3:2). Complex emblems simplified for icon-scale clarity.\n */\n\nexport const asia = {\n jp: {\n name: 'Japan',\n bg: '#FFFFFF',\n overlays: [{type: 'circle', cx: 30, cy: 20, r: 10, fill: '#BC002D'}]\n },\n cn: {\n name: 'China',\n bg: '#DE2910',\n overlays: [\n {type: 'star', cx: 12, cy: 11, r: 6, fill: '#FFDE00'},\n {type: 'star', cx: 22, cy: 5, r: 2, fill: '#FFDE00'},\n {type: 'star', cx: 26, cy: 9, r: 2, fill: '#FFDE00'},\n {type: 'star', cx: 26, cy: 15, r: 2, fill: '#FFDE00'},\n {type: 'star', cx: 22, cy: 19, r: 2, fill: '#FFDE00'}\n ]\n },\n kr: {\n name: 'South Korea',\n bg: '#FFFFFF',\n overlays: [\n {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'},\n {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'},\n {type: 'circle', cx: 30, cy: 16.5, r: 3.5, fill: '#CD2E3A'},\n {type: 'circle', cx: 30, cy: 23.5, r: 3.5, fill: '#0047A0'},\n {type: 'group', children: [\n {type: 'rect', x: 9, y: 8, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 9, y: 10.4, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 9, y: 12.8, w: 7, h: 1.3, fill: '#000'}\n ]},\n {type: 'group', children: [\n {type: 'rect', x: 44, y: 8, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 44, y: 10.4, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 44, y: 12.8, w: 7, h: 1.3, fill: '#000'}\n ]}\n ]\n },\n in: {\n name: 'India',\n stripes: {dir: 'h', colors: ['#FF9933', '#FFFFFF', '#138808']},\n overlays: [\n {type: 'circle', cx: 30, cy: 20, r: 5, fill: 'none', stroke: '#000080', strokeWidth: 0.8},\n {type: 'circle', cx: 30, cy: 20, r: 1, fill: '#000080'},\n {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: 0.5}\n ]\n },\n sa: {\n name: 'Saudi Arabia',\n bg: '#006C35',\n overlays: [\n {type: 'rect', x: 10, y: 26, w: 40, h: 1.6, fill: '#fff'},\n {type: 'path', d: 'M10,26.8 l4,-2 v4 z', fill: '#fff'},\n {type: 'rect', x: 14, y: 14, w: 32, h: 5, fill: 'none'}\n ]\n },\n ae: {\n name: 'United Arab Emirates',\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 60, h: 13.33, fill: '#00732F'},\n {type: 'rect', x: 0, y: 13.33, w: 60, h: 13.33, fill: '#fff'},\n {type: 'rect', x: 0, y: 26.66, w: 60, h: 13.34, fill: '#000'},\n {type: 'rect', x: 0, y: 0, w: 15, h: 40, fill: '#FF0000'}\n ]\n },\n qa: {\n name: 'Qatar',\n bg: '#FFFFFF',\n overlays: [\n {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'}\n ]\n },\n id: {name: 'Indonesia', stripes: {dir: 'h', colors: ['#FF0000', '#FFFFFF']}},\n th: {\n name: 'Thailand',\n stripes: {\n dir: 'h',\n colors: ['#A51931', '#F4F5F8', '#2D2A4A', '#F4F5F8', '#A51931'],\n weights: [1, 1, 2, 1, 1]\n }\n },\n vn: {\n name: 'Vietnam',\n bg: '#DA251D',\n overlays: [{type: 'star', cx: 30, cy: 20, r: 9, fill: '#FFFF00'}]\n },\n tr: {\n name: 'Turkey',\n bg: '#E30A17',\n overlays: [\n {type: 'crescent', cx: 24, cy: 20, r: 8, off: 3.2, fill: '#fff'},\n {type: 'star', cx: 35, cy: 20, r: 4, rotation: -54, fill: '#fff'}\n ]\n },\n il: {\n name: 'Israel',\n bg: '#FFFFFF',\n overlays: [\n {type: 'rect', x: 0, y: 4, w: 60, h: 4, fill: '#0038B8'},\n {type: 'rect', x: 0, y: 32, w: 60, h: 4, fill: '#0038B8'},\n {type: 'path', d: 'M30,13 L33.5,19 H26.5 Z', fill: 'none', stroke: '#0038B8', strokeWidth: 1},\n {type: 'path', d: 'M30,27 L33.5,21 H26.5 Z', fill: 'none', stroke: '#0038B8', strokeWidth: 1}\n ]\n }\n};\n","/**\n * Domma Flags - Oceania\n * Canvas 60×40 (3:2). The Union canton reuses a scaled Union Jack group.\n */\n\nconst UNION_CANTON =\n '<g transform=\"scale(0.5)\">' +\n '<rect width=\"60\" height=\"40\" fill=\"#012169\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#fff\" stroke-width=\"8\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#C8102E\" stroke-width=\"4\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#fff\" stroke-width=\"13\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#C8102E\" stroke-width=\"8\"/>' +\n '</g>';\n\nexport const oceania = {\n au: {\n name: 'Australia',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#012169\"/>' +\n UNION_CANTON +\n '<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\"/>' +\n '<g fill=\"#fff\">' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<circle cx=\"49\" cy=\"24\" r=\"1.2\"/></g>'\n },\n nz: {\n name: 'New Zealand',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#00247D\"/>' +\n UNION_CANTON +\n '<g>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '</g>'\n }\n};\n","/**\n * Domma Flags\n * Aggregates nation-flag descriptors into a single registry, keyed by\n * ISO 3166-1 alpha-2 code, grouped by region.\n *\n * This is a curated starter set covering the major footballing and world\n * nations. It is easily extended at runtime with FL.register(code, def).\n */\n\nimport {europe} from './europe.js';\nimport {americas} from './americas.js';\nimport {africa} from './africa.js';\nimport {asia} from './asia.js';\nimport {oceania} from './oceania.js';\n\n// Merge all regions into a single registry\nexport const flags = {\n ...europe,\n ...americas,\n ...africa,\n ...asia,\n ...oceania\n};\n\n// Export region groups for selective imports\nexport {europe, americas, africa, asia, oceania};\n\n// Region metadata for the flag gallery\nexport const regions = {\n europe: {name: 'Europe', description: 'European nations', codes: Object.keys(europe)},\n americas: {name: 'Americas', description: 'North, Central & South America', codes: Object.keys(americas)},\n africa: {name: 'Africa', description: 'African nations', codes: Object.keys(africa)},\n asia: {name: 'Asia & Middle East', description: 'Asian and Middle Eastern nations', codes: Object.keys(asia)},\n oceania: {name: 'Oceania', description: 'Australia, New Zealand & the Pacific', codes: Object.keys(oceania)}\n};\n\nexport default flags;\n","/**\n * Domma Flags Registry\n *\n * Renders nation flags as inline SVG. Flags are stored as compact descriptors\n * (stripe/cross/overlay specs or raw SVG) and expanded to SVG markup lazily on\n * first render, then memoised - nothing touches the DOM until a flag is actually\n * requested. Keyed by ISO 3166-1 alpha-2 code (e.g. 'gb', 'us', 'fr').\n *\n * Opt-in module: ships as a separate bundle (domma-flags) and is NOT part of the\n * core domma bundle. Attaches to Domma.flags / window.FL when loaded.\n */\n\nimport {flags as defaultFlags, regions} from '../public/assets/flags/index.js';\n\nconst NAMESPACE = 'http://www.w3.org/2000/svg';\nconst VIEWBOX = '0 0 60 40'; // canonical 3:2 flag canvas\nconst SQUARE_VIEWBOX = '10 0 40 40'; // centre-cropped 1:1 slice\n\nlet _clipSeq = 0;\n\n/* -------------------------------------------------------------------------- */\n/* Geometry helpers (shared by descriptor expansion) */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Generate an n-pointed star path.\n * @param {number} cx - Centre x\n * @param {number} cy - Centre y\n * @param {number} outerR - Outer radius\n * @param {number} [points=5] - Number of points\n * @param {number} [innerRatio=0.382] - Inner radius as a fraction of outer\n * @param {number} [rotation=-90] - Rotation in degrees (-90 points up)\n * @returns {string} SVG path data\n */\nexport function starPath(cx, cy, outerR, points = 5, innerRatio = 0.382, rotation = -90) {\n const innerR = outerR * innerRatio;\n const step = Math.PI / points;\n const start = (rotation * Math.PI) / 180;\n let d = '';\n for (let i = 0; i < points * 2; i++) {\n const r = i % 2 === 0 ? outerR : innerR;\n const a = start + i * step;\n const x = (cx + r * Math.cos(a)).toFixed(2);\n const y = (cy + r * Math.sin(a)).toFixed(2);\n d += (i === 0 ? 'M' : 'L') + x + ',' + y;\n }\n return d + 'Z';\n}\n\n/**\n * Generate a crescent path (a lune) opening towards the fly (right).\n * The inner arc passes through the top and bottom of the outer circle.\n * @param {number} cx - Outer circle centre x\n * @param {number} cy - Outer circle centre y\n * @param {number} r - Outer radius\n * @param {number} [off=r*0.45] - Horizontal offset of the carving circle\n * @returns {string} SVG path data\n */\nexport function crescentPath(cx, cy, r, off = r * 0.45) {\n const ri = Math.sqrt(off * off + r * r);\n const top = (cy - r).toFixed(2);\n const bot = (cy + r).toFixed(2);\n const x = cx.toFixed(2);\n return `M${x},${top} A${r},${r} 0 1 0 ${x},${bot} A${ri.toFixed(2)},${ri.toFixed(2)} 0 0 1 ${x},${top}Z`;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Descriptor → SVG markup expansion */\n/* -------------------------------------------------------------------------- */\n\nfunction esc(v) {\n return String(v).replace(/\"/g, '&quot;');\n}\n\nfunction buildStripes({dir = 'h', colors = [], weights = null}) {\n const total = weights ? weights.reduce((a, b) => a + b, 0) : colors.length;\n let offset = 0;\n let out = '';\n colors.forEach((colour, i) => {\n const w = weights ? weights[i] : 1;\n if (dir === 'v') {\n const x = (60 * offset) / total;\n const width = (60 * w) / total;\n out += `<rect x=\"${x.toFixed(3)}\" y=\"0\" width=\"${width.toFixed(3)}\" height=\"40\" fill=\"${esc(colour)}\"/>`;\n } else {\n const y = (40 * offset) / total;\n const height = (40 * w) / total;\n out += `<rect x=\"0\" y=\"${y.toFixed(3)}\" width=\"60\" height=\"${height.toFixed(3)}\" fill=\"${esc(colour)}\"/>`;\n }\n offset += w;\n });\n return out;\n}\n\n/**\n * Nordic (offset) cross - vertical bar sits towards the hoist.\n */\nfunction buildCross({bg, colour, border = null, thickness = 8}) {\n const t = thickness;\n const vx = 16; // vertical bar left edge (hoist-offset)\n const hy = 20 - t / 2; // horizontal bar top edge (centred)\n let out = `<rect x=\"0\" y=\"0\" width=\"60\" height=\"40\" fill=\"${esc(bg)}\"/>`;\n if (border) {\n const b = 2;\n out += `<rect x=\"${vx - b}\" y=\"0\" width=\"${t + b * 2}\" height=\"40\" fill=\"${esc(border)}\"/>`;\n out += `<rect x=\"0\" y=\"${hy - b}\" width=\"60\" height=\"${t + b * 2}\" fill=\"${esc(border)}\"/>`;\n }\n out += `<rect x=\"${vx}\" y=\"0\" width=\"${t}\" height=\"40\" fill=\"${esc(colour)}\"/>`;\n out += `<rect x=\"0\" y=\"${hy}\" width=\"60\" height=\"${t}\" fill=\"${esc(colour)}\"/>`;\n return out;\n}\n\nfunction buildOverlay(o) {\n const fill = o.fill !== undefined ? ` fill=\"${esc(o.fill)}\"` : '';\n const stroke = o.stroke ? ` stroke=\"${esc(o.stroke)}\"` : '';\n const sw = o.strokeWidth !== undefined ? ` stroke-width=\"${o.strokeWidth}\"` : '';\n const extra = stroke + sw + (stroke && !o.fill ? ' fill=\"none\"' : '');\n switch (o.type) {\n case 'rect':\n return `<rect x=\"${o.x}\" y=\"${o.y}\" width=\"${o.w}\" height=\"${o.h}\"${o.rx ? ` rx=\"${o.rx}\"` : ''}${fill}${extra}/>`;\n case 'circle':\n return `<circle cx=\"${o.cx}\" cy=\"${o.cy}\" r=\"${o.r}\"${fill}${extra}/>`;\n case 'ellipse':\n return `<ellipse cx=\"${o.cx}\" cy=\"${o.cy}\" rx=\"${o.rx}\" ry=\"${o.ry}\"${fill}${extra}/>`;\n case 'line':\n return `<line x1=\"${o.x1}\" y1=\"${o.y1}\" x2=\"${o.x2}\" y2=\"${o.y2}\"${stroke}${sw}/>`;\n case 'path':\n return `<path d=\"${o.d}\"${fill}${extra}/>`;\n case 'star':\n return `<path d=\"${starPath(o.cx, o.cy, o.r, o.points || 5, o.innerRatio || 0.382, o.rotation === undefined ? -90 : o.rotation)}\"${fill || ' fill=\"#fff\"'}${extra}/>`;\n case 'crescent':\n return `<path d=\"${crescentPath(o.cx, o.cy, o.r, o.off)}\"${fill || ' fill=\"#fff\"'}${extra}/>`;\n case 'group':\n return `<g${o.transform ? ` transform=\"${esc(o.transform)}\"` : ''}>${(o.children || []).map(buildOverlay).join('')}</g>`;\n default:\n return '';\n }\n}\n\nfunction expandFlag(def) {\n if (def.svg) {\n return def.svg;\n }\n let out = '';\n if (def.stripes) {\n out += buildStripes(def.stripes);\n }\n if (def.cross) {\n out += buildCross(def.cross);\n }\n if (def.bg && !def.stripes && !def.cross) {\n out = `<rect x=\"0\" y=\"0\" width=\"60\" height=\"40\" fill=\"${esc(def.bg)}\"/>` + out;\n }\n if (def.overlays) {\n out += def.overlays.map(buildOverlay).join('');\n }\n return out;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Registry */\n/* -------------------------------------------------------------------------- */\n\nclass FlagRegistry {\n constructor() {\n this._flags = {...defaultFlags};\n this._regions = {...regions};\n this._cache = {};\n }\n\n _markup(code) {\n if (this._cache[code] !== undefined) {\n return this._cache[code];\n }\n const def = this._flags[code];\n const markup = def ? expandFlag(def) : null;\n this._cache[code] = markup;\n return markup;\n }\n\n /**\n * Render a flag as an SVG element.\n * @param {string} code - ISO 3166-1 alpha-2 code (case-insensitive)\n * @param {Object} [options]\n * @param {number} [options.size=24] - Height in px (width follows aspect)\n * @param {number} [options.width] - Explicit width override\n * @param {number} [options.height] - Explicit height override\n * @param {string} [options.shape='rect'] - 'rect' | 'square' | 'circle' | 'rounded'\n * @param {boolean|string} [options.border=false] - Add a hairline border (or colour)\n * @param {string} [options.class] - Extra CSS classes\n * @param {string} [options.title] - Accessible title (defaults to country name)\n * @param {Object} [options.attrs] - Additional attributes\n * @returns {SVGElement|null}\n */\n render(code, options = {}) {\n code = String(code || '').toLowerCase();\n const def = this._flags[code];\n if (!def) {\n console.warn(`Flag \"${code}\" not found`);\n return null;\n }\n\n const {\n size = 24,\n width = null,\n height = null,\n shape = 'rect',\n border = false,\n class: className = '',\n title = null,\n attrs = {}\n } = options;\n\n const isSquareShape = shape === 'square' || shape === 'circle';\n const h = height || size;\n const w = width || (isSquareShape ? h : h * 1.5);\n\n const svg = document.createElementNS(NAMESPACE, 'svg');\n svg.setAttribute('viewBox', isSquareShape ? SQUARE_VIEWBOX : VIEWBOX);\n svg.setAttribute('width', w);\n svg.setAttribute('height', h);\n svg.setAttribute('role', 'img');\n\n const label = title || def.name || code.toUpperCase();\n svg.setAttribute('aria-label', label);\n\n const classes = ['dm-flag', `dm-flag-${shape}`];\n if (className) {\n classes.push(className);\n }\n svg.setAttribute('class', classes.join(' '));\n\n Object.entries(attrs).forEach(([k, v]) => svg.setAttribute(k, v));\n\n const clipId = `dm-flag-clip-${++_clipSeq}`;\n let inner = `<title>${esc(label)}</title>`;\n const body = this._markup(code) || '';\n\n if (shape === 'circle') {\n inner += `<defs><clipPath id=\"${clipId}\"><circle cx=\"30\" cy=\"20\" r=\"20\"/></clipPath></defs>`;\n inner += `<g clip-path=\"url(#${clipId})\">${body}</g>`;\n if (border) {\n const bc = typeof border === 'string' ? border : 'rgba(0,0,0,0.15)';\n inner += `<circle cx=\"30\" cy=\"20\" r=\"19.25\" fill=\"none\" stroke=\"${esc(bc)}\" stroke-width=\"1.5\"/>`;\n }\n } else if (shape === 'rounded') {\n inner += `<defs><clipPath id=\"${clipId}\"><rect x=\"0\" y=\"0\" width=\"60\" height=\"40\" rx=\"6\"/></clipPath></defs>`;\n inner += `<g clip-path=\"url(#${clipId})\">${body}</g>`;\n if (border) {\n const bc = typeof border === 'string' ? border : 'rgba(0,0,0,0.15)';\n inner += `<rect x=\"0.75\" y=\"0.75\" width=\"58.5\" height=\"38.5\" rx=\"5.25\" fill=\"none\" stroke=\"${esc(bc)}\" stroke-width=\"1.5\"/>`;\n }\n } else {\n inner += body;\n if (border) {\n const bc = typeof border === 'string' ? border : 'rgba(0,0,0,0.15)';\n const vb = isSquareShape ? {x: 10.5, y: 0.5, w: 39, h: 39} : {x: 0.5, y: 0.5, w: 59, h: 39};\n inner += `<rect x=\"${vb.x}\" y=\"${vb.y}\" width=\"${vb.w}\" height=\"${vb.h}\" fill=\"none\" stroke=\"${esc(bc)}\" stroke-width=\"1\"/>`;\n }\n }\n\n svg.innerHTML = inner;\n return svg;\n }\n\n /**\n * Get a flag as an HTML string.\n * @param {string} code\n * @param {Object} [options] - Same as render()\n * @returns {string}\n */\n html(code, options = {}) {\n const svg = this.render(code, options);\n if (!svg) {\n return '';\n }\n const container = document.createElement('div');\n container.appendChild(svg);\n return container.innerHTML;\n }\n\n /**\n * Inject a flag into an element.\n * @param {string|HTMLElement} target\n * @param {string} code\n * @param {Object} [options] - Same as render(), plus position\n * @param {string} [options.position='prepend'] - 'prepend' | 'append' | 'replace'\n * @returns {SVGElement|null}\n */\n inject(target, code, options = {}) {\n const {position = 'prepend', ...renderOptions} = options;\n const element = typeof target === 'string' ? document.querySelector(target) : target;\n if (!element) {\n console.warn(`Target element not found: ${target}`);\n return null;\n }\n const svg = this.render(code, renderOptions);\n if (!svg) {\n return null;\n }\n if (position === 'append') {\n element.appendChild(svg);\n } else if (position === 'replace') {\n element.innerHTML = '';\n element.appendChild(svg);\n } else {\n element.insertBefore(svg, element.firstChild);\n }\n return svg;\n }\n\n /**\n * Scan a container for [data-flag] elements and replace them with SVGs.\n * Supported attributes: data-flag, data-flag-size, data-flag-shape,\n * data-flag-class, data-flag-border, data-flag-title.\n * @param {HTMLElement|string} [container=document]\n * @returns {number} Number of flags replaced\n */\n scan(container = document) {\n const root = typeof container === 'string' ? document.querySelector(container) : container;\n if (!root) {\n return 0;\n }\n const elements = root.querySelectorAll('[data-flag]:not([data-flag-processed])');\n let count = 0;\n elements.forEach(el => {\n if (el.tagName.toLowerCase() === 'svg' || el.querySelector('svg')) {\n return;\n }\n const code = el.dataset.flag;\n const size = parseInt(el.dataset.flagSize, 10) || 24;\n const shape = el.dataset.flagShape || 'rect';\n const className = el.dataset.flagClass || '';\n const border = el.dataset.flagBorder !== undefined\n ? (el.dataset.flagBorder === '' || el.dataset.flagBorder === 'true' ? true : el.dataset.flagBorder)\n : false;\n const title = el.dataset.flagTitle || null;\n\n const svg = this.render(code, {size, shape, class: className, border, title});\n if (svg) {\n if (el.className) {\n svg.classList.add(...el.className.split(' ').filter(Boolean));\n }\n svg.setAttribute('data-flag', code);\n svg.setAttribute('data-flag-processed', 'true');\n el.replaceWith(svg);\n count++;\n } else {\n el.setAttribute('data-flag-processed', 'true');\n }\n });\n return count;\n }\n\n /**\n * Register a custom flag (or override an existing one).\n * @param {string} code - ISO alpha-2 code\n * @param {Object} definition - { name, region?, svg? | stripes?/cross?/bg?/overlays? }\n * @returns {FlagRegistry}\n */\n register(code, definition) {\n if (!code || !definition) {\n console.warn('Invalid flag registration: code and definition required');\n return this;\n }\n code = String(code).toLowerCase();\n this._flags[code] = definition;\n delete this._cache[code];\n\n const region = definition.region || 'custom';\n if (!this._regions[region]) {\n this._regions[region] = {name: region.charAt(0).toUpperCase() + region.slice(1), codes: []};\n }\n if (!this._regions[region].codes.includes(code)) {\n this._regions[region].codes.push(code);\n }\n return this;\n }\n\n /**\n * Remove a registered flag.\n * @param {string} code\n * @returns {boolean}\n */\n unregister(code) {\n code = String(code || '').toLowerCase();\n if (this._flags[code]) {\n delete this._flags[code];\n delete this._cache[code];\n Object.values(this._regions).forEach(r => {\n const i = r.codes.indexOf(code);\n if (i > -1) {\n r.codes.splice(i, 1);\n }\n });\n return true;\n }\n return false;\n }\n\n /**\n * Check whether a flag exists.\n * @param {string} code\n * @returns {boolean}\n */\n has(code) {\n return !!this._flags[String(code || '').toLowerCase()];\n }\n\n /**\n * Get a flag definition.\n * @param {string} code\n * @returns {Object|null}\n */\n get(code) {\n return this._flags[String(code || '').toLowerCase()] || null;\n }\n\n /**\n * Get the country name for a code.\n * @param {string} code\n * @returns {string|null}\n */\n name(code) {\n const def = this.get(code);\n return def ? def.name : null;\n }\n\n /**\n * List flag codes, optionally filtered by region.\n * @param {string} [region]\n * @returns {string[]}\n */\n list(region = null) {\n if (region && this._regions[region]) {\n return [...this._regions[region].codes];\n }\n return Object.keys(this._flags);\n }\n\n /**\n * List all regions with metadata.\n * @returns {Object}\n */\n listRegions() {\n return {...this._regions};\n }\n\n /**\n * Total number of flags.\n * @returns {number}\n */\n count() {\n return Object.keys(this._flags).length;\n }\n\n /**\n * Search flags by code or country name.\n * @param {string} query\n * @returns {string[]} Matching codes\n */\n search(query) {\n const q = String(query || '').toLowerCase().trim();\n if (!q) {\n return [];\n }\n return Object.keys(this._flags).filter(code =>\n code.includes(q) || (this._flags[code].name || '').toLowerCase().includes(q)\n );\n }\n}\n\nconst flags = new FlagRegistry();\n\nexport {flags, FlagRegistry};\nexport default flags;\n","/**\n * Domma Flags Bundle\n * Nation flags as inline SVG - an opt-in module, separate from the core bundle.\n *\n * Load after domma.min.js:\n * <script src=\"domma.min.js\"></script>\n * <script src=\"domma-flags.min.js\"></script>\n *\n * Exposes window.FL and Domma.flags / Domma.FL.\n */\n\nimport {flags, FlagRegistry} from './flags.js';\n\n// Attach to Domma when present\nif (typeof window !== 'undefined' && window.Domma) {\n window.Domma.flags = flags;\n window.Domma.FL = flags;\n}\n\n// Expose the FL alias globally\nif (typeof window !== 'undefined') {\n window.FL = flags;\n}\n\nexport {flags, FlagRegistry};\nexport default flags;\n"],"names":["europe","gb","name","svg","fr","stripes","dir","colors","de","it","es","weights","pt","overlays","type","cx","cy","r","fill","stroke","strokeWidth","nl","be","ie","ch","bg","x","y","w","h","at","se","cross","colour","no","border","dk","fi","is","pl","ua","gr","hr","ru","cz","d","americas","us","ca","br","ar","mx","cl","co","pe","uy","africa","za","ng","gh","eg","ma","sn","ci","cm","dz","off","tn","ke","x1","y1","x2","y2","rx","ry","asia","jp","cn","kr","children","in","sa","ae","qa","id","th","vn","tr","rotation","il","UNION_CANTON","oceania","au","nz","flags","regions","description","codes","Object","keys","_clipSeq","esc","v","String","replace","buildOverlay","o","undefined","sw","extra","outerR","points","innerRatio","innerR","step","Math","PI","start","i","a","cos","toFixed","sin","starPath","ri","sqrt","top","bot","crescentPath","transform","map","join","expandFlag","def","out","total","reduce","b","length","offset","forEach","width","height","buildStripes","thickness","t","hy","buildCross","FlagRegistry","constructor","this","_flags","defaultFlags","_regions","_cache","_markup","code","markup","render","options","toLowerCase","console","warn","size","shape","class","className","title","attrs","isSquareShape","document","createElementNS","setAttribute","label","toUpperCase","classes","push","entries","k","clipId","inner","body","bc","vb","innerHTML","html","container","createElement","appendChild","inject","target","position","renderOptions","element","querySelector","insertBefore","firstChild","scan","root","elements","querySelectorAll","count","el","tagName","dataset","flag","parseInt","flagSize","flagShape","flagClass","flagBorder","flagTitle","classList","add","split","filter","Boolean","replaceWith","register","definition","region","charAt","slice","includes","unregister","values","indexOf","splice","has","get","list","listRegions","search","query","q","trim","window","Domma","FL"],"mappings":";;;;;;;;;AAQO,MAAMA,EAAS,CAClBC,GAAI,CACAC,KAAM,iBACNC,IACI,oTAMRC,GAAI,CAACF,KAAM,SAAUG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACxEC,GAAI,CAACN,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACzEE,GAAI,CAACP,KAAM,QAASG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACvEG,GAAI,CACAR,KAAM,QACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,WAAYI,QAAS,CAAC,EAAG,EAAG,KAEnFC,GAAI,CACAV,KAAM,WACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,WAAYI,QAAS,CAAC,EAAG,IACjEE,SAAU,CACN,CAACC,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,UAAWC,OAAQ,UAAWC,YAAa,GACxF,CAACN,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,aAGvDG,GAAI,CAACnB,KAAM,cAAeG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aAC7Ee,GAAI,CAACpB,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACzEgB,GAAI,CAACrB,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACzEiB,GAAI,CACAtB,KAAM,cACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,GAAIC,EAAG,GAAIC,EAAG,EAAGC,EAAG,GAAIX,KAAM,QAChD,CAACJ,KAAM,OAAQY,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,EAAGX,KAAM,UAGxDY,GAAI,CAAC5B,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACzEwB,GAAI,CAAC7B,KAAM,SAAU8B,MAAO,CAACP,GAAI,UAAWQ,OAAQ,YACpDC,GAAI,CAAChC,KAAM,SAAU8B,MAAO,CAACP,GAAI,UAAWU,OAAQ,UAAWF,OAAQ,YACvEG,GAAI,CAAClC,KAAM,UAAW8B,MAAO,CAACP,GAAI,UAAWQ,OAAQ,YACrDI,GAAI,CAACnC,KAAM,UAAW8B,MAAO,CAACP,GAAI,UAAWQ,OAAQ,YACrDK,GAAI,CAACpC,KAAM,UAAW8B,MAAO,CAACP,GAAI,UAAWU,OAAQ,UAAWF,OAAQ,YACxEM,GAAI,CAACrC,KAAM,SAAUG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,aAC7DiC,GAAI,CAACtC,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,aAC9DkC,GAAI,CACAvC,KAAM,SACNG,QAAS,CACLC,IAAK,IACLC,OAAQ,CAAC,UAAW,OAAQ,UAAW,OAAQ,UAAW,OAAQ,UAAW,OAAQ,YAEzFM,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,MAAOC,EAAG,MAAOX,KAAM,WACrD,CAACJ,KAAM,OAAQY,EAAG,IAAKC,EAAG,EAAGC,EAAG,KAAMC,EAAG,MAAOX,KAAM,QACtD,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,IAAKC,EAAG,MAAOC,EAAG,KAAMX,KAAM,UAG9DwB,GAAI,CAACxC,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACzEoC,GAAI,CAACzC,KAAM,SAAUG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACxEqC,GAAI,CACA1C,KAAM,UACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,YACxCM,SAAU,CAAC,CAACC,KAAM,OAAQ+B,EAAG,sBAAuB3B,KAAM,cChErD4B,EAAW,CACpBC,GAAI,CACA7C,KAAM,gBACNC,IACI,22CAqBR6C,GAAI,CACA9C,KAAM,SACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,WAAYI,QAAS,CAAC,EAAG,EAAG,IAC/EE,SAAU,CACN,CACIC,KAAM,OACNI,KAAM,UACN2B,EAAG,iKAIfI,GAAI,CACA/C,KAAM,SACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQ+B,EAAG,8BAA+B3B,KAAM,WACvD,CAACJ,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,WAC7C,CAACJ,KAAM,OAAQ+B,EAAG,kCAAmC3B,KAAM,OAAQC,OAAQ,OAAQC,YAAa,KAChG,CAACN,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,QAC7C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,QAC7C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,QAC7C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,QAC7C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,UAGrDgC,GAAI,CACAhD,KAAM,YACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CAAC,CAACC,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,UAAWC,OAAQ,UAAWC,YAAa,MAEzG+B,GAAI,CACAjD,KAAM,SACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CAAC,CAACC,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,aAE9DkC,GAAI,CACAlD,KAAM,QACNW,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIX,KAAM,QAC/C,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIX,KAAM,WAChD,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIX,KAAM,WAC/C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,UAGnDmC,GAAI,CACAnD,KAAM,WACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,WAAYI,QAAS,CAAC,EAAG,EAAG,KAEnF2C,GAAI,CAACpD,KAAM,OAAQG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACtEgD,GAAI,CACArD,KAAM,UACNG,QAAS,CACLC,IAAK,IACLC,OAAQ,CAAC,OAAQ,UAAW,OAAQ,UAAW,OAAQ,UAAW,OAAQ,UAAW,SAEzFM,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,MAAOX,KAAM,QAClD,CAACJ,KAAM,SAAUC,GAAI,GAAIC,GAAI,IAAKC,EAAG,IAAKC,KAAM,UAAWC,OAAQ,UAAWC,YAAa,OClF1FoC,EAAS,CAClBC,GAAI,CACAvD,KAAM,eACNC,IACI,2mBAWRuD,GAAI,CAACxD,KAAM,UAAWG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aACzEoD,GAAI,CACAzD,KAAM,QACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CAAC,CAACC,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,UAE1D0C,GAAI,CACA1D,KAAM,QACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CAAC,CAACC,KAAM,OAAQ+B,EAAG,2EAA4E3B,KAAM,aAEnH2C,GAAI,CACA3D,KAAM,UACNuB,GAAI,UACJZ,SAAU,CAAC,CAACC,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,OAAQC,OAAQ,UAAWC,YAAa,OAElG0C,GAAI,CACA5D,KAAM,UACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CAAC,CAACC,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKC,KAAM,aAE5D6C,GAAI,CAAC7D,KAAM,cAAeG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,aAC7EyD,GAAI,CACA9D,KAAM,WACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CAAC,CAACC,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,aAE1D+C,GAAI,CACA/D,KAAM,UACNW,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIX,KAAM,WAC/C,CAACJ,KAAM,OAAQY,EAAG,GAAIC,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIX,KAAM,QAChD,CAACJ,KAAM,WAAYC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGiD,IAAK,EAAGhD,KAAM,WACvD,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,aAGnDiD,GAAI,CACAjE,KAAM,UACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,QAC7C,CAACJ,KAAM,WAAYC,GAAI,GAAIC,GAAI,GAAIC,EAAG,IAAKiD,IAAK,IAAKhD,KAAM,WAC3D,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,aAGnDkD,GAAI,CACAlE,KAAM,QACNG,QAAS,CACLC,IAAK,IACLC,OAAQ,CAAC,UAAW,OAAQ,UAAW,OAAQ,WAC/CI,QAAS,CAAC,GAAI,EAAG,GAAI,EAAG,KAE5BE,SAAU,CACN,CAACC,KAAM,OAAQuD,GAAI,GAAIC,GAAI,EAAGC,GAAI,GAAIC,GAAI,GAAIrD,OAAQ,OAAQC,YAAa,GAC3E,CAACN,KAAM,OAAQuD,GAAI,GAAIC,GAAI,EAAGC,GAAI,GAAIC,GAAI,GAAIrD,OAAQ,OAAQC,YAAa,GAC3E,CAACN,KAAM,UAAWC,GAAI,GAAIC,GAAI,GAAIyD,GAAI,EAAGC,GAAI,EAAGxD,KAAM,QACtD,CAACJ,KAAM,UAAWC,GAAI,GAAIC,GAAI,GAAIyD,GAAI,IAAKC,GAAI,IAAKxD,KAAM,cCvEzDyD,EAAO,CAChBC,GAAI,CACA1E,KAAM,QACNuB,GAAI,UACJZ,SAAU,CAAC,CAACC,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,GAAIC,KAAM,aAE7D2D,GAAI,CACA3E,KAAM,QACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,WAC3C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,EAAGC,EAAG,EAAGC,KAAM,WAC1C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,EAAGC,EAAG,EAAGC,KAAM,WAC1C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,WAC3C,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,aAGnD4D,GAAI,CACA5E,KAAM,cACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQ+B,EAAG,mEAAoE3B,KAAM,WAC5F,CAACJ,KAAM,OAAQ+B,EAAG,mEAAoE3B,KAAM,WAC5F,CAACJ,KAAM,SAAUC,GAAI,GAAIC,GAAI,KAAMC,EAAG,IAAKC,KAAM,WACjD,CAACJ,KAAM,SAAUC,GAAI,GAAIC,GAAI,KAAMC,EAAG,IAAKC,KAAM,WACjD,CAACJ,KAAM,QAASiE,SAAU,CACtB,CAACjE,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,IAAKX,KAAM,QAC/C,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,KAAMC,EAAG,EAAGC,EAAG,IAAKX,KAAM,QAClD,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,KAAMC,EAAG,EAAGC,EAAG,IAAKX,KAAM,UAEtD,CAACJ,KAAM,QAASiE,SAAU,CACtB,CAACjE,KAAM,OAAQY,EAAG,GAAIC,EAAG,EAAGC,EAAG,EAAGC,EAAG,IAAKX,KAAM,QAChD,CAACJ,KAAM,OAAQY,EAAG,GAAIC,EAAG,KAAMC,EAAG,EAAGC,EAAG,IAAKX,KAAM,QACnD,CAACJ,KAAM,OAAQY,EAAG,GAAIC,EAAG,KAAMC,EAAG,EAAGC,EAAG,IAAKX,KAAM,YAI/D8D,GAAI,CACA9E,KAAM,QACNG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,UAAW,YACnDM,SAAU,CACN,CAACC,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,OAAQC,OAAQ,UAAWC,YAAa,IACrF,CAACN,KAAM,SAAUC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,WAC7C,CAACJ,KAAM,OAAQ+B,EAAG,oEAAqE1B,OAAQ,UAAWC,YAAa,MAG/H6D,GAAI,CACA/E,KAAM,eACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,IAAKX,KAAM,QAClD,CAACJ,KAAM,OAAQ+B,EAAG,sBAAuB3B,KAAM,QAC/C,CAACJ,KAAM,OAAQY,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,EAAGX,KAAM,UAGxDgE,GAAI,CACAhF,KAAM,uBACNW,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,MAAOX,KAAM,WAClD,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,MAAOC,EAAG,GAAIC,EAAG,MAAOX,KAAM,QACtD,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,MAAOC,EAAG,GAAIC,EAAG,MAAOX,KAAM,QACtD,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIX,KAAM,aAGvDiE,GAAI,CACAjF,KAAM,QACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQ+B,EAAG,mFAAoF3B,KAAM,aAGpHkE,GAAI,CAAClF,KAAM,YAAaG,QAAS,CAACC,IAAK,IAAKC,OAAQ,CAAC,UAAW,aAChE8E,GAAI,CACAnF,KAAM,WACNG,QAAS,CACLC,IAAK,IACLC,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,WACrDI,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,KAG9B2E,GAAI,CACApF,KAAM,UACNuB,GAAI,UACJZ,SAAU,CAAC,CAACC,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGC,KAAM,aAE1DqE,GAAI,CACArF,KAAM,SACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,WAAYC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGiD,IAAK,IAAKhD,KAAM,QACzD,CAACJ,KAAM,OAAQC,GAAI,GAAIC,GAAI,GAAIC,EAAG,EAAGuE,UAAU,GAAKtE,KAAM,UAGlEuE,GAAI,CACAvF,KAAM,SACNuB,GAAI,UACJZ,SAAU,CACN,CAACC,KAAM,OAAQY,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,EAAG,EAAGX,KAAM,WAC9C,CAACJ,KAAM,OAAQY,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,EAAGX,KAAM,WAC/C,CAACJ,KAAM,OAAQ+B,EAAG,0BAA2B3B,KAAM,OAAQC,OAAQ,UAAWC,YAAa,GAC3F,CAACN,KAAM,OAAQ+B,EAAG,0BAA2B3B,KAAM,OAAQC,OAAQ,UAAWC,YAAa,MCpGjGsE,EACF,iVAQSC,EAAU,CACnBC,GAAI,CACA1F,KAAM,YACNC,IACI,gDACAuF,EADA,miBAURG,GAAI,CACA3F,KAAM,cACNC,IACI,gDACAuF,EADA,s0BCfCI,EAAQ,IACd9F,KACA8C,KACAU,KACAmB,KACAgB,GAOMI,EAAU,CACnB/F,OAAQ,CAACE,KAAM,SAAU8F,YAAa,mBAAoBC,MAAOC,OAAOC,KAAKnG,IAC7E8C,SAAU,CAAC5C,KAAM,WAAY8F,YAAa,iCAAkCC,MAAOC,OAAOC,KAAKrD,IAC/FU,OAAQ,CAACtD,KAAM,SAAU8F,YAAa,kBAAmBC,MAAOC,OAAOC,KAAK3C,IAC5EmB,KAAM,CAACzE,KAAM,qBAAsB8F,YAAa,mCAAoCC,MAAOC,OAAOC,KAAKxB,IACvGgB,QAAS,CAACzF,KAAM,UAAW8F,YAAa,uCAAwCC,MAAOC,OAAOC,KAAKR,KCfvG,IAAIS,EAAW,EAoDf,SAASC,EAAIC,GACT,OAAOC,OAAOD,GAAGE,QAAQ,KAAM,SACnC,CAwCA,SAASC,EAAaC,GAClB,MAAMxF,OAAkByF,IAAXD,EAAExF,KAAqB,UAAUmF,EAAIK,EAAExF,SAAW,GACzDC,EAASuF,EAAEvF,OAAS,YAAYkF,EAAIK,EAAEvF,WAAa,GACnDyF,OAAuBD,IAAlBD,EAAEtF,YAA4B,kBAAkBsF,EAAEtF,eAAiB,GACxEyF,EAAQ1F,EAASyF,GAAMzF,IAAWuF,EAAExF,KAAO,eAAiB,IAClE,OAAQwF,EAAE5F,MACN,IAAK,OACD,MAAO,YAAY4F,EAAEhF,SAASgF,EAAE/E,aAAa+E,EAAE9E,cAAc8E,EAAE7E,KAAK6E,EAAEjC,GAAK,QAAQiC,EAAEjC,MAAQ,KAAKvD,IAAO2F,MAC7G,IAAK,SACD,MAAO,eAAeH,EAAE3F,WAAW2F,EAAE1F,UAAU0F,EAAEzF,KAAKC,IAAO2F,MACjE,IAAK,UACD,MAAO,gBAAgBH,EAAE3F,WAAW2F,EAAE1F,WAAW0F,EAAEjC,WAAWiC,EAAEhC,MAAMxD,IAAO2F,MACjF,IAAK,OACD,MAAO,aAAaH,EAAErC,WAAWqC,EAAEpC,WAAWoC,EAAEnC,WAAWmC,EAAElC,MAAMrD,IAASyF,MAChF,IAAK,OACD,MAAO,YAAYF,EAAE7D,KAAK3B,IAAO2F,MACrC,IAAK,OACD,MAAO,YA/FZ,SAAkB9F,EAAIC,EAAI8F,EAAQC,EAAS,EAAGC,EAAa,KAAOxB,GAAW,IAChF,MAAMyB,EAASH,EAASE,EAClBE,EAAOC,KAAKC,GAAKL,EACjBM,EAAS7B,EAAW2B,KAAKC,GAAM,IACrC,IAAIvE,EAAI,GACR,IAAK,IAAIyE,EAAI,EAAGA,EAAa,EAATP,EAAYO,IAAK,CACjC,MAAMrG,EAAIqG,EAAI,GAAM,EAAIR,EAASG,EAC3BM,EAAIF,EAAQC,EAAIJ,EAGtBrE,IAAY,IAANyE,EAAU,IAAM,MAFXvG,EAAKE,EAAIkG,KAAKK,IAAID,IAAIE,QAAQ,GAER,KADtBzG,EAAKC,EAAIkG,KAAKO,IAAIH,IAAIE,QAAQ,EAE7C,CACA,OAAO5E,EAAI,GACf,CAkF+B8E,CAASjB,EAAE3F,GAAI2F,EAAE1F,GAAI0F,EAAEzF,EAAGyF,EAAEK,QAAU,EAAGL,EAAEM,YAAc,UAAsBL,IAAfD,EAAElB,UAAyB,GAAMkB,EAAElB,aAAatE,GAAQ,iBAAiB2F,MAChK,IAAK,WACD,MAAO,YAzEZ,SAAsB9F,EAAIC,EAAIC,EAAGiD,EAAU,IAAJjD,GAC1C,MAAM2G,EAAKT,KAAKU,KAAK3D,EAAMA,EAAMjD,EAAIA,GAC/B6G,GAAO9G,EAAKC,GAAGwG,QAAQ,GACvBM,GAAO/G,EAAKC,GAAGwG,QAAQ,GACvB/F,EAAIX,EAAG0G,QAAQ,GACrB,MAAO,IAAI/F,KAAKoG,MAAQ7G,KAAKA,WAAWS,KAAKqG,MAAQH,EAAGH,QAAQ,MAAMG,EAAGH,QAAQ,YAAY/F,KAAKoG,IACtG,CAmE+BE,CAAatB,EAAE3F,GAAI2F,EAAE1F,GAAI0F,EAAEzF,EAAGyF,EAAExC,QAAQhD,GAAQ,iBAAiB2F,MACxF,IAAK,QACD,MAAO,KAAKH,EAAEuB,UAAY,eAAe5B,EAAIK,EAAEuB,cAAgB,OAAOvB,EAAE3B,UAAY,IAAImD,IAAIzB,GAAc0B,KAAK,UACnH,QACI,MAAO,GAEnB,CAEA,SAASC,EAAWC,GAChB,GAAIA,EAAIlI,IACJ,OAAOkI,EAAIlI,IAEf,IAAImI,EAAM,GAaV,OAZID,EAAIhI,UACJiI,GAvER,UAAsBhI,IAACA,EAAM,IAAGC,OAAEA,EAAS,GAAEI,QAAEA,EAAU,OACrD,MAAM4H,EAAQ5H,EAAUA,EAAQ6H,OAAO,CAACjB,EAAGkB,IAAMlB,EAAIkB,EAAG,GAAKlI,EAAOmI,OACpE,IAAIC,EAAS,EACTL,EAAM,GAcV,OAbA/H,EAAOqI,QAAQ,CAAC3G,EAAQqF,KACpB,MAAM1F,EAAIjB,EAAUA,EAAQ2G,GAAK,EACjC,GAAY,MAARhH,EAAa,CACb,MACMuI,EAAS,GAAKjH,EAAK2G,EACzBD,GAAO,aAFI,GAAKK,EAAUJ,GAELd,QAAQ,oBAAoBoB,EAAMpB,QAAQ,yBAAyBpB,EAAIpE,OAChG,KAAO,CACH,MACM6G,EAAU,GAAKlH,EAAK2G,EAC1BD,GAAO,mBAFI,GAAKK,EAAUJ,GAECd,QAAQ,0BAA0BqB,EAAOrB,QAAQ,aAAapB,EAAIpE,OACjG,CACA0G,GAAU/G,IAEP0G,CACX,CAqDeS,CAAaV,EAAIhI,UAExBgI,EAAIrG,QACJsG,GAnDR,UAAoB7G,GAACA,EAAEQ,OAAEA,EAAME,OAAEA,EAAS,KAAI6G,UAAEA,EAAY,IACxD,MAAMC,EAAID,EAEJE,EAAK,GAAKD,EAAI,EACpB,IAAIX,EAAM,kDAAkDjC,EAAI5E,QAChE,GAAIU,EAAQ,CACR,MAAMsG,EAAI,EACVH,GAAO,YALA,GAKiBG,mBAAmBQ,EAAQ,EAAJR,wBAA4BpC,EAAIlE,QAC/EmG,GAAO,kBAAkBY,EAAKT,yBAAyBQ,EAAQ,EAAJR,YAAgBpC,EAAIlE,OACnF,CAGA,OAFAmG,GAAO,6BAAgCW,wBAAwB5C,EAAIpE,QACnEqG,GAAO,kBAAkBY,yBAA0BD,YAAY5C,EAAIpE,QAC5DqG,CACX,CAsCea,CAAWd,EAAIrG,SAEtBqG,EAAI5G,IAAO4G,EAAIhI,SAAYgI,EAAIrG,QAC/BsG,EAAM,kDAAkDjC,EAAIgC,EAAI5G,SAAW6G,GAE3ED,EAAIxH,WACJyH,GAAOD,EAAIxH,SAASqH,IAAIzB,GAAc0B,KAAK,KAExCG,CACX,CAMA,MAAMc,EACF,WAAAC,GACIC,KAAKC,OAAS,IAAIC,GAClBF,KAAKG,SAAW,IAAI1D,GACpBuD,KAAKI,OAAS,CAAA,CAClB,CAEA,OAAAC,CAAQC,GACJ,QAA0BjD,IAAtB2C,KAAKI,OAAOE,GACZ,OAAON,KAAKI,OAAOE,GAEvB,MAAMvB,EAAMiB,KAAKC,OAAOK,GAClBC,EAASxB,EAAMD,EAAWC,GAAO,KAEvC,OADAiB,KAAKI,OAAOE,GAAQC,EACbA,CACX,CAgBA,MAAAC,CAAOF,EAAMG,EAAU,IACnBH,EAAOrD,OAAOqD,GAAQ,IAAII,cAC1B,MAAM3B,EAAMiB,KAAKC,OAAOK,GACxB,IAAKvB,EAED,OADA4B,QAAQC,KAAK,SAASN,gBACf,KAGX,MAAMO,KACFA,EAAO,GAAEtB,MACTA,EAAQ,KAAIC,OACZA,EAAS,KAAIsB,MACbA,EAAQ,OAAMjI,OACdA,GAAS,EACTkI,MAAOC,EAAY,GAAEC,MACrBA,EAAQ,KAAIC,MACZA,EAAQ,CAAA,GACRT,EAEEU,EAA0B,WAAVL,GAAgC,WAAVA,EACtCvI,EAAIiH,GAAUqB,EACdvI,EAAIiH,IAAU4B,EAAgB5I,EAAQ,IAAJA,GAElC1B,EAAMuK,SAASC,gBA3MX,6BA2MsC,OAChDxK,EAAIyK,aAAa,UAAWH,EA1Mb,aADP,aA4MRtK,EAAIyK,aAAa,QAAShJ,GAC1BzB,EAAIyK,aAAa,SAAU/I,GAC3B1B,EAAIyK,aAAa,OAAQ,OAEzB,MAAMC,EAAQN,GAASlC,EAAInI,MAAQ0J,EAAKkB,cACxC3K,EAAIyK,aAAa,aAAcC,GAE/B,MAAME,EAAU,CAAC,UAAW,WAAWX,KACnCE,GACAS,EAAQC,KAAKV,GAEjBnK,EAAIyK,aAAa,QAASG,EAAQ5C,KAAK,MAEvCjC,OAAO+E,QAAQT,GAAO5B,QAAQ,EAAEsC,EAAG5E,KAAOnG,EAAIyK,aAAaM,EAAG5E,IAE9D,MAAM6E,EAAS,mBAAkB/E,EACjC,IAAIgF,EAAQ,UAAU/E,EAAIwE,aAC1B,MAAMQ,EAAO/B,KAAKK,QAAQC,IAAS,GAEnC,GAAc,WAAVQ,GAGA,GAFAgB,GAAS,uBAAuBD,wDAChCC,GAAS,sBAAsBD,OAAYE,QACvClJ,EAAQ,CAERiJ,GAAS,yDAAyD/E,EADrC,iBAAXlE,EAAsBA,EAAS,2CAErD,OACG,GAAc,YAAViI,GAGP,GAFAgB,GAAS,uBAAuBD,yEAChCC,GAAS,sBAAsBD,OAAYE,QACvClJ,EAAQ,CAERiJ,GAAS,oFAAoF/E,EADhE,iBAAXlE,EAAsBA,EAAS,2CAErD,OAGA,GADAiJ,GAASC,EACLlJ,EAAQ,CACR,MAAMmJ,EAAuB,iBAAXnJ,EAAsBA,EAAS,mBAC3CoJ,EAAKd,EAAgB,CAAC/I,EAAG,KAAMC,EAAG,GAAKC,EAAG,GAAIC,EAAG,IAAM,CAACH,EAAG,GAAKC,EAAG,GAAKC,EAAG,GAAIC,EAAG,IACxFuJ,GAAS,YAAYG,EAAG7J,SAAS6J,EAAG5J,aAAa4J,EAAG3J,cAAc2J,EAAG1J,0BAA0BwE,EAAIiF,wBACvG,CAIJ,OADAnL,EAAIqL,UAAYJ,EACTjL,CACX,CAQA,IAAAsL,CAAK7B,EAAMG,EAAU,IACjB,MAAM5J,EAAMmJ,KAAKQ,OAAOF,EAAMG,GAC9B,IAAK5J,EACD,MAAO,GAEX,MAAMuL,EAAYhB,SAASiB,cAAc,OAEzC,OADAD,EAAUE,YAAYzL,GACfuL,EAAUF,SACrB,CAUA,MAAAK,CAAOC,EAAQlC,EAAMG,EAAU,CAAA,GAC3B,MAAMgC,SAACA,EAAW,aAAcC,GAAiBjC,EAC3CkC,EAA4B,iBAAXH,EAAsBpB,SAASwB,cAAcJ,GAAUA,EAC9E,IAAKG,EAED,OADAhC,QAAQC,KAAK,6BAA6B4B,KACnC,KAEX,MAAM3L,EAAMmJ,KAAKQ,OAAOF,EAAMoC,GAC9B,OAAK7L,GAGY,WAAb4L,EACAE,EAAQL,YAAYzL,GACA,YAAb4L,GACPE,EAAQT,UAAY,GACpBS,EAAQL,YAAYzL,IAEpB8L,EAAQE,aAAahM,EAAK8L,EAAQG,YAE/BjM,GAVI,IAWf,CASA,IAAAkM,CAAKX,EAAYhB,UACb,MAAM4B,EAA4B,iBAAdZ,EAAyBhB,SAASwB,cAAcR,GAAaA,EACjF,IAAKY,EACD,OAAO,EAEX,MAAMC,EAAWD,EAAKE,iBAAiB,0CACvC,IAAIC,EAAQ,EA2BZ,OA1BAF,EAAS3D,QAAQ8D,IACb,GAAiC,QAA7BA,EAAGC,QAAQ3C,eAA2B0C,EAAGR,cAAc,OACvD,OAEJ,MAAMtC,EAAO8C,EAAGE,QAAQC,KAClB1C,EAAO2C,SAASJ,EAAGE,QAAQG,SAAU,KAAO,GAC5C3C,EAAQsC,EAAGE,QAAQI,WAAa,OAChC1C,EAAYoC,EAAGE,QAAQK,WAAa,GACpC9K,OAAmCwE,IAA1B+F,EAAGE,QAAQM,aACO,KAA1BR,EAAGE,QAAQM,YAA+C,SAA1BR,EAAGE,QAAQM,YAA+BR,EAAGE,QAAQM,YAEtF3C,EAAQmC,EAAGE,QAAQO,WAAa,KAEhChN,EAAMmJ,KAAKQ,OAAOF,EAAM,CAACO,OAAMC,QAAOC,MAAOC,EAAWnI,SAAQoI,UAClEpK,GACIuM,EAAGpC,WACHnK,EAAIiN,UAAUC,OAAOX,EAAGpC,UAAUgD,MAAM,KAAKC,OAAOC,UAExDrN,EAAIyK,aAAa,YAAahB,GAC9BzJ,EAAIyK,aAAa,sBAAuB,QACxC8B,EAAGe,YAAYtN,GACfsM,KAEAC,EAAG9B,aAAa,sBAAuB,UAGxC6B,CACX,CAQA,QAAAiB,CAAS9D,EAAM+D,GACX,IAAK/D,IAAS+D,EAEV,OADA1D,QAAQC,KAAK,2DACNZ,KAEXM,EAAOrD,OAAOqD,GAAMI,cACpBV,KAAKC,OAAOK,GAAQ+D,SACbrE,KAAKI,OAAOE,GAEnB,MAAMgE,EAASD,EAAWC,QAAU,SAOpC,OANKtE,KAAKG,SAASmE,KACftE,KAAKG,SAASmE,GAAU,CAAC1N,KAAM0N,EAAOC,OAAO,GAAG/C,cAAgB8C,EAAOE,MAAM,GAAI7H,MAAO,KAEvFqD,KAAKG,SAASmE,GAAQ3H,MAAM8H,SAASnE,IACtCN,KAAKG,SAASmE,GAAQ3H,MAAM+E,KAAKpB,GAE9BN,IACX,CAOA,UAAA0E,CAAWpE,GAEP,OADAA,EAAOrD,OAAOqD,GAAQ,IAAII,gBACtBV,KAAKC,OAAOK,YACLN,KAAKC,OAAOK,UACZN,KAAKI,OAAOE,GACnB1D,OAAO+H,OAAO3E,KAAKG,UAAUb,QAAQ3H,IACjC,MAAMqG,EAAIrG,EAAEgF,MAAMiI,QAAQtE,GACtBtC,GAAI,GACJrG,EAAEgF,MAAMkI,OAAO7G,EAAG,MAGnB,EAGf,CAOA,GAAA8G,CAAIxE,GACA,QAASN,KAAKC,OAAOhD,OAAOqD,GAAQ,IAAII,cAC5C,CAOA,GAAAqE,CAAIzE,GACA,OAAON,KAAKC,OAAOhD,OAAOqD,GAAQ,IAAII,gBAAkB,IAC5D,CAOA,IAAA9J,CAAK0J,GACD,MAAMvB,EAAMiB,KAAK+E,IAAIzE,GACrB,OAAOvB,EAAMA,EAAInI,KAAO,IAC5B,CAOA,IAAAoO,CAAKV,EAAS,MACV,OAAIA,GAAUtE,KAAKG,SAASmE,GACjB,IAAItE,KAAKG,SAASmE,GAAQ3H,OAE9BC,OAAOC,KAAKmD,KAAKC,OAC5B,CAMA,WAAAgF,GACI,MAAO,IAAIjF,KAAKG,SACpB,CAMA,KAAAgD,GACI,OAAOvG,OAAOC,KAAKmD,KAAKC,QAAQb,MACpC,CAOA,MAAA8F,CAAOC,GACH,MAAMC,EAAInI,OAAOkI,GAAS,IAAIzE,cAAc2E,OAC5C,OAAKD,EAGExI,OAAOC,KAAKmD,KAAKC,QAAQgE,OAAO3D,GACnCA,EAAKmE,SAASW,KAAOpF,KAAKC,OAAOK,GAAM1J,MAAQ,IAAI8J,cAAc+D,SAASW,IAHnE,EAKf,EAGC,MAAC5I,EAAQ,IAAIsD,EC1cI,oBAAXwF,QAA0BA,OAAOC,QACxCD,OAAOC,MAAM/I,MAAQA,EACrB8I,OAAOC,MAAMC,GAAKhJ,GAIA,oBAAX8I,SACPA,OAAOE,GAAKhJ"}
1
+ {"version":3,"file":"domma-flags.esm.js","sources":["../assets/flags/europe.js","../assets/flags/americas.js","../assets/flags/africa.js","../assets/flags/asia.js","../assets/flags/oceania.js","../assets/flags/index.js","../../src/flags.js","../../src/flags-bundle.js"],"sourcesContent":["/**\n * Domma Flags - Europe\n *\n * Compact flag descriptors expanded to SVG at render time. Canvas is 60×40 (3:2).\n * Complex emblems (coats of arms, etc.) are simplified for icon-scale clarity;\n * override any flag with FL.register(code, def) for a precise rendering.\n */\n\n/** @type {Record<string, import('../../../src/flags.js').FlagDefinition>} */\nexport const europe = {\n gb: {\n name: 'United Kingdom',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#012169\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#fff\" stroke-width=\"8\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#C8102E\" stroke-width=\"4\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#fff\" stroke-width=\"13\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#C8102E\" stroke-width=\"8\"/>'\n },\n fr: {name: 'France', stripes: {dir: 'v', colors: ['#0055A4', '#FFFFFF', '#EF4135']}},\n de: {name: 'Germany', stripes: {dir: 'h', colors: ['#000000', '#DD0000', '#FFCE00']}},\n it: {name: 'Italy', stripes: {dir: 'v', colors: ['#009246', '#FFFFFF', '#CE2B37']}},\n es: {\n name: 'Spain',\n stripes: {dir: 'h', colors: ['#AA151B', '#F1BF00', '#AA151B'], weights: [1, 2, 1]}\n },\n pt: {\n name: 'Portugal',\n stripes: {dir: 'v', colors: ['#006600', '#FF0000'], weights: [2, 3]},\n overlays: [\n {type: 'circle', cx: 24, cy: 20, r: 5, fill: '#FFE936', stroke: '#006600', strokeWidth: 1},\n {type: 'circle', cx: 24, cy: 20, r: 2.4, fill: '#FF0000'}\n ]\n },\n nl: {name: 'Netherlands', stripes: {dir: 'h', colors: ['#AE1C28', '#FFFFFF', '#21468B']}},\n be: {name: 'Belgium', stripes: {dir: 'v', colors: ['#000000', '#FAE042', '#ED2939']}},\n ie: {name: 'Ireland', stripes: {dir: 'v', colors: ['#169B62', '#FFFFFF', '#FF883E']}},\n ch: {\n name: 'Switzerland',\n bg: '#FF0000',\n overlays: [\n {type: 'rect', x: 27, y: 11, w: 6, h: 18, fill: '#fff'},\n {type: 'rect', x: 21, y: 17, w: 18, h: 6, fill: '#fff'}\n ]\n },\n at: {name: 'Austria', stripes: {dir: 'h', colors: ['#ED2939', '#FFFFFF', '#ED2939']}},\n se: {name: 'Sweden', cross: {bg: '#006AA7', colour: '#FECC00'}},\n no: {name: 'Norway', cross: {bg: '#BA0C2F', border: '#FFFFFF', colour: '#00205B'}},\n dk: {name: 'Denmark', cross: {bg: '#C60C30', colour: '#FFFFFF'}},\n fi: {name: 'Finland', cross: {bg: '#FFFFFF', colour: '#003580'}},\n is: {name: 'Iceland', cross: {bg: '#02529C', border: '#FFFFFF', colour: '#DC1E35'}},\n pl: {name: 'Poland', stripes: {dir: 'h', colors: ['#FFFFFF', '#DC143C']}},\n ua: {name: 'Ukraine', stripes: {dir: 'h', colors: ['#0057B7', '#FFD700']}},\n gr: {\n name: 'Greece',\n stripes: {\n dir: 'h',\n colors: ['#0D5EAF', '#fff', '#0D5EAF', '#fff', '#0D5EAF', '#fff', '#0D5EAF', '#fff', '#0D5EAF']\n },\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 22.22, h: 22.22, fill: '#0D5EAF'},\n {type: 'rect', x: 8.9, y: 0, w: 4.44, h: 22.22, fill: '#fff'},\n {type: 'rect', x: 0, y: 8.9, w: 22.22, h: 4.44, fill: '#fff'}\n ]\n },\n hr: {name: 'Croatia', stripes: {dir: 'h', colors: ['#FF0000', '#FFFFFF', '#171796']}},\n ru: {name: 'Russia', stripes: {dir: 'h', colors: ['#FFFFFF', '#0039A6', '#D52B1E']}},\n cz: {\n name: 'Czechia',\n stripes: {dir: 'h', colors: ['#FFFFFF', '#D7141A']},\n overlays: [{type: 'path', d: 'M0,0 L30,20 L0,40 Z', fill: '#11457E'}]\n }\n};\n","/**\n * Domma Flags - Americas\n * Canvas 60×40 (3:2). Complex emblems simplified for icon-scale clarity.\n */\n\n/** @type {Record<string, import('../../../src/flags.js').FlagDefinition>} */\nexport const americas = {\n us: {\n name: 'United States',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#fff\"/>' +\n '<g fill=\"#B22234\">' +\n '<rect y=\"0\" width=\"60\" height=\"3.08\"/><rect y=\"6.15\" width=\"60\" height=\"3.08\"/>' +\n '<rect y=\"12.31\" width=\"60\" height=\"3.08\"/><rect y=\"18.46\" width=\"60\" height=\"3.08\"/>' +\n '<rect y=\"24.62\" width=\"60\" height=\"3.08\"/><rect y=\"30.77\" width=\"60\" height=\"3.08\"/>' +\n '<rect y=\"36.92\" width=\"60\" height=\"3.08\"/></g>' +\n '<rect width=\"24\" height=\"21.54\" fill=\"#3C3B6E\"/>' +\n '<g fill=\"#fff\">' +\n '<circle cx=\"3\" cy=\"3\" r=\"0.9\"/><circle cx=\"7\" cy=\"3\" r=\"0.9\"/><circle cx=\"11\" cy=\"3\" r=\"0.9\"/>' +\n '<circle cx=\"15\" cy=\"3\" r=\"0.9\"/><circle cx=\"19\" cy=\"3\" r=\"0.9\"/>' +\n '<circle cx=\"5\" cy=\"6\" r=\"0.9\"/><circle cx=\"9\" cy=\"6\" r=\"0.9\"/><circle cx=\"13\" cy=\"6\" r=\"0.9\"/>' +\n '<circle cx=\"17\" cy=\"6\" r=\"0.9\"/><circle cx=\"21\" cy=\"6\" r=\"0.9\"/>' +\n '<circle cx=\"3\" cy=\"9\" r=\"0.9\"/><circle cx=\"7\" cy=\"9\" r=\"0.9\"/><circle cx=\"11\" cy=\"9\" r=\"0.9\"/>' +\n '<circle cx=\"15\" cy=\"9\" r=\"0.9\"/><circle cx=\"19\" cy=\"9\" r=\"0.9\"/>' +\n '<circle cx=\"5\" cy=\"12\" r=\"0.9\"/><circle cx=\"9\" cy=\"12\" r=\"0.9\"/><circle cx=\"13\" cy=\"12\" r=\"0.9\"/>' +\n '<circle cx=\"17\" cy=\"12\" r=\"0.9\"/><circle cx=\"21\" cy=\"12\" r=\"0.9\"/>' +\n '<circle cx=\"3\" cy=\"15\" r=\"0.9\"/><circle cx=\"7\" cy=\"15\" r=\"0.9\"/><circle cx=\"11\" cy=\"15\" r=\"0.9\"/>' +\n '<circle cx=\"15\" cy=\"15\" r=\"0.9\"/><circle cx=\"19\" cy=\"15\" r=\"0.9\"/>' +\n '<circle cx=\"5\" cy=\"18\" r=\"0.9\"/><circle cx=\"9\" cy=\"18\" r=\"0.9\"/><circle cx=\"13\" cy=\"18\" r=\"0.9\"/>' +\n '<circle cx=\"17\" cy=\"18\" r=\"0.9\"/><circle cx=\"21\" cy=\"18\" r=\"0.9\"/></g>'\n },\n ca: {\n name: 'Canada',\n stripes: {dir: 'v', colors: ['#FF0000', '#FFFFFF', '#FF0000'], weights: [1, 2, 1]},\n overlays: [\n {\n type: 'path',\n fill: '#FF0000',\n 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'\n }\n ]\n },\n br: {\n name: 'Brazil',\n bg: '#009C3B',\n overlays: [\n {type: 'path', d: 'M30,5 L53,20 L30,35 L7,20 Z', fill: '#FFDF00'},\n {type: 'circle', cx: 30, cy: 20, r: 9, fill: '#002776'},\n {type: 'path', d: 'M21.5,17.5 A12,12 0 0 1 38.5,21', fill: 'none', stroke: '#fff', strokeWidth: 1.6},\n {type: 'star', cx: 27, cy: 18, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 33, cy: 17, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 30, cy: 23, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 35, cy: 22, r: 1.1, fill: '#fff'},\n {type: 'star', cx: 25, cy: 22, r: 1.1, fill: '#fff'}\n ]\n },\n ar: {\n name: 'Argentina',\n stripes: {dir: 'h', colors: ['#74ACDF', '#FFFFFF', '#74ACDF']},\n overlays: [{type: 'circle', cx: 30, cy: 20, r: 3.4, fill: '#F6B40E', stroke: '#85340A', strokeWidth: 0.4}]\n },\n mx: {\n name: 'Mexico',\n stripes: {dir: 'v', colors: ['#006847', '#FFFFFF', '#CE1126']},\n overlays: [{type: 'circle', cx: 30, cy: 20, r: 3.2, fill: '#8C9A5B'}]\n },\n cl: {\n name: 'Chile',\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 60, h: 20, fill: '#fff'},\n {type: 'rect', x: 0, y: 20, w: 60, h: 20, fill: '#D52B1E'},\n {type: 'rect', x: 0, y: 0, w: 20, h: 20, fill: '#0039A6'},\n {type: 'star', cx: 10, cy: 10, r: 6, fill: '#fff'}\n ]\n },\n co: {\n name: 'Colombia',\n stripes: {dir: 'h', colors: ['#FCD116', '#003893', '#CE1126'], weights: [2, 1, 1]}\n },\n pe: {name: 'Peru', stripes: {dir: 'v', colors: ['#D91023', '#FFFFFF', '#D91023']}},\n uy: {\n name: 'Uruguay',\n stripes: {\n dir: 'h',\n colors: ['#fff', '#0038A8', '#fff', '#0038A8', '#fff', '#0038A8', '#fff', '#0038A8', '#fff']\n },\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 20, h: 17.78, fill: '#fff'},\n {type: 'circle', cx: 10, cy: 8.9, r: 4.5, fill: '#FCD116', stroke: '#7B3F00', strokeWidth: 0.5}\n ]\n }\n};\n","/**\n * Domma Flags - Africa\n * Canvas 60×40 (3:2). Complex emblems simplified for icon-scale clarity.\n */\n\n/** @type {Record<string, import('../../../src/flags.js').FlagDefinition>} */\nexport const africa = {\n za: {\n name: 'South Africa',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#fff\"/>' +\n '<path d=\"M0,0 H22 L40,20 L22,40 H0 Z\" fill=\"#002395\"/>' +\n '<path d=\"M0,0 L26,20 L0,40 Z\" fill=\"#000\"/>' +\n '<rect x=\"0\" y=\"0\" width=\"60\" height=\"13.3\" fill=\"#DE3831\"/>' +\n '<rect x=\"0\" y=\"26.7\" width=\"60\" height=\"13.3\" fill=\"#002395\"/>' +\n '<path d=\"M0,0 L26,20 L0,40\" fill=\"none\" stroke=\"#FFB915\" stroke-width=\"3\"/>' +\n '<path d=\"M0,3 L21,20 L0,37\" fill=\"none\" stroke=\"#007749\" stroke-width=\"6\"/>' +\n '<path d=\"M-1,13.3 H60 M-1,26.7 H60\" stroke=\"#fff\" stroke-width=\"0\"/>' +\n '<rect x=\"26\" y=\"14.8\" width=\"34\" height=\"10.4\" fill=\"#007749\"/>' +\n '<path d=\"M0,6 L18,20 L0,34\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.5\"/>'\n },\n ng: {name: 'Nigeria', stripes: {dir: 'v', colors: ['#008751', '#FFFFFF', '#008751']}},\n gh: {\n name: 'Ghana',\n stripes: {dir: 'h', colors: ['#CE1126', '#FCD116', '#006B3F']},\n overlays: [{type: 'star', cx: 30, cy: 20, r: 5, fill: '#000'}]\n },\n eg: {\n name: 'Egypt',\n stripes: {dir: 'h', colors: ['#CE1126', '#FFFFFF', '#000000']},\n 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'}]\n },\n ma: {\n name: 'Morocco',\n bg: '#C1272D',\n overlays: [{type: 'star', cx: 30, cy: 20, r: 8, fill: 'none', stroke: '#006233', strokeWidth: 1.6}]\n },\n sn: {\n name: 'Senegal',\n stripes: {dir: 'v', colors: ['#00853F', '#FDEF42', '#E31B23']},\n overlays: [{type: 'star', cx: 30, cy: 20, r: 4.5, fill: '#00853F'}]\n },\n ci: {name: 'Ivory Coast', stripes: {dir: 'v', colors: ['#F77F00', '#FFFFFF', '#009E60']}},\n cm: {\n name: 'Cameroon',\n stripes: {dir: 'v', colors: ['#007A5E', '#CE1126', '#FCD116']},\n overlays: [{type: 'star', cx: 30, cy: 20, r: 4, fill: '#FCD116'}]\n },\n dz: {\n name: 'Algeria',\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 30, h: 40, fill: '#006233'},\n {type: 'rect', x: 30, y: 0, w: 30, h: 40, fill: '#fff'},\n {type: 'crescent', cx: 28, cy: 20, r: 7, off: 3, fill: '#D21034'},\n {type: 'star', cx: 36, cy: 20, r: 4, fill: '#D21034'}\n ]\n },\n tn: {\n name: 'Tunisia',\n bg: '#E70013',\n overlays: [\n {type: 'circle', cx: 30, cy: 20, r: 9, fill: '#fff'},\n {type: 'crescent', cx: 31, cy: 20, r: 5.5, off: 2.6, fill: '#E70013'},\n {type: 'star', cx: 33, cy: 20, r: 3, fill: '#E70013'}\n ]\n },\n ke: {\n name: 'Kenya',\n stripes: {\n dir: 'h',\n colors: ['#000000', '#fff', '#BB0000', '#fff', '#006600'],\n weights: [12, 1, 12, 1, 12]\n },\n overlays: [\n {type: 'line', x1: 24, y1: 8, x2: 36, y2: 32, stroke: '#000', strokeWidth: 1},\n {type: 'line', x1: 36, y1: 8, x2: 24, y2: 32, stroke: '#000', strokeWidth: 1},\n {type: 'ellipse', cx: 30, cy: 20, rx: 4, ry: 8, fill: '#fff'},\n {type: 'ellipse', cx: 30, cy: 20, rx: 2.6, ry: 6.4, fill: '#BB0000'}\n ]\n }\n};\n","/**\n * Domma Flags - Asia & Middle East\n * Canvas 60×40 (3:2). Complex emblems simplified for icon-scale clarity.\n */\n\n/** @type {Record<string, import('../../../src/flags.js').FlagDefinition>} */\nexport const asia = {\n jp: {\n name: 'Japan',\n bg: '#FFFFFF',\n overlays: [{type: 'circle', cx: 30, cy: 20, r: 10, fill: '#BC002D'}]\n },\n cn: {\n name: 'China',\n bg: '#DE2910',\n overlays: [\n {type: 'star', cx: 12, cy: 11, r: 6, fill: '#FFDE00'},\n {type: 'star', cx: 22, cy: 5, r: 2, fill: '#FFDE00'},\n {type: 'star', cx: 26, cy: 9, r: 2, fill: '#FFDE00'},\n {type: 'star', cx: 26, cy: 15, r: 2, fill: '#FFDE00'},\n {type: 'star', cx: 22, cy: 19, r: 2, fill: '#FFDE00'}\n ]\n },\n kr: {\n name: 'South Korea',\n bg: '#FFFFFF',\n overlays: [\n {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'},\n {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'},\n {type: 'circle', cx: 30, cy: 16.5, r: 3.5, fill: '#CD2E3A'},\n {type: 'circle', cx: 30, cy: 23.5, r: 3.5, fill: '#0047A0'},\n {type: 'group', children: [\n {type: 'rect', x: 9, y: 8, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 9, y: 10.4, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 9, y: 12.8, w: 7, h: 1.3, fill: '#000'}\n ]},\n {type: 'group', children: [\n {type: 'rect', x: 44, y: 8, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 44, y: 10.4, w: 7, h: 1.3, fill: '#000'},\n {type: 'rect', x: 44, y: 12.8, w: 7, h: 1.3, fill: '#000'}\n ]}\n ]\n },\n in: {\n name: 'India',\n stripes: {dir: 'h', colors: ['#FF9933', '#FFFFFF', '#138808']},\n overlays: [\n {type: 'circle', cx: 30, cy: 20, r: 5, fill: 'none', stroke: '#000080', strokeWidth: 0.8},\n {type: 'circle', cx: 30, cy: 20, r: 1, fill: '#000080'},\n {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: 0.5}\n ]\n },\n sa: {\n name: 'Saudi Arabia',\n bg: '#006C35',\n overlays: [\n {type: 'rect', x: 10, y: 26, w: 40, h: 1.6, fill: '#fff'},\n {type: 'path', d: 'M10,26.8 l4,-2 v4 z', fill: '#fff'},\n {type: 'rect', x: 14, y: 14, w: 32, h: 5, fill: 'none'}\n ]\n },\n ae: {\n name: 'United Arab Emirates',\n overlays: [\n {type: 'rect', x: 0, y: 0, w: 60, h: 13.33, fill: '#00732F'},\n {type: 'rect', x: 0, y: 13.33, w: 60, h: 13.33, fill: '#fff'},\n {type: 'rect', x: 0, y: 26.66, w: 60, h: 13.34, fill: '#000'},\n {type: 'rect', x: 0, y: 0, w: 15, h: 40, fill: '#FF0000'}\n ]\n },\n qa: {\n name: 'Qatar',\n bg: '#FFFFFF',\n overlays: [\n {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'}\n ]\n },\n id: {name: 'Indonesia', stripes: {dir: 'h', colors: ['#FF0000', '#FFFFFF']}},\n th: {\n name: 'Thailand',\n stripes: {\n dir: 'h',\n colors: ['#A51931', '#F4F5F8', '#2D2A4A', '#F4F5F8', '#A51931'],\n weights: [1, 1, 2, 1, 1]\n }\n },\n vn: {\n name: 'Vietnam',\n bg: '#DA251D',\n overlays: [{type: 'star', cx: 30, cy: 20, r: 9, fill: '#FFFF00'}]\n },\n tr: {\n name: 'Turkey',\n bg: '#E30A17',\n overlays: [\n {type: 'crescent', cx: 24, cy: 20, r: 8, off: 3.2, fill: '#fff'},\n {type: 'star', cx: 35, cy: 20, r: 4, rotation: -54, fill: '#fff'}\n ]\n },\n il: {\n name: 'Israel',\n bg: '#FFFFFF',\n overlays: [\n {type: 'rect', x: 0, y: 4, w: 60, h: 4, fill: '#0038B8'},\n {type: 'rect', x: 0, y: 32, w: 60, h: 4, fill: '#0038B8'},\n {type: 'path', d: 'M30,13 L33.5,19 H26.5 Z', fill: 'none', stroke: '#0038B8', strokeWidth: 1},\n {type: 'path', d: 'M30,27 L33.5,21 H26.5 Z', fill: 'none', stroke: '#0038B8', strokeWidth: 1}\n ]\n }\n};\n","/**\n * Domma Flags - Oceania\n * Canvas 60×40 (3:2). The Union canton reuses a scaled Union Jack group.\n */\n\nconst UNION_CANTON =\n '<g transform=\"scale(0.5)\">' +\n '<rect width=\"60\" height=\"40\" fill=\"#012169\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#fff\" stroke-width=\"8\"/>' +\n '<path d=\"M0,0 60,40 M60,0 0,40\" stroke=\"#C8102E\" stroke-width=\"4\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#fff\" stroke-width=\"13\"/>' +\n '<path d=\"M30,0 V40 M0,20 H60\" stroke=\"#C8102E\" stroke-width=\"8\"/>' +\n '</g>';\n\n/** @type {Record<string, import('../../../src/flags.js').FlagDefinition>} */\nexport const oceania = {\n au: {\n name: 'Australia',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#012169\"/>' +\n UNION_CANTON +\n '<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\"/>' +\n '<g fill=\"#fff\">' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<circle cx=\"49\" cy=\"24\" r=\"1.2\"/></g>'\n },\n nz: {\n name: 'New Zealand',\n svg:\n '<rect width=\"60\" height=\"40\" fill=\"#00247D\"/>' +\n UNION_CANTON +\n '<g>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '<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\"/>' +\n '</g>'\n }\n};\n","/**\n * Domma Flags\n * Aggregates nation-flag descriptors into a single registry, keyed by\n * ISO 3166-1 alpha-2 code, grouped by region.\n *\n * This is a curated starter set covering the major footballing and world\n * nations. It is easily extended at runtime with FL.register(code, def).\n */\n\nimport {europe} from './europe.js';\nimport {americas} from './americas.js';\nimport {africa} from './africa.js';\nimport {asia} from './asia.js';\nimport {oceania} from './oceania.js';\n\n// Merge all regions into a single registry\n/** @type {Record<string, import('../../../src/flags.js').FlagDefinition>} */\nexport const flags = {\n ...europe,\n ...americas,\n ...africa,\n ...asia,\n ...oceania\n};\n\n// Export region groups for selective imports\nexport {europe, americas, africa, asia, oceania};\n\n// Region metadata for the flag gallery\n/** @type {Record<string, import('../../../src/flags.js').FlagRegionMeta>} */\nexport const regions = {\n europe: {name: 'Europe', description: 'European nations', codes: Object.keys(europe)},\n americas: {name: 'Americas', description: 'North, Central & South America', codes: Object.keys(americas)},\n africa: {name: 'Africa', description: 'African nations', codes: Object.keys(africa)},\n asia: {name: 'Asia & Middle East', description: 'Asian and Middle Eastern nations', codes: Object.keys(asia)},\n oceania: {name: 'Oceania', description: 'Australia, New Zealand & the Pacific', codes: Object.keys(oceania)}\n};\n\nexport default flags;\n","/**\n * Domma Flags Registry\n *\n * Renders nation flags as inline SVG. Flags are stored as compact descriptors\n * (stripe/cross/overlay specs or raw SVG) and expanded to SVG markup lazily on\n * first render, then memoised - nothing touches the DOM until a flag is actually\n * requested. Keyed by ISO 3166-1 alpha-2 code (e.g. 'gb', 'us', 'fr').\n *\n * Opt-in module: ships as a separate bundle (domma-flags) and is NOT part of the\n * core domma bundle. Attaches to Domma.flags / window.FL when loaded.\n */\n\nimport {flags as defaultFlags, regions} from '../public/assets/flags/index.js';\n\nconst NAMESPACE = 'http://www.w3.org/2000/svg';\nconst VIEWBOX = '0 0 60 40'; // canonical 3:2 flag canvas\nconst SQUARE_VIEWBOX = '10 0 40 40'; // centre-cropped 1:1 slice\n\nlet _clipSeq = 0;\n\n/**\n * Region group a flag is listed under; registered flags default to 'custom'.\n * @typedef {'europe'|'americas'|'africa'|'asia'|'oceania'|'custom'|(string & {})} FlagRegion\n */\n\n/** @typedef {'rect'|'rounded'|'square'|'circle'} FlagShape */\n\n/**\n * A single overlay primitive used to compose a flag (on the 60x40 canvas). Which coordinates\n * are read depends on `type`: rect (x, y, w, h, rx), circle (cx, cy, r), ellipse (cx, cy, rx, ry),\n * line (x1, y1, x2, y2), path (d), star (cx, cy, r, points, innerRatio, rotation),\n * crescent (cx, cy, r, off), group (transform, children).\n * @typedef {object} FlagOverlay\n * @property {'rect'|'circle'|'ellipse'|'line'|'path'|'star'|'crescent'|'group'} type\n * @property {string} [fill]\n * @property {string} [stroke]\n * @property {number} [strokeWidth]\n * @property {number} [x]\n * @property {number} [y]\n * @property {number} [w]\n * @property {number} [h]\n * @property {number} [rx]\n * @property {number} [ry]\n * @property {number} [cx]\n * @property {number} [cy]\n * @property {number} [r]\n * @property {number} [x1]\n * @property {number} [y1]\n * @property {number} [x2]\n * @property {number} [y2]\n * @property {string} [d] Path data\n * @property {number} [points] Star points (default 5)\n * @property {number} [innerRatio] Star inner radius as a fraction of outer (default 0.382)\n * @property {number} [rotation] Star rotation in degrees (default -90, pointing up)\n * @property {number} [off] Crescent carving-circle offset\n * @property {string} [transform] Group transform\n * @property {FlagOverlay[]} [children] Group members\n */\n\n/**\n * A flag definition - either raw SVG markup or a compact descriptor.\n * @typedef {object} FlagDefinition\n * @property {string} name Country name\n * @property {FlagRegion} [region] Region group (defaults to 'custom' when registered)\n * @property {string} [svg] Raw inner SVG markup (60x40 canvas)\n * @property {string} [bg] Solid background colour\n * @property {{dir?: 'h'|'v', colors: string[], weights?: number[]}} [stripes] Stripe descriptor\n * @property {{bg: string, colour: string, border?: string, thickness?: number}} [cross] Nordic (offset) cross descriptor\n * @property {FlagOverlay[]} [overlays] Overlay primitives drawn on top\n */\n\n/**\n * Options for rendering a flag.\n * @typedef {object} FlagRenderOptions\n * @property {number} [size=24] Height in px (width follows aspect)\n * @property {number} [width] Explicit width override\n * @property {number} [height] Explicit height override\n * @property {FlagShape} [shape='rect'] Output shape\n * @property {boolean|string} [border=false] Add a hairline border (or colour)\n * @property {string} [class] Extra CSS classes\n * @property {string|null} [title] Accessible title (defaults to country name)\n * @property {Record<string, string>} [attrs] Additional attributes\n */\n\n/**\n * Options for `inject()`.\n * @typedef {FlagRenderOptions & {position?: 'prepend'|'append'|'replace'}} FlagInjectOptions\n */\n\n/**\n * @typedef {object} FlagRegionMeta\n * @property {string} name\n * @property {string} [description]\n * @property {string[]} codes\n */\n\n/** The flag registry (FL / Domma.flags). @typedef {FlagRegistry} Flags */\n\n/* -------------------------------------------------------------------------- */\n/* Geometry helpers (shared by descriptor expansion) */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Generate an n-pointed star path.\n * @param {number} cx - Centre x\n * @param {number} cy - Centre y\n * @param {number} outerR - Outer radius\n * @param {number} [points=5] - Number of points\n * @param {number} [innerRatio=0.382] - Inner radius as a fraction of outer\n * @param {number} [rotation=-90] - Rotation in degrees (-90 points up)\n * @returns {string} SVG path data\n */\nexport function starPath(cx, cy, outerR, points = 5, innerRatio = 0.382, rotation = -90) {\n const innerR = outerR * innerRatio;\n const step = Math.PI / points;\n const start = (rotation * Math.PI) / 180;\n let d = '';\n for (let i = 0; i < points * 2; i++) {\n const r = i % 2 === 0 ? outerR : innerR;\n const a = start + i * step;\n const x = (cx + r * Math.cos(a)).toFixed(2);\n const y = (cy + r * Math.sin(a)).toFixed(2);\n d += (i === 0 ? 'M' : 'L') + x + ',' + y;\n }\n return d + 'Z';\n}\n\n/**\n * Generate a crescent path (a lune) opening towards the fly (right).\n * The inner arc passes through the top and bottom of the outer circle.\n * @param {number} cx - Outer circle centre x\n * @param {number} cy - Outer circle centre y\n * @param {number} r - Outer radius\n * @param {number} [off=r*0.45] - Horizontal offset of the carving circle\n * @returns {string} SVG path data\n */\nexport function crescentPath(cx, cy, r, off = r * 0.45) {\n const ri = Math.sqrt(off * off + r * r);\n const top = (cy - r).toFixed(2);\n const bot = (cy + r).toFixed(2);\n const x = cx.toFixed(2);\n return `M${x},${top} A${r},${r} 0 1 0 ${x},${bot} A${ri.toFixed(2)},${ri.toFixed(2)} 0 0 1 ${x},${top}Z`;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Descriptor → SVG markup expansion */\n/* -------------------------------------------------------------------------- */\n\nfunction esc(v) {\n return String(v).replace(/\"/g, '&quot;');\n}\n\nfunction buildStripes({dir = 'h', colors = [], weights = null}) {\n const total = weights ? weights.reduce((a, b) => a + b, 0) : colors.length;\n let offset = 0;\n let out = '';\n colors.forEach((colour, i) => {\n const w = weights ? weights[i] : 1;\n if (dir === 'v') {\n const x = (60 * offset) / total;\n const width = (60 * w) / total;\n out += `<rect x=\"${x.toFixed(3)}\" y=\"0\" width=\"${width.toFixed(3)}\" height=\"40\" fill=\"${esc(colour)}\"/>`;\n } else {\n const y = (40 * offset) / total;\n const height = (40 * w) / total;\n out += `<rect x=\"0\" y=\"${y.toFixed(3)}\" width=\"60\" height=\"${height.toFixed(3)}\" fill=\"${esc(colour)}\"/>`;\n }\n offset += w;\n });\n return out;\n}\n\n/**\n * Nordic (offset) cross - vertical bar sits towards the hoist.\n */\nfunction buildCross({bg, colour, border = null, thickness = 8}) {\n const t = thickness;\n const vx = 16; // vertical bar left edge (hoist-offset)\n const hy = 20 - t / 2; // horizontal bar top edge (centred)\n let out = `<rect x=\"0\" y=\"0\" width=\"60\" height=\"40\" fill=\"${esc(bg)}\"/>`;\n if (border) {\n const b = 2;\n out += `<rect x=\"${vx - b}\" y=\"0\" width=\"${t + b * 2}\" height=\"40\" fill=\"${esc(border)}\"/>`;\n out += `<rect x=\"0\" y=\"${hy - b}\" width=\"60\" height=\"${t + b * 2}\" fill=\"${esc(border)}\"/>`;\n }\n out += `<rect x=\"${vx}\" y=\"0\" width=\"${t}\" height=\"40\" fill=\"${esc(colour)}\"/>`;\n out += `<rect x=\"0\" y=\"${hy}\" width=\"60\" height=\"${t}\" fill=\"${esc(colour)}\"/>`;\n return out;\n}\n\nfunction buildOverlay(o) {\n const fill = o.fill !== undefined ? ` fill=\"${esc(o.fill)}\"` : '';\n const stroke = o.stroke ? ` stroke=\"${esc(o.stroke)}\"` : '';\n const sw = o.strokeWidth !== undefined ? ` stroke-width=\"${o.strokeWidth}\"` : '';\n const extra = stroke + sw + (stroke && !o.fill ? ' fill=\"none\"' : '');\n switch (o.type) {\n case 'rect':\n return `<rect x=\"${o.x}\" y=\"${o.y}\" width=\"${o.w}\" height=\"${o.h}\"${o.rx ? ` rx=\"${o.rx}\"` : ''}${fill}${extra}/>`;\n case 'circle':\n return `<circle cx=\"${o.cx}\" cy=\"${o.cy}\" r=\"${o.r}\"${fill}${extra}/>`;\n case 'ellipse':\n return `<ellipse cx=\"${o.cx}\" cy=\"${o.cy}\" rx=\"${o.rx}\" ry=\"${o.ry}\"${fill}${extra}/>`;\n case 'line':\n return `<line x1=\"${o.x1}\" y1=\"${o.y1}\" x2=\"${o.x2}\" y2=\"${o.y2}\"${stroke}${sw}/>`;\n case 'path':\n return `<path d=\"${o.d}\"${fill}${extra}/>`;\n case 'star':\n return `<path d=\"${starPath(o.cx, o.cy, o.r, o.points || 5, o.innerRatio || 0.382, o.rotation === undefined ? -90 : o.rotation)}\"${fill || ' fill=\"#fff\"'}${extra}/>`;\n case 'crescent':\n return `<path d=\"${crescentPath(o.cx, o.cy, o.r, o.off)}\"${fill || ' fill=\"#fff\"'}${extra}/>`;\n case 'group':\n return `<g${o.transform ? ` transform=\"${esc(o.transform)}\"` : ''}>${(o.children || []).map(buildOverlay).join('')}</g>`;\n default:\n return '';\n }\n}\n\nfunction expandFlag(def) {\n if (def.svg) {\n return def.svg;\n }\n let out = '';\n if (def.stripes) {\n out += buildStripes(def.stripes);\n }\n if (def.cross) {\n out += buildCross(def.cross);\n }\n if (def.bg && !def.stripes && !def.cross) {\n out = `<rect x=\"0\" y=\"0\" width=\"60\" height=\"40\" fill=\"${esc(def.bg)}\"/>` + out;\n }\n if (def.overlays) {\n out += def.overlays.map(buildOverlay).join('');\n }\n return out;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Registry */\n/* -------------------------------------------------------------------------- */\n\nclass FlagRegistry {\n constructor() {\n /** @type {Record<string, FlagDefinition>} @private */\n this._flags = {...defaultFlags};\n /** @type {Record<string, FlagRegionMeta>} @private */\n this._regions = {...regions};\n /** @type {Record<string, string|null>} @private */\n this._cache = {};\n }\n\n /** @private @param {string} code @returns {string|null} */\n _markup(code) {\n if (this._cache[code] !== undefined) {\n return this._cache[code];\n }\n const def = this._flags[code];\n const markup = def ? expandFlag(def) : null;\n this._cache[code] = markup;\n return markup;\n }\n\n /**\n * Render a flag as an SVG element.\n * @param {string} code - ISO 3166-1 alpha-2 code (case-insensitive)\n * @param {FlagRenderOptions} [options]\n * @returns {SVGElement|null}\n */\n render(code, options = {}) {\n code = String(code || '').toLowerCase();\n const def = this._flags[code];\n if (!def) {\n console.warn(`Flag \"${code}\" not found`);\n return null;\n }\n\n const {\n size = 24,\n width = null,\n height = null,\n shape = 'rect',\n border = false,\n class: className = '',\n title = null,\n attrs = {}\n } = options;\n\n const isSquareShape = shape === 'square' || shape === 'circle';\n const h = height || size;\n const w = width || (isSquareShape ? h : h * 1.5);\n\n const svg = document.createElementNS(NAMESPACE, 'svg');\n svg.setAttribute('viewBox', isSquareShape ? SQUARE_VIEWBOX : VIEWBOX);\n svg.setAttribute('width', w);\n svg.setAttribute('height', h);\n svg.setAttribute('role', 'img');\n\n const label = title || def.name || code.toUpperCase();\n svg.setAttribute('aria-label', label);\n\n const classes = ['dm-flag', `dm-flag-${shape}`];\n if (className) {\n classes.push(className);\n }\n svg.setAttribute('class', classes.join(' '));\n\n Object.entries(attrs).forEach(([k, v]) => svg.setAttribute(k, v));\n\n const clipId = `dm-flag-clip-${++_clipSeq}`;\n let inner = `<title>${esc(label)}</title>`;\n const body = this._markup(code) || '';\n\n if (shape === 'circle') {\n inner += `<defs><clipPath id=\"${clipId}\"><circle cx=\"30\" cy=\"20\" r=\"20\"/></clipPath></defs>`;\n inner += `<g clip-path=\"url(#${clipId})\">${body}</g>`;\n if (border) {\n const bc = typeof border === 'string' ? border : 'rgba(0,0,0,0.15)';\n inner += `<circle cx=\"30\" cy=\"20\" r=\"19.25\" fill=\"none\" stroke=\"${esc(bc)}\" stroke-width=\"1.5\"/>`;\n }\n } else if (shape === 'rounded') {\n inner += `<defs><clipPath id=\"${clipId}\"><rect x=\"0\" y=\"0\" width=\"60\" height=\"40\" rx=\"6\"/></clipPath></defs>`;\n inner += `<g clip-path=\"url(#${clipId})\">${body}</g>`;\n if (border) {\n const bc = typeof border === 'string' ? border : 'rgba(0,0,0,0.15)';\n inner += `<rect x=\"0.75\" y=\"0.75\" width=\"58.5\" height=\"38.5\" rx=\"5.25\" fill=\"none\" stroke=\"${esc(bc)}\" stroke-width=\"1.5\"/>`;\n }\n } else {\n inner += body;\n if (border) {\n const bc = typeof border === 'string' ? border : 'rgba(0,0,0,0.15)';\n const vb = isSquareShape ? {x: 10.5, y: 0.5, w: 39, h: 39} : {x: 0.5, y: 0.5, w: 59, h: 39};\n inner += `<rect x=\"${vb.x}\" y=\"${vb.y}\" width=\"${vb.w}\" height=\"${vb.h}\" fill=\"none\" stroke=\"${esc(bc)}\" stroke-width=\"1\"/>`;\n }\n }\n\n svg.innerHTML = inner;\n return svg;\n }\n\n /**\n * Get a flag as an HTML string.\n * @param {string} code\n * @param {FlagRenderOptions} [options] - Same as render()\n * @returns {string}\n */\n html(code, options = {}) {\n const svg = this.render(code, options);\n if (!svg) {\n return '';\n }\n const container = document.createElement('div');\n container.appendChild(svg);\n return container.innerHTML;\n }\n\n /**\n * Inject a flag into an element.\n * @param {string|HTMLElement} target\n * @param {string} code\n * @param {FlagInjectOptions} [options] - Same as render(), plus position: 'prepend' (default) | 'append' | 'replace'\n * @returns {SVGElement|null}\n */\n inject(target, code, options = {}) {\n const {position = 'prepend', ...renderOptions} = options;\n const element = typeof target === 'string' ? document.querySelector(target) : target;\n if (!element) {\n console.warn(`Target element not found: ${target}`);\n return null;\n }\n const svg = this.render(code, renderOptions);\n if (!svg) {\n return null;\n }\n if (position === 'append') {\n element.appendChild(svg);\n } else if (position === 'replace') {\n element.innerHTML = '';\n element.appendChild(svg);\n } else {\n element.insertBefore(svg, element.firstChild);\n }\n return svg;\n }\n\n /**\n * Scan a container for [data-flag] elements and replace them with SVGs.\n * Supported attributes: data-flag, data-flag-size, data-flag-shape,\n * data-flag-class, data-flag-border, data-flag-title.\n * @param {Element|Document|DocumentFragment|string} [container=document]\n * @returns {number} Number of flags replaced\n */\n scan(container = document) {\n const root = typeof container === 'string' ? document.querySelector(container) : container;\n if (!root) {\n return 0;\n }\n const elements = root.querySelectorAll('[data-flag]:not([data-flag-processed])');\n let count = 0;\n elements.forEach(el => {\n if (el.tagName.toLowerCase() === 'svg' || el.querySelector('svg')) {\n return;\n }\n const code = el.dataset.flag;\n const size = parseInt(el.dataset.flagSize, 10) || 24;\n const shape = el.dataset.flagShape || 'rect';\n const className = el.dataset.flagClass || '';\n const border = el.dataset.flagBorder !== undefined\n ? (el.dataset.flagBorder === '' || el.dataset.flagBorder === 'true' ? true : el.dataset.flagBorder)\n : false;\n const title = el.dataset.flagTitle || null;\n\n const svg = this.render(code, {size, shape, class: className, border, title});\n if (svg) {\n if (el.className) {\n svg.classList.add(...el.className.split(' ').filter(Boolean));\n }\n svg.setAttribute('data-flag', code);\n svg.setAttribute('data-flag-processed', 'true');\n el.replaceWith(svg);\n count++;\n } else {\n el.setAttribute('data-flag-processed', 'true');\n }\n });\n return count;\n }\n\n /**\n * Register a custom flag (or override an existing one).\n * @param {string} code - ISO alpha-2 code\n * @param {FlagDefinition} definition - { name, region?, svg? | stripes?/cross?/bg?/overlays? }\n * @returns {this}\n */\n register(code, definition) {\n if (!code || !definition) {\n console.warn('Invalid flag registration: code and definition required');\n return this;\n }\n code = String(code).toLowerCase();\n this._flags[code] = definition;\n delete this._cache[code];\n\n const region = definition.region || 'custom';\n if (!this._regions[region]) {\n this._regions[region] = {name: region.charAt(0).toUpperCase() + region.slice(1), codes: []};\n }\n if (!this._regions[region].codes.includes(code)) {\n this._regions[region].codes.push(code);\n }\n return this;\n }\n\n /**\n * Remove a registered flag.\n * @param {string} code\n * @returns {boolean}\n */\n unregister(code) {\n code = String(code || '').toLowerCase();\n if (this._flags[code]) {\n delete this._flags[code];\n delete this._cache[code];\n Object.values(this._regions).forEach(r => {\n const i = r.codes.indexOf(code);\n if (i > -1) {\n r.codes.splice(i, 1);\n }\n });\n return true;\n }\n return false;\n }\n\n /**\n * Check whether a flag exists.\n * @param {string} code\n * @returns {boolean}\n */\n has(code) {\n return !!this._flags[String(code || '').toLowerCase()];\n }\n\n /**\n * Get a flag definition.\n * @param {string} code\n * @returns {FlagDefinition|null}\n */\n get(code) {\n return this._flags[String(code || '').toLowerCase()] || null;\n }\n\n /**\n * Get the country name for a code.\n * @param {string} code\n * @returns {string|null}\n */\n name(code) {\n const def = this.get(code);\n return def ? def.name : null;\n }\n\n /**\n * List flag codes, optionally filtered by region.\n * @param {FlagRegion|null} [region]\n * @returns {string[]}\n */\n list(region = null) {\n if (region && this._regions[region]) {\n return [...this._regions[region].codes];\n }\n return Object.keys(this._flags);\n }\n\n /**\n * List all regions with metadata.\n * @returns {Record<string, FlagRegionMeta>}\n */\n listRegions() {\n return {...this._regions};\n }\n\n /**\n * Total number of flags.\n * @returns {number}\n */\n count() {\n return Object.keys(this._flags).length;\n }\n\n /**\n * Search flags by code or country name.\n * @param {string} query\n * @returns {string[]} Matching codes\n */\n search(query) {\n const q = String(query || '').toLowerCase().trim();\n if (!q) {\n return [];\n }\n return Object.keys(this._flags).filter(code =>\n code.includes(q) || (this._flags[code].name || '').toLowerCase().includes(q)\n );\n }\n}\n\nconst flags = new FlagRegistry();\n\nexport {flags, FlagRegistry};\nexport default flags;\n","/**\n * Domma Flags Bundle\n * Nation flags as inline SVG - an opt-in module, separate from the core bundle.\n *\n * Load after domma.min.js:\n * <script src=\"domma.min.js\"></script>\n * <script src=\"domma-flags.min.js\"></script>\n *\n * Exposes window.FL and Domma.flags / Domma.FL.\n */\n\nimport {flags, FlagRegistry} from './flags.js';\n\n// Attach to Domma when present\nif (typeof window !== 'undefined' && window.Domma) {\n window.Domma.flags = flags;\n window.Domma.FL = flags;\n}\n\n// Expose the FL alias globally\nif (typeof window !== 'undefined') {\n window.FL = flags;\n}\n\nexport {flags, FlagRegistry};\nexport default flags;\n"],"names":["europe","gb","name","svg","fr","stripes","dir","colors","de","it","es","weights","pt","overlays","type","cx","cy","r","fill","stroke","strokeWidth","nl","be","ie","ch","bg","x","y","w","h","at","se","cross","colour","no","border","dk","fi","is","pl","ua","gr","hr","ru","cz","d","americas","us","ca","br","ar","mx","cl","co","pe","uy","africa","za","ng","gh","eg","ma","sn","ci","cm","dz","off","tn","ke","x1","y1","x2","y2","rx","ry","asia","jp","cn","kr","children","in","sa","ae","qa","id","th","vn","tr","rotation","il","UNION_CANTON","oceania","au","nz","flags","regions","description","codes","Object","keys","_clipSeq","esc","v","String","replace","buildOverlay","o","undefined","sw","extra","outerR","points","innerRatio","innerR","step","Math","PI","start","i","a","cos","toFixed","sin","starPath","ri","sqrt","top","bot","crescentPath","transform","map","join","expandFlag","def","out","total","reduce","b","length","offset","forEach","width","height","buildStripes","thickness","t","hy","buildCross","FlagRegistry","constructor","this","_flags","defaultFlags","_regions","_cache","_markup","code","markup","render","options","toLowerCase","console","warn","size","shape","class","className","title","attrs","isSquareShape","document","createElementNS","setAttribute","label","toUpperCase","classes","push","entries","k","clipId","inner","body","bc","vb","innerHTML","html","container","createElement","appendChild","inject","target","position","renderOptions","element","querySelector","insertBefore","firstChild","scan","root","elements","querySelectorAll","count","el","tagName","dataset","flag","parseInt","flagSize","flagShape","flagClass","flagBorder","flagTitle","classList","add","split","filter","Boolean","replaceWith","register","definition","region","charAt","slice","includes","unregister","values","indexOf","splice","has","get","list","listRegions","search","query","q","trim","window","Domma","FL"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Flags v0.56.0
2
+ * Domma Flags v0.58.0
3
3
  * Nation flags as inline SVG (opt-in module)
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T16:12:31.779Z
6
- * Commit: f768320
5
+ * Built: 2026-10-24T22:17:31.236Z
6
+ * Commit: 6edd082
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */