kritzel-stencil 0.1.1 → 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-SdMGkNhv.js → default-line-tool.config-MA02HCrH.js} +635 -118
- 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} +870 -769
- 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/objects/line.class.js +1 -0
- 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.js +95 -14
- 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-XGgKC_Fe.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-Cw8mdDpt.js → default-line-tool.config-DLpNl6R9.js} +634 -110
- 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} +859 -760
- 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/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 +9 -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-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-D4n7UbGY.js +0 -1
- package/dist/components/p-Du1vxHy8.js +0 -1
- package/dist/components/p-exWKDgI8.js +0 -9
- package/dist/stencil/p-BqhmuUH2.js +0 -2
- package/dist/stencil/p-Cw8mdDpt.js +0 -1
- package/dist/stencil/p-d21a009f.entry.js +0 -9
- 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
|
}
|
|
@@ -68,6 +68,7 @@ export class KritzelLine extends KritzelBaseObject {
|
|
|
68
68
|
object.scale = options?.scale ?? 1;
|
|
69
69
|
object.strokeWidth = options?.strokeWidth ?? 4;
|
|
70
70
|
object.stroke = options?.stroke ?? '#000000';
|
|
71
|
+
object.opacity = options?.opacity ?? 1;
|
|
71
72
|
object.startAnchor = options?.startAnchor;
|
|
72
73
|
object.endAnchor = options?.endAnchor;
|
|
73
74
|
object.arrows = options?.arrows;
|
|
@@ -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;
|
|
@@ -4,9 +4,15 @@ import { KritzelResizeHandler } from "../handlers/resize.handler";
|
|
|
4
4
|
import { KritzelRotationHandler } from "../handlers/rotation.handler";
|
|
5
5
|
import { KritzelSelectionHandler } from "../handlers/selection.handler";
|
|
6
6
|
import { KritzelSelectionGroup } from "../objects/selection-group.class";
|
|
7
|
+
import { KritzelGroup } from "../objects/group.class";
|
|
7
8
|
import { KritzelBaseTool } from "./base-tool.class";
|
|
8
9
|
import { KritzelHoverHandler } from "../handlers/hover.handler";
|
|
9
10
|
import { KritzelLineHandleHandler } from "../handlers/line-handle.handler";
|
|
11
|
+
import { KritzelPath } from "../objects/path.class";
|
|
12
|
+
import { KritzelLine } from "../objects/line.class";
|
|
13
|
+
import { KritzelShape } from "../objects/shape.class";
|
|
14
|
+
import { KritzelText } from "../objects/text.class";
|
|
15
|
+
import { DEFAULT_COLOR_PALETTE } from "../../constants/color-palette.constants";
|
|
10
16
|
export class KritzelSelectionTool extends KritzelBaseTool {
|
|
11
17
|
selectionHandler;
|
|
12
18
|
moveHandler;
|
|
@@ -14,6 +20,193 @@ export class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
14
20
|
resizeHandler;
|
|
15
21
|
rotationHandler;
|
|
16
22
|
lineHandleHandler;
|
|
23
|
+
palette = [...DEFAULT_COLOR_PALETTE];
|
|
24
|
+
/** Returns true if there are objects in the selection group */
|
|
25
|
+
hasSelection() {
|
|
26
|
+
return !!this._core.store.selectionGroup && this._core.store.selectionGroup.objects.length > 0;
|
|
27
|
+
}
|
|
28
|
+
/** Returns the selected objects or empty array */
|
|
29
|
+
getSelectedObjects() {
|
|
30
|
+
return this._core.store.selectionGroup?.objects ?? [];
|
|
31
|
+
}
|
|
32
|
+
flattenObjects(objects) {
|
|
33
|
+
let result = [];
|
|
34
|
+
for (const obj of objects) {
|
|
35
|
+
if (obj instanceof KritzelGroup) {
|
|
36
|
+
result = result.concat(this.flattenObjects(obj.children));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
result.push(obj);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
get color() {
|
|
45
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
46
|
+
if (objects.length === 0)
|
|
47
|
+
return '#000000';
|
|
48
|
+
for (const obj of objects) {
|
|
49
|
+
if (obj instanceof KritzelPath)
|
|
50
|
+
return obj.fill;
|
|
51
|
+
if (obj instanceof KritzelLine)
|
|
52
|
+
return obj.stroke;
|
|
53
|
+
if (obj instanceof KritzelText)
|
|
54
|
+
return obj.fontColor;
|
|
55
|
+
if (obj instanceof KritzelShape)
|
|
56
|
+
return obj.strokeColor;
|
|
57
|
+
}
|
|
58
|
+
return '#000000';
|
|
59
|
+
}
|
|
60
|
+
set color(value) {
|
|
61
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
62
|
+
objects.forEach(obj => {
|
|
63
|
+
if (obj instanceof KritzelPath)
|
|
64
|
+
this._core.updateObject(obj, { fill: value });
|
|
65
|
+
if (obj instanceof KritzelLine)
|
|
66
|
+
this._core.updateObject(obj, { stroke: value });
|
|
67
|
+
if (obj instanceof KritzelText)
|
|
68
|
+
this._core.updateObject(obj, { fontColor: value });
|
|
69
|
+
if (obj instanceof KritzelShape)
|
|
70
|
+
this._core.updateObject(obj, { strokeColor: value });
|
|
71
|
+
});
|
|
72
|
+
this._core.rerender();
|
|
73
|
+
}
|
|
74
|
+
get opacity() {
|
|
75
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
76
|
+
if (objects.length === 0)
|
|
77
|
+
return 1;
|
|
78
|
+
return objects[0].opacity;
|
|
79
|
+
}
|
|
80
|
+
set opacity(value) {
|
|
81
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
82
|
+
objects.forEach(obj => this._core.updateObject(obj, { opacity: value }));
|
|
83
|
+
this._core.rerender();
|
|
84
|
+
}
|
|
85
|
+
get size() {
|
|
86
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
87
|
+
if (objects.length === 0)
|
|
88
|
+
return 1;
|
|
89
|
+
for (const obj of objects) {
|
|
90
|
+
if (obj instanceof KritzelPath)
|
|
91
|
+
return obj.strokeWidth;
|
|
92
|
+
if (obj instanceof KritzelLine)
|
|
93
|
+
return obj.strokeWidth;
|
|
94
|
+
if (obj instanceof KritzelText)
|
|
95
|
+
return obj.fontSize;
|
|
96
|
+
if (obj instanceof KritzelShape)
|
|
97
|
+
return obj.strokeWidth;
|
|
98
|
+
}
|
|
99
|
+
return 1;
|
|
100
|
+
}
|
|
101
|
+
set size(value) {
|
|
102
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
103
|
+
objects.forEach(obj => {
|
|
104
|
+
if (obj instanceof KritzelPath)
|
|
105
|
+
this._core.updateObject(obj, { strokeWidth: value });
|
|
106
|
+
if (obj instanceof KritzelLine)
|
|
107
|
+
this._core.updateObject(obj, { strokeWidth: value });
|
|
108
|
+
if (obj instanceof KritzelText)
|
|
109
|
+
this._core.updateObject(obj, { fontSize: value });
|
|
110
|
+
if (obj instanceof KritzelShape)
|
|
111
|
+
this._core.updateObject(obj, { strokeWidth: value });
|
|
112
|
+
});
|
|
113
|
+
this._core.rerender();
|
|
114
|
+
}
|
|
115
|
+
get fillColor() {
|
|
116
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
117
|
+
for (const obj of objects) {
|
|
118
|
+
if (obj instanceof KritzelShape)
|
|
119
|
+
return obj.fillColor;
|
|
120
|
+
}
|
|
121
|
+
return 'transparent';
|
|
122
|
+
}
|
|
123
|
+
set fillColor(value) {
|
|
124
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
125
|
+
objects.forEach(obj => {
|
|
126
|
+
if (obj instanceof KritzelShape) {
|
|
127
|
+
this._core.updateObject(obj, { fillColor: value });
|
|
128
|
+
// When switching to fill mode, also update stroke color to match
|
|
129
|
+
if (value !== 'transparent') {
|
|
130
|
+
this._core.updateObject(obj, { strokeColor: value });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
this._core.rerender();
|
|
135
|
+
}
|
|
136
|
+
get fontFamily() {
|
|
137
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
138
|
+
for (const obj of objects) {
|
|
139
|
+
if (obj instanceof KritzelText)
|
|
140
|
+
return obj.fontFamily;
|
|
141
|
+
if (obj instanceof KritzelShape)
|
|
142
|
+
return obj.fontFamily;
|
|
143
|
+
}
|
|
144
|
+
return 'Arial';
|
|
145
|
+
}
|
|
146
|
+
set fontFamily(value) {
|
|
147
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
148
|
+
objects.forEach(obj => {
|
|
149
|
+
if (obj instanceof KritzelText)
|
|
150
|
+
this._core.updateObject(obj, { fontFamily: value });
|
|
151
|
+
if (obj instanceof KritzelShape)
|
|
152
|
+
this._core.updateObject(obj, { fontFamily: value });
|
|
153
|
+
});
|
|
154
|
+
this._core.rerender();
|
|
155
|
+
}
|
|
156
|
+
get arrows() {
|
|
157
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
158
|
+
for (const obj of objects) {
|
|
159
|
+
if (obj instanceof KritzelLine)
|
|
160
|
+
return obj.arrows;
|
|
161
|
+
}
|
|
162
|
+
return { start: { enabled: false }, end: { enabled: false } };
|
|
163
|
+
}
|
|
164
|
+
set arrows(value) {
|
|
165
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
166
|
+
objects.forEach(obj => {
|
|
167
|
+
if (obj instanceof KritzelLine)
|
|
168
|
+
this._core.updateObject(obj, { arrows: value });
|
|
169
|
+
});
|
|
170
|
+
this._core.rerender();
|
|
171
|
+
}
|
|
172
|
+
/** Returns the tool config for selected objects, or null if no selection */
|
|
173
|
+
getToolConfig() {
|
|
174
|
+
if (!this.hasSelection())
|
|
175
|
+
return null;
|
|
176
|
+
const objects = this.flattenObjects(this.getSelectedObjects());
|
|
177
|
+
const controls = [];
|
|
178
|
+
const hasShape = objects.some(o => o instanceof KritzelShape);
|
|
179
|
+
const hasText = objects.some(o => o instanceof KritzelText);
|
|
180
|
+
const hasLine = objects.some(o => o instanceof KritzelLine);
|
|
181
|
+
const hasStroke = objects.some(o => o instanceof KritzelPath || o instanceof KritzelLine || o instanceof KritzelShape);
|
|
182
|
+
if (hasText && !hasStroke) {
|
|
183
|
+
controls.push({ type: 'font-size', propertyName: 'size' });
|
|
184
|
+
controls.push({ type: 'font-family', propertyName: 'fontFamily' });
|
|
185
|
+
}
|
|
186
|
+
else if (hasStroke && !hasText) {
|
|
187
|
+
controls.push({ type: 'stroke-size', propertyName: 'size' });
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
if (hasStroke)
|
|
191
|
+
controls.push({ type: 'stroke-size', propertyName: 'size' });
|
|
192
|
+
if (hasText)
|
|
193
|
+
controls.push({ type: 'font-family', propertyName: 'fontFamily' });
|
|
194
|
+
}
|
|
195
|
+
if (hasLine) {
|
|
196
|
+
controls.push({ type: 'line-endings', propertyName: 'arrows' });
|
|
197
|
+
}
|
|
198
|
+
if (hasShape) {
|
|
199
|
+
controls.push({ type: 'shape-fill', propertyName: 'fillColor' });
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
type: 'selection',
|
|
203
|
+
colorProperty: 'color',
|
|
204
|
+
sizeProperty: 'size',
|
|
205
|
+
opacityProperty: 'opacity',
|
|
206
|
+
paletteSource: 'palette',
|
|
207
|
+
controls,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
17
210
|
constructor(core) {
|
|
18
211
|
super(core);
|
|
19
212
|
this.selectionHandler = new KritzelSelectionHandler(this._core);
|
|
@@ -8,6 +8,7 @@ export class KritzelShapeTool extends KritzelBaseTool {
|
|
|
8
8
|
fillColor = 'transparent';
|
|
9
9
|
strokeColor = '#000000';
|
|
10
10
|
strokeWidth = 4;
|
|
11
|
+
opacity = 1;
|
|
11
12
|
fontFamily = 'Arial';
|
|
12
13
|
fontSize = 16;
|
|
13
14
|
fontColor = '#000000';
|
|
@@ -143,6 +144,7 @@ export class KritzelShapeTool extends KritzelBaseTool {
|
|
|
143
144
|
fillColor: this.fillColor,
|
|
144
145
|
strokeColor: this.strokeColor,
|
|
145
146
|
strokeWidth: this.strokeWidth,
|
|
147
|
+
opacity: this.opacity,
|
|
146
148
|
fontSize: this.fontSize,
|
|
147
149
|
fontFamily: this.fontFamily,
|
|
148
150
|
fontColor: this.fontColor,
|
|
@@ -6,6 +6,7 @@ export class KritzelTextTool extends KritzelBaseTool {
|
|
|
6
6
|
fontFamily = 'Arial';
|
|
7
7
|
fontSize = 16;
|
|
8
8
|
fontColor = '#000000';
|
|
9
|
+
opacity = 1;
|
|
9
10
|
palette = [
|
|
10
11
|
'#000000',
|
|
11
12
|
'#FFFFFF',
|
|
@@ -56,6 +57,7 @@ export class KritzelTextTool extends KritzelBaseTool {
|
|
|
56
57
|
const clientY = event.clientY - this._core.store.offsetY;
|
|
57
58
|
const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);
|
|
58
59
|
text.fontColor = this.fontColor;
|
|
60
|
+
text.opacity = this.opacity;
|
|
59
61
|
text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
60
62
|
text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
61
63
|
text.zIndex = this._core.store.currentZIndex;
|
|
@@ -90,6 +92,7 @@ export class KritzelTextTool extends KritzelBaseTool {
|
|
|
90
92
|
const clientY = Math.round(activePointers[0].clientY - this._core.store.offsetY);
|
|
91
93
|
const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);
|
|
92
94
|
text.fontColor = this.fontColor;
|
|
95
|
+
text.opacity = this.opacity;
|
|
93
96
|
text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
94
97
|
text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
95
98
|
text.zIndex = this._core.store.currentZIndex;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
"components/core/kritzel-engine/kritzel-engine.js",
|
|
6
6
|
"components/ui/kritzel-context-menu/kritzel-context-menu.js",
|
|
7
7
|
"components/shared/kritzel-font-family/kritzel-font-family.js",
|
|
8
|
+
"components/shared/kritzel-shape-fill/kritzel-shape-fill.js",
|
|
8
9
|
"components/core/kritzel-cursor-trail/kritzel-cursor-trail.js",
|
|
9
10
|
"components/core/kritzel-editor/kritzel-editor.js",
|
|
10
11
|
"components/shared/kritzel-color/kritzel-color.js",
|
|
@@ -12,21 +13,22 @@
|
|
|
12
13
|
"components/shared/kritzel-font/kritzel-font.js",
|
|
13
14
|
"components/shared/kritzel-font-size/kritzel-font-size.js",
|
|
14
15
|
"components/shared/kritzel-icon/kritzel-icon.js",
|
|
16
|
+
"components/shared/kritzel-line-endings/kritzel-line-endings.js",
|
|
15
17
|
"components/shared/kritzel-menu/kritzel-menu.js",
|
|
16
18
|
"components/shared/kritzel-menu-item/kritzel-menu-item.js",
|
|
19
|
+
"components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js",
|
|
17
20
|
"components/shared/kritzel-portal/kritzel-portal.js",
|
|
18
21
|
"components/shared/kritzel-split-button/kritzel-split-button.js",
|
|
19
22
|
"components/shared/kritzel-stroke-size/kritzel-stroke-size.js",
|
|
20
23
|
"components/shared/kritzel-tooltip/kritzel-tooltip.js",
|
|
21
|
-
"components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js",
|
|
22
|
-
"components/ui/kritzel-control-text-config/kritzel-control-text-config.js",
|
|
23
24
|
"components/ui/kritzel-controls/kritzel-controls.js",
|
|
25
|
+
"components/ui/kritzel-tool-config/kritzel-tool-config.js",
|
|
24
26
|
"components/ui/kritzel-utility-panel/kritzel-utility-panel.js",
|
|
25
27
|
"components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js"
|
|
26
28
|
],
|
|
27
29
|
"compiler": {
|
|
28
30
|
"name": "@stencil/core",
|
|
29
|
-
"version": "4.
|
|
31
|
+
"version": "4.41.0",
|
|
30
32
|
"typescriptVersion": "5.8.3"
|
|
31
33
|
},
|
|
32
34
|
"collections": [],
|