kritzel-stencil 0.3.12 → 0.3.13

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 (167) hide show
  1. package/dist/cjs/{index-CFnj_FXt.js → index-Xav9JFHg.js} +1 -1
  2. package/dist/cjs/index.cjs.js +41 -3
  3. package/dist/cjs/kritzel-active-users_42.cjs.entry.js +139 -97
  4. package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/{schema.constants-CzfoUWxF.js → schema.constants-CMFOYyBj.js} +22 -42
  7. package/dist/cjs/stencil.cjs.js +3 -3
  8. package/dist/collection/classes/core/viewport.class.js +16 -8
  9. package/dist/collection/classes/objects/shape.class.js +2 -1
  10. package/dist/collection/classes/tools/base-tool.class.js +2 -0
  11. package/dist/collection/classes/tools/brush-tool.class.js +1 -0
  12. package/dist/collection/classes/tools/eraser-tool.class.js +1 -0
  13. package/dist/collection/classes/tools/image-tool.class.js +1 -0
  14. package/dist/collection/classes/tools/line-tool.class.js +1 -0
  15. package/dist/collection/classes/tools/selection-tool.class.js +1 -0
  16. package/dist/collection/classes/tools/shape-tool.class.js +1 -0
  17. package/dist/collection/classes/tools/text-tool.class.js +1 -0
  18. package/dist/collection/collection-manifest.json +1 -1
  19. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +77 -22
  20. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +106 -2
  21. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +3 -3
  22. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +1 -1
  23. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +2 -2
  24. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +7 -0
  25. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +7 -1
  26. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +1 -1
  27. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.js +2 -2
  28. package/dist/collection/configs/default-asset-storage.config.js +1 -2
  29. package/dist/collection/configs/default-sync.config.js +2 -5
  30. package/dist/collection/constants/version.js +1 -1
  31. package/dist/collection/helpers/tool-config.helper.js +58 -65
  32. package/dist/collection/interfaces/tool-type.interface.js +1 -0
  33. package/dist/collection/themes/dark-theme.js +5 -0
  34. package/dist/collection/themes/light-theme.js +5 -0
  35. package/dist/components/index.js +1 -1
  36. package/dist/components/kritzel-active-users.js +1 -1
  37. package/dist/components/kritzel-avatar.js +1 -1
  38. package/dist/components/kritzel-awareness-cursors.js +1 -1
  39. package/dist/components/kritzel-back-to-content.js +1 -1
  40. package/dist/components/kritzel-brush-style.js +1 -1
  41. package/dist/components/kritzel-button.js +1 -1
  42. package/dist/components/kritzel-color-palette.js +1 -1
  43. package/dist/components/kritzel-color.js +1 -1
  44. package/dist/components/kritzel-context-menu.js +1 -1
  45. package/dist/components/kritzel-controls.js +1 -1
  46. package/dist/components/kritzel-current-user-dialog.js +1 -1
  47. package/dist/components/kritzel-current-user.js +1 -1
  48. package/dist/components/kritzel-cursor-trail.js +1 -1
  49. package/dist/components/kritzel-dialog.js +1 -1
  50. package/dist/components/kritzel-dropdown.js +1 -1
  51. package/dist/components/kritzel-editor.js +1 -1
  52. package/dist/components/kritzel-engine.js +1 -1
  53. package/dist/components/kritzel-export.js +1 -1
  54. package/dist/components/kritzel-font-family.js +1 -1
  55. package/dist/components/kritzel-font-size.js +1 -1
  56. package/dist/components/kritzel-font.js +1 -1
  57. package/dist/components/kritzel-icon.js +1 -1
  58. package/dist/components/kritzel-input.js +1 -1
  59. package/dist/components/kritzel-line-endings.js +1 -1
  60. package/dist/components/kritzel-login-dialog.js +1 -1
  61. package/dist/components/kritzel-master-detail.js +1 -1
  62. package/dist/components/kritzel-menu-item.js +1 -1
  63. package/dist/components/kritzel-menu.js +1 -1
  64. package/dist/components/kritzel-more-menu.js +1 -1
  65. package/dist/components/kritzel-numeric-input.js +1 -1
  66. package/dist/components/kritzel-opacity-slider.js +1 -1
  67. package/dist/components/kritzel-pill-tabs.js +1 -1
  68. package/dist/components/kritzel-portal.js +1 -1
  69. package/dist/components/kritzel-settings.js +1 -1
  70. package/dist/components/kritzel-shape-fill.js +1 -1
  71. package/dist/components/kritzel-share-dialog.js +1 -1
  72. package/dist/components/kritzel-slide-toggle.js +1 -1
  73. package/dist/components/kritzel-split-button.js +1 -1
  74. package/dist/components/kritzel-stroke-size.js +1 -1
  75. package/dist/components/kritzel-tool-config.js +1 -1
  76. package/dist/components/kritzel-tooltip.js +1 -1
  77. package/dist/components/kritzel-utility-panel.js +1 -1
  78. package/dist/components/kritzel-workspace-manager.js +1 -1
  79. package/dist/components/p-2xYAGd0I.js +1 -0
  80. package/dist/components/{p-DdmJquQr.js → p-B2Os1ya_.js} +1 -1
  81. package/dist/components/p-B2w8X7vn.js +1 -0
  82. package/dist/components/{p-DRB3TZzI.js → p-B4b6TDxp.js} +1 -1
  83. package/dist/components/p-B5xxfwKF.js +1 -0
  84. package/dist/components/p-B9hLySCl.js +1 -0
  85. package/dist/components/{p-D0aom7Yu.js → p-BFYtCsZu.js} +1 -1
  86. package/dist/components/{p-CARNM9pf.js → p-BFoK4W--.js} +1 -1
  87. package/dist/components/{p-x38RbGJA.js → p-BYmp9Ovv.js} +1 -1
  88. package/dist/components/{p-KVG5rztB.js → p-BbactVA0.js} +1 -1
  89. package/dist/components/{p-B_JH91jB.js → p-BfNHpqQ8.js} +1 -1
  90. package/dist/components/{p-DXgUuzXW.js → p-BiG1dxPS.js} +1 -1
  91. package/dist/components/{p-Dov3qOAR.js → p-Bj2laX89.js} +1 -1
  92. package/dist/components/{p-Cr7xOsIZ.js → p-BqwqGFQY.js} +1 -1
  93. package/dist/components/{p-DmTG0Y5h.js → p-BzYU3-MJ.js} +1 -1
  94. package/dist/components/p-C-aFOO5p.js +1 -0
  95. package/dist/components/p-C0TN5IAi.js +1 -0
  96. package/dist/components/{p-RnuCSIt-.js → p-C2SX-XRr.js} +1 -1
  97. package/dist/components/{p-guqEWGgV.js → p-CFgkUYoO.js} +1 -1
  98. package/dist/components/{p-BTSOqHMI.js → p-CHrSFOSI.js} +1 -1
  99. package/dist/components/p-CJOhfMU5.js +1 -0
  100. package/dist/components/{p-DJLJfKY2.js → p-COLHjboZ.js} +1 -1
  101. package/dist/components/{p-CKY7AvGR.js → p-COgo9OWy.js} +1 -1
  102. package/dist/components/{p-Do4UlU4e.js → p-CVzH1Oil.js} +1 -1
  103. package/dist/components/{p-DhAM4qeQ.js → p-CXpv9Rxe.js} +1 -1
  104. package/dist/components/{p-Bp3kdH4l.js → p-CcyIAi9S.js} +1 -1
  105. package/dist/components/{p-COIxq81R.js → p-CmuNn1Tc.js} +1 -1
  106. package/dist/components/{p-DfH7YY2C.js → p-D-sRVAbQ.js} +1 -1
  107. package/dist/components/{p-ZgZqbJ58.js → p-DDYoDSrm.js} +1 -1
  108. package/dist/components/{p-u0b2RJAn.js → p-DEy7zJCe.js} +1 -1
  109. package/dist/components/{p-BPEn0_hr.js → p-DM11KXUT.js} +1 -1
  110. package/dist/components/{p-CJERvHdy.js → p-DbB730vO.js} +1 -1
  111. package/dist/components/{p-C8ggg-5h.js → p-Df3BwVGy.js} +1 -1
  112. package/dist/components/{p-Dx_xz_El.js → p-DlwYHzSj.js} +1 -1
  113. package/dist/components/p-DplAQ6jk.js +9 -0
  114. package/dist/components/{p-CJ2V42sz.js → p-FK7b3BGt.js} +1 -1
  115. package/dist/components/{p-CxtTuKCy.js → p-JhOYwUOj.js} +1 -1
  116. package/dist/components/{p-Dw9sKOsb.js → p-SptaSMno.js} +1 -1
  117. package/dist/components/{p-KjtNlFTl.js → p-UoPj5QjH.js} +1 -1
  118. package/dist/components/{p-CYR9wbJg.js → p-dcAernE1.js} +1 -1
  119. package/dist/components/{p-EFyZdR89.js → p-ijIqLY9g.js} +1 -1
  120. package/dist/components/{p-BI_UUiTr.js → p-skWUIStn.js} +1 -1
  121. package/dist/components/{p-DgtrNOWm.js → p-x6doYeiI.js} +1 -1
  122. package/dist/esm/{index-D9HaikfQ.js → index-Dhio9uis.js} +1 -1
  123. package/dist/esm/index.js +42 -4
  124. package/dist/esm/kritzel-active-users_42.entry.js +139 -97
  125. package/dist/esm/kritzel-brush-style.entry.js +1 -1
  126. package/dist/esm/loader.js +3 -3
  127. package/dist/esm/{schema.constants-BcT1vV4J.js → schema.constants-NrtFvKER.js} +23 -42
  128. package/dist/esm/stencil.js +4 -4
  129. package/dist/stencil/index.esm.js +1 -1
  130. package/dist/stencil/p-9adee165.entry.js +9 -0
  131. package/dist/stencil/p-NrtFvKER.js +1 -0
  132. package/dist/stencil/{p-69298b5f.entry.js → p-fb32cd8f.entry.js} +1 -1
  133. package/dist/stencil/stencil.esm.js +1 -1
  134. package/dist/types/classes/core/viewport.class.d.ts +8 -0
  135. package/dist/types/classes/tools/base-tool.class.d.ts +3 -0
  136. package/dist/types/classes/tools/brush-tool.class.d.ts +1 -0
  137. package/dist/types/classes/tools/eraser-tool.class.d.ts +1 -0
  138. package/dist/types/classes/tools/image-tool.class.d.ts +1 -0
  139. package/dist/types/classes/tools/line-tool.class.d.ts +1 -0
  140. package/dist/types/classes/tools/selection-tool.class.d.ts +1 -0
  141. package/dist/types/classes/tools/shape-tool.class.d.ts +1 -0
  142. package/dist/types/classes/tools/text-tool.class.d.ts +1 -0
  143. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +2 -0
  144. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +16 -0
  145. package/dist/types/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +1 -0
  146. package/dist/types/components.d.ts +26 -14
  147. package/dist/types/configs/default-asset-storage.config.d.ts +1 -1
  148. package/dist/types/configs/default-sync.config.d.ts +1 -1
  149. package/dist/types/constants/version.d.ts +1 -1
  150. package/dist/types/interfaces/theme.interface.d.ts +8 -3
  151. package/dist/types/interfaces/tool-config.interface.d.ts +3 -6
  152. package/dist/types/interfaces/tool-type.interface.d.ts +1 -0
  153. package/dist/types/interfaces/tool.interface.d.ts +1 -0
  154. package/dist/types/stencil-public-runtime.d.ts +1 -0
  155. package/package.json +1 -1
  156. package/dist/components/p-C0wFAtT_.js +0 -1
  157. package/dist/components/p-CWgI1dA0.js +0 -1
  158. package/dist/components/p-DH-H7om7.js +0 -1
  159. package/dist/components/p-DIiGd0LS.js +0 -1
  160. package/dist/components/p-DLh8x1jK.js +0 -9
  161. package/dist/components/p-Dqjil3Hm.js +0 -1
  162. package/dist/components/p-IiG44Unz.js +0 -1
  163. package/dist/components/p-K7ySy791.js +0 -1
  164. package/dist/stencil/p-0c95e585.entry.js +0 -9
  165. package/dist/stencil/p-BcT1vV4J.js +0 -1
  166. /package/dist/components/{p-BWj1eE2b.js → p-B43upypT.js} +0 -0
  167. /package/dist/stencil/{p-D9HaikfQ.js → p-Dhio9uis.js} +0 -0
@@ -1 +1 @@
1
- import{r as e,c as t,h as o,H as n}from"./p-D9HaikfQ.js";const r=class{constructor(o){e(this,o),this.typeChange=t(this,"typeChange")}type="pen";brushOptions=[{value:"pen",label:"Pen"},{value:"highlighter",label:"Highlighter"}];typeChange;handleDropdownValueChange(e){this.typeChange.emit(e.detail)}render(){const e=this.brushOptions.map((e=>({value:e.value,label:e.label})));return o(n,{key:"7b05e93ce8d28c23503e4ca358a487165169f1ad"},o("kritzel-dropdown",{key:"a8f2f30762b339411cd3995482c3bc658855f749",options:e,value:this.type,onValueChanged:e=>this.handleDropdownValueChange(e)},o("button",{key:"ac06462897a0fbd5011533095fafb7491a75508a",class:"brush-style-button",slot:"prefix"},o("kritzel-icon",{key:"caee4c657c7fee478b1038ebd2ef3b502cf73e5e",name:this.type,size:16}))))}};r.style=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.brush-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}";export{r as kritzel_brush_style}
1
+ import{r as e,c as t,h as o,H as n}from"./p-Dhio9uis.js";const r=class{constructor(o){e(this,o),this.typeChange=t(this,"typeChange")}type="pen";brushOptions=[{value:"pen",label:"Pen"},{value:"highlighter",label:"Highlighter"}];typeChange;handleDropdownValueChange(e){this.typeChange.emit(e.detail)}render(){const e=this.brushOptions.map((e=>({value:e.value,label:e.label})));return o(n,{key:"7b05e93ce8d28c23503e4ca358a487165169f1ad"},o("kritzel-dropdown",{key:"a8f2f30762b339411cd3995482c3bc658855f749",options:e,value:this.type,onValueChanged:e=>this.handleDropdownValueChange(e)},o("button",{key:"ac06462897a0fbd5011533095fafb7491a75508a",class:"brush-style-button",slot:"prefix"},o("kritzel-icon",{key:"caee4c657c7fee478b1038ebd2ef3b502cf73e5e",name:this.type,size:16}))))}};r.style=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.brush-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}";export{r as kritzel_brush_style}
@@ -1 +1 @@
1
- import{p as e,b as o}from"./p-D9HaikfQ.js";export{s as setNonce}from"./p-D9HaikfQ.js";import{g as t}from"./p-DQuL1Twl.js";(()=>{const o=import.meta.url,t={};return""!==o&&(t.resourcesUrl=new URL(".",o).href),e(t)})().then((async e=>(await t(),o(JSON.parse('[["p-0c95e585",[[512,"kritzel-editor",{"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"lockDrawingScale":[1028,"lock-drawing-scale"],"viewportBoundaryLeft":[1026,"viewport-boundary-left"],"viewportBoundaryRight":[1026,"viewport-boundary-right"],"viewportBoundaryTop":[1026,"viewport-boundary-top"],"viewportBoundaryBottom":[1026,"viewport-boundary-bottom"],"wheelEnabled":[1028,"wheel-enabled"],"debugInfo":[1040],"user":[16],"activeUsers":[16],"controls":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"themes":[16],"theme":[1025],"customSvgIcons":[16],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isWorkspaceManagerVisible":[4,"is-workspace-manager-visible"],"isMoreMenuVisible":[4,"is-more-menu-visible"],"isObjectDistanceFadingActive":[4,"is-object-distance-fading-active"],"syncConfig":[16],"assetStorageConfig":[16],"cursorTarget":[16],"loginConfig":[16],"isLoading":[4,"is-loading"],"editorId":[1,"editor-id"],"activeWorkspaceId":[1,"active-workspace-id"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"undoState":[32],"isBackToContentButtonVisible":[32],"shortcuts":[32],"currentIsPublic":[32],"isEditorVisible":[32],"getObjectById":[64],"addObject":[64],"addObjects":[64],"updateObject":[64],"removeObject":[64],"removeObjects":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"backToContent":[64],"centerAllObjects":[64],"setViewport":[64],"panTo":[64],"zoomTo":[64],"getViewport":[64],"screenToWorld":[64],"worldToScreen":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64],"loadSharedWorkspace":[64],"reinitSync":[64],"registerTool":[64],"changeActiveTool":[64],"changeActiveToolByName":[64],"disable":[64],"enable":[64],"copy":[64],"cut":[64],"paste":[64],"delete":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"alignObjects":[64],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"getScreenshot":[64],"exportViewportAsPng":[64],"exportViewportAsSvg":[64],"exportSelectedObjectsAsPng":[64],"exportSelectedObjectsAsSvg":[64],"downloadAsJson":[64],"importFromFile":[64],"loadObjectsFromJson":[64],"getObjectsTotalCount":[64],"getAllObjects":[64],"findObjects":[64],"getCopiedObjects":[64],"getObjectsInViewport":[64],"hideContextMenu":[64],"openContextMenu":[64],"triggerSelectionChange":[64],"getDisplayableShortcuts":[64],"openLoginDialog":[64],"setLoginLoading":[64]},[[0,"dblclick","onTouchStart"]],{"isEngineReady":[{"onIsEngineReady":0}],"isControlsReady":[{"onIsControlsReady":0}],"workspaces":[{"onWorkspacesChange":0}],"activeWorkspace":[{"onActiveWorkspaceChange":0}],"activeWorkspaceId":[{"onActiveWorkspaceIdChange":0}],"theme":[{"onCurrentThemeChange":0}],"themes":[{"onThemesChange":0}]}],[513,"kritzel-controls",{"visible":[4],"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"theme":[1],"firstConfig":[32],"isTouchDevice":[32],"selectedSubOptions":[32],"canScrollLeft":[32],"canScrollRight":[32],"needsScrolling":[32],"displayValues":[32],"internalControls":[32],"closeTooltip":[64]},[[8,"keydown","handleKeyDown"]],{"controls":[{"onControlsChange":0}],"theme":[{"onThemeChange":0}]}],[513,"kritzel-settings",{"availableThemes":[16],"shortcuts":[16],"settings":[16],"isDialogOpen":[32],"selectedCategoryId":[32],"scaleMin":[32],"scaleMax":[32],"lockDrawingScale":[32],"theme":[32],"viewportBoundaryLeft":[32],"viewportBoundaryRight":[32],"viewportBoundaryTop":[32],"viewportBoundaryBottom":[32],"debugInfo":[32],"open":[64]},null,{"settings":[{"onSettingsPropChange":0}]}],[513,"kritzel-export",{"workspaceName":[1,"workspace-name"],"isDialogOpen":[32],"previewUrl":[32],"isLoading":[32],"activeTab":[32],"exportFilename":[32],"viewportExportFormat":[32],"open":[64]}],[513,"kritzel-workspace-manager",{"visible":[4],"activeWorkspace":[1040],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-engine",{"workspace":[16],"editorId":[1,"editor-id"],"activeWorkspaceId":[1,"active-workspace-id"],"syncConfig":[16],"assetStorageConfig":[16],"user":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"cursorTarget":[16],"lockDrawingScale":[4,"lock-drawing-scale"],"isObjectDistanceFadingActive":[4,"is-object-distance-fading-active"],"theme":[1],"themes":[16],"viewportBoundaryLeft":[2,"viewport-boundary-left"],"viewportBoundaryRight":[2,"viewport-boundary-right"],"viewportBoundaryTop":[2,"viewport-boundary-top"],"viewportBoundaryBottom":[2,"viewport-boundary-bottom"],"debugInfo":[16],"wheelEnabled":[4,"wheel-enabled"],"isLoading":[4,"is-loading"],"forceUpdate":[32],"triggerSelectionChange":[64],"registerTool":[64],"changeActiveTool":[64],"changeActiveToolByName":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"cut":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"alignObjects":[64],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"openContextMenu":[64],"getObjectById":[64],"getAllObjects":[64],"findObjects":[64],"getObjectsTotalCount":[64],"addObject":[64],"addObjects":[64],"updateObject":[64],"removeObject":[64],"removeObjects":[64],"getSelectedObjects":[64],"getDisplayableShortcuts":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"backToContent":[64],"centerAllObjects":[64],"setViewport":[64],"panTo":[64],"zoomTo":[64],"getViewport":[64],"screenToWorld":[64],"worldToScreen":[64],"getCopiedObjects":[64],"getObjectsInViewport":[64],"getScreenshot":[64],"exportViewportAsPng":[64],"exportViewportAsSvg":[64],"getSelectedObjectsAsSvgString":[64],"exportSelectedObjectsAsSvg":[64],"getSelectedObjectsAsPngDataUrl":[64],"exportSelectedObjectsAsPng":[64],"exportAsJson":[64],"importFromJson":[64],"loadObjectsFromJson":[64],"downloadAsJson":[64],"importFromFile":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64],"getIsPublic":[64],"loadSharedWorkspace":[64],"reinitSync":[64],"saveSettings":[64],"loadSettings":[64]},[[1,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[1,"pointerleave","handlePointerLeave"],[1,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{"workspace":[{"onWorkspaceChange":0}],"activeWorkspaceId":[{"onActiveWorkspaceIdChange":0}],"syncConfig":[{"onSyncConfigChange":0}],"assetStorageConfig":[{"onAssetStorageConfigChange":0}],"user":[{"onUserChange":0}],"scaleMax":[{"validateScaleMax":0}],"scaleMin":[{"validateScaleMin":0}],"cursorTarget":[{"onCursorTargetChange":0}],"lockDrawingScale":[{"onLockDrawingScaleChange":0}],"isObjectDistanceFadingActive":[{"onIsObjectDistanceFadingActiveChange":0}],"theme":[{"onThemeChange":0}],"themes":[{"onThemesChange":0}],"viewportBoundaryLeft":[{"onViewportBoundaryLeftChange":0}],"viewportBoundaryRight":[{"onViewportBoundaryRightChange":0}],"viewportBoundaryTop":[{"onViewportBoundaryTopChange":0}],"viewportBoundaryBottom":[{"onViewportBoundaryBottomChange":0}],"debugInfo":[{"onDebugInfoChange":0}],"isLoading":[{"onIsLoadingChange":0}]}],[513,"kritzel-more-menu",{"visible":[4],"items":[16],"icon":[1],"iconSize":[2,"icon-size"],"offsetY":[2,"offset-y"],"menuAnchor":[32],"isTouchDevice":[32]}],[513,"kritzel-current-user",{"user":[16],"avatarSize":[2,"avatar-size"]}],[513,"kritzel-share-dialog",{"isPublic":[4,"is-public"],"workspaceId":[1,"workspace-id"],"isDialogOpen":[32],"internalIsPublic":[32],"copySuccess":[32],"open":[64],"close":[64]},null,{"isPublic":[{"onIsPublicChange":0}]}],[513,"kritzel-login-dialog",{"providers":[16],"dialogTitle":[1,"dialog-title"],"subtitle":[1],"isDialogOpen":[32],"loadingProvider":[32],"open":[64],"close":[64],"setLoading":[64]}],[513,"kritzel-active-users",{"users":[16],"avatarSize":[2,"avatar-size"],"maxVisible":[2,"max-visible"],"overlap":[2]}],[513,"kritzel-back-to-content",{"visible":[4],"text":[1]}],[769,"kritzel-button",{"variant":[1],"disabled":[4],"type":[1]}],[513,"kritzel-tool-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"theme":[1],"engine":[16],"config":[32],"palette":[32],"sizes":[32],"currentOpacity":[32],"updateTrigger":[32]},null,{"tool":[{"handleToolChange":0}],"theme":[{"onThemeChange":0}],"engine":[{"handleEngineChange":0}]}],[513,"kritzel-split-button",{"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"items":[16],"mainButtonDisabled":[4,"main-button-disabled"],"menuButtonDisabled":[4,"menu-button-disabled"],"isMenuOpen":[32],"isTouchDevice":[32],"anchorElement":[32],"menuScrollTop":[32],"open":[64],"focusMenu":[64]}],[513,"kritzel-current-user-dialog",{"user":[16],"isDialogOpen":[32],"open":[64],"close":[64]}],[513,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32],"openSubmenuPath":[32],"submenuPositions":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":[{"onItemsChanged":0}]}],[769,"kritzel-master-detail",{"items":[16],"selectedItemId":[1,"selected-item-id"],"focusedIndex":[32],"showMobileDetail":[32]},null,{"selectedItemId":[{"watchSelectedItemId":0}]}],[513,"kritzel-pill-tabs",{"tabs":[16],"value":[1025]}],[513,"kritzel-utility-panel",{"undoState":[16]}],[513,"kritzel-awareness-cursors",{"core":[16],"showEdgeIndicators":[4,"show-edge-indicators"],"edgeIndicatorPadding":[2,"edge-indicator-padding"],"remoteCursors":[32],"objectVersion":[32]}],[513,"kritzel-cursor-trail",{"core":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[513,"kritzel-input",{"value":[1025],"label":[1],"placeholder":[1],"suffix":[1],"type":[1],"disabled":[4],"inputValue":[32]},null,{"value":[{"onValueChange":0}]}],[513,"kritzel-numeric-input",{"value":[1026],"min":[2],"max":[2],"step":[2],"label":[1],"placeholder":[1],"inputValue":[32]},null,{"value":[{"onValueChange":0}]}],[769,"kritzel-tooltip",{"isVisible":[1028,"is-visible"],"anchorElement":[16],"triggerElement":[16],"offsetY":[2,"offset-y"],"positionX":[32],"positionY":[32],"open":[64],"close":[64],"toggle":[64],"focusContent":[64]},[[4,"click","handleOutsideClick"],[6,"pointerdown","handleOutsidePointerDown"],[4,"kritzelTooltipCloseAll","handleCloseAll"],[9,"resize","handleWindowResize"]],{"triggerElement":[{"handleTriggerElementChange":0}],"isVisible":[{"handleVisibilityChange":0}]}],[513,"kritzel-color-palette",{"colors":[16],"selectedColor":[1040],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"],"opacity":[2],"theme":[1]}],[513,"kritzel-font-family",{"fontOptions":[16],"selectedFontFamily":[1025,"selected-font-family"]}],[513,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[513,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[513,"kritzel-line-endings",{"styles":[16],"value":[1040]}],[513,"kritzel-opacity-slider",{"value":[1026],"min":[2],"max":[2],"step":[2],"previewColor":[1,"preview-color"]}],[513,"kritzel-shape-fill",{"value":[1025]}],[513,"kritzel-slide-toggle",{"checked":[1028],"disabled":[4],"label":[1]}],[513,"kritzel-avatar",{"user":[16],"name":[1],"size":[2],"color":[1],"imageError":[32]},null,{"user":[{"userChanged":0}],"profileImageUrl":[{"profileImageUrlChanged":0}]}],[513,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[513,"kritzel-color",{"value":[1],"theme":[1],"size":[2]}],[513,"kritzel-menu",{"items":[16],"parent":[16],"selectedIndex":[32],"setScrollTop":[64],"setFocus":[64]}],[513,"kritzel-menu-item",{"item":[16],"parent":[16],"isDirty":[32]},null,{"item":[{"onItemChange":0}]}],[769,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[8,"kritzel-dismiss-menus","handleDismissMenus"],[8,"click","handleOutsideClick"],[6,"pointerdown","handleOutsidePointerDown"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{"anchor":[{"anchorChanged":0}]}],[769,"kritzel-dialog",{"isOpen":[516,"is-open"],"dialogTitle":[1,"dialog-title"],"closable":[4],"closeOnBackdrop":[4,"close-on-backdrop"],"closeOnEscape":[4,"close-on-escape"],"autoFocus":[4,"auto-focus"],"trapFocus":[4,"trap-focus"],"size":[1],"fullscreenOnMobile":[4,"fullscreen-on-mobile"],"contained":[516],"isAnimating":[32],"mobileLockedHeight":[32],"containerRect":[32],"containerBorderRadius":[32],"open":[64],"close":[64],"focusFirstElement":[64]},[[8,"keydown","handleKeyDown"],[9,"resize","handleWindowResize"],[8,"orientationchange","handleOrientationChange"]],{"isOpen":[{"handleIsOpenChange":0}]}],[769,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[16],"forceOpenDirection":[1,"force-open-direction"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32],"isOpen":[32],"focusedIndex":[32],"openDirection":[32]},[[4,"click","handleDocumentClick"],[4,"keydown","handleDocumentKeydown"]],{"options":[{"optionsChanged":0}],"value":[{"externalValueChanged":0}]}],[513,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["p-69298b5f",[[513,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]]'),e))));
1
+ import{p as e,b as o}from"./p-Dhio9uis.js";export{s as setNonce}from"./p-Dhio9uis.js";import{g as t}from"./p-DQuL1Twl.js";(()=>{const o=import.meta.url,t={};return""!==o&&(t.resourcesUrl=new URL(".",o).href),e(t)})().then((async e=>(await t(),o(JSON.parse('[["p-9adee165",[[512,"kritzel-editor",{"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"lockDrawingScale":[1028,"lock-drawing-scale"],"viewportBoundaryLeft":[1026,"viewport-boundary-left"],"viewportBoundaryRight":[1026,"viewport-boundary-right"],"viewportBoundaryTop":[1026,"viewport-boundary-top"],"viewportBoundaryBottom":[1026,"viewport-boundary-bottom"],"wheelEnabled":[1028,"wheel-enabled"],"debugInfo":[1040],"user":[16],"activeUsers":[16],"controls":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"themes":[16],"theme":[1025],"customSvgIcons":[16],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isWorkspaceManagerVisible":[4,"is-workspace-manager-visible"],"isMoreMenuVisible":[4,"is-more-menu-visible"],"isObjectDistanceFadingActive":[4,"is-object-distance-fading-active"],"syncConfig":[16],"assetStorageConfig":[16],"cursorTarget":[16],"loginConfig":[16],"isLoading":[4,"is-loading"],"editorId":[1,"editor-id"],"activeWorkspaceId":[1,"active-workspace-id"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"undoState":[32],"isBackToContentButtonVisible":[32],"shortcuts":[32],"currentIsPublic":[32],"isEditorVisible":[32],"getObjectById":[64],"addObject":[64],"addObjects":[64],"updateObject":[64],"removeObject":[64],"removeObjects":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"panToObject":[64],"backToContent":[64],"centerAllObjects":[64],"centerObjects":[64],"setViewport":[64],"panTo":[64],"zoomTo":[64],"getViewport":[64],"screenToWorld":[64],"worldToScreen":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64],"loadSharedWorkspace":[64],"reinitSync":[64],"registerTool":[64],"changeActiveTool":[64],"changeActiveToolByName":[64],"disable":[64],"enable":[64],"copy":[64],"cut":[64],"paste":[64],"delete":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"alignObjects":[64],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"getScreenshot":[64],"exportViewportAsPng":[64],"exportViewportAsSvg":[64],"exportSelectedObjectsAsPng":[64],"exportSelectedObjectsAsSvg":[64],"downloadAsJson":[64],"importFromFile":[64],"loadObjectsFromJson":[64],"getObjectsTotalCount":[64],"getAllObjects":[64],"findObjects":[64],"getCopiedObjects":[64],"getObjectsInViewport":[64],"hideContextMenu":[64],"openContextMenu":[64],"triggerSelectionChange":[64],"getDisplayableShortcuts":[64],"openLoginDialog":[64],"setLoginLoading":[64]},[[0,"dblclick","onTouchStart"]],{"isEngineReady":[{"onIsEngineReady":0}],"isControlsReady":[{"onIsControlsReady":0}],"workspaces":[{"onWorkspacesChange":0}],"activeWorkspace":[{"onActiveWorkspaceChange":0}],"activeWorkspaceId":[{"onActiveWorkspaceIdChange":0}],"theme":[{"onCurrentThemeChange":0}],"themes":[{"onThemesChange":0}]}],[513,"kritzel-controls",{"visible":[4],"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"theme":[1],"firstConfig":[32],"isTouchDevice":[32],"selectedSubOptions":[32],"canScrollLeft":[32],"canScrollRight":[32],"needsScrolling":[32],"displayValues":[32],"internalControls":[32],"closeTooltip":[64]},[[8,"keydown","handleKeyDown"]],{"controls":[{"onControlsChange":0}],"theme":[{"onThemeChange":0}]}],[513,"kritzel-settings",{"availableThemes":[16],"shortcuts":[16],"settings":[16],"isDialogOpen":[32],"selectedCategoryId":[32],"scaleMin":[32],"scaleMax":[32],"lockDrawingScale":[32],"theme":[32],"viewportBoundaryLeft":[32],"viewportBoundaryRight":[32],"viewportBoundaryTop":[32],"viewportBoundaryBottom":[32],"debugInfo":[32],"open":[64]},null,{"settings":[{"onSettingsPropChange":0}]}],[513,"kritzel-export",{"workspaceName":[1,"workspace-name"],"isDialogOpen":[32],"previewUrl":[32],"isLoading":[32],"activeTab":[32],"exportFilename":[32],"viewportExportFormat":[32],"open":[64]}],[513,"kritzel-workspace-manager",{"visible":[4],"activeWorkspace":[1040],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-engine",{"workspace":[16],"editorId":[1,"editor-id"],"activeWorkspaceId":[1,"active-workspace-id"],"syncConfig":[16],"assetStorageConfig":[16],"user":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"cursorTarget":[16],"lockDrawingScale":[4,"lock-drawing-scale"],"isObjectDistanceFadingActive":[4,"is-object-distance-fading-active"],"theme":[1],"themes":[16],"viewportBoundaryLeft":[2,"viewport-boundary-left"],"viewportBoundaryRight":[2,"viewport-boundary-right"],"viewportBoundaryTop":[2,"viewport-boundary-top"],"viewportBoundaryBottom":[2,"viewport-boundary-bottom"],"debugInfo":[16],"wheelEnabled":[4,"wheel-enabled"],"isLoading":[4,"is-loading"],"forceUpdate":[32],"triggerSelectionChange":[64],"registerTool":[64],"changeActiveTool":[64],"changeActiveToolByName":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"cut":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"alignObjects":[64],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"openContextMenu":[64],"getObjectById":[64],"getAllObjects":[64],"findObjects":[64],"getObjectsTotalCount":[64],"addObject":[64],"addObjects":[64],"updateObject":[64],"removeObject":[64],"removeObjects":[64],"getSelectedObjects":[64],"getDisplayableShortcuts":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"panToObject":[64],"backToContent":[64],"centerAllObjects":[64],"centerObjects":[64],"setViewport":[64],"panTo":[64],"zoomTo":[64],"getViewport":[64],"screenToWorld":[64],"worldToScreen":[64],"getCopiedObjects":[64],"getObjectsInViewport":[64],"getScreenshot":[64],"exportViewportAsPng":[64],"exportViewportAsSvg":[64],"getSelectedObjectsAsSvgString":[64],"exportSelectedObjectsAsSvg":[64],"getSelectedObjectsAsPngDataUrl":[64],"exportSelectedObjectsAsPng":[64],"exportAsJson":[64],"importFromJson":[64],"loadObjectsFromJson":[64],"downloadAsJson":[64],"importFromFile":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64],"getIsPublic":[64],"loadSharedWorkspace":[64],"reinitSync":[64],"saveSettings":[64],"loadSettings":[64]},[[1,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[1,"pointerleave","handlePointerLeave"],[1,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{"workspace":[{"onWorkspaceChange":0}],"activeWorkspaceId":[{"onActiveWorkspaceIdChange":0}],"syncConfig":[{"onSyncConfigChange":0}],"assetStorageConfig":[{"onAssetStorageConfigChange":0}],"user":[{"onUserChange":0}],"globalContextMenuItems":[{"onGlobalContextMenuItemsChange":0}],"objectContextMenuItems":[{"onObjectContextMenuItemsChange":0}],"scaleMax":[{"validateScaleMax":0}],"scaleMin":[{"validateScaleMin":0}],"cursorTarget":[{"onCursorTargetChange":0}],"lockDrawingScale":[{"onLockDrawingScaleChange":0}],"isObjectDistanceFadingActive":[{"onIsObjectDistanceFadingActiveChange":0}],"theme":[{"onThemeChange":0}],"themes":[{"onThemesChange":0}],"viewportBoundaryLeft":[{"onViewportBoundaryLeftChange":0}],"viewportBoundaryRight":[{"onViewportBoundaryRightChange":0}],"viewportBoundaryTop":[{"onViewportBoundaryTopChange":0}],"viewportBoundaryBottom":[{"onViewportBoundaryBottomChange":0}],"debugInfo":[{"onDebugInfoChange":0}],"isLoading":[{"onIsLoadingChange":0}]}],[513,"kritzel-more-menu",{"visible":[4],"items":[16],"icon":[1],"iconSize":[2,"icon-size"],"offsetY":[2,"offset-y"],"menuAnchor":[32],"isTouchDevice":[32]}],[513,"kritzel-current-user",{"user":[16],"avatarSize":[2,"avatar-size"]}],[513,"kritzel-share-dialog",{"isPublic":[4,"is-public"],"workspaceId":[1,"workspace-id"],"isDialogOpen":[32],"internalIsPublic":[32],"copySuccess":[32],"open":[64],"close":[64]},null,{"isPublic":[{"onIsPublicChange":0}]}],[513,"kritzel-login-dialog",{"providers":[16],"dialogTitle":[1,"dialog-title"],"subtitle":[1],"isDialogOpen":[32],"loadingProvider":[32],"open":[64],"close":[64],"setLoading":[64]}],[513,"kritzel-active-users",{"users":[16],"avatarSize":[2,"avatar-size"],"maxVisible":[2,"max-visible"],"overlap":[2]}],[513,"kritzel-back-to-content",{"visible":[4],"text":[1]}],[769,"kritzel-button",{"variant":[1],"disabled":[4],"type":[1]}],[513,"kritzel-tool-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"theme":[1],"engine":[16],"config":[32],"palette":[32],"sizes":[32],"currentOpacity":[32],"updateTrigger":[32]},null,{"tool":[{"handleToolChange":0}],"theme":[{"onThemeChange":0}],"engine":[{"handleEngineChange":0}]}],[513,"kritzel-split-button",{"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"items":[16],"mainButtonDisabled":[4,"main-button-disabled"],"menuButtonDisabled":[4,"menu-button-disabled"],"isMenuOpen":[32],"isTouchDevice":[32],"anchorElement":[32],"menuScrollTop":[32],"open":[64],"focusMenu":[64]}],[513,"kritzel-current-user-dialog",{"user":[16],"isDialogOpen":[32],"open":[64],"close":[64]}],[513,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32],"openSubmenuPath":[32],"submenuPositions":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":[{"onItemsChanged":0}]}],[769,"kritzel-master-detail",{"items":[16],"selectedItemId":[1,"selected-item-id"],"focusedIndex":[32],"showMobileDetail":[32]},null,{"selectedItemId":[{"watchSelectedItemId":0}]}],[513,"kritzel-pill-tabs",{"tabs":[16],"value":[1025]}],[513,"kritzel-utility-panel",{"undoState":[16]}],[513,"kritzel-awareness-cursors",{"core":[16],"showEdgeIndicators":[4,"show-edge-indicators"],"edgeIndicatorPadding":[2,"edge-indicator-padding"],"remoteCursors":[32],"objectVersion":[32]}],[513,"kritzel-cursor-trail",{"core":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[513,"kritzel-input",{"value":[1025],"label":[1],"placeholder":[1],"suffix":[1],"type":[1],"disabled":[4],"inputValue":[32]},null,{"value":[{"onValueChange":0}]}],[513,"kritzel-numeric-input",{"value":[1026],"min":[2],"max":[2],"step":[2],"label":[1],"placeholder":[1],"inputValue":[32]},null,{"value":[{"onValueChange":0}]}],[769,"kritzel-tooltip",{"isVisible":[1028,"is-visible"],"anchorElement":[16],"triggerElement":[16],"offsetY":[2,"offset-y"],"positionX":[32],"positionY":[32],"open":[64],"close":[64],"toggle":[64],"focusContent":[64]},[[4,"click","handleOutsideClick"],[6,"pointerdown","handleOutsidePointerDown"],[4,"kritzelTooltipCloseAll","handleCloseAll"],[9,"resize","handleWindowResize"]],{"triggerElement":[{"handleTriggerElementChange":0}],"isVisible":[{"handleVisibilityChange":0}]}],[513,"kritzel-color-palette",{"colors":[16],"selectedColor":[1040],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"],"opacity":[2],"theme":[1]}],[513,"kritzel-font-family",{"fontOptions":[16],"selectedFontFamily":[1025,"selected-font-family"]}],[513,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[513,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[513,"kritzel-line-endings",{"styles":[16],"value":[1040]}],[513,"kritzel-opacity-slider",{"value":[1026],"min":[2],"max":[2],"step":[2],"previewColor":[1,"preview-color"]}],[513,"kritzel-shape-fill",{"value":[1025]}],[513,"kritzel-slide-toggle",{"checked":[1028],"disabled":[4],"label":[1]}],[513,"kritzel-avatar",{"user":[16],"name":[1],"size":[2],"color":[1],"imageError":[32]},null,{"user":[{"userChanged":0}],"profileImageUrl":[{"profileImageUrlChanged":0}]}],[513,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[513,"kritzel-color",{"value":[1],"theme":[1],"size":[2]}],[513,"kritzel-menu",{"items":[16],"parent":[16],"selectedIndex":[32],"setScrollTop":[64],"setFocus":[64]}],[513,"kritzel-menu-item",{"item":[16],"parent":[16],"isDirty":[32]},null,{"item":[{"onItemChange":0}]}],[769,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[8,"kritzel-dismiss-menus","handleDismissMenus"],[8,"click","handleOutsideClick"],[6,"pointerdown","handleOutsidePointerDown"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{"anchor":[{"anchorChanged":0}]}],[769,"kritzel-dialog",{"isOpen":[516,"is-open"],"dialogTitle":[1,"dialog-title"],"closable":[4],"closeOnBackdrop":[4,"close-on-backdrop"],"closeOnEscape":[4,"close-on-escape"],"autoFocus":[4,"auto-focus"],"trapFocus":[4,"trap-focus"],"size":[1],"fullscreenOnMobile":[4,"fullscreen-on-mobile"],"contained":[516],"isAnimating":[32],"mobileLockedHeight":[32],"containerRect":[32],"containerBorderRadius":[32],"open":[64],"close":[64],"focusFirstElement":[64]},[[8,"keydown","handleKeyDown"],[9,"resize","handleWindowResize"],[8,"orientationchange","handleOrientationChange"]],{"isOpen":[{"handleIsOpenChange":0}]}],[769,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[16],"forceOpenDirection":[1,"force-open-direction"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32],"isOpen":[32],"focusedIndex":[32],"openDirection":[32]},[[4,"click","handleDocumentClick"],[4,"keydown","handleDocumentKeydown"]],{"options":[{"optionsChanged":0}],"value":[{"externalValueChanged":0}]}],[513,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["p-fb32cd8f",[[513,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]]'),e))));
@@ -208,6 +208,14 @@ export declare class KritzelViewport {
208
208
  * @returns true if content was found and viewport is animating, false if no content exists
209
209
  */
210
210
  centerFitNearestContent(maxObjects?: number): boolean;
211
+ /**
212
+ * Centers and fits the provided objects in the viewport.
213
+ * Calculates the combined bounding box of the provided objects and optionally animates the viewport to show them.
214
+ * @param objects - Objects to include in the fit operation.
215
+ * @param animate - Whether to animate the viewport transition (default: true)
216
+ * @returns true if at least one object was provided and viewport was adjusted, false otherwise
217
+ */
218
+ centerFitObjects<T extends Element>(objects: KritzelBaseObject<T>[], animate?: boolean): boolean;
211
219
  /**
212
220
  * Centers and fits ALL objects in the viewport, including objects not currently rendered.
213
221
  * Calculates the combined bounding box of all objects and optionally animates the viewport to show them.
@@ -1,4 +1,5 @@
1
1
  import { KritzelSerializable } from '../../interfaces/serializable.interface';
2
+ import { KritzelToolType } from '../../interfaces/tool-type.interface';
2
3
  import { KritzelTool } from '../../interfaces/tool.interface';
3
4
  import { KritzelCore } from '../core/core.class';
4
5
  /**
@@ -9,6 +10,8 @@ import { KritzelCore } from '../core/core.class';
9
10
  export declare class KritzelBaseTool implements KritzelTool, KritzelSerializable {
10
11
  /** Class name identifier used for serialization/deserialization */
11
12
  __class__: string;
13
+ /** Identifies the tool type for config resolution (survives minification and dual-package bundling) */
14
+ toolType: KritzelToolType;
12
15
  /** Human-readable name of the tool */
13
16
  name: string;
14
17
  /** Reference to the Kritzel core instance for accessing store, viewport, and other core functionality */
@@ -7,6 +7,7 @@ import { ThemeAwareColor } from '../../constants/color-palette.constants';
7
7
  * Supports mouse, touch, and pen input with configurable color, size, and opacity.
8
8
  */
9
9
  export declare class KritzelBrushTool extends KritzelBaseTool {
10
+ toolType: "brush";
10
11
  /** The color of the brush stroke (supports theme-aware light/dark colors) */
11
12
  color: ThemeAwareColor;
12
13
  /** The width of the brush stroke in pixels */
@@ -6,6 +6,7 @@ import { KritzelCore } from '../core/core.class';
6
6
  * and deleted when the gesture completes. Supports mouse, touch, and pen input.
7
7
  */
8
8
  export declare class KritzelEraserTool extends KritzelBaseTool {
9
+ toolType: "eraser";
9
10
  /** Timeout handle for delayed touch start activation to prevent accidental erasing */
10
11
  touchStartTimeout: any;
11
12
  /**
@@ -14,6 +14,7 @@ import { KritzelCore } from '../core/core.class';
14
14
  * the id to a URL via the asset resolver.
15
15
  */
16
16
  export declare class KritzelImageTool extends KritzelBaseTool {
17
+ toolType: "image";
17
18
  /** Hidden file input element for image selection */
18
19
  fileInput: HTMLInputElement | null;
19
20
  /** Maximum dimension (width or height) for image compression in pixels */
@@ -9,6 +9,7 @@ import { ThemeAwareColor } from '../../constants/color-palette.constants';
9
9
  * Automatically switches to selection tool after line completion.
10
10
  */
11
11
  export declare class KritzelLineTool extends KritzelBaseTool {
12
+ toolType: "line";
12
13
  /** The stroke color of the line (supports theme-aware light/dark colors) */
13
14
  color: ThemeAwareColor;
14
15
  /** The stroke width of the line in pixels */
@@ -16,6 +16,7 @@ import { LineArrowConfig } from '../../interfaces/arrow-head.interface';
16
16
  * to specialized handlers (selection, move, resize, rotation, hover, line handle).
17
17
  */
18
18
  export declare class KritzelSelectionTool extends KritzelBaseTool {
19
+ toolType: "selection";
19
20
  /** Handler for selection box and object selection logic */
20
21
  selectionHandler: KritzelSelectionHandler;
21
22
  /** Handler for moving selected objects */
@@ -9,6 +9,7 @@ import { ThemeAwareColor } from '../../constants/color-palette.constants';
9
9
  * Automatically switches to selection tool after shape completion.
10
10
  */
11
11
  export declare class KritzelShapeTool extends KritzelBaseTool {
12
+ toolType: "shape";
12
13
  /** The type of shape to create (rectangle, ellipse, etc.) */
13
14
  shapeType: ShapeType;
14
15
  /** The fill color of the shape (supports theme-aware light/dark colors) */
@@ -8,6 +8,7 @@ import { ThemeAwareColor } from '../../constants/color-palette.constants';
8
8
  * Supports configurable font family, size, color, and opacity.
9
9
  */
10
10
  export declare class KritzelTextTool extends KritzelBaseTool {
11
+ toolType: "text";
11
12
  /** Backing field for {@link fontFamily}. */
12
13
  private _fontFamily;
13
14
  /** Backing field for {@link fontSize}. */
@@ -99,8 +99,10 @@ export declare class KritzelEditor {
99
99
  selectAllObjectsInViewport(): Promise<void>;
100
100
  clearSelection(): Promise<void>;
101
101
  centerObjectInViewport(object: KritzelBaseObject): Promise<KritzelBaseObject<HTMLElement | SVGElement>>;
102
+ panToObject(object: KritzelBaseObject): Promise<void>;
102
103
  backToContent(): Promise<boolean>;
103
104
  centerAllObjects(animate?: boolean): Promise<boolean>;
105
+ centerObjects(objects: KritzelBaseObject[], animate?: boolean): Promise<boolean>;
104
106
  setViewport(x: number, y: number, scale: number): Promise<void>;
105
107
  panTo(x: number, y: number): Promise<void>;
106
108
  zoomTo(scale: number, worldX?: number, worldY?: number): Promise<void>;
@@ -49,8 +49,10 @@ export declare class KritzelEngine {
49
49
  onUserChange(newValue: IKritzelUser | undefined): void;
50
50
  /** Context menu items shown when right-clicking the canvas background. */
51
51
  globalContextMenuItems: ContextMenuItem[];
52
+ onGlobalContextMenuItemsChange(newValue: ContextMenuItem[] | undefined): void;
52
53
  /** Context menu items shown when right-clicking a selected object. */
53
54
  objectContextMenuItems: ContextMenuItem[];
55
+ onObjectContextMenuItemsChange(newValue: ContextMenuItem[] | undefined): void;
54
56
  /** Maximum zoom scale allowed. Clamped to the absolute maximum defined by the engine. */
55
57
  scaleMax: number;
56
58
  validateScaleMax(newValue: number): void;
@@ -314,6 +316,12 @@ export declare class KritzelEngine {
314
316
  * @returns The centered object.
315
317
  */
316
318
  centerObjectInViewport(object: KritzelBaseObject): Promise<KritzelBaseObject<HTMLElement | SVGElement>>;
319
+ /**
320
+ * Pans the viewport to center on the given object without changing the zoom level.
321
+ * Unlike `centerObjectInViewport`, this moves the camera — not the object.
322
+ * @param object - The object whose center the viewport should pan to.
323
+ */
324
+ panToObject(object: KritzelBaseObject): Promise<void>;
317
325
  /**
318
326
  * Pans and zooms the viewport to fit the nearest content, with padding.
319
327
  * Useful when the user has panned away from all objects.
@@ -327,6 +335,14 @@ export declare class KritzelEngine {
327
335
  * @returns `true` if objects were found and the viewport was adjusted, `false` otherwise.
328
336
  */
329
337
  centerAllObjects(animate?: boolean): Promise<boolean>;
338
+ /**
339
+ * Pans and zooms the viewport to fit the provided objects.
340
+ * Calculates the combined bounding box of the given objects and centers the viewport to show them.
341
+ * @param objects - The objects to center and fit in the viewport.
342
+ * @param animate - Whether to animate the viewport transition (default: true).
343
+ * @returns `true` if objects were provided and the viewport was adjusted, `false` otherwise.
344
+ */
345
+ centerObjects(objects: KritzelBaseObject[], animate?: boolean): Promise<boolean>;
330
346
  /**
331
347
  * Sets the viewport to center on the given world coordinates at the specified scale.
332
348
  * @param x - X position in world coordinates to center on.
@@ -25,6 +25,7 @@ export declare class KritzelContextMenu {
25
25
  private getOpenSubmenuPaths;
26
26
  private isSubmenuOpen;
27
27
  private getParentPath;
28
+ private getMenuDepth;
28
29
  private pruneStaleRefs;
29
30
  private handleItemClick;
30
31
  private handleItemMouseEnter;
@@ -334,7 +334,7 @@ export namespace Components {
334
334
  "addObjects": <T extends KritzelBaseObject>(objects: T[]) => Promise<T[]>;
335
335
  "alignObjects": (alignment: KritzelAlignment) => Promise<void>;
336
336
  /**
337
- * @default DEFAULT_ASSET_STORAGE_CONFIG
337
+ * @default { providers: [], }
338
338
  */
339
339
  "assetStorageConfig"?: KritzelAssetStorageConfig;
340
340
  "backToContent": () => Promise<boolean>;
@@ -342,6 +342,7 @@ export namespace Components {
342
342
  "bringToFront": (object?: KritzelBaseObject<any>) => Promise<void>;
343
343
  "centerAllObjects": (animate?: boolean) => Promise<boolean>;
344
344
  "centerObjectInViewport": (object: KritzelBaseObject) => Promise<KritzelBaseObject<HTMLElement | SVGElement>>;
345
+ "centerObjects": (objects: KritzelBaseObject[], animate?: boolean) => Promise<boolean>;
345
346
  "changeActiveTool": (tool: KritzelBaseTool) => Promise<void>;
346
347
  "changeActiveToolByName": (toolName: string) => Promise<void>;
347
348
  "clearSelection": () => Promise<void>;
@@ -429,7 +430,6 @@ export namespace Components {
429
430
  "lockDrawingScale": boolean;
430
431
  /**
431
432
  * Optional login configuration. When provided, a "Sign in" button is shown that opens a login dialog with the configured providers.
432
- * @default { providers: [ { label: 'Sign in with Google', icon: 'google', name: 'Google', }, ], }
433
433
  */
434
434
  "loginConfig"?: KritzelLoginConfig;
435
435
  /**
@@ -439,6 +439,7 @@ export namespace Components {
439
439
  "openContextMenu": (options: { x: number; y: number; objectId?: string; }) => Promise<void>;
440
440
  "openLoginDialog": () => Promise<void>;
441
441
  "panTo": (x: number, y: number) => Promise<void>;
442
+ "panToObject": (object: KritzelBaseObject) => Promise<void>;
442
443
  "paste": (x: number, y: number) => Promise<void>;
443
444
  "redo": () => Promise<void>;
444
445
  "registerTool": (toolName: string, toolClass: any, toolConfig?: KritzelTextToolConfig | KritzelBrushToolConfig | KritzelLineToolConfig | KritzelShapeToolConfig) => Promise<KritzelBaseTool | null>;
@@ -446,11 +447,11 @@ export namespace Components {
446
447
  "removeObject": <T extends KritzelBaseObject>(object: T) => Promise<T | null>;
447
448
  "removeObjects": <T extends KritzelBaseObject>(objects: T[]) => Promise<T[]>;
448
449
  /**
449
- * @default ABSOLUTE_SCALE_MAX
450
+ * @default 1000
450
451
  */
451
452
  "scaleMax": number;
452
453
  /**
453
- * @default ABSOLUTE_SCALE_MIN
454
+ * @default 0.0001
454
455
  */
455
456
  "scaleMin": number;
456
457
  "screenToWorld": (x: number, y: number) => Promise<{ x: number; y: number; }>;
@@ -461,7 +462,7 @@ export namespace Components {
461
462
  "setLoginLoading": (provider: string | null) => Promise<void>;
462
463
  "setViewport": (x: number, y: number, scale: number) => Promise<void>;
463
464
  /**
464
- * @default DEFAULT_SYNC_CONFIG
465
+ * @default { providers: [], }
465
466
  */
466
467
  "syncConfig"?: KritzelSyncConfig;
467
468
  /**
@@ -551,6 +552,13 @@ export namespace Components {
551
552
  * @returns The centered object.
552
553
  */
553
554
  "centerObjectInViewport": (object: KritzelBaseObject) => Promise<KritzelBaseObject<HTMLElement | SVGElement>>;
555
+ /**
556
+ * Pans and zooms the viewport to fit the provided objects. Calculates the combined bounding box of the given objects and centers the viewport to show them.
557
+ * @param objects - The objects to center and fit in the viewport.
558
+ * @param animate - Whether to animate the viewport transition (default: true).
559
+ * @returns `true` if objects were provided and the viewport was adjusted, `false` otherwise.
560
+ */
561
+ "centerObjects": (objects: KritzelBaseObject[], animate?: boolean) => Promise<boolean>;
554
562
  /**
555
563
  * Switches the active drawing tool. Deactivates the current tool and clears any selection.
556
564
  * @param tool - The tool instance to activate.
@@ -781,6 +789,11 @@ export namespace Components {
781
789
  * @param y - Y position in world coordinates to center on.
782
790
  */
783
791
  "panTo": (x: number, y: number) => Promise<void>;
792
+ /**
793
+ * Pans the viewport to center on the given object without changing the zoom level. Unlike `centerObjectInViewport`, this moves the camera — not the object.
794
+ * @param object - The object whose center the viewport should pan to.
795
+ */
796
+ "panToObject": (object: KritzelBaseObject) => Promise<void>;
784
797
  /**
785
798
  * Pastes previously copied objects at the specified world coordinates.
786
799
  * @param x - X position in world coordinates.
@@ -822,12 +835,12 @@ export namespace Components {
822
835
  "saveSettings": (settings: KritzelSettingsConfig) => Promise<void>;
823
836
  /**
824
837
  * Maximum zoom scale allowed. Clamped to the absolute maximum defined by the engine.
825
- * @default ABSOLUTE_SCALE_MAX
838
+ * @default 1000
826
839
  */
827
840
  "scaleMax": number;
828
841
  /**
829
842
  * Minimum zoom scale allowed. Clamped to the absolute minimum defined by the engine.
830
- * @default ABSOLUTE_SCALE_MIN
843
+ * @default 0.0001
831
844
  */
832
845
  "scaleMin": number;
833
846
  /**
@@ -2492,7 +2505,7 @@ declare namespace LocalJSX {
2492
2505
  */
2493
2506
  "activeWorkspaceId"?: string;
2494
2507
  /**
2495
- * @default DEFAULT_ASSET_STORAGE_CONFIG
2508
+ * @default { providers: [], }
2496
2509
  */
2497
2510
  "assetStorageConfig"?: KritzelAssetStorageConfig;
2498
2511
  /**
@@ -2550,7 +2563,6 @@ declare namespace LocalJSX {
2550
2563
  "lockDrawingScale"?: boolean;
2551
2564
  /**
2552
2565
  * Optional login configuration. When provided, a "Sign in" button is shown that opens a login dialog with the configured providers.
2553
- * @default { providers: [ { label: 'Sign in with Google', icon: 'google', name: 'Google', }, ], }
2554
2566
  */
2555
2567
  "loginConfig"?: KritzelLoginConfig;
2556
2568
  /**
@@ -2571,15 +2583,15 @@ declare namespace LocalJSX {
2571
2583
  "onUndoStateChange"?: (event: KritzelEditorCustomEvent<KritzelUndoState1>) => void;
2572
2584
  "onViewportChange"?: (event: KritzelEditorCustomEvent<KritzelViewportState>) => void;
2573
2585
  /**
2574
- * @default ABSOLUTE_SCALE_MAX
2586
+ * @default 1000
2575
2587
  */
2576
2588
  "scaleMax"?: number;
2577
2589
  /**
2578
- * @default ABSOLUTE_SCALE_MIN
2590
+ * @default 0.0001
2579
2591
  */
2580
2592
  "scaleMin"?: number;
2581
2593
  /**
2582
- * @default DEFAULT_SYNC_CONFIG
2594
+ * @default { providers: [], }
2583
2595
  */
2584
2596
  "syncConfig"?: KritzelSyncConfig;
2585
2597
  /**
@@ -2711,12 +2723,12 @@ declare namespace LocalJSX {
2711
2723
  "onWorkspacesChange"?: (event: KritzelEngineCustomEvent<KritzelWorkspace[]>) => void;
2712
2724
  /**
2713
2725
  * Maximum zoom scale allowed. Clamped to the absolute maximum defined by the engine.
2714
- * @default ABSOLUTE_SCALE_MAX
2726
+ * @default 1000
2715
2727
  */
2716
2728
  "scaleMax"?: number;
2717
2729
  /**
2718
2730
  * Minimum zoom scale allowed. Clamped to the absolute minimum defined by the engine.
2719
- * @default ABSOLUTE_SCALE_MIN
2731
+ * @default 0.0001
2720
2732
  */
2721
2733
  "scaleMin"?: number;
2722
2734
  /**
@@ -1,4 +1,4 @@
1
- import { KritzelAssetStorageConfig } from "../interfaces/asset-storage-config.interface";
1
+ import { KritzelAssetStorageConfig } from '../interfaces/asset-storage-config.interface';
2
2
  /**
3
3
  * Default asset storage configuration. Stores bytes in IndexedDB only,
4
4
  * which provides offline-friendly behavior out of the box. Applications
@@ -1,5 +1,5 @@
1
1
  import { KritzelSyncConfig } from '../interfaces/sync-config.interface';
2
2
  /**
3
- * Default sync configuration - IndexedDB
3
+ * Default sync configuration - None
4
4
  */
5
5
  export declare const DEFAULT_SYNC_CONFIG: KritzelSyncConfig;
@@ -3,4 +3,4 @@
3
3
  * This file is auto-generated by the version bump scripts.
4
4
  * Do not modify manually.
5
5
  */
6
- export declare const KRITZEL_VERSION = "0.3.12";
6
+ export declare const KRITZEL_VERSION = "0.3.13";
@@ -12,12 +12,13 @@ export interface KritzelTheme {
12
12
  global?: {
13
13
  cursorTrailColor?: string;
14
14
  cursorTrailOpacity?: string;
15
- dividerColor?: string;
16
- focusColor?: string;
17
15
  fontFamily?: string;
18
16
  borderColor?: string;
17
+ dividerColor?: string;
18
+ focusColor?: string;
19
19
  focusRingColor?: string;
20
20
  iconColor?: string;
21
+ pointerCursor?: string;
21
22
  primaryColor?: string;
22
23
  primaryHoverColor?: string;
23
24
  primaryTextColor?: string;
@@ -25,7 +26,6 @@ export interface KritzelTheme {
25
26
  textPrimary?: string;
26
27
  textSecondary?: string;
27
28
  name?: string;
28
- pointerCursor?: string;
29
29
  };
30
30
  /** Active users variables */
31
31
  activeUsers?: {
@@ -174,8 +174,10 @@ export interface KritzelTheme {
174
174
  accentColor?: string;
175
175
  background?: string;
176
176
  borderColor?: string;
177
+ borderRadius?: string;
177
178
  hoverBackgroundColor?: string;
178
179
  hoverBorderColor?: string;
180
+ menuBorderRadius?: string;
179
181
  selectedBackgroundColor?: string;
180
182
  textColor?: string;
181
183
  triggerFontSize?: string;
@@ -308,6 +310,7 @@ export interface KritzelTheme {
308
310
  /** Numeric input variables */
309
311
  numericInput?: {
310
312
  borderColor?: string;
313
+ borderRadius?: string;
311
314
  focusBorderColor?: string;
312
315
  hoverBorderColor?: string;
313
316
  inputBackground?: string;
@@ -316,6 +319,7 @@ export interface KritzelTheme {
316
319
  selectionColor?: string;
317
320
  spinnerActiveBackground?: string;
318
321
  spinnerBackground?: string;
322
+ spinnerBorderRadius?: string;
319
323
  spinnerColor?: string;
320
324
  spinnerHoverBackground?: string;
321
325
  textColor?: string;
@@ -434,6 +438,7 @@ export interface KritzelTheme {
434
438
  textInput?: {
435
439
  background?: string;
436
440
  borderColor?: string;
441
+ borderRadius?: string;
437
442
  focusBorderColor?: string;
438
443
  hoverBorderColor?: string;
439
444
  labelColor?: string;
@@ -1,8 +1,5 @@
1
- import { KritzelBrushTool } from '../classes/tools/brush-tool.class';
2
- import { KritzelLineTool } from '../classes/tools/line-tool.class';
3
- import { KritzelShapeTool } from '../classes/tools/shape-tool.class';
4
- import { KritzelTextTool } from '../classes/tools/text-tool.class';
5
- import { KritzelSelectionTool } from '../classes/tools/selection-tool.class';
1
+ import { KritzelBaseTool } from '../classes/tools/base-tool.class';
2
+ export type { KritzelToolType } from './tool-type.interface';
6
3
  export type ToolConfigType = 'brush' | 'line' | 'shape' | 'text' | 'selection';
7
4
  export interface ToolConfigControl {
8
5
  type: 'stroke-size' | 'font-size' | 'line-endings' | 'shape-fill' | 'font-family';
@@ -19,7 +16,7 @@ export interface ToolConfigDefinition {
19
16
  sizesSource: 'sizes' | 'none';
20
17
  controls: ToolConfigControl[];
21
18
  }
22
- export type ConfigurableTool = KritzelBrushTool | KritzelLineTool | KritzelShapeTool | KritzelTextTool | KritzelSelectionTool;
19
+ export type ConfigurableTool = KritzelBaseTool;
23
20
  export interface ToolDisplayValues {
24
21
  color: string;
25
22
  size: number;
@@ -0,0 +1 @@
1
+ export type KritzelToolType = 'brush' | 'line' | 'shape' | 'text' | 'selection' | 'eraser' | 'image' | 'base';
@@ -1,5 +1,6 @@
1
1
  export interface KritzelTool {
2
2
  name: string;
3
+ toolType: string;
3
4
  handlePointerDown(event: PointerEvent): void;
4
5
  handlePointerMove(event: PointerEvent): void;
5
6
  handlePointerUp(event: PointerEvent): void;
@@ -1070,6 +1070,7 @@ export declare namespace JSXBase {
1070
1070
  importance?: 'low' | 'auto' | 'high';
1071
1071
  height?: number | string;
1072
1072
  loading?: 'lazy' | 'auto' | 'eager';
1073
+ referrerPolicy?: ReferrerPolicy;
1073
1074
  sizes?: string;
1074
1075
  src?: string;
1075
1076
  srcSet?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kritzel-stencil",
3
- "version": "0.3.12",
3
+ "version": "0.3.13",
4
4
  "description": "Stencil Component Starter",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- import{p as e,H as t,c as i,h as n,d as s,t as o}from"./p-BWj1eE2b.js";import{d as r}from"./p-CJERvHdy.js";const a=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.actionSelected=i(this,"actionSelected"),this.close=i(this,"close")}get host(){return this}items;onItemsChanged(){this.updateMenuItems()}objects;actionSelected;close;processedItems=[];openSubmenuPath="";submenuPositions={};submenuTimer=null;submenuRefs=new Map;menuItemWrapperRefs=new Map;handleOutsideClick(e){e.composedPath().includes(this.host)||this.close.emit()}componentWillLoad(){this.updateMenuItems()}componentDidLoad(){this.adjustPositionToViewport()}componentDidUpdate(){this.adjustPositionToViewport(),this.adjustSubmenuPositions(),this.pruneStaleRefs()}disconnectedCallback(){this.submenuTimer&&clearTimeout(this.submenuTimer)}adjustPositionToViewport(){const e=this.host.getBoundingClientRect(),t=window.innerWidth,i=window.innerHeight,n=parseFloat(this.host.style.left)||0,s=parseFloat(this.host.style.top)||0;let o=n,r=s;e.right>t-8&&(o=t-e.width-8),e.bottom>i-8&&(r=i-e.height-8),o<8&&(o=8),r<8&&(r=8),o===n&&r===s||(this.host.style.left=`${o}px`,this.host.style.top=`${r}px`)}adjustSubmenuPositions(){if(!this.openSubmenuPath)return;const e=window.innerHeight;for(const t of this.getOpenSubmenuPaths()){const i=this.submenuRefs.get(t),n=this.menuItemWrapperRefs.get(t);if(!i||!n)continue;const s=n.getBoundingClientRect(),o=s.top+i.offsetHeight;if(o>e-8){let t=o-(e-8);s.top-t<8&&(t=s.top-8),i.style.top=-t+"px"}else i.style.top="0px"}}getOpenSubmenuPaths(){if(!this.openSubmenuPath)return[];const e=this.openSubmenuPath.split("."),t=[];for(let i=1;i<=e.length;i++)t.push(e.slice(0,i).join("."));return t}isSubmenuOpen(e){return this.openSubmenuPath===e||this.openSubmenuPath.startsWith(e+".")}getParentPath(e){const t=e.lastIndexOf(".");return-1===t?"":e.substring(0,t)}pruneStaleRefs(){const e=new Set(this.getOpenSubmenuPaths());for(const t of Array.from(this.submenuRefs.keys()))e.has(t)||this.submenuRefs.delete(t);for(const t of Array.from(this.menuItemWrapperRefs.keys())){const i=this.getParentPath(t);""===i||e.has(i)||this.menuItemWrapperRefs.delete(t)}}handleItemClick(e,t,i){t||i||e.action&&this.actionSelected.emit(e)}handleItemMouseEnter(e,t){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null);const i=this.getParentPath(e);this.submenuTimer=t?setTimeout((()=>{const t=this.menuItemWrapperRefs.get(e);let i="right";if(t){const e=t.getBoundingClientRect(),n=window.innerWidth;i=e.right+160>n-8?"left":"right"}this.submenuPositions={...this.submenuPositions,[e]:i},this.openSubmenuPath=e}),150):setTimeout((()=>{this.openSubmenuPath=i}),150)}handleSubmenuMouseEnter(){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null)}handleSubmenuMouseLeave(e){const t=this.getParentPath(e);this.submenuTimer=setTimeout((()=>{this.openSubmenuPath=t}),150)}async updateMenuItems(){this.processedItems=await this.processItems(this.items)}async processItems(e){const t=[];for(const i of e)if(await this.evaluateProperty(i.visible,!0)){const e=await this.evaluateProperty(i.disabled,!1);let n;i.children&&i.children.length>0&&(n=await this.processItems(i.children)),t.push({item:i,isDisabled:e,processedChildren:n})}return t}async evaluateProperty(e,t){return"boolean"==typeof e?e:"function"==typeof e?await Promise.resolve(e(null,this.objects)):t}renderItems(e,t){return e.map((({item:i,isDisabled:s,processedChildren:o},r)=>{const a=""===t?String(r):`${t}.${r}`,l=r>0?e[r-1].item:null,c=l&&l.group!==i.group,u=!!o&&o.length>0,m=u&&this.isSubmenuOpen(a);return[c&&n("div",{class:"menu-divider",key:`divider-${a}`}),n("div",{class:"menu-item-wrapper",key:`wrapper-${a}`,ref:e=>e&&this.menuItemWrapperRefs.set(a,e),onMouseEnter:()=>this.handleItemMouseEnter(a,u)},n("button",{key:`${i.label}-${a}`,class:{"menu-item":!0,disabled:s,"has-children":u,"submenu-open":m},onClick:()=>this.handleItemClick(i,s,u),disabled:s&&!u},i.icon&&n("kritzel-icon",{name:i.icon,size:16}),n("span",{class:"label"},i.label),u&&n("kritzel-icon",{name:"chevron-right",size:12,class:"submenu-arrow"})),u&&m&&this.renderSubmenu(o,a))]}))}renderSubmenu(e,t){return n("div",{class:{"submenu-container":!0,"position-left":"left"==("left"===this.submenuPositions[t]?"left":"right")},key:`submenu-${t}`,ref:e=>e&&this.submenuRefs.set(t,e),onMouseEnter:()=>this.handleSubmenuMouseEnter(),onMouseLeave:()=>this.handleSubmenuMouseLeave(t)},this.renderItems(e,t))}render(){return this.processedItems&&0!==this.processedItems.length?n(s,null,n("div",{class:"menu-container"},this.renderItems(this.processedItems,""))):null}static get watchers(){return{items:[{onItemsChanged:0}]}}static get style(){return":host{display:block}.menu-container{display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:var(--kritzel-context-menu-min-width, 140px)}.menu-item-wrapper{position:relative}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:var(--kritzel-global-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent;width:100%}.menu-item:not(.disabled):hover,.menu-item.submenu-open{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa)}.menu-item.has-children.disabled{cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-context-menu-item-color, #333333)}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.menu-item.has-children.disabled kritzel-icon{opacity:0.8}.label{flex-grow:1}.submenu-arrow{margin-left:auto;opacity:0.5}.menu-divider{height:1px;background-color:var(--kritzel-context-menu-divider-color, rgba(0, 0, 0, 0.1));margin:var(--kritzel-context-menu-divider-margin, 4px 8px)}.submenu-container{position:absolute;top:0;left:100%;margin-left:4px;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:120px}.submenu-container.position-left{left:auto;right:100%;margin-left:0;margin-right:4px}"}},[513,"kritzel-context-menu",{items:[16],objects:[16],processedItems:[32],openSubmenuPath:[32],submenuPositions:[32]},[[9,"pointerdown","handleOutsideClick"]],{items:[{onItemsChanged:0}]}]);function l(){"undefined"!=typeof customElements&&["kritzel-context-menu","kritzel-icon"].forEach((e=>{switch(e){case"kritzel-context-menu":customElements.get(o(e))||customElements.define(o(e),a);break;case"kritzel-icon":customElements.get(o(e))||r()}}))}export{a as K,l as d}
@@ -1 +0,0 @@
1
- import{p as e,H as t,c as i,h as n,d as r,t as o}from"./p-BWj1eE2b.js";const a=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value;min=Number.MIN_SAFE_INTEGER;max=Number.MAX_SAFE_INTEGER;step=1;label="";placeholder="";valueChange;inputValue="";onValueChange(e){this.inputValue=this.shouldShowEmpty(e)?"":String(e)}componentWillLoad(){this.inputValue=this.shouldShowEmpty(this.value)?"":String(this.value)}shouldShowEmpty(e){return void 0===e||e===1/0||e===-1/0}normalizeValue(e){return isNaN(e)?this.value??0:Math.min(this.max,Math.max(this.min,e))}getDecimalPlaces(){const e=String(this.step),t=e.indexOf(".");return-1===t?0:e.length-t-1}roundToStep(e){const t=this.getDecimalPlaces(),i=Math.pow(10,t);return Math.round(e*i)/i}handleInput=e=>{this.inputValue=e.target.value};handleBlur=()=>{this.commitValue()};handleKeyDown=e=>{"Enter"===e.key&&this.commitValue()};handleInvalid=e=>{e.preventDefault()};commitValue(){if(""===this.inputValue.trim())return this.value=void 0,void this.valueChange.emit(void 0);const e=parseFloat(this.inputValue),t=this.normalizeValue(e);this.value=t,this.inputValue=String(t),this.valueChange.emit(t)}handleIncrement=()=>{const e=parseFloat(this.inputValue),t=isNaN(e)?this.value??0:e,i=this.normalizeValue(this.roundToStep(t+this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};handleDecrement=()=>{const e=parseFloat(this.inputValue),t=isNaN(e)?this.value??0:e,i=this.normalizeValue(this.roundToStep(t-this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};render(){return n(r,{key:"18cd66a764c334a78e2dccd444f448235b41c38c"},n("div",{key:"73305950e3e840e51466d720a2ef4f834a16adc1",class:"input-container"},this.label&&n("label",{key:"f9521cb0137f5f8c676ced5c76989d8d03256f68",class:"input-label"},this.label),n("div",{key:"07581a242db247a833cfa879b90c6da5dd06b116",class:"input-wrapper"},n("input",{key:"7faa7a9a2c8923e2b2a24c435bc47a03998ac8ad",type:"number",class:"numeric-input",title:"",min:this.min===Number.MIN_SAFE_INTEGER?void 0:this.min,max:this.max===Number.MAX_SAFE_INTEGER?void 0:this.max,step:this.step,value:this.inputValue,placeholder:this.placeholder,onInput:this.handleInput,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onInvalid:this.handleInvalid}),n("div",{key:"d3920c978a4d97032f5aec550e6ca7e74c9c2e94",class:"spinner-buttons"},n("button",{key:"ae27375f0ba66a9ca6cf53fe4a05fa219bf47711",type:"button",class:"spinner-button spinner-up",onClick:this.handleIncrement,tabIndex:-1,"aria-label":"Increase value"},n("svg",{key:"8a6e40c12468bb44400c1ad015463c830d0af13e",viewBox:"0 0 10 6",class:"spinner-icon"},n("path",{key:"70b8ee3cc3b00d7f83822078f73e0437e24a98aa",d:"M1 5L5 1L9 5",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"}))),n("button",{key:"e26968c85480cbf4cd0f3bd9d6db59f1d6ade88c",type:"button",class:"spinner-button spinner-down",onClick:this.handleDecrement,tabIndex:-1,"aria-label":"Decrease value"},n("svg",{key:"a8c72dd2909b89ceb3797d0a77e531d0b5374e1d",viewBox:"0 0 10 6",class:"spinner-icon"},n("path",{key:"16c95c8cbc90c9d49d081745384c3920620591fb",d:"M1 1L5 5L9 1",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"})))))))}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-numeric-input-label-color, #333333)}.input-wrapper{display:flex;position:relative}.numeric-input{flex:1;padding:8px 36px 8px 12px;border:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:6px;font-size:14px;color:var(--kritzel-numeric-input-text-color, #333333);background-color:var(--kritzel-numeric-input-input-background, #ffffff);outline:none;transition:border-color 150ms ease;box-sizing:border-box}.numeric-input::-webkit-outer-spin-button,.numeric-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.numeric-input[type='number']{-moz-appearance:textfield}.numeric-input::selection{background-color:var(--kritzel-numeric-input-selection-background, #007AFF);color:var(--kritzel-numeric-input-selection-color, #ffffff)}.numeric-input:hover{border-color:var(--kritzel-numeric-input-hover-border-color, #cccccc)}.numeric-input:focus{border-color:var(--kritzel-numeric-input-focus-border-color, #0066ff);border-width:2px;padding:7px 35px 7px 11px}.spinner-buttons{position:absolute;right:1px;top:1px;bottom:1px;display:flex;flex-direction:column;border-left:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:0 5px 5px 0;overflow:hidden}.spinner-button{flex:1;display:flex;align-items:center;justify-content:center;width:24px;padding:0;border:none;background-color:var(--kritzel-numeric-input-spinner-background, #f5f5f5);color:var(--kritzel-numeric-input-spinner-color, #666666);cursor:pointer;transition:background-color 150ms ease}.spinner-button:hover{background-color:var(--kritzel-numeric-input-spinner-hover-background, #ebebeb)}.spinner-button:active{background-color:var(--kritzel-numeric-input-spinner-active-background, #dddddd)}.spinner-up{border-bottom:1px solid var(--kritzel-numeric-input-border-color, #ebebeb)}.spinner-icon{width:10px;height:6px}"}},[513,"kritzel-numeric-input",{value:[1026],min:[2],max:[2],step:[2],label:[1],placeholder:[1],inputValue:[32]},void 0,{value:[{onValueChange:0}]}]);function s(){"undefined"!=typeof customElements&&["kritzel-numeric-input"].forEach((e=>{"kritzel-numeric-input"===e&&(customElements.get(o(e))||customElements.define(o(e),a))}))}export{a as K,s as d}