kritzel-stencil 0.3.22 → 0.3.23
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.cjs.js +3 -1
- package/dist/cjs/kritzel-active-users_45.cjs.entry.js +507 -288
- package/dist/cjs/{schema.constants-IBG5VW_J.js → schema.constants-Lr_zNkox.js} +713 -47
- package/dist/collection/classes/core/core.class.js +83 -5
- package/dist/collection/classes/core/store.class.js +9 -0
- package/dist/collection/classes/handlers/key.handler.js +1 -1
- package/dist/collection/classes/handlers/selection.handler.js +13 -9
- package/dist/collection/classes/objects/base-object.class.js +20 -8
- package/dist/collection/classes/objects/custom-element.class.js +330 -8
- package/dist/collection/classes/objects/image.class.js +0 -1
- package/dist/collection/classes/objects/selection-group.class.js +12 -0
- package/dist/collection/classes/providers/assets/asset-resolver.class.js +24 -14
- package/dist/collection/classes/providers/assets/indexeddb-asset-provider.class.js +0 -8
- package/dist/collection/classes/registries/custom-element-renderer.registry.js +52 -0
- package/dist/collection/classes/structures/app-state-map.structure.js +17 -3
- package/dist/collection/classes/structures/object-map.structure.js +17 -3
- package/dist/collection/classes/tools/selection-tool.class.js +34 -6
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +9 -8
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +211 -78
- package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +2 -1
- package/dist/collection/configs/default-engine-config.js +3 -2
- package/dist/collection/constants/version.js +1 -1
- package/dist/collection/helpers/html.helper.js +52 -0
- package/dist/collection/helpers/object.helper.js +3 -0
- package/dist/collection/helpers/svg-export.helper.js +35 -0
- package/dist/collection/helpers/wheel.helper.js +113 -0
- package/dist/collection/index.js +3 -0
- package/dist/collection/interfaces/custom-element-renderer.interface.js +1 -0
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-awareness-cursors.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-dialog.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-login-dialog.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-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-split-button.js +1 -1
- package/dist/components/kritzel-tool-config.js +1 -1
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-workspace-manager.js +1 -1
- package/dist/components/{p-BwuemYET.js → p-B4WfPDj0.js} +1 -1
- package/dist/components/p-BNu3Akp5.js +1 -0
- package/dist/components/p-BYveczcb.js +1 -0
- package/dist/components/{p-D28ZylHn.js → p-BixEMVtW.js} +1 -1
- package/dist/components/{p-Ndib1Jb3.js → p-BntMEYss.js} +1 -1
- package/dist/components/p-C48bv_0f.js +9 -0
- package/dist/components/{p-BO1CnEOT.js → p-CPMpf9ku.js} +1 -1
- package/dist/components/{p-BhODnvMO.js → p-CZQz_mul.js} +1 -1
- package/dist/components/{p-COj8EVzL.js → p-Ckpa5tHF.js} +1 -1
- package/dist/components/{p-BPoDE87Q.js → p-DJ3KI725.js} +1 -1
- package/dist/components/{p-DRsD38Nl.js → p-DPlEzPKO.js} +1 -1
- package/dist/components/{p-C-RiEw9X.js → p-DSd5xTAH.js} +1 -1
- package/dist/components/{p-CbMLbDou.js → p-DTqMF94b.js} +1 -1
- package/dist/components/{p-CHrSFOSI.js → p-DX2nriaq.js} +1 -1
- package/dist/components/{p-BAN5dnHX.js → p-Dd-pMvlr.js} +1 -1
- package/dist/components/{p-C5TZjIE1.js → p-M9m9-OEY.js} +1 -1
- package/dist/components/p-WUdQqYnu.js +1 -0
- package/dist/components/{p-YFR180v-.js → p-XDNjFYRB.js} +1 -1
- package/dist/components/{p-CJEIUs0x.js → p-X_pyPCe8.js} +1 -1
- package/dist/components/{p-CpR9lc-o.js → p-meY80XnF.js} +1 -1
- package/dist/components/{p-6Ca7Eolf.js → p-y5T0_Wvi.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-active-users_45.entry.js +500 -281
- package/dist/esm/{schema.constants-D35cwCYd.js → schema.constants-DMPBDrZh.js} +711 -47
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-27d41f6f.entry.js +9 -0
- package/dist/stencil/p-DMPBDrZh.js +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/core.class.d.ts +15 -0
- package/dist/types/classes/core/store.class.d.ts +6 -0
- package/dist/types/classes/objects/base-object.class.d.ts +3 -2
- package/dist/types/classes/objects/custom-element.class.d.ts +87 -21
- package/dist/types/classes/objects/image.class.d.ts +0 -1
- package/dist/types/classes/objects/selection-group.class.d.ts +1 -0
- package/dist/types/classes/providers/assets/asset-resolver.class.d.ts +3 -0
- package/dist/types/classes/providers/assets/indexeddb-asset-provider.class.d.ts +0 -1
- package/dist/types/classes/registries/custom-element-renderer.registry.d.ts +32 -0
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +7 -1
- package/dist/types/components.d.ts +2 -2
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/helpers/html.helper.d.ts +2 -0
- package/dist/types/helpers/object.helper.d.ts +1 -0
- package/dist/types/helpers/svg-export.helper.d.ts +9 -0
- package/dist/types/helpers/wheel.helper.d.ts +9 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/interfaces/asset-storage-config.interface.d.ts +0 -4
- package/dist/types/interfaces/custom-element-renderer.interface.d.ts +40 -0
- package/dist/types/interfaces/debug-info.interface.d.ts +1 -0
- package/dist/types/interfaces/object.interface.d.ts +0 -1
- package/package.json +1 -1
- package/dist/components/p-BML28BJR.js +0 -1
- package/dist/components/p-CVV-HzFR.js +0 -1
- package/dist/components/p-DWhWFDcC.js +0 -9
- package/dist/components/p-Dd_EODkk.js +0 -1
- package/dist/stencil/p-D35cwCYd.js +0 -1
- package/dist/stencil/p-fcbf7965.entry.js +0 -9
|
@@ -1 +1 @@
|
|
|
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-fcbf7965",[[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"],"debugInfo":[1040],"user":[16],"activeUsers":[16],"controls":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"themes":[16],"theme":[1025],"licenseKey":[1,"license-key"],"locale":[1025],"locales":[16],"fallbackLocale":[1,"fallback-locale"],"customSvgIcons":[16],"isPanningEnabled":[1028,"is-panning-enabled"],"isZoomingEnabled":[1028,"is-zooming-enabled"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isWorkspaceManagerVisible":[4,"is-workspace-manager-visible"],"isMoreMenuVisible":[4,"is-more-menu-visible"],"isZoomPanelVisible":[4,"is-zoom-panel-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],"resolvedTerms":[32],"availableLocaleOptions":[32],"currentZoomPercent":[32],"shortcuts":[32],"currentIsPublic":[32],"isEditorVisible":[32],"activeNotification":[32],"isNotificationDismissing":[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],"zoomIn":[64],"zoomOut":[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],"getObjectsInViewport":[64],"hideContextMenu":[64],"openContextMenu":[64],"triggerSelectionChange":[64],"getDisplayableShortcuts":[64],"triggerNotification":[64],"openLoginDialog":[64],"setLoginLoading":[64],"setLocale":[64],"getLocale":[64],"getAvailableLocales":[64],"registerLocales":[64],"t":[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}],"locale":[{"onLocaleChange":0}]}],[513,"kritzel-controls",{"visible":[4],"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"theme":[1],"terms":[16],"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],"availableLocales":[16],"shortcuts":[16],"terms":[16],"settings":[16],"isDialogOpen":[32],"selectedCategoryId":[32],"scaleMin":[32],"scaleMax":[32],"lockDrawingScale":[32],"theme":[32],"locale":[32],"viewportBoundaryLeft":[32],"viewportBoundaryRight":[32],"viewportBoundaryTop":[32],"viewportBoundaryBottom":[32],"debugInfo":[32],"open":[64]},null,{"settings":[{"onSettingsPropChange":0}]}],[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],"licenseKey":[1,"license-key"],"themes":[16],"locale":[1],"locales":[16],"fallbackLocale":[1,"fallback-locale"],"viewportBoundaryLeft":[2,"viewport-boundary-left"],"viewportBoundaryRight":[2,"viewport-boundary-right"],"viewportBoundaryTop":[2,"viewport-boundary-top"],"viewportBoundaryBottom":[2,"viewport-boundary-bottom"],"debugInfo":[16],"isPanningEnabled":[4,"is-panning-enabled"],"isZoomingEnabled":[4,"is-zooming-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],"zoomIn":[64],"zoomOut":[64],"getViewport":[64],"screenToWorld":[64],"worldToScreen":[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],"registerLocales":[64],"setLocale":[64],"getLocale":[64],"getAvailableLocales":[64],"getAvailableLocaleOptions":[64],"t":[64],"getResolvedTerms":[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"],[8,"copy","handleCopy"],[8,"cut","handleCut"],[8,"paste","handlePaste"],[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}],"licenseKey":[{"onLicenseKeyChange":0}],"themes":[{"onThemesChange":0}],"locale":[{"onLocaleChange":0}],"locales":[{"onLocalesChange":0}],"fallbackLocale":[{"onFallbackLocaleChange":0}],"viewportBoundaryLeft":[{"onViewportBoundaryLeftChange":0}],"viewportBoundaryRight":[{"onViewportBoundaryRightChange":0}],"viewportBoundaryTop":[{"onViewportBoundaryTopChange":0}],"viewportBoundaryBottom":[{"onViewportBoundaryBottomChange":0}],"debugInfo":[{"onDebugInfoChange":0}],"isLoading":[{"onIsLoadingChange":0}]}],[513,"kritzel-export",{"workspaceName":[1,"workspace-name"],"terms":[16],"isDialogOpen":[32],"previewUrl":[32],"isLoading":[32],"activeTab":[32],"exportFilename":[32],"viewportExportFormat":[32],"open":[64]}],[513,"kritzel-workspace-manager",{"visible":[4],"activeWorkspace":[1040],"workspaces":[16],"terms":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-more-menu",{"visible":[4],"items":[16],"icon":[1],"iconSize":[2,"icon-size"],"offsetY":[2,"offset-y"],"terms":[16],"menuAnchor":[32],"isTouchDevice":[32]}],[513,"kritzel-current-user",{"user":[16],"avatarSize":[2,"avatar-size"],"terms":[16]}],[513,"kritzel-share-dialog",{"isPublic":[4,"is-public"],"workspaceId":[1,"workspace-id"],"terms":[16],"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]}],[513,"kritzel-notification-card",{"notification":[16],"showTimestamp":[4,"show-timestamp"],"locale":[1]}],[513,"kritzel-zoom-panel",{"visible":[4],"disabled":[4],"zoomPercent":[2,"zoom-percent"],"terms":[16]}],[769,"kritzel-button",{"variant":[1],"disabled":[4],"type":[1]}],[513,"kritzel-tool-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"theme":[1],"engine":[16],"terms":[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],"terms":[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],"terms":[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-watermark",{"core":[16],"label":[1]}],[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))));
|
|
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-27d41f6f",[[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"],"debugInfo":[1040],"user":[16],"activeUsers":[16],"controls":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"themes":[16],"theme":[1025],"licenseKey":[1,"license-key"],"locale":[1025],"locales":[16],"fallbackLocale":[1,"fallback-locale"],"customSvgIcons":[16],"isPanningEnabled":[1028,"is-panning-enabled"],"isZoomingEnabled":[1028,"is-zooming-enabled"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isWorkspaceManagerVisible":[4,"is-workspace-manager-visible"],"isMoreMenuVisible":[4,"is-more-menu-visible"],"isZoomPanelVisible":[4,"is-zoom-panel-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],"resolvedTerms":[32],"availableLocaleOptions":[32],"currentZoomPercent":[32],"shortcuts":[32],"currentIsPublic":[32],"isEditorVisible":[32],"activeNotification":[32],"isNotificationDismissing":[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],"zoomIn":[64],"zoomOut":[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],"getObjectsInViewport":[64],"hideContextMenu":[64],"openContextMenu":[64],"triggerSelectionChange":[64],"getDisplayableShortcuts":[64],"triggerNotification":[64],"openLoginDialog":[64],"setLoginLoading":[64],"setLocale":[64],"getLocale":[64],"getAvailableLocales":[64],"registerLocales":[64],"t":[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}],"locale":[{"onLocaleChange":0}]}],[513,"kritzel-controls",{"visible":[4],"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"theme":[1],"terms":[16],"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],"availableLocales":[16],"shortcuts":[16],"terms":[16],"settings":[16],"isDialogOpen":[32],"selectedCategoryId":[32],"scaleMin":[32],"scaleMax":[32],"lockDrawingScale":[32],"theme":[32],"locale":[32],"viewportBoundaryLeft":[32],"viewportBoundaryRight":[32],"viewportBoundaryTop":[32],"viewportBoundaryBottom":[32],"debugInfo":[32],"open":[64]},null,{"settings":[{"onSettingsPropChange":0}]}],[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],"licenseKey":[1,"license-key"],"themes":[16],"locale":[1],"locales":[16],"fallbackLocale":[1,"fallback-locale"],"viewportBoundaryLeft":[2,"viewport-boundary-left"],"viewportBoundaryRight":[2,"viewport-boundary-right"],"viewportBoundaryTop":[2,"viewport-boundary-top"],"viewportBoundaryBottom":[2,"viewport-boundary-bottom"],"debugInfo":[16],"isPanningEnabled":[4,"is-panning-enabled"],"isZoomingEnabled":[4,"is-zooming-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],"zoomIn":[64],"zoomOut":[64],"getViewport":[64],"screenToWorld":[64],"worldToScreen":[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],"registerLocales":[64],"setLocale":[64],"getLocale":[64],"getAvailableLocales":[64],"getAvailableLocaleOptions":[64],"t":[64],"getResolvedTerms":[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"],[8,"copy","handleCopy"],[8,"cut","handleCut"],[8,"paste","handlePaste"],[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}],"licenseKey":[{"onLicenseKeyChange":0}],"themes":[{"onThemesChange":0}],"locale":[{"onLocaleChange":0}],"locales":[{"onLocalesChange":0}],"fallbackLocale":[{"onFallbackLocaleChange":0}],"viewportBoundaryLeft":[{"onViewportBoundaryLeftChange":0}],"viewportBoundaryRight":[{"onViewportBoundaryRightChange":0}],"viewportBoundaryTop":[{"onViewportBoundaryTopChange":0}],"viewportBoundaryBottom":[{"onViewportBoundaryBottomChange":0}],"debugInfo":[{"onDebugInfoChange":0}],"isLoading":[{"onIsLoadingChange":0}]}],[513,"kritzel-export",{"workspaceName":[1,"workspace-name"],"terms":[16],"isDialogOpen":[32],"previewUrl":[32],"isLoading":[32],"activeTab":[32],"exportFilename":[32],"viewportExportFormat":[32],"open":[64]}],[513,"kritzel-workspace-manager",{"visible":[4],"activeWorkspace":[1040],"workspaces":[16],"terms":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-more-menu",{"visible":[4],"items":[16],"icon":[1],"iconSize":[2,"icon-size"],"offsetY":[2,"offset-y"],"terms":[16],"menuAnchor":[32],"isTouchDevice":[32]}],[513,"kritzel-current-user",{"user":[16],"avatarSize":[2,"avatar-size"],"terms":[16]}],[513,"kritzel-share-dialog",{"isPublic":[4,"is-public"],"workspaceId":[1,"workspace-id"],"terms":[16],"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]}],[513,"kritzel-notification-card",{"notification":[16],"showTimestamp":[4,"show-timestamp"],"locale":[1]}],[513,"kritzel-zoom-panel",{"visible":[4],"disabled":[4],"zoomPercent":[2,"zoom-percent"],"terms":[16]}],[769,"kritzel-button",{"variant":[1],"disabled":[4],"type":[1]}],[513,"kritzel-tool-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"theme":[1],"engine":[16],"terms":[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],"terms":[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],"terms":[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-watermark",{"core":[16],"label":[1]}],[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))));
|
|
@@ -302,6 +302,21 @@ export declare class KritzelCore {
|
|
|
302
302
|
* @param selectionGroup - The selection group to add
|
|
303
303
|
*/
|
|
304
304
|
addSelectionGroup(selectionGroup: KritzelSelectionGroup): void;
|
|
305
|
+
/**
|
|
306
|
+
* Returns whether the provided selection group belongs to the local user context.
|
|
307
|
+
* Local groups are either explicitly owned by the current user or have no user ID.
|
|
308
|
+
*/
|
|
309
|
+
private isLocalSelectionGroup;
|
|
310
|
+
/**
|
|
311
|
+
* Applies deselection teardown side effects to a selection group before removal.
|
|
312
|
+
*/
|
|
313
|
+
private teardownSelectionGroup;
|
|
314
|
+
/**
|
|
315
|
+
* Removes all local selection groups from the store, including orphaned groups
|
|
316
|
+
* that are no longer referenced by store.selectionGroup.
|
|
317
|
+
* @returns True when at least one local selection group was removed
|
|
318
|
+
*/
|
|
319
|
+
private removeLocalSelectionGroups;
|
|
305
320
|
/**
|
|
306
321
|
* Removes the current selection group from the canvas.
|
|
307
322
|
* Clears the cached reference and triggers the selection change event.
|
|
@@ -5,6 +5,7 @@ import { KritzelText } from '../objects/text.class';
|
|
|
5
5
|
import { KritzelShape } from '../objects/shape.class';
|
|
6
6
|
import { KritzelPath } from '../objects/path.class';
|
|
7
7
|
import { KritzelLine } from '../objects/line.class';
|
|
8
|
+
import { KritzelCustomElement } from '../objects/custom-element.class';
|
|
8
9
|
import { StateChangeListener, StatePropertyKey } from '../../types/state.types';
|
|
9
10
|
import { KritzelObjectMap } from '../structures/object-map.structure';
|
|
10
11
|
import { KritzelBaseObject } from '../objects/base-object.class';
|
|
@@ -130,6 +131,11 @@ export declare class KritzelStore {
|
|
|
130
131
|
* @returns The shape object in editing mode, or null if none
|
|
131
132
|
*/
|
|
132
133
|
get activeShape(): KritzelShape | null;
|
|
134
|
+
/**
|
|
135
|
+
* Gets the currently selected custom element whose focused descendant is an input-like element.
|
|
136
|
+
* @returns The interactive custom element with focused input-like content, or null if none matches
|
|
137
|
+
*/
|
|
138
|
+
get activeInteractiveCustomElement(): KritzelCustomElement | null;
|
|
133
139
|
/**
|
|
134
140
|
* Gets the path currently being drawn (not yet completed).
|
|
135
141
|
* @returns The incomplete path object, or null if no path is being drawn
|
|
@@ -41,7 +41,8 @@ export declare class KritzelBaseObject<T extends Element = HTMLElement | SVGElem
|
|
|
41
41
|
isMounted: boolean;
|
|
42
42
|
isEditable: boolean;
|
|
43
43
|
isInteractive: boolean;
|
|
44
|
-
|
|
44
|
+
isResizable: boolean;
|
|
45
|
+
isRotatable: boolean;
|
|
45
46
|
/**
|
|
46
47
|
* Gets the total width of the object including padding.
|
|
47
48
|
* @returns The width plus double the padding value
|
|
@@ -198,7 +199,7 @@ export declare class KritzelBaseObject<T extends Element = HTMLElement | SVGElem
|
|
|
198
199
|
/**
|
|
199
200
|
* Serializes the object to a plain JavaScript object for persistence.
|
|
200
201
|
* Excludes internal references (_core, _elementRef) and computed properties.
|
|
201
|
-
*
|
|
202
|
+
* Subclasses should override to handle domain-specific serialization (e.g., HTML elements).
|
|
202
203
|
* @returns A serializable object containing all persistent properties
|
|
203
204
|
*/
|
|
204
205
|
serialize(): any;
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { KritzelCore } from '../core/core.class';
|
|
2
2
|
import { KritzelBaseObject } from './base-object.class';
|
|
3
|
+
export interface KritzelCustomElementConfig {
|
|
4
|
+
element?: HTMLElement;
|
|
5
|
+
rendererKey?: string;
|
|
6
|
+
rendererData?: unknown;
|
|
7
|
+
translateX?: number;
|
|
8
|
+
translateY?: number;
|
|
9
|
+
rotation?: number;
|
|
10
|
+
scale?: number;
|
|
11
|
+
height?: number;
|
|
12
|
+
width?: number;
|
|
13
|
+
}
|
|
3
14
|
/**
|
|
4
15
|
* Represents a custom HTML element that can be placed and manipulated on the Kritzel canvas.
|
|
5
16
|
* Extends KritzelBaseObject to inherit common object functionality like positioning,
|
|
@@ -9,8 +20,17 @@ export declare class KritzelCustomElement extends KritzelBaseObject<HTMLElement>
|
|
|
9
20
|
__class__: string;
|
|
10
21
|
/** The HTML element to be rendered on the canvas. */
|
|
11
22
|
element: HTMLElement;
|
|
12
|
-
/**
|
|
13
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Optional identifier for a registered renderer (e.g., 'angular-component', 'react-default').
|
|
25
|
+
* When set, mount() resolves the renderer from a global registry and delegates lifecycle.
|
|
26
|
+
* If null, falls back to DOM element mounting.
|
|
27
|
+
*/
|
|
28
|
+
rendererKey: string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Custom data payload for the renderer (e.g., Angular component inputs, React props, Vue data).
|
|
31
|
+
* Only meaningful when rendererKey is set. Captured on unmount and restored on rehydrate.
|
|
32
|
+
*/
|
|
33
|
+
rendererData?: unknown;
|
|
14
34
|
/**
|
|
15
35
|
* Creates a new KritzelCustomElement instance.
|
|
16
36
|
* @param config - Optional configuration object for the custom element.
|
|
@@ -21,15 +41,7 @@ export declare class KritzelCustomElement extends KritzelBaseObject<HTMLElement>
|
|
|
21
41
|
* @param config.height - Initial height in pixels. Defaults to 0.
|
|
22
42
|
* @param config.width - Initial width in pixels. Defaults to 0.
|
|
23
43
|
*/
|
|
24
|
-
constructor(config?:
|
|
25
|
-
element: HTMLElement;
|
|
26
|
-
translateX?: number;
|
|
27
|
-
translateY?: number;
|
|
28
|
-
rotation?: number;
|
|
29
|
-
scale?: number;
|
|
30
|
-
height?: number;
|
|
31
|
-
width?: number;
|
|
32
|
-
});
|
|
44
|
+
constructor(config?: KritzelCustomElementConfig);
|
|
33
45
|
/**
|
|
34
46
|
* Factory method to create a new KritzelCustomElement with proper core binding.
|
|
35
47
|
* Generates a unique ID and assigns the element to the active workspace.
|
|
@@ -43,22 +55,62 @@ export declare class KritzelCustomElement extends KritzelBaseObject<HTMLElement>
|
|
|
43
55
|
* @param config.width - Initial width in pixels.
|
|
44
56
|
* @returns A new KritzelBaseObject instance bound to the core.
|
|
45
57
|
*/
|
|
46
|
-
static create(core: KritzelCore, config?:
|
|
47
|
-
element: HTMLElement;
|
|
48
|
-
translateX?: number;
|
|
49
|
-
translateY?: number;
|
|
50
|
-
rotation?: number;
|
|
51
|
-
scale?: number;
|
|
52
|
-
height?: number;
|
|
53
|
-
width?: number;
|
|
54
|
-
}): KritzelBaseObject<Element>;
|
|
58
|
+
static create(core: KritzelCore, config?: KritzelCustomElementConfig): KritzelBaseObject<Element>;
|
|
55
59
|
/**
|
|
56
60
|
* Mounts the custom element to a container element in the DOM.
|
|
57
|
-
*
|
|
61
|
+
* If a renderer is registered for this.rendererKey, delegates to the renderer.
|
|
62
|
+
* Otherwise, uses the standard DOM element mounting fallback.
|
|
58
63
|
* Skips mounting if already mounted to the same container with content attached.
|
|
59
64
|
* @param element - The container HTML element to mount this custom element into.
|
|
60
65
|
*/
|
|
61
66
|
mount(element: HTMLElement): void;
|
|
67
|
+
/**
|
|
68
|
+
* Updates interactivity state for embedded HTML content.
|
|
69
|
+
* When disabling interactivity, any focused descendant is blurred so
|
|
70
|
+
* keyboard input is released immediately.
|
|
71
|
+
*/
|
|
72
|
+
setIsInteractive(isInteractive: boolean): void;
|
|
73
|
+
private applyInteractiveState;
|
|
74
|
+
private blurFocusedDescendant;
|
|
75
|
+
/**
|
|
76
|
+
* Returns true when a text-input-like element inside this custom element
|
|
77
|
+
* currently owns focus.
|
|
78
|
+
*/
|
|
79
|
+
hasFocusedInputElement(): boolean;
|
|
80
|
+
private getFocusHosts;
|
|
81
|
+
/**
|
|
82
|
+
* Returns true when the given host (or, via the flat tree, one of its shadow descendants)
|
|
83
|
+
* currently contains a focused input-like element.
|
|
84
|
+
*/
|
|
85
|
+
private hasFocusedInputDescendant;
|
|
86
|
+
/**
|
|
87
|
+
* Walks the `:focus` chain from a tree scope, descending into open shadow roots, and returns
|
|
88
|
+
* the focused element when it is input-like.
|
|
89
|
+
*/
|
|
90
|
+
private findFocusedInputLikeElement;
|
|
91
|
+
private matchesFocus;
|
|
92
|
+
private isInputLikeElement;
|
|
93
|
+
private isNodeInsideHost;
|
|
94
|
+
private getDeepActiveElement;
|
|
95
|
+
/**
|
|
96
|
+
* Unmounts the custom element and performs cleanup.
|
|
97
|
+
* If a renderer is registered, delegates to renderer.onUnmount and captures returned state.
|
|
98
|
+
* Otherwise, simply removes from DOM.
|
|
99
|
+
* Called when object is deleted, viewport culled, or editor is unloading.
|
|
100
|
+
*/
|
|
101
|
+
unmount(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Returns whether the rendered content contains a scrollable element.
|
|
104
|
+
* Traverses light DOM, open shadow roots, and slotted content so nested
|
|
105
|
+
* framework components are detected as well.
|
|
106
|
+
*/
|
|
107
|
+
isElementScrollable(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Creates a placeholder element when HTML deserialization fails.
|
|
110
|
+
* Used as fallback to ensure element is always defined.
|
|
111
|
+
* @returns A div element with placeholder styling
|
|
112
|
+
*/
|
|
113
|
+
private createPlaceholder;
|
|
62
114
|
/**
|
|
63
115
|
* Resizes and repositions the custom element on the canvas.
|
|
64
116
|
* Updates both the internal state and the DOM element's inline styles.
|
|
@@ -76,4 +128,18 @@ export declare class KritzelCustomElement extends KritzelBaseObject<HTMLElement>
|
|
|
76
128
|
* @returns A new KritzelCustomElement instance with copied properties and a cloned DOM element.
|
|
77
129
|
*/
|
|
78
130
|
copy(): KritzelCustomElement;
|
|
131
|
+
/**
|
|
132
|
+
* Serializes the custom element to a plain JavaScript object for persistence.
|
|
133
|
+
* Stores HTML as a string (safe for JSON/Yjs) and captures dimension metadata.
|
|
134
|
+
* @returns A serializable object with htmlString and dimension snapshots
|
|
135
|
+
*/
|
|
136
|
+
serialize(): any;
|
|
137
|
+
/**
|
|
138
|
+
* Deserializes the custom element from a plain object.
|
|
139
|
+
* Reconstructs the element from stored HTML string with fallback to placeholder.
|
|
140
|
+
* @template T - The expected return type
|
|
141
|
+
* @param object - The serialized object data to restore from
|
|
142
|
+
* @returns This instance cast to type T
|
|
143
|
+
*/
|
|
144
|
+
deserialize<T>(object: any): T;
|
|
79
145
|
}
|
|
@@ -39,7 +39,6 @@ export declare class KritzelImage extends KritzelBaseObject<HTMLImageElement> {
|
|
|
39
39
|
maxWidth: number;
|
|
40
40
|
maxHeight: number;
|
|
41
41
|
maxCompressionSize: number;
|
|
42
|
-
isDebugInfoVisible: boolean;
|
|
43
42
|
/**
|
|
44
43
|
* URL resolved from the asset storage layer (e.g. a `blob:` or https URL).
|
|
45
44
|
* Not serialized into the Yjs document.
|
|
@@ -80,6 +80,7 @@ export declare class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement
|
|
|
80
80
|
* @returns Array of KritzelBaseObject instances corresponding to the stored IDs
|
|
81
81
|
*/
|
|
82
82
|
get objects(): KritzelBaseObject<any>[];
|
|
83
|
+
private syncChildSelectionState;
|
|
83
84
|
/**
|
|
84
85
|
* Gets the number of objects in the selection group.
|
|
85
86
|
* @returns The count of selected objects
|
|
@@ -60,6 +60,8 @@ export declare class KritzelAssetResolver {
|
|
|
60
60
|
private _quiet;
|
|
61
61
|
/** Dedupes concurrent resolves of the same id. */
|
|
62
62
|
private _resolvePromises;
|
|
63
|
+
/** Enables or disables resolver diagnostic logging. */
|
|
64
|
+
setShowInfo(show: boolean): void;
|
|
63
65
|
/**
|
|
64
66
|
* Whether any remote provider is configured. Used by the engine to
|
|
65
67
|
* decide whether to warn about a missing remote provider when Yjs is
|
|
@@ -135,4 +137,5 @@ export declare class KritzelAssetResolver {
|
|
|
135
137
|
private getReadyPromise;
|
|
136
138
|
private generateUuid;
|
|
137
139
|
private dataUrlToBlob;
|
|
140
|
+
private canLogInfo;
|
|
138
141
|
}
|
|
@@ -25,7 +25,6 @@ export declare class IndexedDBAssetProvider implements IAssetStorageProvider {
|
|
|
25
25
|
readonly type = "local";
|
|
26
26
|
readonly name = "IndexedDBAssetProvider";
|
|
27
27
|
private _dbName;
|
|
28
|
-
private _quiet;
|
|
29
28
|
private _db;
|
|
30
29
|
/** In-memory cache of id -> object URL to avoid re-creating blob URLs. */
|
|
31
30
|
private _urlCache;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { KritzelCustomElementRenderer } from "../../interfaces/custom-element-renderer.interface";
|
|
2
|
+
/**
|
|
3
|
+
* Global registry for custom element renderers.
|
|
4
|
+
* Allows wrapper frameworks (Angular, React, Vue) to register renderer implementations
|
|
5
|
+
* without coupling to core, and enables deterministic rehydration across reloads and
|
|
6
|
+
* clipboard paste operations.
|
|
7
|
+
*
|
|
8
|
+
* Renderer keys are opaque strings that must be stable (e.g., 'angular-todo', 'react-editor').
|
|
9
|
+
* When a custom element is deserialized with a rendererKey, the registry is consulted to
|
|
10
|
+
* resolve the renderer and mount with the persisted rendererData.
|
|
11
|
+
*/
|
|
12
|
+
export declare class KritzelCustomElementRendererRegistry {
|
|
13
|
+
private static get _renderers();
|
|
14
|
+
/**
|
|
15
|
+
* Registers a renderer implementation for a given key.
|
|
16
|
+
* @param key - Stable identifier for this renderer (e.g., 'angular-my-component')
|
|
17
|
+
* @param renderer - Renderer implementation with mount/unmount/update handlers
|
|
18
|
+
*/
|
|
19
|
+
static register(key: string, renderer: KritzelCustomElementRenderer): void;
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves a registered renderer by key.
|
|
22
|
+
* @param key - Renderer identifier
|
|
23
|
+
* @returns The registered renderer, or undefined if not found
|
|
24
|
+
*/
|
|
25
|
+
static get(key: string): KritzelCustomElementRenderer | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Unregisters a renderer by key.
|
|
28
|
+
* @param key - Renderer identifier to remove
|
|
29
|
+
* @returns True if the renderer was found and removed; false otherwise
|
|
30
|
+
*/
|
|
31
|
+
static unregister(key: string): boolean;
|
|
32
|
+
}
|
|
@@ -149,6 +149,8 @@ export declare class KritzelEngine {
|
|
|
149
149
|
handlePointerMove(ev: PointerEvent): void;
|
|
150
150
|
handlePointerUp(ev: PointerEvent): void;
|
|
151
151
|
handlePointerCancel(ev: PointerEvent): void;
|
|
152
|
+
private isEmbeddedCustomElementInteraction;
|
|
153
|
+
private isNativeInteractiveEmbeddedTarget;
|
|
152
154
|
handlePointerLeave(): void;
|
|
153
155
|
handleLongPress(ev: CustomEvent<PointerEvent>): void;
|
|
154
156
|
handleContextMenu(ev: PointerEvent): void;
|
|
@@ -159,7 +161,7 @@ export declare class KritzelEngine {
|
|
|
159
161
|
handleCut(ev: ClipboardEvent): void;
|
|
160
162
|
handlePaste(ev: ClipboardEvent): void;
|
|
161
163
|
/**
|
|
162
|
-
|
|
164
|
+
* Determines if the engine should handle a keyboard/clipboard shortcut event.
|
|
163
165
|
* Returns true only if:
|
|
164
166
|
* - The event originates from within the engine component, OR
|
|
165
167
|
* - The event target is not an interactive element that needs keyboard input
|
|
@@ -626,6 +628,8 @@ export declare class KritzelEngine {
|
|
|
626
628
|
private _syncConfigRevision;
|
|
627
629
|
private _assetStorageConfigRevision;
|
|
628
630
|
private _isWorkspaceLoading;
|
|
631
|
+
private _hasLoggedUnlicensedWelcomeBanner;
|
|
632
|
+
private _previousVisibleCustomElements;
|
|
629
633
|
private readonly _defaultUndoState;
|
|
630
634
|
private readonly _objectDistanceFadeNearScale;
|
|
631
635
|
private readonly _objectDistanceFadeFarScale;
|
|
@@ -648,6 +652,7 @@ export declare class KritzelEngine {
|
|
|
648
652
|
* `assetStorageConfig` prop updates that arrive while init is running.
|
|
649
653
|
*/
|
|
650
654
|
private initializeAssetStorage;
|
|
655
|
+
private logUnlicensedWelcomeBanner;
|
|
651
656
|
private doInitializeSyncAndWorkspace;
|
|
652
657
|
private resolveStartupWorkspace;
|
|
653
658
|
private tryResolveActiveWorkspaceFromId;
|
|
@@ -669,5 +674,6 @@ export declare class KritzelEngine {
|
|
|
669
674
|
private getCloseDistanceFadeMultiplier;
|
|
670
675
|
private shouldApplyDistanceFade;
|
|
671
676
|
private getObjectEffectiveOpacity;
|
|
677
|
+
private getSelectionHandleCapabilities;
|
|
672
678
|
render(): any;
|
|
673
679
|
}
|
|
@@ -383,7 +383,7 @@ export namespace Components {
|
|
|
383
383
|
"customSvgIcons": Record<string, string>;
|
|
384
384
|
"cut": () => Promise<void>;
|
|
385
385
|
/**
|
|
386
|
-
* @default { showViewportInfo: false, showObjectInfo: false, showSyncProviderInfo: true, showMigrationInfo: true, }
|
|
386
|
+
* @default { showViewportInfo: false, showObjectInfo: false, showSyncProviderInfo: true, showMigrationInfo: true, showAssetResolverInfo: false, }
|
|
387
387
|
*/
|
|
388
388
|
"debugInfo": KritzelDebugInfo;
|
|
389
389
|
"delete": () => Promise<void>;
|
|
@@ -2838,7 +2838,7 @@ declare namespace LocalJSX {
|
|
|
2838
2838
|
*/
|
|
2839
2839
|
"customSvgIcons"?: Record<string, string>;
|
|
2840
2840
|
/**
|
|
2841
|
-
* @default { showViewportInfo: false, showObjectInfo: false, showSyncProviderInfo: true, showMigrationInfo: true, }
|
|
2841
|
+
* @default { showViewportInfo: false, showObjectInfo: false, showSyncProviderInfo: true, showMigrationInfo: true, showAssetResolverInfo: false, }
|
|
2842
2842
|
*/
|
|
2843
2843
|
"debugInfo"?: KritzelDebugInfo;
|
|
2844
2844
|
/**
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare class KritzelHTMLHelper {
|
|
2
2
|
static getNumericValueFromStyle(element: HTMLElement, property: string): number;
|
|
3
|
+
static isScrollableElement(element: Element): element is HTMLElement;
|
|
4
|
+
static findScrollableElement(root: Element | null | undefined): HTMLElement | null;
|
|
3
5
|
static getScrollableParent(element: HTMLElement): HTMLElement | Window;
|
|
4
6
|
static isElementInViewport(element: HTMLElement): boolean;
|
|
5
7
|
static getFocusableElements(root: HTMLElement): HTMLElement[];
|
|
@@ -162,6 +162,15 @@ export declare class KritzelSvgExportHelper {
|
|
|
162
162
|
* @returns SVG element string
|
|
163
163
|
*/
|
|
164
164
|
private static imageToSvg;
|
|
165
|
+
/**
|
|
166
|
+
* Converts a KritzelCustomElement to SVG.
|
|
167
|
+
* SVG mode: embeds HTML in foreignObject (best-effort).
|
|
168
|
+
* PNG/raster mode: renders placeholder rect with warning.
|
|
169
|
+
* @param obj - The custom element object
|
|
170
|
+
* @param rasterSafeForCanvas - If true, render placeholder (for PNG export)
|
|
171
|
+
* @returns SVG element string
|
|
172
|
+
*/
|
|
173
|
+
private static customElementToSvg;
|
|
165
174
|
/**
|
|
166
175
|
* Converts a KritzelGroup to SVG by recursively converting children.
|
|
167
176
|
* @param group - The group object
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { KritzelCustomElement } from '../classes/objects/custom-element.class';
|
|
2
|
+
export declare class KritzelWheelHelper {
|
|
3
|
+
static shouldKeepWheelInCustomElement(ev: WheelEvent, customElement: KritzelCustomElement): boolean;
|
|
4
|
+
private static getScrollableContainerFromEventPath;
|
|
5
|
+
private static isScrollableElement;
|
|
6
|
+
private static canElementConsumeWheel;
|
|
7
|
+
private static canElementConsumeVerticalWheel;
|
|
8
|
+
private static canElementConsumeHorizontalWheel;
|
|
9
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './classes/objects/image.class';
|
|
|
17
17
|
export * from './classes/objects/line.class';
|
|
18
18
|
export * from './classes/objects/group.class';
|
|
19
19
|
export * from './classes/objects/shape.class';
|
|
20
|
+
export * from './classes/objects/custom-element.class';
|
|
20
21
|
export * from './classes/tools/base-tool.class';
|
|
21
22
|
export * from './classes/tools/brush-tool.class';
|
|
22
23
|
export * from './classes/tools/line-tool.class';
|
|
@@ -40,9 +41,11 @@ export * from './classes/managers/anchor.manager';
|
|
|
40
41
|
export * from './classes/managers/theme.manager';
|
|
41
42
|
export * from './classes/managers/localization.manager';
|
|
42
43
|
export * from './classes/managers/license.manager';
|
|
44
|
+
export * from './classes/registries/custom-element-renderer.registry';
|
|
43
45
|
export * from './interfaces/toolbar-control.interface';
|
|
44
46
|
export * from './interfaces/menu-item.interface';
|
|
45
47
|
export * from './interfaces/object-change-event.interface';
|
|
48
|
+
export * from './interfaces/custom-element-renderer.interface';
|
|
46
49
|
export * from './interfaces/sync-provider.interface';
|
|
47
50
|
export * from './interfaces/sync-config.interface';
|
|
48
51
|
export * from './interfaces/asset.interface';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { KritzelCustomElement } from '../classes/objects/custom-element.class';
|
|
2
|
+
/**
|
|
3
|
+
* Context passed to a renderer when mounting, updating, or unmounting.
|
|
4
|
+
*/
|
|
5
|
+
export interface KritzelCustomElementRenderContext {
|
|
6
|
+
/** The custom element object being rendered. */
|
|
7
|
+
object: KritzelCustomElement;
|
|
8
|
+
/** Container element to render into (mount) or receive lifecycle notifications (unmount). */
|
|
9
|
+
container: HTMLElement | null;
|
|
10
|
+
/** Custom data payload for the renderer (e.g., component props, state). */
|
|
11
|
+
data?: unknown;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Renderer implementation for custom elements on the canvas.
|
|
15
|
+
* Handles framework-specific mounting, updating, and cleanup.
|
|
16
|
+
*/
|
|
17
|
+
export interface KritzelCustomElementRenderer {
|
|
18
|
+
/**
|
|
19
|
+
* Called when the custom element enters the viewport or is first added to canvas.
|
|
20
|
+
* Renderer is responsible for creating and appending DOM to context.container.
|
|
21
|
+
* @param context - Render context with object, container, and data
|
|
22
|
+
*/
|
|
23
|
+
onMount(context: KritzelCustomElementRenderContext): void;
|
|
24
|
+
/**
|
|
25
|
+
* Called when object properties (position, size, rotation, etc.) change.
|
|
26
|
+
* Renderer can react to dimension/transform updates or data changes.
|
|
27
|
+
* Optional; default is no-op.
|
|
28
|
+
* @param context - Render context with updated object and data
|
|
29
|
+
* @param changedProperties - Array of property names that changed
|
|
30
|
+
*/
|
|
31
|
+
onUpdate?(context: KritzelCustomElementRenderContext, changedProperties: string[]): void;
|
|
32
|
+
/**
|
|
33
|
+
* Called when the object leaves the viewport, is deleted, or workspace is unloaded.
|
|
34
|
+
* Renderer must clean up event listeners, timers, framework instances, and remove DOM.
|
|
35
|
+
* May optionally return updated data to capture back into object.rendererData.
|
|
36
|
+
* @param context - Render context with object and container
|
|
37
|
+
* @returns Optional updated data payload to persist
|
|
38
|
+
*/
|
|
39
|
+
onUnmount(context: KritzelCustomElementRenderContext): unknown;
|
|
40
|
+
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
class t{static getNumericValueFromStyle(t,n){const e=window.getComputedStyle(t).getPropertyValue(n);return parseFloat(e)||0}static getScrollableParent(t){if(!t)return window;const n=t.parentNode?.host??t.parentElement;if(!n||"BODY"===n.tagName)return window;const e=window.getComputedStyle(n);return"auto"===e.overflow||"auto"===e.overflowY||"scroll"===e.overflow||"scroll"===e.overflowY?n:this.getScrollableParent(n)}static isElementInViewport(t){if(!t)return!1;const n=this.getScrollableParent(t),e=t.getBoundingClientRect();if(n===window){const t=window.innerHeight||document.documentElement.clientHeight,n=window.innerWidth||document.documentElement.clientWidth;return e.top>=0&&e.left>=0&&e.bottom<=t&&e.right<=n}const o=n.getBoundingClientRect();return e.top>=o.top&&e.left>=o.left&&e.bottom<=o.bottom&&e.right<=o.right}static getFocusableElements(t){if(!t)return[];const n=[],e=t=>{t instanceof HTMLElement&&t.matches('a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), details, [tabindex]:not([tabindex="-1"])')&&!t.hasAttribute("disabled")&&(t=>{const n=window.getComputedStyle(t);return"none"!==n.display&&"hidden"!==n.visibility})(t)&&n.push(t),t.shadowRoot&&Array.from(t.shadowRoot.children).forEach(e),"SLOT"===t.tagName&&t.assignedElements({flatten:!0}).forEach(e),t.shadowRoot||Array.from(t.children).forEach(e)};return e(t),n}}export{t as K}
|