{"version":3,"sources":["../../src/core/constants.ts","../../src/web-component/DirhamSymbolElement.ts","../../src/core/format.ts","../../src/web-component/DirhamPriceElement.ts","../../src/web-component/DirhamInputElement.ts","../../src/web-component/AnimatedDirhamPriceElement.ts"],"names":["SVG_PATH","VALID_WEIGHTS","_shadow","render_fn","dirAttr","_fmtCache","escape_fn"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * UAE Dirham currency symbol constants.\n *\n * This package maps the Dirham glyph to the official Unicode codepoint U+20C3\n * (UAE DIRHAM SIGN) via a custom web font. The codepoint was accepted by the\n * Unicode Technical Committee for Unicode 18.0 (expected September 2026).\n *\n * Until system fonts ship native U+20C3 glyphs, the bundled web font provides\n * the rendering. When OS/font support lands, the web font becomes optional;\n * zero migration required.\n *\n * @module dirham\n * @see https://www.unicode.org/alloc/Pipeline.html\n */\n\n/** Unicode character for the Dirham symbol (U+20C3, requires Dirham web font until system fonts support it) */\nexport const DIRHAM_UNICODE = \"\\u20C3\";\n\n/** HTML entity for the Dirham symbol */\nexport const DIRHAM_HTML_ENTITY = \"&#x20C3;\";\n\n/** CSS content value for use in `::before` / `::after` pseudo-elements */\nexport const DIRHAM_CSS_CONTENT = \"\\\\20C3\";\n\n/** ISO 4217 currency code for UAE Dirham */\nexport const DIRHAM_CURRENCY_CODE = \"AED\";\n\n/** Arabic text representation of the Dirham symbol (د.إ) */\nexport const DIRHAM_SYMBOL_TEXT = \"د.إ\";\n\n/** The font family name used for the Dirham web font */\nexport const DIRHAM_FONT_FAMILY = \"Dirham\";\n\n/** CSS class name for the Dirham icon */\nexport const DIRHAM_CSS_CLASS = \"dirham-symbol\";\n\n/** Unicode codepoint as a number (0x20C3) */\nexport const DIRHAM_CODEPOINT = 0x20c3;\n\n// ── Font weight mapping ─────────────────────────────────────────────────\n\n/**\n * Supported visual weights for the Dirham symbol SVG component.\n *\n * Because the Dirham symbol is not yet in standard fonts (until Unicode 18.0),\n * weight simulation is applied via SVG stroke to match surrounding text weight,\n * similar to how $, €, £ adapt to their font's weight.\n */\nexport type DirhamWeight =\n\t| \"thin\"\n\t| \"extralight\"\n\t| \"light\"\n\t| \"regular\"\n\t| \"medium\"\n\t| \"semibold\"\n\t| \"bold\"\n\t| \"extrabold\"\n\t| \"black\";\n\n/**\n * Map from weight name to CSS `font-weight` numeric value.\n * Used for matching the symbol weight to surrounding text.\n */\nexport const DIRHAM_WEIGHT_MAP: Record<DirhamWeight, number> = {\n\tthin: 100,\n\textralight: 200,\n\tlight: 300,\n\tregular: 400,\n\tmedium: 500,\n\tsemibold: 600,\n\tbold: 700,\n\textrabold: 800,\n\tblack: 900,\n};\n\n/**\n * SVG stroke-width values that simulate font weight.\n * Applied with `paint-order: stroke` so stroke renders behind fill.\n */\nexport const DIRHAM_STROKE_MAP: Record<DirhamWeight, number> = {\n\tthin: 0,\n\textralight: 0,\n\tlight: 0,\n\tregular: 0,\n\tmedium: 8,\n\tsemibold: 16,\n\tbold: 24,\n\textrabold: 36,\n\tblack: 48,\n};\n","import { DIRHAM_STROKE_MAP, type DirhamWeight } from \"../core/constants\";\n\nconst SVG_PATH =\n\t\"m88.3 1c0.4 0.6 2.6 3.3 4.7 5.9 15.3 18.2 26.8 47.8 33 85.1 4.1 24.5 4.3 32.2 4.3 125.6v87h-41.8c-38.2 0-42.6-0.2-50.1-1.7-11.8-2.5-24-9.2-32.2-17.8-6.5-6.9-6.3-7.3-5.9 13.6 0.5 17.3 0.7 19.2 3.2 28.6 4 14.9 9.5 26 17.8 35.9 11.3 13.6 22.8 21.2 39.2 26.3 3.5 1 10.9 1.4 37.1 1.6l32.7 0.5v43.3 43.4l-46.1-0.3-46.3-0.3-8-3.2c-9.5-3.8-13.8-6.6-23.1-14.9l-6.8-6.1 0.4 19.1c0.5 17.7 0.6 19.7 3.1 28.7 8.7 31.8 29.7 54.5 57.4 61.9 6.9 1.9 9.6 2 38.5 2.4l30.9 0.4v89.6c0 54.1-0.3 94-0.8 100.8-0.5 6.2-2.1 17.8-3.5 25.9-6.5 37.3-18.2 65.4-35 83.6l-3.4 3.7h169.1c101.1 0 176.7-0.4 187.8-0.9 19.5-1 63-5.3 72.8-7.4 3.1-0.6 8.9-1.5 12.7-2.1 8.1-1.2 21.5-4 40.8-8.9 27.2-6.8 52-15.3 76.3-26.1 7.6-3.4 29.4-14.5 35.2-18 3.1-1.8 6.8-4 8.2-4.7 3.9-2.1 10.4-6.3 19.9-13.1 4.7-3.4 9.4-6.7 10.4-7.4 4.2-2.8 18.7-14.9 25.3-21 25.1-23.1 46.1-48.8 62.4-76.3 2.3-4 5.3-9 6.6-11.1 3.3-5.6 16.9-33.6 18.2-37.8 0.6-1.9 1.4-3.9 1.8-4.3 2.6-3.4 17.6-50.6 19.4-60.9 0.6-3.3 0.9-3.8 3.4-4.3 1.6-0.3 24.9-0.3 51.8-0.1 53.8 0.4 53.8 0.4 65.7 5.9 6.7 3.1 8.7 4.5 16.1 11.2 9.7 8.7 8.8 10.1 8.2-11.7-0.4-12.8-0.9-20.7-1.8-23.9-3.4-12.3-4.2-14.9-7.2-21.1-9.8-21.4-26.2-36.7-47.2-44l-8.2-3-33.4-0.4-33.3-0.5 0.4-11.7c0.4-15.4 0.4-45.9-0.1-61.6l-0.4-12.6 44.6-0.2c38.2-0.2 45.3 0 49.5 1.1 12.6 3.5 21.1 8.3 31.5 17.8l5.8 5.4v-14.8c0-17.6-0.9-25.4-4.5-37-7.1-23.5-21.1-41-41.1-51.8-13-7-13.8-7.2-58.5-7.5-26.2-0.2-39.9-0.6-40.6-1.2-0.6-0.6-1.1-1.6-1.1-2.4 0-0.8-1.5-7.1-3.5-13.9-23.4-82.7-67.1-148.4-131-197.1-8.7-6.7-30-20.8-38.6-25.6-3.3-1.9-6.9-3.9-7.8-4.5-4.2-2.3-28.3-14.1-34.3-16.6-3.6-1.6-8.3-3.6-10.4-4.4-35.3-15.3-94.5-29.8-139.7-34.3-7.4-0.7-17.2-1.8-21.7-2.2-20.4-2.3-48.7-2.6-209.4-2.6-135.8 0-169.9 0.3-169.4 1zm330.7 43.3c33.8 2 54.6 4.6 78.9 10.5 74.2 17.6 126.4 54.8 164.3 117 3.5 5.8 18.3 36 20.5 42.1 10.5 28.3 15.6 45.1 20.1 67.3 1.1 5.4 2.6 12.6 3.3 16 0.7 3.3 1 6.4 0.7 6.7-0.5 0.4-100.9 0.6-223.3 0.5l-222.5-0.2-0.3-128.5c-0.1-70.6 0-129.3 0.3-130.4l0.4-1.9h71.1c39 0 78 0.4 86.5 0.9zm297.5 350.3c0.7 4.3 0.7 77.3 0 80.9l-0.6 2.7-227.5-0.2-227.4-0.3-0.2-42.4c-0.2-23.3 0-42.7 0.2-43.1 0.3-0.5 97.2-0.8 227.7-0.8h227.2zm-10.2 171.7c0.5 1.5-1.9 13.8-6.8 33.8-5.6 22.5-13.2 45.2-20.9 62-3.8 8.6-13.3 27.2-15.6 30.7-1.1 1.6-4.3 6.7-7.1 11.2-18 28.2-43.7 53.9-73 72.9-10.7 6.8-32.7 18.4-38.6 20.2-1.2 0.3-2.5 0.9-3 1.3-0.7 0.6-9.8 4-20.4 7.8-19.5 6.9-56.6 14.4-86.4 17.5-19.3 1.9-22.4 2-96.7 2h-76.9v-129.7-129.8l220.9-0.4c121.5-0.2 221.6-0.5 222.4-0.7 0.9-0.1 1.8 0.5 2.1 1.2z\";\n\nconst VALID_WEIGHTS = new Set<string>([\n\t\"thin\",\n\t\"extralight\",\n\t\"light\",\n\t\"regular\",\n\t\"medium\",\n\t\"semibold\",\n\t\"bold\",\n\t\"extrabold\",\n\t\"black\",\n]);\n\n/**\n * `<dirham-symbol>` — framework-agnostic Web Component.\n *\n * @example\n * ```html\n * <script type=\"module\">\n *   import \"dirham/web-component\";\n * </script>\n *\n * <dirham-symbol size=\"24\" weight=\"bold\"></dirham-symbol>\n * ```\n *\n * Attributes: size, color, weight, aria-label\n */\nexport class DirhamSymbolElement extends HTMLElement {\n\tstatic get observedAttributes() {\n\t\treturn [\"size\", \"color\", \"weight\", \"aria-label\"];\n\t}\n\n\t#shadow: ShadowRoot;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#shadow = this.attachShadow({ mode: \"open\" });\n\t\tthis.#render();\n\t}\n\n\tattributeChangedCallback() {\n\t\tthis.#render();\n\t}\n\n\t#render() {\n\t\tconst size = this.getAttribute(\"size\") || \"24\";\n\t\tconst color = this.getAttribute(\"color\") || \"currentColor\";\n\t\tconst weightAttr = this.getAttribute(\"weight\") || \"regular\";\n\t\tconst weight: DirhamWeight = VALID_WEIGHTS.has(weightAttr)\n\t\t\t? (weightAttr as DirhamWeight)\n\t\t\t: \"regular\";\n\t\tconst ariaLabel = this.getAttribute(\"aria-label\") || \"UAE Dirham\";\n\t\tconst strokeWidth = DIRHAM_STROKE_MAP[weight];\n\n\t\tconst strokeAttrs =\n\t\t\tstrokeWidth > 0\n\t\t\t\t? `stroke=\"${color}\" stroke-width=\"${strokeWidth}\" stroke-linejoin=\"round\" paint-order=\"stroke\"`\n\t\t\t\t: \"\";\n\n\t\tthis.#shadow.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 870\" width=\"${size}\" height=\"${size}\" fill=\"${color}\" role=\"img\" aria-label=\"${ariaLabel}\" style=\"display:inline-block;vertical-align:middle\"><path d=\"${SVG_PATH}\" ${strokeAttrs}/></svg>`;\n\t}\n}\n\nif (\n\ttypeof customElements !== \"undefined\" &&\n\t!customElements.get(\"dirham-symbol\")\n) {\n\tcustomElements.define(\"dirham-symbol\", DirhamSymbolElement);\n}\n","import {\n\tDIRHAM_CURRENCY_CODE,\n\tDIRHAM_SYMBOL_TEXT,\n\tDIRHAM_UNICODE,\n} from \"./constants\";\n\n// ─── Intl.NumberFormat cache ─────────────────────────────────────────────────\n// Constructing Intl.NumberFormat is expensive (~µs). Cache instances keyed on\n// \"locale:decimals\" so repeated calls (e.g., rendering a price list) reuse\n// the same formatter instead of allocating a new object each time.\nconst _fmtCache = new Map<string, Intl.NumberFormat>();\n\nfunction getFormatter(\n\tlocale: string,\n\tdecimals: number,\n\tnotation: \"standard\" | \"compact\" = \"standard\",\n): Intl.NumberFormat {\n\tconst key = `${locale}:${decimals}:${notation}`;\n\tlet fmt = _fmtCache.get(key);\n\tif (!fmt) {\n\t\tfmt = new Intl.NumberFormat(locale, {\n\t\t\tminimumFractionDigits: notation === \"compact\" ? 0 : decimals,\n\t\t\tmaximumFractionDigits: decimals,\n\t\t\t...(notation === \"compact\" && {\n\t\t\t\tnotation: \"compact\",\n\t\t\t\tcompactDisplay: \"short\",\n\t\t\t}),\n\t\t});\n\t\t_fmtCache.set(key, fmt);\n\t}\n\treturn fmt;\n}\n\n/**\n * Options for formatting a Dirham amount.\n */\nexport interface FormatDirhamOptions {\n\t/**\n\t * Locale string for number formatting.\n\t * @default \"en-AE\"\n\t */\n\tlocale?: string;\n\n\t/**\n\t * Number of decimal places.\n\t * @default 2\n\t */\n\tdecimals?: number;\n\n\t/**\n\t * Whether to place the symbol before the amount.\n\t * When `undefined`, determined by locale:\n\t * - Arabic locales (ar-*): symbol after amount\n\t * - Other locales: symbol before amount\n\t */\n\tsymbolFirst?: boolean;\n\n\t/**\n\t * Use ISO currency code (AED) instead of the symbol.\n\t * @default false\n\t */\n\tuseCode?: boolean;\n\n\t/**\n\t * Separator between symbol and amount.\n\t * @default \" \" (non-breaking space)\n\t */\n\tseparator?: string;\n\n\t/**\n\t * Number notation style.\n\t * - `\"standard\"` — full digits (e.g. 1,500,000.00)\n\t * - `\"compact\"` — abbreviated (e.g. 1.5M)\n\t * @default \"standard\"\n\t */\n\tnotation?: \"standard\" | \"compact\";\n}\n\n/**\n * Format a number as a Dirham currency string.\n *\n * @example\n * ```ts\n * formatDirham(100);          // \"\\u20C3 100.00\"\n * formatDirham(1234.5);       // \"\\u20C3 1,234.50\"\n * formatDirham(100, { locale: \"ar-AE\" }); // \"100.00 \\u20C3\"\n * formatDirham(100, { useCode: true });   // \"AED 100.00\"\n * formatDirham(1500000, { notation: \"compact\" }); // \"\\u20C3 1.5M\"\n * ```\n */\nexport function formatDirham(\n\tamount: number,\n\toptions: FormatDirhamOptions = {},\n): string {\n\tif (!Number.isFinite(amount)) {\n\t\tthrow new RangeError(\n\t\t\t`formatDirham: amount must be a finite number, got ${amount}`,\n\t\t);\n\t}\n\n\tconst {\n\t\tlocale = \"en-AE\",\n\t\tdecimals = 2,\n\t\tuseCode = false,\n\t\tseparator = \"\\u00A0\", // non-breaking space\n\t\tnotation = \"standard\",\n\t} = options;\n\n\tconst symbol = useCode ? DIRHAM_CURRENCY_CODE : DIRHAM_UNICODE;\n\n\t// Determine symbol placement\n\tlet symbolFirst: boolean;\n\tif (options.symbolFirst !== undefined) {\n\t\tsymbolFirst = options.symbolFirst;\n\t} else {\n\t\t// Arabic locales place symbol after amount\n\t\tsymbolFirst = !locale.startsWith(\"ar\");\n\t}\n\n\t// Format the number (use cached formatter)\n\tconst formatted = getFormatter(locale, decimals, notation).format(amount);\n\n\treturn symbolFirst\n\t\t? `${symbol}${separator}${formatted}`\n\t\t: `${formatted}${separator}${symbol}`;\n}\n\n/**\n * Options for parsing a Dirham-formatted string.\n */\nexport interface ParseDirhamOptions {\n\t/**\n\t * Normalize Arabic-Indic digits (٠١٢٣٤٥٦٧٨٩ / U+0660–U+0669) to ASCII\n\t * digits before parsing. Enables round-tripping strings produced by\n\t * `formatDirham` with Arabic locales (e.g. `\"ar-AE\"`).\n\t * @default true\n\t */\n\tnormalizeArabicNumerals?: boolean;\n}\n\n/**\n * Parse a Dirham-formatted string back to a number.\n * Strips currency symbols, codes, and formatting characters.\n * By default also normalizes Arabic-Indic digits so strings produced by\n * `formatDirham({ locale: \"ar-AE\" })` round-trip correctly.\n *\n * @example\n * ```ts\n * parseDirham(\"\\u20C3 1,234.50\");                  // 1234.5\n * parseDirham(\"AED 100.00\");                        // 100\n * parseDirham(\"١٬٢٣٤٫٥٠ \\u20C3\");                  // 1234.5\n * parseDirham(\"١٠٠٫٠٠ \\u20C3\", { normalizeArabicNumerals: false }); // throws\n * ```\n */\nexport function parseDirham(\n\tvalue: string,\n\toptions: ParseDirhamOptions = {},\n): number {\n\tconst { normalizeArabicNumerals = true } = options;\n\n\tlet cleaned = value\n\t\t.replaceAll(DIRHAM_UNICODE, \"\")\n\t\t.replaceAll(DIRHAM_SYMBOL_TEXT, \"\")\n\t\t.replaceAll(DIRHAM_CURRENCY_CODE, \"\")\n\t\t.replace(/[,\\s\\u00A0\\u066C]/g, \"\") // ASCII comma, whitespace, NBSP, Arabic thousands sep\n\t\t.trim();\n\n\tif (normalizeArabicNumerals) {\n\t\t// Arabic-Indic digits U+0660–U+0669 → ASCII 0–9\n\t\tcleaned = cleaned.replace(/[\\u0660-\\u0669]/g, (d) =>\n\t\t\tString(d.charCodeAt(0) - 0x0660),\n\t\t);\n\t\t// Arabic decimal separator (U+066B) → '.'\n\t\tcleaned = cleaned.replace(/\\u066B/g, \".\");\n\t}\n\n\tconst result = Number.parseFloat(cleaned);\n\tif (Number.isNaN(result)) {\n\t\tthrow new Error(`Cannot parse \"${value}\" as a Dirham amount`);\n\t}\n\treturn result;\n}\n","import { DIRHAM_STROKE_MAP, type DirhamWeight } from \"../core/constants\";\nimport { formatDirham } from \"../core/format\";\n\nconst SVG_PATH =\n\t\"m88.3 1c0.4 0.6 2.6 3.3 4.7 5.9 15.3 18.2 26.8 47.8 33 85.1 4.1 24.5 4.3 32.2 4.3 125.6v87h-41.8c-38.2 0-42.6-0.2-50.1-1.7-11.8-2.5-24-9.2-32.2-17.8-6.5-6.9-6.3-7.3-5.9 13.6 0.5 17.3 0.7 19.2 3.2 28.6 4 14.9 9.5 26 17.8 35.9 11.3 13.6 22.8 21.2 39.2 26.3 3.5 1 10.9 1.4 37.1 1.6l32.7 0.5v43.3 43.4l-46.1-0.3-46.3-0.3-8-3.2c-9.5-3.8-13.8-6.6-23.1-14.9l-6.8-6.1 0.4 19.1c0.5 17.7 0.6 19.7 3.1 28.7 8.7 31.8 29.7 54.5 57.4 61.9 6.9 1.9 9.6 2 38.5 2.4l30.9 0.4v89.6c0 54.1-0.3 94-0.8 100.8-0.5 6.2-2.1 17.8-3.5 25.9-6.5 37.3-18.2 65.4-35 83.6l-3.4 3.7h169.1c101.1 0 176.7-0.4 187.8-0.9 19.5-1 63-5.3 72.8-7.4 3.1-0.6 8.9-1.5 12.7-2.1 8.1-1.2 21.5-4 40.8-8.9 27.2-6.8 52-15.3 76.3-26.1 7.6-3.4 29.4-14.5 35.2-18 3.1-1.8 6.8-4 8.2-4.7 3.9-2.1 10.4-6.3 19.9-13.1 4.7-3.4 9.4-6.7 10.4-7.4 4.2-2.8 18.7-14.9 25.3-21 25.1-23.1 46.1-48.8 62.4-76.3 2.3-4 5.3-9 6.6-11.1 3.3-5.6 16.9-33.6 18.2-37.8 0.6-1.9 1.4-3.9 1.8-4.3 2.6-3.4 17.6-50.6 19.4-60.9 0.6-3.3 0.9-3.8 3.4-4.3 1.6-0.3 24.9-0.3 51.8-0.1 53.8 0.4 53.8 0.4 65.7 5.9 6.7 3.1 8.7 4.5 16.1 11.2 9.7 8.7 8.8 10.1 8.2-11.7-0.4-12.8-0.9-20.7-1.8-23.9-3.4-12.3-4.2-14.9-7.2-21.1-9.8-21.4-26.2-36.7-47.2-44l-8.2-3-33.4-0.4-33.3-0.5 0.4-11.7c0.4-15.4 0.4-45.9-0.1-61.6l-0.4-12.6 44.6-0.2c38.2-0.2 45.3 0 49.5 1.1 12.6 3.5 21.1 8.3 31.5 17.8l5.8 5.4v-14.8c0-17.6-0.9-25.4-4.5-37-7.1-23.5-21.1-41-41.1-51.8-13-7-13.8-7.2-58.5-7.5-26.2-0.2-39.9-0.6-40.6-1.2-0.6-0.6-1.1-1.6-1.1-2.4 0-0.8-1.5-7.1-3.5-13.9-23.4-82.7-67.1-148.4-131-197.1-8.7-6.7-30-20.8-38.6-25.6-3.3-1.9-6.9-3.9-7.8-4.5-4.2-2.3-28.3-14.1-34.3-16.6-3.6-1.6-8.3-3.6-10.4-4.4-35.3-15.3-94.5-29.8-139.7-34.3-7.4-0.7-17.2-1.8-21.7-2.2-20.4-2.3-48.7-2.6-209.4-2.6-135.8 0-169.9 0.3-169.4 1zm330.7 43.3c33.8 2 54.6 4.6 78.9 10.5 74.2 17.6 126.4 54.8 164.3 117 3.5 5.8 18.3 36 20.5 42.1 10.5 28.3 15.6 45.1 20.1 67.3 1.1 5.4 2.6 12.6 3.3 16 0.7 3.3 1 6.4 0.7 6.7-0.5 0.4-100.9 0.6-223.3 0.5l-222.5-0.2-0.3-128.5c-0.1-70.6 0-129.3 0.3-130.4l0.4-1.9h71.1c39 0 78 0.4 86.5 0.9zm297.5 350.3c0.7 4.3 0.7 77.3 0 80.9l-0.6 2.7-227.5-0.2-227.4-0.3-0.2-42.4c-0.2-23.3 0-42.7 0.2-43.1 0.3-0.5 97.2-0.8 227.7-0.8h227.2zm-10.2 171.7c0.5 1.5-1.9 13.8-6.8 33.8-5.6 22.5-13.2 45.2-20.9 62-3.8 8.6-13.3 27.2-15.6 30.7-1.1 1.6-4.3 6.7-7.1 11.2-18 28.2-43.7 53.9-73 72.9-10.7 6.8-32.7 18.4-38.6 20.2-1.2 0.3-2.5 0.9-3 1.3-0.7 0.6-9.8 4-20.4 7.8-19.5 6.9-56.6 14.4-86.4 17.5-19.3 1.9-22.4 2-96.7 2h-76.9v-129.7-129.8l220.9-0.4c121.5-0.2 221.6-0.5 222.4-0.7 0.9-0.1 1.8 0.5 2.1 1.2z\";\n\nconst VALID_WEIGHTS = new Set<string>([\n\t\"thin\",\n\t\"extralight\",\n\t\"light\",\n\t\"regular\",\n\t\"medium\",\n\t\"semibold\",\n\t\"bold\",\n\t\"extrabold\",\n\t\"black\",\n]);\n\n/**\n * `<dirham-price>` — framework-agnostic Web Component for displaying formatted prices.\n *\n * Works in Vue, Angular, Svelte, or any HTML page.\n *\n * @example\n * ```html\n * <script type=\"module\">\n *   import \"dirham/web-component\";\n * </script>\n *\n * <dirham-price amount=\"1250\"></dirham-price>\n * <dirham-price amount=\"5000000\" notation=\"compact\"></dirham-price>\n * <dirham-price amount=\"100\" locale=\"ar-AE\"></dirham-price>\n * <dirham-price amount=\"500\" use-code></dirham-price>\n * ```\n *\n * Attributes: amount, locale, decimals, notation, use-code, symbol-size, weight, currency\n */\nexport class DirhamPriceElement extends HTMLElement {\n\tstatic get observedAttributes() {\n\t\treturn [\n\t\t\t\"amount\",\n\t\t\t\"locale\",\n\t\t\t\"decimals\",\n\t\t\t\"notation\",\n\t\t\t\"use-code\",\n\t\t\t\"symbol-size\",\n\t\t\t\"weight\",\n\t\t\t\"currency\",\n\t\t];\n\t}\n\n\t#shadow: ShadowRoot;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#shadow = this.attachShadow({ mode: \"open\" });\n\t\tthis.#render();\n\t}\n\n\tattributeChangedCallback() {\n\t\tthis.#render();\n\t}\n\n\t#render() {\n\t\tconst amountStr = this.getAttribute(\"amount\");\n\t\tconst amount = amountStr !== null ? Number(amountStr) : 0;\n\t\tconst locale = this.getAttribute(\"locale\") || \"en-AE\";\n\t\tconst decimals = Number(this.getAttribute(\"decimals\") ?? \"2\");\n\t\tconst notation =\n\t\t\tthis.getAttribute(\"notation\") === \"compact\" ? \"compact\" : \"standard\";\n\t\tconst useCode = this.hasAttribute(\"use-code\");\n\t\tconst symbolSize = this.getAttribute(\"symbol-size\") || \"1em\";\n\t\tconst weightAttr = this.getAttribute(\"weight\") || \"regular\";\n\t\tconst weight: DirhamWeight = VALID_WEIGHTS.has(weightAttr)\n\t\t\t? (weightAttr as DirhamWeight)\n\t\t\t: \"regular\";\n\t\tconst currency = this.getAttribute(\"currency\") || undefined;\n\n\t\tconst symbolFirst = !locale.startsWith(\"ar\");\n\n\t\t// Format the numeric part (strip AED code — we render the SVG instead)\n\t\tlet formatted: string;\n\t\tif (!Number.isFinite(amount)) {\n\t\t\tformatted = \"—\";\n\t\t} else {\n\t\t\tformatted = formatDirham(amount, {\n\t\t\t\tlocale,\n\t\t\t\tdecimals,\n\t\t\t\tuseCode: true,\n\t\t\t\tnotation,\n\t\t\t})\n\t\t\t\t.replace(\"AED\", \"\")\n\t\t\t\t.trim();\n\t\t}\n\n\t\tif (useCode) {\n\t\t\tconst code = currency || \"AED\";\n\t\t\tconst text = symbolFirst\n\t\t\t\t? `${code}\\u00A0${formatted}`\n\t\t\t\t: `${formatted}\\u00A0${code}`;\n\t\t\tconst dirAttr = locale.startsWith(\"ar\") ? ' dir=\"rtl\"' : \"\";\n\t\t\tthis.#shadow.innerHTML = `<span style=\"white-space:nowrap\"${dirAttr}>${this.#escape(text)}</span>`;\n\t\t\treturn;\n\t\t}\n\n\t\tconst strokeWidth = DIRHAM_STROKE_MAP[weight];\n\t\tconst strokeAttrs =\n\t\t\tstrokeWidth > 0\n\t\t\t\t? ` stroke=\"currentColor\" stroke-width=\"${strokeWidth}\" stroke-linejoin=\"round\" paint-order=\"stroke\"`\n\t\t\t\t: \"\";\n\n\t\tconst svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 870\" width=\"${this.#escape(String(symbolSize))}\" height=\"${this.#escape(String(symbolSize))}\" fill=\"currentColor\" role=\"img\" aria-label=\"UAE Dirham\" style=\"display:inline-block;vertical-align:middle\"><path d=\"${SVG_PATH}\"${strokeAttrs}/></svg>`;\n\n\t\tconst dirAttr = locale.startsWith(\"ar\") ? ' dir=\"rtl\"' : \"\";\n\n\t\tconst parts = symbolFirst\n\t\t\t? `${svg}\\u00A0${this.#escape(formatted)}`\n\t\t\t: `${this.#escape(formatted)}\\u00A0${svg}`;\n\n\t\tthis.#shadow.innerHTML = `<span style=\"white-space:nowrap\"${dirAttr}>${parts}</span>`;\n\t}\n\n\t#escape(str: string): string {\n\t\treturn str\n\t\t\t.replace(/&/g, \"&amp;\")\n\t\t\t.replace(/</g, \"&lt;\")\n\t\t\t.replace(/>/g, \"&gt;\")\n\t\t\t.replace(/\"/g, \"&quot;\");\n\t}\n}\n\nif (\n\ttypeof customElements !== \"undefined\" &&\n\t!customElements.get(\"dirham-price\")\n) {\n\tcustomElements.define(\"dirham-price\", DirhamPriceElement);\n}\n","import { DIRHAM_STROKE_MAP, type DirhamWeight } from \"../core/constants\";\n\nconst SVG_PATH =\n\t\"m88.3 1c0.4 0.6 2.6 3.3 4.7 5.9 15.3 18.2 26.8 47.8 33 85.1 4.1 24.5 4.3 32.2 4.3 125.6v87h-41.8c-38.2 0-42.6-0.2-50.1-1.7-11.8-2.5-24-9.2-32.2-17.8-6.5-6.9-6.3-7.3-5.9 13.6 0.5 17.3 0.7 19.2 3.2 28.6 4 14.9 9.5 26 17.8 35.9 11.3 13.6 22.8 21.2 39.2 26.3 3.5 1 10.9 1.4 37.1 1.6l32.7 0.5v43.3 43.4l-46.1-0.3-46.3-0.3-8-3.2c-9.5-3.8-13.8-6.6-23.1-14.9l-6.8-6.1 0.4 19.1c0.5 17.7 0.6 19.7 3.1 28.7 8.7 31.8 29.7 54.5 57.4 61.9 6.9 1.9 9.6 2 38.5 2.4l30.9 0.4v89.6c0 54.1-0.3 94-0.8 100.8-0.5 6.2-2.1 17.8-3.5 25.9-6.5 37.3-18.2 65.4-35 83.6l-3.4 3.7h169.1c101.1 0 176.7-0.4 187.8-0.9 19.5-1 63-5.3 72.8-7.4 3.1-0.6 8.9-1.5 12.7-2.1 8.1-1.2 21.5-4 40.8-8.9 27.2-6.8 52-15.3 76.3-26.1 7.6-3.4 29.4-14.5 35.2-18 3.1-1.8 6.8-4 8.2-4.7 3.9-2.1 10.4-6.3 19.9-13.1 4.7-3.4 9.4-6.7 10.4-7.4 4.2-2.8 18.7-14.9 25.3-21 25.1-23.1 46.1-48.8 62.4-76.3 2.3-4 5.3-9 6.6-11.1 3.3-5.6 16.9-33.6 18.2-37.8 0.6-1.9 1.4-3.9 1.8-4.3 2.6-3.4 17.6-50.6 19.4-60.9 0.6-3.3 0.9-3.8 3.4-4.3 1.6-0.3 24.9-0.3 51.8-0.1 53.8 0.4 53.8 0.4 65.7 5.9 6.7 3.1 8.7 4.5 16.1 11.2 9.7 8.7 8.8 10.1 8.2-11.7-0.4-12.8-0.9-20.7-1.8-23.9-3.4-12.3-4.2-14.9-7.2-21.1-9.8-21.4-26.2-36.7-47.2-44l-8.2-3-33.4-0.4-33.3-0.5 0.4-11.7c0.4-15.4 0.4-45.9-0.1-61.6l-0.4-12.6 44.6-0.2c38.2-0.2 45.3 0 49.5 1.1 12.6 3.5 21.1 8.3 31.5 17.8l5.8 5.4v-14.8c0-17.6-0.9-25.4-4.5-37-7.1-23.5-21.1-41-41.1-51.8-13-7-13.8-7.2-58.5-7.5-26.2-0.2-39.9-0.6-40.6-1.2-0.6-0.6-1.1-1.6-1.1-2.4 0-0.8-1.5-7.1-3.5-13.9-23.4-82.7-67.1-148.4-131-197.1-8.7-6.7-30-20.8-38.6-25.6-3.3-1.9-6.9-3.9-7.8-4.5-4.2-2.3-28.3-14.1-34.3-16.6-3.6-1.6-8.3-3.6-10.4-4.4-35.3-15.3-94.5-29.8-139.7-34.3-7.4-0.7-17.2-1.8-21.7-2.2-20.4-2.3-48.7-2.6-209.4-2.6-135.8 0-169.9 0.3-169.4 1zm330.7 43.3c33.8 2 54.6 4.6 78.9 10.5 74.2 17.6 126.4 54.8 164.3 117 3.5 5.8 18.3 36 20.5 42.1 10.5 28.3 15.6 45.1 20.1 67.3 1.1 5.4 2.6 12.6 3.3 16 0.7 3.3 1 6.4 0.7 6.7-0.5 0.4-100.9 0.6-223.3 0.5l-222.5-0.2-0.3-128.5c-0.1-70.6 0-129.3 0.3-130.4l0.4-1.9h71.1c39 0 78 0.4 86.5 0.9zm297.5 350.3c0.7 4.3 0.7 77.3 0 80.9l-0.6 2.7-227.5-0.2-227.4-0.3-0.2-42.4c-0.2-23.3 0-42.7 0.2-43.1 0.3-0.5 97.2-0.8 227.7-0.8h227.2zm-10.2 171.7c0.5 1.5-1.9 13.8-6.8 33.8-5.6 22.5-13.2 45.2-20.9 62-3.8 8.6-13.3 27.2-15.6 30.7-1.1 1.6-4.3 6.7-7.1 11.2-18 28.2-43.7 53.9-73 72.9-10.7 6.8-32.7 18.4-38.6 20.2-1.2 0.3-2.5 0.9-3 1.3-0.7 0.6-9.8 4-20.4 7.8-19.5 6.9-56.6 14.4-86.4 17.5-19.3 1.9-22.4 2-96.7 2h-76.9v-129.7-129.8l220.9-0.4c121.5-0.2 221.6-0.5 222.4-0.7 0.9-0.1 1.8 0.5 2.1 1.2z\";\n\nconst VALID_WEIGHTS = new Set<string>([\n\t\"thin\",\n\t\"extralight\",\n\t\"light\",\n\t\"regular\",\n\t\"medium\",\n\t\"semibold\",\n\t\"bold\",\n\t\"extrabold\",\n\t\"black\",\n]);\n\nconst _fmtCache = new Map<string, Intl.NumberFormat>();\n\nfunction getInputFormatter(\n\tlocale: string,\n\tdecimals: number,\n): Intl.NumberFormat {\n\tconst key = `wc-input:${locale}:${decimals}`;\n\tlet fmt = _fmtCache.get(key);\n\tif (!fmt) {\n\t\tfmt = new Intl.NumberFormat(locale, {\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: decimals,\n\t\t});\n\t\t_fmtCache.set(key, fmt);\n\t}\n\treturn fmt;\n}\n\nfunction stripFormatting(raw: string): string {\n\tlet cleaned = raw.replace(/[\\u0660-\\u0669]/g, (d) =>\n\t\tString(d.charCodeAt(0) - 0x0660),\n\t);\n\tcleaned = cleaned.replace(/\\u066B/g, \".\");\n\tcleaned = cleaned.replace(/[,\\s\\u00A0\\u066C]/g, \"\");\n\tcleaned = cleaned.replace(/[\\u20C3]/g, \"\");\n\tcleaned = cleaned.replace(/AED/gi, \"\");\n\tcleaned = cleaned.replace(/د\\.إ/g, \"\");\n\treturn cleaned.trim();\n}\n\nfunction escapeHTML(str: string): string {\n\treturn str\n\t\t.replace(/&/g, \"&amp;\")\n\t\t.replace(/</g, \"&lt;\")\n\t\t.replace(/>/g, \"&gt;\")\n\t\t.replace(/\"/g, \"&quot;\");\n}\n\n/**\n * `<dirham-input>` — framework-agnostic masked currency input.\n *\n * Works in Vue, Angular, Svelte, or any HTML page.\n *\n * @example\n * ```html\n * <script type=\"module\">\n *   import \"dirham/web-component\";\n * </script>\n *\n * <dirham-input value=\"100\" min=\"0\" max=\"999999\"></dirham-input>\n * <dirham-input locale=\"ar-AE\" decimals=\"2\"></dirham-input>\n * ```\n *\n * Events: `dirham-change` — fires with `{ detail: { value: number | null } }`\n */\nexport class DirhamInputElement extends HTMLElement {\n\tstatic get observedAttributes() {\n\t\treturn [\n\t\t\t\"value\",\n\t\t\t\"locale\",\n\t\t\t\"decimals\",\n\t\t\t\"min\",\n\t\t\t\"max\",\n\t\t\t\"placeholder\",\n\t\t\t\"disabled\",\n\t\t\t\"readonly\",\n\t\t\t\"show-symbol\",\n\t\t\t\"use-code\",\n\t\t\t\"symbol-size\",\n\t\t\t\"weight\",\n\t\t];\n\t}\n\n\t#shadow: ShadowRoot;\n\t#input: HTMLInputElement | null = null;\n\t#numericValue: number | null = null;\n\t#isFocused = false;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#shadow = this.attachShadow({ mode: \"open\" });\n\t\tthis.#render();\n\t\tthis.#attachListeners();\n\t}\n\n\tget numericValue(): number | null {\n\t\treturn this.#numericValue;\n\t}\n\n\tattributeChangedCallback() {\n\t\tif (!this.#isFocused) {\n\t\t\tthis.#render();\n\t\t\tthis.#attachListeners();\n\t\t}\n\t}\n\n\t#getConfig() {\n\t\tconst locale = this.getAttribute(\"locale\") || \"en-AE\";\n\t\tconst decimals = Number(this.getAttribute(\"decimals\") ?? \"2\");\n\t\tconst min = this.hasAttribute(\"min\")\n\t\t\t? Number(this.getAttribute(\"min\"))\n\t\t\t: undefined;\n\t\tconst max = this.hasAttribute(\"max\")\n\t\t\t? Number(this.getAttribute(\"max\"))\n\t\t\t: undefined;\n\t\tconst showSymbol =\n\t\t\t!this.hasAttribute(\"show-symbol\") ||\n\t\t\tthis.getAttribute(\"show-symbol\") !== \"false\";\n\t\tconst useCode = this.hasAttribute(\"use-code\");\n\t\tconst symbolSize = this.getAttribute(\"symbol-size\") || \"1em\";\n\t\tconst weightAttr = this.getAttribute(\"weight\") || \"regular\";\n\t\tconst weight: DirhamWeight = VALID_WEIGHTS.has(weightAttr)\n\t\t\t? (weightAttr as DirhamWeight)\n\t\t\t: \"regular\";\n\t\tconst disabled = this.hasAttribute(\"disabled\");\n\t\tconst readonly = this.hasAttribute(\"readonly\");\n\t\tconst isRTL = locale.startsWith(\"ar\");\n\n\t\treturn {\n\t\t\tlocale,\n\t\t\tdecimals,\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tshowSymbol,\n\t\t\tuseCode,\n\t\t\tsymbolSize,\n\t\t\tweight,\n\t\t\tdisabled,\n\t\t\treadonly,\n\t\t\tisRTL,\n\t\t};\n\t}\n\n\t#clamp(v: number): number {\n\t\tconst { min, max } = this.#getConfig();\n\t\tlet result = v;\n\t\tif (min !== undefined && result < min) result = min;\n\t\tif (max !== undefined && result > max) result = max;\n\t\treturn result;\n\t}\n\n\t#formatDisplay(value: number | null): string {\n\t\tif (value === null || !Number.isFinite(value)) return \"\";\n\t\tconst { locale, decimals } = this.#getConfig();\n\t\treturn getInputFormatter(locale, decimals).format(value);\n\t}\n\n\t#render() {\n\t\tconst config = this.#getConfig();\n\t\tconst valAttr = this.getAttribute(\"value\");\n\t\tif (valAttr !== null && !this.#isFocused) {\n\t\t\tconst parsed = Number(valAttr);\n\t\t\tthis.#numericValue = Number.isFinite(parsed) ? parsed : null;\n\t\t}\n\n\t\tconst displayVal = this.#isFocused\n\t\t\t? undefined // keep current input value\n\t\t\t: this.#formatDisplay(this.#numericValue);\n\n\t\tconst strokeWidth = DIRHAM_STROKE_MAP[config.weight];\n\t\tconst strokeAttrs =\n\t\t\tstrokeWidth > 0\n\t\t\t\t? ` stroke=\"currentColor\" stroke-width=\"${strokeWidth}\" stroke-linejoin=\"round\" paint-order=\"stroke\"`\n\t\t\t\t: \"\";\n\n\t\tconst symbolHTML = config.showSymbol\n\t\t\t? config.useCode\n\t\t\t\t? `<span style=\"user-select:none;flex-shrink:0;${config.isRTL ? \"margin-left\" : \"margin-right\"}:0.5em\" aria-hidden=\"true\">AED</span>`\n\t\t\t\t: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 870\" width=\"${escapeHTML(String(config.symbolSize))}\" height=\"${escapeHTML(String(config.symbolSize))}\" fill=\"currentColor\" role=\"img\" aria-hidden=\"true\" style=\"display:inline-block;vertical-align:middle;flex-shrink:0;${config.isRTL ? \"margin-left\" : \"margin-right\"}:0.5em\"><path d=\"${SVG_PATH}\"${strokeAttrs}/></svg>`\n\t\t\t: \"\";\n\n\t\tconst placeholder =\n\t\t\tthis.getAttribute(\"placeholder\") ||\n\t\t\tgetInputFormatter(config.locale, config.decimals).format(0);\n\n\t\tconst html = `\n<style>\n:host { display: inline-flex; align-items: center; direction: ${config.isRTL ? \"rtl\" : \"ltr\"}; }\ninput { min-width: 0; flex: 1; border: none; background: transparent; font: inherit; color: inherit; outline: none; padding: 0; direction: ${config.isRTL ? \"rtl\" : \"ltr\"}; }\n</style>\n${config.isRTL ? \"\" : symbolHTML}\n<input type=\"text\" inputmode=\"decimal\" aria-label=\"Amount in AED\" placeholder=\"${escapeHTML(placeholder)}\"${config.disabled ? \" disabled\" : \"\"}${config.readonly ? \" readonly\" : \"\"}${displayVal !== undefined ? ` value=\"${escapeHTML(displayVal)}\"` : \"\"}/>\n${config.isRTL ? symbolHTML : \"\"}`;\n\n\t\t// Preserve input value during focus\n\t\tif (!this.#isFocused) {\n\t\t\tthis.#shadow.innerHTML = html;\n\t\t\tthis.#input = this.#shadow.querySelector(\"input\");\n\t\t}\n\t}\n\n\t#attachListeners() {\n\t\tconst input = this.#shadow.querySelector(\"input\");\n\t\tif (!input || input === this.#input) return;\n\t\tthis.#input = input;\n\n\t\tinput.addEventListener(\"focus\", () => {\n\t\t\tthis.#isFocused = true;\n\t\t\tconst plain =\n\t\t\t\tthis.#numericValue !== null && Number.isFinite(this.#numericValue)\n\t\t\t\t\t? this.#numericValue.toString()\n\t\t\t\t\t: \"\";\n\t\t\tinput.value = plain;\n\t\t\tsetTimeout(() => input.select(), 0);\n\t\t});\n\n\t\tinput.addEventListener(\"blur\", () => {\n\t\t\tthis.#isFocused = false;\n\t\t\tconst stripped = stripFormatting(input.value);\n\t\t\tconst { decimals } = this.#getConfig();\n\n\t\t\tif (stripped === \"\" || stripped === \".\" || stripped === \"-\") {\n\t\t\t\tthis.#numericValue = null;\n\t\t\t} else {\n\t\t\t\tlet parsed = Number.parseFloat(stripped);\n\t\t\t\tif (Number.isNaN(parsed)) {\n\t\t\t\t\tthis.#numericValue = null;\n\t\t\t\t} else {\n\t\t\t\t\tconst factor = 10 ** decimals;\n\t\t\t\t\tparsed = Math.round(parsed * factor) / factor;\n\t\t\t\t\tparsed = this.#clamp(parsed);\n\t\t\t\t\tthis.#numericValue = parsed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#render();\n\t\t\tthis.#attachListeners();\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent(\"dirham-change\", {\n\t\t\t\t\tdetail: { value: this.#numericValue },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\n\t\tinput.addEventListener(\"input\", () => {\n\t\t\tconst cleaned = stripFormatting(input.value);\n\t\t\tif (cleaned !== \"\" && !/^-?\\d*\\.?\\d*$/.test(cleaned)) {\n\t\t\t\t// Reject by reverting\n\t\t\t\tconst prev =\n\t\t\t\t\tthis.#numericValue !== null ? this.#numericValue.toString() : \"\";\n\t\t\t\tinput.value = prev;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { decimals } = this.#getConfig();\n\t\t\tconst dotIndex = cleaned.indexOf(\".\");\n\t\t\tif (dotIndex !== -1 && cleaned.slice(dotIndex + 1).length > decimals) {\n\t\t\t\tconst prev =\n\t\t\t\t\tthis.#numericValue !== null ? this.#numericValue.toString() : \"\";\n\t\t\t\tinput.value = prev;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tinput.value = cleaned;\n\t\t});\n\n\t\tinput.addEventListener(\"paste\", (e: ClipboardEvent) => {\n\t\t\te.preventDefault();\n\t\t\tconst pasted = e.clipboardData?.getData(\"text/plain\") ?? \"\";\n\t\t\tconst stripped = stripFormatting(pasted);\n\t\t\tif (stripped === \"\") return;\n\t\t\tconst { decimals } = this.#getConfig();\n\n\t\t\tlet final = stripped;\n\t\t\tconst dotIndex = stripped.indexOf(\".\");\n\t\t\tif (dotIndex !== -1) {\n\t\t\t\tfinal = `${stripped.slice(0, dotIndex)}.${stripped.slice(dotIndex + 1, dotIndex + 1 + decimals)}`;\n\t\t\t}\n\t\t\tif (!/^-?\\d*\\.?\\d*$/.test(final)) return;\n\n\t\t\tinput.value = final;\n\t\t\tconst parsed = Number.parseFloat(final);\n\t\t\tif (!Number.isNaN(parsed)) {\n\t\t\t\tconst factor = 10 ** decimals;\n\t\t\t\tthis.#numericValue = this.#clamp(Math.round(parsed * factor) / factor);\n\t\t\t}\n\t\t});\n\t}\n}\n\nif (\n\ttypeof customElements !== \"undefined\" &&\n\t!customElements.get(\"dirham-input\")\n) {\n\tcustomElements.define(\"dirham-input\", DirhamInputElement);\n}\n","import { DIRHAM_STROKE_MAP, type DirhamWeight } from \"../core/constants\";\nimport { formatDirham } from \"../core/format\";\n\nconst SVG_PATH =\n\t\"m88.3 1c0.4 0.6 2.6 3.3 4.7 5.9 15.3 18.2 26.8 47.8 33 85.1 4.1 24.5 4.3 32.2 4.3 125.6v87h-41.8c-38.2 0-42.6-0.2-50.1-1.7-11.8-2.5-24-9.2-32.2-17.8-6.5-6.9-6.3-7.3-5.9 13.6 0.5 17.3 0.7 19.2 3.2 28.6 4 14.9 9.5 26 17.8 35.9 11.3 13.6 22.8 21.2 39.2 26.3 3.5 1 10.9 1.4 37.1 1.6l32.7 0.5v43.3 43.4l-46.1-0.3-46.3-0.3-8-3.2c-9.5-3.8-13.8-6.6-23.1-14.9l-6.8-6.1 0.4 19.1c0.5 17.7 0.6 19.7 3.1 28.7 8.7 31.8 29.7 54.5 57.4 61.9 6.9 1.9 9.6 2 38.5 2.4l30.9 0.4v89.6c0 54.1-0.3 94-0.8 100.8-0.5 6.2-2.1 17.8-3.5 25.9-6.5 37.3-18.2 65.4-35 83.6l-3.4 3.7h169.1c101.1 0 176.7-0.4 187.8-0.9 19.5-1 63-5.3 72.8-7.4 3.1-0.6 8.9-1.5 12.7-2.1 8.1-1.2 21.5-4 40.8-8.9 27.2-6.8 52-15.3 76.3-26.1 7.6-3.4 29.4-14.5 35.2-18 3.1-1.8 6.8-4 8.2-4.7 3.9-2.1 10.4-6.3 19.9-13.1 4.7-3.4 9.4-6.7 10.4-7.4 4.2-2.8 18.7-14.9 25.3-21 25.1-23.1 46.1-48.8 62.4-76.3 2.3-4 5.3-9 6.6-11.1 3.3-5.6 16.9-33.6 18.2-37.8 0.6-1.9 1.4-3.9 1.8-4.3 2.6-3.4 17.6-50.6 19.4-60.9 0.6-3.3 0.9-3.8 3.4-4.3 1.6-0.3 24.9-0.3 51.8-0.1 53.8 0.4 53.8 0.4 65.7 5.9 6.7 3.1 8.7 4.5 16.1 11.2 9.7 8.7 8.8 10.1 8.2-11.7-0.4-12.8-0.9-20.7-1.8-23.9-3.4-12.3-4.2-14.9-7.2-21.1-9.8-21.4-26.2-36.7-47.2-44l-8.2-3-33.4-0.4-33.3-0.5 0.4-11.7c0.4-15.4 0.4-45.9-0.1-61.6l-0.4-12.6 44.6-0.2c38.2-0.2 45.3 0 49.5 1.1 12.6 3.5 21.1 8.3 31.5 17.8l5.8 5.4v-14.8c0-17.6-0.9-25.4-4.5-37-7.1-23.5-21.1-41-41.1-51.8-13-7-13.8-7.2-58.5-7.5-26.2-0.2-39.9-0.6-40.6-1.2-0.6-0.6-1.1-1.6-1.1-2.4 0-0.8-1.5-7.1-3.5-13.9-23.4-82.7-67.1-148.4-131-197.1-8.7-6.7-30-20.8-38.6-25.6-3.3-1.9-6.9-3.9-7.8-4.5-4.2-2.3-28.3-14.1-34.3-16.6-3.6-1.6-8.3-3.6-10.4-4.4-35.3-15.3-94.5-29.8-139.7-34.3-7.4-0.7-17.2-1.8-21.7-2.2-20.4-2.3-48.7-2.6-209.4-2.6-135.8 0-169.9 0.3-169.4 1zm330.7 43.3c33.8 2 54.6 4.6 78.9 10.5 74.2 17.6 126.4 54.8 164.3 117 3.5 5.8 18.3 36 20.5 42.1 10.5 28.3 15.6 45.1 20.1 67.3 1.1 5.4 2.6 12.6 3.3 16 0.7 3.3 1 6.4 0.7 6.7-0.5 0.4-100.9 0.6-223.3 0.5l-222.5-0.2-0.3-128.5c-0.1-70.6 0-129.3 0.3-130.4l0.4-1.9h71.1c39 0 78 0.4 86.5 0.9zm297.5 350.3c0.7 4.3 0.7 77.3 0 80.9l-0.6 2.7-227.5-0.2-227.4-0.3-0.2-42.4c-0.2-23.3 0-42.7 0.2-43.1 0.3-0.5 97.2-0.8 227.7-0.8h227.2zm-10.2 171.7c0.5 1.5-1.9 13.8-6.8 33.8-5.6 22.5-13.2 45.2-20.9 62-3.8 8.6-13.3 27.2-15.6 30.7-1.1 1.6-4.3 6.7-7.1 11.2-18 28.2-43.7 53.9-73 72.9-10.7 6.8-32.7 18.4-38.6 20.2-1.2 0.3-2.5 0.9-3 1.3-0.7 0.6-9.8 4-20.4 7.8-19.5 6.9-56.6 14.4-86.4 17.5-19.3 1.9-22.4 2-96.7 2h-76.9v-129.7-129.8l220.9-0.4c121.5-0.2 221.6-0.5 222.4-0.7 0.9-0.1 1.8 0.5 2.1 1.2z\";\n\nconst VALID_WEIGHTS = new Set<string>([\n\t\"thin\",\n\t\"extralight\",\n\t\"light\",\n\t\"regular\",\n\t\"medium\",\n\t\"semibold\",\n\t\"bold\",\n\t\"extrabold\",\n\t\"black\",\n]);\n\nconst EASING_FNS: Record<string, (t: number) => number> = {\n\tlinear: (t: number) => t,\n\teaseIn: (t: number) => t * t,\n\teaseOut: (t: number) => t * (2 - t),\n\teaseInOut: (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),\n};\n\n/**\n * `<dirham-animated-price>` — animated price display with count-up/down.\n *\n * @example\n * ```html\n * <dirham-animated-price amount=\"1250\" duration=\"600\"></dirham-animated-price>\n * <dirham-animated-price amount=\"5000\" easing=\"easeInOut\"></dirham-animated-price>\n * ```\n *\n * Attributes: amount, duration, easing, locale, decimals, notation, use-code,\n *             symbol-size, weight\n */\nexport class AnimatedDirhamPriceElement extends HTMLElement {\n\tstatic get observedAttributes() {\n\t\treturn [\n\t\t\t\"amount\",\n\t\t\t\"duration\",\n\t\t\t\"easing\",\n\t\t\t\"locale\",\n\t\t\t\"decimals\",\n\t\t\t\"notation\",\n\t\t\t\"use-code\",\n\t\t\t\"symbol-size\",\n\t\t\t\"weight\",\n\t\t];\n\t}\n\n\t#shadow: ShadowRoot;\n\t#currentAmount = 0;\n\t#targetAmount = 0;\n\t#frameId = 0;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#shadow = this.attachShadow({ mode: \"open\" });\n\t\tconst amountStr = this.getAttribute(\"amount\");\n\t\tthis.#currentAmount = amountStr !== null ? Number(amountStr) : 0;\n\t\tthis.#targetAmount = this.#currentAmount;\n\t\tthis.#renderFrame(this.#currentAmount);\n\t}\n\n\tattributeChangedCallback(name: string) {\n\t\tif (name === \"amount\") {\n\t\t\tconst newTarget = Number(this.getAttribute(\"amount\") ?? \"0\");\n\t\t\tif (Number.isFinite(newTarget) && newTarget !== this.#targetAmount) {\n\t\t\t\tthis.#animateTo(newTarget);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.#renderFrame(this.#currentAmount);\n\t\t}\n\t}\n\n\t#animateTo(target: number) {\n\t\tif (this.#frameId) cancelAnimationFrame(this.#frameId);\n\n\t\tconst from = this.#currentAmount;\n\t\tthis.#targetAmount = target;\n\t\tconst duration = Number(this.getAttribute(\"duration\") ?? \"600\");\n\t\tconst easingName = this.getAttribute(\"easing\") || \"easeOut\";\n\t\tconst easeFn = EASING_FNS[easingName] ?? EASING_FNS.easeOut;\n\t\tconst start = performance.now();\n\n\t\tconst animate = (now: number) => {\n\t\t\tconst elapsed = now - start;\n\t\t\tconst progress = Math.min(elapsed / duration, 1);\n\t\t\tconst eased = easeFn(progress);\n\t\t\tthis.#currentAmount = from + (target - from) * eased;\n\n\t\t\tthis.#renderFrame(this.#currentAmount);\n\n\t\t\tif (progress < 1) {\n\t\t\t\tthis.#frameId = requestAnimationFrame(animate);\n\t\t\t} else {\n\t\t\t\tthis.#currentAmount = target;\n\t\t\t\tthis.#renderFrame(target);\n\t\t\t\tthis.#frameId = 0;\n\t\t\t}\n\t\t};\n\n\t\tthis.#frameId = requestAnimationFrame(animate);\n\t}\n\n\t#escape(str: string): string {\n\t\treturn str\n\t\t\t.replace(/&/g, \"&amp;\")\n\t\t\t.replace(/</g, \"&lt;\")\n\t\t\t.replace(/>/g, \"&gt;\")\n\t\t\t.replace(/\"/g, \"&quot;\");\n\t}\n\n\t#renderFrame(amount: number) {\n\t\tconst locale = this.getAttribute(\"locale\") || \"en-AE\";\n\t\tconst decimals = Number(this.getAttribute(\"decimals\") ?? \"2\");\n\t\tconst notation =\n\t\t\tthis.getAttribute(\"notation\") === \"compact\" ? \"compact\" : \"standard\";\n\t\tconst useCode = this.hasAttribute(\"use-code\");\n\t\tconst symbolSize = this.getAttribute(\"symbol-size\") || \"1em\";\n\t\tconst weightAttr = this.getAttribute(\"weight\") || \"regular\";\n\t\tconst weight: DirhamWeight = VALID_WEIGHTS.has(weightAttr)\n\t\t\t? (weightAttr as DirhamWeight)\n\t\t\t: \"regular\";\n\n\t\tconst symbolFirst = !locale.startsWith(\"ar\");\n\t\tconst isRTL = locale.startsWith(\"ar\");\n\t\tconst dirAttr = isRTL ? ' dir=\"rtl\"' : \"\";\n\n\t\tlet formatted: string;\n\t\tif (!Number.isFinite(amount)) {\n\t\t\tformatted = \"—\";\n\t\t} else {\n\t\t\tformatted = formatDirham(amount, {\n\t\t\t\tlocale,\n\t\t\t\tdecimals,\n\t\t\t\tuseCode: true,\n\t\t\t\tnotation,\n\t\t\t})\n\t\t\t\t.replace(\"AED\", \"\")\n\t\t\t\t.trim();\n\t\t}\n\n\t\tif (useCode) {\n\t\t\tconst text = symbolFirst\n\t\t\t\t? `AED\\u00A0${formatted}`\n\t\t\t\t: `${formatted}\\u00A0AED`;\n\t\t\tthis.#shadow.innerHTML = `<span style=\"white-space:nowrap\"${dirAttr} aria-live=\"polite\" aria-atomic=\"true\">${this.#escape(text)}</span>`;\n\t\t\treturn;\n\t\t}\n\n\t\tconst strokeWidth = DIRHAM_STROKE_MAP[weight];\n\t\tconst strokeAttrs =\n\t\t\tstrokeWidth > 0\n\t\t\t\t? ` stroke=\"currentColor\" stroke-width=\"${strokeWidth}\" stroke-linejoin=\"round\" paint-order=\"stroke\"`\n\t\t\t\t: \"\";\n\n\t\tconst svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 870\" width=\"${this.#escape(String(symbolSize))}\" height=\"${this.#escape(String(symbolSize))}\" fill=\"currentColor\" role=\"img\" aria-label=\"UAE Dirham\" style=\"display:inline-block;vertical-align:middle\"><path d=\"${SVG_PATH}\"${strokeAttrs}/></svg>`;\n\n\t\tconst parts = symbolFirst\n\t\t\t? `${svg}\\u00A0${this.#escape(formatted)}`\n\t\t\t: `${this.#escape(formatted)}\\u00A0${svg}`;\n\n\t\tthis.#shadow.innerHTML = `<span style=\"white-space:nowrap\"${dirAttr} aria-live=\"polite\" aria-atomic=\"true\">${parts}</span>`;\n\t}\n}\n\nif (\n\ttypeof customElements !== \"undefined\" &&\n\t!customElements.get(\"dirham-animated-price\")\n) {\n\tcustomElements.define(\"dirham-animated-price\", AnimatedDirhamPriceElement);\n}\n"]}