@snowcone-app/canvas 0.1.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 (370) hide show
  1. package/LICENSE.txt +70 -0
  2. package/README.md +357 -0
  3. package/dist/CanvasStateV1-D5GzvmnY.cjs +65 -0
  4. package/dist/CanvasStateV1-D5GzvmnY.cjs.map +1 -0
  5. package/dist/CanvasStateV1-ejb4d_LM.js +3692 -0
  6. package/dist/CanvasStateV1-ejb4d_LM.js.map +1 -0
  7. package/dist/ElementFactory-B7UOaJSD.cjs +23865 -0
  8. package/dist/ElementFactory-B7UOaJSD.cjs.map +1 -0
  9. package/dist/ElementFactory-uJTXU-nP.js +29615 -0
  10. package/dist/ElementFactory-uJTXU-nP.js.map +1 -0
  11. package/dist/HybridHistoryManager-BV6XV0nD.js +8048 -0
  12. package/dist/HybridHistoryManager-BV6XV0nD.js.map +1 -0
  13. package/dist/HybridHistoryManager-BXD93pp8.cjs +8 -0
  14. package/dist/HybridHistoryManager-BXD93pp8.cjs.map +1 -0
  15. package/dist/ImportManager-BYwuK6n4.cjs +2 -0
  16. package/dist/ImportManager-BYwuK6n4.cjs.map +1 -0
  17. package/dist/ImportManager-CxiaRg1N.js +222 -0
  18. package/dist/ImportManager-CxiaRg1N.js.map +1 -0
  19. package/dist/ThemeContext-4mJ_y0Me.cjs +2 -0
  20. package/dist/ThemeContext-4mJ_y0Me.cjs.map +1 -0
  21. package/dist/ThemeContext-H0Z-MqqR.js +1077 -0
  22. package/dist/ThemeContext-H0Z-MqqR.js.map +1 -0
  23. package/dist/advanced.d.ts +2 -0
  24. package/dist/advanced.js +48 -0
  25. package/dist/advanced.js.map +1 -0
  26. package/dist/advanced.mjs +15679 -0
  27. package/dist/advanced.mjs.map +1 -0
  28. package/dist/api/advanced.d.ts +110 -0
  29. package/dist/api/internals.d.ts +39 -0
  30. package/dist/api/stable.d.ts +44 -0
  31. package/dist/api/testing.d.ts +25 -0
  32. package/dist/browser-module-D0gHY9rY.cjs +9 -0
  33. package/dist/browser-module-D0gHY9rY.cjs.map +1 -0
  34. package/dist/browser-module-DFvKXBUE.js +15474 -0
  35. package/dist/browser-module-DFvKXBUE.js.map +1 -0
  36. package/dist/components/ArtboardDistressPanel.d.ts +7 -0
  37. package/dist/components/ArtboardImageMaskPanel.d.ts +7 -0
  38. package/dist/components/ArtboardPropertiesToolbar.d.ts +19 -0
  39. package/dist/components/ArtboardToolbar.d.ts +10 -0
  40. package/dist/components/BackButton.d.ts +7 -0
  41. package/dist/components/BackgroundPickerDropdown.d.ts +11 -0
  42. package/dist/components/BackgroundSwitcher.d.ts +7 -0
  43. package/dist/components/CanvasA11yFallback.d.ts +62 -0
  44. package/dist/components/CanvasEditor/CanvasRendererComponent.d.ts +51 -0
  45. package/dist/components/CanvasEditor/handlers/cropModeHandlers.d.ts +114 -0
  46. package/dist/components/CanvasEditor/handlers/groupChildHandlers.d.ts +65 -0
  47. package/dist/components/CanvasEditor/handlers/index.d.ts +10 -0
  48. package/dist/components/CanvasEditor/handlers/multiSelectionHandlers.d.ts +86 -0
  49. package/dist/components/CanvasEditor/hooks/buildSpreadClipShape.d.ts +20 -0
  50. package/dist/components/CanvasEditor/hooks/index.d.ts +24 -0
  51. package/dist/components/CanvasEditor/hooks/useActiveChild.d.ts +23 -0
  52. package/dist/components/CanvasEditor/hooks/useAnimatedFocusRect.d.ts +17 -0
  53. package/dist/components/CanvasEditor/hooks/useCanvasInteraction.d.ts +284 -0
  54. package/dist/components/CanvasEditor/hooks/useCanvasLayout.d.ts +50 -0
  55. package/dist/components/CanvasEditor/hooks/useCanvasRenderLoop.d.ts +140 -0
  56. package/dist/components/CanvasEditor/hooks/useCropMode.d.ts +4 -0
  57. package/dist/components/CanvasEditor/hooks/useHoverState.d.ts +9 -0
  58. package/dist/components/CanvasEditor/hooks/useInteractionState.d.ts +23 -0
  59. package/dist/components/CanvasEditor/hooks/useKeyboardHandlers.d.ts +16 -0
  60. package/dist/components/CanvasEditor/hooks/useMarqueeSelection.d.ts +22 -0
  61. package/dist/components/CanvasEditor/hooks/useMultiSelection.d.ts +5 -0
  62. package/dist/components/CanvasEditor/hooks/usePenTool.d.ts +10 -0
  63. package/dist/components/CanvasEditor/hooks/useRenderState.d.ts +31 -0
  64. package/dist/components/CanvasEditor/hooks/useSnapAndSpacing.d.ts +42 -0
  65. package/dist/components/CanvasEditor/hooks/useTextEditing.d.ts +56 -0
  66. package/dist/components/CanvasEditor/hooks/useTextEditingHandlers.d.ts +75 -0
  67. package/dist/components/CanvasEditor/renderers/hoverRenderer.d.ts +12 -0
  68. package/dist/components/CanvasEditor/renderers/index.d.ts +10 -0
  69. package/dist/components/CanvasEditor/renderers/marqueeRenderer.d.ts +21 -0
  70. package/dist/components/CanvasEditor/renderers/multiSelectionRenderer.d.ts +52 -0
  71. package/dist/components/CanvasEditor/renderers/renderingConstants.d.ts +59 -0
  72. package/dist/components/CanvasEditor/types/index.d.ts +11 -0
  73. package/dist/components/CanvasEditor.d.ts +102 -0
  74. package/dist/components/ColorPickerDropdown.d.ts +29 -0
  75. package/dist/components/CompositingPanel.d.ts +8 -0
  76. package/dist/components/ContextualToolbars.d.ts +150 -0
  77. package/dist/components/CropPanel.d.ts +20 -0
  78. package/dist/components/DistressPanel.d.ts +7 -0
  79. package/dist/components/DocsPage.d.ts +6 -0
  80. package/dist/components/Drawer.d.ts +39 -0
  81. package/dist/components/EffectsPanel.d.ts +14 -0
  82. package/dist/components/ExportTestPanel.d.ts +16 -0
  83. package/dist/components/FontBrowserDrawer.d.ts +20 -0
  84. package/dist/components/FontSizeDropdown.d.ts +12 -0
  85. package/dist/components/GlyphBrowserDrawer.d.ts +13 -0
  86. package/dist/components/GlyphPicker.d.ts +14 -0
  87. package/dist/components/IconMatchTest.d.ts +3 -0
  88. package/dist/components/IconSizeTest.d.ts +3 -0
  89. package/dist/components/ImageBrowserDrawer.d.ts +27 -0
  90. package/dist/components/ImageToolbar.d.ts +47 -0
  91. package/dist/components/LayerEffects.d.ts +11 -0
  92. package/dist/components/LayerLeadingChip.d.ts +9 -0
  93. package/dist/components/LayersPanel.d.ts +30 -0
  94. package/dist/components/MaskItem.d.ts +12 -0
  95. package/dist/components/MasksPanel.d.ts +7 -0
  96. package/dist/components/MonotypeDemoPage.d.ts +2 -0
  97. package/dist/components/MoreMenu.d.ts +15 -0
  98. package/dist/components/OpenTypeFeaturesPanel.d.ts +12 -0
  99. package/dist/components/PathToolbar.d.ts +10 -0
  100. package/dist/components/PenToolDemo.d.ts +3 -0
  101. package/dist/components/ProgressiveBlur.d.ts +25 -0
  102. package/dist/components/RotationHandle.d.ts +47 -0
  103. package/dist/components/SaveLoadMenu.d.ts +15 -0
  104. package/dist/components/ShapeToolbar.d.ts +71 -0
  105. package/dist/components/ShapeTypeDrawer.d.ts +10 -0
  106. package/dist/components/StrokePanel.d.ts +7 -0
  107. package/dist/components/TailwindDemo.d.ts +3 -0
  108. package/dist/components/TextEffectsDropdown.d.ts +14 -0
  109. package/dist/components/TextToolbar.d.ts +47 -0
  110. package/dist/components/TextTypeDrawer.d.ts +8 -0
  111. package/dist/components/ThemeToggle.d.ts +2 -0
  112. package/dist/components/TransformControlPanel.d.ts +12 -0
  113. package/dist/components/VisualGuideOverlay.d.ts +156 -0
  114. package/dist/components/embed/ArtboardTabs.d.ts +74 -0
  115. package/dist/components/embed/Canvas.d.ts +72 -0
  116. package/dist/components/embed/EffectsPanel.d.ts +76 -0
  117. package/dist/components/embed/ErrorBoundary.d.ts +34 -0
  118. package/dist/components/embed/ExportPanel.d.ts +51 -0
  119. package/dist/components/embed/GlyphPanel.d.ts +70 -0
  120. package/dist/components/embed/ImagePanel.d.ts +58 -0
  121. package/dist/components/embed/LayersPanel.d.ts +13 -0
  122. package/dist/components/embed/LoadingStates.d.ts +32 -0
  123. package/dist/components/embed/MenuButton.d.ts +47 -0
  124. package/dist/components/embed/SnowconeCanvas.d.ts +844 -0
  125. package/dist/components/embed/ZoomControls.d.ts +16 -0
  126. package/dist/components/embed/index.d.ts +129 -0
  127. package/dist/components/embed/primitives/index.d.ts +42 -0
  128. package/dist/components/embed/ui/index.d.ts +52 -0
  129. package/dist/components/embed/utils/index.d.ts +31 -0
  130. package/dist/components/embedded/ArtboardEmbed.d.ts +70 -0
  131. package/dist/components/embedded/MerchifyThemeWrapper.d.ts +30 -0
  132. package/dist/components/embedded/ProductPreviewCard.d.ts +8 -0
  133. package/dist/components/embedded/index.d.ts +7 -0
  134. package/dist/components/primitives/ButtonGroup.d.ts +27 -0
  135. package/dist/components/primitives/ControlGroup.d.ts +15 -0
  136. package/dist/components/primitives/Dropdown.d.ts +27 -0
  137. package/dist/components/primitives/DropdownMenu.d.ts +9 -0
  138. package/dist/components/primitives/MenuItem.d.ts +13 -0
  139. package/dist/components/primitives/Panel.d.ts +25 -0
  140. package/dist/components/primitives/SecondaryToolbar.d.ts +9 -0
  141. package/dist/components/primitives/Switch.d.ts +10 -0
  142. package/dist/components/primitives/Toggle.d.ts +17 -0
  143. package/dist/components/primitives/index.d.ts +22 -0
  144. package/dist/components/stories/utils/MockEditorProvider.d.ts +32 -0
  145. package/dist/components/stories/utils/QACanvasCard.d.ts +41 -0
  146. package/dist/components/stories/utils/VisualQACard.d.ts +24 -0
  147. package/dist/components/stories/utils/element-factories.d.ts +188 -0
  148. package/dist/components/stories/utils/spec-to-elements.d.ts +74 -0
  149. package/dist/components/stories/utils/themeDecorator.d.ts +45 -0
  150. package/dist/components/stories/utils/unified-test-cases.d.ts +27 -0
  151. package/dist/components/text-toolbar/BoldButton.d.ts +5 -0
  152. package/dist/components/text-toolbar/FontColorButton.d.ts +6 -0
  153. package/dist/components/text-toolbar/FontSizeGroup.d.ts +5 -0
  154. package/dist/components/text-toolbar/ItalicButton.d.ts +5 -0
  155. package/dist/components/text-toolbar/TextAlignButton.d.ts +5 -0
  156. package/dist/components/text-toolbar/TextMoreMenu.d.ts +7 -0
  157. package/dist/components/text-toolbar/UnderlineButton.d.ts +5 -0
  158. package/dist/components/text-toolbar/UppercaseButton.d.ts +5 -0
  159. package/dist/components/text-toolbar/index.d.ts +25 -0
  160. package/dist/components/toolbars/EmbeddedToolbarLayout.d.ts +49 -0
  161. package/dist/components/toolbars/ExpandedPanelIcon.d.ts +13 -0
  162. package/dist/components/toolbars/FloatingPanels.d.ts +23 -0
  163. package/dist/components/toolbars/GroupElementToolbar.d.ts +35 -0
  164. package/dist/components/toolbars/SecondaryPanels.d.ts +125 -0
  165. package/dist/components/toolbars/index.d.ts +18 -0
  166. package/dist/components/toolbars/shared/ColorPanelWrapper.d.ts +9 -0
  167. package/dist/components/toolbars/shared/SecondaryPanelWrapper.d.ts +9 -0
  168. package/dist/components/ui/PresetCarousel.d.ts +21 -0
  169. package/dist/components/ui/SecondaryPanel.d.ts +28 -0
  170. package/dist/components/ui/SliderRow.d.ts +30 -0
  171. package/dist/components/ui/collapsed-toolbar-header.d.ts +14 -0
  172. package/dist/components/ui/custom-icons.d.ts +25 -0
  173. package/dist/components/ui/icons.d.ts +100 -0
  174. package/dist/components/ui/index.d.ts +48 -0
  175. package/dist/components/ui/normalized-icon.d.ts +63 -0
  176. package/dist/components/ui/toolbar-button.d.ts +24 -0
  177. package/dist/compose-Bo108juW.cjs +33 -0
  178. package/dist/compose-Bo108juW.cjs.map +1 -0
  179. package/dist/compose-DQ1FZS3O.js +7690 -0
  180. package/dist/compose-DQ1FZS3O.js.map +1 -0
  181. package/dist/constants.d.ts +121 -0
  182. package/dist/contexts/CommandContext.d.ts +87 -0
  183. package/dist/contexts/EditorContext.d.ts +190 -0
  184. package/dist/contexts/ElementsContext.d.ts +104 -0
  185. package/dist/contexts/HistoryContext.d.ts +60 -0
  186. package/dist/contexts/KitContext.d.ts +50 -0
  187. package/dist/contexts/SelectionContext.d.ts +51 -0
  188. package/dist/contexts/ThemeContext.d.ts +55 -0
  189. package/dist/contexts/ToolStateContext.d.ts +60 -0
  190. package/dist/contexts/ViewportContext.d.ts +87 -0
  191. package/dist/core/AlignmentSnapSystem.d.ts +270 -0
  192. package/dist/core/ArtboardElement.d.ts +106 -0
  193. package/dist/core/ArtboardManager.d.ts +130 -0
  194. package/dist/core/ArtboardRenderer.d.ts +97 -0
  195. package/dist/core/BaseElement.d.ts +94 -0
  196. package/dist/core/CanvasRenderer.d.ts +237 -0
  197. package/dist/core/CommandHistory.d.ts +173 -0
  198. package/dist/core/CoordinateTransform.d.ts +69 -0
  199. package/dist/core/CropModeController.d.ts +90 -0
  200. package/dist/core/EditModeRenderer.d.ts +51 -0
  201. package/dist/core/ElementFactory.d.ts +73 -0
  202. package/dist/core/ElementStore.d.ts +69 -0
  203. package/dist/core/EventBus.d.ts +163 -0
  204. package/dist/core/GeometryUtils.d.ts +247 -0
  205. package/dist/core/GroupElement.d.ts +134 -0
  206. package/dist/core/HoverRenderer.d.ts +103 -0
  207. package/dist/core/HybridHistoryManager.d.ts +137 -0
  208. package/dist/core/ImageCache.d.ts +63 -0
  209. package/dist/core/ImageElement.d.ts +226 -0
  210. package/dist/core/ImageLoadEvents.d.ts +23 -0
  211. package/dist/core/InteractionFeedbackRenderer.d.ts +15 -0
  212. package/dist/core/InteractionStateMachine.d.ts +199 -0
  213. package/dist/core/PathElement.d.ts +84 -0
  214. package/dist/core/PenToolManager.d.ts +112 -0
  215. package/dist/core/PinchHandler.d.ts +32 -0
  216. package/dist/core/ResizeHandler.d.ts +51 -0
  217. package/dist/core/ResizePipeline.d.ts +83 -0
  218. package/dist/core/ResizeUtils.d.ts +17 -0
  219. package/dist/core/RotationAnchorResolver.d.ts +60 -0
  220. package/dist/core/RotationUtils.d.ts +28 -0
  221. package/dist/core/SelectionRenderer.d.ts +24 -0
  222. package/dist/core/ShapeElement.d.ts +121 -0
  223. package/dist/core/SpacingSystem.d.ts +73 -0
  224. package/dist/core/SpatialGrid.d.ts +53 -0
  225. package/dist/core/TextElement.d.ts +80 -0
  226. package/dist/core/TextMetrics.d.ts +117 -0
  227. package/dist/core/Transform.d.ts +158 -0
  228. package/dist/core/TransformConverter.d.ts +16 -0
  229. package/dist/core/TransformHandles.d.ts +55 -0
  230. package/dist/core/artboardReducer.d.ts +46 -0
  231. package/dist/effects/DistressGenerator.d.ts +26 -0
  232. package/dist/effects/DistressTextureCache.d.ts +49 -0
  233. package/dist/effects/distress-presets.d.ts +86 -0
  234. package/dist/effects/distress-textures.d.ts +34 -0
  235. package/dist/effects/distress-utils.d.ts +39 -0
  236. package/dist/effects/mask-presets.d.ts +36 -0
  237. package/dist/fonts/google-fonts.d.ts +48 -0
  238. package/dist/google-fonts.json +1 -0
  239. package/dist/hooks/index.d.ts +42 -0
  240. package/dist/hooks/useArtboards.d.ts +71 -0
  241. package/dist/hooks/useAutoExport.d.ts +66 -0
  242. package/dist/hooks/useBreakpoint.d.ts +53 -0
  243. package/dist/hooks/useCanvasEvents.d.ts +8 -0
  244. package/dist/hooks/useCanvasReady.d.ts +22 -0
  245. package/dist/hooks/useClickOutside.d.ts +3 -0
  246. package/dist/hooks/useCommandHistory.d.ts +39 -0
  247. package/dist/hooks/useCommands.d.ts +47 -0
  248. package/dist/hooks/useContentReady.d.ts +18 -0
  249. package/dist/hooks/useElementById.d.ts +20 -0
  250. package/dist/hooks/useElementByName.d.ts +10 -0
  251. package/dist/hooks/useElementProperties.d.ts +29 -0
  252. package/dist/hooks/useExport.d.ts +89 -0
  253. package/dist/hooks/useImageBinding.d.ts +34 -0
  254. package/dist/hooks/useKeyboardShortcuts.d.ts +13 -0
  255. package/dist/hooks/useLayerDndKit.d.ts +24 -0
  256. package/dist/hooks/useLayerDragDrop.d.ts +58 -0
  257. package/dist/hooks/useLayerPreview.d.ts +31 -0
  258. package/dist/hooks/useLayerSelection.d.ts +76 -0
  259. package/dist/hooks/useLayers.d.ts +91 -0
  260. package/dist/hooks/usePerformance.d.ts +48 -0
  261. package/dist/hooks/useProjectLoader.d.ts +64 -0
  262. package/dist/hooks/useSelectedElement.d.ts +17 -0
  263. package/dist/hooks/useTextBinding.d.ts +26 -0
  264. package/dist/hooks/useTextToolbar.d.ts +61 -0
  265. package/dist/hooks/useViewport.d.ts +46 -0
  266. package/dist/icons/icon-data.d.ts +2 -0
  267. package/dist/icons/registry.d.ts +28 -0
  268. package/dist/index.d.ts +6 -0
  269. package/dist/index.js +2 -0
  270. package/dist/index.js.map +1 -0
  271. package/dist/index.mjs +1138 -0
  272. package/dist/index.mjs.map +1 -0
  273. package/dist/internals.d.ts +2 -0
  274. package/dist/internals.js +2 -0
  275. package/dist/internals.js.map +1 -0
  276. package/dist/internals.mjs +219 -0
  277. package/dist/internals.mjs.map +1 -0
  278. package/dist/kits/compose.d.ts +69 -0
  279. package/dist/kits/index.d.ts +21 -0
  280. package/dist/kits/presets.d.ts +40 -0
  281. package/dist/kits/registry.d.ts +33 -0
  282. package/dist/kits/sections.d.ts +119 -0
  283. package/dist/kits/serialization.d.ts +78 -0
  284. package/dist/kits/types.d.ts +129 -0
  285. package/dist/kits/validation.d.ts +36 -0
  286. package/dist/lib/utils.d.ts +2 -0
  287. package/dist/plugins/ElementTypePlugin.d.ts +90 -0
  288. package/dist/presets/artboard-color-presets.d.ts +22 -0
  289. package/dist/presets/tshirt-presets.d.ts +60 -0
  290. package/dist/rendering/CompositingRenderer.d.ts +33 -0
  291. package/dist/rendering/DistressTextureRenderer.d.ts +39 -0
  292. package/dist/rendering/ElementRenderUtils.d.ts +17 -0
  293. package/dist/rendering/MaskRenderer.d.ts +41 -0
  294. package/dist/rendering/PieceGuideRenderer.d.ts +177 -0
  295. package/dist/rendering/StrokeRenderer.d.ts +24 -0
  296. package/dist/rendering/canvas-renderer.d.ts +18 -0
  297. package/dist/rendering/element-serializer.d.ts +143 -0
  298. package/dist/rendering/image-renderer.d.ts +6 -0
  299. package/dist/rendering/knockout-utils.d.ts +48 -0
  300. package/dist/rendering/mask-utils.d.ts +65 -0
  301. package/dist/rendering/renderer-types.d.ts +79 -0
  302. package/dist/rendering/rich-text-renderer.d.ts +43 -0
  303. package/dist/rendering/serialize-for-server.d.ts +45 -0
  304. package/dist/rendering/shape-renderer.d.ts +6 -0
  305. package/dist/rendering/stroke-utils.d.ts +18 -0
  306. package/dist/rendering/text-renderer.d.ts +71 -0
  307. package/dist/rendering/transform-renderer.d.ts +33 -0
  308. package/dist/services/AutoExportManager.d.ts +107 -0
  309. package/dist/services/falApi.d.ts +63 -0
  310. package/dist/services/nounProjectApi.d.ts +90 -0
  311. package/dist/services/recraftApi.d.ts +65 -0
  312. package/dist/services/runwareApi.d.ts +69 -0
  313. package/dist/state/CanvasStateV1.d.ts +373 -0
  314. package/dist/state/index.d.ts +10 -0
  315. package/dist/style.css +1 -0
  316. package/dist/taco-reference-cropped.jpg +0 -0
  317. package/dist/testing/MockEditorProvider.d.ts +49 -0
  318. package/dist/testing/index.d.ts +25 -0
  319. package/dist/testing/utils.d.ts +128 -0
  320. package/dist/testing.d.ts +2 -0
  321. package/dist/testing.js +2 -0
  322. package/dist/testing.js.map +1 -0
  323. package/dist/testing.mjs +140 -0
  324. package/dist/testing.mjs.map +1 -0
  325. package/dist/textures/glass-frame.svg +32 -0
  326. package/dist/theme.d.ts +99 -0
  327. package/dist/themes/index.d.ts +23 -0
  328. package/dist/transforms/ArchTransform.d.ts +14 -0
  329. package/dist/transforms/AscendTransform.d.ts +14 -0
  330. package/dist/transforms/CircleTransform.d.ts +51 -0
  331. package/dist/transforms/CustomTransform.d.ts +81 -0
  332. package/dist/transforms/FlagTransform.d.ts +14 -0
  333. package/dist/transforms/LeanTransform.d.ts +14 -0
  334. package/dist/transforms/WaveTransform.d.ts +16 -0
  335. package/dist/transforms/defaults.d.ts +33 -0
  336. package/dist/transforms/index.d.ts +10 -0
  337. package/dist/transforms/registry.d.ts +51 -0
  338. package/dist/types/capabilities.d.ts +50 -0
  339. package/dist/types/guards.d.ts +31 -0
  340. package/dist/types/index.d.ts +765 -0
  341. package/dist/types/public.d.ts +31 -0
  342. package/dist/types/react.d.ts +132 -0
  343. package/dist/utils/ArtworkPlacement.d.ts +97 -0
  344. package/dist/utils/ElementPreviewRenderer.d.ts +19 -0
  345. package/dist/utils/ExportManager.d.ts +208 -0
  346. package/dist/utils/FontAnalyzer.d.ts +137 -0
  347. package/dist/utils/GlyphRenderer.d.ts +55 -0
  348. package/dist/utils/GoogleFontsService.d.ts +37 -0
  349. package/dist/utils/ImageLoader.d.ts +124 -0
  350. package/dist/utils/ImportManager.d.ts +72 -0
  351. package/dist/utils/MonotypeCategoryMapping.d.ts +36 -0
  352. package/dist/utils/MonotypeService.d.ts +148 -0
  353. package/dist/utils/PerformanceMonitor.d.ts +54 -0
  354. package/dist/utils/TextureManager.d.ts +60 -0
  355. package/dist/utils/UnifiedFontService.d.ts +117 -0
  356. package/dist/utils/WorkerExportManager.d.ts +185 -0
  357. package/dist/utils/clickProtection.d.ts +39 -0
  358. package/dist/utils/cn.d.ts +4 -0
  359. package/dist/utils/colorConversion.d.ts +101 -0
  360. package/dist/utils/documentColors.d.ts +108 -0
  361. package/dist/utils/featureApplied.d.ts +14 -0
  362. package/dist/utils/google-fonts-loader.d.ts +67 -0
  363. package/dist/utils/logger.d.ts +66 -0
  364. package/dist/utils/selectionPreservation.d.ts +42 -0
  365. package/dist/utils/textCursorUtils.d.ts +39 -0
  366. package/dist/utils/textUtils.d.ts +11 -0
  367. package/dist/workers/export-protocol.d.ts +119 -0
  368. package/dist/workers/export-worker.bundle.string.d.ts +2 -0
  369. package/dist/workers/export-worker.d.ts +5 -0
  370. package/package.json +201 -0
@@ -0,0 +1,1077 @@
1
+ import { jsx as V } from "react/jsx-runtime";
2
+ import { useRef as ae, useState as p, useCallback as l, useEffect as M, createContext as J, useContext as Y, useMemo as j } from "react";
3
+ import { c as Ce, ai as Xe, b3 as Je, b4 as Ye, G as ke, b5 as je, b6 as Qe, b7 as qe, b8 as Ke, b9 as Me, F as et, ba as tt, bb as ot, bc as nt, ad as rt, ag as Fe, I as it, f as ct, S as dt, A as st, W as ge } from "./HybridHistoryManager-BV6XV0nD.js";
4
+ const de = Ce("useCommandHistory");
5
+ function at(t, e, n, r) {
6
+ const c = ae(new Xe(n)), [o, d] = p({
7
+ canUndo: !1,
8
+ canRedo: !1,
9
+ // Per-artboard state for the active artboard
10
+ canUndoActiveArtboard: !1,
11
+ canRedoActiveArtboard: !1
12
+ }), i = l(() => {
13
+ const s = c.current, f = n.getActiveArtboardId();
14
+ d({
15
+ canUndo: s.canUndo(),
16
+ canRedo: s.canRedo(),
17
+ // Per-artboard state - only check active artboard's history
18
+ canUndoActiveArtboard: f ? s.canUndoArtboard(f) : !1,
19
+ canRedoActiveArtboard: f ? s.canRedoArtboard(f) : !1
20
+ });
21
+ }, [n]), g = l(
22
+ (s, f) => {
23
+ const k = new Je(
24
+ f.id,
25
+ s || null,
26
+ f,
27
+ (R) => {
28
+ e((B) => B.map((z) => z.id === R.id ? R : z));
29
+ }
30
+ ), I = n.getArtboardIdForElement(f.id);
31
+ if (I)
32
+ c.current.executeOnArtboard(I, k);
33
+ else {
34
+ const R = n.getActiveArtboardId();
35
+ R && c.current.executeOnArtboard(R, k);
36
+ }
37
+ i();
38
+ },
39
+ [e, n, i]
40
+ ), P = l(
41
+ (s, f, k, I) => {
42
+ const R = f || n.getActiveArtboardId();
43
+ if (!R) {
44
+ de.warn("No active artboard to add element to");
45
+ return;
46
+ }
47
+ const B = new Ye(
48
+ s,
49
+ (z) => {
50
+ const L = z;
51
+ e((U) => {
52
+ if (I) {
53
+ const D = U.findIndex((C) => C.id === I);
54
+ if (D !== -1) {
55
+ const C = [...U];
56
+ return C.splice(D, 0, L), C;
57
+ }
58
+ }
59
+ if (k) {
60
+ const D = U.findIndex((C) => C.id === k);
61
+ if (D !== -1) {
62
+ const C = [...U];
63
+ return C.splice(D + 1, 0, L), C;
64
+ }
65
+ for (let C = 0; C < U.length; C++) {
66
+ const $ = U[C];
67
+ if ($ instanceof ke && $.children) {
68
+ const Q = $.children.findIndex((G) => G.id === k);
69
+ if (Q !== -1) {
70
+ const G = $.clone();
71
+ G.children.splice(Q + 1, 0, L);
72
+ const X = [...U];
73
+ return X[C] = G, X;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ return [...U, L];
79
+ }), n.addElementToArtboard(z.id, R);
80
+ },
81
+ (z) => {
82
+ e((L) => L.filter((U) => U.id !== z)), n.removeElementFromArtboard(z);
83
+ }
84
+ );
85
+ c.current.executeOnArtboard(R, B), i();
86
+ },
87
+ [e, n, i]
88
+ ), O = l(
89
+ (s) => {
90
+ const f = n.getArtboardIdForElement(s.id);
91
+ if (!f) {
92
+ de.warn("Element not found in any artboard");
93
+ return;
94
+ }
95
+ const k = new je(
96
+ s,
97
+ (I) => {
98
+ e((R) => [...R, I]), n.addElementToArtboard(I.id, f);
99
+ },
100
+ (I) => {
101
+ e((R) => R.filter((B) => B.id !== I)), n.removeElementFromArtboard(I);
102
+ }
103
+ );
104
+ c.current.executeOnArtboard(f, k), i();
105
+ },
106
+ [e, n, i]
107
+ ), x = l(
108
+ (s) => {
109
+ const f = new Qe(s, n);
110
+ c.current.executeGlobal(f), i(), r == null || r();
111
+ },
112
+ [n, i, r]
113
+ ), h = l(
114
+ (s) => {
115
+ const f = new qe(s, n);
116
+ c.current.executeGlobal(f), i(), r == null || r();
117
+ },
118
+ [n, i, r]
119
+ ), E = l(
120
+ (s, f, k) => {
121
+ const I = new Ke(s, f, k, n);
122
+ c.current.executeGlobal(I), i(), r == null || r();
123
+ },
124
+ [n, i, r]
125
+ ), w = l(
126
+ (s) => {
127
+ if (s.length === 0)
128
+ return;
129
+ const f = n.getActiveArtboardId();
130
+ if (!f) {
131
+ de.warn("No active artboard for batch execution");
132
+ return;
133
+ }
134
+ const k = s.map((I) => new class extends Object {
135
+ execute() {
136
+ I.execute();
137
+ }
138
+ undo() {
139
+ I.undo();
140
+ }
141
+ }());
142
+ c.current.executeBatchOnArtboard(f, k), i();
143
+ },
144
+ [n, i]
145
+ ), m = l(() => {
146
+ c.current.undo() && (i(), r == null || r());
147
+ }, [i, r]), u = l(() => {
148
+ c.current.redo() && (i(), r == null || r());
149
+ }, [i, r]), F = l(() => {
150
+ const s = n.getActiveArtboardId();
151
+ s && c.current.undoArtboard(s) && (i(), r == null || r());
152
+ }, [n, i, r]), A = l(() => {
153
+ const s = n.getActiveArtboardId();
154
+ s && c.current.redoArtboard(s) && (i(), r == null || r());
155
+ }, [n, i, r]), b = l(() => {
156
+ c.current.clear(), i();
157
+ }, [i]), _ = l(
158
+ (s) => {
159
+ c.current.clearArtboardHistory(s), i();
160
+ },
161
+ [i]
162
+ ), H = ae(null);
163
+ M(() => {
164
+ const s = n.getActiveArtboardId();
165
+ s !== H.current && (H.current = s, i());
166
+ });
167
+ const W = l(
168
+ (s, f, k) => {
169
+ const I = t.map((z) => z.id), R = n.getArtboardIdForElement(s);
170
+ if (!R) {
171
+ de.warn("Element not found in any artboard");
172
+ return;
173
+ }
174
+ const B = new Me(s, f, k, I, (z) => {
175
+ e((L) => {
176
+ const U = new Map(L.map((D) => [D.id, D]));
177
+ return z.map((D) => U.get(D)).filter(Boolean);
178
+ });
179
+ });
180
+ c.current.executeOnArtboard(R, B), i();
181
+ },
182
+ [t, e, n, i]
183
+ );
184
+ return {
185
+ // Element operations
186
+ executeElementUpdate: g,
187
+ executeAddElement: P,
188
+ executeRemoveElement: O,
189
+ executeReorderElement: W,
190
+ // Batch operations
191
+ executeCommandBatch: w,
192
+ // Artboard operations
193
+ executeCreateArtboard: x,
194
+ executeDeleteArtboard: h,
195
+ executeUpdateArtboard: E,
196
+ // Undo/redo (smart - considers last operation and active artboard)
197
+ undo: m,
198
+ redo: u,
199
+ // Undo/redo for active artboard only (element operations)
200
+ undoActiveArtboard: F,
201
+ redoActiveArtboard: A,
202
+ clearHistory: b,
203
+ clearArtboardHistory: _,
204
+ // State (smart - considers last operation)
205
+ canUndo: o.canUndo,
206
+ canRedo: o.canRedo,
207
+ // State for active artboard only
208
+ canUndoActiveArtboard: o.canUndoActiveArtboard,
209
+ canRedoActiveArtboard: o.canRedoActiveArtboard,
210
+ historyManager: c.current
211
+ };
212
+ }
213
+ function K(t) {
214
+ return t && "fontSize" in t && "color" in t && "fontFamily" in t;
215
+ }
216
+ function lt(t, e) {
217
+ const [n, r] = p(32), [c, o] = p("#333333"), [d, i] = p("Arial"), [g, P] = p("center");
218
+ M(() => {
219
+ if (t && K(t)) {
220
+ const m = t.transformType === "circle" && "getEffectiveFontSize" in t ? Math.round(t.getEffectiveFontSize()) : Math.round(t.fontSize), u = t.color, F = t.fontFamily, A = t.textAlign;
221
+ r((b) => b !== m ? m : b), o((b) => b !== u ? u : b), i((b) => b !== F ? F : b), P((b) => b !== A ? A : b);
222
+ }
223
+ }, [t]);
224
+ const O = l(
225
+ (m) => {
226
+ if (!t || !K(t)) return;
227
+ const u = Math.max(tt, Math.min(ot, n + m));
228
+ r(u);
229
+ const F = t.clone();
230
+ F.transformType === "circle" && "setEffectiveFontSize" in F ? F.setEffectiveFontSize(u) : F.setFontSize(u), e(F);
231
+ },
232
+ [t, n, e]
233
+ ), x = l(
234
+ (m) => {
235
+ if (!t || !K(t)) return;
236
+ r(m);
237
+ const u = t.clone();
238
+ u.transformType === "circle" && "setEffectiveFontSize" in u ? u.setEffectiveFontSize(m) : u.setFontSize(m), e(u);
239
+ },
240
+ [t, e]
241
+ ), h = l(
242
+ (m) => {
243
+ if (!t || !K(t)) return;
244
+ o(m);
245
+ const u = t.clone();
246
+ if (u.color = m, u.richText)
247
+ for (const F of u.richText.spans)
248
+ F.style.color = void 0;
249
+ e(u);
250
+ },
251
+ [t, e]
252
+ ), E = l(
253
+ (m) => {
254
+ if (!t || !K(t)) return;
255
+ const u = t.fontFamily;
256
+ u !== m && et.clearCache(u), i(m);
257
+ const F = t.clone();
258
+ F.fontFamily = m, e(F);
259
+ },
260
+ [t, e]
261
+ ), w = l(
262
+ (m) => {
263
+ if (!t || !K(t)) return;
264
+ P(m);
265
+ const u = t.clone();
266
+ u.textAlign = m, e(u);
267
+ },
268
+ [t, e]
269
+ );
270
+ return {
271
+ // State
272
+ fontSize: n,
273
+ fontColor: c,
274
+ fontFamily: d,
275
+ textAlign: g,
276
+ // State setters (for UI only)
277
+ setFontSize: r,
278
+ setFontColor: o,
279
+ setFontFamily: i,
280
+ setTextAlign: P,
281
+ // Update functions (update element + UI)
282
+ updateFontSize: O,
283
+ setFontSizeValue: x,
284
+ updateFontColor: h,
285
+ updateFontFamily: E,
286
+ updateTextAlign: w
287
+ };
288
+ }
289
+ const ze = "data-preserve-selection";
290
+ function mt(t) {
291
+ if (!(t instanceof Element))
292
+ return !1;
293
+ let e = t;
294
+ const n = [];
295
+ for (; e; ) {
296
+ const r = e.id ? `#${e.id}` : "", c = e.className ? `.${String(e.className).split(" ").slice(0, 2).join(".")}` : "";
297
+ if (n.push(`${e.tagName.toLowerCase()}${r}${c}`), e.hasAttribute(ze))
298
+ return !0;
299
+ const o = e.getAttribute("role");
300
+ if (o === "dialog" || o === "alertdialog" || o === "menu" || o === "listbox")
301
+ return !0;
302
+ const d = e.getAttribute("data-slot");
303
+ if (d && (d.includes("popover") || d.includes("dialog")) || e.hasAttribute("data-radix-popper-content-wrapper"))
304
+ return !0;
305
+ e = e.parentElement;
306
+ }
307
+ return !1;
308
+ }
309
+ const gt = {
310
+ [ze]: ""
311
+ }, Ue = J(null), ut = 0.1, ft = 4, Pe = 0.25, ht = ({
312
+ children: t,
313
+ artboardManager: e,
314
+ canvasRef: n,
315
+ viewPadding: r = 0.9
316
+ }) => {
317
+ const [c, o] = p(1), [d, i] = p({ x: 0, y: 0 }), [g, P] = p(!1), [O, x] = p(1), h = l(() => {
318
+ x(1), i({ x: 0, y: 0 });
319
+ }, []), E = l(() => {
320
+ o((A) => Math.min(A + Pe, ft));
321
+ }, []), w = l(() => {
322
+ o((A) => Math.max(A - Pe, ut));
323
+ }, []), m = l(() => {
324
+ const A = e.getActiveArtboard();
325
+ if (!A || !n.current) return;
326
+ let b = n.current.parentElement, _ = 0, H = 0;
327
+ for (; b && (_ = b.clientWidth, H = b.clientHeight, !(_ > 0 && H > 0)); )
328
+ b = b.parentElement;
329
+ if (!_ || !H) return;
330
+ const W = Math.min(
331
+ _ * r / A.width,
332
+ H * r / A.height,
333
+ 1
334
+ // Never zoom in beyond 100%
335
+ );
336
+ o(W), i({ x: 0, y: 0 });
337
+ }, [e, n, r]), u = l(() => {
338
+ o(1), i({ x: 0, y: 0 });
339
+ }, []), F = j(
340
+ () => ({
341
+ zoom: c,
342
+ panOffset: d,
343
+ isPanning: g,
344
+ zoomIn: E,
345
+ zoomOut: w,
346
+ zoomToFit: m,
347
+ resetView: u,
348
+ setZoom: o,
349
+ setPanOffset: i,
350
+ setIsPanning: P,
351
+ userZoom: O,
352
+ setUserZoom: x,
353
+ resetUserView: h
354
+ }),
355
+ [c, d, g, E, w, m, u, O, h]
356
+ );
357
+ return /* @__PURE__ */ V(Ue.Provider, { value: F, children: t });
358
+ };
359
+ function At() {
360
+ const t = Y(Ue);
361
+ if (!t)
362
+ throw new Error("useViewportContext must be used within a ViewportProvider (or EditorProvider)");
363
+ return t;
364
+ }
365
+ const Oe = J(null), pt = ({ children: t }) => {
366
+ const [e, n] = p(null), [r, c] = p([]), [o, d] = p(null), [i, g] = p(null), [P, O] = p(!1), x = l((w) => {
367
+ n(w);
368
+ }, []), h = l((w) => {
369
+ d(w);
370
+ }, []), E = j(
371
+ () => ({
372
+ selectedId: e,
373
+ multiSelection: r,
374
+ activeChildElement: o,
375
+ hoveredElementId: i,
376
+ hideHandles: P,
377
+ setSelectedId: n,
378
+ setMultiSelection: c,
379
+ setHoveredElementId: g,
380
+ setHideHandles: O,
381
+ handleSelectionChange: x,
382
+ handleActiveChildChange: h
383
+ }),
384
+ [
385
+ e,
386
+ r,
387
+ o,
388
+ i,
389
+ P,
390
+ x,
391
+ h
392
+ ]
393
+ );
394
+ return /* @__PURE__ */ V(Oe.Provider, { value: E, children: t });
395
+ };
396
+ function xt() {
397
+ const t = Y(Oe);
398
+ if (!t)
399
+ throw new Error("useSelectionContext must be used within a SelectionProvider (or EditorProvider)");
400
+ return t;
401
+ }
402
+ const Ve = J(null), yt = ({ children: t, value: e }) => {
403
+ const n = j(
404
+ () => ({
405
+ undo: e.undo,
406
+ redo: e.redo,
407
+ canUndo: e.canUndo,
408
+ canRedo: e.canRedo,
409
+ undoActiveArtboard: e.undoActiveArtboard,
410
+ redoActiveArtboard: e.redoActiveArtboard,
411
+ canUndoActiveArtboard: e.canUndoActiveArtboard,
412
+ canRedoActiveArtboard: e.canRedoActiveArtboard
413
+ }),
414
+ [
415
+ e.undo,
416
+ e.redo,
417
+ e.canUndo,
418
+ e.canRedo,
419
+ e.undoActiveArtboard,
420
+ e.redoActiveArtboard,
421
+ e.canUndoActiveArtboard,
422
+ e.canRedoActiveArtboard
423
+ ]
424
+ );
425
+ return /* @__PURE__ */ V(Ve.Provider, { value: n, children: t });
426
+ };
427
+ function Pt() {
428
+ const t = Y(Ve);
429
+ if (!t)
430
+ throw new Error("useHistoryContext must be used within a HistoryProvider (or EditorProvider)");
431
+ return t;
432
+ }
433
+ const He = J(null), wt = ({ children: t }) => {
434
+ const [e, n] = p(null), [r, c] = p(!1), [o, d] = p(0), [i, g] = p(!1), [P, O] = p(!1), x = j(
435
+ () => ({
436
+ expandedPanelType: e,
437
+ setExpandedPanelType: n,
438
+ isToolbarMenuOpen: r,
439
+ setIsToolbarMenuOpen: c,
440
+ textSelectionVersion: o,
441
+ setTextSelectionVersion: d,
442
+ isCanvasReady: i,
443
+ setCanvasReady: g,
444
+ isRotating: P,
445
+ setIsRotating: O
446
+ }),
447
+ [e, r, o, i, P]
448
+ );
449
+ return /* @__PURE__ */ V(He.Provider, { value: x, children: t });
450
+ };
451
+ function bt() {
452
+ const t = Y(He);
453
+ if (!t)
454
+ throw new Error("useToolStateContext must be used within a ToolStateProvider (or EditorProvider)");
455
+ return t;
456
+ }
457
+ const De = J(null), Et = ({ children: t, value: e }) => {
458
+ const n = j(
459
+ () => ({
460
+ elements: e.elements,
461
+ elementStore: e.elementStore,
462
+ artboards: e.artboards,
463
+ artboardManager: e.artboardManager,
464
+ artboardVersion: e.artboardVersion,
465
+ setElements: e.setElements,
466
+ refreshArtboards: e.refreshArtboards,
467
+ getElementById: e.getElementById,
468
+ handleAddElement: e.handleAddElement,
469
+ handleElementUpdate: e.handleElementUpdate,
470
+ handleLoadWorkspace: e.handleLoadWorkspace,
471
+ handleCopyElements: e.handleCopyElements,
472
+ handlePasteElements: e.handlePasteElements,
473
+ fontSize: e.fontSize,
474
+ fontColor: e.fontColor,
475
+ fontFamily: e.fontFamily,
476
+ textAlign: e.textAlign,
477
+ updateFontSize: e.updateFontSize,
478
+ setFontSizeValue: e.setFontSizeValue,
479
+ updateFontColor: e.updateFontColor,
480
+ updateFontFamily: e.updateFontFamily,
481
+ updateTextAlign: e.updateTextAlign,
482
+ canvasRef: e.canvasRef,
483
+ canvasEditorRef: e.canvasEditorRef
484
+ }),
485
+ [
486
+ e.elements,
487
+ e.elementStore,
488
+ e.artboards,
489
+ e.artboardManager,
490
+ e.artboardVersion,
491
+ e.setElements,
492
+ e.refreshArtboards,
493
+ e.getElementById,
494
+ e.handleAddElement,
495
+ e.handleElementUpdate,
496
+ e.handleLoadWorkspace,
497
+ e.handleCopyElements,
498
+ e.handlePasteElements,
499
+ e.fontSize,
500
+ e.fontColor,
501
+ e.fontFamily,
502
+ e.textAlign,
503
+ e.updateFontSize,
504
+ e.setFontSizeValue,
505
+ e.updateFontColor,
506
+ e.updateFontFamily,
507
+ e.updateTextAlign,
508
+ e.canvasRef,
509
+ e.canvasEditorRef
510
+ ]
511
+ );
512
+ return /* @__PURE__ */ V(De.Provider, { value: n, children: t });
513
+ };
514
+ function Ct() {
515
+ const t = Y(De);
516
+ if (!t)
517
+ throw new Error("useElementsContext must be used within an ElementsProvider (or EditorProvider)");
518
+ return t;
519
+ }
520
+ const Le = J(null), St = ({ children: t, value: e }) => {
521
+ const n = j(
522
+ () => ({
523
+ executeElementUpdate: e.executeElementUpdate,
524
+ executeAddElement: e.executeAddElement,
525
+ executeRemoveElement: e.executeRemoveElement,
526
+ executeReorderElement: e.executeReorderElement,
527
+ executeCreateArtboard: e.executeCreateArtboard,
528
+ executeDeleteArtboard: e.executeDeleteArtboard,
529
+ executeUpdateArtboard: e.executeUpdateArtboard,
530
+ executeCommandBatch: e.executeCommandBatch,
531
+ undo: e.undo,
532
+ redo: e.redo,
533
+ canUndo: e.canUndo,
534
+ canRedo: e.canRedo,
535
+ undoActiveArtboard: e.undoActiveArtboard,
536
+ redoActiveArtboard: e.redoActiveArtboard,
537
+ canUndoActiveArtboard: e.canUndoActiveArtboard,
538
+ canRedoActiveArtboard: e.canRedoActiveArtboard,
539
+ historyManager: e.historyManager
540
+ }),
541
+ [
542
+ e.executeElementUpdate,
543
+ e.executeAddElement,
544
+ e.executeRemoveElement,
545
+ e.executeReorderElement,
546
+ e.executeCreateArtboard,
547
+ e.executeDeleteArtboard,
548
+ e.executeUpdateArtboard,
549
+ e.executeCommandBatch,
550
+ e.undo,
551
+ e.redo,
552
+ e.canUndo,
553
+ e.canRedo,
554
+ e.undoActiveArtboard,
555
+ e.redoActiveArtboard,
556
+ e.canUndoActiveArtboard,
557
+ e.canRedoActiveArtboard,
558
+ e.historyManager
559
+ ]
560
+ );
561
+ return /* @__PURE__ */ V(Le.Provider, { value: n, children: t });
562
+ };
563
+ function kt() {
564
+ const t = Y(Le);
565
+ if (!t)
566
+ throw new Error("useCommandContext must be used within a CommandProvider (or EditorProvider)");
567
+ return t;
568
+ }
569
+ const It = Ce("EditorContext"), We = J(null), Tt = ({ children: t, artboardManager: e, canvasRef: n, canvasEditorRef: r }) => {
570
+ const c = At(), o = xt(), d = bt(), [i, g] = p(
571
+ () => e.getAllArtboards()
572
+ ), [P, O] = p(0), [x, h] = p(
573
+ () => new Fe()
574
+ ), E = j(() => x.toArray(), [x]), w = l((a) => {
575
+ h((y) => {
576
+ const S = y.toArray(), T = typeof a == "function" ? a(S) : a;
577
+ return T === S ? y : Fe.fromArray(T);
578
+ });
579
+ }, []), m = l(
580
+ (a) => x.get(a),
581
+ [x]
582
+ ), [u, F] = p([]), A = o.selectedId ? x.get(o.selectedId) : void 0, b = l(() => {
583
+ g([...e.getAllArtboards()]), O((a) => a + 1);
584
+ }, [e]), {
585
+ historyManager: _,
586
+ executeElementUpdate: H,
587
+ executeAddElement: W,
588
+ executeRemoveElement: s,
589
+ executeReorderElement: f,
590
+ executeCommandBatch: k,
591
+ executeCreateArtboard: I,
592
+ executeDeleteArtboard: R,
593
+ executeUpdateArtboard: B,
594
+ undo: z,
595
+ redo: L,
596
+ canUndo: U,
597
+ canRedo: D,
598
+ undoActiveArtboard: C,
599
+ redoActiveArtboard: $,
600
+ canUndoActiveArtboard: Q,
601
+ canRedoActiveArtboard: G
602
+ } = at(
603
+ E,
604
+ w,
605
+ e,
606
+ b
607
+ ), X = l(
608
+ (a) => {
609
+ const y = x.get(a.id);
610
+ H(y, a);
611
+ },
612
+ [x, H]
613
+ ), Be = l(
614
+ (a) => {
615
+ if (!A || !(A instanceof ke))
616
+ return;
617
+ const y = A.clone(), S = y.children.findIndex(
618
+ (T) => T.id === a.id
619
+ );
620
+ S >= 0 && (y.children[S] = a, X(y));
621
+ },
622
+ [A, X]
623
+ ), Ze = o.activeChildElement || A, _e = o.activeChildElement ? Be : X, {
624
+ fontSize: fe,
625
+ fontColor: he,
626
+ fontFamily: Ae,
627
+ textAlign: pe,
628
+ updateFontSize: xe,
629
+ setFontSizeValue: ye,
630
+ updateFontColor: we,
631
+ updateFontFamily: be,
632
+ updateTextAlign: Ee
633
+ } = lt(Ze, _e), Se = l(
634
+ async (a, y) => {
635
+ var ve;
636
+ const S = e.getActiveArtboardId();
637
+ if (!S) {
638
+ alert("Please create or select an artboard first");
639
+ return;
640
+ }
641
+ const T = `element-${Date.now()}`, v = e.getActiveArtboard(), ee = v ? v.x + v.width / 2 : window.innerWidth / 2, te = v ? v.y + v.height / 2 : window.innerHeight / 2, N = ((ve = r.current) == null ? void 0 : ve.getZoom()) || c.zoom || 1;
642
+ if (a === "image") {
643
+ const ce = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", q = new it({
644
+ id: T,
645
+ x: ee,
646
+ y: te,
647
+ imageUrl: ce,
648
+ transformData: {
649
+ type: "image",
650
+ width: 200 / N,
651
+ height: 200 / N,
652
+ cropX: 0,
653
+ cropY: 0,
654
+ cropWidth: 1,
655
+ cropHeight: 1,
656
+ flipHorizontal: !1,
657
+ flipVertical: !1,
658
+ borderRadius: 0
659
+ }
660
+ });
661
+ W(q, S), o.setSelectedId(q.id);
662
+ return;
663
+ }
664
+ let oe;
665
+ const Z = {
666
+ text: "custom",
667
+ circle: "circle",
668
+ wave: "wave",
669
+ arch: "arch",
670
+ shape: "shape"
671
+ }[a] || "custom", re = ct(Z);
672
+ if (!re || !re.Component)
673
+ return;
674
+ const ie = e.getActiveArtboard(), Ge = ie ? Math.min(ie.width, ie.height) * 0.1 : 80, me = ie ? ie.width * 0.5 : 300;
675
+ if (a === "shape") {
676
+ const ce = (y == null ? void 0 : y.shapeType) ?? "rectangle";
677
+ let q = 200 / N, ue = 200 / N;
678
+ ce === "ellipse" ? (q = 150 / N, ue = 250 / N) : ce === "line" && (q = 300 / N, ue = 8 / N), oe = new dt({
679
+ id: T,
680
+ x: ee,
681
+ y: te,
682
+ transformData: {
683
+ type: "shape",
684
+ shapeType: ce,
685
+ width: q,
686
+ height: ue,
687
+ fillColor: "#3b82f6",
688
+ fillOpacity: 1
689
+ }
690
+ });
691
+ } else
692
+ oe = new re.Component({
693
+ id: T,
694
+ text: "New Text",
695
+ x: ee,
696
+ y: te,
697
+ fontSize: Ge,
698
+ fontFamily: "Poppins",
699
+ color: "#000000",
700
+ transformData: Z === "arch" ? {
701
+ type: "arch",
702
+ width: me,
703
+ archHeight: st.archHeight
704
+ } : Z === "wave" ? {
705
+ type: "wave",
706
+ width: me,
707
+ amplitude: ge.amplitude,
708
+ frequency: ge.frequency
709
+ } : Z === "circle" ? {
710
+ type: "circle",
711
+ radius: me / 2
712
+ } : void 0
713
+ });
714
+ e.addElementToArtboard(T, S), W(
715
+ oe,
716
+ S,
717
+ o.selectedId || void 0
718
+ ), o.setSelectedId(T);
719
+ },
720
+ [e, W, o, c.zoom, r]
721
+ ), Ie = l(() => {
722
+ const a = [];
723
+ if (o.multiSelection.length > 0) {
724
+ const y = E.filter(
725
+ (S) => o.multiSelection.includes(S.id)
726
+ );
727
+ a.push(...y);
728
+ } else A && a.push(A);
729
+ if (a.length > 0) {
730
+ const y = a.map((S) => S.clone());
731
+ F(y);
732
+ }
733
+ }, [A, o.multiSelection, E]), Te = l(() => {
734
+ if (u.length === 0) return;
735
+ const a = [], y = 30, S = 30;
736
+ u.forEach((T) => {
737
+ const v = x.get(T.id), ee = v ? v.x : T.x, te = v ? v.y : T.y, N = T.toJSON();
738
+ delete N.id;
739
+ const oe = T.constructor, ne = new oe(N);
740
+ ne.x = ee + y, ne.y = te + S;
741
+ let Z = null;
742
+ if (v && (Z = e.getArtboardIdForElement(
743
+ v.id
744
+ )), Z || (Z = e.getActiveArtboardId()), !Z) {
745
+ It.warn("[handlePasteElements] No artboard found for pasting");
746
+ return;
747
+ }
748
+ const re = v ? v.id : void 0;
749
+ W(ne, Z, re), a.push(ne.id);
750
+ }), a.length === 1 ? o.handleSelectionChange(a[0]) : a.length > 1 && o.setMultiSelection(a);
751
+ }, [
752
+ u,
753
+ x,
754
+ e,
755
+ W,
756
+ o
757
+ ]), le = l(() => {
758
+ if (d.expandedPanelType === "crop" && (A == null ? void 0 : A.transformType) === "image") {
759
+ const a = A;
760
+ if (a.isCropping) {
761
+ const y = a.clone();
762
+ y.exitCropMode(), H(a, y);
763
+ }
764
+ }
765
+ d.setExpandedPanelType(null);
766
+ }, [
767
+ d.expandedPanelType,
768
+ d.setExpandedPanelType,
769
+ A,
770
+ H
771
+ ]);
772
+ M(() => {
773
+ const a = (y) => {
774
+ const S = y.target;
775
+ if (S.tagName === "CANVAS" || mt(S))
776
+ return;
777
+ const v = document.activeElement;
778
+ if (v != null && v.hasAttribute("data-preserve-selection")) {
779
+ v.blur();
780
+ return;
781
+ }
782
+ if (d.expandedPanelType !== null) {
783
+ le();
784
+ return;
785
+ }
786
+ o.setSelectedId(null), o.setMultiSelection([]);
787
+ };
788
+ return document.addEventListener("pointerdown", a), () => document.removeEventListener("pointerdown", a);
789
+ }, [d.expandedPanelType, le, o]);
790
+ const Re = l(
791
+ (a, y, S) => {
792
+ e.clear(), a.forEach((T) => {
793
+ e.createArtboard(T.toJSON());
794
+ }), S && e.setActiveArtboard(S), g([...e.getAllArtboards()]), O((T) => T + 1), w(y), o.setSelectedId(null);
795
+ },
796
+ [e, o, w]
797
+ ), $e = {
798
+ // From ViewportContext
799
+ zoom: c.zoom,
800
+ panOffset: c.panOffset,
801
+ isPanning: c.isPanning,
802
+ zoomIn: c.zoomIn,
803
+ zoomOut: c.zoomOut,
804
+ zoomToFit: c.zoomToFit,
805
+ resetView: c.resetView,
806
+ setZoom: c.setZoom,
807
+ setPanOffset: c.setPanOffset,
808
+ setIsPanning: c.setIsPanning,
809
+ // From SelectionContext
810
+ selectedId: o.selectedId,
811
+ multiSelection: o.multiSelection,
812
+ activeChildElement: o.activeChildElement,
813
+ hoveredElementId: o.hoveredElementId,
814
+ hideHandles: o.hideHandles,
815
+ setSelectedId: o.setSelectedId,
816
+ setMultiSelection: o.setMultiSelection,
817
+ setHoveredElementId: o.setHoveredElementId,
818
+ setHideHandles: o.setHideHandles,
819
+ handleSelectionChange: o.handleSelectionChange,
820
+ handleActiveChildChange: o.handleActiveChildChange,
821
+ // From ToolStateContext
822
+ expandedPanelType: d.expandedPanelType,
823
+ setExpandedPanelType: d.setExpandedPanelType,
824
+ isToolbarMenuOpen: d.isToolbarMenuOpen,
825
+ setIsToolbarMenuOpen: d.setIsToolbarMenuOpen,
826
+ textSelectionVersion: d.textSelectionVersion,
827
+ setTextSelectionVersion: d.setTextSelectionVersion,
828
+ isCanvasReady: d.isCanvasReady,
829
+ setCanvasReady: d.setCanvasReady,
830
+ isRotating: d.isRotating,
831
+ setIsRotating: d.setIsRotating,
832
+ // Cross-context handler
833
+ clearExpandedPanel: le,
834
+ // Core state (element/artboard domain)
835
+ artboardManager: e,
836
+ artboards: i,
837
+ elements: E,
838
+ elementStore: x,
839
+ getElementById: m,
840
+ // Derived state (cross-context)
841
+ selectedElement: A,
842
+ // Refs
843
+ canvasRef: n,
844
+ canvasEditorRef: r,
845
+ // Element setters
846
+ setElements: w,
847
+ // Artboard version counter
848
+ artboardVersion: P,
849
+ // Handlers
850
+ refreshArtboards: b,
851
+ handleElementUpdate: X,
852
+ handleAddElement: Se,
853
+ handleLoadWorkspace: Re,
854
+ handleCopyElements: Ie,
855
+ handlePasteElements: Te,
856
+ // Command history (undo/redo actions + execute functions)
857
+ historyManager: _,
858
+ executeElementUpdate: H,
859
+ executeAddElement: W,
860
+ executeRemoveElement: s,
861
+ executeReorderElement: f,
862
+ executeCommandBatch: k,
863
+ executeCreateArtboard: I,
864
+ executeDeleteArtboard: R,
865
+ executeUpdateArtboard: B,
866
+ undo: z,
867
+ redo: L,
868
+ canUndo: U,
869
+ canRedo: D,
870
+ undoActiveArtboard: C,
871
+ redoActiveArtboard: $,
872
+ canUndoActiveArtboard: Q,
873
+ canRedoActiveArtboard: G,
874
+ // Element properties
875
+ fontSize: fe,
876
+ fontColor: he,
877
+ fontFamily: Ae,
878
+ textAlign: pe,
879
+ updateFontSize: xe,
880
+ setFontSizeValue: ye,
881
+ updateFontColor: we,
882
+ updateFontFamily: be,
883
+ updateTextAlign: Ee
884
+ };
885
+ return /* @__PURE__ */ V(
886
+ yt,
887
+ {
888
+ value: {
889
+ undo: z,
890
+ redo: L,
891
+ canUndo: U,
892
+ canRedo: D,
893
+ undoActiveArtboard: C,
894
+ redoActiveArtboard: $,
895
+ canUndoActiveArtboard: Q,
896
+ canRedoActiveArtboard: G
897
+ },
898
+ children: /* @__PURE__ */ V(
899
+ Et,
900
+ {
901
+ value: {
902
+ elements: E,
903
+ elementStore: x,
904
+ artboards: i,
905
+ artboardManager: e,
906
+ artboardVersion: P,
907
+ setElements: w,
908
+ refreshArtboards: b,
909
+ getElementById: m,
910
+ handleAddElement: Se,
911
+ handleElementUpdate: X,
912
+ handleLoadWorkspace: Re,
913
+ handleCopyElements: Ie,
914
+ handlePasteElements: Te,
915
+ fontSize: fe,
916
+ fontColor: he,
917
+ fontFamily: Ae,
918
+ textAlign: pe,
919
+ updateFontSize: xe,
920
+ setFontSizeValue: ye,
921
+ updateFontColor: we,
922
+ updateFontFamily: be,
923
+ updateTextAlign: Ee,
924
+ canvasRef: n,
925
+ canvasEditorRef: r
926
+ },
927
+ children: /* @__PURE__ */ V(
928
+ St,
929
+ {
930
+ value: {
931
+ executeElementUpdate: H,
932
+ executeAddElement: W,
933
+ executeRemoveElement: s,
934
+ executeReorderElement: f,
935
+ executeCommandBatch: k,
936
+ executeCreateArtboard: I,
937
+ executeDeleteArtboard: R,
938
+ executeUpdateArtboard: B,
939
+ undo: z,
940
+ redo: L,
941
+ canUndo: U,
942
+ canRedo: D,
943
+ undoActiveArtboard: C,
944
+ redoActiveArtboard: $,
945
+ canUndoActiveArtboard: Q,
946
+ canRedoActiveArtboard: G,
947
+ historyManager: _
948
+ },
949
+ children: /* @__PURE__ */ V(We.Provider, { value: $e, children: t })
950
+ }
951
+ )
952
+ }
953
+ )
954
+ }
955
+ );
956
+ }, zt = ({
957
+ children: t,
958
+ initialArtboardConfig: e = {},
959
+ viewPadding: n = 0.9
960
+ }) => {
961
+ const [r] = p(() => {
962
+ const d = new rt(), i = {
963
+ name: e.name || "Artboard 1",
964
+ x: e.x ?? 0,
965
+ y: e.y ?? 0,
966
+ width: e.width ?? 1e3,
967
+ height: e.height ?? 1e3,
968
+ backgroundColor: e.backgroundColor || nt
969
+ };
970
+ return d.createArtboard(i), d;
971
+ }), c = ae(null), o = ae(null);
972
+ return /* @__PURE__ */ V(
973
+ ht,
974
+ {
975
+ artboardManager: r,
976
+ canvasRef: c,
977
+ viewPadding: n,
978
+ children: /* @__PURE__ */ V(pt, { children: /* @__PURE__ */ V(wt, { children: /* @__PURE__ */ V(
979
+ Tt,
980
+ {
981
+ artboardManager: r,
982
+ canvasRef: c,
983
+ canvasEditorRef: o,
984
+ children: t
985
+ }
986
+ ) }) })
987
+ }
988
+ );
989
+ }, Ut = () => {
990
+ const t = Y(We);
991
+ if (!t)
992
+ throw new Error("useEditor must be used within EditorProvider");
993
+ return t;
994
+ }, Ne = J(void 0);
995
+ function se() {
996
+ if (typeof window > "u")
997
+ return { theme: "light", resolvedTheme: "light", isDark: !1 };
998
+ const t = document.documentElement.classList.contains("dark"), e = document.documentElement.getAttribute("data-theme");
999
+ let n = t ? "dark" : "light";
1000
+ e && [
1001
+ "light",
1002
+ "dark",
1003
+ "axis-light",
1004
+ "axis-dark",
1005
+ "ocean-light",
1006
+ "ocean-dark",
1007
+ "sunset-light",
1008
+ "sunset-dark"
1009
+ ].includes(e) && (n = e);
1010
+ let r = t ? "dark" : "light";
1011
+ return n.startsWith("axis") ? r = "axis" : n.startsWith("ocean") ? r = "ocean" : n.startsWith("sunset") && (r = "sunset"), { theme: r, resolvedTheme: n, isDark: t };
1012
+ }
1013
+ const Ot = ({ children: t, defaultTheme: e = "light", passive: n = !1 }) => {
1014
+ const r = () => typeof window > "u" ? e : n ? se().theme : localStorage.getItem("snowcone-theme") || e, c = () => typeof window > "u" ? "light" : n ? se().resolvedTheme : "light", [o, d] = p(r), [i, g] = p(c);
1015
+ M(() => {
1016
+ if (!n || typeof window > "u") return;
1017
+ const { resolvedTheme: h, theme: E } = se();
1018
+ g(h), d(E);
1019
+ const w = new MutationObserver(() => {
1020
+ const { resolvedTheme: m, theme: u } = se();
1021
+ g(m), d(u);
1022
+ });
1023
+ return w.observe(document.documentElement, {
1024
+ attributes: !0,
1025
+ attributeFilter: ["class", "data-theme"]
1026
+ }), () => w.disconnect();
1027
+ }, [n]), M(() => {
1028
+ if (n || typeof window > "u") return;
1029
+ const h = window.matchMedia("(prefers-color-scheme: dark)"), E = (w) => {
1030
+ let m;
1031
+ if (o === "auto")
1032
+ m = w.matches ? "dark" : "light";
1033
+ else {
1034
+ if (o === "light" || o === "dark")
1035
+ return;
1036
+ m = w.matches ? `${o}-dark` : `${o}-light`;
1037
+ }
1038
+ g(m), document.documentElement.setAttribute("data-theme", m), m === "dark" || m.endsWith("-dark") ? (document.documentElement.classList.add("dark"), document.body.classList.add("dark")) : (document.documentElement.classList.remove("dark"), document.body.classList.remove("dark"));
1039
+ };
1040
+ return h.addEventListener("change", E), () => h.removeEventListener("change", E);
1041
+ }, [o, n]), M(() => {
1042
+ if (n || typeof window > "u") return;
1043
+ let h;
1044
+ const E = window.matchMedia("(prefers-color-scheme: dark)").matches;
1045
+ o === "auto" ? h = E ? "dark" : "light" : o === "light" || o === "dark" ? h = o : h = E ? `${o}-dark` : `${o}-light`, g(h), document.documentElement.setAttribute("data-theme", h), h === "dark" || h.endsWith("-dark") ? (document.documentElement.classList.add("dark"), document.body.classList.add("dark")) : (document.documentElement.classList.remove("dark"), document.body.classList.remove("dark")), localStorage.setItem("snowcone-theme", o);
1046
+ }, [o, n]);
1047
+ const P = (h) => {
1048
+ n || d(h);
1049
+ }, O = i === "dark" || i.endsWith("-dark"), x = {
1050
+ theme: o,
1051
+ resolvedTheme: i,
1052
+ setTheme: P,
1053
+ isDark: O
1054
+ };
1055
+ return /* @__PURE__ */ V(Ne.Provider, { value: x, children: t });
1056
+ }, Vt = () => {
1057
+ const t = Y(Ne);
1058
+ if (!t)
1059
+ throw new Error("useTheme must be used within ThemeProvider");
1060
+ return t;
1061
+ };
1062
+ export {
1063
+ zt as E,
1064
+ ze as P,
1065
+ Ot as T,
1066
+ Ct as a,
1067
+ kt as b,
1068
+ At as c,
1069
+ xt as d,
1070
+ bt as e,
1071
+ Pt as f,
1072
+ Vt as g,
1073
+ gt as p,
1074
+ mt as s,
1075
+ Ut as u
1076
+ };
1077
+ //# sourceMappingURL=ThemeContext-H0Z-MqqR.js.map