@pixerate/editor-svelte 0.15.2 → 0.16.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 (149) hide show
  1. package/dist/BubbleMenu.svelte.d.ts +14 -0
  2. package/dist/BubbleMenu.svelte.d.ts.map +1 -0
  3. package/{src → dist}/EditableTextNodeEditor.svelte +1 -1
  4. package/dist/EditableTextNodeEditor.svelte.d.ts +26 -0
  5. package/dist/EditableTextNodeEditor.svelte.d.ts.map +1 -0
  6. package/dist/TemplateRenderer.svelte.d.ts +14 -0
  7. package/dist/TemplateRenderer.svelte.d.ts.map +1 -0
  8. package/dist/canvas/AgentPresenceLayer.svelte.d.ts +9 -0
  9. package/dist/canvas/AgentPresenceLayer.svelte.d.ts.map +1 -0
  10. package/dist/canvas/FloatingHorizontalScrollbar.svelte.d.ts +9 -0
  11. package/dist/canvas/FloatingHorizontalScrollbar.svelte.d.ts.map +1 -0
  12. package/dist/canvas/createCanvasClipboard.svelte.d.ts +32 -0
  13. package/dist/canvas/createCanvasClipboard.svelte.d.ts.map +1 -0
  14. package/dist/canvas/createCanvasClipboard.svelte.js +171 -0
  15. package/dist/canvas/createCanvasDisplacement.d.ts +32 -0
  16. package/dist/canvas/createCanvasDisplacement.d.ts.map +1 -0
  17. package/dist/canvas/createCanvasDisplacement.js +170 -0
  18. package/dist/canvas/createCanvasDocking.svelte.d.ts +56 -0
  19. package/dist/canvas/createCanvasDocking.svelte.d.ts.map +1 -0
  20. package/dist/canvas/createCanvasDocking.svelte.js +227 -0
  21. package/dist/canvas/createCanvasExplosion.svelte.d.ts +31 -0
  22. package/dist/canvas/createCanvasExplosion.svelte.d.ts.map +1 -0
  23. package/dist/canvas/createCanvasExplosion.svelte.js +346 -0
  24. package/dist/canvas/createCanvasGraph.svelte.d.ts +62 -0
  25. package/dist/canvas/createCanvasGraph.svelte.d.ts.map +1 -0
  26. package/dist/canvas/createCanvasGraph.svelte.js +223 -0
  27. package/dist/canvas/createCanvasInteractions.svelte.d.ts +28 -0
  28. package/dist/canvas/createCanvasInteractions.svelte.d.ts.map +1 -0
  29. package/dist/canvas/createCanvasInteractions.svelte.js +95 -0
  30. package/dist/canvas/createCanvasLayout.d.ts +22 -0
  31. package/dist/canvas/createCanvasLayout.d.ts.map +1 -0
  32. package/dist/canvas/createCanvasLayout.js +76 -0
  33. package/dist/canvas/createCanvasMultiDrag.svelte.d.ts +61 -0
  34. package/dist/canvas/createCanvasMultiDrag.svelte.d.ts.map +1 -0
  35. package/dist/canvas/createCanvasMultiDrag.svelte.js +105 -0
  36. package/dist/canvas/createCanvasNodeSync.svelte.d.ts +58 -0
  37. package/dist/canvas/createCanvasNodeSync.svelte.d.ts.map +1 -0
  38. package/dist/canvas/createCanvasNodeSync.svelte.js +82 -0
  39. package/dist/canvas/createCanvasSelection.svelte.d.ts +26 -0
  40. package/dist/canvas/createCanvasSelection.svelte.d.ts.map +1 -0
  41. package/dist/canvas/createCanvasSelection.svelte.js +26 -0
  42. package/dist/canvas/createCanvasShortcuts.d.ts +9 -0
  43. package/dist/canvas/createCanvasShortcuts.d.ts.map +1 -0
  44. package/dist/canvas/createCanvasShortcuts.js +97 -0
  45. package/dist/canvas/createCanvasTrajectory.d.ts +31 -0
  46. package/dist/canvas/createCanvasTrajectory.d.ts.map +1 -0
  47. package/dist/canvas/createCanvasTrajectory.js +141 -0
  48. package/dist/canvas/createStreamingCanvas.svelte.d.ts +19 -0
  49. package/dist/canvas/createStreamingCanvas.svelte.d.ts.map +1 -0
  50. package/dist/canvas/createStreamingCanvas.svelte.js +32 -0
  51. package/dist/canvas/index.d.ts +18 -688
  52. package/dist/canvas/index.d.ts.map +1 -0
  53. package/dist/canvas/index.js +34 -1839
  54. package/dist/canvas/types.d.ts +183 -0
  55. package/dist/canvas/types.d.ts.map +1 -0
  56. package/dist/canvas/types.js +1 -0
  57. package/dist/createNavigationGuard.svelte.d.ts +24 -0
  58. package/dist/createNavigationGuard.svelte.d.ts.map +1 -0
  59. package/dist/createNavigationGuard.svelte.js +65 -0
  60. package/dist/editor.svelte.d.ts +23 -0
  61. package/dist/editor.svelte.d.ts.map +1 -0
  62. package/dist/editor.svelte.js +41 -0
  63. package/dist/history/createHistoryShortcuts.d.ts +24 -0
  64. package/dist/history/createHistoryShortcuts.d.ts.map +1 -0
  65. package/dist/history/createHistoryShortcuts.js +57 -0
  66. package/dist/history/history.svelte.d.ts +18 -0
  67. package/dist/history/history.svelte.d.ts.map +1 -0
  68. package/dist/history/history.svelte.js +43 -0
  69. package/dist/history/index.d.ts +3 -0
  70. package/dist/history/index.d.ts.map +1 -0
  71. package/dist/history/index.js +2 -0
  72. package/{src → dist}/image-editor/ImageEditor.svelte +1 -1
  73. package/dist/image-editor/ImageEditor.svelte.d.ts +17 -0
  74. package/dist/image-editor/ImageEditor.svelte.d.ts.map +1 -0
  75. package/dist/image-editor/imageEditorState.svelte.d.ts +50 -0
  76. package/dist/image-editor/imageEditorState.svelte.d.ts.map +1 -0
  77. package/dist/image-editor/imageEditorState.svelte.js +132 -0
  78. package/dist/image-editor/index.d.ts +6 -16
  79. package/dist/image-editor/index.d.ts.map +1 -0
  80. package/dist/image-editor/index.js +2 -9
  81. package/dist/index.d.ts +20 -249
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +10 -1119
  84. package/dist/navigationGuard.d.ts +21 -0
  85. package/dist/navigationGuard.d.ts.map +1 -0
  86. package/dist/navigationGuard.js +59 -0
  87. package/{src → dist}/spreadsheet/FormulaBar.svelte +1 -1
  88. package/dist/spreadsheet/FormulaBar.svelte.d.ts +17 -0
  89. package/dist/spreadsheet/FormulaBar.svelte.d.ts.map +1 -0
  90. package/{src → dist}/spreadsheet/SpreadsheetEditor.svelte +1 -1
  91. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts +22 -0
  92. package/dist/spreadsheet/SpreadsheetEditor.svelte.d.ts.map +1 -0
  93. package/dist/spreadsheet/index.d.ts +9 -0
  94. package/dist/spreadsheet/index.d.ts.map +1 -0
  95. package/{src/spreadsheet/index.ts → dist/spreadsheet/index.js} +1 -1
  96. package/dist/spreadsheet/spreadsheet.svelte.d.ts +33 -0
  97. package/dist/spreadsheet/spreadsheet.svelte.d.ts.map +1 -0
  98. package/dist/spreadsheet/spreadsheet.svelte.js +160 -0
  99. package/package.json +14 -16
  100. package/dist/canvas/index.js.map +0 -1
  101. package/dist/chunk-HEOI4UNF.js +0 -1191
  102. package/dist/chunk-HEOI4UNF.js.map +0 -1
  103. package/dist/image-editor/index.js.map +0 -1
  104. package/dist/index.css +0 -50
  105. package/dist/index.css.map +0 -1
  106. package/dist/index.js.map +0 -1
  107. package/src/canvas/__tests__/canvas-clipboard.test.ts +0 -154
  108. package/src/canvas/__tests__/canvas-docking.test.ts +0 -288
  109. package/src/canvas/__tests__/canvas-explosion.test.ts +0 -634
  110. package/src/canvas/__tests__/canvas-graph.test.ts +0 -159
  111. package/src/canvas/__tests__/canvas-interactions.test.ts +0 -86
  112. package/src/canvas/__tests__/canvas-layout.test.ts +0 -75
  113. package/src/canvas/__tests__/canvas-multi-drag.test.ts +0 -112
  114. package/src/canvas/__tests__/canvas-node-sync.svelte.test.ts +0 -104
  115. package/src/canvas/__tests__/canvas-shortcuts.test.ts +0 -59
  116. package/src/canvas/createCanvasClipboard.svelte.ts +0 -219
  117. package/src/canvas/createCanvasDisplacement.ts +0 -253
  118. package/src/canvas/createCanvasDocking.svelte.ts +0 -355
  119. package/src/canvas/createCanvasExplosion.svelte.ts +0 -457
  120. package/src/canvas/createCanvasGraph.svelte.ts +0 -330
  121. package/src/canvas/createCanvasInteractions.svelte.ts +0 -112
  122. package/src/canvas/createCanvasLayout.ts +0 -129
  123. package/src/canvas/createCanvasMultiDrag.svelte.ts +0 -175
  124. package/src/canvas/createCanvasNodeSync.svelte.ts +0 -150
  125. package/src/canvas/createCanvasSelection.svelte.ts +0 -51
  126. package/src/canvas/createCanvasShortcuts.ts +0 -99
  127. package/src/canvas/createCanvasTrajectory.ts +0 -207
  128. package/src/canvas/createStreamingCanvas.svelte.ts +0 -56
  129. package/src/canvas/index.d.ts +0 -688
  130. package/src/canvas/index.ts +0 -126
  131. package/src/canvas/types.ts +0 -223
  132. package/src/createNavigationGuard.svelte.ts +0 -97
  133. package/src/editor.svelte.ts +0 -65
  134. package/src/history/createHistoryShortcuts.ts +0 -95
  135. package/src/history/history.svelte.ts +0 -68
  136. package/src/history/index.ts +0 -2
  137. package/src/image-editor/imageEditorState.svelte.ts +0 -151
  138. package/src/image-editor/index.d.ts +0 -16
  139. package/src/image-editor/index.ts +0 -2
  140. package/src/index.d.ts +0 -249
  141. package/src/index.ts +0 -89
  142. package/src/navigationGuard.ts +0 -82
  143. package/src/spreadsheet/spreadsheet.svelte.ts +0 -176
  144. package/src/svelte.d.ts +0 -5
  145. /package/{src → dist}/BubbleMenu.svelte +0 -0
  146. /package/{src → dist}/TemplateRenderer.svelte +0 -0
  147. /package/{src → dist}/canvas/AgentPresenceLayer.svelte +0 -0
  148. /package/{src → dist}/canvas/FloatingHorizontalScrollbar.svelte +0 -0
  149. /package/{src → dist}/canvas/README.md +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/image-editor/ImageEditor.svelte","../src/image-editor/imageEditorState.svelte.ts"],"sourcesContent":["import 'svelte/internal/disclose-version';\nimport * as $ from 'svelte/internal/client';\n\nimport {\n\tcanvasToImagePoint,\n\thitTestCrop,\n\tgetCropCursor,\n\tcalculateCropDrag,\n\thitTestAnnotation\n} from '@pixerate/editor';\n\nimport { createReactiveImageEditor } from './imageEditorState.svelte';\n\nvar root = $.from_html(`<div class=\"flex flex-col gap-4 text-xs\"><span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px]\">Aspect Ratio Presets</span> <div class=\"grid grid-cols-3 gap-2\"><button type=\"button\">Freeform</button> <button type=\"button\">1:1 Square</button> <button type=\"button\">4:3 Standard</button> <button type=\"button\">16:9 Wide</button> <button type=\"button\">3:2 Photo</button> <button type=\"button\" class=\"px-2.5 py-2 rounded-lg bg-rose-950/40 hover:bg-rose-900/60 text-rose-300 border border-rose-800/40 font-medium\">Clear Crop</button></div> <div class=\"h-px bg-slate-800 my-1\"></div> <span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px]\">Orientation & Flips</span> <div class=\"grid grid-cols-2 gap-2\"><button type=\"button\" class=\"px-3 py-2 rounded-lg bg-slate-800 hover:bg-slate-700 text-slate-200 border border-slate-700\">Rotate -90°</button> <button type=\"button\" class=\"px-3 py-2 rounded-lg bg-slate-800 hover:bg-slate-700 text-slate-200 border border-slate-700\">Rotate +90°</button> <button type=\"button\">Flip Horizontal</button> <button type=\"button\">Flip Vertical</button></div></div>`);\nvar root_1 = $.from_html(`<div class=\"flex flex-col gap-3 text-xs\"><div class=\"flex items-center justify-between\"><span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px]\">Color Adjustments</span> <button type=\"button\" class=\"text-[10px] text-rose-400 hover:underline\">Reset Sliders</button></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Brightness</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"-100\" max=\"100\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Contrast</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"-100\" max=\"100\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Saturation</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"-100\" max=\"100\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Exposure</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"-100\" max=\"100\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Warmth / Temperature</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"-100\" max=\"100\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Blur</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"0\" max=\"30\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Opacity</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"0\" max=\"1\" step=\"0.05\" class=\"w-full accent-indigo-500\"/></div></div>`);\nvar root_2 = $.from_html(`<button type=\"button\"> </button>`);\nvar root_3 = $.from_html(`<button type=\"button\" class=\"text-rose-400 hover:underline text-[11px]\">Delete Selected</button>`);\nvar root_4 = $.from_html(`<button type=\"button\" class=\"text-slate-400 hover:text-slate-200 text-[11px]\">Clear All</button>`);\nvar root_5 = $.from_html(`<div class=\"flex flex-col gap-3 text-xs\"><span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px]\">Draw & Annotate</span> <div class=\"grid grid-cols-3 gap-1.5\"></div> <div class=\"flex items-center gap-2 mt-2\"><span class=\"text-slate-400\">Color:</span> <input type=\"color\" class=\"w-8 h-8 rounded border border-slate-700 cursor-pointer bg-transparent\"/> <div class=\"flex-1 ml-2\"><div class=\"flex justify-between text-slate-400 mb-0.5\"><span>Width:</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"1\" max=\"20\" class=\"w-full accent-indigo-500\"/></div></div> <div class=\"h-px bg-slate-800 my-1\"></div> <span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px]\">Add Text</span> <div class=\"flex gap-2\"><input type=\"text\" placeholder=\"Type watermark or label...\" class=\"flex-1 bg-slate-950 border border-slate-700 rounded-lg px-2.5 py-1.5 text-xs text-slate-100 placeholder-slate-500 focus:outline-none focus:border-indigo-500\"/> <button type=\"button\" class=\"px-3 py-1.5 rounded-lg bg-indigo-600 hover:bg-indigo-500 text-white font-medium shadow\">Add</button></div> <div class=\"flex items-center justify-between text-slate-400\"><span>Font Size:</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"12\" max=\"72\" class=\"w-full accent-indigo-500\"/> <div class=\"h-px bg-slate-800 my-1\"></div> <div class=\"flex items-center justify-between\"><span class=\"text-slate-400\"> </span> <!> <!></div></div>`);\nvar root_6 = $.from_html(`<div><span class=\"text-slate-400 block mb-1\">Mask Image URL:</span> <input type=\"text\" placeholder=\"https://.../depthmap.png\" class=\"w-full bg-slate-950 border border-slate-700 rounded-lg px-2.5 py-1.5 text-xs text-slate-100 placeholder-slate-500\"/></div> <div class=\"flex gap-2\"><button type=\"button\">Threshold Mode</button> <button type=\"button\">Brightness Mode</button></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Depth Start (Lower):</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"0\" max=\"255\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Depth Stop (Upper):</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"0\" max=\"255\" class=\"w-full accent-indigo-500\"/></div> <div><div class=\"flex justify-between text-slate-400 mb-1\"><span>Softness:</span> <span class=\"font-mono\"> </span></div> <input type=\"range\" min=\"1\" max=\"50\" class=\"w-full accent-indigo-500\"/></div> <label class=\"flex items-center gap-2 cursor-pointer text-slate-300 mt-1\"><input type=\"checkbox\" class=\"rounded accent-indigo-500\"/> <span>Invert Mask</span></label>`, 1);\nvar root_7 = $.from_html(`<div class=\"flex flex-col gap-3 text-xs\"><div class=\"flex items-center justify-between\"><span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px]\">Depth Masking</span> <button type=\"button\" class=\"text-[10px] text-rose-400 hover:underline\">Reset Mask</button></div> <label class=\"flex items-center gap-2 cursor-pointer text-slate-300\"><input type=\"checkbox\" class=\"rounded accent-indigo-500\"/> <span>Enable Depth / Alpha Mask</span></label> <!></div>`);\nvar root_8 = $.from_html(`<span class=\"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-indigo-900/60 text-indigo-300 animate-pulse\">Removing...</span>`);\nvar root_9 = $.from_html(`<div class=\"w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin\"></div> Removing Background...`, 1);\nvar root_10 = $.from_svg(`<svg class=\"w-3.5 h-3.5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83\"></path></svg> Remove Background`, 1);\nvar root_11 = $.from_html(`<span class=\"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-purple-900/60 text-purple-300 animate-pulse\">Inpainting...</span>`);\nvar root_12 = $.from_html(`<div class=\"w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin\"></div> Generating Inpaint...`, 1);\nvar root_13 = $.from_svg(`<svg class=\"w-3.5 h-3.5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83\"></path></svg> Apply Inpainting`, 1);\nvar root_14 = $.from_html(`<div class=\"p-2.5 rounded-lg bg-rose-950/60 border border-rose-800 text-rose-300 text-[11px]\"> </div>`);\nvar root_15 = $.from_html(`<div class=\"p-2.5 rounded-lg bg-emerald-950/60 border border-emerald-800 text-emerald-300 text-[11px]\"> </div>`);\nvar root_16 = $.from_html(`<div class=\"flex flex-col gap-4 text-xs\"><div class=\"p-3 rounded-lg bg-slate-950/60 border border-slate-800 flex flex-col gap-2.5\"><div class=\"flex items-center justify-between\"><span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px] flex items-center gap-1.5\"><svg class=\"w-3.5 h-3.5 text-indigo-400\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"></path></svg> Background Removal</span> <!></div> <p class=\"text-slate-400 text-[11px] leading-relaxed\">Isolate foreground subject with AI alpha transparency segmentation.</p> <button type=\"button\" class=\"mt-1 px-3 py-2 rounded-lg bg-indigo-600 hover:bg-indigo-500 disabled:opacity-50 text-white font-medium shadow transition-colors flex items-center justify-center gap-2\"><!></button></div> <div class=\"p-3 rounded-lg bg-slate-950/60 border border-slate-800 flex flex-col gap-2.5\"><div class=\"flex items-center justify-between\"><span class=\"font-semibold text-slate-200 uppercase tracking-wider text-[11px] flex items-center gap-1.5\"><svg class=\"w-3.5 h-3.5 text-purple-400\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"m21.64 3.64-1.28-1.28a1.2 1.2 0 0 0-1.7 0l-9.72 9.72-1.94 4.86 4.86-1.94 9.72-9.72a1.2 1.2 0 0 0 .06-1.64z\"></path><path d=\"m14 7 3 3\"></path></svg> Generative Inpainting</span> <!></div> <p class=\"text-slate-400 text-[11px] leading-relaxed\">Replace, modify, or fill selected regions using prompt-guided generative inpainting.</p> <div class=\"flex flex-col gap-1\"><label for=\"ai-inpaint-prompt\" class=\"text-slate-300 text-[11px] font-medium\">Prompt</label> <textarea id=\"ai-inpaint-prompt\" placeholder=\"e.g. replace sunglasses with steampunk goggles, remove person in background...\" rows=\"3\" class=\"w-full bg-slate-900 border border-slate-700 rounded-lg p-2 text-xs text-slate-100 placeholder-slate-500 focus:outline-none focus:border-indigo-500 resize-none\"></textarea></div> <div class=\"flex flex-col gap-1\"><span class=\"text-slate-300 text-[11px] font-medium\">Target Mask Region</span> <div class=\"grid grid-cols-2 gap-1.5\"><button type=\"button\"> </button> <button type=\"button\"> </button></div></div> <button type=\"button\" class=\"mt-1 px-3 py-2 rounded-lg bg-purple-600 hover:bg-purple-500 disabled:opacity-50 text-white font-medium shadow transition-colors flex items-center justify-center gap-2\"><!></button></div> <!> <!></div>`);\nvar root_17 = $.from_html(`<div><div class=\"flex flex-wrap items-center justify-between px-4 py-3 bg-slate-950/80 border-b border-slate-800 gap-3\"><div class=\"flex items-center gap-1 bg-slate-900 p-1 rounded-lg border border-slate-800 text-xs\"><button type=\"button\">Transform & Crop</button> <button type=\"button\">Adjustments</button> <button type=\"button\">Annotations</button> <button type=\"button\">Depth Mask</button> <button type=\"button\"><svg class=\"w-3.5 h-3.5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83\"></path></svg> AI Tools</button></div> <div class=\"flex items-center gap-2 text-xs\"><button type=\"button\" class=\"p-1.5 rounded-lg border border-slate-800 bg-slate-900 text-slate-300 disabled:opacity-40 disabled:cursor-not-allowed hover:bg-slate-800\" title=\"Undo\">↩</button> <button type=\"button\" class=\"p-1.5 rounded-lg border border-slate-800 bg-slate-900 text-slate-300 disabled:opacity-40 disabled:cursor-not-allowed hover:bg-slate-800\" title=\"Redo\">↪</button> <button type=\"button\" class=\"px-2 py-1.5 rounded-lg border border-slate-800 bg-slate-900 text-slate-400 hover:text-slate-200 hover:bg-slate-800\">Reset</button> <div class=\"h-4 w-px bg-slate-800 mx-1\"></div> <button type=\"button\" class=\"p-1.5 rounded-lg border border-slate-800 bg-slate-900 text-slate-300 hover:bg-slate-800\" title=\"Zoom Out\">-</button> <span class=\"font-mono text-slate-400 w-10 text-center\"> </span> <button type=\"button\" class=\"p-1.5 rounded-lg border border-slate-800 bg-slate-900 text-slate-300 hover:bg-slate-800\" title=\"Zoom In\">+</button> <div class=\"h-4 w-px bg-slate-800 mx-1\"></div> <button type=\"button\" class=\"px-2.5 py-1.5 rounded-lg border border-slate-800 bg-slate-900 text-amber-400 hover:bg-slate-800 select-none active:bg-amber-950/40\">Hold Compare</button> <button type=\"button\" class=\"px-4 py-1.5 rounded-lg bg-emerald-600 hover:bg-emerald-500 text-white font-medium shadow-md shadow-emerald-900/30 transition-colors\">Export Image</button></div></div> <div class=\"flex flex-col md:flex-row flex-1 min-h-[520px] md:h-[560px]\"><div class=\"relative flex-1 h-[360px] md:h-full min-h-[320px] bg-slate-950 overflow-hidden select-none\"><canvas class=\"absolute inset-0 w-full h-full block\"></canvas></div> <div class=\"w-full md:w-80 bg-slate-900/90 border-t md:border-t-0 md:border-l border-slate-800 p-4 overflow-y-auto h-auto md:h-full md:max-h-[560px]\"><!> <!> <!> <!> <!></div></div></div>`);\n\nexport default function ImageEditor($$anchor, $$props) {\n\t$.push($$props, true);\n\n\tlet src = $.prop($$props, 'src', 3, ''),\n\t\tclassName = $.prop($$props, 'class', 3, ''),\n\t\tstyle = $.prop($$props, 'style', 3, '');\n\n\tconst internalEditor = createReactiveImageEditor();\n\tconst editor = $.derived(() => $$props.editor || internalEditor);\n\tlet canvasEl = $.state(null);\n\tlet containerEl = $.state(null);\n\tlet activeTab = $.state('crop');\n\tlet activeCropRatio = $.state(null);\n\n\t// AI state\n\tlet inpaintPrompt = $.state('');\n\n\tlet inpaintMaskMode = $.state('annotations');\n\tlet isRemovingBg = $.state(false);\n\tlet isInpainting = $.state(false);\n\tlet aiError = $.state(null);\n\tlet aiSuccess = $.state(null);\n\tconst effectiveOnInpaint = $.derived(() => $$props.onInpaint || $$props.aiHooks?.onInpaint);\n\tconst effectiveOnRemoveBg = $.derived(() => $$props.onRemoveBackground || $$props.aiHooks?.onRemoveBackground);\n\n\tasync function handleRemoveBackground() {\n\t\tif (!$.get(effectiveOnRemoveBg)) {\n\t\t\t$.set(aiError, 'No background removal hook is configured.');\n\n\t\t\treturn;\n\t\t}\n\n\t\t$.set(aiError, null);\n\t\t$.set(aiSuccess, null);\n\t\t$.set(isRemovingBg, true);\n\n\t\ttry {\n\t\t\tconst imageDataUrl = await $.get(editor).toDataURL($$props.exportOptions);\n\t\t\tconst result = await $.get(effectiveOnRemoveBg)({ imageDataUrl });\n\n\t\t\tif (typeof result === 'string') {\n\t\t\t\tawait $.get(editor).applyBackgroundRemovedImage(result);\n\t\t\t\t$.set(aiSuccess, 'Background removed successfully!');\n\t\t\t} else {\n\t\t\t\t$.set(aiSuccess, 'Background removal complete.');\n\t\t\t}\n\t\t} catch(err) {\n\t\t\t$.set(aiError, err?.message || 'Failed to remove background.', true);\n\t\t} finally {\n\t\t\t$.set(isRemovingBg, false);\n\t\t}\n\t}\n\n\tasync function handleInpaint() {\n\t\tif (!$.get(effectiveOnInpaint)) {\n\t\t\t$.set(aiError, 'No inpainting hook is configured.');\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!$.get(inpaintPrompt).trim()) {\n\t\t\t$.set(aiError, 'Please enter an inpainting prompt.');\n\n\t\t\treturn;\n\t\t}\n\n\t\t$.set(aiError, null);\n\t\t$.set(aiSuccess, null);\n\t\t$.set(isInpainting, true);\n\n\t\ttry {\n\t\t\tconst imageDataUrl = await $.get(editor).toDataURL($$props.exportOptions);\n\n\t\t\tconst maskDataUrl = await $.get(editor).toMaskDataURL({\n\t\t\t\tuseAnnotations: $.get(inpaintMaskMode) === 'annotations',\n\t\t\t\tuseCrop: $.get(inpaintMaskMode) === 'crop'\n\t\t\t});\n\n\t\t\tconst result = await $.get(effectiveOnInpaint)({\n\t\t\t\tprompt: $.get(inpaintPrompt).trim(),\n\t\t\t\timageDataUrl,\n\t\t\t\tmaskDataUrl,\n\t\t\t\tcropBox: $.get(inpaintMaskMode) === 'crop' ? $.get(editor).state.crop : null\n\t\t\t});\n\n\t\t\tif (typeof result === 'string') {\n\t\t\t\tawait $.get(editor).applyInpaintedImage(result);\n\t\t\t\t$.set(aiSuccess, 'Inpainting applied successfully!');\n\t\t\t} else {\n\t\t\t\t$.set(aiSuccess, 'Inpainting complete.');\n\t\t\t}\n\t\t} catch(err) {\n\t\t\t$.set(aiError, err?.message || 'Failed to apply inpainting.', true);\n\t\t} finally {\n\t\t\t$.set(isInpainting, false);\n\t\t}\n\t}\n\n\t// Annotation drafting state\n\tlet activeColor = $.state('#ef4444');\n\n\tlet strokeWidth = $.state(3);\n\tlet fontSize = $.state(24);\n\tlet textInput = $.state('');\n\n\t// Live draft and drag references\n\tlet draftAnnotation = $.state(null);\n\n\tlet draftCrop = $.state(null);\n\tlet cropDragInfo = null;\n\tlet annotationDragInfo = null;\n\tlet isDrawing = false;\n\tlet currentPath = [];\n\tlet dragStartPoint = null;\n\n\t// Update image when src changes\n\t$.user_effect(() => {\n\t\tif (src() && src() !== $.get(editor).state.sourceUrl) {\n\t\t\t$.get(editor).loadImage(src());\n\t\t}\n\t});\n\n\tasync function renderCanvas(overrideAnnotation, overrideCrop) {\n\t\tif (!$.get(canvasEl) || !$.get(containerEl)) return;\n\n\t\tconst vpWidth = $.get(containerEl).clientWidth || 800;\n\t\tconst vpHeight = $.get(containerEl).clientHeight || 500;\n\n\t\tawait $.get(editor).controller.render($.get(canvasEl), {\n\t\t\tviewportWidth: vpWidth,\n\t\t\tviewportHeight: vpHeight,\n\t\t\tshowCropOverlay: $.get(activeTab) === 'crop',\n\t\t\tshowSelectionOverlay: true,\n\t\t\tinteractive: true,\n\t\t\tdraftAnnotation: overrideAnnotation !== undefined ? overrideAnnotation : $.get(draftAnnotation),\n\t\t\tdraftCrop: overrideCrop !== undefined ? overrideCrop : $.get(draftCrop)\n\t\t});\n\t}\n\n\t$.user_effect(() => {\n\t\t// Re-render when editor state or activeTab changes\n\t\tvoid $.get(editor).state;\n\n\t\tvoid $.get(activeTab);\n\n\t\tconst raf = typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame : (cb) => setTimeout(cb, 0);\n\t\tconst caf = typeof cancelAnimationFrame !== 'undefined' ? cancelAnimationFrame : (id) => clearTimeout(id);\n\n\t\tconst animId = raf(() => {\n\t\t\trenderCanvas();\n\t\t});\n\n\t\treturn () => caf(animId);\n\t});\n\n\t$.user_effect(() => {\n\t\tif ($.get(activeTab) === 'crop' && $.get(editor).state.activeTool !== 'crop') {\n\t\t\t$.get(editor).setTool('crop');\n\t\t}\n\t});\n\n\t$.user_effect(() => {\n\t\tif (!$.get(containerEl)) return;\n\n\t\tif (typeof ResizeObserver !== 'undefined') {\n\t\t\tconst observer = new ResizeObserver(() => {\n\t\t\t\trenderCanvas();\n\t\t\t});\n\n\t\t\tobserver.observe($.get(containerEl));\n\n\t\t\treturn () => observer.disconnect();\n\t\t} else {\n\t\t\tconst handleResize = () => renderCanvas();\n\n\t\t\twindow.addEventListener('resize', handleResize);\n\n\t\t\treturn () => window.removeEventListener('resize', handleResize);\n\t\t}\n\t});\n\n\tfunction getCanvasEventPoint(e) {\n\t\tif (!$.get(canvasEl)) return { x: 0, y: 0 };\n\n\t\tconst rect = $.get(canvasEl).getBoundingClientRect();\n\t\tconst scaleX = rect.width > 0 ? $.get(canvasEl).width / rect.width : 1;\n\t\tconst scaleY = rect.height > 0 ? $.get(canvasEl).height / rect.height : 1;\n\n\t\treturn {\n\t\t\tx: (e.clientX - rect.left) * scaleX,\n\t\t\ty: (e.clientY - rect.top) * scaleY\n\t\t};\n\t}\n\n\tfunction handleMouseDown(e) {\n\t\tif (!$.get(canvasEl)) return;\n\n\t\tconst canvasPt = getCanvasEventPoint(e);\n\n\t\tif ($.get(activeTab) === 'crop') {\n\t\t\tconst activeCrop = $.get(draftCrop) || $.get(editor).state.crop || {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: $.get(editor).state.imageDimensions.width,\n\t\t\t\theight: $.get(editor).state.imageDimensions.height\n\t\t\t};\n\n\t\t\tconst handle = hitTestCrop(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, 14, activeCrop);\n\t\t\tconst startImgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, true);\n\n\t\t\tif (handle) {\n\t\t\t\tcropDragInfo = {\n\t\t\t\t\thandle,\n\t\t\t\t\tstartCanvasPt: canvasPt,\n\t\t\t\t\tstartImgPt,\n\t\t\t\t\tstartCrop: activeCrop\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// Clicked outside crop box: start new crop selection\n\t\t\t\tcropDragInfo = {\n\t\t\t\t\thandle: 'new',\n\t\t\t\t\tstartCanvasPt: canvasPt,\n\t\t\t\t\tstartImgPt,\n\t\t\t\t\tstartCrop: { x: startImgPt.x, y: startImgPt.y, width: 0, height: 0 }\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ($.get(activeTab) === 'annotate') {\n\t\t\tconst imgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, false);\n\n\t\t\tdragStartPoint = imgPt;\n\n\t\t\tif ($.get(editor).state.activeTool === 'select') {\n\t\t\t\tfor (let i = $.get(editor).state.annotations.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst ann = $.get(editor).state.annotations[i];\n\n\t\t\t\t\tif (hitTestAnnotation(imgPt, ann)) {\n\t\t\t\t\t\t$.get(editor).selectAnnotation(ann.id);\n\t\t\t\t\t\tannotationDragInfo = { annId: ann.id, startImgPt: imgPt, initialAnn: { ...ann } };\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.get(editor).selectAnnotation(null);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($.get(editor).state.activeTool === 'pen') {\n\t\t\t\tisDrawing = true;\n\t\t\t\tcurrentPath = [imgPt];\n\n\t\t\t\tconst draft = {\n\t\t\t\t\tid: 'draft',\n\t\t\t\t\ttype: 'pen',\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\tpoints: [imgPt],\n\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t};\n\n\t\t\t\t$.set(draftAnnotation, draft, true);\n\t\t\t\trenderCanvas(draft);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction handleMouseMove(e) {\n\t\tif (!$.get(canvasEl)) return;\n\n\t\tconst canvasPt = getCanvasEventPoint(e);\n\n\t\tif ($.get(activeTab) === 'crop') {\n\t\t\tif (cropDragInfo) {\n\t\t\t\tconst currentImgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, true);\n\t\t\t\tlet newCrop;\n\n\t\t\t\tif (cropDragInfo.handle === 'new') {\n\t\t\t\t\tconst minX = Math.max(0, Math.min(cropDragInfo.startImgPt.x, currentImgPt.x));\n\t\t\t\t\tconst minY = Math.max(0, Math.min(cropDragInfo.startImgPt.y, currentImgPt.y));\n\t\t\t\t\tconst maxX = Math.min($.get(editor).state.imageDimensions.width, Math.max(cropDragInfo.startImgPt.x, currentImgPt.x));\n\t\t\t\t\tconst maxY = Math.min($.get(editor).state.imageDimensions.height, Math.max(cropDragInfo.startImgPt.y, currentImgPt.y));\n\n\t\t\t\t\tnewCrop = {\n\t\t\t\t\t\tx: Math.round(minX),\n\t\t\t\t\t\ty: Math.round(minY),\n\t\t\t\t\t\twidth: Math.round(Math.max(20, maxX - minX)),\n\t\t\t\t\t\theight: Math.round(Math.max(20, maxY - minY))\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tnewCrop = calculateCropDrag(cropDragInfo.startCrop, cropDragInfo.handle, cropDragInfo.startImgPt, currentImgPt, $.get(editor).state.imageDimensions.width, $.get(editor).state.imageDimensions.height, $.get(activeCropRatio));\n\t\t\t\t}\n\n\t\t\t\t$.set(draftCrop, newCrop, true);\n\t\t\t\trenderCanvas(null, newCrop);\n\t\t\t} else {\n\t\t\t\tconst activeCrop = $.get(draftCrop) || $.get(editor).state.crop || {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\twidth: $.get(editor).state.imageDimensions.width,\n\t\t\t\t\theight: $.get(editor).state.imageDimensions.height\n\t\t\t\t};\n\n\t\t\t\tconst handle = hitTestCrop(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, 14, activeCrop);\n\n\t\t\t\t$.get(canvasEl).style.cursor = getCropCursor(handle);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ($.get(activeTab) === 'annotate') {\n\t\t\tif (annotationDragInfo) {\n\t\t\t\tconst currentImgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, false);\n\t\t\t\tconst dx = currentImgPt.x - annotationDragInfo.startImgPt.x;\n\t\t\t\tconst dy = currentImgPt.y - annotationDragInfo.startImgPt.y;\n\n\t\t\t\t$.get(editor).updateAnnotation(annotationDragInfo.annId, {\n\t\t\t\t\tx: Math.round(annotationDragInfo.initialAnn.x + dx),\n\t\t\t\t\ty: Math.round(annotationDragInfo.initialAnn.y + dy)\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!dragStartPoint) {\n\t\t\t\tif ($.get(editor).state.activeTool === 'select') {\n\t\t\t\t\tconst imgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, false);\n\t\t\t\t\tlet hovered = false;\n\n\t\t\t\t\tfor (let i = $.get(editor).state.annotations.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (hitTestAnnotation(imgPt, $.get(editor).state.annotations[i])) {\n\t\t\t\t\t\t\thovered = true;\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$.get(canvasEl).style.cursor = hovered ? 'move' : 'default';\n\t\t\t\t} else {\n\t\t\t\t\t$.get(canvasEl).style.cursor = 'crosshair';\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentImgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, false);\n\n\t\t\tif ($.get(editor).state.activeTool === 'pen' && isDrawing) {\n\t\t\t\tcurrentPath.push(currentImgPt);\n\n\t\t\t\tconst draft = {\n\t\t\t\t\tid: 'draft',\n\t\t\t\t\ttype: 'pen',\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\tpoints: [...currentPath],\n\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t};\n\n\t\t\t\t$.set(draftAnnotation, draft, true);\n\t\t\t\trenderCanvas(draft);\n\t\t\t} else if ($.get(editor).state.activeTool === 'rect') {\n\t\t\t\tconst w = currentImgPt.x - dragStartPoint.x;\n\t\t\t\tconst h = currentImgPt.y - dragStartPoint.y;\n\n\t\t\t\tconst draft = {\n\t\t\t\t\tid: 'draft',\n\t\t\t\t\ttype: 'rect',\n\t\t\t\t\tx: Math.min(dragStartPoint.x, currentImgPt.x),\n\t\t\t\t\ty: Math.min(dragStartPoint.y, currentImgPt.y),\n\t\t\t\t\twidth: Math.abs(w),\n\t\t\t\t\theight: Math.abs(h),\n\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t};\n\n\t\t\t\t$.set(draftAnnotation, draft, true);\n\t\t\t\trenderCanvas(draft);\n\t\t\t} else if ($.get(editor).state.activeTool === 'circle') {\n\t\t\t\tconst rx = Math.abs(currentImgPt.x - dragStartPoint.x) / 2;\n\t\t\t\tconst ry = Math.abs(currentImgPt.y - dragStartPoint.y) / 2;\n\n\t\t\t\tconst draft = {\n\t\t\t\t\tid: 'draft',\n\t\t\t\t\ttype: 'circle',\n\t\t\t\t\tx: Math.min(dragStartPoint.x, currentImgPt.x) + rx,\n\t\t\t\t\ty: Math.min(dragStartPoint.y, currentImgPt.y) + ry,\n\t\t\t\t\tradiusX: rx,\n\t\t\t\t\tradiusY: ry,\n\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t};\n\n\t\t\t\t$.set(draftAnnotation, draft, true);\n\t\t\t\trenderCanvas(draft);\n\t\t\t} else if ($.get(editor).state.activeTool === 'arrow') {\n\t\t\t\tconst draft = {\n\t\t\t\t\tid: 'draft',\n\t\t\t\t\ttype: 'arrow',\n\t\t\t\t\tx: dragStartPoint.x,\n\t\t\t\t\ty: dragStartPoint.y,\n\t\t\t\t\tendX: currentImgPt.x,\n\t\t\t\t\tendY: currentImgPt.y,\n\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t};\n\n\t\t\t\t$.set(draftAnnotation, draft, true);\n\t\t\t\trenderCanvas(draft);\n\t\t\t} else if ($.get(editor).state.activeTool === 'line') {\n\t\t\t\tconst draft = {\n\t\t\t\t\tid: 'draft',\n\t\t\t\t\ttype: 'line',\n\t\t\t\t\tx: dragStartPoint.x,\n\t\t\t\t\ty: dragStartPoint.y,\n\t\t\t\t\tendX: currentImgPt.x,\n\t\t\t\t\tendY: currentImgPt.y,\n\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t};\n\n\t\t\t\t$.set(draftAnnotation, draft, true);\n\t\t\t\trenderCanvas(draft);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction handleMouseUp(e) {\n\t\tif (!$.get(canvasEl)) return;\n\n\t\tconst canvasPt = getCanvasEventPoint(e);\n\n\t\tif ($.get(activeTab) === 'crop') {\n\t\t\tif (cropDragInfo) {\n\t\t\t\tif ($.get(draftCrop) && $.get(draftCrop).width >= 20 && $.get(draftCrop).height >= 20) {\n\t\t\t\t\t$.get(editor).setCrop($.get(draftCrop), true);\n\t\t\t\t}\n\n\t\t\t\tcropDragInfo = null;\n\t\t\t\t$.set(draftCrop, null);\n\t\t\t\trenderCanvas();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ($.get(activeTab) === 'annotate') {\n\t\t\tif (annotationDragInfo) {\n\t\t\t\tannotationDragInfo = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (dragStartPoint) {\n\t\t\t\tconst currentImgPt = canvasToImagePoint(canvasPt, $.get(editor).state, $.get(canvasEl).width, $.get(canvasEl).height, false);\n\n\t\t\t\tif ($.get(editor).state.activeTool === 'pen' && isDrawing) {\n\t\t\t\t\tif (currentPath.length > 1) {\n\t\t\t\t\t\t$.get(editor).addAnnotation({\n\t\t\t\t\t\t\ttype: 'pen',\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\tpoints: [...currentPath],\n\t\t\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tisDrawing = false;\n\t\t\t\t\tcurrentPath = [];\n\t\t\t\t} else if ($.get(editor).state.activeTool === 'rect') {\n\t\t\t\t\tconst w = Math.abs(currentImgPt.x - dragStartPoint.x);\n\t\t\t\t\tconst h = Math.abs(currentImgPt.y - dragStartPoint.y);\n\n\t\t\t\t\tif (w > 4 && h > 4) {\n\t\t\t\t\t\t$.get(editor).addAnnotation({\n\t\t\t\t\t\t\ttype: 'rect',\n\t\t\t\t\t\t\tx: Math.min(dragStartPoint.x, currentImgPt.x),\n\t\t\t\t\t\t\ty: Math.min(dragStartPoint.y, currentImgPt.y),\n\t\t\t\t\t\t\twidth: w,\n\t\t\t\t\t\t\theight: h,\n\t\t\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if ($.get(editor).state.activeTool === 'circle') {\n\t\t\t\t\tconst rx = Math.abs(currentImgPt.x - dragStartPoint.x) / 2;\n\t\t\t\t\tconst ry = Math.abs(currentImgPt.y - dragStartPoint.y) / 2;\n\n\t\t\t\t\tif (rx > 4 && ry > 4) {\n\t\t\t\t\t\t$.get(editor).addAnnotation({\n\t\t\t\t\t\t\ttype: 'circle',\n\t\t\t\t\t\t\tx: Math.min(dragStartPoint.x, currentImgPt.x) + rx,\n\t\t\t\t\t\t\ty: Math.min(dragStartPoint.y, currentImgPt.y) + ry,\n\t\t\t\t\t\t\tradiusX: rx,\n\t\t\t\t\t\t\tradiusY: ry,\n\t\t\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if ($.get(editor).state.activeTool === 'arrow') {\n\t\t\t\t\tif (Math.hypot(currentImgPt.x - dragStartPoint.x, currentImgPt.y - dragStartPoint.y) > 4) {\n\t\t\t\t\t\t$.get(editor).addAnnotation({\n\t\t\t\t\t\t\ttype: 'arrow',\n\t\t\t\t\t\t\tx: dragStartPoint.x,\n\t\t\t\t\t\t\ty: dragStartPoint.y,\n\t\t\t\t\t\t\tendX: currentImgPt.x,\n\t\t\t\t\t\t\tendY: currentImgPt.y,\n\t\t\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if ($.get(editor).state.activeTool === 'line') {\n\t\t\t\t\tif (Math.hypot(currentImgPt.x - dragStartPoint.x, currentImgPt.y - dragStartPoint.y) > 4) {\n\t\t\t\t\t\t$.get(editor).addAnnotation({\n\t\t\t\t\t\t\ttype: 'line',\n\t\t\t\t\t\t\tx: dragStartPoint.x,\n\t\t\t\t\t\t\ty: dragStartPoint.y,\n\t\t\t\t\t\t\tendX: currentImgPt.x,\n\t\t\t\t\t\t\tendY: currentImgPt.y,\n\t\t\t\t\t\t\tstrokeColor: $.get(activeColor),\n\t\t\t\t\t\t\tstrokeWidth: $.get(strokeWidth)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.set(draftAnnotation, null);\n\t\t\t\tdragStartPoint = null;\n\t\t\t\trenderCanvas();\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction handleAddText() {\n\t\tif (!$.get(textInput).trim()) return;\n\n\t\t$.get(editor).addAnnotation({\n\t\t\ttype: 'text',\n\t\t\tx: 50,\n\t\t\ty: 50,\n\t\t\ttext: $.get(textInput).trim(),\n\t\t\tfontSize: $.get(fontSize),\n\t\t\tcolor: $.get(activeColor)\n\t\t});\n\n\t\t$.set(textInput, '');\n\t}\n\n\tasync function handleExport() {\n\t\tconst dataUrl = await $.get(editor).toDataURL($$props.exportOptions);\n\n\t\tif ($$props.onSave) {\n\t\t\t$$props.onSave(dataUrl);\n\t\t} else {\n\t\t\tconst link = document.createElement('a');\n\n\t\t\tlink.download = `edited-image-${Date.now()}.png`;\n\t\t\tlink.href = dataUrl;\n\t\t\tlink.click();\n\t\t}\n\t}\n\n\tvar div = root_17();\n\tvar div_1 = $.child(div);\n\tvar div_2 = $.child(div_1);\n\tvar button = $.child(div_2);\n\tvar button_1 = $.sibling(button, 2);\n\tvar button_2 = $.sibling(button_1, 2);\n\tvar button_3 = $.sibling(button_2, 2);\n\tvar button_4 = $.sibling(button_3, 2);\n\n\t$.reset(div_2);\n\n\tvar div_3 = $.sibling(div_2, 2);\n\tvar button_5 = $.child(div_3);\n\tvar button_6 = $.sibling(button_5, 2);\n\tvar button_7 = $.sibling(button_6, 2);\n\tvar button_8 = $.sibling(button_7, 4);\n\tvar span = $.sibling(button_8, 2);\n\tvar text = $.only_child(span);\n\tvar button_9 = $.sibling(span, 2);\n\tvar button_10 = $.sibling(button_9, 4);\n\tvar button_11 = $.sibling(button_10, 2);\n\n\t$.reset(div_3);\n\t$.reset(div_1);\n\n\tvar div_4 = $.sibling(div_1, 2);\n\tvar div_5 = $.child(div_4);\n\tvar canvas = $.child(div_5);\n\n\t$.bind_this(canvas, ($$value) => $.set(canvasEl, $$value), () => $.get(canvasEl));\n\t$.reset(div_5);\n\t$.bind_this(div_5, ($$value) => $.set(containerEl, $$value), () => $.get(containerEl));\n\n\tvar div_6 = $.sibling(div_5, 2);\n\tvar node = $.child(div_6);\n\n\t{\n\t\tvar consequent = ($$anchor) => {\n\t\t\tvar div_7 = root();\n\t\t\tvar div_8 = $.sibling($.child(div_7), 2);\n\t\t\tvar button_12 = $.child(div_8);\n\t\t\tvar button_13 = $.sibling(button_12, 2);\n\t\t\tvar button_14 = $.sibling(button_13, 2);\n\t\t\tvar button_15 = $.sibling(button_14, 2);\n\t\t\tvar button_16 = $.sibling(button_15, 2);\n\t\t\tvar button_17 = $.sibling(button_16, 2);\n\n\t\t\t$.reset(div_8);\n\n\t\t\tvar div_9 = $.sibling(div_8, 6);\n\t\t\tvar button_18 = $.child(div_9);\n\t\t\tvar button_19 = $.sibling(button_18, 2);\n\t\t\tvar button_20 = $.sibling(button_19, 2);\n\t\t\tvar button_21 = $.sibling(button_20, 2);\n\n\t\t\t$.reset(div_9);\n\t\t\t$.reset(div_7);\n\n\t\t\t$.template_effect(() => {\n\t\t\t\t$.set_class(button_12, 1, `px-2.5 py-2 rounded-lg border font-medium ${$.get(activeCropRatio) === null && $.get(editor).state.crop\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 hover:bg-slate-700 text-slate-200 border-slate-700'}`);\n\n\t\t\t\t$.set_class(button_13, 1, `px-2.5 py-2 rounded-lg border font-medium ${$.get(activeCropRatio) === 1\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 hover:bg-slate-700 text-slate-200 border-slate-700'}`);\n\n\t\t\t\t$.set_class(button_14, 1, `px-2.5 py-2 rounded-lg border font-medium ${$.get(activeCropRatio) === 4 / 3\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 hover:bg-slate-700 text-slate-200 border-slate-700'}`);\n\n\t\t\t\t$.set_class(button_15, 1, `px-2.5 py-2 rounded-lg border font-medium ${$.get(activeCropRatio) === 16 / 9\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 hover:bg-slate-700 text-slate-200 border-slate-700'}`);\n\n\t\t\t\t$.set_class(button_16, 1, `px-2.5 py-2 rounded-lg border font-medium ${$.get(activeCropRatio) === 3 / 2\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 hover:bg-slate-700 text-slate-200 border-slate-700'}`);\n\n\t\t\t\t$.set_class(button_20, 1, `px-3 py-2 rounded-lg border transition-colors ${$.get(editor).state.transform.flipH\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 border-slate-700 text-slate-200 hover:bg-slate-700'}`);\n\n\t\t\t\t$.set_class(button_21, 1, `px-3 py-2 rounded-lg border transition-colors ${$.get(editor).state.transform.flipV\n\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t: 'bg-slate-800 border-slate-700 text-slate-200 hover:bg-slate-700'}`);\n\t\t\t});\n\n\t\t\t$.delegated('click', button_12, () => {\n\t\t\t\t$.set(activeCropRatio, null);\n\t\t\t\t$.get(editor).applyCropPreset(null);\n\t\t\t});\n\n\t\t\t$.delegated('click', button_13, () => {\n\t\t\t\t$.set(activeCropRatio, 1);\n\t\t\t\t$.get(editor).applyCropPreset(1);\n\t\t\t});\n\n\t\t\t$.delegated('click', button_14, () => {\n\t\t\t\t$.set(activeCropRatio, 4 / 3);\n\t\t\t\t$.get(editor).applyCropPreset(4 / 3);\n\t\t\t});\n\n\t\t\t$.delegated('click', button_15, () => {\n\t\t\t\t$.set(activeCropRatio, 16 / 9);\n\t\t\t\t$.get(editor).applyCropPreset(16 / 9);\n\t\t\t});\n\n\t\t\t$.delegated('click', button_16, () => {\n\t\t\t\t$.set(activeCropRatio, 3 / 2);\n\t\t\t\t$.get(editor).applyCropPreset(3 / 2);\n\t\t\t});\n\n\t\t\t$.delegated('click', button_17, () => {\n\t\t\t\t$.set(activeCropRatio, null);\n\t\t\t\t$.get(editor).resetCrop();\n\t\t\t});\n\n\t\t\t$.delegated('click', button_18, () => $.get(editor).rotate(-90));\n\t\t\t$.delegated('click', button_19, () => $.get(editor).rotate(90));\n\t\t\t$.delegated('click', button_20, () => $.get(editor).flipHorizontal());\n\t\t\t$.delegated('click', button_21, () => $.get(editor).flipVertical());\n\t\t\t$.append($$anchor, div_7);\n\t\t};\n\n\t\t$.if(node, ($$render) => {\n\t\t\tif ($.get(activeTab) === 'crop') $$render(consequent);\n\t\t});\n\t}\n\n\tvar node_1 = $.sibling(node, 2);\n\n\t{\n\t\tvar consequent_1 = ($$anchor) => {\n\t\t\tvar div_10 = root_1();\n\t\t\tvar div_11 = $.child(div_10);\n\t\t\tvar button_22 = $.sibling($.child(div_11), 2);\n\n\t\t\t$.reset(div_11);\n\n\t\t\tvar div_12 = $.sibling(div_11, 2);\n\t\t\tvar div_13 = $.child(div_12);\n\t\t\tvar span_1 = $.sibling($.child(div_13), 2);\n\t\t\tvar text_1 = $.only_child(span_1, true);\n\n\t\t\t$.reset(div_13);\n\n\t\t\tvar input = $.sibling(div_13, 2);\n\n\t\t\t$.remove_input_defaults(input);\n\t\t\t$.reset(div_12);\n\n\t\t\tvar div_14 = $.sibling(div_12, 2);\n\t\t\tvar div_15 = $.child(div_14);\n\t\t\tvar span_2 = $.sibling($.child(div_15), 2);\n\t\t\tvar text_2 = $.only_child(span_2, true);\n\n\t\t\t$.reset(div_15);\n\n\t\t\tvar input_1 = $.sibling(div_15, 2);\n\n\t\t\t$.remove_input_defaults(input_1);\n\t\t\t$.reset(div_14);\n\n\t\t\tvar div_16 = $.sibling(div_14, 2);\n\t\t\tvar div_17 = $.child(div_16);\n\t\t\tvar span_3 = $.sibling($.child(div_17), 2);\n\t\t\tvar text_3 = $.only_child(span_3, true);\n\n\t\t\t$.reset(div_17);\n\n\t\t\tvar input_2 = $.sibling(div_17, 2);\n\n\t\t\t$.remove_input_defaults(input_2);\n\t\t\t$.reset(div_16);\n\n\t\t\tvar div_18 = $.sibling(div_16, 2);\n\t\t\tvar div_19 = $.child(div_18);\n\t\t\tvar span_4 = $.sibling($.child(div_19), 2);\n\t\t\tvar text_4 = $.only_child(span_4, true);\n\n\t\t\t$.reset(div_19);\n\n\t\t\tvar input_3 = $.sibling(div_19, 2);\n\n\t\t\t$.remove_input_defaults(input_3);\n\t\t\t$.reset(div_18);\n\n\t\t\tvar div_20 = $.sibling(div_18, 2);\n\t\t\tvar div_21 = $.child(div_20);\n\t\t\tvar span_5 = $.sibling($.child(div_21), 2);\n\t\t\tvar text_5 = $.only_child(span_5, true);\n\n\t\t\t$.reset(div_21);\n\n\t\t\tvar input_4 = $.sibling(div_21, 2);\n\n\t\t\t$.remove_input_defaults(input_4);\n\t\t\t$.reset(div_20);\n\n\t\t\tvar div_22 = $.sibling(div_20, 2);\n\t\t\tvar div_23 = $.child(div_22);\n\t\t\tvar span_6 = $.sibling($.child(div_23), 2);\n\t\t\tvar text_6 = $.only_child(span_6);\n\n\t\t\t$.reset(div_23);\n\n\t\t\tvar input_5 = $.sibling(div_23, 2);\n\n\t\t\t$.remove_input_defaults(input_5);\n\t\t\t$.reset(div_22);\n\n\t\t\tvar div_24 = $.sibling(div_22, 2);\n\t\t\tvar div_25 = $.child(div_24);\n\t\t\tvar span_7 = $.sibling($.child(div_25), 2);\n\t\t\tvar text_7 = $.only_child(span_7);\n\n\t\t\t$.reset(div_25);\n\n\t\t\tvar input_6 = $.sibling(div_25, 2);\n\n\t\t\t$.remove_input_defaults(input_6);\n\t\t\t$.reset(div_24);\n\t\t\t$.reset(div_10);\n\n\t\t\t$.template_effect(\n\t\t\t\t($0) => {\n\t\t\t\t\t$.set_text(text_1, $.get(editor).state.adjustments.brightness);\n\t\t\t\t\t$.set_value(input, $.get(editor).state.adjustments.brightness);\n\t\t\t\t\t$.set_text(text_2, $.get(editor).state.adjustments.contrast);\n\t\t\t\t\t$.set_value(input_1, $.get(editor).state.adjustments.contrast);\n\t\t\t\t\t$.set_text(text_3, $.get(editor).state.adjustments.saturation);\n\t\t\t\t\t$.set_value(input_2, $.get(editor).state.adjustments.saturation);\n\t\t\t\t\t$.set_text(text_4, $.get(editor).state.adjustments.exposure);\n\t\t\t\t\t$.set_value(input_3, $.get(editor).state.adjustments.exposure);\n\t\t\t\t\t$.set_text(text_5, $.get(editor).state.adjustments.temperature);\n\t\t\t\t\t$.set_value(input_4, $.get(editor).state.adjustments.temperature);\n\t\t\t\t\t$.set_text(text_6, `${$.get(editor).state.adjustments.blur ?? ''}px`);\n\t\t\t\t\t$.set_value(input_5, $.get(editor).state.adjustments.blur);\n\t\t\t\t\t$.set_text(text_7, `${$0 ?? ''}%`);\n\t\t\t\t\t$.set_value(input_6, $.get(editor).state.adjustments.opacity);\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\t() => Math.round($.get(editor).state.adjustments.opacity * 100)\n\t\t\t\t]\n\t\t\t);\n\n\t\t\t$.delegated('click', button_22, () => $.get(editor).resetAdjustments());\n\t\t\t$.delegated('input', input, (e) => $.get(editor).setAdjustments({ brightness: Number(e.target.value) }));\n\t\t\t$.delegated('input', input_1, (e) => $.get(editor).setAdjustments({ contrast: Number(e.target.value) }));\n\t\t\t$.delegated('input', input_2, (e) => $.get(editor).setAdjustments({ saturation: Number(e.target.value) }));\n\t\t\t$.delegated('input', input_3, (e) => $.get(editor).setAdjustments({ exposure: Number(e.target.value) }));\n\t\t\t$.delegated('input', input_4, (e) => $.get(editor).setAdjustments({ temperature: Number(e.target.value) }));\n\t\t\t$.delegated('input', input_5, (e) => $.get(editor).setAdjustments({ blur: Number(e.target.value) }));\n\t\t\t$.delegated('input', input_6, (e) => $.get(editor).setAdjustments({ opacity: Number(e.target.value) }));\n\t\t\t$.append($$anchor, div_10);\n\t\t};\n\n\t\t$.if(node_1, ($$render) => {\n\t\t\tif ($.get(activeTab) === 'adjust') $$render(consequent_1);\n\t\t});\n\t}\n\n\tvar node_2 = $.sibling(node_1, 2);\n\n\t{\n\t\tvar consequent_4 = ($$anchor) => {\n\t\t\tvar div_26 = root_5();\n\t\t\tvar div_27 = $.sibling($.child(div_26), 2);\n\n\t\t\t$.each(div_27, 20, () => ['pen', 'rect', 'circle', 'arrow', 'line'], $.index, ($$anchor, t) => {\n\t\t\t\tvar button_23 = root_2();\n\t\t\t\tvar text_8 = $.only_child(button_23, true);\n\n\t\t\t\t$.template_effect(() => {\n\t\t\t\t\t$.set_class(button_23, 1, `py-1.5 px-2 rounded-lg font-medium capitalize border transition-colors ${$.get(editor).state.activeTool === t\n\t\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t\t: 'bg-slate-800 border-slate-700 text-slate-300 hover:bg-slate-700'}`);\n\n\t\t\t\t\t$.set_text(text_8, t);\n\t\t\t\t});\n\n\t\t\t\t$.delegated('click', button_23, () => $.get(editor).setTool(t));\n\t\t\t\t$.append($$anchor, button_23);\n\t\t\t});\n\n\t\t\t$.reset(div_27);\n\n\t\t\tvar div_28 = $.sibling(div_27, 2);\n\t\t\tvar input_7 = $.sibling($.child(div_28), 2);\n\n\t\t\t$.remove_input_defaults(input_7);\n\n\t\t\tvar div_29 = $.sibling(input_7, 2);\n\t\t\tvar div_30 = $.child(div_29);\n\t\t\tvar span_8 = $.sibling($.child(div_30), 2);\n\t\t\tvar text_9 = $.only_child(span_8);\n\n\t\t\t$.reset(div_30);\n\n\t\t\tvar input_8 = $.sibling(div_30, 2);\n\n\t\t\t$.remove_input_defaults(input_8);\n\t\t\t$.reset(div_29);\n\t\t\t$.reset(div_28);\n\n\t\t\tvar div_31 = $.sibling(div_28, 6);\n\t\t\tvar input_9 = $.child(div_31);\n\n\t\t\t$.remove_input_defaults(input_9);\n\n\t\t\tvar button_24 = $.sibling(input_9, 2);\n\n\t\t\t$.reset(div_31);\n\n\t\t\tvar div_32 = $.sibling(div_31, 2);\n\t\t\tvar span_9 = $.sibling($.child(div_32), 2);\n\t\t\tvar text_10 = $.only_child(span_9);\n\n\t\t\t$.reset(div_32);\n\n\t\t\tvar input_10 = $.sibling(div_32, 2);\n\n\t\t\t$.remove_input_defaults(input_10);\n\n\t\t\tvar div_33 = $.sibling(input_10, 4);\n\t\t\tvar span_10 = $.child(div_33);\n\t\t\tvar text_11 = $.only_child(span_10);\n\t\t\tvar node_3 = $.sibling(span_10, 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_2 = ($$anchor) => {\n\t\t\t\t\tvar button_25 = root_3();\n\n\t\t\t\t\t$.delegated('click', button_25, () => $.get(editor).removeAnnotation($.get(editor).state.selectedAnnotationId));\n\t\t\t\t\t$.append($$anchor, button_25);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_3, ($$render) => {\n\t\t\t\t\tif ($.get(editor).state.selectedAnnotationId) $$render(consequent_2);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar node_4 = $.sibling(node_3, 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_3 = ($$anchor) => {\n\t\t\t\t\tvar button_26 = root_4();\n\n\t\t\t\t\t$.delegated('click', button_26, () => $.get(editor).clearAnnotations());\n\t\t\t\t\t$.append($$anchor, button_26);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_4, ($$render) => {\n\t\t\t\t\tif ($.get(editor).state.annotations.length > 0) $$render(consequent_3);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(div_33);\n\t\t\t$.reset(div_26);\n\n\t\t\t$.template_effect(() => {\n\t\t\t\t$.set_text(text_9, `${$.get(strokeWidth) ?? ''}px`);\n\t\t\t\t$.set_text(text_10, `${$.get(fontSize) ?? ''}px`);\n\t\t\t\t$.set_text(text_11, `Layers (${$.get(editor).state.annotations.length ?? ''})`);\n\t\t\t});\n\n\t\t\t$.bind_value(input_7, () => $.get(activeColor), ($$value) => $.set(activeColor, $$value));\n\t\t\t$.bind_value(input_8, () => $.get(strokeWidth), ($$value) => $.set(strokeWidth, $$value));\n\t\t\t$.delegated('keydown', input_9, (e) => e.key === 'Enter' && handleAddText());\n\t\t\t$.bind_value(input_9, () => $.get(textInput), ($$value) => $.set(textInput, $$value));\n\t\t\t$.delegated('click', button_24, handleAddText);\n\t\t\t$.bind_value(input_10, () => $.get(fontSize), ($$value) => $.set(fontSize, $$value));\n\t\t\t$.append($$anchor, div_26);\n\t\t};\n\n\t\t$.if(node_2, ($$render) => {\n\t\t\tif ($.get(activeTab) === 'annotate') $$render(consequent_4);\n\t\t});\n\t}\n\n\tvar node_5 = $.sibling(node_2, 2);\n\n\t{\n\t\tvar consequent_6 = ($$anchor) => {\n\t\t\tvar div_34 = root_7();\n\t\t\tvar div_35 = $.child(div_34);\n\t\t\tvar button_27 = $.sibling($.child(div_35), 2);\n\n\t\t\t$.reset(div_35);\n\n\t\t\tvar label = $.sibling(div_35, 2);\n\t\t\tvar input_11 = $.child(label);\n\n\t\t\t$.remove_input_defaults(input_11);\n\t\t\t$.next(2);\n\t\t\t$.reset(label);\n\n\t\t\tvar node_6 = $.sibling(label, 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_5 = ($$anchor) => {\n\t\t\t\t\tvar fragment = root_6();\n\t\t\t\t\tvar div_36 = $.first_child(fragment);\n\t\t\t\t\tvar input_12 = $.sibling($.child(div_36), 2);\n\n\t\t\t\t\t$.remove_input_defaults(input_12);\n\t\t\t\t\t$.reset(div_36);\n\n\t\t\t\t\tvar div_37 = $.sibling(div_36, 2);\n\t\t\t\t\tvar button_28 = $.child(div_37);\n\t\t\t\t\tvar button_29 = $.sibling(button_28, 2);\n\n\t\t\t\t\t$.reset(div_37);\n\n\t\t\t\t\tvar div_38 = $.sibling(div_37, 2);\n\t\t\t\t\tvar div_39 = $.child(div_38);\n\t\t\t\t\tvar span_11 = $.sibling($.child(div_39), 2);\n\t\t\t\t\tvar text_12 = $.only_child(span_11, true);\n\n\t\t\t\t\t$.reset(div_39);\n\n\t\t\t\t\tvar input_13 = $.sibling(div_39, 2);\n\n\t\t\t\t\t$.remove_input_defaults(input_13);\n\t\t\t\t\t$.reset(div_38);\n\n\t\t\t\t\tvar div_40 = $.sibling(div_38, 2);\n\t\t\t\t\tvar div_41 = $.child(div_40);\n\t\t\t\t\tvar span_12 = $.sibling($.child(div_41), 2);\n\t\t\t\t\tvar text_13 = $.only_child(span_12, true);\n\n\t\t\t\t\t$.reset(div_41);\n\n\t\t\t\t\tvar input_14 = $.sibling(div_41, 2);\n\n\t\t\t\t\t$.remove_input_defaults(input_14);\n\t\t\t\t\t$.reset(div_40);\n\n\t\t\t\t\tvar div_42 = $.sibling(div_40, 2);\n\t\t\t\t\tvar div_43 = $.child(div_42);\n\t\t\t\t\tvar span_13 = $.sibling($.child(div_43), 2);\n\t\t\t\t\tvar text_14 = $.only_child(span_13, true);\n\n\t\t\t\t\t$.reset(div_43);\n\n\t\t\t\t\tvar input_15 = $.sibling(div_43, 2);\n\n\t\t\t\t\t$.remove_input_defaults(input_15);\n\t\t\t\t\t$.reset(div_42);\n\n\t\t\t\t\tvar label_1 = $.sibling(div_42, 2);\n\t\t\t\t\tvar input_16 = $.child(label_1);\n\n\t\t\t\t\t$.remove_input_defaults(input_16);\n\t\t\t\t\t$.next(2);\n\t\t\t\t\t$.reset(label_1);\n\n\t\t\t\t\t$.template_effect(() => {\n\t\t\t\t\t\t$.set_value(input_12, $.get(editor).state.depthMask.maskSource || '');\n\n\t\t\t\t\t\t$.set_class(button_28, 1, `flex-1 py-1.5 rounded-lg border text-xs font-medium ${$.get(editor).state.depthMask.mode === 'threshold'\n\t\t\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t\t\t: 'bg-slate-800 border-slate-700 text-slate-300'}`);\n\n\t\t\t\t\t\t$.set_class(button_29, 1, `flex-1 py-1.5 rounded-lg border text-xs font-medium ${$.get(editor).state.depthMask.mode === 'brightness'\n\t\t\t\t\t\t\t? 'bg-indigo-600 border-indigo-500 text-white'\n\t\t\t\t\t\t\t: 'bg-slate-800 border-slate-700 text-slate-300'}`);\n\n\t\t\t\t\t\t$.set_text(text_12, $.get(editor).state.depthMask.depthRange[0]);\n\t\t\t\t\t\t$.set_value(input_13, $.get(editor).state.depthMask.depthRange[0]);\n\t\t\t\t\t\t$.set_text(text_13, $.get(editor).state.depthMask.depthRange[1]);\n\t\t\t\t\t\t$.set_value(input_14, $.get(editor).state.depthMask.depthRange[1]);\n\t\t\t\t\t\t$.set_text(text_14, $.get(editor).state.depthMask.softness);\n\t\t\t\t\t\t$.set_value(input_15, $.get(editor).state.depthMask.softness);\n\t\t\t\t\t\t$.set_checked(input_16, $.get(editor).state.depthMask.invert);\n\t\t\t\t\t});\n\n\t\t\t\t\t$.delegated('input', input_12, (e) => $.get(editor).setDepthMask({ maskSource: e.target.value || null }));\n\t\t\t\t\t$.delegated('click', button_28, () => $.get(editor).setDepthMask({ mode: 'threshold' }));\n\t\t\t\t\t$.delegated('click', button_29, () => $.get(editor).setDepthMask({ mode: 'brightness' }));\n\n\t\t\t\t\t$.delegated('input', input_13, (e) => $.get(editor).setDepthMask({\n\t\t\t\t\t\tdepthRange: [\n\t\t\t\t\t\t\tNumber(e.target.value),\n\t\t\t\t\t\t\t$.get(editor).state.depthMask.depthRange[1]\n\t\t\t\t\t\t]\n\t\t\t\t\t}));\n\n\t\t\t\t\t$.delegated('input', input_14, (e) => $.get(editor).setDepthMask({\n\t\t\t\t\t\tdepthRange: [\n\t\t\t\t\t\t\t$.get(editor).state.depthMask.depthRange[0],\n\t\t\t\t\t\t\tNumber(e.target.value)\n\t\t\t\t\t\t]\n\t\t\t\t\t}));\n\n\t\t\t\t\t$.delegated('input', input_15, (e) => $.get(editor).setDepthMask({ softness: Number(e.target.value) }));\n\t\t\t\t\t$.delegated('change', input_16, (e) => $.get(editor).setDepthMask({ invert: e.target.checked }));\n\t\t\t\t\t$.append($$anchor, fragment);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_6, ($$render) => {\n\t\t\t\t\tif ($.get(editor).state.depthMask.enabled) $$render(consequent_5);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(div_34);\n\t\t\t$.template_effect(() => $.set_checked(input_11, $.get(editor).state.depthMask.enabled));\n\t\t\t$.delegated('click', button_27, () => $.get(editor).resetDepthMask());\n\t\t\t$.delegated('change', input_11, (e) => $.get(editor).setDepthMask({ enabled: e.target.checked }));\n\t\t\t$.append($$anchor, div_34);\n\t\t};\n\n\t\t$.if(node_5, ($$render) => {\n\t\t\tif ($.get(activeTab) === 'depth') $$render(consequent_6);\n\t\t});\n\t}\n\n\tvar node_7 = $.sibling(node_5, 2);\n\n\t{\n\t\tvar consequent_13 = ($$anchor) => {\n\t\t\tvar div_44 = root_16();\n\t\t\tvar div_45 = $.child(div_44);\n\t\t\tvar div_46 = $.child(div_45);\n\t\t\tvar node_8 = $.sibling($.child(div_46), 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_7 = ($$anchor) => {\n\t\t\t\t\tvar span_14 = root_8();\n\n\t\t\t\t\t$.append($$anchor, span_14);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_8, ($$render) => {\n\t\t\t\t\tif ($.get(isRemovingBg)) $$render(consequent_7);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(div_46);\n\n\t\t\tvar button_30 = $.sibling(div_46, 4);\n\t\t\tvar node_9 = $.child(button_30);\n\n\t\t\t{\n\t\t\t\tvar consequent_8 = ($$anchor) => {\n\t\t\t\t\tvar fragment_1 = root_9();\n\n\t\t\t\t\t$.next();\n\t\t\t\t\t$.append($$anchor, fragment_1);\n\t\t\t\t};\n\n\t\t\t\tvar alternate = ($$anchor) => {\n\t\t\t\t\tvar fragment_2 = root_10();\n\n\t\t\t\t\t$.next();\n\t\t\t\t\t$.append($$anchor, fragment_2);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_9, ($$render) => {\n\t\t\t\t\tif ($.get(isRemovingBg)) $$render(consequent_8); else $$render(alternate, -1);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(button_30);\n\t\t\t$.reset(div_45);\n\n\t\t\tvar div_47 = $.sibling(div_45, 2);\n\t\t\tvar div_48 = $.child(div_47);\n\t\t\tvar node_10 = $.sibling($.child(div_48), 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_9 = ($$anchor) => {\n\t\t\t\t\tvar span_15 = root_11();\n\n\t\t\t\t\t$.append($$anchor, span_15);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_10, ($$render) => {\n\t\t\t\t\tif ($.get(isInpainting)) $$render(consequent_9);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(div_48);\n\n\t\t\tvar div_49 = $.sibling(div_48, 4);\n\t\t\tvar textarea = $.sibling($.child(div_49), 2);\n\n\t\t\t$.remove_textarea_child(textarea);\n\t\t\t$.reset(div_49);\n\n\t\t\tvar div_50 = $.sibling(div_49, 2);\n\t\t\tvar div_51 = $.sibling($.child(div_50), 2);\n\t\t\tvar button_31 = $.child(div_51);\n\t\t\tvar text_15 = $.only_child(button_31);\n\t\t\tvar button_32 = $.sibling(button_31, 2);\n\t\t\tvar text_16 = $.only_child(button_32);\n\n\t\t\t$.reset(div_51);\n\t\t\t$.reset(div_50);\n\n\t\t\tvar button_33 = $.sibling(div_50, 2);\n\t\t\tvar node_11 = $.child(button_33);\n\n\t\t\t{\n\t\t\t\tvar consequent_10 = ($$anchor) => {\n\t\t\t\t\tvar fragment_3 = root_12();\n\n\t\t\t\t\t$.next();\n\t\t\t\t\t$.append($$anchor, fragment_3);\n\t\t\t\t};\n\n\t\t\t\tvar alternate_1 = ($$anchor) => {\n\t\t\t\t\tvar fragment_4 = root_13();\n\n\t\t\t\t\t$.next();\n\t\t\t\t\t$.append($$anchor, fragment_4);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_11, ($$render) => {\n\t\t\t\t\tif ($.get(isInpainting)) $$render(consequent_10); else $$render(alternate_1, -1);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(button_33);\n\t\t\t$.reset(div_47);\n\n\t\t\tvar node_12 = $.sibling(div_47, 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_11 = ($$anchor) => {\n\t\t\t\t\tvar div_52 = root_14();\n\t\t\t\t\tvar text_17 = $.only_child(div_52, true);\n\n\t\t\t\t\t$.template_effect(() => $.set_text(text_17, $.get(aiError)));\n\t\t\t\t\t$.append($$anchor, div_52);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_12, ($$render) => {\n\t\t\t\t\tif ($.get(aiError)) $$render(consequent_11);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar node_13 = $.sibling(node_12, 2);\n\n\t\t\t{\n\t\t\t\tvar consequent_12 = ($$anchor) => {\n\t\t\t\t\tvar div_53 = root_15();\n\t\t\t\t\tvar text_18 = $.only_child(div_53, true);\n\n\t\t\t\t\t$.template_effect(() => $.set_text(text_18, $.get(aiSuccess)));\n\t\t\t\t\t$.append($$anchor, div_53);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_13, ($$render) => {\n\t\t\t\t\tif ($.get(aiSuccess)) $$render(consequent_12);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(div_44);\n\n\t\t\t$.template_effect(\n\t\t\t\t($0) => {\n\t\t\t\t\tbutton_30.disabled = $.get(isRemovingBg) || $.get(isInpainting);\n\n\t\t\t\t\t$.set_class(button_31, 1, `px-2 py-1.5 rounded border text-[11px] font-medium text-left transition-colors ${$.get(inpaintMaskMode) === 'annotations'\n\t\t\t\t\t\t? 'bg-purple-600/30 border-purple-500 text-purple-200'\n\t\t\t\t\t\t: 'bg-slate-900 border-slate-700 text-slate-400 hover:text-slate-200'}`);\n\n\t\t\t\t\t$.set_text(text_15, `Drawn Shapes (${$.get(editor).state.annotations.length ?? ''})`);\n\n\t\t\t\t\t$.set_class(button_32, 1, `px-2 py-1.5 rounded border text-[11px] font-medium text-left transition-colors ${$.get(inpaintMaskMode) === 'crop'\n\t\t\t\t\t\t? 'bg-purple-600/30 border-purple-500 text-purple-200'\n\t\t\t\t\t\t: 'bg-slate-900 border-slate-700 text-slate-400 hover:text-slate-200'}`);\n\n\t\t\t\t\t$.set_text(text_16, `Crop Box (${$.get(editor).state.crop ? 'Selected' : 'Full'})`);\n\t\t\t\t\tbutton_33.disabled = $0;\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\t() => $.get(isInpainting) || $.get(isRemovingBg) || !$.get(inpaintPrompt).trim()\n\t\t\t\t]\n\t\t\t);\n\n\t\t\t$.delegated('click', button_30, handleRemoveBackground);\n\t\t\t$.bind_value(textarea, () => $.get(inpaintPrompt), ($$value) => $.set(inpaintPrompt, $$value));\n\t\t\t$.delegated('click', button_31, () => $.set(inpaintMaskMode, 'annotations'));\n\t\t\t$.delegated('click', button_32, () => $.set(inpaintMaskMode, 'crop'));\n\t\t\t$.delegated('click', button_33, handleInpaint);\n\t\t\t$.append($$anchor, div_44);\n\t\t};\n\n\t\t$.if(node_7, ($$render) => {\n\t\t\tif ($.get(activeTab) === 'ai') $$render(consequent_13);\n\t\t});\n\t}\n\n\t$.reset(div_6);\n\t$.reset(div_4);\n\t$.reset(div);\n\n\t$.template_effect(\n\t\t($0) => {\n\t\t\t$.set_class(div, 1, `flex flex-col bg-slate-900 border border-slate-800 rounded-xl overflow-hidden shadow-2xl text-slate-100 ${className() ?? ''}`);\n\t\t\t$.set_style(div, style());\n\n\t\t\t$.set_class(button, 1, `px-3 py-1.5 rounded-md font-medium transition-colors ${$.get(activeTab) === 'crop'\n\t\t\t\t? 'bg-indigo-600 text-white shadow'\n\t\t\t\t: 'text-slate-400 hover:text-slate-200'}`);\n\n\t\t\t$.set_class(button_1, 1, `px-3 py-1.5 rounded-md font-medium transition-colors ${$.get(activeTab) === 'adjust'\n\t\t\t\t? 'bg-indigo-600 text-white shadow'\n\t\t\t\t: 'text-slate-400 hover:text-slate-200'}`);\n\n\t\t\t$.set_class(button_2, 1, `px-3 py-1.5 rounded-md font-medium transition-colors ${$.get(activeTab) === 'annotate'\n\t\t\t\t? 'bg-indigo-600 text-white shadow'\n\t\t\t\t: 'text-slate-400 hover:text-slate-200'}`);\n\n\t\t\t$.set_class(button_3, 1, `px-3 py-1.5 rounded-md font-medium transition-colors ${$.get(activeTab) === 'depth'\n\t\t\t\t? 'bg-indigo-600 text-white shadow'\n\t\t\t\t: 'text-slate-400 hover:text-slate-200'}`);\n\n\t\t\t$.set_class(button_4, 1, `px-3 py-1.5 rounded-md font-medium transition-colors flex items-center gap-1.5 ${$.get(activeTab) === 'ai'\n\t\t\t\t? 'bg-indigo-600 text-white shadow'\n\t\t\t\t: 'text-slate-400 hover:text-slate-200'}`);\n\n\t\t\tbutton_5.disabled = !$.get(editor).canUndo;\n\t\t\tbutton_6.disabled = !$.get(editor).canRedo;\n\t\t\t$.set_text(text, `${$0 ?? ''}%`);\n\t\t},\n\t\t[() => Math.round($.get(editor).state.zoom * 100)]\n\t);\n\n\t$.delegated('click', button, () => {\n\t\t$.set(activeTab, 'crop');\n\t\t$.get(editor).setTool('crop');\n\t});\n\n\t$.delegated('click', button_1, () => {\n\t\t$.set(activeTab, 'adjust');\n\t\t$.get(editor).setTool('select');\n\t});\n\n\t$.delegated('click', button_2, () => {\n\t\t$.set(activeTab, 'annotate');\n\t\t$.get(editor).setTool('pen');\n\t});\n\n\t$.delegated('click', button_3, () => {\n\t\t$.set(activeTab, 'depth');\n\t\t$.get(editor).setTool('select');\n\t});\n\n\t$.delegated('click', button_4, () => {\n\t\t$.set(activeTab, 'ai');\n\t\t$.get(editor).setTool('select');\n\t});\n\n\t$.delegated('click', button_5, () => $.get(editor).undo());\n\t$.delegated('click', button_6, () => $.get(editor).redo());\n\t$.delegated('click', button_7, () => $.get(editor).reset());\n\t$.delegated('click', button_8, () => $.get(editor).zoomOut());\n\t$.delegated('click', button_9, () => $.get(editor).zoomIn());\n\t$.delegated('mousedown', button_10, () => $.get(editor).setComparing(true));\n\t$.delegated('mouseup', button_10, () => $.get(editor).setComparing(false));\n\t$.event('mouseleave', button_10, () => $.get(editor).setComparing(false));\n\t$.delegated('click', button_11, handleExport);\n\t$.delegated('mousedown', canvas, handleMouseDown);\n\t$.delegated('mousemove', canvas, handleMouseMove);\n\t$.delegated('mouseup', canvas, handleMouseUp);\n\t$.event('mouseleave', canvas, handleMouseUp);\n\t$.append($$anchor, div);\n\t$.pop();\n}\n\n$.delegate([\n\t'click',\n\t'mousedown',\n\t'mouseup',\n\t'mousemove',\n\t'input',\n\t'keydown',\n\t'change'\n]);","import {\n ImageEditorController\n} from \"@pixerate/editor\";\nexport function createReactiveImageEditor(options = {}) {\n const controller = new ImageEditorController(options);\n let state = $state(controller.getState());\n let historyTicks = $state(0);\n controller.subscribe((updated) => {\n state = { ...updated };\n historyTicks++;\n });\n return {\n get controller() {\n return controller;\n },\n get state() {\n return state;\n },\n get canUndo() {\n void historyTicks;\n return controller.canUndo;\n },\n get canRedo() {\n void historyTicks;\n return controller.canRedo;\n },\n setTool(tool) {\n controller.setTool(tool);\n },\n setCrop(crop, addToHistory = true) {\n controller.setCrop(crop, addToHistory);\n },\n applyCropPreset(ratio) {\n controller.applyCropPreset(ratio);\n },\n resetCrop() {\n controller.resetCrop();\n },\n rotate(degrees) {\n controller.rotate(degrees);\n },\n setRotation(degrees) {\n controller.setRotation(degrees);\n },\n flipHorizontal() {\n controller.flipHorizontal();\n },\n flipVertical() {\n controller.flipVertical();\n },\n setAdjustments(partial, commitToHistory = true) {\n controller.setAdjustments(partial, commitToHistory);\n },\n resetAdjustments() {\n controller.resetAdjustments();\n },\n setDepthMask(partial) {\n controller.setDepthMask(partial);\n },\n resetDepthMask() {\n controller.resetDepthMask();\n },\n addAnnotation(ann) {\n return controller.addAnnotation(ann);\n },\n updateAnnotation(id, partial, commitToHistory = true) {\n controller.updateAnnotation(id, partial, commitToHistory);\n },\n removeAnnotation(id) {\n controller.removeAnnotation(id);\n },\n clearAnnotations() {\n controller.clearAnnotations();\n },\n selectAnnotation(id) {\n controller.selectAnnotation(id);\n },\n undo() {\n return controller.undo();\n },\n redo() {\n return controller.redo();\n },\n reset() {\n controller.reset();\n },\n zoomIn(factor) {\n controller.zoomIn(factor);\n },\n zoomOut(factor) {\n controller.zoomOut(factor);\n },\n resetZoom() {\n controller.resetZoom();\n },\n setZoom(zoom) {\n controller.setZoom(zoom);\n },\n setPan(pan) {\n controller.setPan(pan);\n },\n setComparing(comparing) {\n controller.setComparing(comparing);\n },\n loadImage(src) {\n return controller.loadImage(src);\n },\n toDataURL(opts) {\n return controller.toDataURL(opts);\n },\n toBlob(opts) {\n return controller.toBlob(opts);\n },\n toJSON() {\n return controller.toJSON();\n },\n loadJSON(data) {\n controller.loadJSON(data);\n },\n renderMask(opts) {\n return controller.renderMask(opts);\n },\n toMaskDataURL(opts) {\n return controller.toMaskDataURL(opts);\n },\n applyInpaintedImage(newDataUrl) {\n return controller.applyInpaintedImage(newDataUrl);\n },\n applyBackgroundRemovedImage(newDataUrl) {\n return controller.applyBackgroundRemovedImage(newDataUrl);\n }\n };\n}\n"],"mappings":";AAAA,OAAO;AACP,YAAYA,QAAO;AAEnB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;;;;ACTP,SACE,6BACK;AACA,SAAS,0BAA0B,UAAO,CAAA,GAAO;AACtD,QAAM,aAAa,IAAI,sBAAsB,OAAO;AACpD,MAAIC,SAAQ,QAAM,QAAC,WAAW,SAAQ,CAAA,CAAA;AACtC,MAAI,eAAe,QAAO,CAAC;AAC3B,aAAW,UAAS,CAAE,YAAY;UAChCA,QAAK,EAAA,GAAQ,QAAO,GAAA,IAAA;aACpB,YAAY;EACd,CAAC;AACD,SAAM;IACJ,IAAI,aAAa;AACf,aAAO;IACT;IACA,IAAI,QAAQ;AACV,aAAM,MAACA,MAAK;IACd;IACA,IAAI,UAAU;iBACP,YAAY;AACjB,aAAO,WAAW;IACpB;IACA,IAAI,UAAU;iBACP,YAAY;AACjB,aAAO,WAAW;IACpB;IACA,QAAQ,MAAM;AACZ,iBAAW,QAAQ,IAAI;IACzB;IACA,QAAQ,MAAM,eAAe,MAAM;AACjC,iBAAW,QAAQ,MAAM,YAAY;IACvC;IACA,gBAAgB,OAAO;AACrB,iBAAW,gBAAgB,KAAK;IAClC;IACA,YAAY;AACV,iBAAW,UAAS;IACtB;IACA,OAAO,SAAS;AACd,iBAAW,OAAO,OAAO;IAC3B;IACA,YAAY,SAAS;AACnB,iBAAW,YAAY,OAAO;IAChC;IACA,iBAAiB;AACf,iBAAW,eAAc;IAC3B;IACA,eAAe;AACb,iBAAW,aAAY;IACzB;IACA,eAAe,SAAS,kBAAkB,MAAM;AAC9C,iBAAW,eAAe,SAAS,eAAe;IACpD;IACA,mBAAmB;AACjB,iBAAW,iBAAgB;IAC7B;IACA,aAAa,SAAS;AACpB,iBAAW,aAAa,OAAO;IACjC;IACA,iBAAiB;AACf,iBAAW,eAAc;IAC3B;IACA,cAAc,KAAK;AACjB,aAAO,WAAW,cAAc,GAAG;IACrC;IACA,iBAAiB,IAAI,SAAS,kBAAkB,MAAM;AACpD,iBAAW,iBAAiB,IAAI,SAAS,eAAe;IAC1D;IACA,iBAAiB,IAAI;AACnB,iBAAW,iBAAiB,EAAE;IAChC;IACA,mBAAmB;AACjB,iBAAW,iBAAgB;IAC7B;IACA,iBAAiB,IAAI;AACnB,iBAAW,iBAAiB,EAAE;IAChC;IACA,OAAO;AACL,aAAO,WAAW,KAAI;IACxB;IACA,OAAO;AACL,aAAO,WAAW,KAAI;IACxB;IACA,QAAQ;AACN,iBAAW,MAAK;IAClB;IACA,OAAO,QAAQ;AACb,iBAAW,OAAO,MAAM;IAC1B;IACA,QAAQ,QAAQ;AACd,iBAAW,QAAQ,MAAM;IAC3B;IACA,YAAY;AACV,iBAAW,UAAS;IACtB;IACA,QAAQ,MAAM;AACZ,iBAAW,QAAQ,IAAI;IACzB;IACA,OAAO,KAAK;AACV,iBAAW,OAAO,GAAG;IACvB;IACA,aAAa,WAAW;AACtB,iBAAW,aAAa,SAAS;IACnC;IACA,UAAU,KAAK;AACb,aAAO,WAAW,UAAU,GAAG;IACjC;IACA,UAAU,MAAM;AACd,aAAO,WAAW,UAAU,IAAI;IAClC;IACA,OAAO,MAAM;AACX,aAAO,WAAW,OAAO,IAAI;IAC/B;IACA,SAAS;AACP,aAAO,WAAW,OAAM;IAC1B;IACA,SAAS,MAAM;AACb,iBAAW,SAAS,IAAI;IAC1B;IACA,WAAW,MAAM;AACf,aAAO,WAAW,WAAW,IAAI;IACnC;IACA,cAAc,MAAM;AAClB,aAAO,WAAW,cAAc,IAAI;IACtC;IACA,oBAAoB,YAAY;AAC9B,aAAO,WAAW,oBAAoB,UAAU;IAClD;IACA,4BAA4B,YAAY;AACtC,aAAO,WAAW,4BAA4B,UAAU;IAC1D;;AAEJ;;;ADvHA,IAAI,OAAS,aAAU,unCAAinC;AACxoC,IAAI,SAAW,aAAU,isDAAisD;AAC1tD,IAAI,SAAW,aAAU,kCAAkC;AAC3D,IAAI,SAAW,aAAU,kGAAkG;AAC3H,IAAI,SAAW,aAAU,kGAAkG;AAC3H,IAAI,SAAW,aAAU,+7CAA+7C;AACx9C,IAAI,SAAW,aAAU,gpCAAgpC,CAAC;AAC1qC,IAAI,SAAW,aAAU,ydAAyd;AAClf,IAAI,SAAW,aAAU,wJAAwJ;AACjL,IAAI,SAAW,aAAU,4HAA4H,CAAC;AACtJ,IAAI,UAAY,YAAS,gQAAgQ,CAAC;AAC1R,IAAI,UAAY,aAAU,0JAA0J;AACpL,IAAI,UAAY,aAAU,2HAA2H,CAAC;AACtJ,IAAI,UAAY,YAAS,+PAA+P,CAAC;AACzR,IAAI,UAAY,aAAU,uGAAuG;AACjI,IAAI,UAAY,aAAU,gHAAgH;AAC1I,IAAI,UAAY,aAAU,06EAA06E;AACp8E,IAAI,UAAY,aAAU,q+EAA29E;AAEt+E,SAAR,YAA6B,UAAU,SAAS;AACtD,EAAE,QAAK,SAAS,IAAI;AAEpB,MAAI,MAAQ,QAAK,SAAS,OAAO,GAAG,EAAE,GACrC,YAAc,QAAK,SAAS,SAAS,GAAG,EAAE,GAC1C,QAAU,QAAK,SAAS,SAAS,GAAG,EAAE;AAEvC,QAAM,iBAAiB,0BAA0B;AACjD,QAAM,SAAW,WAAQ,MAAM,QAAQ,UAAU,cAAc;AAC/D,MAAI,WAAa,SAAM,IAAI;AAC3B,MAAI,cAAgB,SAAM,IAAI;AAC9B,MAAI,YAAc,SAAM,MAAM;AAC9B,MAAI,kBAAoB,SAAM,IAAI;AAGlC,MAAI,gBAAkB,SAAM,EAAE;AAE9B,MAAI,kBAAoB,SAAM,aAAa;AAC3C,MAAI,eAAiB,SAAM,KAAK;AAChC,MAAI,eAAiB,SAAM,KAAK;AAChC,MAAI,UAAY,SAAM,IAAI;AAC1B,MAAI,YAAc,SAAM,IAAI;AAC5B,QAAM,qBAAuB,WAAQ,MAAM,QAAQ,aAAa,QAAQ,SAAS,SAAS;AAC1F,QAAM,sBAAwB,WAAQ,MAAM,QAAQ,sBAAsB,QAAQ,SAAS,kBAAkB;AAE7G,iBAAe,yBAAyB;AACvC,QAAI,CAAG,OAAI,mBAAmB,GAAG;AAChC,MAAE,OAAI,SAAS,2CAA2C;AAE1D;AAAA,IACD;AAEA,IAAE,OAAI,SAAS,IAAI;AACnB,IAAE,OAAI,WAAW,IAAI;AACrB,IAAE,OAAI,cAAc,IAAI;AAExB,QAAI;AACH,YAAM,eAAe,MAAQ,OAAI,MAAM,EAAE,UAAU,QAAQ,aAAa;AACxE,YAAM,SAAS,MAAQ,OAAI,mBAAmB,EAAE,EAAE,aAAa,CAAC;AAEhE,UAAI,OAAO,WAAW,UAAU;AAC/B,cAAQ,OAAI,MAAM,EAAE,4BAA4B,MAAM;AACtD,QAAE,OAAI,WAAW,kCAAkC;AAAA,MACpD,OAAO;AACN,QAAE,OAAI,WAAW,8BAA8B;AAAA,MAChD;AAAA,IACD,SAAQ,KAAK;AACZ,MAAE,OAAI,SAAS,KAAK,WAAW,gCAAgC,IAAI;AAAA,IACpE,UAAE;AACD,MAAE,OAAI,cAAc,KAAK;AAAA,IAC1B;AAAA,EACD;AAEA,iBAAe,gBAAgB;AAC9B,QAAI,CAAG,OAAI,kBAAkB,GAAG;AAC/B,MAAE,OAAI,SAAS,mCAAmC;AAElD;AAAA,IACD;AAEA,QAAI,CAAG,OAAI,aAAa,EAAE,KAAK,GAAG;AACjC,MAAE,OAAI,SAAS,oCAAoC;AAEnD;AAAA,IACD;AAEA,IAAE,OAAI,SAAS,IAAI;AACnB,IAAE,OAAI,WAAW,IAAI;AACrB,IAAE,OAAI,cAAc,IAAI;AAExB,QAAI;AACH,YAAM,eAAe,MAAQ,OAAI,MAAM,EAAE,UAAU,QAAQ,aAAa;AAExE,YAAM,cAAc,MAAQ,OAAI,MAAM,EAAE,cAAc;AAAA,QACrD,gBAAkB,OAAI,eAAe,MAAM;AAAA,QAC3C,SAAW,OAAI,eAAe,MAAM;AAAA,MACrC,CAAC;AAED,YAAM,SAAS,MAAQ,OAAI,kBAAkB,EAAE;AAAA,QAC9C,QAAU,OAAI,aAAa,EAAE,KAAK;AAAA,QAClC;AAAA,QACA;AAAA,QACA,SAAW,OAAI,eAAe,MAAM,SAAW,OAAI,MAAM,EAAE,MAAM,OAAO;AAAA,MACzE,CAAC;AAED,UAAI,OAAO,WAAW,UAAU;AAC/B,cAAQ,OAAI,MAAM,EAAE,oBAAoB,MAAM;AAC9C,QAAE,OAAI,WAAW,kCAAkC;AAAA,MACpD,OAAO;AACN,QAAE,OAAI,WAAW,sBAAsB;AAAA,MACxC;AAAA,IACD,SAAQ,KAAK;AACZ,MAAE,OAAI,SAAS,KAAK,WAAW,+BAA+B,IAAI;AAAA,IACnE,UAAE;AACD,MAAE,OAAI,cAAc,KAAK;AAAA,IAC1B;AAAA,EACD;AAGA,MAAI,cAAgB,SAAM,SAAS;AAEnC,MAAI,cAAgB,SAAM,CAAC;AAC3B,MAAI,WAAa,SAAM,EAAE;AACzB,MAAI,YAAc,SAAM,EAAE;AAG1B,MAAI,kBAAoB,SAAM,IAAI;AAElC,MAAI,YAAc,SAAM,IAAI;AAC5B,MAAI,eAAe;AACnB,MAAI,qBAAqB;AACzB,MAAI,YAAY;AAChB,MAAI,cAAc,CAAC;AACnB,MAAI,iBAAiB;AAGrB,EAAE,eAAY,MAAM;AACnB,QAAI,IAAI,KAAK,IAAI,MAAQ,OAAI,MAAM,EAAE,MAAM,WAAW;AACrD,MAAE,OAAI,MAAM,EAAE,UAAU,IAAI,CAAC;AAAA,IAC9B;AAAA,EACD,CAAC;AAED,iBAAe,aAAa,oBAAoB,cAAc;AAC7D,QAAI,CAAG,OAAI,QAAQ,KAAK,CAAG,OAAI,WAAW,EAAG;AAE7C,UAAM,UAAY,OAAI,WAAW,EAAE,eAAe;AAClD,UAAM,WAAa,OAAI,WAAW,EAAE,gBAAgB;AAEpD,UAAQ,OAAI,MAAM,EAAE,WAAW,OAAS,OAAI,QAAQ,GAAG;AAAA,MACtD,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,iBAAmB,OAAI,SAAS,MAAM;AAAA,MACtC,sBAAsB;AAAA,MACtB,aAAa;AAAA,MACb,iBAAiB,uBAAuB,SAAY,qBAAuB,OAAI,eAAe;AAAA,MAC9F,WAAW,iBAAiB,SAAY,eAAiB,OAAI,SAAS;AAAA,IACvE,CAAC;AAAA,EACF;AAEA,EAAE,eAAY,MAAM;AAEnB,SAAO,OAAI,MAAM,EAAE;AAEnB,SAAO,OAAI,SAAS;AAEpB,UAAM,MAAM,OAAO,0BAA0B,cAAc,wBAAwB,CAAC,OAAO,WAAW,IAAI,CAAC;AAC3G,UAAM,MAAM,OAAO,yBAAyB,cAAc,uBAAuB,CAAC,OAAO,aAAa,EAAE;AAExG,UAAM,SAAS,IAAI,MAAM;AACxB,mBAAa;AAAA,IACd,CAAC;AAED,WAAO,MAAM,IAAI,MAAM;AAAA,EACxB,CAAC;AAED,EAAE,eAAY,MAAM;AACnB,QAAM,OAAI,SAAS,MAAM,UAAY,OAAI,MAAM,EAAE,MAAM,eAAe,QAAQ;AAC7E,MAAE,OAAI,MAAM,EAAE,QAAQ,MAAM;AAAA,IAC7B;AAAA,EACD,CAAC;AAED,EAAE,eAAY,MAAM;AACnB,QAAI,CAAG,OAAI,WAAW,EAAG;AAEzB,QAAI,OAAO,mBAAmB,aAAa;AAC1C,YAAM,WAAW,IAAI,eAAe,MAAM;AACzC,qBAAa;AAAA,MACd,CAAC;AAED,eAAS,QAAU,OAAI,WAAW,CAAC;AAEnC,aAAO,MAAM,SAAS,WAAW;AAAA,IAClC,OAAO;AACN,YAAM,eAAe,MAAM,aAAa;AAExC,aAAO,iBAAiB,UAAU,YAAY;AAE9C,aAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,IAC/D;AAAA,EACD,CAAC;AAED,WAAS,oBAAoB,GAAG;AAC/B,QAAI,CAAG,OAAI,QAAQ,EAAG,QAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAE1C,UAAM,OAAS,OAAI,QAAQ,EAAE,sBAAsB;AACnD,UAAM,SAAS,KAAK,QAAQ,IAAM,OAAI,QAAQ,EAAE,QAAQ,KAAK,QAAQ;AACrE,UAAM,SAAS,KAAK,SAAS,IAAM,OAAI,QAAQ,EAAE,SAAS,KAAK,SAAS;AAExE,WAAO;AAAA,MACN,IAAI,EAAE,UAAU,KAAK,QAAQ;AAAA,MAC7B,IAAI,EAAE,UAAU,KAAK,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,WAAS,gBAAgB,GAAG;AAC3B,QAAI,CAAG,OAAI,QAAQ,EAAG;AAEtB,UAAM,WAAW,oBAAoB,CAAC;AAEtC,QAAM,OAAI,SAAS,MAAM,QAAQ;AAChC,YAAM,aAAe,OAAI,SAAS,KAAO,OAAI,MAAM,EAAE,MAAM,QAAQ;AAAA,QAClE,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAS,OAAI,MAAM,EAAE,MAAM,gBAAgB;AAAA,QAC3C,QAAU,OAAI,MAAM,EAAE,MAAM,gBAAgB;AAAA,MAC7C;AAEA,YAAM,SAAS,YAAY,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,IAAI,UAAU;AACvH,YAAM,aAAa,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,IAAI;AAExH,UAAI,QAAQ;AACX,uBAAe;AAAA,UACd;AAAA,UACA,eAAe;AAAA,UACf;AAAA,UACA,WAAW;AAAA,QACZ;AAAA,MACD,OAAO;AAEN,uBAAe;AAAA,UACd,QAAQ;AAAA,UACR,eAAe;AAAA,UACf;AAAA,UACA,WAAW,EAAE,GAAG,WAAW,GAAG,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,EAAE;AAAA,QACpE;AAAA,MACD;AAEA;AAAA,IACD;AAEA,QAAM,OAAI,SAAS,MAAM,YAAY;AACpC,YAAM,QAAQ,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,KAAK;AAEpH,uBAAiB;AAEjB,UAAM,OAAI,MAAM,EAAE,MAAM,eAAe,UAAU;AAChD,iBAAS,IAAM,OAAI,MAAM,EAAE,MAAM,YAAY,SAAS,GAAG,KAAK,GAAG,KAAK;AACrE,gBAAM,MAAQ,OAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAE7C,cAAI,kBAAkB,OAAO,GAAG,GAAG;AAClC,YAAE,OAAI,MAAM,EAAE,iBAAiB,IAAI,EAAE;AACrC,iCAAqB,EAAE,OAAO,IAAI,IAAI,YAAY,OAAO,YAAY,EAAE,GAAG,IAAI,EAAE;AAEhF;AAAA,UACD;AAAA,QACD;AAEA,QAAE,OAAI,MAAM,EAAE,iBAAiB,IAAI;AAEnC;AAAA,MACD;AAEA,UAAM,OAAI,MAAM,EAAE,MAAM,eAAe,OAAO;AAC7C,oBAAY;AACZ,sBAAc,CAAC,KAAK;AAEpB,cAAM,QAAQ;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,UACH,QAAQ,CAAC,KAAK;AAAA,UACd,aAAe,OAAI,WAAW;AAAA,UAC9B,aAAe,OAAI,WAAW;AAAA,QAC/B;AAEA,QAAE,OAAI,iBAAiB,OAAO,IAAI;AAClC,qBAAa,KAAK;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAEA,WAAS,gBAAgB,GAAG;AAC3B,QAAI,CAAG,OAAI,QAAQ,EAAG;AAEtB,UAAM,WAAW,oBAAoB,CAAC;AAEtC,QAAM,OAAI,SAAS,MAAM,QAAQ;AAChC,UAAI,cAAc;AACjB,cAAM,eAAe,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,IAAI;AAC1H,YAAI;AAEJ,YAAI,aAAa,WAAW,OAAO;AAClC,gBAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,aAAa,WAAW,GAAG,aAAa,CAAC,CAAC;AAC5E,gBAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,aAAa,WAAW,GAAG,aAAa,CAAC,CAAC;AAC5E,gBAAM,OAAO,KAAK,IAAM,OAAI,MAAM,EAAE,MAAM,gBAAgB,OAAO,KAAK,IAAI,aAAa,WAAW,GAAG,aAAa,CAAC,CAAC;AACpH,gBAAM,OAAO,KAAK,IAAM,OAAI,MAAM,EAAE,MAAM,gBAAgB,QAAQ,KAAK,IAAI,aAAa,WAAW,GAAG,aAAa,CAAC,CAAC;AAErH,oBAAU;AAAA,YACT,GAAG,KAAK,MAAM,IAAI;AAAA,YAClB,GAAG,KAAK,MAAM,IAAI;AAAA,YAClB,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC;AAAA,YAC3C,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC;AAAA,UAC7C;AAAA,QACD,OAAO;AACN,oBAAU,kBAAkB,aAAa,WAAW,aAAa,QAAQ,aAAa,YAAY,cAAgB,OAAI,MAAM,EAAE,MAAM,gBAAgB,OAAS,OAAI,MAAM,EAAE,MAAM,gBAAgB,QAAU,OAAI,eAAe,CAAC;AAAA,QAC9N;AAEA,QAAE,OAAI,WAAW,SAAS,IAAI;AAC9B,qBAAa,MAAM,OAAO;AAAA,MAC3B,OAAO;AACN,cAAM,aAAe,OAAI,SAAS,KAAO,OAAI,MAAM,EAAE,MAAM,QAAQ;AAAA,UAClE,GAAG;AAAA,UACH,GAAG;AAAA,UACH,OAAS,OAAI,MAAM,EAAE,MAAM,gBAAgB;AAAA,UAC3C,QAAU,OAAI,MAAM,EAAE,MAAM,gBAAgB;AAAA,QAC7C;AAEA,cAAM,SAAS,YAAY,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,IAAI,UAAU;AAEvH,QAAE,OAAI,QAAQ,EAAE,MAAM,SAAS,cAAc,MAAM;AAAA,MACpD;AAEA;AAAA,IACD;AAEA,QAAM,OAAI,SAAS,MAAM,YAAY;AACpC,UAAI,oBAAoB;AACvB,cAAMC,gBAAe,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,KAAK;AAC3H,cAAM,KAAKA,cAAa,IAAI,mBAAmB,WAAW;AAC1D,cAAM,KAAKA,cAAa,IAAI,mBAAmB,WAAW;AAE1D,QAAE,OAAI,MAAM,EAAE,iBAAiB,mBAAmB,OAAO;AAAA,UACxD,GAAG,KAAK,MAAM,mBAAmB,WAAW,IAAI,EAAE;AAAA,UAClD,GAAG,KAAK,MAAM,mBAAmB,WAAW,IAAI,EAAE;AAAA,QACnD,CAAC;AAED;AAAA,MACD;AAEA,UAAI,CAAC,gBAAgB;AACpB,YAAM,OAAI,MAAM,EAAE,MAAM,eAAe,UAAU;AAChD,gBAAM,QAAQ,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,KAAK;AACpH,cAAI,UAAU;AAEd,mBAAS,IAAM,OAAI,MAAM,EAAE,MAAM,YAAY,SAAS,GAAG,KAAK,GAAG,KAAK;AACrE,gBAAI,kBAAkB,OAAS,OAAI,MAAM,EAAE,MAAM,YAAY,CAAC,CAAC,GAAG;AACjE,wBAAU;AAEV;AAAA,YACD;AAAA,UACD;AAEA,UAAE,OAAI,QAAQ,EAAE,MAAM,SAAS,UAAU,SAAS;AAAA,QACnD,OAAO;AACN,UAAE,OAAI,QAAQ,EAAE,MAAM,SAAS;AAAA,QAChC;AAEA;AAAA,MACD;AAEA,YAAM,eAAe,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,KAAK;AAE3H,UAAM,OAAI,MAAM,EAAE,MAAM,eAAe,SAAS,WAAW;AAC1D,oBAAY,KAAK,YAAY;AAE7B,cAAM,QAAQ;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,UACH,QAAQ,CAAC,GAAG,WAAW;AAAA,UACvB,aAAe,OAAI,WAAW;AAAA,UAC9B,aAAe,OAAI,WAAW;AAAA,QAC/B;AAEA,QAAE,OAAI,iBAAiB,OAAO,IAAI;AAClC,qBAAa,KAAK;AAAA,MACnB,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,QAAQ;AACrD,cAAM,IAAI,aAAa,IAAI,eAAe;AAC1C,cAAM,IAAI,aAAa,IAAI,eAAe;AAE1C,cAAM,QAAQ;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC;AAAA,UAC5C,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC;AAAA,UAC5C,OAAO,KAAK,IAAI,CAAC;AAAA,UACjB,QAAQ,KAAK,IAAI,CAAC;AAAA,UAClB,aAAe,OAAI,WAAW;AAAA,UAC9B,aAAe,OAAI,WAAW;AAAA,QAC/B;AAEA,QAAE,OAAI,iBAAiB,OAAO,IAAI;AAClC,qBAAa,KAAK;AAAA,MACnB,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,UAAU;AACvD,cAAM,KAAK,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,IAAI;AACzD,cAAM,KAAK,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,IAAI;AAEzD,cAAM,QAAQ;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC,IAAI;AAAA,UAChD,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC,IAAI;AAAA,UAChD,SAAS;AAAA,UACT,SAAS;AAAA,UACT,aAAe,OAAI,WAAW;AAAA,UAC9B,aAAe,OAAI,WAAW;AAAA,QAC/B;AAEA,QAAE,OAAI,iBAAiB,OAAO,IAAI;AAClC,qBAAa,KAAK;AAAA,MACnB,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,SAAS;AACtD,cAAM,QAAQ;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,GAAG,eAAe;AAAA,UAClB,GAAG,eAAe;AAAA,UAClB,MAAM,aAAa;AAAA,UACnB,MAAM,aAAa;AAAA,UACnB,aAAe,OAAI,WAAW;AAAA,UAC9B,aAAe,OAAI,WAAW;AAAA,QAC/B;AAEA,QAAE,OAAI,iBAAiB,OAAO,IAAI;AAClC,qBAAa,KAAK;AAAA,MACnB,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,QAAQ;AACrD,cAAM,QAAQ;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,GAAG,eAAe;AAAA,UAClB,GAAG,eAAe;AAAA,UAClB,MAAM,aAAa;AAAA,UACnB,MAAM,aAAa;AAAA,UACnB,aAAe,OAAI,WAAW;AAAA,UAC9B,aAAe,OAAI,WAAW;AAAA,QAC/B;AAEA,QAAE,OAAI,iBAAiB,OAAO,IAAI;AAClC,qBAAa,KAAK;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAEA,WAAS,cAAc,GAAG;AACzB,QAAI,CAAG,OAAI,QAAQ,EAAG;AAEtB,UAAM,WAAW,oBAAoB,CAAC;AAEtC,QAAM,OAAI,SAAS,MAAM,QAAQ;AAChC,UAAI,cAAc;AACjB,YAAM,OAAI,SAAS,KAAO,OAAI,SAAS,EAAE,SAAS,MAAQ,OAAI,SAAS,EAAE,UAAU,IAAI;AACtF,UAAE,OAAI,MAAM,EAAE,QAAU,OAAI,SAAS,GAAG,IAAI;AAAA,QAC7C;AAEA,uBAAe;AACf,QAAE,OAAI,WAAW,IAAI;AACrB,qBAAa;AAAA,MACd;AAEA;AAAA,IACD;AAEA,QAAM,OAAI,SAAS,MAAM,YAAY;AACpC,UAAI,oBAAoB;AACvB,6BAAqB;AAErB;AAAA,MACD;AAEA,UAAI,gBAAgB;AACnB,cAAM,eAAe,mBAAmB,UAAY,OAAI,MAAM,EAAE,OAAS,OAAI,QAAQ,EAAE,OAAS,OAAI,QAAQ,EAAE,QAAQ,KAAK;AAE3H,YAAM,OAAI,MAAM,EAAE,MAAM,eAAe,SAAS,WAAW;AAC1D,cAAI,YAAY,SAAS,GAAG;AAC3B,YAAE,OAAI,MAAM,EAAE,cAAc;AAAA,cAC3B,MAAM;AAAA,cACN,GAAG;AAAA,cACH,GAAG;AAAA,cACH,QAAQ,CAAC,GAAG,WAAW;AAAA,cACvB,aAAe,OAAI,WAAW;AAAA,cAC9B,aAAe,OAAI,WAAW;AAAA,YAC/B,CAAC;AAAA,UACF;AAEA,sBAAY;AACZ,wBAAc,CAAC;AAAA,QAChB,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,QAAQ;AACrD,gBAAM,IAAI,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC;AACpD,gBAAM,IAAI,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC;AAEpD,cAAI,IAAI,KAAK,IAAI,GAAG;AACnB,YAAE,OAAI,MAAM,EAAE,cAAc;AAAA,cAC3B,MAAM;AAAA,cACN,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC;AAAA,cAC5C,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC;AAAA,cAC5C,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,aAAe,OAAI,WAAW;AAAA,cAC9B,aAAe,OAAI,WAAW;AAAA,YAC/B,CAAC;AAAA,UACF;AAAA,QACD,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,UAAU;AACvD,gBAAM,KAAK,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,IAAI;AACzD,gBAAM,KAAK,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,IAAI;AAEzD,cAAI,KAAK,KAAK,KAAK,GAAG;AACrB,YAAE,OAAI,MAAM,EAAE,cAAc;AAAA,cAC3B,MAAM;AAAA,cACN,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC,IAAI;AAAA,cAChD,GAAG,KAAK,IAAI,eAAe,GAAG,aAAa,CAAC,IAAI;AAAA,cAChD,SAAS;AAAA,cACT,SAAS;AAAA,cACT,aAAe,OAAI,WAAW;AAAA,cAC9B,aAAe,OAAI,WAAW;AAAA,YAC/B,CAAC;AAAA,UACF;AAAA,QACD,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,SAAS;AACtD,cAAI,KAAK,MAAM,aAAa,IAAI,eAAe,GAAG,aAAa,IAAI,eAAe,CAAC,IAAI,GAAG;AACzF,YAAE,OAAI,MAAM,EAAE,cAAc;AAAA,cAC3B,MAAM;AAAA,cACN,GAAG,eAAe;AAAA,cAClB,GAAG,eAAe;AAAA,cAClB,MAAM,aAAa;AAAA,cACnB,MAAM,aAAa;AAAA,cACnB,aAAe,OAAI,WAAW;AAAA,cAC9B,aAAe,OAAI,WAAW;AAAA,YAC/B,CAAC;AAAA,UACF;AAAA,QACD,WAAa,OAAI,MAAM,EAAE,MAAM,eAAe,QAAQ;AACrD,cAAI,KAAK,MAAM,aAAa,IAAI,eAAe,GAAG,aAAa,IAAI,eAAe,CAAC,IAAI,GAAG;AACzF,YAAE,OAAI,MAAM,EAAE,cAAc;AAAA,cAC3B,MAAM;AAAA,cACN,GAAG,eAAe;AAAA,cAClB,GAAG,eAAe;AAAA,cAClB,MAAM,aAAa;AAAA,cACnB,MAAM,aAAa;AAAA,cACnB,aAAe,OAAI,WAAW;AAAA,cAC9B,aAAe,OAAI,WAAW;AAAA,YAC/B,CAAC;AAAA,UACF;AAAA,QACD;AAEA,QAAE,OAAI,iBAAiB,IAAI;AAC3B,yBAAiB;AACjB,qBAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AAEA,WAAS,gBAAgB;AACxB,QAAI,CAAG,OAAI,SAAS,EAAE,KAAK,EAAG;AAE9B,IAAE,OAAI,MAAM,EAAE,cAAc;AAAA,MAC3B,MAAM;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,MACH,MAAQ,OAAI,SAAS,EAAE,KAAK;AAAA,MAC5B,UAAY,OAAI,QAAQ;AAAA,MACxB,OAAS,OAAI,WAAW;AAAA,IACzB,CAAC;AAED,IAAE,OAAI,WAAW,EAAE;AAAA,EACpB;AAEA,iBAAe,eAAe;AAC7B,UAAM,UAAU,MAAQ,OAAI,MAAM,EAAE,UAAU,QAAQ,aAAa;AAEnE,QAAI,QAAQ,QAAQ;AACnB,cAAQ,OAAO,OAAO;AAAA,IACvB,OAAO;AACN,YAAM,OAAO,SAAS,cAAc,GAAG;AAEvC,WAAK,WAAW,gBAAgB,KAAK,IAAI,CAAC;AAC1C,WAAK,OAAO;AACZ,WAAK,MAAM;AAAA,IACZ;AAAA,EACD;AAEA,MAAI,MAAM,QAAQ;AAClB,MAAI,QAAU,SAAM,GAAG;AACvB,MAAI,QAAU,SAAM,KAAK;AACzB,MAAI,SAAW,SAAM,KAAK;AAC1B,MAAI,WAAa,WAAQ,QAAQ,CAAC;AAClC,MAAI,WAAa,WAAQ,UAAU,CAAC;AACpC,MAAI,WAAa,WAAQ,UAAU,CAAC;AACpC,MAAI,WAAa,WAAQ,UAAU,CAAC;AAEpC,EAAE,SAAM,KAAK;AAEb,MAAI,QAAU,WAAQ,OAAO,CAAC;AAC9B,MAAI,WAAa,SAAM,KAAK;AAC5B,MAAI,WAAa,WAAQ,UAAU,CAAC;AACpC,MAAI,WAAa,WAAQ,UAAU,CAAC;AACpC,MAAI,WAAa,WAAQ,UAAU,CAAC;AACpC,MAAI,OAAS,WAAQ,UAAU,CAAC;AAChC,MAAI,OAAS,cAAW,IAAI;AAC5B,MAAI,WAAa,WAAQ,MAAM,CAAC;AAChC,MAAI,YAAc,WAAQ,UAAU,CAAC;AACrC,MAAI,YAAc,WAAQ,WAAW,CAAC;AAEtC,EAAE,SAAM,KAAK;AACb,EAAE,SAAM,KAAK;AAEb,MAAI,QAAU,WAAQ,OAAO,CAAC;AAC9B,MAAI,QAAU,SAAM,KAAK;AACzB,MAAI,SAAW,SAAM,KAAK;AAE1B,EAAE,aAAU,QAAQ,CAAC,YAAc,OAAI,UAAU,OAAO,GAAG,MAAQ,OAAI,QAAQ,CAAC;AAChF,EAAE,SAAM,KAAK;AACb,EAAE,aAAU,OAAO,CAAC,YAAc,OAAI,aAAa,OAAO,GAAG,MAAQ,OAAI,WAAW,CAAC;AAErF,MAAI,QAAU,WAAQ,OAAO,CAAC;AAC9B,MAAI,OAAS,SAAM,KAAK;AAExB;AACC,QAAI,aAAa,CAACC,cAAa;AAC9B,UAAI,QAAQ,KAAK;AACjB,UAAI,QAAU,WAAU,SAAM,KAAK,GAAG,CAAC;AACvC,UAAI,YAAc,SAAM,KAAK;AAC7B,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,YAAc,WAAQ,WAAW,CAAC;AAEtC,MAAE,SAAM,KAAK;AAEb,UAAI,QAAU,WAAQ,OAAO,CAAC;AAC9B,UAAI,YAAc,SAAM,KAAK;AAC7B,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,YAAc,WAAQ,WAAW,CAAC;AAEtC,MAAE,SAAM,KAAK;AACb,MAAE,SAAM,KAAK;AAEb,MAAE,mBAAgB,MAAM;AACvB,QAAE,aAAU,WAAW,GAAG,6CAA+C,OAAI,eAAe,MAAM,QAAU,OAAI,MAAM,EAAE,MAAM,OAC3H,+CACA,iEAAiE,EAAE;AAEtE,QAAE,aAAU,WAAW,GAAG,6CAA+C,OAAI,eAAe,MAAM,IAC/F,+CACA,iEAAiE,EAAE;AAEtE,QAAE,aAAU,WAAW,GAAG,6CAA+C,OAAI,eAAe,MAAM,IAAI,IACnG,+CACA,iEAAiE,EAAE;AAEtE,QAAE,aAAU,WAAW,GAAG,6CAA+C,OAAI,eAAe,MAAM,KAAK,IACpG,+CACA,iEAAiE,EAAE;AAEtE,QAAE,aAAU,WAAW,GAAG,6CAA+C,OAAI,eAAe,MAAM,IAAI,IACnG,+CACA,iEAAiE,EAAE;AAEtE,QAAE,aAAU,WAAW,GAAG,iDAAmD,OAAI,MAAM,EAAE,MAAM,UAAU,QACtG,+CACA,iEAAiE,EAAE;AAEtE,QAAE,aAAU,WAAW,GAAG,iDAAmD,OAAI,MAAM,EAAE,MAAM,UAAU,QACtG,+CACA,iEAAiE,EAAE;AAAA,MACvE,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAM;AACrC,QAAE,OAAI,iBAAiB,IAAI;AAC3B,QAAE,OAAI,MAAM,EAAE,gBAAgB,IAAI;AAAA,MACnC,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAM;AACrC,QAAE,OAAI,iBAAiB,CAAC;AACxB,QAAE,OAAI,MAAM,EAAE,gBAAgB,CAAC;AAAA,MAChC,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAM;AACrC,QAAE,OAAI,iBAAiB,IAAI,CAAC;AAC5B,QAAE,OAAI,MAAM,EAAE,gBAAgB,IAAI,CAAC;AAAA,MACpC,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAM;AACrC,QAAE,OAAI,iBAAiB,KAAK,CAAC;AAC7B,QAAE,OAAI,MAAM,EAAE,gBAAgB,KAAK,CAAC;AAAA,MACrC,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAM;AACrC,QAAE,OAAI,iBAAiB,IAAI,CAAC;AAC5B,QAAE,OAAI,MAAM,EAAE,gBAAgB,IAAI,CAAC;AAAA,MACpC,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAM;AACrC,QAAE,OAAI,iBAAiB,IAAI;AAC3B,QAAE,OAAI,MAAM,EAAE,UAAU;AAAA,MACzB,CAAC;AAED,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,OAAO,GAAG,CAAC;AAC/D,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,OAAO,EAAE,CAAC;AAC9D,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,eAAe,CAAC;AACpE,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,aAAa,CAAC;AAClE,MAAE,UAAOA,WAAU,KAAK;AAAA,IACzB;AAEA,IAAE,MAAG,MAAM,CAAC,aAAa;AACxB,UAAM,OAAI,SAAS,MAAM,OAAQ,UAAS,UAAU;AAAA,IACrD,CAAC;AAAA,EACF;AAEA,MAAI,SAAW,WAAQ,MAAM,CAAC;AAE9B;AACC,QAAI,eAAe,CAACA,cAAa;AAChC,UAAI,SAAS,OAAO;AACpB,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,YAAc,WAAU,SAAM,MAAM,GAAG,CAAC;AAE5C,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,QAAQ,IAAI;AAEtC,MAAE,SAAM,MAAM;AAEd,UAAI,QAAU,WAAQ,QAAQ,CAAC;AAE/B,MAAE,yBAAsB,KAAK;AAC7B,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,QAAQ,IAAI;AAEtC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,QAAQ,IAAI;AAEtC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,QAAQ,IAAI;AAEtC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,QAAQ,IAAI;AAEtC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,MAAM;AAEhC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,MAAM;AAEhC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AACd,MAAE,SAAM,MAAM;AAEd,MAAE;AAAA,QACD,CAAC,OAAO;AACP,UAAE,YAAS,QAAU,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU;AAC7D,UAAE,aAAU,OAAS,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU;AAC7D,UAAE,YAAS,QAAU,OAAI,MAAM,EAAE,MAAM,YAAY,QAAQ;AAC3D,UAAE,aAAU,SAAW,OAAI,MAAM,EAAE,MAAM,YAAY,QAAQ;AAC7D,UAAE,YAAS,QAAU,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU;AAC7D,UAAE,aAAU,SAAW,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU;AAC/D,UAAE,YAAS,QAAU,OAAI,MAAM,EAAE,MAAM,YAAY,QAAQ;AAC3D,UAAE,aAAU,SAAW,OAAI,MAAM,EAAE,MAAM,YAAY,QAAQ;AAC7D,UAAE,YAAS,QAAU,OAAI,MAAM,EAAE,MAAM,YAAY,WAAW;AAC9D,UAAE,aAAU,SAAW,OAAI,MAAM,EAAE,MAAM,YAAY,WAAW;AAChE,UAAE,YAAS,QAAQ,GAAK,OAAI,MAAM,EAAE,MAAM,YAAY,QAAQ,EAAE,IAAI;AACpE,UAAE,aAAU,SAAW,OAAI,MAAM,EAAE,MAAM,YAAY,IAAI;AACzD,UAAE,YAAS,QAAQ,GAAG,MAAM,EAAE,GAAG;AACjC,UAAE,aAAU,SAAW,OAAI,MAAM,EAAE,MAAM,YAAY,OAAO;AAAA,QAC7D;AAAA,QACA;AAAA,UACC,MAAM,KAAK,MAAQ,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU,GAAG;AAAA,QAC/D;AAAA,MACD;AAEA,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,iBAAiB,CAAC;AACtE,MAAE,aAAU,SAAS,OAAO,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,YAAY,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACvG,MAAE,aAAU,SAAS,SAAS,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACvG,MAAE,aAAU,SAAS,SAAS,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,YAAY,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACzG,MAAE,aAAU,SAAS,SAAS,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACvG,MAAE,aAAU,SAAS,SAAS,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,aAAa,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AAC1G,MAAE,aAAU,SAAS,SAAS,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,MAAM,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACnG,MAAE,aAAU,SAAS,SAAS,CAAC,MAAQ,OAAI,MAAM,EAAE,eAAe,EAAE,SAAS,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACtG,MAAE,UAAOA,WAAU,MAAM;AAAA,IAC1B;AAEA,IAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,UAAM,OAAI,SAAS,MAAM,SAAU,UAAS,YAAY;AAAA,IACzD,CAAC;AAAA,EACF;AAEA,MAAI,SAAW,WAAQ,QAAQ,CAAC;AAEhC;AACC,QAAI,eAAe,CAACA,cAAa;AAChC,UAAI,SAAS,OAAO;AACpB,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AAEzC,MAAE,QAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,QAAQ,UAAU,SAAS,MAAM,GAAK,UAAO,CAACA,WAAU,MAAM;AAC9F,YAAI,YAAY,OAAO;AACvB,YAAI,SAAW,cAAW,WAAW,IAAI;AAEzC,QAAE,mBAAgB,MAAM;AACvB,UAAE,aAAU,WAAW,GAAG,0EAA4E,OAAI,MAAM,EAAE,MAAM,eAAe,IACpI,+CACA,iEAAiE,EAAE;AAEtE,UAAE,YAAS,QAAQ,CAAC;AAAA,QACrB,CAAC;AAED,QAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9D,QAAE,UAAOA,WAAU,SAAS;AAAA,MAC7B,CAAC;AAED,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,UAAY,WAAU,SAAM,MAAM,GAAG,CAAC;AAE1C,MAAE,yBAAsB,OAAO;AAE/B,UAAI,SAAW,WAAQ,SAAS,CAAC;AACjC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,SAAW,cAAW,MAAM;AAEhC,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC,MAAE,yBAAsB,OAAO;AAC/B,MAAE,SAAM,MAAM;AACd,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,UAAY,SAAM,MAAM;AAE5B,MAAE,yBAAsB,OAAO;AAE/B,UAAI,YAAc,WAAQ,SAAS,CAAC;AAEpC,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,UAAY,cAAW,MAAM;AAEjC,MAAE,SAAM,MAAM;AAEd,UAAI,WAAa,WAAQ,QAAQ,CAAC;AAElC,MAAE,yBAAsB,QAAQ;AAEhC,UAAI,SAAW,WAAQ,UAAU,CAAC;AAClC,UAAI,UAAY,SAAM,MAAM;AAC5B,UAAI,UAAY,cAAW,OAAO;AAClC,UAAI,SAAW,WAAQ,SAAS,CAAC;AAEjC;AACC,YAAI,eAAe,CAACA,cAAa;AAChC,cAAI,YAAY,OAAO;AAEvB,UAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,iBAAmB,OAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC9G,UAAE,UAAOA,WAAU,SAAS;AAAA,QAC7B;AAEA,QAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,cAAM,OAAI,MAAM,EAAE,MAAM,qBAAsB,UAAS,YAAY;AAAA,QACpE,CAAC;AAAA,MACF;AAEA,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAEhC;AACC,YAAI,eAAe,CAACA,cAAa;AAChC,cAAI,YAAY,OAAO;AAEvB,UAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,iBAAiB,CAAC;AACtE,UAAE,UAAOA,WAAU,SAAS;AAAA,QAC7B;AAEA,QAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,cAAM,OAAI,MAAM,EAAE,MAAM,YAAY,SAAS,EAAG,UAAS,YAAY;AAAA,QACtE,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,MAAM;AACd,MAAE,SAAM,MAAM;AAEd,MAAE,mBAAgB,MAAM;AACvB,QAAE,YAAS,QAAQ,GAAK,OAAI,WAAW,KAAK,EAAE,IAAI;AAClD,QAAE,YAAS,SAAS,GAAK,OAAI,QAAQ,KAAK,EAAE,IAAI;AAChD,QAAE,YAAS,SAAS,WAAa,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU,EAAE,GAAG;AAAA,MAC/E,CAAC;AAED,MAAE,cAAW,SAAS,MAAQ,OAAI,WAAW,GAAG,CAAC,YAAc,OAAI,aAAa,OAAO,CAAC;AACxF,MAAE,cAAW,SAAS,MAAQ,OAAI,WAAW,GAAG,CAAC,YAAc,OAAI,aAAa,OAAO,CAAC;AACxF,MAAE,aAAU,WAAW,SAAS,CAAC,MAAM,EAAE,QAAQ,WAAW,cAAc,CAAC;AAC3E,MAAE,cAAW,SAAS,MAAQ,OAAI,SAAS,GAAG,CAAC,YAAc,OAAI,WAAW,OAAO,CAAC;AACpF,MAAE,aAAU,SAAS,WAAW,aAAa;AAC7C,MAAE,cAAW,UAAU,MAAQ,OAAI,QAAQ,GAAG,CAAC,YAAc,OAAI,UAAU,OAAO,CAAC;AACnF,MAAE,UAAOA,WAAU,MAAM;AAAA,IAC1B;AAEA,IAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,UAAM,OAAI,SAAS,MAAM,WAAY,UAAS,YAAY;AAAA,IAC3D,CAAC;AAAA,EACF;AAEA,MAAI,SAAW,WAAQ,QAAQ,CAAC;AAEhC;AACC,QAAI,eAAe,CAACA,cAAa;AAChC,UAAI,SAAS,OAAO;AACpB,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,YAAc,WAAU,SAAM,MAAM,GAAG,CAAC;AAE5C,MAAE,SAAM,MAAM;AAEd,UAAI,QAAU,WAAQ,QAAQ,CAAC;AAC/B,UAAI,WAAa,SAAM,KAAK;AAE5B,MAAE,yBAAsB,QAAQ;AAChC,MAAE,QAAK,CAAC;AACR,MAAE,SAAM,KAAK;AAEb,UAAI,SAAW,WAAQ,OAAO,CAAC;AAE/B;AACC,YAAI,eAAe,CAACA,cAAa;AAChC,cAAI,WAAW,OAAO;AACtB,cAAI,SAAW,eAAY,QAAQ;AACnC,cAAI,WAAa,WAAU,SAAM,MAAM,GAAG,CAAC;AAE3C,UAAE,yBAAsB,QAAQ;AAChC,UAAE,SAAM,MAAM;AAEd,cAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,cAAI,YAAc,SAAM,MAAM;AAC9B,cAAI,YAAc,WAAQ,WAAW,CAAC;AAEtC,UAAE,SAAM,MAAM;AAEd,cAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,cAAI,SAAW,SAAM,MAAM;AAC3B,cAAI,UAAY,WAAU,SAAM,MAAM,GAAG,CAAC;AAC1C,cAAI,UAAY,cAAW,SAAS,IAAI;AAExC,UAAE,SAAM,MAAM;AAEd,cAAI,WAAa,WAAQ,QAAQ,CAAC;AAElC,UAAE,yBAAsB,QAAQ;AAChC,UAAE,SAAM,MAAM;AAEd,cAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,cAAI,SAAW,SAAM,MAAM;AAC3B,cAAI,UAAY,WAAU,SAAM,MAAM,GAAG,CAAC;AAC1C,cAAI,UAAY,cAAW,SAAS,IAAI;AAExC,UAAE,SAAM,MAAM;AAEd,cAAI,WAAa,WAAQ,QAAQ,CAAC;AAElC,UAAE,yBAAsB,QAAQ;AAChC,UAAE,SAAM,MAAM;AAEd,cAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,cAAI,SAAW,SAAM,MAAM;AAC3B,cAAI,UAAY,WAAU,SAAM,MAAM,GAAG,CAAC;AAC1C,cAAI,UAAY,cAAW,SAAS,IAAI;AAExC,UAAE,SAAM,MAAM;AAEd,cAAI,WAAa,WAAQ,QAAQ,CAAC;AAElC,UAAE,yBAAsB,QAAQ;AAChC,UAAE,SAAM,MAAM;AAEd,cAAI,UAAY,WAAQ,QAAQ,CAAC;AACjC,cAAI,WAAa,SAAM,OAAO;AAE9B,UAAE,yBAAsB,QAAQ;AAChC,UAAE,QAAK,CAAC;AACR,UAAE,SAAM,OAAO;AAEf,UAAE,mBAAgB,MAAM;AACvB,YAAE,aAAU,UAAY,OAAI,MAAM,EAAE,MAAM,UAAU,cAAc,EAAE;AAEpE,YAAE,aAAU,WAAW,GAAG,uDAAyD,OAAI,MAAM,EAAE,MAAM,UAAU,SAAS,cACrH,+CACA,8CAA8C,EAAE;AAEnD,YAAE,aAAU,WAAW,GAAG,uDAAyD,OAAI,MAAM,EAAE,MAAM,UAAU,SAAS,eACrH,+CACA,8CAA8C,EAAE;AAEnD,YAAE,YAAS,SAAW,OAAI,MAAM,EAAE,MAAM,UAAU,WAAW,CAAC,CAAC;AAC/D,YAAE,aAAU,UAAY,OAAI,MAAM,EAAE,MAAM,UAAU,WAAW,CAAC,CAAC;AACjE,YAAE,YAAS,SAAW,OAAI,MAAM,EAAE,MAAM,UAAU,WAAW,CAAC,CAAC;AAC/D,YAAE,aAAU,UAAY,OAAI,MAAM,EAAE,MAAM,UAAU,WAAW,CAAC,CAAC;AACjE,YAAE,YAAS,SAAW,OAAI,MAAM,EAAE,MAAM,UAAU,QAAQ;AAC1D,YAAE,aAAU,UAAY,OAAI,MAAM,EAAE,MAAM,UAAU,QAAQ;AAC5D,YAAE,eAAY,UAAY,OAAI,MAAM,EAAE,MAAM,UAAU,MAAM;AAAA,UAC7D,CAAC;AAED,UAAE,aAAU,SAAS,UAAU,CAAC,MAAQ,OAAI,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC;AACxG,UAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC,CAAC;AACvF,UAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC,CAAC;AAExF,UAAE,aAAU,SAAS,UAAU,CAAC,MAAQ,OAAI,MAAM,EAAE,aAAa;AAAA,YAChE,YAAY;AAAA,cACX,OAAO,EAAE,OAAO,KAAK;AAAA,cACnB,OAAI,MAAM,EAAE,MAAM,UAAU,WAAW,CAAC;AAAA,YAC3C;AAAA,UACD,CAAC,CAAC;AAEF,UAAE,aAAU,SAAS,UAAU,CAAC,MAAQ,OAAI,MAAM,EAAE,aAAa;AAAA,YAChE,YAAY;AAAA,cACT,OAAI,MAAM,EAAE,MAAM,UAAU,WAAW,CAAC;AAAA,cAC1C,OAAO,EAAE,OAAO,KAAK;AAAA,YACtB;AAAA,UACD,CAAC,CAAC;AAEF,UAAE,aAAU,SAAS,UAAU,CAAC,MAAQ,OAAI,MAAM,EAAE,aAAa,EAAE,UAAU,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;AACtG,UAAE,aAAU,UAAU,UAAU,CAAC,MAAQ,OAAI,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC,CAAC;AAC/F,UAAE,UAAOA,WAAU,QAAQ;AAAA,QAC5B;AAEA,QAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,cAAM,OAAI,MAAM,EAAE,MAAM,UAAU,QAAS,UAAS,YAAY;AAAA,QACjE,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,MAAM;AACd,MAAE,mBAAgB,MAAQ,eAAY,UAAY,OAAI,MAAM,EAAE,MAAM,UAAU,OAAO,CAAC;AACtF,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,MAAM,EAAE,eAAe,CAAC;AACpE,MAAE,aAAU,UAAU,UAAU,CAAC,MAAQ,OAAI,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,QAAQ,CAAC,CAAC;AAChG,MAAE,UAAOA,WAAU,MAAM;AAAA,IAC1B;AAEA,IAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,UAAM,OAAI,SAAS,MAAM,QAAS,UAAS,YAAY;AAAA,IACxD,CAAC;AAAA,EACF;AAEA,MAAI,SAAW,WAAQ,QAAQ,CAAC;AAEhC;AACC,QAAI,gBAAgB,CAACA,cAAa;AACjC,UAAI,SAAS,QAAQ;AACrB,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AAEzC;AACC,YAAI,eAAe,CAACA,cAAa;AAChC,cAAI,UAAU,OAAO;AAErB,UAAE,UAAOA,WAAU,OAAO;AAAA,QAC3B;AAEA,QAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,cAAM,OAAI,YAAY,EAAG,UAAS,YAAY;AAAA,QAC/C,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,MAAM;AAEd,UAAI,YAAc,WAAQ,QAAQ,CAAC;AACnC,UAAI,SAAW,SAAM,SAAS;AAE9B;AACC,YAAI,eAAe,CAACA,cAAa;AAChC,cAAI,aAAa,OAAO;AAExB,UAAE,QAAK;AACP,UAAE,UAAOA,WAAU,UAAU;AAAA,QAC9B;AAEA,YAAI,YAAY,CAACA,cAAa;AAC7B,cAAI,aAAa,QAAQ;AAEzB,UAAE,QAAK;AACP,UAAE,UAAOA,WAAU,UAAU;AAAA,QAC9B;AAEA,QAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,cAAM,OAAI,YAAY,EAAG,UAAS,YAAY;AAAA,cAAQ,UAAS,WAAW,EAAE;AAAA,QAC7E,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,SAAS;AACjB,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,SAAM,MAAM;AAC3B,UAAI,UAAY,WAAU,SAAM,MAAM,GAAG,CAAC;AAE1C;AACC,YAAI,eAAe,CAACA,cAAa;AAChC,cAAI,UAAU,QAAQ;AAEtB,UAAE,UAAOA,WAAU,OAAO;AAAA,QAC3B;AAEA,QAAE,MAAG,SAAS,CAAC,aAAa;AAC3B,cAAM,OAAI,YAAY,EAAG,UAAS,YAAY;AAAA,QAC/C,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,WAAa,WAAU,SAAM,MAAM,GAAG,CAAC;AAE3C,MAAE,yBAAsB,QAAQ;AAChC,MAAE,SAAM,MAAM;AAEd,UAAI,SAAW,WAAQ,QAAQ,CAAC;AAChC,UAAI,SAAW,WAAU,SAAM,MAAM,GAAG,CAAC;AACzC,UAAI,YAAc,SAAM,MAAM;AAC9B,UAAI,UAAY,cAAW,SAAS;AACpC,UAAI,YAAc,WAAQ,WAAW,CAAC;AACtC,UAAI,UAAY,cAAW,SAAS;AAEpC,MAAE,SAAM,MAAM;AACd,MAAE,SAAM,MAAM;AAEd,UAAI,YAAc,WAAQ,QAAQ,CAAC;AACnC,UAAI,UAAY,SAAM,SAAS;AAE/B;AACC,YAAI,gBAAgB,CAACA,cAAa;AACjC,cAAI,aAAa,QAAQ;AAEzB,UAAE,QAAK;AACP,UAAE,UAAOA,WAAU,UAAU;AAAA,QAC9B;AAEA,YAAI,cAAc,CAACA,cAAa;AAC/B,cAAI,aAAa,QAAQ;AAEzB,UAAE,QAAK;AACP,UAAE,UAAOA,WAAU,UAAU;AAAA,QAC9B;AAEA,QAAE,MAAG,SAAS,CAAC,aAAa;AAC3B,cAAM,OAAI,YAAY,EAAG,UAAS,aAAa;AAAA,cAAQ,UAAS,aAAa,EAAE;AAAA,QAChF,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,SAAS;AACjB,MAAE,SAAM,MAAM;AAEd,UAAI,UAAY,WAAQ,QAAQ,CAAC;AAEjC;AACC,YAAI,gBAAgB,CAACA,cAAa;AACjC,cAAI,SAAS,QAAQ;AACrB,cAAI,UAAY,cAAW,QAAQ,IAAI;AAEvC,UAAE,mBAAgB,MAAQ,YAAS,SAAW,OAAI,OAAO,CAAC,CAAC;AAC3D,UAAE,UAAOA,WAAU,MAAM;AAAA,QAC1B;AAEA,QAAE,MAAG,SAAS,CAAC,aAAa;AAC3B,cAAM,OAAI,OAAO,EAAG,UAAS,aAAa;AAAA,QAC3C,CAAC;AAAA,MACF;AAEA,UAAI,UAAY,WAAQ,SAAS,CAAC;AAElC;AACC,YAAI,gBAAgB,CAACA,cAAa;AACjC,cAAI,SAAS,QAAQ;AACrB,cAAI,UAAY,cAAW,QAAQ,IAAI;AAEvC,UAAE,mBAAgB,MAAQ,YAAS,SAAW,OAAI,SAAS,CAAC,CAAC;AAC7D,UAAE,UAAOA,WAAU,MAAM;AAAA,QAC1B;AAEA,QAAE,MAAG,SAAS,CAAC,aAAa;AAC3B,cAAM,OAAI,SAAS,EAAG,UAAS,aAAa;AAAA,QAC7C,CAAC;AAAA,MACF;AAEA,MAAE,SAAM,MAAM;AAEd,MAAE;AAAA,QACD,CAAC,OAAO;AACP,oBAAU,WAAa,OAAI,YAAY,KAAO,OAAI,YAAY;AAE9D,UAAE,aAAU,WAAW,GAAG,kFAAoF,OAAI,eAAe,MAAM,gBACpI,uDACA,mEAAmE,EAAE;AAExE,UAAE,YAAS,SAAS,iBAAmB,OAAI,MAAM,EAAE,MAAM,YAAY,UAAU,EAAE,GAAG;AAEpF,UAAE,aAAU,WAAW,GAAG,kFAAoF,OAAI,eAAe,MAAM,SACpI,uDACA,mEAAmE,EAAE;AAExE,UAAE,YAAS,SAAS,aAAe,OAAI,MAAM,EAAE,MAAM,OAAO,aAAa,MAAM,GAAG;AAClF,oBAAU,WAAW;AAAA,QACtB;AAAA,QACA;AAAA,UACC,MAAQ,OAAI,YAAY,KAAO,OAAI,YAAY,KAAK,CAAG,OAAI,aAAa,EAAE,KAAK;AAAA,QAChF;AAAA,MACD;AAEA,MAAE,aAAU,SAAS,WAAW,sBAAsB;AACtD,MAAE,cAAW,UAAU,MAAQ,OAAI,aAAa,GAAG,CAAC,YAAc,OAAI,eAAe,OAAO,CAAC;AAC7F,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,iBAAiB,aAAa,CAAC;AAC3E,MAAE,aAAU,SAAS,WAAW,MAAQ,OAAI,iBAAiB,MAAM,CAAC;AACpE,MAAE,aAAU,SAAS,WAAW,aAAa;AAC7C,MAAE,UAAOA,WAAU,MAAM;AAAA,IAC1B;AAEA,IAAE,MAAG,QAAQ,CAAC,aAAa;AAC1B,UAAM,OAAI,SAAS,MAAM,KAAM,UAAS,aAAa;AAAA,IACtD,CAAC;AAAA,EACF;AAEA,EAAE,SAAM,KAAK;AACb,EAAE,SAAM,KAAK;AACb,EAAE,SAAM,GAAG;AAEX,EAAE;AAAA,IACD,CAAC,OAAO;AACP,MAAE,aAAU,KAAK,GAAG,2GAA2G,UAAU,KAAK,EAAE,EAAE;AAClJ,MAAE,aAAU,KAAK,MAAM,CAAC;AAExB,MAAE,aAAU,QAAQ,GAAG,wDAA0D,OAAI,SAAS,MAAM,SACjG,oCACA,qCAAqC,EAAE;AAE1C,MAAE,aAAU,UAAU,GAAG,wDAA0D,OAAI,SAAS,MAAM,WACnG,oCACA,qCAAqC,EAAE;AAE1C,MAAE,aAAU,UAAU,GAAG,wDAA0D,OAAI,SAAS,MAAM,aACnG,oCACA,qCAAqC,EAAE;AAE1C,MAAE,aAAU,UAAU,GAAG,wDAA0D,OAAI,SAAS,MAAM,UACnG,oCACA,qCAAqC,EAAE;AAE1C,MAAE,aAAU,UAAU,GAAG,kFAAoF,OAAI,SAAS,MAAM,OAC7H,oCACA,qCAAqC,EAAE;AAE1C,eAAS,WAAW,CAAG,OAAI,MAAM,EAAE;AACnC,eAAS,WAAW,CAAG,OAAI,MAAM,EAAE;AACnC,MAAE,YAAS,MAAM,GAAG,MAAM,EAAE,GAAG;AAAA,IAChC;AAAA,IACA,CAAC,MAAM,KAAK,MAAQ,OAAI,MAAM,EAAE,MAAM,OAAO,GAAG,CAAC;AAAA,EAClD;AAEA,EAAE,aAAU,SAAS,QAAQ,MAAM;AAClC,IAAE,OAAI,WAAW,MAAM;AACvB,IAAE,OAAI,MAAM,EAAE,QAAQ,MAAM;AAAA,EAC7B,CAAC;AAED,EAAE,aAAU,SAAS,UAAU,MAAM;AACpC,IAAE,OAAI,WAAW,QAAQ;AACzB,IAAE,OAAI,MAAM,EAAE,QAAQ,QAAQ;AAAA,EAC/B,CAAC;AAED,EAAE,aAAU,SAAS,UAAU,MAAM;AACpC,IAAE,OAAI,WAAW,UAAU;AAC3B,IAAE,OAAI,MAAM,EAAE,QAAQ,KAAK;AAAA,EAC5B,CAAC;AAED,EAAE,aAAU,SAAS,UAAU,MAAM;AACpC,IAAE,OAAI,WAAW,OAAO;AACxB,IAAE,OAAI,MAAM,EAAE,QAAQ,QAAQ;AAAA,EAC/B,CAAC;AAED,EAAE,aAAU,SAAS,UAAU,MAAM;AACpC,IAAE,OAAI,WAAW,IAAI;AACrB,IAAE,OAAI,MAAM,EAAE,QAAQ,QAAQ;AAAA,EAC/B,CAAC;AAED,EAAE,aAAU,SAAS,UAAU,MAAQ,OAAI,MAAM,EAAE,KAAK,CAAC;AACzD,EAAE,aAAU,SAAS,UAAU,MAAQ,OAAI,MAAM,EAAE,KAAK,CAAC;AACzD,EAAE,aAAU,SAAS,UAAU,MAAQ,OAAI,MAAM,EAAE,MAAM,CAAC;AAC1D,EAAE,aAAU,SAAS,UAAU,MAAQ,OAAI,MAAM,EAAE,QAAQ,CAAC;AAC5D,EAAE,aAAU,SAAS,UAAU,MAAQ,OAAI,MAAM,EAAE,OAAO,CAAC;AAC3D,EAAE,aAAU,aAAa,WAAW,MAAQ,OAAI,MAAM,EAAE,aAAa,IAAI,CAAC;AAC1E,EAAE,aAAU,WAAW,WAAW,MAAQ,OAAI,MAAM,EAAE,aAAa,KAAK,CAAC;AACzE,EAAE,SAAM,cAAc,WAAW,MAAQ,OAAI,MAAM,EAAE,aAAa,KAAK,CAAC;AACxE,EAAE,aAAU,SAAS,WAAW,YAAY;AAC5C,EAAE,aAAU,aAAa,QAAQ,eAAe;AAChD,EAAE,aAAU,aAAa,QAAQ,eAAe;AAChD,EAAE,aAAU,WAAW,QAAQ,aAAa;AAC5C,EAAE,SAAM,cAAc,QAAQ,aAAa;AAC3C,EAAE,UAAO,UAAU,GAAG;AACtB,EAAE,OAAI;AACP;AAEE,YAAS;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;","names":["$","state","currentImgPt","$$anchor"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/index.css DELETED
@@ -1,50 +0,0 @@
1
- /* svelte-css:src/EditableTextNodeEditor.svelte.css */
2
- .pixerate-editor-content .is-empty::before {
3
- content: attr(data-placeholder);
4
- float: left;
5
- color: #9ca3af;
6
- pointer-events: none;
7
- height: 0;
8
- }
9
- .dark .pixerate-editor-content .is-empty::before,
10
- html.dark .pixerate-editor-content .is-empty::before {
11
- color: #6b7280;
12
- }
13
-
14
- /* svelte-css:src/spreadsheet/SpreadsheetEditor.svelte.css */
15
- .col-resize-handle.svelte-m799ch {
16
- position: absolute;
17
- top: 0;
18
- bottom: 0;
19
- width: 12px;
20
- right: -6px;
21
- cursor: col-resize !important;
22
- z-index: 20;
23
- display: flex;
24
- justify-content: center;
25
- touch-action: none;
26
- }
27
- .col-resize-handle-line.svelte-m799ch {
28
- width: 2px;
29
- height: 100%;
30
- transition: background-color 150ms ease;
31
- background-color: transparent;
32
- pointer-events: none;
33
- }
34
- .col-resize-handle.svelte-m799ch:hover .col-resize-handle-line:where(.svelte-m799ch) {
35
- background-color: var(--primary, #6366f1);
36
- opacity: 0.75;
37
- }
38
- .col-resize-handle-line.active.svelte-m799ch,
39
- .col-resize-handle.active.svelte-m799ch .col-resize-handle-line:where(.svelte-m799ch) {
40
- background-color: var(--primary, #6366f1);
41
- opacity: 1;
42
- }
43
- table.table-fixed.svelte-m799ch th:where(.svelte-m799ch) {
44
- overflow: hidden;
45
- }
46
- table.table-fixed.svelte-m799ch td:where(.svelte-m799ch) {
47
- max-width: 0;
48
- overflow: hidden;
49
- }
50
- /*# sourceMappingURL=index.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["svelte-css:src/EditableTextNodeEditor.svelte.css","svelte-css:src/spreadsheet/SpreadsheetEditor.svelte.css"],"sourcesContent":["\n .pixerate-editor-content .is-empty::before {\n content: attr(data-placeholder);\n float: left;\n color: #9ca3af;\n pointer-events: none;\n height: 0;\n }\n\n .dark .pixerate-editor-content .is-empty::before,\n html.dark .pixerate-editor-content .is-empty::before {\n color: #6b7280;\n }\n\n","\n .col-resize-handle.svelte-m799ch {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 12px;\n right: -6px;\n cursor: col-resize !important;\n z-index: 20;\n display: flex;\n justify-content: center;\n touch-action: none;\n }\n .col-resize-handle-line.svelte-m799ch {\n width: 2px;\n height: 100%;\n transition: background-color 150ms ease;\n background-color: transparent;\n pointer-events: none;\n }\n .col-resize-handle.svelte-m799ch:hover .col-resize-handle-line:where(.svelte-m799ch) {\n background-color: var(--primary, #6366f1);\n opacity: 0.75;\n }\n .col-resize-handle-line.active.svelte-m799ch,\n .col-resize-handle.active.svelte-m799ch .col-resize-handle-line:where(.svelte-m799ch) {\n background-color: var(--primary, #6366f1);\n opacity: 1;\n }\n table.table-fixed.svelte-m799ch th:where(.svelte-m799ch) {\n overflow: hidden;\n }\n table.table-fixed.svelte-m799ch td:where(.svelte-m799ch) {\n max-width: 0;\n overflow: hidden;\n }\n\n"],"mappings":";AACE,CAAC,wBAAwB,CAAC,QAAQ;AAChC,WAAS,KAAK;AACd,SAAO;AACP,SAAO;AACP,kBAAgB;AAChB,UAAQ;AACV;AAEA,CAAC,KAAK,CARL,wBAQ8B,CARL,QAQc;AACxC,IAAI,CADH,KACS,CATT,wBASkC,CATT,QASkB;AAC1C,SAAO;AACT;;;ACXA,CAAC,iBAAiB,CAAC;AACjB,YAAU;AACV,OAAK;AACL,UAAQ;AACR,SAAO;AACP,SAAO;AACP,UAAQ;AACR,WAAS;AACT,WAAS;AACT,mBAAiB;AACjB,gBAAc;AAChB;AACA,CAAC,sBAAsB,CAZJ;AAajB,SAAO;AACP,UAAQ;AACR,cAAY,iBAAiB,MAAM;AACnC,oBAAkB;AAClB,kBAAgB;AAClB;AACA,CAnBC,iBAmBiB,CAnBC,aAmBa,OAAO,CAPtC,sBAO6D,OAAO,CAnBlD;AAoBjB,oBAAkB,IAAI,SAAS,EAAE;AACjC,WAAS;AACX;AACA,CAXC,sBAWsB,CAAC,MAAM,CAvBX;AAwBnB,CAxBC,iBAwBiB,CADM,MACC,CAxBN,cAwBqB,CAZvC,sBAY8D,OAAO,CAxBnD;AAyBjB,oBAAkB,IAAI,SAAS,EAAE;AACjC,WAAS;AACX;AACA,KAAK,CAAC,WAAW,CA5BE,cA4Ba,EAAE,OAAO,CA5BtB;AA6BjB,YAAU;AACZ;AACA,KAAK,CAHC,WAGW,CA/BE,cA+Ba,EAAE,OAAO,CA/BtB;AAgCjB,aAAW;AACX,YAAU;AACZ;","names":[]}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/EditableTextNodeEditor.svelte","../src/editor.svelte.ts","../src/BubbleMenu.svelte","../src/TemplateRenderer.svelte","../src/navigationGuard.ts","../src/createNavigationGuard.svelte.ts","../src/history/history.svelte.ts","../src/history/createHistoryShortcuts.ts","../src/index.ts","../src/spreadsheet/SpreadsheetEditor.svelte","../src/spreadsheet/FormulaBar.svelte","../src/spreadsheet/spreadsheet.svelte.ts"],"sourcesContent":["import 'EditableTextNodeEditor.svelte.css';import 'svelte/internal/disclose-version';\nimport * as $ from 'svelte/internal/client';\nimport { onDestroy, onMount } from \"svelte\";\nimport { initiateEditor } from \"./editor.svelte\";\n\nvar root = $.from_html(`<div class=\"flex items-center justify-center p-4 text-sm text-gray-500\">Loading editor...</div>`);\nvar root_1 = $.from_html(`<div draggable=\"false\"><!> <div></div></div>`);\n\nexport default function EditableTextNodeEditor($$anchor, $$props) {\n\t$.push($$props, true);\n\n\tlet className = $.prop($$props, 'class', 3, \"\"),\n\t\teditorClass = $.prop($$props, 'editorClass', 3, \"\"),\n\t\tcontent = $.prop($$props, 'content', 3, undefined),\n\t\tshowMenu = $.prop($$props, 'showMenu', 3, true),\n\t\teditable = $.prop($$props, 'editable', 3, true),\n\t\teditor = $.prop($$props, 'editor', 15),\n\t\textensions = $.prop($$props, 'extensions', 19, () => []),\n\t\tplaceholder = $.prop($$props, 'placeholder', 3, \"\"),\n\t\tmarkdown = $.prop($$props, 'markdown', 3, undefined),\n\t\trichTextOptions = $.prop($$props, 'richTextOptions', 19, () => ({})),\n\t\tautofocus = $.prop($$props, 'autofocus', 3, false),\n\t\timage = $.prop($$props, 'image', 3, undefined),\n\t\tuploadImage = $.prop($$props, 'uploadImage', 3, undefined),\n\t\tonUploadError = $.prop($$props, 'onUploadError', 3, undefined);\n\n\tlet element = $.state(void 0);\n\n\t$.user_effect(() => {\n\t\tif (editor() && editor().isEditable !== editable()) {\n\t\t\teditor().setEditable(editable());\n\t\t}\n\t});\n\n\tonMount(() => {\n\t\teditor(initiateEditor($.get(element), content(), extensions(), {\n\t\t\trichTextOptions: {\n\t\t\t\tplaceholder: placeholder(),\n\t\t\t\t...markdown() !== undefined ? { markdown: markdown() } : {},\n\t\t\t\t...image() !== undefined || uploadImage() !== undefined || onUploadError() !== undefined\n\t\t\t\t\t? {\n\t\t\t\t\t\timage: image() === false\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t...typeof image() === \"object\" ? image() : {},\n\t\t\t\t\t\t\t\t...uploadImage() ? { upload: uploadImage() } : {},\n\t\t\t\t\t\t\t\t...onUploadError() ? { onUploadError: onUploadError() } : {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t: {},\n\t\t\t\t...richTextOptions()\n\t\t\t},\n\t\t\teditable: editable(),\n\t\t\tautofocus: autofocus(),\n\t\t\tonCreate: $$props.onCreate,\n\t\t\tonUpdate: $$props.onUpdate,\n\t\t\tonFocus() {\n\t\t\t\tif ($$props.onFocus) $$props.onFocus();\n\t\t\t},\n\n\t\t\tonBlur() {\n\t\t\t\tif ($$props.onBlur) $$props.onBlur();\n\t\t\t}\n\t\t}));\n\t});\n\n\tonDestroy(() => {\n\t\tif (editor()) {\n\t\t\teditor().destroy();\n\t\t}\n\t});\n\n\tvar div = root_1();\n\tvar node = $.child(div);\n\n\t{\n\t\tvar consequent = ($$anchor) => {\n\t\t\tvar div_1 = root();\n\n\t\t\t$.append($$anchor, div_1);\n\t\t};\n\n\t\t$.if(node, ($$render) => {\n\t\t\tif (!editor()) $$render(consequent);\n\t\t});\n\t}\n\n\tvar div_2 = $.sibling(node, 2);\n\n\t$.bind_this(div_2, ($$value) => $.set(element, $$value), () => $.get(element));\n\t$.reset(div);\n\n\t$.template_effect(\n\t\t($0) => {\n\t\t\t$.set_class(div, 1, `pixerate-editor-container ${className()}`);\n\t\t\t$.set_class(div_2, 1, $0);\n\t\t},\n\t\t[\n\t\t\t() => $.clsx(`pixerate-editor-content prose dark:prose-invert w-full max-w-none focus:outline-none ${editorClass()}`.trim())\n\t\t]\n\t);\n\n\t$.append($$anchor, div);\n\t$.pop();\n}","import { Editor } from \"@tiptap/core\";\nimport { createRichTextPreset } from \"@pixerate/editor\";\nexport const initiateEditor = (element, content, extensions, options) => {\n const { richTextOptions, ...editorOptions } = options || {};\n const defaultPreset = createRichTextPreset(richTextOptions);\n const editor = new Editor({\n element,\n content,\n extensions: [\n ...defaultPreset,\n ...extensions ?? []\n ],\n autofocus: false,\n ...editorOptions\n });\n return editor;\n};\nexport function createReactiveEditor(initialContent = \"\", extensions = [], options = {}) {\n let editorInstance;\n return {\n get current() {\n return editorInstance;\n },\n mount(element) {\n editorInstance = initiateEditor(element, initialContent, extensions, options);\n return editorInstance;\n },\n destroy() {\n if (editorInstance) {\n editorInstance.destroy();\n editorInstance = void 0;\n }\n }\n };\n}\n","import 'svelte/internal/disclose-version';\nimport * as $ from 'svelte/internal/client';\nimport { BubbleMenuPlugin } from \"@tiptap/extension-bubble-menu\";\n\nvar root = $.from_html(`<div style=\"visibility: hidden;\"><!></div>`);\n\nexport default function BubbleMenu($$anchor, $$props) {\n\t$.push($$props, true);\n\n\tlet className = $.prop($$props, 'class', 3, \"flex h-fit w-fit items-center gap-1 rounded-md border border-gray-200 bg-white p-1 shadow-md\"),\n\t\tpluginKey = $.prop($$props, 'pluginKey', 3, \"bubbleMenu\"),\n\t\tshouldShow = $.prop($$props, 'shouldShow', 3, null),\n\t\tupdateDelay = $.prop($$props, 'updateDelay', 3, 250),\n\t\ttippyOptions = $.prop($$props, 'tippyOptions', 19, () => ({}));\n\n\tlet menuElement = $.state(void 0);\n\n\t$.user_effect(() => {\n\t\tif ($$props.editor && $.get(menuElement)) {\n\t\t\tconst plugin = BubbleMenuPlugin({\n\t\t\t\tpluginKey: pluginKey(),\n\t\t\t\teditor: $$props.editor,\n\t\t\t\telement: $.get(menuElement),\n\t\t\t\ttippyOptions: {\n\t\t\t\t\tduration: 100,\n\t\t\t\t\tappendTo: () => document.body,\n\t\t\t\t\t...tippyOptions()\n\t\t\t\t},\n\t\t\t\tshouldShow: shouldShow(),\n\t\t\t\tupdateDelay: updateDelay()\n\t\t\t});\n\n\t\t\t$$props.editor.registerPlugin(plugin);\n\n\t\t\treturn () => {\n\t\t\t\t$$props.editor.unregisterPlugin(pluginKey());\n\t\t\t};\n\t\t}\n\t});\n\n\tvar div = root();\n\tvar node = $.child(div);\n\n\t{\n\t\tvar consequent = ($$anchor) => {\n\t\t\tvar fragment = $.comment();\n\t\t\tvar node_1 = $.first_child(fragment);\n\n\t\t\t$.snippet(node_1, () => $$props.children);\n\t\t\t$.append($$anchor, fragment);\n\t\t};\n\n\t\t$.if(node, ($$render) => {\n\t\t\tif ($$props.children) $$render(consequent);\n\t\t});\n\t}\n\n\t$.reset(div);\n\t$.bind_this(div, ($$value) => $.set(menuElement, $$value), () => $.get(menuElement));\n\t$.template_effect(() => $.set_class(div, 1, $.clsx(className())));\n\t$.append($$anchor, div);\n\t$.pop();\n}","import 'svelte/internal/disclose-version';\nimport * as $ from 'svelte/internal/client';\nimport { tokenizePrompt, resolveTemplates } from \"@pixerate/editor\";\n\nvar root = $.from_html(`<span class=\"inline-flex items-center px-1.5 py-0.5 mx-0.5 text-xs font-semibold rounded-md border border-[var(--color-to)]/40 bg-gradient-to-r from-[var(--color-from)]/15 to-[var(--color-to)]/15 text-[var(--color-to)] hover:brightness-110 cursor-pointer transition-all\"> </span>`);\nvar root_1 = $.from_html(`<span class=\"inline-flex items-center px-1.5 py-0.5 mx-0.5 text-xs font-medium rounded-md border border-violet-400/40 bg-violet-400/15 text-violet-600 hover:brightness-110 cursor-pointer transition-all\"> </span>`);\nvar root_2 = $.from_html(`<span class=\"inline-flex items-center px-1.5 py-0.5 mx-0.5 text-xs italic font-medium rounded-md border border-rose-400/40 bg-rose-400/15 text-rose-600\"> </span>`);\nvar root_3 = $.from_html(`<span> </span>`);\nvar root_4 = $.from_html(`<div></div>`);\n\nexport default function TemplateRenderer($$anchor, $$props) {\n\t$.push($$props, true);\n\n\tlet templates = $.prop($$props, 'templates', 19, () => []),\n\t\tresolve = $.prop($$props, 'resolve', 3, false),\n\t\tclassName = $.prop($$props, 'class', 3, \"font-mono text-sm leading-relaxed whitespace-pre-wrap break-words\");\n\n\tlet displayText = $.derived(() => resolve() && templates().length > 0\n\t\t? resolveTemplates($$props.content, templates())\n\t\t: $$props.content);\n\n\tlet tokens = $.derived(() => tokenizePrompt($.get(displayText)));\n\tvar div = root_4();\n\n\t$.each(div, 21, () => $.get(tokens), $.index, ($$anchor, token) => {\n\t\tvar fragment = $.comment();\n\t\tvar node = $.first_child(fragment);\n\n\t\t{\n\t\t\tvar consequent = ($$anchor) => {\n\t\t\t\tconst colors = $.derived(() => $$props.templateColorMap?.get($.get(token).value) || { from: \"#f43f5e\", to: \"#8b5cf6\" });\n\t\t\t\tvar span = root();\n\t\t\t\tvar text = $.only_child(span, true);\n\n\t\t\t\t$.template_effect(() => {\n\t\t\t\t\t$.set_style(span, `--color-from: ${$.get(colors).from}; --color-to: ${$.get(colors).to};`);\n\t\t\t\t\t$.set_attribute(span, 'title', `Template: ${$.get(token).value}`);\n\t\t\t\t\t$.set_text(text, `{{${$.get(token).value}}}`);\n\t\t\t\t});\n\n\t\t\t\t$.delegated('click', span, () => $$props.onTemplateClick?.($.get(token).value));\n\t\t\t\t$.append($$anchor, span);\n\t\t\t};\n\n\t\t\tvar consequent_1 = ($$anchor) => {\n\t\t\t\tvar span_1 = root_1();\n\t\t\t\tvar text_1 = $.only_child(span_1, true);\n\n\t\t\t\t$.template_effect(() => {\n\t\t\t\t\t$.set_attribute(span_1, 'title', `Variable: ${$.get(token).value}`);\n\t\t\t\t\t$.set_text(text_1, `{${$.get(token).value}}`);\n\t\t\t\t});\n\n\t\t\t\t$.delegated('click', span_1, () => $$props.onVariableClick?.($.get(token).value));\n\t\t\t\t$.append($$anchor, span_1);\n\t\t\t};\n\n\t\t\tvar consequent_2 = ($$anchor) => {\n\t\t\t\tvar span_2 = root_2();\n\t\t\t\tvar text_2 = $.only_child(span_2, true);\n\n\t\t\t\t$.template_effect(() => {\n\t\t\t\t\t$.set_attribute(span_2, 'title', `Instruction: ${$.get(token).value}`);\n\t\t\t\t\t$.set_text(text_2, `__${$.get(token).value}__`);\n\t\t\t\t});\n\n\t\t\t\t$.append($$anchor, span_2);\n\t\t\t};\n\n\t\t\tvar alternate = ($$anchor) => {\n\t\t\t\tvar span_3 = root_3();\n\t\t\t\tvar text_3 = $.only_child(span_3, true);\n\n\t\t\t\t$.template_effect(() => $.set_text(text_3, $.get(token).value));\n\t\t\t\t$.append($$anchor, span_3);\n\t\t\t};\n\n\t\t\t$.if(node, ($$render) => {\n\t\t\t\tif ($.get(token).type === \"template\") $$render(consequent); else if ($.get(token).type === \"variable\") $$render(consequent_1, 1); else if ($.get(token).type === \"instruction\") $$render(consequent_2, 2); else $$render(alternate, -1);\n\t\t\t});\n\t\t}\n\n\t\t$.append($$anchor, fragment);\n\t});\n\n\t$.reset(div);\n\t$.template_effect(() => $.set_class(div, 1, $.clsx(className())));\n\t$.append($$anchor, div);\n\t$.pop();\n}\n\n$.delegate(['click']);","export interface NavigationGuardOptions {\n /** Whether the current form or editor has unsaved changes */\n isDirty: boolean;\n /** Whether guarding is enabled (defaults to true) */\n enabled?: boolean;\n /** Callback fired when an internal navigation attempt is intercepted */\n onBlocked?: (url: string) => void;\n}\n\nexport interface NavigationGuardActionReturn {\n update(newOptions: NavigationGuardOptions): void;\n destroy(): void;\n}\n\n/**\n * Svelte action to guard against navigation when there are unsaved changes.\n * Attaches beforeunload to window and intercepts internal anchor clicks on the element.\n *\n * Usage:\n * <div use:navigationGuard={{ isDirty, onBlocked: (url) => { pendingUrl = url; showConfirm = true; } }}>\n */\nexport function navigationGuard(\n node: HTMLElement,\n options: NavigationGuardOptions,\n): NavigationGuardActionReturn {\n let isDirty = options.isDirty;\n let enabled = options.enabled ?? true;\n let onBlocked = options.onBlocked;\n\n function handleBeforeUnload(e: BeforeUnloadEvent) {\n if (!enabled || !isDirty) return;\n e.preventDefault();\n e.returnValue = \"\";\n }\n\n function handleClick(e: MouseEvent) {\n if (!enabled || !isDirty) return;\n\n const target = e.target as HTMLElement | null;\n const anchor = target?.closest?.(\"a\");\n if (!anchor) return;\n if (anchor.target === \"_blank\") return;\n\n // Check if link is internal\n if (typeof window !== \"undefined\") {\n const isInternal = anchor.host === window.location.host;\n if (!isInternal) return;\n\n if (\n anchor.pathname === window.location.pathname &&\n anchor.search === window.location.search\n ) {\n return;\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n const href = anchor.href;\n onBlocked?.(href);\n }\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n }\n node.addEventListener(\"click\", handleClick, { capture: true });\n\n return {\n update(newOptions: NavigationGuardOptions) {\n isDirty = newOptions.isDirty;\n enabled = newOptions.enabled ?? true;\n onBlocked = newOptions.onBlocked;\n },\n destroy() {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n }\n node.removeEventListener(\"click\", handleClick, { capture: true });\n },\n };\n}\n","export function createNavigationGuard(options) {\n let showConfirm = $state(false);\n let pendingUrl = $state(null);\n const getIsDirty = () => typeof options.isDirty === \"function\" ? options.isDirty() : options.isDirty;\n const getEnabled = () => typeof options.enabled === \"function\" ? options.enabled() : options.enabled ?? true;\n function handleBeforeUnload(e) {\n if (!getEnabled() || !getIsDirty()) return;\n e.preventDefault();\n e.returnValue = \"\";\n }\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n }\n function intercept(url) {\n if (getEnabled() && getIsDirty()) {\n pendingUrl = url;\n showConfirm = true;\n options.onBlocked?.(url);\n return true;\n }\n return false;\n }\n function confirmLeave() {\n showConfirm = false;\n const target = pendingUrl;\n if (target) {\n if (options.onNavigate) {\n options.onNavigate(target);\n } else if (typeof window !== \"undefined\") {\n window.location.href = target;\n }\n }\n }\n function cancelLeave() {\n showConfirm = false;\n pendingUrl = null;\n }\n function destroy() {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n }\n }\n return {\n get showConfirm() {\n return showConfirm;\n },\n setShowConfirm(val) {\n showConfirm = val;\n },\n get pendingUrl() {\n return pendingUrl;\n },\n intercept,\n confirmLeave,\n cancelLeave,\n destroy\n };\n}\n","import {\n HistoryManager,\n createHistoryManager\n} from \"@pixerate/editor\";\nexport function createHistory(managerOrOptions) {\n const manager = managerOrOptions instanceof HistoryManager ? managerOrOptions : createHistoryManager(managerOrOptions);\n let state = $state(manager.getState());\n manager.subscribe((newState) => {\n state = newState;\n });\n return {\n get canUndo() {\n return state.canUndo;\n },\n get canRedo() {\n return state.canRedo;\n },\n get undoName() {\n return state.undoName;\n },\n get redoName() {\n return state.redoName;\n },\n get undoCount() {\n return state.undoCount;\n },\n get redoCount() {\n return state.redoCount;\n },\n get manager() {\n return manager;\n },\n undo: () => manager.undo(),\n redo: () => manager.redo(),\n clear: () => manager.clear(),\n execute: (cmd) => manager.execute(cmd),\n executeMerged: (cmd, opts) => manager.executeMerged(cmd, opts),\n batch: (name, fn) => manager.batch(name, fn),\n subscribe: (run) => manager.subscribe(run)\n };\n}\n","import { HistoryManager } from \"@pixerate/editor\";\n\nexport interface HistoryShortcutsOptions {\n /**\n * Whether keyboard shortcuts are enabled. Defaults to true.\n */\n enabled?: boolean;\n /**\n * Target element or window to listen on. Defaults to window.\n */\n target?: Window | HTMLElement | null;\n /**\n * When true (default), shortcuts will not trigger if an <input>, <textarea>,\n * or [contenteditable] element is currently active / focused.\n */\n ignoreEditableElements?: boolean;\n}\n\n/**\n * Attaches keyboard listeners for Undo (Mod+Z) and Redo (Mod+Shift+Z / Mod+Y).\n * Returns an object with a `destroy()` function for lifecycle cleanup.\n */\nexport function createHistoryShortcuts(\n manager: HistoryManager,\n options: HistoryShortcutsOptions = {},\n): { destroy: () => void } {\n const {\n enabled = true,\n target,\n ignoreEditableElements = true,\n } = options;\n\n if (!enabled) {\n return { destroy: () => {} };\n }\n\n const eventTarget = target ?? (typeof window !== \"undefined\" ? window : null);\n if (!eventTarget) {\n return { destroy: () => {} };\n }\n\n const handleKeyDown = (event: Event) => {\n const e = event as KeyboardEvent;\n const isMac =\n typeof navigator !== \"undefined\" &&\n /Mac|iPod|iPhone|iPad/.test(navigator.platform || navigator.userAgent);\n const modifier = isMac ? e.metaKey : e.ctrlKey;\n\n if (!modifier) return;\n\n if (ignoreEditableElements && typeof document !== \"undefined\") {\n const targetEl = (e.target || document.activeElement) as HTMLElement | null;\n if (targetEl && targetEl.tagName) {\n const tagName = targetEl.tagName.toLowerCase();\n const isInput = tagName === \"input\" || tagName === \"textarea\";\n const isContentEditable =\n targetEl.isContentEditable ||\n targetEl.getAttribute?.(\"contenteditable\") === \"true\";\n if (isInput || isContentEditable) {\n return;\n }\n }\n }\n\n const key = e.key?.toLowerCase();\n\n // Undo: Mod+Z (without Shift)\n if (key === \"z\" && !e.shiftKey) {\n if (manager.getState().canUndo) {\n e.preventDefault();\n manager.undo();\n }\n return;\n }\n\n // Redo: Mod+Shift+Z or (on non-Mac) Mod+Y\n const isRedoKey =\n (key === \"z\" && e.shiftKey) || (!isMac && key === \"y\" && !e.shiftKey);\n\n if (isRedoKey) {\n if (manager.getState().canRedo) {\n e.preventDefault();\n manager.redo();\n }\n }\n };\n\n eventTarget.addEventListener(\"keydown\", handleKeyDown);\n\n return {\n destroy: () => {\n eventTarget.removeEventListener(\"keydown\", handleKeyDown);\n },\n };\n}\n","import type { Component } from \"svelte\";\nimport type { Editor, Content, Extensions, FocusPosition } from \"@tiptap/core\";\nimport type {\n Template,\n ColorGradient,\n RichTextPresetOptions,\n MarkdownOptions,\n ImageOptions,\n} from \"@pixerate/editor\";\n\nimport EditableTextNodeEditorComponent from \"./EditableTextNodeEditor.svelte\";\nimport BubbleMenuComponent from \"./BubbleMenu.svelte\";\nimport TemplateRendererComponent from \"./TemplateRenderer.svelte\";\n\nexport * from \"./editor.svelte\";\nexport * from \"./navigationGuard\";\nexport * from \"./createNavigationGuard.svelte\";\nexport * from \"./history\";\n\nexport {\n DirtyTracker,\n createDirtyTracker,\n defaultIsEqual,\n HistoryManager,\n createHistoryManager,\n} from \"@pixerate/editor\";\nexport type {\n DirtyTrackerOptions,\n Command,\n HistoryState,\n HistoryManagerOptions,\n} from \"@pixerate/editor\";\n\nexport interface EditableTextNodeEditorProps {\n class?: string;\n editorClass?: string;\n content?: Content;\n showMenu?: boolean;\n editable?: boolean;\n editor?: Editor;\n extensions?: Extensions;\n onUpdate?: () => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onCreate?: () => void;\n placeholder?: string;\n markdown?: boolean | MarkdownOptions;\n richTextOptions?: RichTextPresetOptions;\n autofocus?: FocusPosition | boolean;\n image?: ImageOptions | boolean;\n uploadImage?: (file: File) => Promise<string> | string;\n onUploadError?: (error: Error, file: File) => void;\n}\n\nexport interface BubbleMenuProps {\n editor?: Editor;\n class?: string;\n children?: any;\n}\n\nexport interface TemplateRendererProps {\n content: string;\n templates?: Template[];\n templateColorMap?: Map<string, ColorGradient>;\n resolve?: boolean;\n class?: string;\n onTemplateClick?: (templateName: string) => void;\n onVariableClick?: (variableName: string) => void;\n}\n\nexport const EditableTextNodeEditor =\n EditableTextNodeEditorComponent as unknown as Component<EditableTextNodeEditorProps>;\nexport const BubbleMenu =\n BubbleMenuComponent as unknown as Component<BubbleMenuProps>;\nexport const TemplateRenderer =\n TemplateRendererComponent as unknown as Component<TemplateRendererProps>;\n\nexport type {\n Template,\n TemplateVersion,\n Token,\n TokenType,\n ColorGradient,\n RichTextPresetOptions,\n ImageOptions,\n} from \"@pixerate/editor\";\n\nexport * from \"./spreadsheet\";\nexport * from \"./image-editor\";\n","import 'SpreadsheetEditor.svelte.css';import 'svelte/internal/disclose-version';\nimport * as $ from 'svelte/internal/client';\nimport { indexToColName } from '@pixerate/editor';\nimport FormulaBar from './FormulaBar.svelte';\nimport { createReactiveSpreadsheet } from './spreadsheet.svelte';\n\nvar root = $.from_html(`<th><div class=\"flex items-center justify-between gap-1 min-w-0 overflow-hidden truncate\"><span class=\"truncate font-semibold text-foreground text-xs min-w-0\"> </span> <span class=\"text-[10px] text-muted-foreground/70 font-mono font-normal shrink-0\"> </span></div> <div class=\"col-resize-handle svelte-m799ch\" style=\"position: absolute; top: 0; bottom: 0; width: 12px; right: -6px; cursor: col-resize !important; z-index: 20; display: flex; justify-content: center; touch-action: none;\" role=\"separator\" aria-orientation=\"vertical\" tabindex=\"-1\"><div class=\"col-resize-handle-line svelte-m799ch\"></div></div></th>`);\nvar root_1 = $.from_html(`<th class=\"w-10 min-w-[2.5rem] px-1 text-center bg-muted/40 hover:bg-muted cursor-pointer transition-colors svelte-m799ch\" title=\"Add Column\"><span class=\"text-xs font-bold text-muted-foreground\">+</span></th>`);\nvar root_2 = $.from_html(`<input type=\"text\" class=\"absolute inset-0 w-full h-full px-2 py-1 bg-background text-foreground outline-none font-sans text-xs border-2 border-primary z-20\"/>`);\nvar root_3 = $.from_html(`<span> </span>`);\nvar root_4 = $.from_html(`<td style=\"max-width: 0; overflow: hidden;\"><!></td>`);\nvar root_5 = $.from_html(`<td class=\"w-10 min-w-[2.5rem] bg-muted/10 border-r border-border svelte-m799ch\"></td>`);\nvar root_6 = $.from_html(`<tr class=\"border-b border-border hover:bg-muted/10 transition-colors\"><td class=\"w-12 min-w-[3rem] sticky left-0 z-10 bg-muted/50 border-r border-border text-center text-[10px] text-muted-foreground font-mono select-none svelte-m799ch\"> </td><!><!><td class=\"border-b border-border bg-transparent p-0 svelte-m799ch\"></td></tr>`);\nvar root_7 = $.from_html(`<div tabindex=\"0\" role=\"grid\" aria-label=\"Spreadsheet\"><!> <div class=\"relative flex-1 overflow-auto\"><table class=\"border-collapse table-fixed w-max min-w-full svelte-m799ch\"><thead><tr class=\"h-7 bg-muted/60 sticky top-0 z-20 border-b border-border shadow-xs\"><th class=\"w-12 min-w-[3rem] sticky left-0 z-30 bg-muted/90 border-r border-border text-center text-[10px] text-muted-foreground font-medium svelte-m799ch\">#</th><!><!><th class=\"border-b border-border bg-transparent p-0 font-normal svelte-m799ch\"></th></tr></thead><tbody></tbody></table></div></div>`);\n\nexport default function SpreadsheetEditor($$anchor, $$props) {\n\t$.push($$props, true);\n\n\tlet sheetState = $.prop($$props, 'sheetState', 23, createReactiveSpreadsheet),\n\t\treadOnly = $.prop($$props, 'readOnly', 3, false),\n\t\treadonly = $.prop($$props, 'readonly', 3, false),\n\t\tshowFormulaBar = $.prop($$props, 'showFormulaBar', 3, true),\n\t\tclassName = $.prop($$props, 'class', 3, '');\n\n\tlet isReadOnly = $.derived(() => readOnly() || readonly());\n\tlet gridContainer = $.state(null);\n\tlet resizingColId = $.state(null);\n\tlet hoveredColId = $.state(null);\n\tlet resizeStartX = $.state(0);\n\tlet resizeStartWidth = $.state(0);\n\n\tfunction handleCellClick(rIdx, cIdx, e) {\n\t\tif (sheetState().editingCell && (sheetState().editingCell.row !== rIdx || sheetState().editingCell.col !== cIdx)) {\n\t\t\tsheetState().commitEditing();\n\t\t}\n\n\t\tsheetState().selectCell(rIdx, cIdx, e.shiftKey);\n\t}\n\n\tfunction handleCellDblClick(rIdx, cIdx) {\n\t\tif ($.get(isReadOnly)) return;\n\n\t\tconst col = sheetState().document.columns[cIdx];\n\n\t\tif (col?.readOnly) return;\n\n\t\tsheetState().startEditing(rIdx, cIdx);\n\t}\n\n\tfunction handleKeyDown(e) {\n\t\tif (sheetState().editingCell) {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tsheetState().cancelEditing();\n\t\t\t} else if (e.key === 'Enter') {\n\t\t\t\tsheetState().commitEditing();\n\t\t\t\tsheetState().moveCursor('down');\n\t\t\t} else if (e.key === 'Tab') {\n\t\t\t\te.preventDefault();\n\t\t\t\tsheetState().commitEditing();\n\t\t\t\tsheetState().moveCursor(e.shiftKey ? 'left' : 'right');\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!sheetState().activeCell) return;\n\n\t\tif (e.key === 'ArrowUp') {\n\t\t\te.preventDefault();\n\t\t\tsheetState().moveCursor('up', e.shiftKey);\n\t\t} else if (e.key === 'ArrowDown') {\n\t\t\te.preventDefault();\n\t\t\tsheetState().moveCursor('down', e.shiftKey);\n\t\t} else if (e.key === 'ArrowLeft') {\n\t\t\te.preventDefault();\n\t\t\tsheetState().moveCursor('left', e.shiftKey);\n\t\t} else if (e.key === 'ArrowRight') {\n\t\t\te.preventDefault();\n\t\t\tsheetState().moveCursor('right', e.shiftKey);\n\t\t} else if (e.key === 'Tab') {\n\t\t\te.preventDefault();\n\t\t\tsheetState().moveCursor(e.shiftKey ? 'left' : 'right');\n\t\t} else if (e.key === 'Enter') {\n\t\t\te.preventDefault();\n\n\t\t\tconst col = sheetState().document.columns[sheetState().activeCell.col];\n\n\t\t\tif (!$.get(isReadOnly) && !col?.readOnly) {\n\t\t\t\tsheetState().startEditing();\n\t\t\t}\n\t\t} else if (e.key === 'Backspace' || e.key === 'Delete') {\n\t\t\tif ($.get(isReadOnly)) return;\n\n\t\t\tconst row = sheetState().document.rows[sheetState().activeCell.row];\n\t\t\tconst col = sheetState().document.columns[sheetState().activeCell.col];\n\n\t\t\tif (row && col && !col.readOnly) {\n\t\t\t\te.preventDefault();\n\t\t\t\tsheetState().setCellValue(row.id, col.id, '');\n\t\t\t}\n\t\t} else if ((e.metaKey || e.ctrlKey) && e.key === 'z') {\n\t\t\te.preventDefault();\n\n\t\t\tif (e.shiftKey) {\n\t\t\t\tsheetState().redo();\n\t\t\t} else {\n\t\t\t\tsheetState().undo();\n\t\t\t}\n\t\t} else if ((e.metaKey || e.ctrlKey) && e.key === 'c') {\n\t\t\te.preventDefault();\n\n\t\t\tconst tsv = sheetState().exportToTsv();\n\n\t\t\tnavigator.clipboard?.writeText(tsv);\n\t\t} else if (!$.get(isReadOnly) && e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n\t\t\t// Direct typing into cell starts editing\n\t\t\tconst col = sheetState().document.columns[sheetState().activeCell.col];\n\n\t\t\tif (!col?.readOnly) {\n\t\t\t\tsheetState().startEditing(sheetState().activeCell.row, sheetState().activeCell.col, e.key);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction handleResizeStart(colId, width, e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\t$.set(resizingColId, colId, true);\n\t\t$.set(resizeStartX, e.clientX, true);\n\t\t$.set(resizeStartWidth, width, true);\n\n\t\tif (typeof document !== 'undefined') {\n\t\t\tdocument.body.style.cursor = 'col-resize';\n\t\t\tdocument.body.style.userSelect = 'none';\n\t\t}\n\n\t\tlet rafId = null;\n\t\tlet pendingWidth = width;\n\t\tlet hasDragged = false;\n\n\t\tconst handleMouseMove = (moveEvent) => {\n\t\t\tif (!$.get(resizingColId)) return;\n\n\t\t\tconst delta = moveEvent.clientX - $.get(resizeStartX);\n\n\t\t\tif (Math.abs(delta) > 2) {\n\t\t\t\thasDragged = true;\n\t\t\t}\n\n\t\t\tpendingWidth = Math.max(30, $.get(resizeStartWidth) + delta);\n\n\t\t\tif (rafId === null) {\n\t\t\t\trafId = requestAnimationFrame(() => {\n\t\t\t\t\trafId = null;\n\n\t\t\t\t\tif ($.get(resizingColId)) {\n\t\t\t\t\t\tsheetState().setColumnWidth($.get(resizingColId), pendingWidth);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tif (rafId !== null) {\n\t\t\t\tcancelAnimationFrame(rafId);\n\t\t\t\trafId = null;\n\t\t\t}\n\n\t\t\tif ($.get(resizingColId) && hasDragged) {\n\t\t\t\tsheetState().setColumnWidth($.get(resizingColId), pendingWidth);\n\n\t\t\t\tconst col = sheetState().document.columns.find((c) => c.id === $.get(resizingColId));\n\n\t\t\t\tif (col && $$props.onColumnResize) {\n\t\t\t\t\t$$props.onColumnResize(col.id, col.width || pendingWidth);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.set(resizingColId, null);\n\n\t\t\tif (typeof document !== 'undefined') {\n\t\t\t\tdocument.body.style.cursor = '';\n\t\t\t\tdocument.body.style.userSelect = '';\n\t\t\t}\n\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t}\n\n\tfunction measureElementContentWidth(el, container) {\n\t\tif (typeof document === 'undefined') return 0;\n\n\t\tlet maxW = el.scrollWidth || 0;\n\t\tconst firstChild = el.firstElementChild;\n\n\t\tif (firstChild && firstChild.scrollWidth > maxW) {\n\t\t\tmaxW = firstChild.scrollWidth;\n\t\t}\n\n\t\tconst truncated = el.querySelectorAll('.truncate, [title], span, div');\n\n\t\ttruncated.forEach((node) => {\n\t\t\tif (node.scrollWidth > maxW) {\n\t\t\t\tmaxW = node.scrollWidth;\n\t\t\t}\n\t\t});\n\n\t\ttry {\n\t\t\tconst clone = firstChild ? firstChild.cloneNode(true) : el.cloneNode(true);\n\n\t\t\tclone.style.cssText = `\n position: absolute !important;\n visibility: hidden !important;\n width: max-content !important;\n min-width: max-content !important;\n max-width: none !important;\n overflow: visible !important;\n white-space: nowrap !important;\n pointer-events: none !important;\n top: -9999px !important;\n left: -9999px !important;\n `;\n\n\t\t\tconst allNodes = clone.querySelectorAll('*');\n\n\t\t\tallNodes.forEach((node) => {\n\t\t\t\tnode.style.maxWidth = 'none';\n\t\t\t\tnode.style.overflow = 'visible';\n\t\t\t\tnode.style.textOverflow = 'clip';\n\t\t\t\tnode.style.whiteSpace = 'nowrap';\n\n\t\t\t\tif (node.classList.contains('truncate') || node.classList.contains('min-w-0') || node.classList.contains('w-full') || node.classList.contains('max-w-0') || node.classList.contains('flex-1')) {\n\t\t\t\t\tnode.style.width = 'max-content';\n\t\t\t\t\tnode.style.minWidth = 'max-content';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontainer.appendChild(clone);\n\n\t\t\tconst rect = clone.getBoundingClientRect();\n\n\t\t\tcontainer.removeChild(clone);\n\n\t\t\tif (rect.width > maxW) {\n\t\t\t\tmaxW = rect.width;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore cloning/measuring errors\n\t\t}\n\n\t\treturn maxW;\n\t}\n\n\tfunction autoFitColumn(colId, colIndex) {\n\t\tconst col = sheetState().document.columns.find((c) => c.id === colId);\n\n\t\tif (!col) return;\n\n\t\tlet calculatedWidth = 0;\n\n\t\tif ($.get(gridContainer) && typeof document !== 'undefined') {\n\t\t\tconst table = $.get(gridContainer).querySelector('table');\n\n\t\t\tif (table) {\n\t\t\t\tconst thElements = table.querySelectorAll('thead th');\n\t\t\t\tconst th = thElements[colIndex + 1];\n\n\t\t\t\tif (th) {\n\t\t\t\t\tconst headerInner = th.firstElementChild || th;\n\t\t\t\t\tconst headerW = measureElementContentWidth(headerInner, $.get(gridContainer));\n\n\t\t\t\t\tcalculatedWidth = Math.max(calculatedWidth, headerW + 28);\n\t\t\t\t}\n\n\t\t\t\tconst rows = table.querySelectorAll('tbody tr');\n\t\t\t\tconst sampleLimit = Math.min(rows.length, 150);\n\n\t\t\t\tfor (let r = 0; r < sampleLimit; r++) {\n\t\t\t\t\tconst tr = rows[r];\n\t\t\t\t\tconst td = tr.children[colIndex + 1];\n\n\t\t\t\t\tif (td) {\n\t\t\t\t\t\tconst cellW = measureElementContentWidth(td, $.get(gridContainer));\n\n\t\t\t\t\t\tcalculatedWidth = Math.max(calculatedWidth, cellW + 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (calculatedWidth > 0) {\n\t\t\tconst finalWidth = Math.min(600, Math.max(50, Math.ceil(calculatedWidth)));\n\n\t\t\tsheetState().setColumnWidth(colId, finalWidth);\n\t\t} else {\n\t\t\tsheetState().autoFitColumnWidth(colId);\n\t\t}\n\n\t\tconst updatedCol = sheetState().document.columns.find((c) => c.id === colId);\n\n\t\tif (updatedCol && $$props.onColumnResize) {\n\t\t\t$$props.onColumnResize(updatedCol.id, updatedCol.width || 130);\n\t\t}\n\t}\n\n\tfunction handleResizeDblClick(colId, colIndex, e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tautoFitColumn(colId, colIndex);\n\t}\n\n\tfunction handleHeaderDblClick(colId, colIndex, e) {\n\t\tconst target = e.currentTarget;\n\n\t\tif (target) {\n\t\t\tconst rect = target.getBoundingClientRect();\n\n\t\t\tif (rect.right - e.clientX <= 12) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tautoFitColumn(colId, colIndex);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction isCellSelected(rIdx, cIdx) {\n\t\tif (!sheetState().selectedRange) return false;\n\n\t\tconst minR = Math.min(sheetState().selectedRange.startRow, sheetState().selectedRange.endRow);\n\t\tconst maxR = Math.max(sheetState().selectedRange.startRow, sheetState().selectedRange.endRow);\n\t\tconst minC = Math.min(sheetState().selectedRange.startCol, sheetState().selectedRange.endCol);\n\t\tconst maxC = Math.max(sheetState().selectedRange.startCol, sheetState().selectedRange.endCol);\n\n\t\treturn rIdx >= minR && rIdx <= maxR && cIdx >= minC && cIdx <= maxC;\n\t}\n\n\tfunction isActiveCell(rIdx, cIdx) {\n\t\treturn sheetState().activeCell?.row === rIdx && sheetState().activeCell?.col === cIdx;\n\t}\n\n\tvar div = root_7();\n\tvar node_1 = $.child(div);\n\n\t{\n\t\tvar consequent = ($$anchor) => {\n\t\t\tFormulaBar($$anchor, {\n\t\t\t\tget sheetState() {\n\t\t\t\t\treturn sheetState();\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t$.if(node_1, ($$render) => {\n\t\t\tif (showFormulaBar()) $$render(consequent);\n\t\t});\n\t}\n\n\tvar div_1 = $.sibling(node_1, 2);\n\tvar table_1 = $.child(div_1);\n\tvar thead = $.child(table_1);\n\tvar tr_1 = $.child(thead);\n\tvar node_2 = $.sibling($.child(tr_1));\n\n\t$.each(node_2, 19, () => sheetState().document.columns, (col) => col.id, ($$anchor, col, cIdx) => {\n\t\tvar th_1 = root();\n\t\tvar div_2 = $.child(th_1);\n\t\tvar span = $.child(div_2);\n\t\tvar text = $.only_child(span, true);\n\t\tvar span_1 = $.sibling(span, 2);\n\t\tvar text_1 = $.only_child(span_1);\n\n\t\t$.reset(div_2);\n\n\t\tvar div_3 = $.sibling(div_2, 2);\n\t\tvar div_4 = $.only_child(div_3);\n\n\t\t$.reset(th_1);\n\n\t\t$.template_effect(() => {\n\t\t\t$.set_class(th_1, 1, `relative border-r border-border px-2 text-left font-medium text-muted-foreground hover:bg-muted/90 transition-colors group overflow-hidden max-w-0 ${$$props.onColumnHeaderClick ? 'cursor-pointer' : 'cursor-default'}`, 'svelte-m799ch');\n\t\t\t$.set_style(th_1, `width: ${($.get(col).width || 130) ?? ''}px; min-width: ${($.get(col).width || 130) ?? ''}px; max-width: ${($.get(col).width || 130) ?? ''}px; overflow: hidden;`);\n\t\t\t$.set_text(text, $.get(col).title);\n\t\t\t$.set_text(text_1, `(${$.get(col).key ?? ''})`);\n\n\t\t\t$.set_style(div_4, `width: 2px; height: 100%; pointer-events: none; transition: background-color 150ms ease; background-color: ${$.get(resizingColId) === $.get(col).id\n\t\t\t\t? 'var(--primary, #6366f1)'\n\t\t\t\t: $.get(hoveredColId) === $.get(col).id\n\t\t\t\t\t? 'color-mix(in srgb, var(--primary, #6366f1) 75%, transparent)'\n\t\t\t\t\t: 'transparent'};`);\n\t\t});\n\n\t\t$.delegated('click', th_1, () => $$props.onColumnHeaderClick?.($.get(col)));\n\t\t$.delegated('dblclick', th_1, (e) => handleHeaderDblClick($.get(col).id, $.get(cIdx), e));\n\t\t$.event('mouseenter', div_3, () => $.set(hoveredColId, $.get(col).id, true));\n\n\t\t$.event('mouseleave', div_3, () => {\n\t\t\tif ($.get(hoveredColId) === $.get(col).id) $.set(hoveredColId, null);\n\t\t});\n\n\t\t$.delegated('mousedown', div_3, (e) => handleResizeStart($.get(col).id, $.get(col).width || 130, e));\n\t\t$.delegated('dblclick', div_3, (e) => handleResizeDblClick($.get(col).id, $.get(cIdx), e));\n\t\t$.append($$anchor, th_1);\n\t});\n\n\tvar node_3 = $.sibling(node_2);\n\n\t{\n\t\tvar consequent_1 = ($$anchor) => {\n\t\t\tvar th_2 = root_1();\n\n\t\t\t$.delegated('click', th_2, function (...$$args) {\n\t\t\t\t$$props.onAddColumnClick?.apply(this, $$args);\n\t\t\t});\n\n\t\t\t$.append($$anchor, th_2);\n\t\t};\n\n\t\t$.if(node_3, ($$render) => {\n\t\t\tif ($$props.onAddColumnClick) $$render(consequent_1);\n\t\t});\n\t}\n\n\t$.next();\n\t$.reset(tr_1);\n\t$.reset(thead);\n\n\tvar tbody = $.sibling(thead);\n\n\t$.each(tbody, 23, () => sheetState().document.rows, (row) => row.id, ($$anchor, row, rIdx) => {\n\t\tvar tr_2 = root_6();\n\t\tvar td_1 = $.child(tr_2);\n\t\tvar text_2 = $.only_child(td_1, true);\n\t\tvar node_4 = $.sibling(td_1);\n\n\t\t$.each(node_4, 19, () => sheetState().document.columns, (col) => col.id, ($$anchor, col, cIdx) => {\n\t\t\tconst cell = $.derived(() => sheetState().getCell($.get(row).id, $.get(col).id));\n\t\t\tconst selected = $.derived(() => isCellSelected($.get(rIdx), $.get(cIdx)));\n\t\t\tconst active = $.derived(() => isActiveCell($.get(rIdx), $.get(cIdx)));\n\t\t\tconst isEditing = $.derived(() => sheetState().editingCell?.row === $.get(rIdx) && sheetState().editingCell?.col === $.get(cIdx));\n\t\t\tvar td_2 = root_4();\n\t\t\tvar node_5 = $.child(td_2);\n\n\t\t\t{\n\t\t\t\tvar consequent_2 = ($$anchor) => {\n\t\t\t\t\tvar input = root_2();\n\n\t\t\t\t\t$.remove_input_defaults(input);\n\t\t\t\t\t$.event('blur', input, () => sheetState().commitEditing());\n\t\t\t\t\t$.bind_value(input, () => sheetState().draftValue, ($$value) => sheetState().draftValue = $$value);\n\t\t\t\t\t$.append($$anchor, input);\n\t\t\t\t};\n\n\t\t\t\tvar consequent_3 = ($$anchor) => {\n\t\t\t\t\tconst cellArg = $.derived(() => Object.assign({ row: $.get(row), col: $.get(col), cell: $.get(cell) }, $.get(cell)));\n\t\t\t\t\tvar fragment_1 = $.comment();\n\t\t\t\t\tvar node_6 = $.first_child(fragment_1);\n\n\t\t\t\t\t$.snippet(node_6, () => $$props.customCellRenderer, () => $.get(cellArg), () => $.get(col), () => $.get(row));\n\t\t\t\t\t$.append($$anchor, fragment_1);\n\t\t\t\t};\n\n\t\t\t\tvar alternate = ($$anchor) => {\n\t\t\t\t\tvar span_2 = root_3();\n\t\t\t\t\tvar text_3 = $.only_child(span_2, true);\n\n\t\t\t\t\t$.template_effect(() => {\n\t\t\t\t\t\t$.set_class(span_2, 1, `truncate block max-w-full ${$.get(cell).error ? 'text-destructive font-semibold' : ''}`);\n\t\t\t\t\t\t$.set_text(text_3, $.get(cell).error || ($.get(cell).value ?? ''));\n\t\t\t\t\t});\n\n\t\t\t\t\t$.append($$anchor, span_2);\n\t\t\t\t};\n\n\t\t\t\t$.if(node_5, ($$render) => {\n\t\t\t\t\tif ($.get(isEditing)) $$render(consequent_2); else if ($$props.customCellRenderer) $$render(consequent_3, 1); else $$render(alternate, -1);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.reset(td_2);\n\t\t\t$.template_effect(() => $.set_class(td_2, 1, `relative border-r border-border px-2 py-1 truncate max-w-0 text-foreground transition-colors ${$.get(selected) ? 'bg-primary/10' : ''} ${$.get(active) ? 'ring-2 ring-primary ring-inset z-10' : ''}`, 'svelte-m799ch'));\n\t\t\t$.delegated('click', td_2, (e) => handleCellClick($.get(rIdx), $.get(cIdx), e));\n\t\t\t$.delegated('dblclick', td_2, () => handleCellDblClick($.get(rIdx), $.get(cIdx)));\n\t\t\t$.append($$anchor, td_2);\n\t\t});\n\n\t\tvar node_7 = $.sibling(node_4);\n\n\t\t{\n\t\t\tvar consequent_4 = ($$anchor) => {\n\t\t\t\tvar td_3 = root_5();\n\n\t\t\t\t$.append($$anchor, td_3);\n\t\t\t};\n\n\t\t\t$.if(node_7, ($$render) => {\n\t\t\t\tif ($$props.onAddColumnClick) $$render(consequent_4);\n\t\t\t});\n\t\t}\n\n\t\t$.next();\n\t\t$.reset(tr_2);\n\n\t\t$.template_effect(() => {\n\t\t\t$.set_style(tr_2, `height: ${($.get(row).height || 32) ?? ''}px;`);\n\t\t\t$.set_text(text_2, $.get(rIdx) + 1);\n\t\t});\n\n\t\t$.append($$anchor, tr_2);\n\t});\n\n\t$.reset(tbody);\n\t$.reset(table_1);\n\t$.reset(div_1);\n\t$.reset(div);\n\t$.bind_this(div, ($$value) => $.set(gridContainer, $$value), () => $.get(gridContainer));\n\t$.template_effect(() => $.set_class(div, 1, `flex flex-col h-full w-full overflow-hidden border border-border bg-background select-none outline-none text-foreground font-sans text-xs ${className() ?? ''}`, 'svelte-m799ch'));\n\t$.delegated('keydown', div, handleKeyDown);\n\t$.append($$anchor, div);\n\t$.pop();\n}\n\n$.delegate(['keydown', 'click', 'dblclick', 'mousedown']);","import 'svelte/internal/disclose-version';\nimport * as $ from 'svelte/internal/client';\nimport { indexToColName } from '@pixerate/editor';\n\nvar root = $.from_html(`<div><div class=\"flex h-6 min-w-[3rem] items-center justify-center rounded border border-border bg-background px-1.5 font-semibold text-foreground\"> </div> <div class=\"flex items-center text-muted-foreground select-none\"><span class=\"italic font-serif font-bold text-sm text-primary\">fx</span></div> <input type=\"text\" class=\"flex-1 bg-transparent px-2 py-0.5 outline-none font-sans text-xs text-foreground placeholder:text-muted-foreground/60 focus:bg-background focus:ring-1 focus:ring-primary rounded\" placeholder=\"Enter a value or formula (e.g. =SUM(A1:A5))\"/></div>`);\n\nexport default function FormulaBar($$anchor, $$props) {\n\t$.push($$props, true);\n\n\tlet sheetState = $.prop($$props, 'sheetState', 7),\n\t\tactiveCoord = $.prop($$props, 'activeCoord', 3, null),\n\t\tvalue = $.prop($$props, 'value', 15, ''),\n\t\tclassName = $.prop($$props, 'class', 3, '');\n\n\tlet effectiveCoord = $.derived(() => {\n\t\tif (sheetState()) return sheetState().activeCell;\n\n\t\treturn activeCoord();\n\t});\n\n\tlet coordLabel = $.derived(() => {\n\t\tif (!$.get(effectiveCoord)) return '--';\n\n\t\tconst colName = indexToColName($.get(effectiveCoord).col);\n\n\t\treturn `${colName}${$.get(effectiveCoord).row + 1}`;\n\t});\n\n\tlet effectiveValue = $.derived(() => {\n\t\tif (sheetState()) {\n\t\t\tif (sheetState().editingCell) return sheetState().draftValue;\n\t\t\tif (!sheetState().activeCell) return '';\n\n\t\t\tconst row = sheetState().document.rows[sheetState().activeCell.row];\n\t\t\tconst col = sheetState().document.columns[sheetState().activeCell.col];\n\n\t\t\tif (!row || !col) return '';\n\n\t\t\treturn sheetState().getCell(row.id, col.id).raw || '';\n\t\t}\n\n\t\treturn value();\n\t});\n\n\tfunction handleKeyDown(e) {\n\t\tif (e.key === 'Enter') {\n\t\t\te.preventDefault();\n\n\t\t\tif (sheetState() && sheetState().activeCell) {\n\t\t\t\tconst row = sheetState().document.rows[sheetState().activeCell.row];\n\t\t\t\tconst col = sheetState().document.columns[sheetState().activeCell.col];\n\n\t\t\t\tif (row && col) {\n\t\t\t\t\tsheetState().setCellValue(row.id, col.id, $.get(effectiveValue));\n\t\t\t\t}\n\n\t\t\t\tsheetState().commitEditing();\n\t\t\t}\n\n\t\t\t$$props.onCommit?.($.get(effectiveValue));\n\t\t} else if (e.key === 'Escape') {\n\t\t\te.preventDefault();\n\n\t\t\tif (sheetState()) {\n\t\t\t\tsheetState().cancelEditing();\n\t\t\t}\n\n\t\t\t$$props.onCancel?.();\n\t\t}\n\t}\n\n\tfunction handleInput(e) {\n\t\tconst target = e.target;\n\n\t\tif (sheetState()) {\n\t\t\tsheetState().draftValue = target.value;\n\n\t\t\tif (sheetState().activeCell && !sheetState().editingCell) {\n\t\t\t\tsheetState().startEditing(sheetState().activeCell.row, sheetState().activeCell.col, target.value);\n\t\t\t}\n\t\t} else {\n\t\t\tvalue(target.value);\n\t\t}\n\n\t\t$$props.onChange?.(target.value);\n\t}\n\n\tvar div = root();\n\tvar div_1 = $.child(div);\n\tvar text = $.only_child(div_1, true);\n\tvar input = $.sibling(div_1, 4);\n\n\t$.remove_input_defaults(input);\n\t$.reset(div);\n\n\t$.template_effect(() => {\n\t\t$.set_class(div, 1, `flex items-center gap-2 border-b border-border bg-muted/20 px-3 py-1.5 text-xs font-mono ${className() ?? ''}`);\n\t\t$.set_text(text, $.get(coordLabel));\n\t\t$.set_value(input, $.get(effectiveValue));\n\t});\n\n\t$.delegated('input', input, handleInput);\n\t$.delegated('keydown', input, handleKeyDown);\n\t$.append($$anchor, div);\n\t$.pop();\n}\n\n$.delegate(['input', 'keydown']);","import {\n SpreadsheetController\n} from \"@pixerate/editor\";\nexport function createReactiveSpreadsheet(options = {}) {\n let doc = $state({\n id: options.document?.id || `sheet_${Date.now()}`,\n name: options.document?.name || \"Sheet 1\",\n columns: options.document?.columns || [],\n rows: options.document?.rows || [],\n cells: options.document?.cells || {},\n createdAt: options.document?.createdAt || Date.now(),\n updatedAt: options.document?.updatedAt || Date.now()\n });\n let activeCell = $state(null);\n let selectedRange = $state(null);\n let editingCell = $state(null);\n let draftValue = $state(\"\");\n const controller = new SpreadsheetController({\n ...options,\n document: options.document,\n onDocumentChange: (updated) => {\n doc = { ...updated };\n options.onDocumentChange?.(updated);\n },\n onSelectionChange: (active, range) => {\n activeCell = active;\n selectedRange = range;\n options.onSelectionChange?.(active, range);\n },\n onCellCommit: (rowId, colId, raw, value) => {\n options.onCellCommit?.(rowId, colId, raw, value);\n }\n });\n doc = { ...controller.document };\n activeCell = controller.activeCell;\n selectedRange = controller.selectedRange;\n return {\n get document() {\n return doc;\n },\n get activeCell() {\n return activeCell;\n },\n get selectedRange() {\n return selectedRange;\n },\n get editingCell() {\n return editingCell;\n },\n get draftValue() {\n return draftValue;\n },\n set draftValue(val) {\n draftValue = val;\n controller.draftValue = val;\n },\n controller,\n getCell(rowId, colId) {\n return controller.getCell(rowId, colId);\n },\n setCellValue(rowId, colId, raw) {\n controller.setCellValue(rowId, colId, raw);\n doc = { ...controller.document };\n },\n selectCell(row, col, extendSelection = false) {\n controller.selectCell(row, col, extendSelection);\n activeCell = controller.activeCell;\n selectedRange = controller.selectedRange;\n },\n selectRange(range) {\n controller.selectRange(range);\n selectedRange = controller.selectedRange;\n },\n startEditing(row, col, initialVal) {\n controller.startEditing(row, col, initialVal);\n activeCell = controller.activeCell;\n editingCell = controller.editingCell;\n draftValue = controller.draftValue;\n },\n commitEditing(val) {\n controller.commitEditing(val);\n editingCell = null;\n draftValue = \"\";\n doc = { ...controller.document };\n },\n cancelEditing() {\n controller.cancelEditing();\n editingCell = null;\n draftValue = \"\";\n },\n moveCursor(dir, extend = false) {\n controller.moveCursor(dir, extend);\n activeCell = controller.activeCell;\n selectedRange = controller.selectedRange;\n },\n insertColumn(index, config) {\n controller.insertColumn(index, config);\n doc = { ...controller.document };\n },\n deleteColumn(colId) {\n controller.deleteColumn(colId);\n doc = { ...controller.document };\n },\n insertRow(index, config) {\n controller.insertRow(index, config);\n doc = { ...controller.document };\n },\n deleteRow(rowId) {\n controller.deleteRow(rowId);\n doc = { ...controller.document };\n },\n setColumnWidth(colId, width) {\n controller.setColumnWidth(colId, width);\n doc = { ...controller.document };\n },\n autoFitColumnWidth(colId, customWidth) {\n controller.autoFitColumnWidth(colId, customWidth);\n doc = { ...controller.document };\n },\n loadDocument(document) {\n controller.loadDocument(document);\n doc = { ...controller.document };\n activeCell = controller.activeCell;\n selectedRange = controller.selectedRange;\n editingCell = controller.editingCell;\n draftValue = controller.draftValue;\n },\n syncWithDataSource() {\n controller.syncWithDataSource();\n controller.recalculateAll();\n doc = { ...controller.document };\n },\n registerDataSource(ds) {\n controller.registerDataSource(ds);\n doc = { ...controller.document };\n },\n setPrimaryDataSource(id) {\n controller.setPrimaryDataSource(id);\n doc = { ...controller.document };\n },\n recalculateAll() {\n controller.recalculateAll();\n doc = { ...controller.document };\n },\n exportToTsv() {\n return controller.exportToTsv();\n },\n importFromTsv(data) {\n controller.importFromTsv(data);\n doc = { ...controller.document };\n },\n undo() {\n controller.undo();\n doc = { ...controller.document };\n },\n redo() {\n controller.redo();\n doc = { ...controller.document };\n }\n };\n}\n"],"mappings":"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","names":["$","$$anchor","$","root","$$anchor","$","root","root_1","$$anchor","state","event","HistoryManager","createHistoryManager","$","indexToColName","$","root","index","document","root","root_1","root_2","root_3","root_4","$$anchor","EditableTextNodeEditor","BubbleMenu","TemplateRenderer"]}