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 +1 @@
1
- {"version":3,"file":"domma-flags.min.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":"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"}
1
+ {"version":3,"file":"domma-flags.min.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 Syntax Highlighter v0.56.0
2
+ * Domma Syntax Highlighter v0.58.0
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T16:12:31.776Z
6
- * Commit: f768320
5
+ * Built: 2026-10-24T22:17:31.233Z
6
+ * Commit: 6edd082
7
7
  */
8
8
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).DommaSyntax={})}(this,function(t){"use strict";const e={javascript:[{type:"comment",pattern:/\/\*[\s\S]*?\*\//g},{type:"comment",pattern:/\/\/.*/g},{type:"template-string",pattern:/`(?:\\.|[^`\\])*`/g},{type:"string",pattern:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g},{type:"keyword",pattern:/\b(const|let|var|function|return|if|else|for|while|do|break|continue|switch|case|default|try|catch|finally|throw|async|await|class|extends|static|new|this|super|import|export|from|as|default|yield|typeof|instanceof|in|of|delete|void)\b/g},{type:"boolean",pattern:/\b(true|false|null|undefined|NaN|Infinity)\b/g},{type:"number",pattern:/\b\d+\.?\d*([eE][+-]?\d+)?\b/g},{type:"function",pattern:/\b([a-zA-Z_$][\w$]*)\s*(?=\()/g},{type:"class-name",pattern:/\b[A-Z][\w$]*\b/g},{type:"operator",pattern:/[+\-*/%=<>!&|^~?:]+|===|!==|==|!=|<=|>=|&&|\|\||<<|>>|>>>/g},{type:"punctuation",pattern:/[{}[\]();,.]/g}],html:[{type:"comment",pattern:/<!--[\s\S]*?-->/g},{type:"doctype",pattern:/<!DOCTYPE[^>]*>/gi},{type:"tag-open",pattern:/<\/?[a-zA-Z][\w-]*/g},{type:"tag-close",pattern:/\/?>/g},{type:"attr-name",pattern:/\s+[a-zA-Z:@][\w:.-]*(?=\s*=)/g},{type:"attr-value",pattern:/=\s*"[^"]*"|=\s*'[^']*'/g},{type:"entity",pattern:/&[#\w]+;/g}],css:[{type:"comment",pattern:/\/\*[\s\S]*?\*\//g},{type:"at-rule",pattern:/@[\w-]+/g},{type:"selector",pattern:/[.#]?[a-zA-Z][\w-]*(?=\s*[{,])/g},{type:"property",pattern:/\b[\w-]+(?=\s*:)/g},{type:"string",pattern:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g},{type:"function",pattern:/\b[\w-]+(?=\()/g},{type:"important",pattern:/!important\b/g},{type:"number",pattern:/\b\d+\.?\d*(px|em|rem|%|vh|vw|pt|cm|mm|in|pc|ex|ch|vmin|vmax|fr)?\b/g},{type:"color",pattern:/#[\da-fA-F]{3,8}\b/g},{type:"punctuation",pattern:/[{}:;,()]/g}]};function n(t){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return t.replace(/[&<>"']/g,t=>e[t])}class a{constructor(){this.config={autoDetect:!0,preserveOriginal:!0,selector:".code-block",showLanguageBadge:!1,languagePrefix:"language-"}}highlight(t,a=null){const r="string"==typeof t?document.querySelector(t):t;if(!r||r.hasAttribute("data-syntax-highlighted"))return!1;if(!a&&this.config.autoDetect){const t=Array.from(r.classList).find(t=>t.startsWith(this.config.languagePrefix));t&&(a=t.substring(this.config.languagePrefix.length))}if(!a||!e[a])return!1;const o=r.textContent||"";this.config.preserveOriginal&&r.setAttribute("data-original-code",o);const i=function(t,a){const r=e[a];if(!r)return n(t);const o=[];for(const{type:e,pattern:n}of r){if("html"===a&&"entity"===e)continue;let r;for(n.lastIndex=0;null!==(r=n.exec(t));)o.push({start:r.index,end:r.index+r[0].length,text:r[0],type:e})}o.sort((t,e)=>t.start-e.start);const i=[];let s=0;for(const t of o)t.start>=s&&(i.push(t),s=t.end);let c="",p=0;for(const e of i)e.start>p&&(c+=n(t.substring(p,e.start))),c+=`<span class="syntax-${e.type}">${n(e.text)}</span>`,p=e.end;return p<t.length&&(c+=n(t.substring(p))),c}(o,a);return r.innerHTML=i,r.setAttribute("data-syntax-highlighted","true"),r.setAttribute("data-language",a),this.config.showLanguageBadge&&this.addLanguageBadge(r,a),!0}scan(t={}){const e=t.selector||this.config.selector,n=document.querySelectorAll(e);let a=0;return n.forEach(e=>{this.highlight(e,t.language||null)&&(this.addCopyButton(e),a++)}),a}register(t,n){t&&Array.isArray(n)?e[t]=n:console.error("SyntaxHighlighter: Invalid language registration")}configure(t){return t?(Object.assign(this.config,t),this.config):{...this.config}}addLanguageBadge(t,e){if(t.querySelector(".syntax-language-badge"))return;const n=document.createElement("div");n.className="syntax-language-badge",n.textContent=e.toUpperCase(),t.style.position="relative",t.insertBefore(n,t.firstChild)}getLanguages(){return Object.keys(e)}isLanguageSupported(t){return t in e}addCopyButton(t){if(t.parentElement&&t.parentElement.classList.contains("code-block-wrapper"))return;const e=document.createElement("div");e.className="code-block-wrapper";const n=document.createElement("button");n.className="code-block-copy",n.setAttribute("aria-label","Copy code to clipboard"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>',n.addEventListener("click",async()=>{const e=t.getAttribute("data-original-code")||t.textContent;try{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}n.classList.add("copied"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>',setTimeout(()=>{n.classList.remove("copied"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>'},2e3)}catch(t){console.error("Failed to copy code:",t)}}),t.parentNode.insertBefore(e,t),e.appendChild(t),e.appendChild(n)}}const r=new a;"undefined"!=typeof document&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{r.scan()}):setTimeout(()=>r.scan(),0)),"undefined"!=typeof window&&(window.Domma&&(window.Domma.syntax=r),window.DommaSyntax=r),t.LANGUAGES=e,t.SyntaxHighlighter=a,t.default=r,t.syntax=r,Object.defineProperty(t,"__esModule",{value:!0})});
9
9
  //# sourceMappingURL=domma-syntax.min.js.map
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Core CSS v0.56.0
2
+ * Domma Core CSS v0.58.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-24T16:12:49.151Z
6
- * Commit: f768320
5
+ * Built: 2026-10-24T22:17:44.996Z
6
+ * Commit: 6edd082
7
7
  */
8
8
 
9
9
  /**