kritzel-stencil 0.0.152 → 0.0.154
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-text-tool.config-BX6sjin6.js → default-text-tool.config-BySzvIox.js} +69 -40
- package/dist/cjs/default-text-tool.config-BySzvIox.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-color_22.cjs.entry.js +129 -78
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/stencil.cjs.js +1 -1
- package/dist/collection/classes/core/core.class.js +16 -14
- package/dist/collection/classes/core/core.class.js.map +1 -1
- package/dist/collection/classes/core/store.class.js +8 -8
- package/dist/collection/classes/core/store.class.js.map +1 -1
- package/dist/collection/classes/core/viewport.class.js +11 -10
- package/dist/collection/classes/core/viewport.class.js.map +1 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +1 -1
- package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
- package/dist/collection/classes/handlers/move.handler.js +2 -0
- package/dist/collection/classes/handlers/move.handler.js.map +1 -1
- package/dist/collection/classes/handlers/resize.handler.js +2 -0
- package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
- package/dist/collection/classes/handlers/rotation.handler.js +2 -0
- package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
- package/dist/collection/classes/handlers/selection.handler.js +7 -5
- package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
- package/dist/collection/classes/objects/base-object.class.js +11 -5
- package/dist/collection/classes/objects/base-object.class.js.map +1 -1
- package/dist/collection/classes/objects/custom-element.class.js +1 -1
- package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
- package/dist/collection/classes/objects/image.class.js +1 -1
- package/dist/collection/classes/objects/image.class.js.map +1 -1
- package/dist/collection/classes/objects/path.class.js +14 -5
- package/dist/collection/classes/objects/path.class.js.map +1 -1
- package/dist/collection/classes/objects/selection-group.class.js +10 -10
- package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
- package/dist/collection/classes/objects/text.class.js +5 -4
- package/dist/collection/classes/objects/text.class.js.map +1 -1
- package/dist/collection/classes/structures/object-map.structure.js +10 -0
- package/dist/collection/classes/structures/object-map.structure.js.map +1 -1
- package/dist/collection/classes/tools/brush-tool.class.js +8 -6
- package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +2 -0
- package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/image-tool.class.js +1 -0
- package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/text-tool.class.js +2 -2
- package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +60 -4
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +89 -27
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +0 -5
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +0 -3
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +0 -2
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +0 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +0 -4
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -4
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +0 -5
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +28 -3
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +8 -2
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +30 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
- package/dist/collection/configs/default-engine-config.js +1 -2
- package/dist/collection/configs/default-engine-config.js.map +1 -1
- package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
- package/dist/collection/interfaces/undo-state.interface.js +2 -0
- package/dist/collection/interfaces/undo-state.interface.js.map +1 -0
- package/dist/components/index.js +3 -3
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-control-brush-config.js +1 -1
- package/dist/components/kritzel-control-text-config.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-editor.js +30 -14
- package/dist/components/kritzel-editor.js.map +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-menu-item.js +1 -1
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-split-button.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/kritzel-workspace-manager.js +1 -1
- package/dist/components/{p-BP71Fape.js → p-1lIHoOlH.js} +14 -12
- package/dist/components/p-1lIHoOlH.js.map +1 -0
- package/dist/components/{p-BDHz9TkP.js → p-B4kxkVe-.js} +3 -3
- package/dist/components/p-B4kxkVe-.js.map +1 -0
- package/dist/components/{p-G8Xyn7XV.js → p-BQg4YML7.js} +3 -3
- package/dist/components/{p-G8Xyn7XV.js.map → p-BQg4YML7.js.map} +1 -1
- package/dist/components/{p-DIp1AvzL.js → p-BfaEHdtM.js} +127 -82
- package/dist/components/p-BfaEHdtM.js.map +1 -0
- package/dist/components/{p-G2HGJcNm.js → p-CBYBurdY.js} +42 -24
- package/dist/components/p-CBYBurdY.js.map +1 -0
- package/dist/components/{p-DnOeM6VQ.js → p-CK6no3mi.js} +4 -4
- package/dist/components/{p-DnOeM6VQ.js.map → p-CK6no3mi.js.map} +1 -1
- package/dist/components/{p-DKVBZiTy.js → p-CsA9M6me.js} +4 -4
- package/dist/components/p-CsA9M6me.js.map +1 -0
- package/dist/components/{p-CJzBIV7n.js → p-D1uj4A4F.js} +3 -3
- package/dist/components/p-D1uj4A4F.js.map +1 -0
- package/dist/components/{p-Cqpp9wKT.js → p-DAfkuR8U.js} +8 -5
- package/dist/components/p-DAfkuR8U.js.map +1 -0
- package/dist/components/{p-CRB1YGoc.js → p-Ddh40W3x.js} +5 -5
- package/dist/components/p-Ddh40W3x.js.map +1 -0
- package/dist/components/{p-DhDRFCsP.js → p-TdCTkEu0.js} +4 -4
- package/dist/components/p-TdCTkEu0.js.map +1 -0
- package/dist/esm/{default-text-tool.config-Bcel-KfG.js → default-text-tool.config-2YFQA3SF.js} +69 -40
- package/dist/esm/default-text-tool.config-2YFQA3SF.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-color_22.entry.js +129 -78
- package/dist/esm/loader.js +1 -1
- package/dist/esm/stencil.js +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-2YFQA3SF.js +2 -0
- package/dist/stencil/p-2YFQA3SF.js.map +1 -0
- package/dist/stencil/p-bb5b2f78.entry.js +10 -0
- package/dist/stencil/p-bb5b2f78.entry.js.map +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/store.class.d.ts +4 -3
- package/dist/types/classes/core/viewport.class.d.ts +1 -0
- package/dist/types/classes/objects/path.class.d.ts +1 -0
- package/dist/types/classes/structures/object-map.structure.d.ts +2 -0
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +8 -1
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +5 -0
- package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +2 -0
- package/dist/types/components/ui/kritzel-utility-panel/kritzel-utility-panel.d.ts +2 -0
- package/dist/types/components.d.ts +28 -0
- package/dist/types/interfaces/engine-state.interface.d.ts +1 -2
- package/dist/types/interfaces/undo-state.interface.d.ts +6 -0
- package/package.json +1 -1
- package/dist/cjs/default-text-tool.config-BX6sjin6.js.map +0 -1
- package/dist/components/p-BDHz9TkP.js.map +0 -1
- package/dist/components/p-BP71Fape.js.map +0 -1
- package/dist/components/p-CJzBIV7n.js.map +0 -1
- package/dist/components/p-CRB1YGoc.js.map +0 -1
- package/dist/components/p-Cqpp9wKT.js.map +0 -1
- package/dist/components/p-DIp1AvzL.js.map +0 -1
- package/dist/components/p-DKVBZiTy.js.map +0 -1
- package/dist/components/p-DhDRFCsP.js.map +0 -1
- package/dist/components/p-G2HGJcNm.js.map +0 -1
- package/dist/esm/default-text-tool.config-Bcel-KfG.js.map +0 -1
- package/dist/stencil/p-76adbc98.entry.js +0 -10
- package/dist/stencil/p-76adbc98.entry.js.map +0 -1
- package/dist/stencil/p-Bcel-KfG.js +0 -2
- package/dist/stencil/p-Bcel-KfG.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { KritzelKeyboardHelper } from '../../helpers/keyboard.helper';\r\nimport { KritzelDevicesHelper } from '../../helpers/devices.helper';\r\nimport { EditorState, TextSelection } from 'prosemirror-state';\r\nimport { EditorView } from 'prosemirror-view';\r\nimport { Schema } from 'prosemirror-model';\r\nimport { schema } from 'prosemirror-schema-basic';\r\nimport { addListNodes } from 'prosemirror-schema-list';\r\nimport { keymap } from 'prosemirror-keymap';\r\nimport { baseKeymap } from 'prosemirror-commands';\r\nexport class KritzelText extends KritzelBaseObject<HTMLDivElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 1;\r\n initialHeight: number = 1;\r\n\r\n scale: number = 1;\r\n scaleFactor: number = 1;\r\n\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n isEditing: boolean = false;\r\n\r\n editor: EditorView | null = null;\r\n content: any = null;\r\n\r\n private readonly _schema: Schema = new Schema({\r\n nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),\r\n marks: schema.spec.marks,\r\n });\r\n\r\n uneditedObject: KritzelText | null = null;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isEmpty(): boolean {\r\n if (!this.editor) {\r\n return true;\r\n }\r\n\r\n const doc = this.editor.state.doc;\r\n\r\n if (doc.content.size === 0) {\r\n return true;\r\n }\r\n\r\n const text = doc.textContent.trim();\r\n return text.length === 0;\r\n }\r\n\r\n constructor(config?: {\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n initialWidth?: number;\r\n initialHeight?: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.width = this.initialWidth / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);\r\n this.height = (this.fontSize * 1.2) / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);\r\n this.scale = config.scale || 1;\r\n this.scaleFactor = config.scaleX ?? 1;\r\n }\r\n }\r\n\r\n static override create(core: KritzelCore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._core = core;\r\n object.id = object.generateId();\r\n object.workspaceId = core.store.state.activeWorkspace.id;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.backgroundColor = 'transparent';\r\n object.initialWidth = object.width;\r\n object.initialHeight = object.height;\r\n object.scaleFactor = 1;\r\n object.scale = object._core.store.state.scale;\r\n object.zIndex = core.store.currentZIndex;\r\n object.editor = object.createEditor();\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLDivElement): void {\r\n if (element === null || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.elementRef.style.fontFamily = this.fontFamily;\r\n this.elementRef.style.fontSize = `${this.fontSize}pt`;\r\n this.elementRef.style.color = this.fontColor;\r\n this.elementRef.style.whiteSpace = 'pre-wrap';\r\n this.elementRef.style.wordWrap = 'break-word';\r\n this.elementRef.innerHTML = '';\r\n this.elementRef.appendChild(this.editor.dom);\r\n\r\n this.isMounted = true;\r\n\r\n requestAnimationFrame(() => this.adjustSizeOnInput());\r\n }\r\n\r\n private createEditor(): EditorView {\r\n const doc = this._schema.node('doc', null, [this._schema.node('paragraph')]);\r\n\r\n return new EditorView(null, {\r\n state: EditorState.create({\r\n doc: doc,\r\n plugins: [keymap(baseKeymap)],\r\n }),\r\n editable: () => false,\r\n dispatchTransaction: transaction => {\r\n const newState = this.editor.state.apply(transaction);\r\n\r\n this.editor.updateState(newState);\r\n\r\n if (transaction.docChanged) {\r\n this.content = newState.doc.toJSON();\r\n this.adjustSizeOnInput();\r\n\r\n if (!transaction.getMeta('fromRemote')) {\r\n this._core.store.state.objectsMap.update(this, { temporary: true });\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n public setContent(content: any): void {\r\n this.content = content;\r\n\r\n if (this.editor && content) {\r\n const newDoc = this.editor.state.schema.nodeFromJSON(content);\r\n const tr = this.editor.state.tr.replaceWith(0, this.editor.state.doc.content.size, newDoc.content);\r\n \r\n tr.setMeta('fromRemote', true);\r\n this.editor.dispatch(tr);\r\n }\r\n }\r\n\r\n adjustSizeOnInput(): void {\r\n const element = this.elementRef;\r\n\r\n if (element && this.isMounted && element.scrollWidth > 0) {\r\n const previousTotalWidth = this.totalWidth;\r\n const previousTotalHeight = this.totalHeight;\r\n\r\n const newWidth = element.scrollWidth;\r\n const newHeight = element.scrollHeight;\r\n\r\n this.width = newWidth * this.scaleFactor;\r\n this.height = newHeight * this.scaleFactor;\r\n\r\n if (this.rotation !== 0) {\r\n const newTotalWidth = this.totalWidth;\r\n const newTotalHeight = this.totalHeight;\r\n\r\n const deltaWidth = (newTotalWidth - previousTotalWidth) / 2 / this.scale;\r\n const deltaHeight = (newTotalHeight - previousTotalHeight) / 2 / this.scale;\r\n\r\n if (deltaWidth !== 0 || deltaHeight !== 0) {\r\n const cos = Math.cos(this.rotation);\r\n const sin = Math.sin(this.rotation);\r\n\r\n const rotatedDeltaX = cos * deltaWidth - sin * deltaHeight;\r\n const rotatedDeltaY = sin * deltaWidth + cos * deltaHeight;\r\n\r\n this.translateX += rotatedDeltaX - deltaWidth;\r\n this.translateY += rotatedDeltaY - deltaHeight;\r\n }\r\n }\r\n }\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const originalWidth = this.width / this.scaleFactor;\r\n const originalHeight = this.height / this.scaleFactor;\r\n\r\n const scaleX = width / originalWidth;\r\n const scaleY = height / originalHeight;\r\n\r\n this.scaleFactor = Math.min(scaleX, scaleY);\r\n\r\n this.width = originalWidth * this.scaleFactor;\r\n this.height = originalHeight * this.scaleFactor;\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._core.store.state.objectsMap.update(this);\r\n }\r\n\r\n focus(coords?: { x: number; y: number }): void {\r\n if (this.editor) {\r\n const doc = this.editor.state.doc;\r\n\r\n if (coords.x && coords.y) {\r\n const pos = this.editor.posAtCoords({ left: coords.x, top: coords.y });\r\n if (pos) {\r\n this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));\r\n this.editor.focus();\r\n \r\n if (KritzelDevicesHelper.isIOS()) {\r\n this.scrollIntoViewOnIOS();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n const end = Math.max(1, doc.content.size - 1);\r\n this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, end)));\r\n this.editor.focus();\r\n \r\n if (KritzelDevicesHelper.isIOS()) {\r\n this.scrollIntoViewOnIOS();\r\n }\r\n }\r\n }\r\n\r\n private scrollIntoViewOnIOS(): void {\r\n setTimeout(() => {\r\n if (this.editor && this.editor.dom) {\r\n this.editor.dom.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n }\r\n }, 300);\r\n }\r\n\r\n edit(event?: PointerEvent): void {\r\n KritzelKeyboardHelper.disableInteractiveWidget();\r\n\r\n this.uneditedObject = this.clone() as KritzelText;\r\n\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n\r\n this.editor.setProps({ editable: () => true });\r\n\r\n this.isEditing = true;\r\n\r\n this._core.rerender();\r\n\r\n this.adjustSizeOnInput();\r\n\r\n this.focus({ x: event?.clientX, y: event?.clientY });\r\n\r\n KritzelKeyboardHelper.enableInteractiveWidget();\r\n }\r\n\r\n save(): void {\r\n requestAnimationFrame(() => this.adjustSizeOnInput());\r\n\r\n this.content = this.editor.state.doc.toJSON();\r\n\r\n this.editor.setProps({ editable: () => false });\r\n\r\n this.editor.dom.blur();\r\n\r\n this.isEditing = false;\r\n\r\n this._core.store.state.objectsMap.consolidateTemporaryItems();\r\n\r\n this._core.store.state.objectsMap.update(this);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n override copy(): KritzelText {\r\n const copiedObject = super.copy() as KritzelText;\r\n copiedObject.editor = copiedObject.createEditor();\r\n\r\n if (this.content) {\r\n copiedObject.setContent(this.content);\r\n }\r\n\r\n return copiedObject;\r\n }\r\n\r\n override serialize() {\r\n const { _core, _elementRef, _schema, element, totalWidth, totalHeight, editor, uneditedObject, ...remainingProps } = this as any;\r\n\r\n const clonedProps = structuredClone(remainingProps);\r\n\r\n if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {\r\n clonedProps.element = element.cloneNode(true) as HTMLElement;\r\n }\r\n\r\n return clonedProps;\r\n }\r\n\r\n override deserialize<KritzelText>(object: any): KritzelText {\r\n super.deserialize<KritzelText>(object);\r\n if (object.content) {\r\n this.setContent(object.content);\r\n }\r\n return this as unknown as KritzelText;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { KritzelKeyboardHelper } from '../../helpers/keyboard.helper';\r\nimport { KritzelDevicesHelper } from '../../helpers/devices.helper';\r\nimport { EditorState, TextSelection } from 'prosemirror-state';\r\nimport { EditorView } from 'prosemirror-view';\r\nimport { Schema } from 'prosemirror-model';\r\nimport { schema } from 'prosemirror-schema-basic';\r\nimport { addListNodes } from 'prosemirror-schema-list';\r\nimport { keymap } from 'prosemirror-keymap';\r\nimport { baseKeymap } from 'prosemirror-commands';\r\nexport class KritzelText extends KritzelBaseObject<HTMLDivElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 1;\r\n initialHeight: number = 1;\r\n\r\n scale: number = 1;\r\n scaleFactor: number = 1;\r\n\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n isEditing: boolean = false;\r\n\r\n editor: EditorView | null = null;\r\n content: any = null;\r\n\r\n private readonly _schema: Schema = new Schema({\r\n nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),\r\n marks: schema.spec.marks,\r\n });\r\n\r\n uneditedObject: KritzelText | null = null;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isEmpty(): boolean {\r\n if (!this.editor) {\r\n return true;\r\n }\r\n\r\n const doc = this.editor.state.doc;\r\n\r\n if (doc.content.size === 0) {\r\n return true;\r\n }\r\n\r\n const text = doc.textContent.trim();\r\n return text.length === 0;\r\n }\r\n\r\n constructor(config?: {\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n initialWidth?: number;\r\n initialHeight?: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.width = this.initialWidth / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);\r\n this.height = (this.fontSize * 1.2) / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);\r\n this.scale = config.scale || 1;\r\n this.scaleFactor = config.scaleX ?? 1;\r\n }\r\n }\r\n\r\n static override create(core: KritzelCore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._core = core;\r\n object.id = object.generateId();\r\n object.workspaceId = core.store.state.activeWorkspace.id;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.backgroundColor = 'transparent';\r\n object.initialWidth = object.width;\r\n object.initialHeight = object.height;\r\n object.scaleFactor = 1;\r\n object.scale = object._core.store.state.scale;\r\n object.zIndex = core.store.currentZIndex;\r\n object.editor = object.createEditor();\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLDivElement): void {\r\n if (element === null || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.elementRef.style.fontFamily = this.fontFamily;\r\n this.elementRef.style.fontSize = `${this.fontSize}pt`;\r\n this.elementRef.style.color = this.fontColor;\r\n this.elementRef.style.whiteSpace = 'pre-wrap';\r\n this.elementRef.style.wordWrap = 'break-word';\r\n this.elementRef.innerHTML = '';\r\n this.elementRef.appendChild(this.editor.dom);\r\n\r\n this.isMounted = true;\r\n\r\n requestAnimationFrame(() => this.adjustSizeOnInput());\r\n }\r\n\r\n private createEditor(): EditorView {\r\n const doc = this._schema.node('doc', null, [this._schema.node('paragraph')]);\r\n\r\n return new EditorView(null, {\r\n state: EditorState.create({\r\n doc: doc,\r\n plugins: [keymap(baseKeymap)],\r\n }),\r\n editable: () => false,\r\n dispatchTransaction: transaction => {\r\n const newState = this.editor.state.apply(transaction);\r\n\r\n this.editor.updateState(newState);\r\n\r\n if (transaction.docChanged) {\r\n this.content = newState.doc.toJSON();\r\n this.adjustSizeOnInput();\r\n\r\n if (!transaction.getMeta('fromRemote')) {\r\n this._core.store.state.objects.update(this, { temporary: true });\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n public setContent(content: any): void {\r\n this.content = content;\r\n\r\n if (this.editor && content) {\r\n const newDoc = this.editor.state.schema.nodeFromJSON(content);\r\n const tr = this.editor.state.tr.replaceWith(0, this.editor.state.doc.content.size, newDoc.content);\r\n \r\n tr.setMeta('fromRemote', true);\r\n this.editor.dispatch(tr);\r\n }\r\n }\r\n\r\n adjustSizeOnInput(): void {\r\n const element = this.elementRef;\r\n\r\n if (element && this.isMounted && element.scrollWidth > 0) {\r\n const previousTotalWidth = this.totalWidth;\r\n const previousTotalHeight = this.totalHeight;\r\n\r\n const newWidth = element.scrollWidth;\r\n const newHeight = element.scrollHeight;\r\n\r\n this.width = newWidth * this.scaleFactor;\r\n this.height = newHeight * this.scaleFactor;\r\n\r\n if (this.rotation !== 0) {\r\n const newTotalWidth = this.totalWidth;\r\n const newTotalHeight = this.totalHeight;\r\n\r\n const deltaWidth = (newTotalWidth - previousTotalWidth) / 2 / this.scale;\r\n const deltaHeight = (newTotalHeight - previousTotalHeight) / 2 / this.scale;\r\n\r\n if (deltaWidth !== 0 || deltaHeight !== 0) {\r\n const cos = Math.cos(this.rotation);\r\n const sin = Math.sin(this.rotation);\r\n\r\n const rotatedDeltaX = cos * deltaWidth - sin * deltaHeight;\r\n const rotatedDeltaY = sin * deltaWidth + cos * deltaHeight;\r\n\r\n this.translateX += rotatedDeltaX - deltaWidth;\r\n this.translateY += rotatedDeltaY - deltaHeight;\r\n }\r\n }\r\n }\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const originalWidth = this.width / this.scaleFactor;\r\n const originalHeight = this.height / this.scaleFactor;\r\n\r\n const scaleX = width / originalWidth;\r\n const scaleY = height / originalHeight;\r\n\r\n this.scaleFactor = Math.min(scaleX, scaleY);\r\n\r\n this.width = originalWidth * this.scaleFactor;\r\n this.height = originalHeight * this.scaleFactor;\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._core.store.state.objects.update(this);\r\n }\r\n\r\n focus(coords?: { x: number; y: number }): void {\r\n if (this.editor) {\r\n const doc = this.editor.state.doc;\r\n\r\n if (coords.x && coords.y) {\r\n const pos = this.editor.posAtCoords({ left: coords.x, top: coords.y });\r\n if (pos) {\r\n this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));\r\n this.editor.focus();\r\n \r\n if (KritzelDevicesHelper.isIOS()) {\r\n this.scrollIntoViewOnIOS();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n const end = Math.max(1, doc.content.size - 1);\r\n this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, end)));\r\n this.editor.focus();\r\n \r\n if (KritzelDevicesHelper.isIOS()) {\r\n this.scrollIntoViewOnIOS();\r\n }\r\n }\r\n }\r\n\r\n private scrollIntoViewOnIOS(): void {\r\n setTimeout(() => {\r\n if (this.editor && this.editor.dom) {\r\n this.editor.dom.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n }\r\n }, 300);\r\n }\r\n\r\n edit(event?: PointerEvent): void {\r\n KritzelKeyboardHelper.disableInteractiveWidget();\r\n\r\n this.uneditedObject = this.clone() as KritzelText;\r\n\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n\r\n this.editor.setProps({ editable: () => true });\r\n\r\n this.isEditing = true;\r\n\r\n this._core.rerender();\r\n\r\n this.adjustSizeOnInput();\r\n\r\n this.focus({ x: event?.clientX, y: event?.clientY });\r\n\r\n KritzelKeyboardHelper.enableInteractiveWidget();\r\n }\r\n\r\n save(): void {\r\n requestAnimationFrame(() => this.adjustSizeOnInput());\r\n\r\n this.content = this.editor.state.doc.toJSON();\r\n\r\n this.editor.setProps({ editable: () => false });\r\n\r\n this.editor.dom.blur();\r\n\r\n this.isEditing = false;\r\n\r\n this._core.store.state.objects.consolidateTemporaryItems();\r\n\r\n this._core.store.state.objects.update(this);\r\n\r\n this._core.engine.emitObjectsChange();\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n override copy(): KritzelText {\r\n const copiedObject = super.copy() as KritzelText;\r\n copiedObject.editor = copiedObject.createEditor();\r\n\r\n if (this.content) {\r\n copiedObject.setContent(this.content);\r\n }\r\n\r\n return copiedObject;\r\n }\r\n\r\n override serialize() {\r\n const { _core, _elementRef, _schema, element, totalWidth, totalHeight, editor, uneditedObject, ...remainingProps } = this as any;\r\n\r\n const clonedProps = structuredClone(remainingProps);\r\n\r\n if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {\r\n clonedProps.element = element.cloneNode(true) as HTMLElement;\r\n }\r\n\r\n return clonedProps;\r\n }\r\n\r\n override deserialize<KritzelText>(object: any): KritzelText {\r\n super.deserialize<KritzelText>(object);\r\n if (object.content) {\r\n this.setContent(object.content);\r\n }\r\n return this as unknown as KritzelText;\r\n }\r\n}\r\n"]}
|
|
@@ -23,6 +23,14 @@ export class KritzelObjectMap {
|
|
|
23
23
|
get workspaceId() {
|
|
24
24
|
return this._workspaceId;
|
|
25
25
|
}
|
|
26
|
+
get undoState() {
|
|
27
|
+
return {
|
|
28
|
+
canUndo: this._undoManager ? this._undoManager.canUndo() : false,
|
|
29
|
+
canRedo: this._undoManager ? this._undoManager.canRedo() : false,
|
|
30
|
+
undoStackSize: this._undoManager ? this._undoManager.undoStack.length : 0,
|
|
31
|
+
redoStackSize: this._undoManager ? this._undoManager.redoStack.length : 0,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
26
34
|
constructor() {
|
|
27
35
|
this.map = new Map();
|
|
28
36
|
}
|
|
@@ -206,11 +214,13 @@ export class KritzelObjectMap {
|
|
|
206
214
|
undo() {
|
|
207
215
|
if (this._undoManager && this._undoManager.canUndo()) {
|
|
208
216
|
this._undoManager.undo();
|
|
217
|
+
this._core.engine.emitObjectsChange();
|
|
209
218
|
}
|
|
210
219
|
}
|
|
211
220
|
redo() {
|
|
212
221
|
if (this._undoManager && this._undoManager.canRedo()) {
|
|
213
222
|
this._undoManager.redo();
|
|
223
|
+
this._core.engine.emitObjectsChange();
|
|
214
224
|
}
|
|
215
225
|
}
|
|
216
226
|
canUndo() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-map.structure.js","sourceRoot":"","sources":["../../../src/classes/structures/object-map.structure.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Y from 'yjs';\r\nimport { KritzelReviver } from '../core/reviver.class';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\nimport { KritzelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { ISyncProvider } from '../../interfaces/sync-provider.interface';\r\nimport { KritzelSyncConfig } from '../../interfaces/sync-config.interface';\r\nimport { DEFAULT_SYNC_CONFIG } from '../../configs/default-sync.config';\r\n\r\nexport class KritzelObjectMap<T extends KritzelBaseObject<any>> {\r\n private map: Map<string, T>;\r\n private _ydoc: Y.Doc | null = null;\r\n private _objectsMap: Y.Map<any> | null = null;\r\n private _providers: ISyncProvider[] = [];\r\n private _undoManager: Y.UndoManager | null = null;\r\n private _reviver: KritzelReviver | null = null;\r\n private _core: KritzelCore | null = null;\r\n private _workspaceId: string | null = null;\r\n private _isReady: boolean = false;\r\n private _temporaryItemsCount: number = 0;\r\n\r\n get isReady(): boolean {\r\n return this._isReady;\r\n }\r\n\r\n get undoManager(): Y.UndoManager | null {\r\n return this._undoManager;\r\n }\r\n\r\n get workspaceId(): string | null {\r\n return this._workspaceId;\r\n }\r\n\r\n constructor() {\r\n this.map = new Map<string, T>();\r\n }\r\n\r\n async initialize(core: KritzelCore, workspaceId: string, config?: KritzelSyncConfig): Promise<void> {\r\n this._core = core;\r\n this._workspaceId = workspaceId;\r\n this._reviver = new KritzelReviver(core);\r\n\r\n // Create a dedicated Y.Doc for this workspace\r\n this._ydoc = new Y.Doc();\r\n this._objectsMap = this._ydoc.getMap('objects');\r\n\r\n const docName = `kritzel-workspace-${workspaceId}`;\r\n const finalConfig = config ?? DEFAULT_SYNC_CONFIG;\r\n\r\n // Instantiate providers from configuration\r\n for (const providerConfig of finalConfig.providers) {\r\n let provider: ISyncProvider;\r\n\r\n // Check if it's a class constructor or a factory\r\n if (typeof providerConfig === 'function') {\r\n // It's a class constructor\r\n provider = new providerConfig(docName, this._ydoc);\r\n } else {\r\n // It's a factory with a create method\r\n provider = providerConfig.create(docName, this._ydoc);\r\n }\r\n\r\n this._providers.push(provider);\r\n }\r\n\r\n // Set up undo/redo manager for this workspace\r\n this._undoManager = new Y.UndoManager([this._objectsMap], {\r\n captureTimeout: 200,\r\n trackedOrigins: new Set(['local', 'temporary']),\r\n ignoreRemoteMapChanges: true,\r\n });\r\n\r\n this._undoManager.on('stack-item-added', event => {\r\n if (event.type === 'undo') {\r\n // Track if this was a temporary item\r\n if (event.origin === 'temporary') {\r\n this._temporaryItemsCount++;\r\n }\r\n }\r\n });\r\n\r\n this._undoManager.on('stack-item-popped', event => {\r\n if (event.type === 'undo') {\r\n // Reduce temporary count when items are undone\r\n if (event.origin === 'temporary' && this._temporaryItemsCount > 0) {\r\n this._temporaryItemsCount--;\r\n }\r\n }\r\n });\r\n\r\n // Observe changes to objects and sync with application state\r\n this._objectsMap.observe(event => {\r\n this.handleObjectsChange(event);\r\n });\r\n\r\n // Connect all providers in parallel\r\n await Promise.all(this._providers.map(p => p.connect()));\r\n this._isReady = true;\r\n\r\n // Load objects from Yjs\r\n this.loadFromYjs();\r\n }\r\n\r\n private handleObjectsChange(event: Y.YMapEvent<any>): void {\r\n // Skip Map updates for local changes (already done), but still trigger re-render\r\n // 'temporary' is also a local change that shouldn't be re-deserialized\r\n if (event.transaction.origin === 'local' || event.transaction.origin === 'temporary') {\r\n this._core?.rerender();\r\n return;\r\n }\r\n\r\n const changedKeys = Array.from(event.keysChanged);\r\n const objectsToUpdate = [];\r\n const selectionGroupsToUpdate = [];\r\n const objectsToDelete = [];\r\n\r\n changedKeys.forEach(key => {\r\n const change = event.changes.keys.get(key);\r\n\r\n if (change && change.action === 'delete') {\r\n objectsToDelete.push(key);\r\n } else {\r\n const serialized = this._objectsMap.get(key);\r\n if (serialized) {\r\n const object = this._reviver.revive(serialized);\r\n\r\n // Separate SelectionGroups to process them after regular objects\r\n if (object instanceof KritzelSelectionGroup) {\r\n selectionGroupsToUpdate.push(object);\r\n } else {\r\n objectsToUpdate.push(object);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Delete objects from local map\r\n objectsToDelete.forEach(objectId => {\r\n this.map.delete(objectId);\r\n });\r\n\r\n // First, update or insert regular objects\r\n objectsToUpdate.forEach(object => {\r\n this.map.set(object.id, object);\r\n });\r\n\r\n // Then, update or insert SelectionGroups\r\n selectionGroupsToUpdate.forEach(object => {\r\n this.map.set(object.id, object);\r\n });\r\n\r\n this._core?.rerender();\r\n }\r\n transaction(callback: () => void): void {\r\n if (this._ydoc) {\r\n this._ydoc.transact(callback, 'local');\r\n }\r\n }\r\n\r\n loadFromYjs(): void {\r\n if (!this._objectsMap || !this._reviver) {\r\n return;\r\n }\r\n\r\n this.map.clear();\r\n this._objectsMap.forEach((serialized, key) => {\r\n const object = this._reviver.revive<T>(serialized);\r\n this.map.set(key, object);\r\n });\r\n }\r\n\r\n reset(): void {\r\n this.map.clear();\r\n this._ydoc.transact(() => {\r\n this._objectsMap.clear();\r\n }, 'local');\r\n }\r\n\r\n insert(object: T): boolean {\r\n if (!object.id) {\r\n return false;\r\n }\r\n this.map.set(object.id, object);\r\n\r\n if (this._objectsMap && this.isPersistable(object)) {\r\n const serialized = object.serialize();\r\n this._ydoc.transact(() => {\r\n this._objectsMap.set(object.id, serialized);\r\n }, 'local');\r\n }\r\n\r\n return true;\r\n }\r\n\r\n update(object: T, options: { temporary?: boolean } = {}): boolean {\r\n if (!object.id || !this.map.has(object.id)) {\r\n return false;\r\n }\r\n this.map.set(object.id, object);\r\n\r\n if (this._objectsMap && this.isPersistable(object)) {\r\n const serialized = object.serialize();\r\n\r\n const origin = options.temporary ? 'temporary' : 'local';\r\n\r\n this._ydoc.transact(() => {\r\n this._objectsMap.set(object.id, serialized);\r\n }, origin);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n remove(predicate: (object: T) => boolean): void {\r\n for (const [id, object] of this.map) {\r\n if (predicate(object)) {\r\n this.map.delete(id);\r\n\r\n if (this._objectsMap && this.isPersistable(object)) {\r\n this._ydoc.transact(() => {\r\n this._objectsMap.delete(id);\r\n }, 'local');\r\n }\r\n }\r\n }\r\n }\r\n\r\n filter(predicate: (object: T) => boolean): T[] {\r\n const results: T[] = [];\r\n for (const object of this.map.values()) {\r\n if (predicate(object)) {\r\n results.push(object);\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n allObjects(): T[] {\r\n return Array.from(this.map.values());\r\n }\r\n\r\n private isPersistable(object: T): boolean {\r\n if (object instanceof KritzelSelectionBox) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n undo(): void {\r\n if (this._undoManager && this._undoManager.canUndo()) {\r\n this._undoManager.undo();\r\n }\r\n }\r\n\r\n redo(): void {\r\n if (this._undoManager && this._undoManager.canRedo()) {\r\n this._undoManager.redo();\r\n }\r\n }\r\n\r\n canUndo(): boolean {\r\n return this._undoManager ? this._undoManager.canUndo() : false;\r\n }\r\n\r\n canRedo(): boolean {\r\n return this._undoManager ? this._undoManager.canRedo() : false;\r\n }\r\n\r\n clearHistory(): void {\r\n if (this._undoManager) {\r\n this._undoManager.clear();\r\n this._temporaryItemsCount = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Consolidates all temporary items in the undo stack into a single undo item.\r\n * Call this when you want to merge multiple temporary changes (e.g., keystrokes) into one.\r\n */\r\n consolidateTemporaryItems(): void {\r\n if (!this._undoManager || this._temporaryItemsCount === 0) {\r\n return;\r\n }\r\n\r\n // Get current stack length\r\n const stackLength = this._undoManager.undoStack.length;\r\n \r\n if (stackLength === 0) {\r\n this._temporaryItemsCount = 0;\r\n return;\r\n }\r\n\r\n // Stop tracking temporarily\r\n this._undoManager.stopCapturing();\r\n \r\n // The temporary items should be at the end of the stack\r\n // We'll need to undo them all, then redo as a single transaction\r\n const itemsToConsolidate = Math.min(this._temporaryItemsCount, stackLength);\r\n \r\n if (itemsToConsolidate > 1) {\r\n // Store the current state before undoing\r\n const undoneItems: any[] = [];\r\n \r\n // Undo all temporary items\r\n for (let i = 0; i < itemsToConsolidate; i++) {\r\n if (this._undoManager.canUndo()) {\r\n undoneItems.push(this._undoManager.undoStack[this._undoManager.undoStack.length - 1]);\r\n this._undoManager.undo();\r\n }\r\n }\r\n \r\n // Now redo them all as a single 'local' transaction\r\n // This will consolidate them into one undo item\r\n this._ydoc.transact(() => {\r\n for (let i = itemsToConsolidate - 1; i >= 0; i--) {\r\n if (this._undoManager.canRedo()) {\r\n this._undoManager.redo();\r\n }\r\n }\r\n }, 'local');\r\n } else if (itemsToConsolidate === 1) {\r\n // If only one temporary item, just change its origin to 'local'\r\n // This is implicit - next transaction will be separate\r\n }\r\n \r\n this._temporaryItemsCount = 0;\r\n }\r\n\r\n /**\r\n * Removes all temporary items from the undo stack without consolidating them.\r\n * Use this to discard temporary changes completely.\r\n */\r\n clearTemporaryItems(): void {\r\n if (!this._undoManager || this._temporaryItemsCount === 0) {\r\n return;\r\n }\r\n\r\n const stackLength = this._undoManager.undoStack.length;\r\n const itemsToRemove = Math.min(this._temporaryItemsCount, stackLength);\r\n \r\n // Remove items from the end of the stack\r\n for (let i = 0; i < itemsToRemove; i++) {\r\n if (this._undoManager.undoStack.length > 0) {\r\n this._undoManager.undoStack.pop();\r\n }\r\n }\r\n \r\n this._temporaryItemsCount = 0;\r\n }\r\n\r\n destroy(): void {\r\n this._providers.forEach(p => p.destroy());\r\n this._providers = [];\r\n\r\n if (this._ydoc) {\r\n this._ydoc.destroy();\r\n }\r\n this.map.clear();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"object-map.structure.js","sourceRoot":"","sources":["../../../src/classes/structures/object-map.structure.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Y from 'yjs';\r\nimport { KritzelReviver } from '../core/reviver.class';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\nimport { KritzelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { ISyncProvider } from '../../interfaces/sync-provider.interface';\r\nimport { KritzelSyncConfig } from '../../interfaces/sync-config.interface';\r\nimport { DEFAULT_SYNC_CONFIG } from '../../configs/default-sync.config';\r\nimport { KritzelUndoState } from '../..';\r\n\r\nexport class KritzelObjectMap<T extends KritzelBaseObject<any>> {\r\n private map: Map<string, T>;\r\n private _ydoc: Y.Doc | null = null;\r\n private _objectsMap: Y.Map<any> | null = null;\r\n private _providers: ISyncProvider[] = [];\r\n private _undoManager: Y.UndoManager | null = null;\r\n private _reviver: KritzelReviver | null = null;\r\n private _core: KritzelCore | null = null;\r\n private _workspaceId: string | null = null;\r\n private _isReady: boolean = false;\r\n private _temporaryItemsCount: number = 0;\r\n\r\n get isReady(): boolean {\r\n return this._isReady;\r\n }\r\n\r\n get undoManager(): Y.UndoManager | null {\r\n return this._undoManager;\r\n }\r\n\r\n get workspaceId(): string | null {\r\n return this._workspaceId;\r\n }\r\n\r\n get undoState() : KritzelUndoState {\r\n return {\r\n canUndo: this._undoManager ? this._undoManager.canUndo() : false,\r\n canRedo: this._undoManager ? this._undoManager.canRedo() : false,\r\n undoStackSize: this._undoManager ? this._undoManager.undoStack.length : 0,\r\n redoStackSize: this._undoManager ? this._undoManager.redoStack.length : 0,\r\n };\r\n }\r\n\r\n constructor() {\r\n this.map = new Map<string, T>();\r\n }\r\n\r\n async initialize(core: KritzelCore, workspaceId: string, config?: KritzelSyncConfig): Promise<void> {\r\n this._core = core;\r\n this._workspaceId = workspaceId;\r\n this._reviver = new KritzelReviver(core);\r\n\r\n // Create a dedicated Y.Doc for this workspace\r\n this._ydoc = new Y.Doc();\r\n this._objectsMap = this._ydoc.getMap('objects');\r\n\r\n const docName = `kritzel-workspace-${workspaceId}`;\r\n const finalConfig = config ?? DEFAULT_SYNC_CONFIG;\r\n\r\n // Instantiate providers from configuration\r\n for (const providerConfig of finalConfig.providers) {\r\n let provider: ISyncProvider;\r\n\r\n // Check if it's a class constructor or a factory\r\n if (typeof providerConfig === 'function') {\r\n // It's a class constructor\r\n provider = new providerConfig(docName, this._ydoc);\r\n } else {\r\n // It's a factory with a create method\r\n provider = providerConfig.create(docName, this._ydoc);\r\n }\r\n\r\n this._providers.push(provider);\r\n }\r\n\r\n // Set up undo/redo manager for this workspace\r\n this._undoManager = new Y.UndoManager([this._objectsMap], {\r\n captureTimeout: 200,\r\n trackedOrigins: new Set(['local', 'temporary']),\r\n ignoreRemoteMapChanges: true,\r\n });\r\n\r\n this._undoManager.on('stack-item-added', event => {\r\n if (event.type === 'undo') {\r\n // Track if this was a temporary item\r\n if (event.origin === 'temporary') {\r\n this._temporaryItemsCount++;\r\n }\r\n }\r\n });\r\n\r\n this._undoManager.on('stack-item-popped', event => {\r\n if (event.type === 'undo') {\r\n // Reduce temporary count when items are undone\r\n if (event.origin === 'temporary' && this._temporaryItemsCount > 0) {\r\n this._temporaryItemsCount--;\r\n }\r\n }\r\n });\r\n\r\n // Observe changes to objects and sync with application state\r\n this._objectsMap.observe(event => {\r\n this.handleObjectsChange(event);\r\n });\r\n\r\n // Connect all providers in parallel\r\n await Promise.all(this._providers.map(p => p.connect()));\r\n this._isReady = true;\r\n\r\n // Load objects from Yjs\r\n this.loadFromYjs();\r\n }\r\n\r\n private handleObjectsChange(event: Y.YMapEvent<any>): void {\r\n // Skip Map updates for local changes (already done), but still trigger re-render\r\n // 'temporary' is also a local change that shouldn't be re-deserialized\r\n if (event.transaction.origin === 'local' || event.transaction.origin === 'temporary') {\r\n this._core?.rerender();\r\n return;\r\n }\r\n\r\n const changedKeys = Array.from(event.keysChanged);\r\n const objectsToUpdate = [];\r\n const selectionGroupsToUpdate = [];\r\n const objectsToDelete = [];\r\n\r\n changedKeys.forEach(key => {\r\n const change = event.changes.keys.get(key);\r\n\r\n if (change && change.action === 'delete') {\r\n objectsToDelete.push(key);\r\n } else {\r\n const serialized = this._objectsMap.get(key);\r\n if (serialized) {\r\n const object = this._reviver.revive(serialized);\r\n\r\n // Separate SelectionGroups to process them after regular objects\r\n if (object instanceof KritzelSelectionGroup) {\r\n selectionGroupsToUpdate.push(object);\r\n } else {\r\n objectsToUpdate.push(object);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Delete objects from local map\r\n objectsToDelete.forEach(objectId => {\r\n this.map.delete(objectId);\r\n });\r\n\r\n // First, update or insert regular objects\r\n objectsToUpdate.forEach(object => {\r\n this.map.set(object.id, object);\r\n });\r\n\r\n // Then, update or insert SelectionGroups\r\n selectionGroupsToUpdate.forEach(object => {\r\n this.map.set(object.id, object);\r\n });\r\n\r\n this._core?.rerender();\r\n }\r\n transaction(callback: () => void): void {\r\n if (this._ydoc) {\r\n this._ydoc.transact(callback, 'local');\r\n }\r\n }\r\n\r\n loadFromYjs(): void {\r\n if (!this._objectsMap || !this._reviver) {\r\n return;\r\n }\r\n\r\n this.map.clear();\r\n this._objectsMap.forEach((serialized, key) => {\r\n const object = this._reviver.revive<T>(serialized);\r\n this.map.set(key, object);\r\n });\r\n }\r\n\r\n reset(): void {\r\n this.map.clear();\r\n this._ydoc.transact(() => {\r\n this._objectsMap.clear();\r\n }, 'local');\r\n }\r\n\r\n insert(object: T): boolean {\r\n if (!object.id) {\r\n return false;\r\n }\r\n this.map.set(object.id, object);\r\n\r\n if (this._objectsMap && this.isPersistable(object)) {\r\n const serialized = object.serialize();\r\n this._ydoc.transact(() => {\r\n this._objectsMap.set(object.id, serialized);\r\n }, 'local');\r\n }\r\n\r\n return true;\r\n }\r\n\r\n update(object: T, options: { temporary?: boolean } = {}): boolean {\r\n if (!object.id || !this.map.has(object.id)) {\r\n return false;\r\n }\r\n this.map.set(object.id, object);\r\n\r\n if (this._objectsMap && this.isPersistable(object)) {\r\n const serialized = object.serialize();\r\n\r\n const origin = options.temporary ? 'temporary' : 'local';\r\n\r\n this._ydoc.transact(() => {\r\n this._objectsMap.set(object.id, serialized);\r\n }, origin);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n remove(predicate: (object: T) => boolean): void {\r\n for (const [id, object] of this.map) {\r\n if (predicate(object)) {\r\n this.map.delete(id);\r\n\r\n if (this._objectsMap && this.isPersistable(object)) {\r\n this._ydoc.transact(() => {\r\n this._objectsMap.delete(id);\r\n }, 'local');\r\n }\r\n }\r\n }\r\n }\r\n\r\n filter(predicate: (object: T) => boolean): T[] {\r\n const results: T[] = [];\r\n for (const object of this.map.values()) {\r\n if (predicate(object)) {\r\n results.push(object);\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n allObjects(): T[] {\r\n return Array.from(this.map.values());\r\n }\r\n\r\n private isPersistable(object: T): boolean {\r\n if (object instanceof KritzelSelectionBox) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n undo(): void {\r\n if (this._undoManager && this._undoManager.canUndo()) {\r\n this._undoManager.undo();\r\n this._core.engine.emitObjectsChange();\r\n }\r\n }\r\n\r\n redo(): void {\r\n if (this._undoManager && this._undoManager.canRedo()) {\r\n this._undoManager.redo();\r\n this._core.engine.emitObjectsChange();\r\n }\r\n }\r\n\r\n canUndo(): boolean {\r\n return this._undoManager ? this._undoManager.canUndo() : false;\r\n }\r\n\r\n canRedo(): boolean {\r\n return this._undoManager ? this._undoManager.canRedo() : false;\r\n }\r\n\r\n clearHistory(): void {\r\n if (this._undoManager) {\r\n this._undoManager.clear();\r\n this._temporaryItemsCount = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Consolidates all temporary items in the undo stack into a single undo item.\r\n * Call this when you want to merge multiple temporary changes (e.g., keystrokes) into one.\r\n */\r\n consolidateTemporaryItems(): void {\r\n if (!this._undoManager || this._temporaryItemsCount === 0) {\r\n return;\r\n }\r\n\r\n // Get current stack length\r\n const stackLength = this._undoManager.undoStack.length;\r\n \r\n if (stackLength === 0) {\r\n this._temporaryItemsCount = 0;\r\n return;\r\n }\r\n\r\n // Stop tracking temporarily\r\n this._undoManager.stopCapturing();\r\n \r\n // The temporary items should be at the end of the stack\r\n // We'll need to undo them all, then redo as a single transaction\r\n const itemsToConsolidate = Math.min(this._temporaryItemsCount, stackLength);\r\n \r\n if (itemsToConsolidate > 1) {\r\n // Store the current state before undoing\r\n const undoneItems: any[] = [];\r\n \r\n // Undo all temporary items\r\n for (let i = 0; i < itemsToConsolidate; i++) {\r\n if (this._undoManager.canUndo()) {\r\n undoneItems.push(this._undoManager.undoStack[this._undoManager.undoStack.length - 1]);\r\n this._undoManager.undo();\r\n }\r\n }\r\n \r\n // Now redo them all as a single 'local' transaction\r\n // This will consolidate them into one undo item\r\n this._ydoc.transact(() => {\r\n for (let i = itemsToConsolidate - 1; i >= 0; i--) {\r\n if (this._undoManager.canRedo()) {\r\n this._undoManager.redo();\r\n }\r\n }\r\n }, 'local');\r\n } else if (itemsToConsolidate === 1) {\r\n // If only one temporary item, just change its origin to 'local'\r\n // This is implicit - next transaction will be separate\r\n }\r\n \r\n this._temporaryItemsCount = 0;\r\n }\r\n\r\n /**\r\n * Removes all temporary items from the undo stack without consolidating them.\r\n * Use this to discard temporary changes completely.\r\n */\r\n clearTemporaryItems(): void {\r\n if (!this._undoManager || this._temporaryItemsCount === 0) {\r\n return;\r\n }\r\n\r\n const stackLength = this._undoManager.undoStack.length;\r\n const itemsToRemove = Math.min(this._temporaryItemsCount, stackLength);\r\n \r\n // Remove items from the end of the stack\r\n for (let i = 0; i < itemsToRemove; i++) {\r\n if (this._undoManager.undoStack.length > 0) {\r\n this._undoManager.undoStack.pop();\r\n }\r\n }\r\n \r\n this._temporaryItemsCount = 0;\r\n }\r\n\r\n destroy(): void {\r\n this._providers.forEach(p => p.destroy());\r\n this._providers = [];\r\n\r\n if (this._ydoc) {\r\n this._ydoc.destroy();\r\n }\r\n this.map.clear();\r\n }\r\n}\r\n"]}
|
|
@@ -30,7 +30,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
30
30
|
strokeWidth: this.size,
|
|
31
31
|
});
|
|
32
32
|
path.isCompleted = false;
|
|
33
|
-
this._core.store.state.
|
|
33
|
+
this._core.store.state.objects.insert(path);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
if (event.pointerType === 'touch') {
|
|
@@ -48,7 +48,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
48
48
|
strokeWidth: this.size,
|
|
49
49
|
});
|
|
50
50
|
path.isCompleted = false;
|
|
51
|
-
this._core.store.state.
|
|
51
|
+
this._core.store.state.objects.insert(path);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -73,7 +73,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
73
73
|
updatedPath.id = currentPath.id;
|
|
74
74
|
updatedPath.workspaceId = currentPath.workspaceId;
|
|
75
75
|
updatedPath.isCompleted = false;
|
|
76
|
-
this._core.store.state.
|
|
76
|
+
this._core.store.state.objects.update(updatedPath);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -95,7 +95,7 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
95
95
|
updatedPath.id = currentPath.id;
|
|
96
96
|
updatedPath.workspaceId = currentPath.workspaceId;
|
|
97
97
|
updatedPath.isCompleted = false;
|
|
98
|
-
this._core.store.state.
|
|
98
|
+
this._core.store.state.objects.update(updatedPath);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
}
|
|
@@ -111,7 +111,8 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
111
111
|
if (currentPath) {
|
|
112
112
|
currentPath.isCompleted = true;
|
|
113
113
|
currentPath.zIndex = this._core.store.currentZIndex;
|
|
114
|
-
this._core.store.state.
|
|
114
|
+
this._core.store.state.objects.update(currentPath);
|
|
115
|
+
this._core.engine.emitObjectsChange();
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
}
|
|
@@ -122,7 +123,8 @@ export class KritzelBrushTool extends KritzelBaseTool {
|
|
|
122
123
|
if (currentPath) {
|
|
123
124
|
currentPath.isCompleted = true;
|
|
124
125
|
currentPath.zIndex = this._core.store.currentZIndex;
|
|
125
|
-
this._core.store.state.
|
|
126
|
+
this._core.store.state.objects.update(currentPath);
|
|
127
|
+
this._core.engine.emitObjectsChange();
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brush-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/brush-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelPath } from '../objects/path.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelBrushTool extends KritzelBaseTool {\r\n type: 'pen' | 'highlighter' = 'pen';\r\n\r\n color: string = '#000000';\r\n\r\n size: number = 6;\r\n\r\n palettes: {\r\n [brushType: string]: string[];\r\n } = {\r\n pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#808000', '#800080'],\r\n highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],\r\n };\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n this._core.store.state.isDrawing = true;\r\n const x = event.clientX - this._core.store.offsetX;\r\n const y = event.clientY - this._core.store.offsetY;\r\n\r\n const path = KritzelPath.create(this._core, {\r\n points: [[x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n path.isCompleted = false;\r\n \r\n this._core.store.state.objectsMap.insert(path);\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n if (activePointers.length === 1) {\r\n const x = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const y = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n\r\n this._core.store.state.isDrawing = true;\r\n\r\n const path = KritzelPath.create(this._core, {\r\n points: [[x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n path.isCompleted = false;\r\n\r\n this._core.store.state.objectsMap.insert(path);\r\n }\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isDrawing) {\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n const x = event.clientX - this._core.store.offsetX;\r\n const y = event.clientY - this._core.store.offsetY;\r\n\r\n const updatedPath = KritzelPath.create(this._core, {\r\n points: [...currentPath.points, [x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n updatedPath.id = currentPath.id;\r\n updatedPath.workspaceId = currentPath.workspaceId;\r\n updatedPath.isCompleted = false;\r\n\r\n this._core.store.state.objectsMap.update(updatedPath);\r\n }\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n if (activePointers.length === 1) {\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n const x = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const y = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n\r\n const updatedPath = KritzelPath.create(this._core, {\r\n points: [...currentPath.points, [x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n updatedPath.id = currentPath.id;\r\n updatedPath.workspaceId = currentPath.workspaceId;\r\n updatedPath.isCompleted = false;\r\n\r\n this._core.store.state.objectsMap.update(updatedPath);\r\n }\r\n }\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isDrawing) {\r\n this._core.store.state.isDrawing = false;\r\n\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n currentPath.isCompleted = true;\r\n currentPath.zIndex = this._core.store.currentZIndex;\r\n this._core.store.state.objectsMap.update(currentPath);\r\n }\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isDrawing) {\r\n this._core.store.state.isDrawing = false;\r\n\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n currentPath.isCompleted = true;\r\n currentPath.zIndex = this._core.store.currentZIndex;\r\n this._core.store.state.objectsMap.update(currentPath);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"brush-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/brush-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelPath } from '../objects/path.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelBrushTool extends KritzelBaseTool {\r\n type: 'pen' | 'highlighter' = 'pen';\r\n\r\n color: string = '#000000';\r\n\r\n size: number = 6;\r\n\r\n palettes: {\r\n [brushType: string]: string[];\r\n } = {\r\n pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#808000', '#800080'],\r\n highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],\r\n };\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n this._core.store.state.isDrawing = true;\r\n const x = event.clientX - this._core.store.offsetX;\r\n const y = event.clientY - this._core.store.offsetY;\r\n\r\n const path = KritzelPath.create(this._core, {\r\n points: [[x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n path.isCompleted = false;\r\n \r\n this._core.store.state.objects.insert(path);\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n if (activePointers.length === 1) {\r\n const x = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const y = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n\r\n this._core.store.state.isDrawing = true;\r\n\r\n const path = KritzelPath.create(this._core, {\r\n points: [[x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n path.isCompleted = false;\r\n\r\n this._core.store.state.objects.insert(path);\r\n }\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isDrawing) {\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n const x = event.clientX - this._core.store.offsetX;\r\n const y = event.clientY - this._core.store.offsetY;\r\n\r\n const updatedPath = KritzelPath.create(this._core, {\r\n points: [...currentPath.points, [x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n updatedPath.id = currentPath.id;\r\n updatedPath.workspaceId = currentPath.workspaceId;\r\n updatedPath.isCompleted = false;\r\n\r\n this._core.store.state.objects.update(updatedPath);\r\n }\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n if (activePointers.length === 1) {\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n const x = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const y = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n\r\n const updatedPath = KritzelPath.create(this._core, {\r\n points: [...currentPath.points, [x, y]],\r\n translateX: -this._core.store.state.translateX,\r\n translateY: -this._core.store.state.translateY,\r\n scale: this._core.store.state.scale,\r\n fill: this.color,\r\n strokeWidth: this.size,\r\n });\r\n updatedPath.id = currentPath.id;\r\n updatedPath.workspaceId = currentPath.workspaceId;\r\n updatedPath.isCompleted = false;\r\n\r\n this._core.store.state.objects.update(updatedPath);\r\n }\r\n }\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isDrawing) {\r\n this._core.store.state.isDrawing = false;\r\n\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n currentPath.isCompleted = true;\r\n currentPath.zIndex = this._core.store.currentZIndex;\r\n this._core.store.state.objects.update(currentPath);\r\n this._core.engine.emitObjectsChange();\r\n }\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isDrawing) {\r\n this._core.store.state.isDrawing = false;\r\n\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n currentPath.isCompleted = true;\r\n currentPath.zIndex = this._core.store.currentZIndex;\r\n this._core.store.state.objects.update(currentPath);\r\n this._core.engine.emitObjectsChange();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -62,6 +62,7 @@ export class KritzelEraserTool extends KritzelBaseTool {
|
|
|
62
62
|
this._core.rerender();
|
|
63
63
|
}
|
|
64
64
|
this._core.store.state.isErasing = false;
|
|
65
|
+
this._core.engine.emitObjectsChange();
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
if (event.pointerType === 'touch') {
|
|
@@ -76,6 +77,7 @@ export class KritzelEraserTool extends KritzelBaseTool {
|
|
|
76
77
|
this._core.rerender();
|
|
77
78
|
}
|
|
78
79
|
this._core.store.state.isErasing = false;
|
|
80
|
+
this._core.engine.emitObjectsChange();
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eraser-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/eraser-tool.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,iBAAiB,GAAQ,IAAI,CAAC;IAE9B,YAAY,IAAiB;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,KAAmB;QACnC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACvC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBACpF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC1C,CAAC;YACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,KAAmB;QACnC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"eraser-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/eraser-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelEraserTool extends KritzelBaseTool {\r\n touchStartTimeout: any = null;\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n this._core.store.state.isErasing = true;\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n this.touchStartTimeout = setTimeout(() => {\r\n if (this._core.store.state.pointers.size === 1 && !this._core.store.state.isScaling) {\r\n this._core.store.state.isErasing = true;\r\n }\r\n }, 80);\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isErasing) {\r\n const selectedObjects = this._core.getObjectsFromPointerEvent(event, '.object');\r\n\r\n if (selectedObjects.length === 0) return;\r\n\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n\r\n selectedObjects.forEach(selectedObject => {\r\n selectedObject.markedForRemoval = selectedObject.hitTest(x, y);\r\n });\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.pointers.size === 1 && this._core.store.state.isErasing) {\r\n const shadowRoot = this._core.store.state.host?.shadowRoot;\r\n if (!shadowRoot) return;\r\n\r\n const selectedObjects = this._core.getObjectsFromPointerEvent(event, '.object');\r\n\r\n if (selectedObjects.length === 0) return;\r\n\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n\r\n selectedObjects.forEach(selectedObject => {\r\n selectedObject.markedForRemoval = selectedObject.hitTest(x, y);\r\n });\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isErasing) {\r\n const objectsToRemove = this._core.store.allObjects.filter(object => object.markedForRemoval);\r\n\r\n objectsToRemove.forEach(object => {\r\n object.markedForRemoval = false;\r\n this._core.removeObject(object);\r\n });\r\n\r\n if (objectsToRemove.length > 0) {\r\n this._core.rerender();\r\n }\r\n\r\n this._core.store.state.isErasing = false;\r\n\r\n this._core.engine.emitObjectsChange();\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n clearTimeout(this.touchStartTimeout);\r\n\r\n if (this._core.store.state.isErasing) {\r\n const objectsToRemove = this._core.store.allObjects.filter(object => object.markedForRemoval);\r\n \r\n objectsToRemove.forEach(object => {\r\n object.markedForRemoval = false;\r\n this._core.removeObject(object);\r\n });\r\n\r\n if (objectsToRemove.length > 0) {\r\n this._core.rerender();\r\n }\r\n\r\n this._core.store.state.isErasing = false;\r\n\r\n this._core.engine.emitObjectsChange();\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -74,6 +74,7 @@ export class KritzelImageTool extends KritzelBaseTool {
|
|
|
74
74
|
this._core.addObject(image);
|
|
75
75
|
this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
76
76
|
this._core.selectObjects([image]);
|
|
77
|
+
this._core.engine.emitObjectsChange();
|
|
77
78
|
}
|
|
78
79
|
handleCancel() {
|
|
79
80
|
this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/image-tool.class.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"image-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/image-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelImage } from '../objects/image.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport imageCompression from 'browser-image-compression';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelImageTool extends KritzelBaseTool {\r\n fileInput: HTMLInputElement | null = null;\r\n\r\n maxCompressionSize: number = 300;\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n this.setupFileInput();\r\n }\r\n\r\n override onActivate(): void {\r\n this.openFilePicker();\r\n }\r\n\r\n private openFilePicker(): void {\r\n if(this._core.store.isDisabled){\r\n return;\r\n }\r\n \r\n this.fileInput.click();\r\n }\r\n\r\n private setupFileInput(): void {\r\n this.fileInput = document.createElement('input');\r\n this.fileInput.type = 'file';\r\n this.fileInput.accept = 'image/*';\r\n this.fileInput.style.display = 'none';\r\n\r\n this.fileInput.addEventListener('change', this.handleFileSelect.bind(this));\r\n this.fileInput.addEventListener('cancel', this.handleCancel.bind(this));\r\n document.body.appendChild(this.fileInput);\r\n }\r\n\r\n private handleFileSelect(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files && input.files[0]) {\r\n const file = input.files[0];\r\n imageCompression(file, {\r\n maxWidthOrHeight: this.maxCompressionSize,\r\n })\r\n .then(compressedFile => {\r\n this.readFile(compressedFile);\r\n })\r\n .catch(error => {\r\n console.error('Error during image compression or processing:', error);\r\n this.handleCancel();\r\n });\r\n } else {\r\n console.info('File selection cancelled by user.');\r\n this.handleCancel();\r\n }\r\n\r\n if (input) {\r\n input.value = '';\r\n }\r\n }\r\n\r\n private readFile(file: File): void {\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n const img = new Image();\r\n img.src = e.target?.result as string;\r\n img.onload = () => this.createKritzelImage(img);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n\r\n private createKritzelImage(img: HTMLImageElement): KritzelImage {\r\n const image = KritzelImage.create(this._core);\r\n const { scaledWidth, scaledHeight } = image.calculateScaledDimensions(img);\r\n image.src = img.src;\r\n image.width = scaledWidth;\r\n image.height = scaledHeight;\r\n image.zIndex = this._core.store.currentZIndex;\r\n image.centerInViewport();\r\n this.addImageToStore(image);\r\n return image;\r\n }\r\n\r\n private addImageToStore(image: KritzelImage): void {\r\n this._core.addObject(image);\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this._core.selectObjects([image]);\r\n this._core.engine.emitObjectsChange();\r\n }\r\n\r\n private handleCancel(): void {\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n}\r\n"]}
|
|
@@ -59,7 +59,7 @@ export class KritzelTextTool extends KritzelBaseTool {
|
|
|
59
59
|
text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
60
60
|
text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
61
61
|
text.zIndex = this._core.store.currentZIndex;
|
|
62
|
-
this._core.store.state.
|
|
62
|
+
this._core.store.state.objects.insert(text);
|
|
63
63
|
this._core.rerender();
|
|
64
64
|
text.edit(event);
|
|
65
65
|
}
|
|
@@ -93,7 +93,7 @@ export class KritzelTextTool extends KritzelBaseTool {
|
|
|
93
93
|
text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
94
94
|
text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
95
95
|
text.zIndex = this._core.store.currentZIndex;
|
|
96
|
-
this._core.store.state.
|
|
96
|
+
this._core.store.state.objects.insert(text);
|
|
97
97
|
this._core.rerender();
|
|
98
98
|
text.edit(event);
|
|
99
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/text-tool.class.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"text-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/text-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelText } from '../objects/text.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelTextTool extends KritzelBaseTool {\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 16;\r\n fontColor: string = '#000000';\r\n\r\n palette: string[] = [\r\n '#000000',\r\n '#FFFFFF',\r\n '#FF0000',\r\n '#00FF00',\r\n '#0000FF',\r\n '#FFFF00',\r\n '#FF00FF',\r\n '#00FFFF',\r\n '#808080',\r\n '#C0C0C0',\r\n '#800000',\r\n '#008000',\r\n '#000080',\r\n '#808000',\r\n '#800080',\r\n ];\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n const activeText = this._core.store.activeText;\r\n\r\n if (activeText === null && object instanceof KritzelText) {\r\n object.edit(event);\r\n return;\r\n }\r\n\r\n if (activeText !== null && object instanceof KritzelText) {\r\n activeText.save();\r\n object.edit(event);\r\n return;\r\n }\r\n\r\n if (activeText !== null && object instanceof KritzelText === false) {\r\n this._core.resetActiveText();\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.isLeftClick(event) === false) {\r\n return;\r\n }\r\n\r\n const clientX = event.clientX - this._core.store.offsetX;\r\n const clientY = event.clientY - this._core.store.offsetY;\r\n const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n text.zIndex = this._core.store.currentZIndex;\r\n\r\n this._core.store.state.objects.insert(text);\r\n\r\n this._core.rerender();\r\n\r\n text.edit(event);\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n const activeText = this._core.store.activeText;\r\n\r\n if (activeText === null && object instanceof KritzelText) {\r\n object.edit(event);\r\n return;\r\n }\r\n\r\n if (activeText !== null && object instanceof KritzelText) {\r\n activeText.save();\r\n object.edit(event);\r\n return;\r\n }\r\n\r\n if (activeText !== null && object instanceof KritzelText === false) {\r\n this._core.resetActiveText();\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (activePointers.length > 1) {\r\n return;\r\n }\r\n\r\n const clientX = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const clientY = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n text.zIndex = this._core.store.currentZIndex;\r\n\r\n this._core.store.state.objects.insert(text);\r\n\r\n this._core.rerender();\r\n\r\n text.edit(event);\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n this._core.store.activeText?.edit(event);\r\n }\r\n}\r\n"]}
|