kritzel-stencil 0.1.0 → 0.1.2
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/{default-line-tool.config-7eJND6Jb.js → default-line-tool.config-MA02HCrH.js} +703 -133
- package/dist/cjs/{index-BeKMS-Zt.js → index-Bj0n7fQQ.js} +84 -7
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
- package/dist/cjs/{kritzel-color_22.cjs.entry.js → kritzel-color_24.cjs.entry.js} +1018 -897
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/stencil.cjs.js +3 -3
- package/dist/collection/classes/core/core.class.js +2 -0
- package/dist/collection/classes/core/viewport.class.js +43 -3
- package/dist/collection/classes/handlers/move.handler.js +6 -0
- package/dist/collection/classes/objects/line.class.js +63 -15
- package/dist/collection/classes/objects/path.class.js +1 -0
- package/dist/collection/classes/objects/shape.class.js +1 -0
- package/dist/collection/classes/objects/text.class.js +4 -3
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +0 -1
- package/dist/collection/classes/tools/brush-tool.class.js +5 -0
- package/dist/collection/classes/tools/line-tool.class.js +31 -1
- package/dist/collection/classes/tools/selection-tool.class.js +193 -0
- package/dist/collection/classes/tools/shape-tool.class.js +2 -0
- package/dist/collection/classes/tools/text-tool.class.js +3 -0
- package/dist/collection/collection-manifest.json +5 -3
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +3 -2
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +37 -19
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +108 -36
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +1 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +24 -2
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
- package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -0
- package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +187 -0
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +15 -8
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +16 -9
- package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -0
- package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +163 -0
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
- package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -0
- package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +93 -0
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +13 -7
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +11 -2
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +2 -2
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +6 -4
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +6 -3
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +66 -0
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +153 -50
- package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -0
- package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.js +321 -0
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +3 -2
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +6 -3
- package/dist/collection/configs/default-brush-tool.config.js +2 -52
- package/dist/collection/configs/default-line-tool.config.js +2 -26
- package/dist/collection/configs/default-shape-tool.config.js +2 -15
- package/dist/collection/configs/default-text-tool.config.js +2 -26
- package/dist/collection/constants/color-palette.constants.js +30 -0
- package/dist/collection/helpers/color.helper.js +31 -0
- package/dist/collection/helpers/tool-config.helper.js +65 -0
- package/dist/collection/interfaces/tool-config.interface.js +1 -0
- package/dist/components/index.d.ts +8 -4
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-brush-style.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-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-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-icon.js +1 -1
- package/dist/components/kritzel-line-endings.d.ts +11 -0
- package/dist/components/kritzel-line-endings.js +1 -0
- package/dist/components/kritzel-menu-item.js +1 -1
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-opacity-slider.d.ts +11 -0
- package/dist/components/kritzel-opacity-slider.js +1 -0
- package/dist/components/kritzel-portal.js +1 -1
- package/dist/components/kritzel-shape-fill.d.ts +11 -0
- package/dist/components/kritzel-shape-fill.js +1 -0
- package/dist/components/kritzel-split-button.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tool-config.d.ts +11 -0
- package/dist/components/kritzel-tool-config.js +1 -0
- 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-83YX0-FS.js +1 -0
- package/dist/components/p-8iEiCuEN.js +1 -0
- package/dist/components/p-9XZbc_qK.js +1 -0
- package/dist/components/p-B3P64-gH.js +9 -0
- package/dist/components/p-B8QjTqOY.js +1 -0
- package/dist/components/p-BF6MdW17.js +1 -0
- package/dist/components/p-BVIY50lR.js +1 -0
- package/dist/components/p-BbqT9o1F.js +1 -0
- package/dist/components/{p-CXzfYQ_u.js → p-BnidlyU0.js} +1 -1
- package/dist/components/{p-Bj_Og27M.js → p-BxS4Pdpz.js} +1 -1
- package/dist/components/{p-g0N9j_uT.js → p-CCj8nmQH.js} +1 -1
- package/dist/components/{p-1z-ds26_.js → p-CLOnpu42.js} +1 -1
- package/dist/components/{p-D1tfzpy8.js → p-CSGeDE4f.js} +1 -1
- package/dist/components/p-CbuHMNa9.js +1 -0
- package/dist/components/p-ClMFs3KI.js +1 -0
- package/dist/components/{p-IAqZFssU.js → p-Cnpk2hfo.js} +1 -1
- package/dist/components/{p-Cy77SpWt.js → p-Ctv4NAxk.js} +1 -1
- package/dist/components/p-CyHZWbkS.js +1 -0
- package/dist/components/{p-C4krHoUl.js → p-D8GeJNUv.js} +1 -1
- package/dist/components/{p-DB5s1NY4.js → p-DKgqzi2Y.js} +1 -1
- package/dist/components/p-DOF5fWDU.js +1 -0
- package/dist/components/{p-4FEa4ADy.js → p-DV_h5Jo2.js} +1 -1
- package/dist/components/{p-DTezr6w9.js → p-DgCGSL2Q.js} +1 -1
- package/dist/components/{p-D5ZsALCP.js → p-wRXL928z.js} +1 -1
- package/dist/esm/{default-line-tool.config-CD5sTKH-.js → default-line-tool.config-DLpNl6R9.js} +702 -125
- package/dist/esm/{index-BqhmuUH2.js → index-OLdaFN6W.js} +84 -7
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-brush-style.entry.js +1 -1
- package/dist/esm/{kritzel-color_22.entry.js → kritzel-color_24.entry.js} +1009 -890
- package/dist/esm/loader.js +3 -3
- package/dist/esm/stencil.js +4 -4
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/{p-09295079.entry.js → p-802bc7cf.entry.js} +1 -1
- package/dist/stencil/p-DLpNl6R9.js +1 -0
- package/dist/stencil/p-OLdaFN6W.js +2 -0
- package/dist/stencil/p-caf30edb.entry.js +9 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/viewport.class.d.ts +6 -0
- package/dist/types/classes/managers/anchor.manager.d.ts +1 -1
- package/dist/types/classes/objects/line.class.d.ts +2 -0
- package/dist/types/classes/objects/shape.class.d.ts +1 -0
- package/dist/types/classes/tools/brush-tool.class.d.ts +1 -0
- package/dist/types/classes/tools/line-tool.class.d.ts +2 -1
- package/dist/types/classes/tools/selection-tool.class.d.ts +22 -0
- package/dist/types/classes/tools/shape-tool.class.d.ts +1 -0
- package/dist/types/classes/tools/text-tool.class.d.ts +1 -0
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +2 -0
- package/dist/types/components/shared/kritzel-color-palette/kritzel-color-palette.d.ts +1 -0
- package/dist/types/components/shared/kritzel-line-endings/kritzel-line-endings.d.ts +23 -0
- package/dist/types/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.d.ts +17 -0
- package/dist/types/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts +10 -0
- package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +15 -0
- package/dist/types/components/ui/kritzel-tool-config/kritzel-tool-config.d.ts +25 -0
- package/dist/types/components.d.ts +235 -82
- package/dist/types/constants/color-palette.constants.d.ts +5 -0
- package/dist/types/helpers/color.helper.d.ts +9 -0
- package/dist/types/helpers/tool-config.helper.d.ts +4 -0
- package/dist/types/interfaces/line-options.interface.d.ts +1 -0
- package/dist/types/interfaces/path-options.interface.d.ts +1 -0
- package/dist/types/interfaces/tool-config.interface.d.ts +26 -0
- package/dist/types/stencil-public-runtime.d.ts +29 -0
- package/package.json +5 -3
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -134
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +0 -114
- package/dist/components/kritzel-control-brush-config.d.ts +0 -11
- package/dist/components/kritzel-control-brush-config.js +0 -1
- package/dist/components/kritzel-control-text-config.d.ts +0 -11
- package/dist/components/kritzel-control-text-config.js +0 -1
- package/dist/components/p-B7Fdo5QJ.js +0 -1
- package/dist/components/p-BXaWhpO2.js +0 -1
- package/dist/components/p-BtuXeItZ.js +0 -1
- package/dist/components/p-C-d2IH4v.js +0 -1
- package/dist/components/p-C3UriJh7.js +0 -1
- package/dist/components/p-CF5L2Gdl.js +0 -1
- package/dist/components/p-CeKT_dTd.js +0 -1
- package/dist/components/p-Cp15toXH.js +0 -1
- package/dist/components/p-D3LRBk2t.js +0 -9
- package/dist/components/p-Du1vxHy8.js +0 -1
- package/dist/stencil/p-381c0e9c.entry.js +0 -9
- package/dist/stencil/p-BqhmuUH2.js +0 -2
- package/dist/stencil/p-CD5sTKH-.js +0 -1
- package/dist/types/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.d.ts +0 -15
- package/dist/types/components/ui/kritzel-control-text-config/kritzel-control-text-config.d.ts +0 -12
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-Bj0n7fQQ.js');
|
|
4
4
|
var appGlobals = require('./app-globals-V2Kpy_OQ.js');
|
|
5
5
|
|
|
6
6
|
const defineCustomElements = async (win, options) => {
|
|
7
7
|
if (typeof window === 'undefined') return undefined;
|
|
8
8
|
await appGlobals.globalScripts();
|
|
9
|
-
return index.bootstrapLazy([["kritzel-
|
|
9
|
+
return index.bootstrapLazy([["kritzel-color_24.cjs",[[512,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"customSvgIcons":[16],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"syncConfig":[16],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"undoState":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"dblclick","onTouchStart"]],{"isEngineReady":[{"onIsEngineReady":0}],"isControlsReady":[{"onIsControlsReady":0}],"workspaces":[{"onWorkspacesChange":0}]}],[513,"kritzel-controls",{"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"selectedSubOptions":[32],"openSubMenuControl":[32],"canScrollLeft":[32],"canScrollRight":[32],"displayValues":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"],[4,"objectsSelectionChange","handleSelectionChange"]]],[513,"kritzel-workspace-manager",{"activeWorkspace":[1040],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-engine",{"workspace":[16],"syncConfig":[16],"activeTool":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"cursorTarget":[16],"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],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{"workspace":[{"onWorkspaceChange":0}],"scaleMax":[{"validateScaleMax":0}],"scaleMin":[{"validateScaleMin":0}],"cursorTarget":[{"onCursorTargetChange":0}]}],[513,"kritzel-tool-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"config":[32],"palette":[32],"currentOpacity":[32],"updateTrigger":[32]},[[4,"objectsSelectionChange","handleSelectionChange"]],{"tool":[{"handleToolChange":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-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":[{"onItemsChanged":0}]}],[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"]]],[769,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16],"offsetY":[2,"offset-y"],"positionX":[32],"positionY":[32],"focusContent":[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[513,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"],"opacity":[2]}],[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],"strokeColor":[1,"stroke-color"]}],[513,"kritzel-opacity-slider",{"value":[1026],"min":[2],"max":[2],"step":[2],"previewColor":[1,"preview-color"]}],[513,"kritzel-shape-fill",{"value":[1025]}],[513,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[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}]}],[513,"kritzel-color",{"value":[1],"size":[2]}],[769,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[16],"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,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{"anchor":[{"anchorChanged":0}]}],[513,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["kritzel-brush-style.cjs",[[513,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]], options);
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
exports.setNonce = index.setNonce;
|
package/dist/cjs/stencil.cjs.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-Bj0n7fQQ.js');
|
|
4
4
|
var appGlobals = require('./app-globals-V2Kpy_OQ.js');
|
|
5
5
|
|
|
6
6
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
7
7
|
/*
|
|
8
|
-
Stencil Client Patch Browser v4.
|
|
8
|
+
Stencil Client Patch Browser v4.41.0 | MIT Licensed | https://stenciljs.com
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
var patchBrowser = () => {
|
|
@@ -19,7 +19,7 @@ var patchBrowser = () => {
|
|
|
19
19
|
|
|
20
20
|
patchBrowser().then(async (options) => {
|
|
21
21
|
await appGlobals.globalScripts();
|
|
22
|
-
return index.bootstrapLazy([["kritzel-
|
|
22
|
+
return index.bootstrapLazy([["kritzel-color_24.cjs",[[512,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"customSvgIcons":[16],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"syncConfig":[16],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"undoState":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"dblclick","onTouchStart"]],{"isEngineReady":[{"onIsEngineReady":0}],"isControlsReady":[{"onIsControlsReady":0}],"workspaces":[{"onWorkspacesChange":0}]}],[513,"kritzel-controls",{"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"selectedSubOptions":[32],"openSubMenuControl":[32],"canScrollLeft":[32],"canScrollRight":[32],"displayValues":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"],[4,"objectsSelectionChange","handleSelectionChange"]]],[513,"kritzel-workspace-manager",{"activeWorkspace":[1040],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[513,"kritzel-engine",{"workspace":[16],"syncConfig":[16],"activeTool":[16],"globalContextMenuItems":[16],"objectContextMenuItems":[16],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"cursorTarget":[16],"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],"group":[64],"ungroup":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{"workspace":[{"onWorkspaceChange":0}],"scaleMax":[{"validateScaleMax":0}],"scaleMin":[{"validateScaleMin":0}],"cursorTarget":[{"onCursorTargetChange":0}]}],[513,"kritzel-tool-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"config":[32],"palette":[32],"currentOpacity":[32],"updateTrigger":[32]},[[4,"objectsSelectionChange","handleSelectionChange"]],{"tool":[{"handleToolChange":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-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":[{"onItemsChanged":0}]}],[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"]]],[769,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16],"offsetY":[2,"offset-y"],"positionX":[32],"positionY":[32],"focusContent":[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[513,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"],"opacity":[2]}],[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],"strokeColor":[1,"stroke-color"]}],[513,"kritzel-opacity-slider",{"value":[1026],"min":[2],"max":[2],"step":[2],"previewColor":[1,"preview-color"]}],[513,"kritzel-shape-fill",{"value":[1025]}],[513,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[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}]}],[513,"kritzel-color",{"value":[1],"size":[2]}],[769,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[16],"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,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{"anchor":[{"anchorChanged":0}]}],[513,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["kritzel-brush-style.cjs",[[513,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]], options);
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
exports.setNonce = index.setNonce;
|
|
@@ -217,11 +217,13 @@ export class KritzelCore {
|
|
|
217
217
|
this.removeSelectionGroup();
|
|
218
218
|
this.removeSelectionBox();
|
|
219
219
|
this._store.state.objects.insert(selectionGroup);
|
|
220
|
+
this._kritzelEngine.triggerSelectionChange();
|
|
220
221
|
}
|
|
221
222
|
removeSelectionGroup() {
|
|
222
223
|
const selectionGroup = this._store.selectionGroup;
|
|
223
224
|
if (selectionGroup) {
|
|
224
225
|
this._store.state.objects.remove(object => object.id === selectionGroup.id);
|
|
226
|
+
this._kritzelEngine.triggerSelectionChange();
|
|
225
227
|
}
|
|
226
228
|
}
|
|
227
229
|
removeSelectionBox() {
|
|
@@ -4,6 +4,11 @@ export class KritzelViewport {
|
|
|
4
4
|
_core;
|
|
5
5
|
_debounceUpdate;
|
|
6
6
|
_debounceEndScaling;
|
|
7
|
+
_velocityX = 0;
|
|
8
|
+
_velocityY = 0;
|
|
9
|
+
_panRafId = null;
|
|
10
|
+
_friction = 0.92;
|
|
11
|
+
_minVelocity = 0.5;
|
|
7
12
|
initialTouchDistance = 0;
|
|
8
13
|
startX = 0;
|
|
9
14
|
startY = 0;
|
|
@@ -187,11 +192,46 @@ export class KritzelViewport {
|
|
|
187
192
|
this._debounceEndScaling();
|
|
188
193
|
}
|
|
189
194
|
handlePan(event) {
|
|
195
|
+
// Normalize delta for trackpad vs mouse wheel
|
|
196
|
+
// WheelEvent.deltaMode: 0=pixels, 1=lines, 2=pages
|
|
197
|
+
let deltaX = event.deltaX;
|
|
198
|
+
let deltaY = event.deltaY;
|
|
199
|
+
if (event.deltaMode === 1) {
|
|
200
|
+
deltaX *= 16;
|
|
201
|
+
deltaY *= 16;
|
|
202
|
+
}
|
|
203
|
+
else if (event.deltaMode === 2) {
|
|
204
|
+
deltaX *= window.innerWidth;
|
|
205
|
+
deltaY *= window.innerHeight;
|
|
206
|
+
}
|
|
190
207
|
const panSpeed = 0.8;
|
|
191
|
-
|
|
192
|
-
this.
|
|
208
|
+
// Add to velocity for momentum effect
|
|
209
|
+
this._velocityX = -deltaX * panSpeed;
|
|
210
|
+
this._velocityY = -deltaY * panSpeed;
|
|
211
|
+
// Start animation loop if not already running
|
|
212
|
+
if (this._panRafId === null) {
|
|
213
|
+
this._animatePan();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
_animatePan() {
|
|
217
|
+
// Apply current velocity
|
|
218
|
+
this._core.store.state.translateX += this._velocityX;
|
|
219
|
+
this._core.store.state.translateY += this._velocityY;
|
|
193
220
|
this._core.store.state.hasViewportChanged = true;
|
|
194
221
|
this._core.rerender();
|
|
195
|
-
|
|
222
|
+
// Apply friction to slow down
|
|
223
|
+
this._velocityX *= this._friction;
|
|
224
|
+
this._velocityY *= this._friction;
|
|
225
|
+
// Continue animation if velocity is still significant
|
|
226
|
+
if (Math.abs(this._velocityX) > this._minVelocity || Math.abs(this._velocityY) > this._minVelocity) {
|
|
227
|
+
this._panRafId = requestAnimationFrame(() => this._animatePan());
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Stop animation and finalize
|
|
231
|
+
this._velocityX = 0;
|
|
232
|
+
this._velocityY = 0;
|
|
233
|
+
this._panRafId = null;
|
|
234
|
+
this._debounceUpdate();
|
|
235
|
+
}
|
|
196
236
|
}
|
|
197
237
|
}
|
|
@@ -182,6 +182,12 @@ export class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
182
182
|
if (!selectionGroup) {
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
|
+
// Only disconnect lines if the selection group contains ONLY lines.
|
|
186
|
+
// If moving lines with other objects (e.g. shapes they might be anchored to), prevent auto-disconnect.
|
|
187
|
+
const onlyLines = selectionGroup.objects.every(obj => obj instanceof KritzelLine);
|
|
188
|
+
if (!onlyLines) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
185
191
|
// Find and disconnect anchors from all anchored lines in the selection
|
|
186
192
|
for (const obj of selectionGroup.objects) {
|
|
187
193
|
// Skip if already disconnected in this drag session
|
|
@@ -22,6 +22,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
22
22
|
isDebugInfoVisible = true;
|
|
23
23
|
isCompleted = false;
|
|
24
24
|
_adjustedPoints = null;
|
|
25
|
+
_clipInfo = null;
|
|
25
26
|
get d() {
|
|
26
27
|
if (this.controlX !== undefined && this.controlY !== undefined) {
|
|
27
28
|
return `M ${this.startX} ${this.startY} Q ${this.controlX} ${this.controlY} ${this.endX} ${this.endY}`;
|
|
@@ -67,6 +68,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
67
68
|
object.scale = options?.scale ?? 1;
|
|
68
69
|
object.strokeWidth = options?.strokeWidth ?? 4;
|
|
69
70
|
object.stroke = options?.stroke ?? '#000000';
|
|
71
|
+
object.opacity = options?.opacity ?? 1;
|
|
70
72
|
object.startAnchor = options?.startAnchor;
|
|
71
73
|
object.endAnchor = options?.endAnchor;
|
|
72
74
|
object.arrows = options?.arrows;
|
|
@@ -99,6 +101,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
99
101
|
this.translateX = x;
|
|
100
102
|
this.translateY = y;
|
|
101
103
|
this._adjustedPoints = null;
|
|
104
|
+
this._clipInfo = null;
|
|
102
105
|
this._core.store.state.objects.update(this);
|
|
103
106
|
// Update anchors after the line is updated
|
|
104
107
|
this._core.anchorManager.updateAnchorsForObject(this.id);
|
|
@@ -112,6 +115,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
112
115
|
rotate(value) {
|
|
113
116
|
this.rotation = value;
|
|
114
117
|
this._adjustedPoints = null;
|
|
118
|
+
this._clipInfo = null;
|
|
115
119
|
this._core.store.state.objects.update(this);
|
|
116
120
|
}
|
|
117
121
|
move(startX, startY, endX, endY) {
|
|
@@ -127,6 +131,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
127
131
|
this._core.anchorManager.updateAnchorsForObject(this.endAnchor.objectId);
|
|
128
132
|
}
|
|
129
133
|
this._adjustedPoints = null;
|
|
134
|
+
this._clipInfo = null;
|
|
130
135
|
this._core.store.state.objects.update(this);
|
|
131
136
|
}
|
|
132
137
|
hitTest(x, y) {
|
|
@@ -138,12 +143,16 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
138
143
|
}
|
|
139
144
|
// For curved lines, use distance to the Bezier curve
|
|
140
145
|
if (this.controlX !== undefined && this.controlY !== undefined) {
|
|
141
|
-
const
|
|
146
|
+
const clip = this.getClipInfo();
|
|
147
|
+
const startT = clip.start?.t ?? 0;
|
|
148
|
+
const endT = clip.end?.t ?? 1;
|
|
149
|
+
const distance = this.pointToBezierDistance(x, y, startT, endT);
|
|
142
150
|
return distance <= halfStroke;
|
|
143
151
|
}
|
|
144
152
|
// For straight lines, use distance to line segment
|
|
145
|
-
const
|
|
146
|
-
const
|
|
153
|
+
const clip = this.getClipInfo();
|
|
154
|
+
const p1 = clip.start ? [clip.start.x, clip.start.y] : this._adjustedPoints[0];
|
|
155
|
+
const p2 = clip.end ? [clip.end.x, clip.end.y] : this._adjustedPoints[1];
|
|
147
156
|
const distance = this.pointToLineSegmentDistance(x, y, p1[0], p1[1], p2[0], p2[1]);
|
|
148
157
|
return distance <= halfStroke;
|
|
149
158
|
}
|
|
@@ -152,6 +161,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
152
161
|
if (this._adjustedPoints === null) {
|
|
153
162
|
this._adjustedPoints = this.computeAdjustedPoints();
|
|
154
163
|
}
|
|
164
|
+
const clip = this.getClipInfo();
|
|
155
165
|
const polyPoints = [
|
|
156
166
|
{ x: polygon.bottomLeft.x, y: polygon.bottomLeft.y },
|
|
157
167
|
{ x: polygon.bottomRight.x, y: polygon.bottomRight.y },
|
|
@@ -159,7 +169,11 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
159
169
|
{ x: polygon.topLeft.x, y: polygon.topLeft.y },
|
|
160
170
|
];
|
|
161
171
|
// Check if any endpoint is inside the polygon
|
|
162
|
-
|
|
172
|
+
// Use clipped endpoints
|
|
173
|
+
const p1 = clip.start ? [clip.start.x, clip.start.y] : this._adjustedPoints[0];
|
|
174
|
+
const p2 = clip.end ? [clip.end.x, clip.end.y] : this._adjustedPoints[1];
|
|
175
|
+
const endpoints = [p1, p2];
|
|
176
|
+
for (const [px, py] of endpoints) {
|
|
163
177
|
if (KritzelGeometryHelper.isPointInPolygon({ x: px, y: py }, polyPoints)) {
|
|
164
178
|
return true;
|
|
165
179
|
}
|
|
@@ -175,9 +189,12 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
175
189
|
const p0 = this._adjustedPoints[0];
|
|
176
190
|
const p2 = this._adjustedPoints[1];
|
|
177
191
|
const controlAdjusted = this.computeAdjustedControlPoint();
|
|
192
|
+
const startT = clip.start?.t ?? 0;
|
|
193
|
+
const endT = clip.end?.t ?? 1;
|
|
178
194
|
const samples = 20;
|
|
179
|
-
for (let i =
|
|
180
|
-
const
|
|
195
|
+
for (let i = 0; i <= samples; i++) {
|
|
196
|
+
const fraction = i / samples;
|
|
197
|
+
const t = startT + fraction * (endT - startT);
|
|
181
198
|
const oneMinusT = 1 - t;
|
|
182
199
|
const bx = oneMinusT * oneMinusT * p0[0] + 2 * oneMinusT * t * controlAdjusted[0] + t * t * p2[0];
|
|
183
200
|
const by = oneMinusT * oneMinusT * p0[1] + 2 * oneMinusT * t * controlAdjusted[1] + t * t * p2[1];
|
|
@@ -197,19 +214,19 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
197
214
|
return false;
|
|
198
215
|
}
|
|
199
216
|
// For straight lines, check if line intersects any polygon edge
|
|
200
|
-
const
|
|
201
|
-
const
|
|
217
|
+
const checkP1 = { x: p1[0], y: p1[1] };
|
|
218
|
+
const checkP2 = { x: p2[0], y: p2[1] };
|
|
202
219
|
for (let j = 0; j < polyPoints.length; j++) {
|
|
203
220
|
const q1 = polyPoints[j];
|
|
204
221
|
const q2 = polyPoints[(j + 1) % polyPoints.length];
|
|
205
|
-
if (KritzelGeometryHelper.intersectLines(
|
|
222
|
+
if (KritzelGeometryHelper.intersectLines(checkP1, checkP2, q1, q2)) {
|
|
206
223
|
return true;
|
|
207
224
|
}
|
|
208
225
|
// Check distance from polygon edges to line segment
|
|
209
|
-
const d1 = this.pointToLineSegmentDistance(q1.x, q1.y,
|
|
210
|
-
const d2 = this.pointToLineSegmentDistance(q2.x, q2.y,
|
|
211
|
-
const d3 = this.pointToLineSegmentDistance(
|
|
212
|
-
const d4 = this.pointToLineSegmentDistance(
|
|
226
|
+
const d1 = this.pointToLineSegmentDistance(q1.x, q1.y, checkP1.x, checkP1.y, checkP2.x, checkP2.y);
|
|
227
|
+
const d2 = this.pointToLineSegmentDistance(q2.x, q2.y, checkP1.x, checkP1.y, checkP2.x, checkP2.y);
|
|
228
|
+
const d3 = this.pointToLineSegmentDistance(checkP1.x, checkP1.y, q1.x, q1.y, q2.x, q2.y);
|
|
229
|
+
const d4 = this.pointToLineSegmentDistance(checkP2.x, checkP2.y, q1.x, q1.y, q2.x, q2.y);
|
|
213
230
|
const minD = Math.min(d1, d2, d3, d4);
|
|
214
231
|
if (minD <= halfStroke) {
|
|
215
232
|
return true;
|
|
@@ -221,6 +238,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
221
238
|
this.translateX = x;
|
|
222
239
|
this.translateY = y;
|
|
223
240
|
this._adjustedPoints = null;
|
|
241
|
+
this._clipInfo = null;
|
|
224
242
|
this._core.store.state.objects.update(this);
|
|
225
243
|
}
|
|
226
244
|
/**
|
|
@@ -279,6 +297,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
279
297
|
this.translateY += correctionY / this.scale;
|
|
280
298
|
// Clear cached adjusted points
|
|
281
299
|
this._adjustedPoints = null;
|
|
300
|
+
this._clipInfo = null;
|
|
282
301
|
this._core.store.state.objects.update(this);
|
|
283
302
|
}
|
|
284
303
|
updateControlPoint(newX, newY) {
|
|
@@ -321,6 +340,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
321
340
|
this.translateY += correctionY / this.scale;
|
|
322
341
|
// Clear cached adjusted points
|
|
323
342
|
this._adjustedPoints = null;
|
|
343
|
+
this._clipInfo = null;
|
|
324
344
|
this._core.store.state.objects.update(this);
|
|
325
345
|
}
|
|
326
346
|
computeAdjustedPoints() {
|
|
@@ -377,7 +397,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
377
397
|
* Calculates the minimum distance from a point to a quadratic Bezier curve.
|
|
378
398
|
* Uses sampling along the curve to find the closest point.
|
|
379
399
|
*/
|
|
380
|
-
pointToBezierDistance(x, y) {
|
|
400
|
+
pointToBezierDistance(x, y, startT = 0, endT = 1) {
|
|
381
401
|
if (this._adjustedPoints === null) {
|
|
382
402
|
this._adjustedPoints = this.computeAdjustedPoints();
|
|
383
403
|
}
|
|
@@ -388,7 +408,8 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
388
408
|
let minDistance = Infinity;
|
|
389
409
|
const samples = 20; // Number of samples along the curve
|
|
390
410
|
for (let i = 0; i <= samples; i++) {
|
|
391
|
-
const
|
|
411
|
+
const fraction = i / samples;
|
|
412
|
+
const t = startT + fraction * (endT - startT);
|
|
392
413
|
const oneMinusT = 1 - t;
|
|
393
414
|
// Quadratic Bezier: B(t) = (1-t)²P₀ + 2(1-t)tP₁ + t²P₂
|
|
394
415
|
const bx = oneMinusT * oneMinusT * p0[0] + 2 * oneMinusT * t * controlAdjusted[0] + t * t * p2[0];
|
|
@@ -402,6 +423,33 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
402
423
|
}
|
|
403
424
|
return minDistance;
|
|
404
425
|
}
|
|
426
|
+
getClipInfo() {
|
|
427
|
+
if (this._clipInfo)
|
|
428
|
+
return this._clipInfo;
|
|
429
|
+
const startAnchor = this.startAnchor;
|
|
430
|
+
const endAnchor = this.endAnchor;
|
|
431
|
+
const result = {};
|
|
432
|
+
if (startAnchor) {
|
|
433
|
+
const target = this._core.anchorManager.findAnchorTarget(this, 'start');
|
|
434
|
+
if (target) {
|
|
435
|
+
const clip = this._core.anchorManager.computeAnchorClipInfo(this, 'start', target);
|
|
436
|
+
if (clip) {
|
|
437
|
+
result.start = { x: clip.worldX, y: clip.worldY, t: clip.t };
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (endAnchor) {
|
|
442
|
+
const target = this._core.anchorManager.findAnchorTarget(this, 'end');
|
|
443
|
+
if (target) {
|
|
444
|
+
const clip = this._core.anchorManager.computeAnchorClipInfo(this, 'end', target);
|
|
445
|
+
if (clip) {
|
|
446
|
+
result.end = { x: clip.worldX, y: clip.worldY, t: clip.t };
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
this._clipInfo = result;
|
|
451
|
+
return result;
|
|
452
|
+
}
|
|
405
453
|
/**
|
|
406
454
|
* Computes the adjusted control point in world coordinates, accounting for rotation and translation.
|
|
407
455
|
*/
|
|
@@ -47,6 +47,7 @@ export class KritzelPath extends KritzelBaseObject {
|
|
|
47
47
|
object.scale = options?.scale ?? 1;
|
|
48
48
|
object.strokeWidth = options?.strokeWidth ?? 8;
|
|
49
49
|
object.fill = options?.fill ?? '#000000';
|
|
50
|
+
object.opacity = options?.opacity ?? 1;
|
|
50
51
|
object.zIndex = core.store.currentZIndex;
|
|
51
52
|
object.d = object.generateSvgPath();
|
|
52
53
|
object.updateDimensions();
|
|
@@ -86,6 +86,7 @@ export class KritzelShape extends KritzelBaseObject {
|
|
|
86
86
|
object.fillColor = config?.fillColor ?? 'transparent';
|
|
87
87
|
object.strokeColor = config?.strokeColor ?? '#000000';
|
|
88
88
|
object.strokeWidth = config?.strokeWidth ?? 4;
|
|
89
|
+
object.opacity = config?.opacity ?? 1;
|
|
89
90
|
object.fontSize = config?.fontSize ?? 16;
|
|
90
91
|
object.fontFamily = config?.fontFamily ?? 'Arial';
|
|
91
92
|
object.fontColor = config?.fontColor ?? '#000000';
|
|
@@ -78,13 +78,14 @@ export class KritzelText extends KritzelBaseObject {
|
|
|
78
78
|
if (element === null || this.isInViewport() === false) {
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
+
element.style.fontFamily = this.fontFamily;
|
|
82
|
+
element.style.fontSize = `${this.fontSize}pt`;
|
|
83
|
+
element.style.color = this.fontColor;
|
|
81
84
|
if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {
|
|
85
|
+
requestAnimationFrame(() => this.adjustSizeOnInput());
|
|
82
86
|
return;
|
|
83
87
|
}
|
|
84
88
|
this.elementRef = element;
|
|
85
|
-
this.elementRef.style.fontFamily = this.fontFamily;
|
|
86
|
-
this.elementRef.style.fontSize = `${this.fontSize}pt`;
|
|
87
|
-
this.elementRef.style.color = this.fontColor;
|
|
88
89
|
this.elementRef.style.whiteSpace = 'pre-wrap';
|
|
89
90
|
this.elementRef.style.wordWrap = 'break-word';
|
|
90
91
|
this.elementRef.innerHTML = '';
|
|
@@ -8,7 +8,6 @@ export class IndexedDBSyncProvider {
|
|
|
8
8
|
constructor(docName, doc, options) {
|
|
9
9
|
const dbName = options?.name || docName;
|
|
10
10
|
this.provider = new IndexeddbPersistence(dbName, doc);
|
|
11
|
-
console.info(`IndexedDB Persistence initialized: ${dbName}`);
|
|
12
11
|
}
|
|
13
12
|
async connect() {
|
|
14
13
|
if (this.isConnected) {
|
|
@@ -5,6 +5,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
5
5
|
type = 'pen';
|
|
6
6
|
color = '#000000';
|
|
7
7
|
size = 6;
|
|
8
|
+
opacity = 1;
|
|
8
9
|
palettes = {
|
|
9
10
|
pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#800080'],
|
|
10
11
|
highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],
|
|
@@ -29,6 +30,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
29
30
|
scale: this._core.store.state.scale,
|
|
30
31
|
fill: this.color,
|
|
31
32
|
strokeWidth: this.size,
|
|
33
|
+
opacity: this.opacity,
|
|
32
34
|
});
|
|
33
35
|
path.isCompleted = false;
|
|
34
36
|
this._currentPathId = path.id;
|
|
@@ -48,6 +50,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
48
50
|
scale: this._core.store.state.scale,
|
|
49
51
|
fill: this.color,
|
|
50
52
|
strokeWidth: this.size,
|
|
53
|
+
opacity: this.opacity,
|
|
51
54
|
});
|
|
52
55
|
path.isCompleted = false;
|
|
53
56
|
this._currentPathId = path.id;
|
|
@@ -73,6 +76,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
73
76
|
scale: this._core.store.state.scale,
|
|
74
77
|
fill: this.color,
|
|
75
78
|
strokeWidth: this.size,
|
|
79
|
+
opacity: this.opacity,
|
|
76
80
|
});
|
|
77
81
|
updatedPath.id = currentPath.id;
|
|
78
82
|
updatedPath.workspaceId = currentPath.workspaceId;
|
|
@@ -98,6 +102,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
98
102
|
scale: this._core.store.state.scale,
|
|
99
103
|
fill: this.color,
|
|
100
104
|
strokeWidth: this.size,
|
|
105
|
+
opacity: this.opacity,
|
|
101
106
|
});
|
|
102
107
|
updatedPath.id = currentPath.id;
|
|
103
108
|
updatedPath.workspaceId = currentPath.workspaceId;
|
|
@@ -6,7 +6,33 @@ import { KritzelSelectionGroup } from "../objects/selection-group.class";
|
|
|
6
6
|
export class KritzelLineTool extends KritzelBaseTool {
|
|
7
7
|
color = '#000000';
|
|
8
8
|
size = 4;
|
|
9
|
-
|
|
9
|
+
opacity = 1;
|
|
10
|
+
palette = [
|
|
11
|
+
'#000000',
|
|
12
|
+
'#ff5252',
|
|
13
|
+
'#ffbc00',
|
|
14
|
+
'#00c853',
|
|
15
|
+
'#0000FF',
|
|
16
|
+
'#d500f9',
|
|
17
|
+
'#fafafa',
|
|
18
|
+
'#a52714',
|
|
19
|
+
'#ee8100',
|
|
20
|
+
'#558b2f',
|
|
21
|
+
'#01579b',
|
|
22
|
+
'#8e24aa',
|
|
23
|
+
'#90a4ae',
|
|
24
|
+
'#ff4081',
|
|
25
|
+
'#ff6e40',
|
|
26
|
+
'#aeea00',
|
|
27
|
+
'#304ffe',
|
|
28
|
+
'#7c4dff',
|
|
29
|
+
'#cfd8dc',
|
|
30
|
+
'#f8bbd0',
|
|
31
|
+
'#ffccbc',
|
|
32
|
+
'#f0f4c3',
|
|
33
|
+
'#9fa8da',
|
|
34
|
+
'#d1c4e9',
|
|
35
|
+
];
|
|
10
36
|
/** Arrow head configuration for lines created with this tool */
|
|
11
37
|
arrows;
|
|
12
38
|
_startX = 0;
|
|
@@ -35,6 +61,7 @@ export class KritzelLineTool extends KritzelBaseTool {
|
|
|
35
61
|
scale: this._core.store.state.scale,
|
|
36
62
|
stroke: this.color,
|
|
37
63
|
strokeWidth: this.size,
|
|
64
|
+
opacity: this.opacity,
|
|
38
65
|
arrows: this.arrows,
|
|
39
66
|
});
|
|
40
67
|
line.isCompleted = false;
|
|
@@ -59,6 +86,7 @@ export class KritzelLineTool extends KritzelBaseTool {
|
|
|
59
86
|
scale: this._core.store.state.scale,
|
|
60
87
|
stroke: this.color,
|
|
61
88
|
strokeWidth: this.size,
|
|
89
|
+
opacity: this.opacity,
|
|
62
90
|
arrows: this.arrows,
|
|
63
91
|
});
|
|
64
92
|
line.isCompleted = false;
|
|
@@ -86,6 +114,7 @@ export class KritzelLineTool extends KritzelBaseTool {
|
|
|
86
114
|
scale: this._core.store.state.scale,
|
|
87
115
|
stroke: this.color,
|
|
88
116
|
strokeWidth: this.size,
|
|
117
|
+
opacity: this.opacity,
|
|
89
118
|
arrows: this.arrows,
|
|
90
119
|
});
|
|
91
120
|
updatedLine.id = currentLine.id;
|
|
@@ -113,6 +142,7 @@ export class KritzelLineTool extends KritzelBaseTool {
|
|
|
113
142
|
scale: this._core.store.state.scale,
|
|
114
143
|
stroke: this.color,
|
|
115
144
|
strokeWidth: this.size,
|
|
145
|
+
opacity: this.opacity,
|
|
116
146
|
arrows: this.arrows,
|
|
117
147
|
});
|
|
118
148
|
updatedLine.id = currentLine.id;
|