kritzel-stencil 0.1.73 → 0.1.75
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.
- package/dist/cjs/index-Dc7LOVhs.js +2 -2
- package/dist/cjs/index.cjs.js +131 -86
- package/dist/cjs/{kritzel-active-users_41.cjs.entry.js → kritzel-active-users_42.cjs.entry.js} +593 -177
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/stencil.cjs.js +1 -1
- package/dist/cjs/{workspace.migrations-DcwqsqPC.js → workspace.migrations-DkmVO6dE.js} +164 -49
- package/dist/collection/classes/core/core.class.js +9 -1
- package/dist/collection/classes/core/store.class.js +20 -6
- package/dist/collection/classes/core/viewport.class.js +9 -3
- package/dist/collection/classes/handlers/selection.handler.js +15 -2
- package/dist/collection/classes/managers/anchor.manager.js +101 -44
- package/dist/collection/classes/objects/base-object.class.js +2 -0
- package/dist/collection/classes/objects/custom-element.class.js +1 -0
- package/dist/collection/classes/objects/group.class.js +1 -0
- package/dist/collection/classes/objects/image.class.js +1 -0
- package/dist/collection/classes/objects/line.class.js +1 -0
- package/dist/collection/classes/objects/path.class.js +1 -0
- package/dist/collection/classes/objects/selection-box.class.js +1 -0
- package/dist/collection/classes/objects/selection-group.class.js +13 -1
- package/dist/collection/classes/objects/shape.class.js +1 -0
- package/dist/collection/classes/objects/text.class.js +1 -0
- package/dist/collection/classes/providers/broadcast-sync-provider.class.js +5 -0
- package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +120 -85
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +5 -0
- package/dist/collection/classes/providers/websocket-sync-provider.class.js +5 -0
- package/dist/collection/classes/structures/app-state-map.structure.js +15 -4
- package/dist/collection/classes/structures/object-map.structure.js +85 -7
- package/dist/collection/classes/tools/brush-tool.class.js +4 -0
- package/dist/collection/classes/tools/line-tool.class.js +4 -0
- package/dist/collection/classes/tools/shape-tool.class.js +2 -0
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +110 -0
- package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +347 -0
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +3 -3
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +150 -109
- package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -1
- package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
- package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
- package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
- package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
- package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
- package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
- package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +5 -5
- package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
- package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
- package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
- package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
- package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +1 -1
- package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
- package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
- package/dist/collection/constants/schema.constants.js +1 -1
- package/dist/collection/constants/version.js +1 -1
- package/dist/collection/interfaces/remote-cursor.interface.js +1 -0
- package/dist/collection/migrations/workspace.migrations.js +10 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-active-users.js +1 -1
- package/dist/components/kritzel-avatar.js +1 -1
- package/dist/components/kritzel-awareness-cursors.d.ts +11 -0
- package/dist/components/kritzel-awareness-cursors.js +1 -0
- package/dist/components/kritzel-back-to-content.js +1 -1
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-button.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-context-menu.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-current-user-dialog.js +1 -1
- package/dist/components/kritzel-current-user.js +1 -1
- package/dist/components/kritzel-cursor-trail.js +1 -1
- package/dist/components/kritzel-dropdown.js +1 -1
- package/dist/components/kritzel-editor.js +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-export.js +1 -1
- package/dist/components/kritzel-font-family.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-input.js +1 -1
- package/dist/components/kritzel-login-dialog.js +1 -1
- package/dist/components/kritzel-master-detail.js +1 -1
- package/dist/components/kritzel-menu-item.js +1 -1
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-more-menu.js +1 -1
- package/dist/components/kritzel-numeric-input.js +1 -1
- package/dist/components/kritzel-opacity-slider.js +1 -1
- package/dist/components/kritzel-portal.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/kritzel-share-dialog.js +1 -1
- package/dist/components/kritzel-slide-toggle.js +1 -1
- package/dist/components/kritzel-split-button.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tool-config.js +1 -1
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/kritzel-workspace-manager.js +1 -1
- package/dist/components/{p-Dp8idtVD.js → p-0kShCfeb.js} +1 -1
- package/dist/components/{p-B47JuZiD.js → p-2OYw6GJ7.js} +1 -1
- package/dist/components/p-7o2FWtFx.js +1 -0
- package/dist/components/{p-C5KuV1pK.js → p-BA0ayKqO.js} +1 -1
- package/dist/components/{p-NbNVTRk6.js → p-BEJQ2kP7.js} +1 -1
- package/dist/components/p-BSipRoFx.js +1 -0
- package/dist/components/{p-CDadAOMw.js → p-BeFUNGEI.js} +1 -1
- package/dist/components/{p-35nrk8s0.js → p-BiByyU2C.js} +1 -1
- package/dist/components/{p-CCAWSyDD.js → p-BiouZo1q.js} +1 -1
- package/dist/components/{p-CSExtYKI.js → p-ByR0VXeU.js} +1 -1
- package/dist/components/{p-1MGcXTLv.js → p-C1uR_ZNW.js} +1 -1
- package/dist/components/{p-x8PzaMuD.js → p-C69Stayh.js} +1 -1
- package/dist/components/{p-Ch0UlFwq.js → p-C7SBI_0T.js} +1 -1
- package/dist/components/{p-DEzfXrGX.js → p-CAIGuV2J.js} +1 -1
- package/dist/components/p-CJ2eHeoV.js +1 -0
- package/dist/components/p-CW-VyJgK.js +1 -0
- package/dist/components/{p-DW4ADV9w.js → p-CZhyKp-f.js} +1 -1
- package/dist/components/p-CsR4owzk.js +1 -0
- package/dist/components/{p-BG1IxseV.js → p-CsoDfhD5.js} +1 -1
- package/dist/components/{p-BgDhcDNw.js → p-D0MQFmqi.js} +1 -1
- package/dist/components/{p-DpFu5yAt.js → p-D1O7DxL4.js} +1 -1
- package/dist/components/{p-B5ouV8EQ.js → p-DRbG92F9.js} +1 -1
- package/dist/components/{p-C3eaM9TB.js → p-DS0xx1eT.js} +1 -1
- package/dist/components/{p-jx8VOz7S.js → p-DSzQ6H2j.js} +1 -1
- package/dist/components/{p-DsIlDGDO.js → p-DXjuuVq9.js} +1 -1
- package/dist/components/p-DXpYcAnT.js +1 -0
- package/dist/components/{p-DiFVw6IQ.js → p-Da46jw3N.js} +1 -1
- package/dist/components/{p-C6kZf91d.js → p-Dj_Qjga5.js} +1 -1
- package/dist/components/{p-Do0Q5-iC.js → p-DvIEvoZu.js} +1 -1
- package/dist/components/{p-CnVzLD5e.js → p-GYI7sDxr.js} +1 -1
- package/dist/components/{p-CcBM_ClD.js → p-HLbqRJGs.js} +1 -1
- package/dist/components/{p-VHyNcODZ.js → p-KQzWumjB.js} +1 -1
- package/dist/components/{p-VAkeZOZL.js → p-TyR-YTXm.js} +1 -1
- package/dist/components/p-WmxufeOo.js +9 -0
- package/dist/components/{p-CHtn5xr6.js → p-b4gyXoju.js} +1 -1
- package/dist/components/p-iRL0wQHQ.js +1 -0
- package/dist/components/{p-CqLaHE27.js → p-kj9wbLY8.js} +1 -1
- package/dist/components/{p-DaHq4iG1.js → p-xM-_OeRO.js} +1 -1
- package/dist/esm/index-MV-81ybv.js +2 -2
- package/dist/esm/index.js +132 -87
- package/dist/esm/{kritzel-active-users_41.entry.js → kritzel-active-users_42.entry.js} +593 -178
- package/dist/esm/kritzel-brush-style.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/stencil.js +1 -1
- package/dist/esm/{workspace.migrations-BGixvB76.js → workspace.migrations-D48_Bqvh.js} +164 -49
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-0dbd9a2f.entry.js +9 -0
- package/dist/stencil/p-D48_Bqvh.js +1 -0
- package/dist/stencil/{p-016ad76a.entry.js → p-fc21e29c.entry.js} +1 -1
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/store.class.d.ts +10 -2
- package/dist/types/classes/managers/anchor.manager.d.ts +4 -0
- package/dist/types/classes/objects/base-object.class.d.ts +1 -0
- package/dist/types/classes/objects/selection-group.class.d.ts +5 -0
- package/dist/types/classes/providers/broadcast-sync-provider.class.d.ts +2 -0
- package/dist/types/classes/providers/hocuspocus-sync-provider.class.d.ts +37 -1
- package/dist/types/classes/providers/indexeddb-sync-provider.class.d.ts +2 -0
- package/dist/types/classes/providers/websocket-sync-provider.class.d.ts +2 -0
- package/dist/types/classes/structures/object-map.structure.d.ts +38 -0
- package/dist/types/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.d.ts +26 -0
- package/dist/types/components.d.ts +39 -4
- package/dist/types/constants/schema.constants.d.ts +1 -1
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/interfaces/object.interface.d.ts +1 -0
- package/dist/types/interfaces/remote-cursor.interface.d.ts +17 -0
- package/dist/types/interfaces/sync-provider.interface.d.ts +16 -0
- package/dist/types/interfaces/theme.interface.d.ts +7 -0
- package/package.json +1 -1
- package/dist/components/p-BvToKcu1.js +0 -1
- package/dist/components/p-By3NOY-k.js +0 -9
- package/dist/components/p-CNro30tB.js +0 -1
- package/dist/components/p-Duv3EM3w.js +0 -1
- package/dist/components/p-KFsLHwYm.js +0 -1
- package/dist/components/p-hCORwbZh.js +0 -1
- package/dist/stencil/p-67c79d75.entry.js +0 -9
- package/dist/stencil/p-BGixvB76.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,c as t,h as o,H as n}from"./p-MV-81ybv.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:"
|
|
1
|
+
import{r as e,c as t,h as o,H as n}from"./p-MV-81ybv.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:"66ecc7850e816be6f0c38e2a53d96493e8141a7c"},o("kritzel-dropdown",{key:"792caa0c4ff4c8ee3c5dfd404ba5456e6a4c16e4",options:e,value:this.type,onValueChanged:e=>this.handleDropdownValueChange(e)},o("button",{key:"7c82f747c86846c19635be47c797371300855f5e",class:"brush-style-button",slot:"prefix"},o("kritzel-icon",{key:"59d4863c0660d0c6281031321e11518c57d8ae71",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-MV-81ybv.js";export{s as setNonce}from"./p-MV-81ybv.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-67c79d75",[[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],"customSvgIcons":[16],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"syncConfig":[16],"loginConfig":[16],"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],"currentTheme":[32],"shortcuts":[32],"currentIsPublic":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[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],"disable":[64],"enable":[64],"copy":[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],"downloadAsJson":[64],"importFromFile":[64],"loadObjectsFromJson":[64],"getObjectsTotalCount":[64],"getAllObjects":[64],"findObjects":[64],"getCopiedObjects":[64],"getObjectsInViewport":[64],"hideContextMenu":[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}],"currentTheme":[{"onCurrentThemeChange":0}]}],[513,"kritzel-controls",{"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],"closeTooltip":[64]},[[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"],[4,"objectsSelectionChange","handleSelectionChange"]],{"theme":[{"onThemeChange":0}]}],[513,"kritzel-export",{"workspaceName":[1,"workspace-name"],"isDialogOpen":[32],"previewUrl":[32],"isLoading":[32],"activeTab":[32],"exportFilename":[32],"viewportExportFormat":[32],"open":[64]}],[513,"kritzel-settings",{"shortcuts":[16],"editorId":[1,"editor-id"],"isDialogOpen":[32],"selectedCategoryId":[32],"scaleMin":[32],"scaleMax":[32],"lockDrawingScale":[32],"currentTheme":[32],"viewportBoundaryLeft":[32],"viewportBoundaryRight":[32],"viewportBoundaryTop":[32],"viewportBoundaryBottom":[32],"debugInfo":[32],"open":[64]}],[513,"kritzel-workspace-manager",{"activeWorkspace":[1040],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-more-menu",{"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-engine",{"workspace":[16],"editorId":[1,"editor-id"],"activeWorkspaceId":[1,"active-workspace-id"],"syncConfig":[16],"user":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"cursorTarget":[16],"lockDrawingScale":[4,"lock-drawing-scale"],"theme":[1],"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"],"forceUpdate":[32],"triggerSelectionChange":[64],"registerTool":[64],"changeActiveTool":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"alignObjects":[64],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"getAllObjects":[64],"findObjects":[64],"getObjectsTotalCount":[64],"addObject":[64],"updateObject":[64],"removeObject":[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]},[[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}],"user":[{"onUserChange":0}],"scaleMax":[{"validateScaleMax":0}],"scaleMin":[{"validateScaleMin":0}],"cursorTarget":[{"onCursorTargetChange":0}],"lockDrawingScale":[{"onLockDrawingScaleChange":0}],"theme":[{"onThemeChange":0}],"viewportBoundaryLeft":[{"onViewportBoundaryLeftChange":0}],"viewportBoundaryRight":[{"onViewportBoundaryRightChange":0}],"viewportBoundaryTop":[{"onViewportBoundaryTopChange":0}],"viewportBoundaryBottom":[{"onViewportBoundaryBottomChange":0}],"debugInfo":[{"onDebugInfoChange":0}]}],[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],"config":[32],"palette":[32],"currentOpacity":[32],"updateTrigger":[32]},[[4,"objectsSelectionChange","handleSelectionChange"]],{"tool":[{"handleToolChange":0}],"theme":[{"onThemeChange":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],"openSubmenuIndex":[32],"submenuPosition":[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-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-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}]}],[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"],[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"],"isAnimating":[32],"mobileLockedHeight":[32],"open":[64],"close":[64],"focusFirstElement":[64]},[[8,"keydown","handleKeyDown"]],{"isOpen":[{"handleIsOpenChange":0}]}],[513,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["p-016ad76a",[[513,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]]'),e))));
|
|
1
|
+
import{p as e,b as o}from"./p-MV-81ybv.js";export{s as setNonce}from"./p-MV-81ybv.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-0dbd9a2f",[[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],"customSvgIcons":[16],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"syncConfig":[16],"loginConfig":[16],"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],"currentTheme":[32],"shortcuts":[32],"currentIsPublic":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[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],"disable":[64],"enable":[64],"copy":[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],"downloadAsJson":[64],"importFromFile":[64],"loadObjectsFromJson":[64],"getObjectsTotalCount":[64],"getAllObjects":[64],"findObjects":[64],"getCopiedObjects":[64],"getObjectsInViewport":[64],"hideContextMenu":[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}],"currentTheme":[{"onCurrentThemeChange":0}]}],[513,"kritzel-controls",{"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],"closeTooltip":[64]},[[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"],[4,"objectsSelectionChange","handleSelectionChange"]],{"theme":[{"onThemeChange":0}]}],[513,"kritzel-export",{"workspaceName":[1,"workspace-name"],"isDialogOpen":[32],"previewUrl":[32],"isLoading":[32],"activeTab":[32],"exportFilename":[32],"viewportExportFormat":[32],"open":[64]}],[513,"kritzel-settings",{"shortcuts":[16],"editorId":[1,"editor-id"],"isDialogOpen":[32],"selectedCategoryId":[32],"scaleMin":[32],"scaleMax":[32],"lockDrawingScale":[32],"currentTheme":[32],"viewportBoundaryLeft":[32],"viewportBoundaryRight":[32],"viewportBoundaryTop":[32],"viewportBoundaryBottom":[32],"debugInfo":[32],"open":[64]}],[513,"kritzel-workspace-manager",{"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],"user":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"cursorTarget":[16],"lockDrawingScale":[4,"lock-drawing-scale"],"theme":[1],"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"],"forceUpdate":[32],"triggerSelectionChange":[64],"registerTool":[64],"changeActiveTool":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"alignObjects":[64],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"getAllObjects":[64],"findObjects":[64],"getObjectsTotalCount":[64],"addObject":[64],"updateObject":[64],"removeObject":[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]},[[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}],"user":[{"onUserChange":0}],"scaleMax":[{"validateScaleMax":0}],"scaleMin":[{"validateScaleMin":0}],"cursorTarget":[{"onCursorTargetChange":0}],"lockDrawingScale":[{"onLockDrawingScaleChange":0}],"theme":[{"onThemeChange":0}],"viewportBoundaryLeft":[{"onViewportBoundaryLeftChange":0}],"viewportBoundaryRight":[{"onViewportBoundaryRightChange":0}],"viewportBoundaryTop":[{"onViewportBoundaryTopChange":0}],"viewportBoundaryBottom":[{"onViewportBoundaryBottomChange":0}],"debugInfo":[{"onDebugInfoChange":0}]}],[513,"kritzel-more-menu",{"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],"config":[32],"palette":[32],"currentOpacity":[32],"updateTrigger":[32]},[[4,"objectsSelectionChange","handleSelectionChange"]],{"tool":[{"handleToolChange":0}],"theme":[{"onThemeChange":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],"openSubmenuIndex":[32],"submenuPosition":[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-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}]}],[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"],[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"],"isAnimating":[32],"mobileLockedHeight":[32],"open":[64],"close":[64],"focusFirstElement":[64]},[[8,"keydown","handleKeyDown"]],{"isOpen":[{"handleIsOpenChange":0}]}],[513,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["p-fc21e29c",[[513,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]]'),e))));
|
|
@@ -21,6 +21,7 @@ export declare class KritzelStore {
|
|
|
21
21
|
private _cachedSelectionGroup;
|
|
22
22
|
private _selectionBoxCacheValid;
|
|
23
23
|
private _selectionGroupCacheValid;
|
|
24
|
+
private _localUserId;
|
|
24
25
|
/**
|
|
25
26
|
* Gets the current engine state.
|
|
26
27
|
* @returns The mutable engine state object
|
|
@@ -76,9 +77,10 @@ export declare class KritzelStore {
|
|
|
76
77
|
*/
|
|
77
78
|
get selectionBox(): KritzelSelectionBox | null;
|
|
78
79
|
/**
|
|
79
|
-
* Gets the current selection group if one exists.
|
|
80
|
+
* Gets the current local user's selection group if one exists.
|
|
81
|
+
* When a local user ID is set, returns only the selection group belonging to that user.
|
|
80
82
|
* Uses caching for O(1) access after initial lookup.
|
|
81
|
-
* @returns The selection group or null if none exists
|
|
83
|
+
* @returns The local user's selection group or null if none exists
|
|
82
84
|
*/
|
|
83
85
|
get selectionGroup(): KritzelSelectionGroup | null;
|
|
84
86
|
/**
|
|
@@ -97,6 +99,12 @@ export declare class KritzelStore {
|
|
|
97
99
|
* @param group - The selection group to cache, or null to clear the cache
|
|
98
100
|
*/
|
|
99
101
|
setSelectionGroup(group: KritzelSelectionGroup | null): void;
|
|
102
|
+
/**
|
|
103
|
+
* Sets the local user ID for scoping selection group lookups.
|
|
104
|
+
* When set, the selectionGroup getter returns only the group owned by this user.
|
|
105
|
+
* @param userId - The local user's ID, or null for non-collaborative mode
|
|
106
|
+
*/
|
|
107
|
+
setLocalUserId(userId: string | null): void;
|
|
100
108
|
/**
|
|
101
109
|
* Gets the currently active text object being edited.
|
|
102
110
|
* @returns The text object in editing mode, or null if none
|
|
@@ -460,6 +460,10 @@ export declare class KritzelAnchorManager {
|
|
|
460
460
|
* @returns Object with x and y coordinates in the line's local SVG space.
|
|
461
461
|
*/
|
|
462
462
|
private lineWorldToLocal;
|
|
463
|
+
private getSafeScale;
|
|
464
|
+
private areFiniteNumbers;
|
|
465
|
+
private isFiniteAnchorVisualization;
|
|
466
|
+
private isFinitePathData;
|
|
463
467
|
/**
|
|
464
468
|
* Checks if an object can be used as an anchor target.
|
|
465
469
|
* Excludes selection-related objects (SelectionBox, SelectionGroup) and
|
|
@@ -33,6 +33,7 @@ export declare class KritzelBaseObject<T extends Element = HTMLElement | SVGElem
|
|
|
33
33
|
rotation: number;
|
|
34
34
|
markedForRemoval: boolean;
|
|
35
35
|
zIndex: number;
|
|
36
|
+
userId?: string;
|
|
36
37
|
/** Whether the object is currently visible on the canvas */
|
|
37
38
|
isVisible: boolean;
|
|
38
39
|
isSelected: boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { KritzelCore } from '../core/core.class';
|
|
2
2
|
import { KritzelBaseObject } from './base-object.class';
|
|
3
|
+
import { ThemeAwareColor } from '../../constants/color-palette.constants';
|
|
3
4
|
/**
|
|
4
5
|
* Represents a snapshot of an object's transform state at a specific point in time.
|
|
5
6
|
* Used to preserve initial values during transform operations (rotate, resize)
|
|
@@ -45,6 +46,9 @@ export declare class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement
|
|
|
45
46
|
maxX: number;
|
|
46
47
|
minY: number;
|
|
47
48
|
maxY: number;
|
|
49
|
+
handleColor?: ThemeAwareColor;
|
|
50
|
+
handleStrokeColor?: ThemeAwareColor;
|
|
51
|
+
handleSize: number;
|
|
48
52
|
/**
|
|
49
53
|
* Gets the array of object IDs contained in this selection group.
|
|
50
54
|
* @returns Array of string IDs for the selected objects
|
|
@@ -76,6 +80,7 @@ export declare class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement
|
|
|
76
80
|
/**
|
|
77
81
|
* Factory method to create a new KritzelSelectionGroup instance.
|
|
78
82
|
* Initializes the selection group with default properties and associates it with the core instance.
|
|
83
|
+
* Default styling uses values from the theme system (selection section).
|
|
79
84
|
* @param core - The KritzelCore instance to associate with this selection group
|
|
80
85
|
* @returns A new KritzelSelectionGroup instance configured with default settings
|
|
81
86
|
*/
|
|
@@ -5,6 +5,7 @@ import { ISyncProvider } from '../../interfaces/sync-provider.interface';
|
|
|
5
5
|
* This is a lightweight alternative to y-webrtc for browser-tab-only sync
|
|
6
6
|
*/
|
|
7
7
|
export declare class BroadcastSyncProvider implements ISyncProvider {
|
|
8
|
+
readonly type = "local";
|
|
8
9
|
private readonly doc;
|
|
9
10
|
private readonly channel;
|
|
10
11
|
private _synced;
|
|
@@ -16,5 +17,6 @@ export declare class BroadcastSyncProvider implements ISyncProvider {
|
|
|
16
17
|
private broadcastSync;
|
|
17
18
|
connect(): Promise<void>;
|
|
18
19
|
disconnect(): void;
|
|
20
|
+
reconnect(): Promise<void>;
|
|
19
21
|
destroy(): void;
|
|
20
22
|
}
|
|
@@ -28,7 +28,8 @@ export interface HocuspocusOptions {
|
|
|
28
28
|
*/
|
|
29
29
|
quiet?: boolean;
|
|
30
30
|
/**
|
|
31
|
-
* Callback when connected (optional)
|
|
31
|
+
* Callback when connected (optional).
|
|
32
|
+
* Fires on every connection, including reconnections after a disconnect.
|
|
32
33
|
*/
|
|
33
34
|
onConnect?: () => void;
|
|
34
35
|
/**
|
|
@@ -57,6 +58,31 @@ export interface HocuspocusOptions {
|
|
|
57
58
|
* WebSocket polyfill for Node.js environments (optional)
|
|
58
59
|
*/
|
|
59
60
|
WebSocketPolyfill?: any;
|
|
61
|
+
/**
|
|
62
|
+
* Timeout in milliseconds for the initial connect() call (optional, defaults to 10000).
|
|
63
|
+
* Note: Even if the timeout fires, the underlying provider continues reconnecting in the background.
|
|
64
|
+
*/
|
|
65
|
+
connectionTimeout?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Base delay in milliseconds between reconnect attempts (optional, defaults to 1000)
|
|
68
|
+
*/
|
|
69
|
+
delay?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Exponential backoff multiplier for reconnect delay (optional, defaults to 2)
|
|
72
|
+
*/
|
|
73
|
+
factor?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Maximum number of reconnect attempts before giving up (optional, defaults to 0 = infinite)
|
|
76
|
+
*/
|
|
77
|
+
maxAttempts?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Minimum delay in milliseconds between reconnect attempts (optional)
|
|
80
|
+
*/
|
|
81
|
+
minDelay?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Maximum delay in milliseconds between reconnect attempts (optional)
|
|
84
|
+
*/
|
|
85
|
+
maxDelay?: number;
|
|
60
86
|
}
|
|
61
87
|
/**
|
|
62
88
|
* Options for creating a shared WebSocket connection
|
|
@@ -85,11 +111,13 @@ export interface HocuspocusWebSocketOptions {
|
|
|
85
111
|
status: string;
|
|
86
112
|
}) => void;
|
|
87
113
|
}
|
|
114
|
+
export type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'synced';
|
|
88
115
|
/**
|
|
89
116
|
* Hocuspocus sync provider for real-time collaboration
|
|
90
117
|
* Supports multiplexing - multiple documents can share the same WebSocket connection
|
|
91
118
|
*/
|
|
92
119
|
export declare class HocuspocusSyncProvider implements ISyncProvider {
|
|
120
|
+
readonly type = "network";
|
|
93
121
|
private provider;
|
|
94
122
|
private isConnected;
|
|
95
123
|
private isSynced;
|
|
@@ -97,9 +125,16 @@ export declare class HocuspocusSyncProvider implements ISyncProvider {
|
|
|
97
125
|
private isDestroyed;
|
|
98
126
|
private connectTimeout;
|
|
99
127
|
private pendingConnectReject;
|
|
128
|
+
private connectionTimeoutMs;
|
|
129
|
+
private _connectionStatus;
|
|
130
|
+
private visibilityHandler;
|
|
131
|
+
private onlineHandler;
|
|
100
132
|
get awareness(): Awareness;
|
|
133
|
+
get connectionStatus(): ConnectionStatus;
|
|
101
134
|
private static sharedWebSocketProvider;
|
|
102
135
|
constructor(docName: string, doc: Y.Doc, options?: HocuspocusOptions);
|
|
136
|
+
private setupBrowserEventListeners;
|
|
137
|
+
private removeBrowserEventListeners;
|
|
103
138
|
/**
|
|
104
139
|
* Create a shared WebSocket connection for multiplexing
|
|
105
140
|
* Call this once to create a shared connection that multiple providers can use
|
|
@@ -120,6 +155,7 @@ export declare class HocuspocusSyncProvider implements ISyncProvider {
|
|
|
120
155
|
*/
|
|
121
156
|
static with(options?: HocuspocusOptions): ProviderFactory;
|
|
122
157
|
connect(): Promise<void>;
|
|
158
|
+
reconnect(): Promise<void>;
|
|
123
159
|
disconnect(): void;
|
|
124
160
|
destroy(): void;
|
|
125
161
|
}
|
|
@@ -13,10 +13,12 @@ export interface IndexedDBOptions {
|
|
|
13
13
|
* IndexedDB sync provider for local persistence
|
|
14
14
|
*/
|
|
15
15
|
export declare class IndexedDBSyncProvider implements ISyncProvider {
|
|
16
|
+
readonly type = "local";
|
|
16
17
|
private provider;
|
|
17
18
|
private isConnected;
|
|
18
19
|
constructor(docName: string, doc: Y.Doc, options?: IndexedDBOptions);
|
|
19
20
|
connect(): Promise<void>;
|
|
20
21
|
disconnect(): void;
|
|
22
|
+
reconnect(): Promise<void>;
|
|
21
23
|
destroy(): void;
|
|
22
24
|
}
|
|
@@ -42,6 +42,7 @@ export interface WebSocketOptions {
|
|
|
42
42
|
* WebSocket sync provider for real-time collaboration
|
|
43
43
|
*/
|
|
44
44
|
export declare class WebSocketSyncProvider implements ISyncProvider {
|
|
45
|
+
readonly type = "network";
|
|
45
46
|
private provider;
|
|
46
47
|
private isConnected;
|
|
47
48
|
private _quiet;
|
|
@@ -55,5 +56,6 @@ export declare class WebSocketSyncProvider implements ISyncProvider {
|
|
|
55
56
|
private setupEventListeners;
|
|
56
57
|
connect(): Promise<void>;
|
|
57
58
|
disconnect(): void;
|
|
59
|
+
reconnect(): Promise<void>;
|
|
58
60
|
destroy(): void;
|
|
59
61
|
}
|
|
@@ -32,6 +32,7 @@ export declare class KritzelObjectMap<T extends KritzelBaseObject<any>> {
|
|
|
32
32
|
private _stackItemPoppedHandler;
|
|
33
33
|
private _awarenessChangeHandler;
|
|
34
34
|
private _awarenessChangeCallbacks;
|
|
35
|
+
private _objectsChangeCallbacks;
|
|
35
36
|
private _lastAwarenessEmitTime;
|
|
36
37
|
private _awarenessEmitTimeout;
|
|
37
38
|
private readonly AWARENESS_THROTTLE_INTERVAL;
|
|
@@ -44,11 +45,21 @@ export declare class KritzelObjectMap<T extends KritzelBaseObject<any>> {
|
|
|
44
45
|
* Returns the Yjs Awareness instance, if a network provider is available.
|
|
45
46
|
*/
|
|
46
47
|
get awareness(): Awareness | null;
|
|
48
|
+
/**
|
|
49
|
+
* Whether a network awareness instance is available.
|
|
50
|
+
*/
|
|
51
|
+
get hasAwareness(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the local client ID from the awareness instance.
|
|
54
|
+
* Used to filter out the local user when rendering remote cursors.
|
|
55
|
+
*/
|
|
56
|
+
get localClientId(): number | null;
|
|
47
57
|
/**
|
|
48
58
|
* Sets the local user identity in the awareness state.
|
|
49
59
|
* This broadcasts the user's identity to all connected peers.
|
|
50
60
|
*/
|
|
51
61
|
setLocalUser(user?: IKritzelUser): void;
|
|
62
|
+
private generateColorFromName;
|
|
52
63
|
/**
|
|
53
64
|
* Updates the local cursor position in the awareness state.
|
|
54
65
|
* This broadcasts the cursor position to all connected peers.
|
|
@@ -58,11 +69,38 @@ export declare class KritzelObjectMap<T extends KritzelBaseObject<any>> {
|
|
|
58
69
|
* Clears the local cursor position (e.g., when the pointer leaves the canvas).
|
|
59
70
|
*/
|
|
60
71
|
clearCursorPosition(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Sets the ID of the object currently being drawn by the local user.
|
|
74
|
+
* Remote clients use this to derive cursor position from the object's latest
|
|
75
|
+
* coordinates instead of the throttled awareness cursor, reducing desync.
|
|
76
|
+
* Pass `null` when drawing ends.
|
|
77
|
+
*/
|
|
78
|
+
setActiveDrawingObject(objectId: string | null): void;
|
|
79
|
+
/**
|
|
80
|
+
* Broadcasts the local user's selection box bounds via awareness.
|
|
81
|
+
* Remote clients use this to render the selection rectangle in the user's color.
|
|
82
|
+
*/
|
|
83
|
+
setLocalSelectionBox(box: {
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
86
|
+
width: number;
|
|
87
|
+
height: number;
|
|
88
|
+
}): void;
|
|
89
|
+
/**
|
|
90
|
+
* Clears the local selection box from awareness (e.g., when selection completes or is cancelled).
|
|
91
|
+
*/
|
|
92
|
+
clearLocalSelectionBox(): void;
|
|
61
93
|
/**
|
|
62
94
|
* Registers a callback to be invoked when the awareness state changes.
|
|
63
95
|
* The callback receives the full awareness states map.
|
|
64
96
|
*/
|
|
65
97
|
onAwarenessChange(callback: (states: Map<number, Record<string, any>>) => void): void;
|
|
98
|
+
/**
|
|
99
|
+
* Registers a callback to be invoked when remote object changes are received.
|
|
100
|
+
* Used by the awareness cursors component to re-derive cursor positions
|
|
101
|
+
* from the latest object data when a remote user is actively drawing.
|
|
102
|
+
*/
|
|
103
|
+
onObjectsChange(callback: () => void): void;
|
|
66
104
|
/**
|
|
67
105
|
* Returns the Yjs UndoManager instance for managing undo/redo operations.
|
|
68
106
|
* @returns The UndoManager instance, or `null` if not initialized
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { KritzelCore } from '../../../classes/core/core.class';
|
|
2
|
+
import { KritzelRemoteCursorState } from '../../../interfaces/remote-cursor.interface';
|
|
3
|
+
export declare class KritzelAwarenessCursors {
|
|
4
|
+
core: KritzelCore;
|
|
5
|
+
showEdgeIndicators: boolean;
|
|
6
|
+
edgeIndicatorPadding: number;
|
|
7
|
+
remoteCursors: Map<number, KritzelRemoteCursorState>;
|
|
8
|
+
objectVersion: number;
|
|
9
|
+
private cleanupIntervalId;
|
|
10
|
+
private objectChangeRafId;
|
|
11
|
+
componentDidLoad(): void;
|
|
12
|
+
disconnectedCallback(): void;
|
|
13
|
+
private handleAwarenessChange;
|
|
14
|
+
private cleanupStaleCursors;
|
|
15
|
+
private isStale;
|
|
16
|
+
private hasActiveDrawingCursors;
|
|
17
|
+
private handleRemoteObjectChange;
|
|
18
|
+
private getActiveObjectTip;
|
|
19
|
+
private worldToScreen;
|
|
20
|
+
private isInViewport;
|
|
21
|
+
private clampToEdge;
|
|
22
|
+
private getUserDisplayName;
|
|
23
|
+
render(): any;
|
|
24
|
+
private renderCursor;
|
|
25
|
+
private renderEdgeIndicator;
|
|
26
|
+
}
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
|
|
8
8
|
import { IKritzelUser } from "./interfaces/user.interface";
|
|
9
|
+
import { KritzelCore } from "./classes/core/core.class";
|
|
9
10
|
import { BrushStyleOption } from "./components/shared/kritzel-brush-style/kritzel-brush-style";
|
|
10
11
|
import { ThemeAwareColor, ThemeMode } from "./constants/color-palette.constants";
|
|
11
12
|
import { ContextMenuItem } from "./interfaces/context-menu-item.interface";
|
|
12
13
|
import { KritzelBaseObject } from "./classes/objects/base-object.class";
|
|
13
14
|
import { KritzelBrushToolConfig, KritzelLineToolConfig, KritzelShapeToolConfig, KritzelTextToolConfig, KritzelToolbarControl } from "./interfaces/toolbar-control.interface";
|
|
14
15
|
import { KritzelUndoState } from "./interfaces/undo-state.interface";
|
|
15
|
-
import { KritzelCore } from "./classes/core/core.class";
|
|
16
16
|
import { IKritzelDialogCloseEvent, KritzelDialogCloseReason } from "./interfaces/dialog.interface";
|
|
17
17
|
import { DropdownOption } from "./components/shared/kritzel-dropdown/kritzel-dropdown";
|
|
18
18
|
import { KritzelDebugInfo } from "./interfaces/debug-info.interface";
|
|
@@ -43,13 +43,13 @@ import { KritzelSettingsConfig } from "./interfaces/settings.interface";
|
|
|
43
43
|
import { ShapeFillType } from "./components/shared/kritzel-shape-fill/kritzel-shape-fill";
|
|
44
44
|
import { ConfigurableTool, ToolDisplayValues } from "./interfaces/tool-config.interface";
|
|
45
45
|
export { IKritzelUser } from "./interfaces/user.interface";
|
|
46
|
+
export { KritzelCore } from "./classes/core/core.class";
|
|
46
47
|
export { BrushStyleOption } from "./components/shared/kritzel-brush-style/kritzel-brush-style";
|
|
47
48
|
export { ThemeAwareColor, ThemeMode } from "./constants/color-palette.constants";
|
|
48
49
|
export { ContextMenuItem } from "./interfaces/context-menu-item.interface";
|
|
49
50
|
export { KritzelBaseObject } from "./classes/objects/base-object.class";
|
|
50
51
|
export { KritzelBrushToolConfig, KritzelLineToolConfig, KritzelShapeToolConfig, KritzelTextToolConfig, KritzelToolbarControl } from "./interfaces/toolbar-control.interface";
|
|
51
52
|
export { KritzelUndoState } from "./interfaces/undo-state.interface";
|
|
52
|
-
export { KritzelCore } from "./classes/core/core.class";
|
|
53
53
|
export { IKritzelDialogCloseEvent, KritzelDialogCloseReason } from "./interfaces/dialog.interface";
|
|
54
54
|
export { DropdownOption } from "./components/shared/kritzel-dropdown/kritzel-dropdown";
|
|
55
55
|
export { KritzelDebugInfo } from "./interfaces/debug-info.interface";
|
|
@@ -121,6 +121,17 @@ export namespace Components {
|
|
|
121
121
|
*/
|
|
122
122
|
"user"?: IKritzelUser;
|
|
123
123
|
}
|
|
124
|
+
interface KritzelAwarenessCursors {
|
|
125
|
+
"core": KritzelCore;
|
|
126
|
+
/**
|
|
127
|
+
* @default 8
|
|
128
|
+
*/
|
|
129
|
+
"edgeIndicatorPadding": number;
|
|
130
|
+
/**
|
|
131
|
+
* @default true
|
|
132
|
+
*/
|
|
133
|
+
"showEdgeIndicators": boolean;
|
|
134
|
+
}
|
|
124
135
|
interface KritzelBackToContent {
|
|
125
136
|
/**
|
|
126
137
|
* The text to display on the button
|
|
@@ -403,7 +414,7 @@ export namespace Components {
|
|
|
403
414
|
"setLoginLoading": (provider: string | null) => Promise<void>;
|
|
404
415
|
"setViewport": (x: number, y: number, scale: number) => Promise<void>;
|
|
405
416
|
/**
|
|
406
|
-
* @default { providers: [IndexedDBSyncProvider]
|
|
417
|
+
* @default { providers: [IndexedDBSyncProvider] }
|
|
407
418
|
*/
|
|
408
419
|
"syncConfig"?: KritzelSyncConfig;
|
|
409
420
|
"triggerSelectionChange": () => Promise<void>;
|
|
@@ -1364,6 +1375,12 @@ declare global {
|
|
|
1364
1375
|
prototype: HTMLKritzelAvatarElement;
|
|
1365
1376
|
new (): HTMLKritzelAvatarElement;
|
|
1366
1377
|
};
|
|
1378
|
+
interface HTMLKritzelAwarenessCursorsElement extends Components.KritzelAwarenessCursors, HTMLStencilElement {
|
|
1379
|
+
}
|
|
1380
|
+
var HTMLKritzelAwarenessCursorsElement: {
|
|
1381
|
+
prototype: HTMLKritzelAwarenessCursorsElement;
|
|
1382
|
+
new (): HTMLKritzelAwarenessCursorsElement;
|
|
1383
|
+
};
|
|
1367
1384
|
interface HTMLKritzelBackToContentElementEventMap {
|
|
1368
1385
|
"backToContent": void;
|
|
1369
1386
|
}
|
|
@@ -2043,6 +2060,7 @@ declare global {
|
|
|
2043
2060
|
interface HTMLElementTagNameMap {
|
|
2044
2061
|
"kritzel-active-users": HTMLKritzelActiveUsersElement;
|
|
2045
2062
|
"kritzel-avatar": HTMLKritzelAvatarElement;
|
|
2063
|
+
"kritzel-awareness-cursors": HTMLKritzelAwarenessCursorsElement;
|
|
2046
2064
|
"kritzel-back-to-content": HTMLKritzelBackToContentElement;
|
|
2047
2065
|
"kritzel-brush-style": HTMLKritzelBrushStyleElement;
|
|
2048
2066
|
"kritzel-button": HTMLKritzelButtonElement;
|
|
@@ -2127,6 +2145,17 @@ declare namespace LocalJSX {
|
|
|
2127
2145
|
*/
|
|
2128
2146
|
"user"?: IKritzelUser;
|
|
2129
2147
|
}
|
|
2148
|
+
interface KritzelAwarenessCursors {
|
|
2149
|
+
"core"?: KritzelCore;
|
|
2150
|
+
/**
|
|
2151
|
+
* @default 8
|
|
2152
|
+
*/
|
|
2153
|
+
"edgeIndicatorPadding"?: number;
|
|
2154
|
+
/**
|
|
2155
|
+
* @default true
|
|
2156
|
+
*/
|
|
2157
|
+
"showEdgeIndicators"?: boolean;
|
|
2158
|
+
}
|
|
2130
2159
|
interface KritzelBackToContent {
|
|
2131
2160
|
/**
|
|
2132
2161
|
* Emitted when the button is clicked
|
|
@@ -2389,7 +2418,7 @@ declare namespace LocalJSX {
|
|
|
2389
2418
|
*/
|
|
2390
2419
|
"scaleMin"?: number;
|
|
2391
2420
|
/**
|
|
2392
|
-
* @default { providers: [IndexedDBSyncProvider]
|
|
2421
|
+
* @default { providers: [IndexedDBSyncProvider] }
|
|
2393
2422
|
*/
|
|
2394
2423
|
"syncConfig"?: KritzelSyncConfig;
|
|
2395
2424
|
"user"?: IKritzelUser;
|
|
@@ -3001,6 +3030,10 @@ declare namespace LocalJSX {
|
|
|
3001
3030
|
"size": number;
|
|
3002
3031
|
"color": string;
|
|
3003
3032
|
}
|
|
3033
|
+
interface KritzelAwarenessCursorsAttributes {
|
|
3034
|
+
"showEdgeIndicators": boolean;
|
|
3035
|
+
"edgeIndicatorPadding": number;
|
|
3036
|
+
}
|
|
3004
3037
|
interface KritzelBackToContentAttributes {
|
|
3005
3038
|
"visible": boolean;
|
|
3006
3039
|
"text": string;
|
|
@@ -3173,6 +3206,7 @@ declare namespace LocalJSX {
|
|
|
3173
3206
|
interface IntrinsicElements {
|
|
3174
3207
|
"kritzel-active-users": Omit<KritzelActiveUsers, keyof KritzelActiveUsersAttributes> & { [K in keyof KritzelActiveUsers & keyof KritzelActiveUsersAttributes]?: KritzelActiveUsers[K] } & { [K in keyof KritzelActiveUsers & keyof KritzelActiveUsersAttributes as `attr:${K}`]?: KritzelActiveUsersAttributes[K] } & { [K in keyof KritzelActiveUsers & keyof KritzelActiveUsersAttributes as `prop:${K}`]?: KritzelActiveUsers[K] };
|
|
3175
3208
|
"kritzel-avatar": Omit<KritzelAvatar, keyof KritzelAvatarAttributes> & { [K in keyof KritzelAvatar & keyof KritzelAvatarAttributes]?: KritzelAvatar[K] } & { [K in keyof KritzelAvatar & keyof KritzelAvatarAttributes as `attr:${K}`]?: KritzelAvatarAttributes[K] } & { [K in keyof KritzelAvatar & keyof KritzelAvatarAttributes as `prop:${K}`]?: KritzelAvatar[K] };
|
|
3209
|
+
"kritzel-awareness-cursors": Omit<KritzelAwarenessCursors, keyof KritzelAwarenessCursorsAttributes> & { [K in keyof KritzelAwarenessCursors & keyof KritzelAwarenessCursorsAttributes]?: KritzelAwarenessCursors[K] } & { [K in keyof KritzelAwarenessCursors & keyof KritzelAwarenessCursorsAttributes as `attr:${K}`]?: KritzelAwarenessCursorsAttributes[K] } & { [K in keyof KritzelAwarenessCursors & keyof KritzelAwarenessCursorsAttributes as `prop:${K}`]?: KritzelAwarenessCursors[K] };
|
|
3176
3210
|
"kritzel-back-to-content": Omit<KritzelBackToContent, keyof KritzelBackToContentAttributes> & { [K in keyof KritzelBackToContent & keyof KritzelBackToContentAttributes]?: KritzelBackToContent[K] } & { [K in keyof KritzelBackToContent & keyof KritzelBackToContentAttributes as `attr:${K}`]?: KritzelBackToContentAttributes[K] } & { [K in keyof KritzelBackToContent & keyof KritzelBackToContentAttributes as `prop:${K}`]?: KritzelBackToContent[K] };
|
|
3177
3211
|
"kritzel-brush-style": Omit<KritzelBrushStyle, keyof KritzelBrushStyleAttributes> & { [K in keyof KritzelBrushStyle & keyof KritzelBrushStyleAttributes]?: KritzelBrushStyle[K] } & { [K in keyof KritzelBrushStyle & keyof KritzelBrushStyleAttributes as `attr:${K}`]?: KritzelBrushStyleAttributes[K] } & { [K in keyof KritzelBrushStyle & keyof KritzelBrushStyleAttributes as `prop:${K}`]?: KritzelBrushStyle[K] };
|
|
3178
3212
|
"kritzel-button": Omit<KritzelButton, keyof KritzelButtonAttributes> & { [K in keyof KritzelButton & keyof KritzelButtonAttributes]?: KritzelButton[K] } & { [K in keyof KritzelButton & keyof KritzelButtonAttributes as `attr:${K}`]?: KritzelButtonAttributes[K] } & { [K in keyof KritzelButton & keyof KritzelButtonAttributes as `prop:${K}`]?: KritzelButton[K] };
|
|
@@ -3221,6 +3255,7 @@ declare module "@stencil/core" {
|
|
|
3221
3255
|
interface IntrinsicElements {
|
|
3222
3256
|
"kritzel-active-users": LocalJSX.IntrinsicElements["kritzel-active-users"] & JSXBase.HTMLAttributes<HTMLKritzelActiveUsersElement>;
|
|
3223
3257
|
"kritzel-avatar": LocalJSX.IntrinsicElements["kritzel-avatar"] & JSXBase.HTMLAttributes<HTMLKritzelAvatarElement>;
|
|
3258
|
+
"kritzel-awareness-cursors": LocalJSX.IntrinsicElements["kritzel-awareness-cursors"] & JSXBase.HTMLAttributes<HTMLKritzelAwarenessCursorsElement>;
|
|
3224
3259
|
"kritzel-back-to-content": LocalJSX.IntrinsicElements["kritzel-back-to-content"] & JSXBase.HTMLAttributes<HTMLKritzelBackToContentElement>;
|
|
3225
3260
|
"kritzel-brush-style": LocalJSX.IntrinsicElements["kritzel-brush-style"] & JSXBase.HTMLAttributes<HTMLKritzelBrushStyleElement>;
|
|
3226
3261
|
"kritzel-button": LocalJSX.IntrinsicElements["kritzel-button"] & JSXBase.HTMLAttributes<HTMLKritzelButtonElement>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Current schema version for the app-state Y.Doc (workspace list & settings). */
|
|
2
2
|
export declare const CURRENT_APP_STATE_SCHEMA_VERSION = 2;
|
|
3
3
|
/** Current schema version for workspace Y.Docs (drawable objects). */
|
|
4
|
-
export declare const CURRENT_WORKSPACE_SCHEMA_VERSION =
|
|
4
|
+
export declare const CURRENT_WORKSPACE_SCHEMA_VERSION = 2;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IKritzelUser } from './user.interface';
|
|
2
|
+
export interface KritzelRemoteCursorState {
|
|
3
|
+
clientId: number;
|
|
4
|
+
user: IKritzelUser;
|
|
5
|
+
cursor: {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
} | null;
|
|
9
|
+
activeObjectId: string | null;
|
|
10
|
+
selectionBox: {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
} | null;
|
|
16
|
+
lastUpdated: number;
|
|
17
|
+
}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
2
|
import { Awareness } from 'y-protocols/awareness';
|
|
3
|
+
/**
|
|
4
|
+
* Distinguishes local-only providers (IndexedDB, BroadcastChannel) from
|
|
5
|
+
* network providers (WebSocket, Hocuspocus) that require a server connection.
|
|
6
|
+
*/
|
|
7
|
+
export type SyncProviderType = 'local' | 'network';
|
|
3
8
|
/**
|
|
4
9
|
* Interface for sync providers that handle data synchronization across different mediums
|
|
5
10
|
* (IndexedDB, BroadcastChannel, WebSocket, etc.)
|
|
6
11
|
*/
|
|
7
12
|
export interface ISyncProvider {
|
|
13
|
+
/**
|
|
14
|
+
* Whether this provider operates locally or over the network.
|
|
15
|
+
* Local providers resolve quickly and are awaited during initialization.
|
|
16
|
+
* Network providers connect in the background so they don't block the editor.
|
|
17
|
+
*/
|
|
18
|
+
readonly type: SyncProviderType;
|
|
8
19
|
/**
|
|
9
20
|
* The Yjs Awareness instance for this provider, if supported.
|
|
10
21
|
* Network providers (WebSocket, Hocuspocus) return an Awareness instance;
|
|
@@ -19,6 +30,11 @@ export interface ISyncProvider {
|
|
|
19
30
|
* Disconnect the provider (can be reconnected later)
|
|
20
31
|
*/
|
|
21
32
|
disconnect(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Disconnect and reconnect the provider.
|
|
35
|
+
* Useful for recovering from stale connections after network changes or tab visibility restore.
|
|
36
|
+
*/
|
|
37
|
+
reconnect(): Promise<void>;
|
|
22
38
|
/**
|
|
23
39
|
* Destroy the provider and clean up all resources
|
|
24
40
|
*/
|
|
@@ -45,6 +45,13 @@ export interface KritzelTheme {
|
|
|
45
45
|
initialsFontFamily?: string;
|
|
46
46
|
initialsFontWeight?: string;
|
|
47
47
|
};
|
|
48
|
+
/** Awareness variables */
|
|
49
|
+
awareness?: {
|
|
50
|
+
cursorLabelFontSize?: string;
|
|
51
|
+
cursorLabelTextColor?: string;
|
|
52
|
+
cursorTransitionDuration?: string;
|
|
53
|
+
edgeIndicatorSize?: string;
|
|
54
|
+
};
|
|
48
55
|
/** Back to content variables */
|
|
49
56
|
backToContent?: {
|
|
50
57
|
activeBackgroundColor?: string;
|