@eigenpal/docx-js-editor 0.0.16 → 0.0.19

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 (211) hide show
  1. package/dist/ClipboardManager-D6dkOFg6.d.ts +436 -0
  2. package/dist/ClipboardManager-EZ0C6Onq.d.cts +436 -0
  3. package/dist/{DocumentAgent-Ci6_T-XM.d.ts → DocumentAgent-B0EC8lPC.d.cts} +2 -2
  4. package/dist/{DocumentAgent-DEGFgYEN.d.cts → DocumentAgent-BcCDg7i2.d.ts} +2 -2
  5. package/dist/{FindReplaceDialog-UMXCBBST.js → FindReplaceDialog-AWQXKEUQ.js} +2 -1
  6. package/dist/FindReplaceDialog-AWQXKEUQ.js.map +1 -0
  7. package/dist/FindReplaceDialog-I4SZDSVP.cjs +2 -0
  8. package/dist/FindReplaceDialog-I4SZDSVP.cjs.map +1 -0
  9. package/dist/{FootnotePropertiesDialog-OBQXOBJE.cjs → FootnotePropertiesDialog-73VT2ZVZ.cjs} +2 -1
  10. package/dist/FootnotePropertiesDialog-73VT2ZVZ.cjs.map +1 -0
  11. package/dist/{FootnotePropertiesDialog-TYQGPWPX.js → FootnotePropertiesDialog-ZM3EF3EF.js} +2 -1
  12. package/dist/FootnotePropertiesDialog-ZM3EF3EF.js.map +1 -0
  13. package/dist/{HyperlinkDialog-UOERZIBM.js → HyperlinkDialog-BA25XUT5.js} +2 -1
  14. package/dist/HyperlinkDialog-BA25XUT5.js.map +1 -0
  15. package/dist/HyperlinkDialog-V63LPOT2.cjs +2 -0
  16. package/dist/HyperlinkDialog-V63LPOT2.cjs.map +1 -0
  17. package/dist/{ImagePositionDialog-52FDANUK.js → ImagePositionDialog-AIAMKPFK.js} +2 -1
  18. package/dist/ImagePositionDialog-AIAMKPFK.js.map +1 -0
  19. package/dist/{ImagePositionDialog-ZK5WFBRC.cjs → ImagePositionDialog-KMK7ROV2.cjs} +2 -1
  20. package/dist/ImagePositionDialog-KMK7ROV2.cjs.map +1 -0
  21. package/dist/{ImagePropertiesDialog-YPSLPSF6.js → ImagePropertiesDialog-ERFCUVCW.js} +2 -1
  22. package/dist/ImagePropertiesDialog-ERFCUVCW.js.map +1 -0
  23. package/dist/{ImagePropertiesDialog-LU44RDIY.cjs → ImagePropertiesDialog-USMMRK6X.cjs} +2 -1
  24. package/dist/ImagePropertiesDialog-USMMRK6X.cjs.map +1 -0
  25. package/dist/{TablePropertiesDialog-KMOYHPGF.cjs → TablePropertiesDialog-72CIUAZT.cjs} +2 -1
  26. package/dist/TablePropertiesDialog-72CIUAZT.cjs.map +1 -0
  27. package/dist/{TablePropertiesDialog-OUUJAA7D.js → TablePropertiesDialog-EMUEVYB3.js} +2 -1
  28. package/dist/TablePropertiesDialog-EMUEVYB3.js.map +1 -0
  29. package/dist/{agentApi-CbVUCZRu.d.cts → agentApi-BFVyKagE.d.cts} +143 -2
  30. package/dist/{agentApi-CbVUCZRu.d.ts → agentApi-BFVyKagE.d.ts} +143 -2
  31. package/dist/{chunk-OEOUMSWH.cjs → chunk-2CHPKB5A.cjs} +8 -7
  32. package/dist/chunk-2CHPKB5A.cjs.map +1 -0
  33. package/dist/{chunk-R5SKERM2.js → chunk-2QOEHCBX.js} +2 -1
  34. package/dist/chunk-2QOEHCBX.js.map +1 -0
  35. package/dist/chunk-4QT5LPBA.cjs +24 -0
  36. package/dist/chunk-4QT5LPBA.cjs.map +1 -0
  37. package/dist/chunk-5DYSI4O4.cjs +60 -0
  38. package/dist/chunk-5DYSI4O4.cjs.map +1 -0
  39. package/dist/{chunk-DYQUXFE5.cjs → chunk-5FJXHXFV.cjs} +2 -1
  40. package/dist/chunk-5FJXHXFV.cjs.map +1 -0
  41. package/dist/chunk-6FEWNF6B.js +4 -0
  42. package/dist/chunk-6FEWNF6B.js.map +1 -0
  43. package/dist/chunk-6LF5HZCV.js +10 -0
  44. package/dist/chunk-6LF5HZCV.js.map +1 -0
  45. package/dist/{chunk-EMKABJPH.js → chunk-7JSPKVOW.js} +2 -1
  46. package/dist/chunk-7JSPKVOW.js.map +1 -0
  47. package/dist/chunk-C33XDRDJ.cjs +28 -0
  48. package/dist/chunk-C33XDRDJ.cjs.map +1 -0
  49. package/dist/chunk-CV5WFE7K.js +24 -0
  50. package/dist/chunk-CV5WFE7K.js.map +1 -0
  51. package/dist/{chunk-WFYRA2TH.js → chunk-CXJRNISO.js} +2 -1
  52. package/dist/chunk-CXJRNISO.js.map +1 -0
  53. package/dist/{chunk-VTAS7VZ6.cjs → chunk-DJAEBZ33.cjs} +2 -1
  54. package/dist/chunk-DJAEBZ33.cjs.map +1 -0
  55. package/dist/chunk-DP6Q75ZD.js +28 -0
  56. package/dist/chunk-DP6Q75ZD.js.map +1 -0
  57. package/dist/chunk-FDANI5P4.cjs +2 -0
  58. package/dist/chunk-FDANI5P4.cjs.map +1 -0
  59. package/dist/chunk-FGVGZLBL.js +2 -0
  60. package/dist/chunk-FGVGZLBL.js.map +1 -0
  61. package/dist/{chunk-SF53KLDZ.cjs → chunk-GJ4GKSDU.cjs} +2 -1
  62. package/dist/chunk-GJ4GKSDU.cjs.map +1 -0
  63. package/dist/{chunk-FYAWM7MP.cjs → chunk-GWBTKVFD.cjs} +2 -1
  64. package/dist/chunk-GWBTKVFD.cjs.map +1 -0
  65. package/dist/{chunk-WFWLPKQA.js → chunk-JOYPFQW2.js} +2 -1
  66. package/dist/chunk-JOYPFQW2.js.map +1 -0
  67. package/dist/{chunk-ZDYHAYN6.js → chunk-L54YNLSE.js} +2 -1
  68. package/dist/chunk-L54YNLSE.js.map +1 -0
  69. package/dist/chunk-LPGMLJMO.js +259 -0
  70. package/dist/chunk-LPGMLJMO.js.map +1 -0
  71. package/dist/{chunk-CTYOM6BE.js → chunk-M2T6XKT5.js} +2 -1
  72. package/dist/chunk-M2T6XKT5.js.map +1 -0
  73. package/dist/chunk-OHG7ROFC.js +11 -0
  74. package/dist/chunk-OHG7ROFC.js.map +1 -0
  75. package/dist/chunk-PANKMCFX.cjs +4 -0
  76. package/dist/chunk-PANKMCFX.cjs.map +1 -0
  77. package/dist/{chunk-PJVI53AH.js → chunk-Q6HUGWO6.js} +2 -1
  78. package/dist/chunk-Q6HUGWO6.js.map +1 -0
  79. package/dist/{chunk-MLSHZVL7.js → chunk-QDV75OJ4.js} +8 -7
  80. package/dist/chunk-QDV75OJ4.js.map +1 -0
  81. package/dist/chunk-QEBO3EQP.cjs +2 -0
  82. package/dist/chunk-QEBO3EQP.cjs.map +1 -0
  83. package/dist/chunk-QVIZ775M.cjs +259 -0
  84. package/dist/chunk-QVIZ775M.cjs.map +1 -0
  85. package/dist/chunk-RMUMR42R.cjs +10 -0
  86. package/dist/chunk-RMUMR42R.cjs.map +1 -0
  87. package/dist/{chunk-XS2AQFMF.cjs → chunk-S26DZVRQ.cjs} +2 -1
  88. package/dist/chunk-S26DZVRQ.cjs.map +1 -0
  89. package/dist/{chunk-L34XFLQZ.cjs → chunk-T2HQYRA7.cjs} +2 -1
  90. package/dist/chunk-T2HQYRA7.cjs.map +1 -0
  91. package/dist/chunk-ULXNEG66.js +60 -0
  92. package/dist/chunk-ULXNEG66.js.map +1 -0
  93. package/dist/{chunk-PXC7ARQB.cjs → chunk-WD2HTKRR.cjs} +2 -1
  94. package/dist/chunk-WD2HTKRR.cjs.map +1 -0
  95. package/dist/chunk-XZNOV52K.cjs +11 -0
  96. package/dist/chunk-XZNOV52K.cjs.map +1 -0
  97. package/dist/chunk-Y6VCTLCJ.js +2 -0
  98. package/dist/chunk-Y6VCTLCJ.js.map +1 -0
  99. package/dist/{clipboard-Cx7cb3kX.d.cts → clipboard-CqE-UZ2d.d.cts} +1 -1
  100. package/dist/{clipboard-BOocwmAM.d.ts → clipboard-beGtyabO.d.ts} +1 -1
  101. package/dist/{colorResolver-KXbUgzWC.d.ts → colorResolver-B5YbO_a4.d.ts} +170 -170
  102. package/dist/{colorResolver-CIDiSPWd.d.cts → colorResolver-Cu46bSKr.d.cts} +170 -170
  103. package/dist/core-plugins-reexport.cjs +2 -0
  104. package/dist/core-plugins-reexport.cjs.map +1 -0
  105. package/dist/{core-plugins.d.cts → core-plugins-reexport.d.cts} +4 -4
  106. package/dist/{core-plugins.d.ts → core-plugins-reexport.d.ts} +4 -4
  107. package/dist/core-plugins-reexport.js +2 -0
  108. package/dist/core-plugins-reexport.js.map +1 -0
  109. package/dist/core-reexport.cjs +2 -0
  110. package/dist/core-reexport.cjs.map +1 -0
  111. package/dist/core-reexport.d.cts +309 -0
  112. package/dist/core-reexport.d.ts +309 -0
  113. package/dist/core-reexport.js +2 -0
  114. package/dist/core-reexport.js.map +1 -0
  115. package/dist/executor-K5RXUTTR.js +2 -0
  116. package/dist/executor-K5RXUTTR.js.map +1 -0
  117. package/dist/executor-XIPIU3H4.cjs +2 -0
  118. package/dist/executor-XIPIU3H4.cjs.map +1 -0
  119. package/dist/{insertOperations-CzB5b-Of.d.ts → fontLoader-CFKpg0Ri.d.ts} +86 -86
  120. package/dist/{insertOperations-DKVmCV32.d.cts → fontLoader-HZYfILUm.d.cts} +86 -86
  121. package/dist/headless-reexport.cjs +5 -0
  122. package/dist/headless-reexport.cjs.map +1 -0
  123. package/dist/{headless.d.cts → headless-reexport.d.cts} +7 -7
  124. package/dist/{headless.d.ts → headless-reexport.d.ts} +7 -7
  125. package/dist/{headless.js → headless-reexport.js} +3 -2
  126. package/dist/headless-reexport.js.map +1 -0
  127. package/dist/index.cjs +6 -5
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.css +1 -0
  130. package/dist/index.css.map +1 -0
  131. package/dist/index.d.cts +15 -13
  132. package/dist/index.d.ts +15 -13
  133. package/dist/index.js +6 -5
  134. package/dist/index.js.map +1 -0
  135. package/dist/{mcp.cjs → mcp-reexport.cjs} +11 -10
  136. package/dist/mcp-reexport.cjs.map +1 -0
  137. package/dist/{mcp.d.cts → mcp-reexport.d.cts} +2 -2
  138. package/dist/{mcp.d.ts → mcp-reexport.d.ts} +2 -2
  139. package/dist/{mcp.js → mcp-reexport.js} +10 -9
  140. package/dist/mcp-reexport.js.map +1 -0
  141. package/dist/{processTemplate-RJN6452W.js → processTemplate-G37IM66O.js} +2 -1
  142. package/dist/processTemplate-G37IM66O.js.map +1 -0
  143. package/dist/processTemplate-RFBGVH7T.cjs +2 -0
  144. package/dist/processTemplate-RFBGVH7T.cjs.map +1 -0
  145. package/dist/{react-BZxD04XV.d.ts → react-BjOCdeTs.d.ts} +43 -366
  146. package/dist/{react-D8eAYckC.d.cts → react-UzAn4o7l.d.cts} +43 -366
  147. package/dist/react.cjs +2 -1
  148. package/dist/react.cjs.map +1 -0
  149. package/dist/react.css +1 -0
  150. package/dist/react.css.map +1 -0
  151. package/dist/react.d.cts +6 -5
  152. package/dist/react.d.ts +6 -5
  153. package/dist/react.js +2 -1
  154. package/dist/react.js.map +1 -0
  155. package/dist/{registry-D4tvj9f3.d.ts → registry-CV6nYWqP.d.ts} +1 -1
  156. package/dist/{registry-ngv6Bumt.d.cts → registry-DjacfR6Q.d.cts} +1 -1
  157. package/dist/selectionRects-6DU7HN7E.js +2 -0
  158. package/dist/selectionRects-6DU7HN7E.js.map +1 -0
  159. package/dist/selectionRects-YZSC24ZP.cjs +2 -0
  160. package/dist/selectionRects-YZSC24ZP.cjs.map +1 -0
  161. package/dist/styles.css +1 -1
  162. package/dist/{types-D96elyJF.d.cts → types-Bnp8rvJn.d.cts} +2 -2
  163. package/dist/{types-xMzSPT4i.d.ts → types-DwZ3xysp.d.ts} +2 -2
  164. package/dist/ui.cjs +2 -1
  165. package/dist/ui.cjs.map +1 -0
  166. package/dist/ui.d.cts +3 -3
  167. package/dist/ui.d.ts +3 -3
  168. package/dist/ui.js +2 -1
  169. package/dist/ui.js.map +1 -0
  170. package/dist/{variableDetector-DeM1N-_L.d.ts → variableDetector-BaDeXz7D.d.ts} +1 -1
  171. package/dist/{variableDetector-CPxKo9jP.d.cts → variableDetector-CMhJtM96.d.cts} +1 -1
  172. package/package.json +26 -79
  173. package/LICENSE +0 -21
  174. package/README.md +0 -171
  175. package/dist/FindReplaceDialog-46BE7Q2G.cjs +0 -1
  176. package/dist/HyperlinkDialog-22NH7ZLP.cjs +0 -1
  177. package/dist/chunk-24N3L4IL.cjs +0 -258
  178. package/dist/chunk-2ASOEN3V.js +0 -1
  179. package/dist/chunk-46OFHSPJ.cjs +0 -2
  180. package/dist/chunk-65OFYOHF.cjs +0 -58
  181. package/dist/chunk-6YFGCUHU.js +0 -4
  182. package/dist/chunk-ESI4BSBF.js +0 -1
  183. package/dist/chunk-GLFFXY2X.js +0 -258
  184. package/dist/chunk-ITWEFKGQ.cjs +0 -1
  185. package/dist/chunk-JKN7TNPA.js +0 -12
  186. package/dist/chunk-KESNGXGO.js +0 -1
  187. package/dist/chunk-NO7WUK5E.cjs +0 -12
  188. package/dist/chunk-NT2REEAA.cjs +0 -1
  189. package/dist/chunk-O7QVCJN6.cjs +0 -4
  190. package/dist/chunk-OW5H5DNE.cjs +0 -1
  191. package/dist/chunk-OWMXCVKB.js +0 -1
  192. package/dist/chunk-RM3ITJ2H.cjs +0 -10
  193. package/dist/chunk-TOI5W3HK.js +0 -8
  194. package/dist/chunk-UAVOWAIF.cjs +0 -8
  195. package/dist/chunk-ULNHBTYA.js +0 -2
  196. package/dist/chunk-UXXV4GT6.js +0 -10
  197. package/dist/chunk-VOWKSURW.cjs +0 -1
  198. package/dist/chunk-YMXKVLTU.js +0 -58
  199. package/dist/core-plugins.cjs +0 -1
  200. package/dist/core-plugins.js +0 -1
  201. package/dist/core.cjs +0 -1
  202. package/dist/core.d.cts +0 -23
  203. package/dist/core.d.ts +0 -23
  204. package/dist/core.js +0 -1
  205. package/dist/executor-ITYZTNSH.cjs +0 -1
  206. package/dist/executor-TC7CLATE.js +0 -1
  207. package/dist/headless.cjs +0 -4
  208. package/dist/mcp-cli.js +0 -136
  209. package/dist/processTemplate-525HZL4S.cjs +0 -1
  210. package/dist/selectionRects-PQEUEW35.cjs +0 -1
  211. package/dist/selectionRects-QAG5RSHD.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/src/utils/colorResolver.ts","../../core/src/utils/units.ts"],"names":["DEFAULT_THEME_COLORS","HIGHLIGHT_COLORS","THEME_COLOR_ALIASES","parseModifierValue","hexValue","parsed","hexToRgb","hex","normalized","g","b","rgbToHex","r","toHex","n","rgbToHsl","max","min","l","d","s","h","hslToRgb","gray","hue2rgb","p","q","t","applyTint","tint","rgb","hsl","newRgb","applyShade","shade","getThemeColorValue","theme","slot","schemeKey","schemeKeys","isSchemeKey","key","resolveThemeColorSlot","colorName","resolveColor","color","defaultColor","hexColor","tintValue","shadeValue","resolveHighlightColor","highlight","resolveShadingColor","isBlack","isWhite","getContrastingColor","backgroundColor","bgHex","bgRgb","parseColorString","colorString","themeSlot","c","createThemeColor","themeColor","result","createRgbColor","darkenColor","percent","lightenColor","blendColors","color1","color2","ratio","resolved1","resolved2","rgb1","rgb2","blended","colorsEqual","twipsToPixels","twips","pixelsToTwips","px","emuToPixels","emu","pixelsToEmu","emuToTwips","twipsToEmu","pointsToPixels","points","halfPointsToPixels","halfPoints","halfPointsToPoints","eighthsToPixels","eighths","roundPixels","decimalPlaces","factor","formatPx"],"mappings":"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","file":"chunk-L54YNLSE.js","sourcesContent":["/**\n * Color Resolver - Convert OOXML colors to CSS\n *\n * Handles:\n * - Theme color references (accent1, dk1, etc.)\n * - RGB hex values\n * - \"auto\" colors (context-dependent)\n * - Tint/shade modifications\n *\n * OOXML Color References:\n * - w:color/@w:val - RGB hex or \"auto\"\n * - w:color/@w:themeColor - Theme color slot\n * - w:color/@w:themeTint - Tint modifier (0-255, hex)\n * - w:color/@w:themeShade - Shade modifier (0-255, hex)\n *\n * Tint/Shade Calculations:\n * - Tint makes color lighter (blend with white)\n * - Shade makes color darker (blend with black)\n * - Value is in hex (00-FF), converted to 0-1 for calculation\n */\n\nimport type { ColorValue, Theme, ThemeColorSlot, ThemeColorScheme } from '../types/document';\n\n/**\n * Default theme colors (Office 2016 default theme)\n */\nconst DEFAULT_THEME_COLORS: ThemeColorScheme = {\n dk1: '000000',\n lt1: 'FFFFFF',\n dk2: '44546A',\n lt2: 'E7E6E6',\n accent1: '4472C4',\n accent2: 'ED7D31',\n accent3: 'A5A5A5',\n accent4: 'FFC000',\n accent5: '5B9BD5',\n accent6: '70AD47',\n hlink: '0563C1',\n folHlink: '954F72',\n};\n\n/**\n * Highlight color mapping to hex values\n * These are the W3C standard colors for Word highlighting\n */\nconst HIGHLIGHT_COLORS: Record<string, string> = {\n black: '000000',\n blue: '0000FF',\n cyan: '00FFFF',\n darkBlue: '00008B',\n darkCyan: '008B8B',\n darkGray: 'A9A9A9',\n darkGreen: '006400',\n darkMagenta: '8B008B',\n darkRed: '8B0000',\n darkYellow: '808000',\n green: '00FF00',\n lightGray: 'D3D3D3',\n magenta: 'FF00FF',\n red: 'FF0000',\n white: 'FFFFFF',\n yellow: 'FFFF00',\n none: '',\n};\n\n/**\n * Map alternative theme color names to standard slots\n * OOXML uses different names in different contexts\n */\nconst THEME_COLOR_ALIASES: Record<string, ThemeColorSlot> = {\n // Standard names\n dk1: 'dk1',\n lt1: 'lt1',\n dk2: 'dk2',\n lt2: 'lt2',\n accent1: 'accent1',\n accent2: 'accent2',\n accent3: 'accent3',\n accent4: 'accent4',\n accent5: 'accent5',\n accent6: 'accent6',\n hlink: 'hlink',\n folHlink: 'folHlink',\n // Alternative names used in some OOXML contexts\n dark1: 'dk1',\n light1: 'lt1',\n dark2: 'dk2',\n light2: 'lt2',\n hyperlink: 'hlink',\n followedHyperlink: 'folHlink',\n // Background/text names (map to dk1/lt1)\n background1: 'lt1',\n text1: 'dk1',\n background2: 'lt2',\n text2: 'dk2',\n tx1: 'dk1',\n tx2: 'dk2',\n bg1: 'lt1',\n bg2: 'lt2',\n};\n\n/**\n * Parse a hex color modifier value (tint or shade)\n * OOXML stores tint/shade as hex string (00-FF) representing 0-255\n *\n * @param hexValue - Hex string like \"80\" or \"FF\"\n * @returns Decimal value 0-1\n */\nfunction parseModifierValue(hexValue: string | undefined): number {\n if (!hexValue) return 1;\n\n const parsed = parseInt(hexValue, 16);\n if (isNaN(parsed)) return 1;\n\n // Value is 0-255, convert to 0-1\n return parsed / 255;\n}\n\n/**\n * Parse RGB hex color to component values\n *\n * @param hex - 6-character hex color (no #)\n * @returns RGB object with r, g, b values 0-255\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } {\n // Ensure 6 characters\n const normalized = hex.padStart(6, '0').slice(0, 6);\n\n const r = parseInt(normalized.slice(0, 2), 16);\n const g = parseInt(normalized.slice(2, 4), 16);\n const b = parseInt(normalized.slice(4, 6), 16);\n\n return {\n r: isNaN(r) ? 0 : r,\n g: isNaN(g) ? 0 : g,\n b: isNaN(b) ? 0 : b,\n };\n}\n\n/**\n * Convert RGB values to hex color\n *\n * @param r - Red 0-255\n * @param g - Green 0-255\n * @param b - Blue 0-255\n * @returns 6-character hex color (no #)\n */\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (n: number) =>\n Math.max(0, Math.min(255, Math.round(n)))\n .toString(16)\n .padStart(2, '0');\n\n return `${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();\n}\n\n/**\n * Convert RGB to HSL\n *\n * @param r - Red 0-255\n * @param g - Green 0-255\n * @param b - Blue 0-255\n * @returns HSL object with h (0-360), s (0-1), l (0-1)\n */\nfunction rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n\n if (max === min) {\n return { h: 0, s: 0, l };\n }\n\n const d = max - min;\n const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n let h: number;\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n default:\n h = 0;\n }\n\n return { h: h * 360, s, l };\n}\n\n/**\n * Convert HSL to RGB\n *\n * @param h - Hue 0-360\n * @param s - Saturation 0-1\n * @param l - Lightness 0-1\n * @returns RGB object with r, g, b values 0-255\n */\nfunction hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n h = h / 360;\n\n if (s === 0) {\n const gray = Math.round(l * 255);\n return { r: gray, g: gray, b: gray };\n }\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n return {\n r: Math.round(hue2rgb(p, q, h + 1 / 3) * 255),\n g: Math.round(hue2rgb(p, q, h) * 255),\n b: Math.round(hue2rgb(p, q, h - 1 / 3) * 255),\n };\n}\n\n/**\n * Apply tint to a color (make lighter by blending with white)\n *\n * OOXML tint algorithm:\n * - Converts to HSL\n * - Adjusts luminance: newLum = lum + (1 - lum) * tint\n *\n * @param hex - 6-character hex color (no #)\n * @param tint - Tint value 0-1 (0 = no change, 1 = fully white)\n * @returns Modified hex color\n */\nfunction applyTint(hex: string, tint: number): string {\n if (tint <= 0 || tint >= 1) {\n return tint >= 1 ? 'FFFFFF' : hex;\n }\n\n const rgb = hexToRgb(hex);\n const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n // Apply tint: increase luminance toward white\n hsl.l = hsl.l + (1 - hsl.l) * tint;\n\n const newRgb = hslToRgb(hsl.h, hsl.s, hsl.l);\n return rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n}\n\n/**\n * Apply shade to a color (make darker by blending with black)\n *\n * OOXML shade algorithm:\n * - Converts to HSL\n * - Adjusts luminance: newLum = lum * shade\n *\n * @param hex - 6-character hex color (no #)\n * @param shade - Shade value 0-1 (0 = fully black, 1 = no change)\n * @returns Modified hex color\n */\nfunction applyShade(hex: string, shade: number): string {\n if (shade <= 0 || shade >= 1) {\n return shade <= 0 ? '000000' : hex;\n }\n\n const rgb = hexToRgb(hex);\n const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n // Apply shade: decrease luminance toward black\n hsl.l = hsl.l * shade;\n\n const newRgb = hslToRgb(hsl.h, hsl.s, hsl.l);\n return rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n}\n\n/**\n * Get a theme color by slot name\n *\n * @param theme - Theme object\n * @param slot - Color slot name\n * @returns Hex color (6 characters, no #)\n */\nfunction getThemeColorValue(theme: Theme | null | undefined, slot: ThemeColorSlot): string {\n // Map alias slots to actual color scheme keys\n const schemeKey = THEME_COLOR_ALIASES[slot] ?? slot;\n\n // Define the actual keys that exist on ThemeColorScheme\n const schemeKeys = [\n 'dk1',\n 'lt1',\n 'dk2',\n 'lt2',\n 'accent1',\n 'accent2',\n 'accent3',\n 'accent4',\n 'accent5',\n 'accent6',\n 'hlink',\n 'folHlink',\n ] as const;\n type SchemeKey = (typeof schemeKeys)[number];\n\n const isSchemeKey = (key: string): key is SchemeKey => schemeKeys.includes(key as SchemeKey);\n\n if (!theme?.colorScheme) {\n if (isSchemeKey(schemeKey)) {\n return DEFAULT_THEME_COLORS[schemeKey] ?? '000000';\n }\n return '000000';\n }\n\n if (isSchemeKey(schemeKey)) {\n return theme.colorScheme[schemeKey] ?? DEFAULT_THEME_COLORS[schemeKey] ?? '000000';\n }\n\n return '000000';\n}\n\n/**\n * Resolve a theme color name to a standard slot\n *\n * @param colorName - Theme color name (could be alias)\n * @returns Standard ThemeColorSlot or null if unknown\n */\nfunction resolveThemeColorSlot(colorName: string): ThemeColorSlot | null {\n if (!colorName) return null;\n\n const normalized = colorName.toLowerCase();\n const slot = THEME_COLOR_ALIASES[colorName] ?? THEME_COLOR_ALIASES[normalized];\n\n return slot ?? null;\n}\n\n/**\n * Resolve a ColorValue to a CSS color string\n *\n * @param color - ColorValue object with rgb, themeColor, tint/shade, or auto\n * @param theme - Theme for resolving theme colors\n * @param defaultColor - Default color if auto or undefined (default: black)\n * @returns CSS color string (e.g., \"#FF0000\" or \"inherit\")\n */\nexport function resolveColor(\n color: ColorValue | undefined | null,\n theme: Theme | null | undefined,\n defaultColor: string = '000000'\n): string {\n if (!color) {\n return `#${defaultColor}`;\n }\n\n // Handle \"auto\" color\n if (color.auto) {\n // Auto typically means black for text, but can be context-dependent\n return `#${defaultColor}`;\n }\n\n let hexColor: string;\n\n // Check for theme color first\n if (color.themeColor) {\n const slot = resolveThemeColorSlot(color.themeColor);\n if (slot) {\n hexColor = getThemeColorValue(theme, slot);\n } else {\n // Unknown theme color, use RGB if available or default\n hexColor = color.rgb ?? defaultColor;\n }\n\n // Apply tint/shade modifiers\n if (color.themeTint) {\n const tintValue = parseModifierValue(color.themeTint);\n hexColor = applyTint(hexColor, tintValue);\n } else if (color.themeShade) {\n const shadeValue = parseModifierValue(color.themeShade);\n hexColor = applyShade(hexColor, shadeValue);\n }\n } else if (color.rgb) {\n // Direct RGB value\n hexColor = color.rgb;\n } else {\n // No color specified\n hexColor = defaultColor;\n }\n\n // Ensure proper format\n return `#${hexColor.toUpperCase().replace(/^#/, '')}`;\n}\n\n/**\n * Resolve a highlight color name to CSS\n *\n * @param highlight - Highlight color name (e.g., \"yellow\", \"cyan\")\n * @returns CSS color string or empty string for \"none\"\n */\nexport function resolveHighlightColor(highlight: string | undefined): string {\n if (!highlight || highlight === 'none') {\n return '';\n }\n\n const hex = HIGHLIGHT_COLORS[highlight];\n return hex ? `#${hex}` : '';\n}\n\n/**\n * Resolve a shading fill or pattern color to CSS\n *\n * @param color - ColorValue for fill\n * @param theme - Theme for resolving theme colors\n * @returns CSS color string\n */\nexport function resolveShadingColor(\n color: ColorValue | undefined | null,\n theme: Theme | null | undefined\n): string {\n if (!color) return '';\n\n // For shading, \"auto\" typically means transparent\n if (color.auto) {\n return 'transparent';\n }\n\n return resolveColor(color, theme);\n}\n\n/**\n * Check if a color is effectively black\n *\n * @param color - ColorValue object\n * @param theme - Theme for resolving theme colors\n * @returns True if color resolves to black or very dark\n */\nexport function isBlack(\n color: ColorValue | undefined | null,\n theme: Theme | null | undefined\n): boolean {\n if (!color) return false;\n if (color.auto) return true;\n\n const resolved = resolveColor(color, theme);\n const hex = resolved.replace(/^#/, '').toLowerCase();\n\n // Check if it's black or very dark\n const rgb = hexToRgb(hex);\n const luminance = (rgb.r + rgb.g + rgb.b) / 3;\n\n return luminance < 20;\n}\n\n/**\n * Check if a color is effectively white\n *\n * @param color - ColorValue object\n * @param theme - Theme for resolving theme colors\n * @returns True if color resolves to white or very light\n */\nexport function isWhite(\n color: ColorValue | undefined | null,\n theme: Theme | null | undefined\n): boolean {\n if (!color) return false;\n\n const resolved = resolveColor(color, theme);\n const hex = resolved.replace(/^#/, '').toLowerCase();\n\n // Check if it's white or very light\n const rgb = hexToRgb(hex);\n const luminance = (rgb.r + rgb.g + rgb.b) / 3;\n\n return luminance > 235;\n}\n\n/**\n * Get contrasting text color for a background\n *\n * @param backgroundColor - Background ColorValue\n * @param theme - Theme for resolving theme colors\n * @returns Black or white hex color for best contrast\n */\nexport function getContrastingColor(\n backgroundColor: ColorValue | undefined | null,\n theme: Theme | null | undefined\n): string {\n if (!backgroundColor) return '#000000';\n\n const bgResolved = resolveColor(backgroundColor, theme);\n const bgHex = bgResolved.replace(/^#/, '');\n const bgRgb = hexToRgb(bgHex);\n\n // Calculate relative luminance using sRGB formula\n const luminance = (0.299 * bgRgb.r + 0.587 * bgRgb.g + 0.114 * bgRgb.b) / 255;\n\n // Return black for light backgrounds, white for dark\n return luminance > 0.5 ? '#000000' : '#FFFFFF';\n}\n\n/**\n * Parse a color string (various formats) to ColorValue\n *\n * @param colorString - Color string like \"FF0000\", \"auto\", or theme color name\n * @returns ColorValue object\n */\nexport function parseColorString(colorString: string | undefined): ColorValue | undefined {\n if (!colorString) return undefined;\n\n const normalized = colorString.trim();\n\n if (normalized.toLowerCase() === 'auto') {\n return { auto: true };\n }\n\n // Check if it's a theme color name\n const themeSlot = resolveThemeColorSlot(normalized);\n if (themeSlot) {\n return { themeColor: themeSlot };\n }\n\n // Assume it's an RGB hex value\n // Remove # if present and normalize to 6 chars\n const hex = normalized.replace(/^#/, '').toUpperCase();\n\n // Validate hex format\n if (/^[0-9A-F]{6}$/i.test(hex)) {\n return { rgb: hex };\n }\n\n // 3-character shorthand\n if (/^[0-9A-F]{3}$/i.test(hex)) {\n const expanded = hex\n .split('')\n .map((c) => c + c)\n .join('');\n return { rgb: expanded };\n }\n\n // Unknown format, return as RGB anyway\n return { rgb: hex.padStart(6, '0').slice(0, 6) };\n}\n\n/**\n * Create a ColorValue from theme color reference\n *\n * @param themeColor - Theme color slot name\n * @param tint - Optional tint modifier\n * @param shade - Optional shade modifier\n * @returns ColorValue object\n */\nexport function createThemeColor(\n themeColor: ThemeColorSlot,\n tint?: number,\n shade?: number\n): ColorValue {\n const result: ColorValue = { themeColor };\n\n if (tint !== undefined && tint > 0 && tint < 1) {\n result.themeTint = Math.round(tint * 255)\n .toString(16)\n .toUpperCase()\n .padStart(2, '0');\n }\n\n if (shade !== undefined && shade > 0 && shade < 1) {\n result.themeShade = Math.round(shade * 255)\n .toString(16)\n .toUpperCase()\n .padStart(2, '0');\n }\n\n return result;\n}\n\n/**\n * Create a ColorValue from RGB hex\n *\n * @param hex - 6-character hex color (no #)\n * @returns ColorValue object\n */\nexport function createRgbColor(hex: string): ColorValue {\n return { rgb: hex.replace(/^#/, '').toUpperCase() };\n}\n\n/**\n * Darken a color by a percentage\n *\n * @param color - ColorValue to darken\n * @param theme - Theme for resolving\n * @param percent - Percentage to darken (0-100)\n * @returns CSS color string\n */\nexport function darkenColor(\n color: ColorValue | undefined | null,\n theme: Theme | null | undefined,\n percent: number\n): string {\n const resolved = resolveColor(color, theme);\n const hex = resolved.replace(/^#/, '');\n const shade = 1 - percent / 100;\n return `#${applyShade(hex, shade)}`;\n}\n\n/**\n * Lighten a color by a percentage\n *\n * @param color - ColorValue to lighten\n * @param theme - Theme for resolving\n * @param percent - Percentage to lighten (0-100)\n * @returns CSS color string\n */\nexport function lightenColor(\n color: ColorValue | undefined | null,\n theme: Theme | null | undefined,\n percent: number\n): string {\n const resolved = resolveColor(color, theme);\n const hex = resolved.replace(/^#/, '');\n const tint = percent / 100;\n return `#${applyTint(hex, tint)}`;\n}\n\n/**\n * Blend two colors together\n *\n * @param color1 - First color\n * @param color2 - Second color\n * @param ratio - Blend ratio (0 = all color1, 1 = all color2)\n * @param theme - Theme for resolving\n * @returns CSS color string\n */\nexport function blendColors(\n color1: ColorValue | undefined | null,\n color2: ColorValue | undefined | null,\n ratio: number,\n theme: Theme | null | undefined\n): string {\n const resolved1 = resolveColor(color1, theme).replace(/^#/, '');\n const resolved2 = resolveColor(color2, theme).replace(/^#/, '');\n\n const rgb1 = hexToRgb(resolved1);\n const rgb2 = hexToRgb(resolved2);\n\n const blended = {\n r: Math.round(rgb1.r * (1 - ratio) + rgb2.r * ratio),\n g: Math.round(rgb1.g * (1 - ratio) + rgb2.g * ratio),\n b: Math.round(rgb1.b * (1 - ratio) + rgb2.b * ratio),\n };\n\n return `#${rgbToHex(blended.r, blended.g, blended.b)}`;\n}\n\n/**\n * Check if two colors are equal\n *\n * @param color1 - First color\n * @param color2 - Second color\n * @param theme - Theme for resolving\n * @returns True if colors resolve to the same value\n */\nexport function colorsEqual(\n color1: ColorValue | undefined | null,\n color2: ColorValue | undefined | null,\n theme: Theme | null | undefined\n): boolean {\n if (!color1 && !color2) return true;\n if (!color1 || !color2) return false;\n\n const resolved1 = resolveColor(color1, theme).toUpperCase();\n const resolved2 = resolveColor(color2, theme).toUpperCase();\n\n return resolved1 === resolved2;\n}\n","/**\n * Unit Conversion Utilities - Convert OOXML units to CSS/pixels\n *\n * OOXML uses various unit systems that need conversion for rendering:\n * - Twips: 1/20 of a point (1440 twips = 1 inch)\n * - EMUs (English Metric Units): 914400 EMUs = 1 inch\n * - Half-points: 1/2 of a point (144 half-points = 1 inch)\n * - Points: 72 points = 1 inch\n * - Eighths of a point: 1/8 of a point (576 eighths = 1 inch)\n *\n * Standard assumption: 96 DPI (pixels per inch)\n */\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\n/** Standard DPI for screen rendering */\nconst STANDARD_DPI = 96;\n\n/** Twips per inch (1 inch = 1440 twips) */\nexport const TWIPS_PER_INCH = 1440;\n\n/** EMUs per inch (1 inch = 914400 EMUs) */\nconst EMUS_PER_INCH = 914400;\n\n/** Points per inch (1 inch = 72 points) */\nconst POINTS_PER_INCH = 72;\n\n/** Half-points per inch (1 inch = 144 half-points) */\nconst HALF_POINTS_PER_INCH = 144;\n\n/** Eighths of a point per inch (1 inch = 576) */\nconst EIGHTHS_PER_INCH = 576;\n\n/** Pixels per inch at standard DPI */\nexport const PIXELS_PER_INCH = STANDARD_DPI;\n\n// ============================================================================\n// TWIPS CONVERSIONS\n// ============================================================================\n\n/**\n * Convert twips to pixels (at 96 DPI)\n *\n * 1 inch = 1440 twips = 96 pixels\n * → 1 twip = 96/1440 pixels = 1/15 pixels\n */\nexport function twipsToPixels(twips: number): number {\n return (twips / TWIPS_PER_INCH) * PIXELS_PER_INCH;\n}\n\n/**\n * Convert pixels to twips\n */\nexport function pixelsToTwips(px: number): number {\n return (px / PIXELS_PER_INCH) * TWIPS_PER_INCH;\n}\n\n// ============================================================================\n// EMU CONVERSIONS\n// ============================================================================\n\n/**\n * Convert EMUs to pixels (at 96 DPI)\n *\n * 1 inch = 914400 EMUs = 96 pixels\n */\nexport function emuToPixels(emu: number): number {\n return (emu / EMUS_PER_INCH) * PIXELS_PER_INCH;\n}\n\n/**\n * Convert pixels to EMUs\n */\nexport function pixelsToEmu(px: number): number {\n return (px / PIXELS_PER_INCH) * EMUS_PER_INCH;\n}\n\n/**\n * Convert EMUs to twips\n */\nexport function emuToTwips(emu: number): number {\n return (emu / EMUS_PER_INCH) * TWIPS_PER_INCH;\n}\n\n/**\n * Convert twips to EMUs\n */\nexport function twipsToEmu(twips: number): number {\n return (twips / TWIPS_PER_INCH) * EMUS_PER_INCH;\n}\n\n// ============================================================================\n// POINT CONVERSIONS\n// ============================================================================\n\n/**\n * Convert points to pixels (at 96 DPI)\n *\n * 1 inch = 72 points = 96 pixels\n * → 1 point = 96/72 pixels = 4/3 pixels\n */\nexport function pointsToPixels(points: number): number {\n return (points / POINTS_PER_INCH) * PIXELS_PER_INCH;\n}\n\n// ============================================================================\n// HALF-POINT CONVERSIONS\n// ============================================================================\n\n/**\n * Convert half-points to pixels (at 96 DPI)\n *\n * Half-points are commonly used for font sizes in OOXML (w:sz).\n */\nexport function halfPointsToPixels(halfPoints: number): number {\n return (halfPoints / HALF_POINTS_PER_INCH) * PIXELS_PER_INCH;\n}\n\n/**\n * Convert half-points to points\n */\nexport function halfPointsToPoints(halfPoints: number): number {\n return halfPoints / 2;\n}\n\n/**\n * Convert points to half-points\n */\nexport function pointsToHalfPoints(points: number): number {\n return points * 2;\n}\n\n// ============================================================================\n// EIGHTHS OF A POINT CONVERSIONS\n// ============================================================================\n\n/**\n * Convert eighths of a point to pixels (at 96 DPI)\n *\n * Eighths of a point are used for border widths in OOXML.\n */\nexport function eighthsToPixels(eighths: number): number {\n return (eighths / EIGHTHS_PER_INCH) * PIXELS_PER_INCH;\n}\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Round a pixel value to avoid sub-pixel rendering issues\n */\nexport function roundPixels(px: number, decimalPlaces: number = 2): number {\n const factor = Math.pow(10, decimalPlaces);\n return Math.round(px * factor) / factor;\n}\n\n/**\n * Clamp a value between min and max\n */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\n// ============================================================================\n// CSS VALUE FORMATTERS\n// ============================================================================\n\n/**\n * Format a pixel value as CSS string\n */\nexport function formatPx(px: number): string {\n return `${roundPixels(px)}px`;\n}\n"]}