kritzel-react 0.1.30 → 0.1.32
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/kritzel-react/lib/components/stencil-generated/components.js +122 -0
- package/dist/kritzel-react/lib/index.js +2 -0
- package/dist/kritzel-stencil/src/classes/core/core.class.js +797 -0
- package/dist/kritzel-stencil/src/classes/core/reviver.class.js +97 -0
- package/dist/kritzel-stencil/src/classes/core/store.class.js +153 -0
- package/dist/kritzel-stencil/src/classes/core/viewport.class.js +311 -0
- package/dist/kritzel-stencil/src/classes/core/workspace.class.js +34 -0
- package/dist/kritzel-stencil/src/classes/handlers/base.handler.js +6 -0
- package/dist/kritzel-stencil/src/classes/handlers/context-menu.handler.js +63 -0
- package/dist/kritzel-stencil/src/classes/handlers/hover.handler.js +18 -0
- package/dist/kritzel-stencil/src/classes/handlers/key.handler.js +76 -0
- package/dist/kritzel-stencil/src/classes/handlers/line-handle.handler.js +382 -0
- package/dist/kritzel-stencil/src/classes/handlers/move.handler.js +213 -0
- package/dist/kritzel-stencil/src/classes/handlers/resize.handler.js +205 -0
- package/dist/kritzel-stencil/src/classes/handlers/rotation.handler.js +117 -0
- package/dist/kritzel-stencil/src/classes/handlers/selection.handler.js +313 -0
- package/dist/kritzel-stencil/src/classes/managers/anchor.manager.js +1056 -0
- package/dist/kritzel-stencil/src/classes/managers/cursor.manager.js +117 -0
- package/dist/kritzel-stencil/src/classes/managers/theme.manager.js +103 -0
- package/dist/kritzel-stencil/src/classes/objects/base-object.class.js +249 -0
- package/dist/kritzel-stencil/src/classes/objects/custom-element.class.js +60 -0
- package/dist/kritzel-stencil/src/classes/objects/group.class.js +407 -0
- package/dist/kritzel-stencil/src/classes/objects/image.class.js +55 -0
- package/dist/kritzel-stencil/src/classes/objects/line.class.js +608 -0
- package/dist/kritzel-stencil/src/classes/objects/path.class.js +401 -0
- package/dist/kritzel-stencil/src/classes/objects/selection-box.class.js +21 -0
- package/dist/kritzel-stencil/src/classes/objects/selection-group.class.js +409 -0
- package/dist/kritzel-stencil/src/classes/objects/shape.class.js +412 -0
- package/dist/kritzel-stencil/src/classes/objects/text.class.js +292 -0
- package/dist/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.js +101 -0
- package/dist/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.js +241 -0
- package/dist/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.js +43 -0
- package/dist/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.js +98 -0
- package/dist/kritzel-stencil/src/classes/registries/icon-registry.class.js +66 -0
- package/dist/kritzel-stencil/src/classes/registries/tool.registry.js +21 -0
- package/dist/kritzel-stencil/src/classes/structures/app-state-map.structure.js +212 -0
- package/dist/kritzel-stencil/src/classes/structures/object-map.structure.js +414 -0
- package/dist/kritzel-stencil/src/classes/structures/quadtree.structure.js +151 -0
- package/dist/kritzel-stencil/src/classes/tools/base-tool.class.js +36 -0
- package/dist/kritzel-stencil/src/classes/tools/brush-tool.class.js +161 -0
- package/dist/kritzel-stencil/src/classes/tools/eraser-tool.class.js +85 -0
- package/dist/kritzel-stencil/src/classes/tools/image-tool.class.js +83 -0
- package/dist/kritzel-stencil/src/classes/tools/line-tool.class.js +187 -0
- package/dist/kritzel-stencil/src/classes/tools/selection-tool.class.js +429 -0
- package/dist/kritzel-stencil/src/classes/tools/shape-tool.class.js +196 -0
- package/dist/kritzel-stencil/src/classes/tools/text-tool.class.js +100 -0
- package/dist/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.js +1343 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.js +46 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.js +312 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.js +60 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.js +105 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +53 -0
- package/dist/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.js +137 -0
- package/dist/kritzel-stencil/src/configs/default-brush-tool.config.js +9 -0
- package/dist/kritzel-stencil/src/configs/default-engine-config.js +63 -0
- package/dist/kritzel-stencil/src/configs/default-line-tool.config.js +9 -0
- package/dist/kritzel-stencil/src/configs/default-sync.config.js +9 -0
- package/dist/kritzel-stencil/src/configs/default-text-tool.config.js +7 -0
- package/dist/kritzel-stencil/src/constants/color-palette.constants.js +37 -0
- package/dist/kritzel-stencil/src/constants/engine.constants.js +2 -0
- package/dist/kritzel-stencil/src/enums/event-button.enum.js +6 -0
- package/dist/kritzel-stencil/src/enums/handle-type.enum.js +7 -0
- package/dist/kritzel-stencil/src/enums/shape-type.enum.js +6 -0
- package/dist/kritzel-stencil/src/helpers/class.helper.js +5 -0
- package/dist/kritzel-stencil/src/helpers/color.helper.js +106 -0
- package/dist/kritzel-stencil/src/helpers/cursor.helper.js +57 -0
- package/dist/kritzel-stencil/src/helpers/devices.helper.js +28 -0
- package/dist/kritzel-stencil/src/helpers/event.helper.js +58 -0
- package/dist/kritzel-stencil/src/helpers/geometry.helper.js +149 -0
- package/dist/kritzel-stencil/src/helpers/keyboard.helper.js +51 -0
- package/dist/kritzel-stencil/src/helpers/math.helper.js +5 -0
- package/dist/kritzel-stencil/src/helpers/object.helper.js +11 -0
- package/dist/kritzel-stencil/src/helpers/theme.helper.js +69 -0
- package/dist/kritzel-stencil/src/index.js +41 -0
- package/dist/kritzel-stencil/src/interfaces/anchor.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/arrow-head.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/bounding-box.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/clonable.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/context-menu-item.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/debug-info.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/dialog.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/displayable-shortcut.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/engine-state.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/line-options.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/master-detail.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/menu-item.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/object.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/path-options.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/point.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/polygon.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/serializable.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/settings.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/shortcut.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/sync-config.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/sync-provider.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/theme.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/tool-config.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/tool.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/toolbar-control.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/undo-state.interface.js +1 -0
- package/dist/kritzel-stencil/src/themes/dark-theme.js +198 -0
- package/dist/kritzel-stencil/src/themes/light-theme.js +199 -0
- package/dist/kritzel-stencil/src/types/shortcut.type.js +1 -0
- package/dist/kritzel-stencil/src/types/state.types.js +1 -0
- package/dist/types/kritzel-react/lib/components/stencil-generated/components.d.ts +74 -0
- package/dist/types/kritzel-react/lib/index.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/classes/core/core.class.d.ts +101 -0
- package/dist/types/kritzel-stencil/src/classes/core/reviver.class.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/classes/core/store.class.d.ts +53 -0
- package/dist/types/kritzel-stencil/src/classes/core/viewport.class.d.ts +48 -0
- package/dist/types/kritzel-stencil/src/classes/core/workspace.class.d.ts +24 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/base.handler.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/context-menu.handler.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/hover.handler.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/key.handler.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/line-handle.handler.d.ts +34 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/move.handler.d.ts +29 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/resize.handler.d.ts +24 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/rotation.handler.d.ts +12 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/selection.handler.d.ts +27 -0
- package/dist/types/kritzel-stencil/src/classes/managers/anchor.manager.d.ts +180 -0
- package/dist/types/kritzel-stencil/src/classes/managers/cursor.manager.d.ts +43 -0
- package/dist/types/kritzel-stencil/src/classes/managers/theme.manager.d.ts +56 -0
- package/dist/types/kritzel-stencil/src/classes/objects/base-object.class.d.ts +76 -0
- package/dist/types/kritzel-stencil/src/classes/objects/custom-element.class.d.ts +26 -0
- package/dist/types/kritzel-stencil/src/classes/objects/group.class.d.ts +97 -0
- package/dist/types/kritzel-stencil/src/classes/objects/image.class.d.ts +17 -0
- package/dist/types/kritzel-stencil/src/classes/objects/line.class.d.ts +101 -0
- package/dist/types/kritzel-stencil/src/classes/objects/path.class.d.ts +62 -0
- package/dist/types/kritzel-stencil/src/classes/objects/selection-box.class.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/classes/objects/selection-group.class.d.ts +67 -0
- package/dist/types/kritzel-stencil/src/classes/objects/shape.class.d.ts +124 -0
- package/dist/types/kritzel-stencil/src/classes/objects/text.class.d.ts +56 -0
- package/dist/types/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.d.ts +18 -0
- package/dist/types/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.d.ts +120 -0
- package/dist/types/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.d.ts +22 -0
- package/dist/types/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.d.ts +52 -0
- package/dist/types/kritzel-stencil/src/classes/registries/icon-registry.class.d.ts +9 -0
- package/dist/types/kritzel-stencil/src/classes/registries/tool.registry.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/classes/structures/app-state-map.structure.d.ts +31 -0
- package/dist/types/kritzel-stencil/src/classes/structures/object-map.structure.d.ts +63 -0
- package/dist/types/kritzel-stencil/src/classes/structures/quadtree.structure.d.ts +36 -0
- package/dist/types/kritzel-stencil/src/classes/tools/base-tool.class.d.ts +20 -0
- package/dist/types/kritzel-stencil/src/classes/tools/brush-tool.class.d.ts +14 -0
- package/dist/types/kritzel-stencil/src/classes/tools/eraser-tool.class.d.ts +9 -0
- package/dist/types/kritzel-stencil/src/classes/tools/image-tool.class.d.ts +15 -0
- package/dist/types/kritzel-stencil/src/classes/tools/line-tool.class.d.ts +19 -0
- package/dist/types/kritzel-stencil/src/classes/tools/selection-tool.class.d.ts +54 -0
- package/dist/types/kritzel-stencil/src/classes/tools/shape-tool.class.d.ts +39 -0
- package/dist/types/kritzel-stencil/src/classes/tools/text-tool.class.d.ts +13 -0
- package/dist/types/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.d.ts +111 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +46 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.d.ts +13 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.d.ts +21 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts +10 -0
- package/dist/types/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +21 -0
- package/dist/types/kritzel-stencil/src/configs/default-brush-tool.config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/configs/default-engine-config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/configs/default-line-tool.config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/configs/default-sync.config.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/configs/default-text-tool.config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/constants/color-palette.constants.d.ts +29 -0
- package/dist/types/kritzel-stencil/src/constants/engine.constants.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/enums/event-button.enum.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/enums/handle-type.enum.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/enums/shape-type.enum.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/helpers/class.helper.d.ts +3 -0
- package/dist/types/kritzel-stencil/src/helpers/color.helper.d.ts +33 -0
- package/dist/types/kritzel-stencil/src/helpers/cursor.helper.d.ts +22 -0
- package/dist/types/kritzel-stencil/src/helpers/devices.helper.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/helpers/event.helper.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/helpers/geometry.helper.d.ts +38 -0
- package/dist/types/kritzel-stencil/src/helpers/keyboard.helper.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/helpers/math.helper.d.ts +3 -0
- package/dist/types/kritzel-stencil/src/helpers/object.helper.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/helpers/theme.helper.d.ts +41 -0
- package/dist/types/kritzel-stencil/src/index.d.ts +42 -0
- package/dist/types/kritzel-stencil/src/interfaces/anchor.interface.d.ts +137 -0
- package/dist/types/kritzel-stencil/src/interfaces/arrow-head.interface.d.ts +27 -0
- package/dist/types/kritzel-stencil/src/interfaces/bounding-box.interface.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/interfaces/clonable.interface.d.ts +3 -0
- package/dist/types/kritzel-stencil/src/interfaces/context-menu-item.interface.d.ts +17 -0
- package/dist/types/kritzel-stencil/src/interfaces/debug-info.interface.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/interfaces/dialog.interface.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/interfaces/displayable-shortcut.interface.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/interfaces/engine-state.interface.d.ts +73 -0
- package/dist/types/kritzel-stencil/src/interfaces/line-options.interface.d.ts +23 -0
- package/dist/types/kritzel-stencil/src/interfaces/master-detail.interface.d.ts +14 -0
- package/dist/types/kritzel-stencil/src/interfaces/menu-item.interface.d.ts +24 -0
- package/dist/types/kritzel-stencil/src/interfaces/object.interface.d.ts +53 -0
- package/dist/types/kritzel-stencil/src/interfaces/path-options.interface.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/interfaces/point.interface.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/interfaces/polygon.interface.d.ts +7 -0
- package/dist/types/kritzel-stencil/src/interfaces/serializable.interface.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/interfaces/settings.interface.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/interfaces/shortcut.interface.d.ts +10 -0
- package/dist/types/kritzel-stencil/src/interfaces/sync-config.interface.d.ts +22 -0
- package/dist/types/kritzel-stencil/src/interfaces/sync-provider.interface.d.ts +29 -0
- package/dist/types/kritzel-stencil/src/interfaces/theme.interface.d.ts +330 -0
- package/dist/types/kritzel-stencil/src/interfaces/tool-config.interface.d.ts +26 -0
- package/dist/types/kritzel-stencil/src/interfaces/tool.interface.d.ts +7 -0
- package/dist/types/kritzel-stencil/src/interfaces/toolbar-control.interface.d.ts +58 -0
- package/dist/types/kritzel-stencil/src/interfaces/undo-state.interface.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/themes/dark-theme.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/themes/light-theme.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/types/shortcut.type.d.ts +1 -0
- package/dist/types/kritzel-stencil/src/types/state.types.d.ts +3 -0
- package/package.json +2 -2
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { KritzelTool } from '../../components';
|
|
2
|
+
import { KritzelSerializable } from '../../interfaces/serializable.interface';
|
|
3
|
+
import { KritzelCore } from '../core/core.class';
|
|
4
|
+
export declare class KritzelBaseTool implements KritzelTool, KritzelSerializable {
|
|
5
|
+
__class__: string;
|
|
6
|
+
name: string;
|
|
7
|
+
protected readonly _core: KritzelCore;
|
|
8
|
+
constructor(core: KritzelCore);
|
|
9
|
+
onActivate(): void;
|
|
10
|
+
onDeactivate(): void;
|
|
11
|
+
handlePointerDown(_event: PointerEvent): void;
|
|
12
|
+
handlePointerMove(_event: PointerEvent): void;
|
|
13
|
+
handlePointerUp(_event: PointerEvent): void;
|
|
14
|
+
handleWheel(_event: WheelEvent): void;
|
|
15
|
+
serialize(): {
|
|
16
|
+
__class__: string;
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
deserialize(object: any): KritzelSerializable;
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
2
|
+
import { KritzelCore } from '../core/core.class';
|
|
3
|
+
import { ThemeAwareColor } from '../../constants/color-palette.constants';
|
|
4
|
+
export declare class KritzelBrushTool extends KritzelBaseTool {
|
|
5
|
+
color: ThemeAwareColor;
|
|
6
|
+
size: number;
|
|
7
|
+
opacity: number;
|
|
8
|
+
palette: ThemeAwareColor[];
|
|
9
|
+
private _currentPathId;
|
|
10
|
+
constructor(core: KritzelCore);
|
|
11
|
+
handlePointerDown(event: PointerEvent): void;
|
|
12
|
+
handlePointerMove(event: PointerEvent): void;
|
|
13
|
+
handlePointerUp(event: PointerEvent): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
2
|
+
import { KritzelCore } from '../core/core.class';
|
|
3
|
+
export declare class KritzelEraserTool extends KritzelBaseTool {
|
|
4
|
+
touchStartTimeout: any;
|
|
5
|
+
constructor(core: KritzelCore);
|
|
6
|
+
handlePointerDown(event: PointerEvent): void;
|
|
7
|
+
handlePointerMove(event: PointerEvent): void;
|
|
8
|
+
handlePointerUp(event: PointerEvent): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
2
|
+
import { KritzelCore } from '../core/core.class';
|
|
3
|
+
export declare class KritzelImageTool extends KritzelBaseTool {
|
|
4
|
+
fileInput: HTMLInputElement | null;
|
|
5
|
+
maxCompressionSize: number;
|
|
6
|
+
constructor(core: KritzelCore);
|
|
7
|
+
onActivate(): void;
|
|
8
|
+
private openFilePicker;
|
|
9
|
+
private setupFileInput;
|
|
10
|
+
private handleFileSelect;
|
|
11
|
+
private readFile;
|
|
12
|
+
private createKritzelImage;
|
|
13
|
+
private addImageToStore;
|
|
14
|
+
private handleCancel;
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
2
|
+
import { KritzelCore } from '../core/core.class';
|
|
3
|
+
import { LineArrowConfig } from '../../interfaces/arrow-head.interface';
|
|
4
|
+
import { ThemeAwareColor } from '../../constants/color-palette.constants';
|
|
5
|
+
export declare class KritzelLineTool extends KritzelBaseTool {
|
|
6
|
+
color: ThemeAwareColor;
|
|
7
|
+
size: number;
|
|
8
|
+
opacity: number;
|
|
9
|
+
palette: ThemeAwareColor[];
|
|
10
|
+
/** Arrow head configuration for lines created with this tool */
|
|
11
|
+
arrows?: LineArrowConfig;
|
|
12
|
+
private _startX;
|
|
13
|
+
private _startY;
|
|
14
|
+
constructor(core: KritzelCore);
|
|
15
|
+
handlePointerDown(event: PointerEvent): void;
|
|
16
|
+
handlePointerMove(event: PointerEvent): void;
|
|
17
|
+
handlePointerUp(event: PointerEvent): void;
|
|
18
|
+
private selectLineAndSwitchTool;
|
|
19
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { KritzelMoveHandler } from '../handlers/move.handler';
|
|
2
|
+
import { KritzelResizeHandler } from '../handlers/resize.handler';
|
|
3
|
+
import { KritzelRotationHandler } from '../handlers/rotation.handler';
|
|
4
|
+
import { KritzelSelectionHandler } from '../handlers/selection.handler';
|
|
5
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
6
|
+
import { KritzelHoverHandler } from '../handlers/hover.handler';
|
|
7
|
+
import { KritzelCore } from '../core/core.class';
|
|
8
|
+
import { KritzelLineHandleHandler } from '../handlers/line-handle.handler';
|
|
9
|
+
import { ToolConfigDefinition } from '../../interfaces/tool-config.interface';
|
|
10
|
+
import { ThemeAwareColor } from '../../constants/color-palette.constants';
|
|
11
|
+
import { LineArrowConfig } from '../../interfaces/arrow-head.interface';
|
|
12
|
+
export declare class KritzelSelectionTool extends KritzelBaseTool {
|
|
13
|
+
selectionHandler: KritzelSelectionHandler;
|
|
14
|
+
moveHandler: KritzelMoveHandler;
|
|
15
|
+
hoverHandler: KritzelHoverHandler;
|
|
16
|
+
resizeHandler: KritzelResizeHandler;
|
|
17
|
+
rotationHandler: KritzelRotationHandler;
|
|
18
|
+
lineHandleHandler: KritzelLineHandleHandler;
|
|
19
|
+
palette: ThemeAwareColor[];
|
|
20
|
+
/** Returns true if there are objects in the selection group */
|
|
21
|
+
hasSelection(): boolean;
|
|
22
|
+
/** Returns the selected objects or empty array */
|
|
23
|
+
getSelectedObjects(): any[];
|
|
24
|
+
private flattenObjects;
|
|
25
|
+
get color(): ThemeAwareColor;
|
|
26
|
+
set color(value: ThemeAwareColor);
|
|
27
|
+
get opacity(): number;
|
|
28
|
+
set opacity(value: number);
|
|
29
|
+
get size(): number;
|
|
30
|
+
set size(value: number);
|
|
31
|
+
get fillColor(): ThemeAwareColor;
|
|
32
|
+
set fillColor(value: ThemeAwareColor);
|
|
33
|
+
get fontFamily(): string;
|
|
34
|
+
set fontFamily(value: string);
|
|
35
|
+
get arrows(): LineArrowConfig;
|
|
36
|
+
set arrows(value: LineArrowConfig);
|
|
37
|
+
/** Returns the tool config for selected objects, or null if no selection */
|
|
38
|
+
getToolConfig(): ToolConfigDefinition | null;
|
|
39
|
+
/**
|
|
40
|
+
* Refreshes the selection group's dimensions after object properties that affect size have changed.
|
|
41
|
+
* Uses requestAnimationFrame to ensure the DOM has been updated before measuring.
|
|
42
|
+
*/
|
|
43
|
+
private refreshSelectionGroupDimensions;
|
|
44
|
+
constructor(core: KritzelCore);
|
|
45
|
+
handlePointerDown(event: PointerEvent): void;
|
|
46
|
+
handlePointerMove(event: PointerEvent): void;
|
|
47
|
+
handlePointerUp(event: PointerEvent): void;
|
|
48
|
+
private getSelectedObject;
|
|
49
|
+
private getHandleType;
|
|
50
|
+
private isHandleSelected;
|
|
51
|
+
private isRotationHandleSelected;
|
|
52
|
+
private isLineHandleSelected;
|
|
53
|
+
private getLineHandleType;
|
|
54
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
2
|
+
import { KritzelCore } from '../core/core.class';
|
|
3
|
+
import { ShapeType } from '../../enums/shape-type.enum';
|
|
4
|
+
import { ThemeAwareColor } from '../../constants/color-palette.constants';
|
|
5
|
+
export declare class KritzelShapeTool extends KritzelBaseTool {
|
|
6
|
+
shapeType: ShapeType;
|
|
7
|
+
fillColor: ThemeAwareColor;
|
|
8
|
+
strokeColor: ThemeAwareColor;
|
|
9
|
+
strokeWidth: number;
|
|
10
|
+
opacity: number;
|
|
11
|
+
fontFamily: string;
|
|
12
|
+
fontSize: number;
|
|
13
|
+
fontColor: ThemeAwareColor;
|
|
14
|
+
palette: ThemeAwareColor[];
|
|
15
|
+
private startX;
|
|
16
|
+
private startY;
|
|
17
|
+
private isDrawing;
|
|
18
|
+
private currentShape;
|
|
19
|
+
constructor(core: KritzelCore);
|
|
20
|
+
handlePointerDown(event: PointerEvent): void;
|
|
21
|
+
handlePointerMove(event: PointerEvent): void;
|
|
22
|
+
handlePointerUp(event: PointerEvent): void;
|
|
23
|
+
/**
|
|
24
|
+
* Start drawing a shape. Following the same pattern as LineTool/BrushTool:
|
|
25
|
+
* - Store screen coordinates for startX, startY
|
|
26
|
+
* - Set translateX/Y to -viewportTranslateX/Y (viewport offset)
|
|
27
|
+
* - Set x, y to the actual screen position
|
|
28
|
+
* - Let updateDimensions() convert to world coordinates
|
|
29
|
+
*/
|
|
30
|
+
private startDrawing;
|
|
31
|
+
/**
|
|
32
|
+
* Update shape size during drawing. Following the same pattern as LineTool:
|
|
33
|
+
* - Use screen coordinates directly
|
|
34
|
+
* - The shape's x, y, width, height are all in screen space
|
|
35
|
+
* - updateDimensions() handles conversion to world coordinates
|
|
36
|
+
*/
|
|
37
|
+
private updateShapeSize;
|
|
38
|
+
private finishDrawing;
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { KritzelBaseTool } from './base-tool.class';
|
|
2
|
+
import { KritzelCore } from '../core/core.class';
|
|
3
|
+
import { ThemeAwareColor } from '../../constants/color-palette.constants';
|
|
4
|
+
export declare class KritzelTextTool extends KritzelBaseTool {
|
|
5
|
+
fontFamily: string;
|
|
6
|
+
fontSize: number;
|
|
7
|
+
fontColor: ThemeAwareColor;
|
|
8
|
+
opacity: number;
|
|
9
|
+
palette: ThemeAwareColor[];
|
|
10
|
+
constructor(core: KritzelCore);
|
|
11
|
+
handlePointerDown(event: PointerEvent): void;
|
|
12
|
+
handlePointerUp(event: PointerEvent): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
import { KritzelTool } from '../../../interfaces/tool.interface';
|
|
3
|
+
import { KritzelViewport } from '../../../classes/core/viewport.class';
|
|
4
|
+
import { KritzelKeyHandler } from '../../../classes/handlers/key.handler';
|
|
5
|
+
import { KritzelBaseTool } from '../../../classes/tools/base-tool.class';
|
|
6
|
+
import { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';
|
|
7
|
+
import { KritzelBrushToolConfig, KritzelLineToolConfig, KritzelShapeToolConfig, KritzelTextToolConfig } from '../../../interfaces/toolbar-control.interface';
|
|
8
|
+
import { KritzelContextMenuHandler } from '../../../classes/handlers/context-menu.handler';
|
|
9
|
+
import { KritzelBaseObject } from '../../../classes/objects/base-object.class';
|
|
10
|
+
import { KritzelWorkspace } from '../../../classes/core/workspace.class';
|
|
11
|
+
import { KritzelEngineState } from '../../../interfaces/engine-state.interface';
|
|
12
|
+
import { KritzelCore } from '../../../classes/core/core.class';
|
|
13
|
+
import { KritzelSyncConfig } from '../../../interfaces/sync-config.interface';
|
|
14
|
+
import { KritzelUndoState } from '../../../interfaces/undo-state.interface';
|
|
15
|
+
import { ThemeName } from '../../../interfaces/theme.interface';
|
|
16
|
+
import { KritzelShortcut } from '../../../interfaces/shortcut.interface';
|
|
17
|
+
export declare class KritzelEngine {
|
|
18
|
+
host: HTMLElement;
|
|
19
|
+
workspace?: KritzelWorkspace;
|
|
20
|
+
syncConfig?: KritzelSyncConfig;
|
|
21
|
+
onWorkspaceChange(newWorkspace: KritzelWorkspace | null): void;
|
|
22
|
+
activeTool: KritzelTool;
|
|
23
|
+
globalContextMenuItems: ContextMenuItem[];
|
|
24
|
+
objectContextMenuItems: ContextMenuItem[];
|
|
25
|
+
scaleMax: number;
|
|
26
|
+
validateScaleMax(newValue: number): void;
|
|
27
|
+
scaleMin: number;
|
|
28
|
+
validateScaleMin(newValue: number): void;
|
|
29
|
+
cursorTarget?: HTMLElement;
|
|
30
|
+
onCursorTargetChange(newValue: HTMLElement | undefined): void;
|
|
31
|
+
/** When true, objects are drawn at a fixed visual size regardless of zoom level */
|
|
32
|
+
lockDrawingScale: boolean;
|
|
33
|
+
onLockDrawingScaleChange(newValue: boolean): void;
|
|
34
|
+
/** The current theme to apply to the editor */
|
|
35
|
+
theme: ThemeName;
|
|
36
|
+
onThemeChange(newValue: ThemeName): void;
|
|
37
|
+
isEngineReady: EventEmitter<KritzelEngineState>;
|
|
38
|
+
activeToolChange: EventEmitter<KritzelBaseTool>;
|
|
39
|
+
objectsSelectionChange: EventEmitter<void>;
|
|
40
|
+
workspacesChange: EventEmitter<KritzelWorkspace[]>;
|
|
41
|
+
longpress: EventEmitter<PointerEvent>;
|
|
42
|
+
objectsChange: EventEmitter<KritzelBaseObject[]>;
|
|
43
|
+
undoStateChange: EventEmitter<KritzelUndoState>;
|
|
44
|
+
objectsInViewportChange: EventEmitter<KritzelBaseObject<Element>[]>;
|
|
45
|
+
forceUpdate: number;
|
|
46
|
+
triggerSelectionChange(): Promise<void>;
|
|
47
|
+
handleWheel(ev: any): void;
|
|
48
|
+
handlePointerDown(ev: PointerEvent): void;
|
|
49
|
+
private throttledPointerMoveMulti;
|
|
50
|
+
handlePointerMove(ev: PointerEvent): void;
|
|
51
|
+
handlePointerUp(ev: PointerEvent): void;
|
|
52
|
+
handlePointerCancel(ev: PointerEvent): void;
|
|
53
|
+
handleLongPress(ev: CustomEvent<PointerEvent>): void;
|
|
54
|
+
handleContextMenu(ev: PointerEvent): void;
|
|
55
|
+
handleResize(): void;
|
|
56
|
+
handleKeyDown(ev: any): void;
|
|
57
|
+
handleKeyUp(ev: any): void;
|
|
58
|
+
preventDoubleTapZoomOnTouchDevices(ev: MouseEvent): void;
|
|
59
|
+
registerTool(toolName: string, toolClass: any, toolConfig?: KritzelTextToolConfig | KritzelBrushToolConfig | KritzelLineToolConfig | KritzelShapeToolConfig): Promise<KritzelBaseTool>;
|
|
60
|
+
changeActiveTool(tool: KritzelBaseTool): Promise<void>;
|
|
61
|
+
disable(): Promise<void>;
|
|
62
|
+
enable(): Promise<void>;
|
|
63
|
+
delete(): Promise<void>;
|
|
64
|
+
copy(): Promise<void>;
|
|
65
|
+
paste(x: number, y: number): Promise<void>;
|
|
66
|
+
bringForward(object?: KritzelBaseObject<any>): Promise<void>;
|
|
67
|
+
sendBackward(object?: KritzelBaseObject<any>): Promise<void>;
|
|
68
|
+
bringToFront(object?: KritzelBaseObject<any>): Promise<void>;
|
|
69
|
+
sendToBack(object?: KritzelBaseObject<any>): Promise<void>;
|
|
70
|
+
group(): Promise<void>;
|
|
71
|
+
ungroup(): Promise<void>;
|
|
72
|
+
undo(): Promise<void>;
|
|
73
|
+
redo(): Promise<void>;
|
|
74
|
+
hideContextMenu(): Promise<void>;
|
|
75
|
+
getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null>;
|
|
76
|
+
addObject<T extends KritzelBaseObject>(object: T): Promise<T | null>;
|
|
77
|
+
updateObject<T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>): Promise<T | null>;
|
|
78
|
+
removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null>;
|
|
79
|
+
getSelectedObjects(): Promise<KritzelBaseObject<any>[]>;
|
|
80
|
+
getDisplayableShortcuts(): Promise<Omit<KritzelShortcut, 'action' | 'condition'>[]>;
|
|
81
|
+
selectObjects(objects: KritzelBaseObject[]): Promise<void>;
|
|
82
|
+
selectAllObjectsInViewport(): Promise<void>;
|
|
83
|
+
clearSelection(): Promise<void>;
|
|
84
|
+
centerObjectInViewport(object: KritzelBaseObject): Promise<KritzelBaseObject<HTMLElement | SVGElement>>;
|
|
85
|
+
backToContent(): Promise<boolean>;
|
|
86
|
+
getCopiedObjects(): Promise<KritzelBaseObject[]>;
|
|
87
|
+
getScreenshot(format?: 'png' | 'svg'): Promise<string>;
|
|
88
|
+
exportViewportAsPng(): Promise<void>;
|
|
89
|
+
exportViewportAsSvg(): Promise<void>;
|
|
90
|
+
createWorkspace(workspace: KritzelWorkspace): Promise<KritzelWorkspace | null>;
|
|
91
|
+
updateWorkspace(workspace: KritzelWorkspace): Promise<void>;
|
|
92
|
+
deleteWorkspace(workspace: KritzelWorkspace): Promise<void>;
|
|
93
|
+
getWorkspaces(): Promise<KritzelWorkspace[]>;
|
|
94
|
+
getActiveWorkspace(): Promise<KritzelWorkspace>;
|
|
95
|
+
core: KritzelCore;
|
|
96
|
+
viewport: KritzelViewport;
|
|
97
|
+
contextMenuHandler: KritzelContextMenuHandler;
|
|
98
|
+
keyHandler: KritzelKeyHandler;
|
|
99
|
+
contextMenuElement: HTMLKritzelContextMenuElement | null;
|
|
100
|
+
private _lastHadSelectionGroup;
|
|
101
|
+
get isSelecting(): boolean;
|
|
102
|
+
get isSelectionActive(): boolean;
|
|
103
|
+
constructor();
|
|
104
|
+
disconnectedCallback(): void;
|
|
105
|
+
componentWillLoad(): void;
|
|
106
|
+
componentDidLoad(): Promise<void>;
|
|
107
|
+
emitObjectsChange(): void;
|
|
108
|
+
private _registerStateChangeListeners;
|
|
109
|
+
private _handleActiveToolChange;
|
|
110
|
+
render(): import("react").JSX.Element;
|
|
111
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
import { DropdownOption } from '../kritzel-dropdown/kritzel-dropdown';
|
|
3
|
+
export interface BrushStyleOption extends DropdownOption {
|
|
4
|
+
}
|
|
5
|
+
export declare class KritzelBrushStyle {
|
|
6
|
+
type: 'pen' | 'highlighter';
|
|
7
|
+
brushOptions: BrushStyleOption[];
|
|
8
|
+
typeChange: EventEmitter<'pen' | 'highlighter'>;
|
|
9
|
+
handleDropdownValueChange(event: CustomEvent<string>): void;
|
|
10
|
+
render(): import("react").JSX.Element;
|
|
11
|
+
}
|
package/dist/types/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
export interface DropdownOption {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
style?: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export declare class KritzelDropdown {
|
|
8
|
+
el: HTMLElement;
|
|
9
|
+
options: DropdownOption[];
|
|
10
|
+
optionsChanged(): void;
|
|
11
|
+
value: string;
|
|
12
|
+
externalValueChanged(newValue: string): void;
|
|
13
|
+
width?: string;
|
|
14
|
+
selectStyles?: Record<string, string>;
|
|
15
|
+
internalValue: string;
|
|
16
|
+
hasSuffixContent: boolean;
|
|
17
|
+
hasPrefixContent: boolean;
|
|
18
|
+
isOpen: boolean;
|
|
19
|
+
focusedIndex: number;
|
|
20
|
+
openDirection: 'down' | 'up';
|
|
21
|
+
valueChanged: EventEmitter<string>;
|
|
22
|
+
private suffixSlotElement?;
|
|
23
|
+
private prefixSlotElement?;
|
|
24
|
+
private triggerElement?;
|
|
25
|
+
private menuElement?;
|
|
26
|
+
private wrapperElement?;
|
|
27
|
+
componentWillLoad(): void;
|
|
28
|
+
disconnectedCallback(): void;
|
|
29
|
+
handleDocumentClick(event: MouseEvent): void;
|
|
30
|
+
handleDocumentKeydown(event: KeyboardEvent): void;
|
|
31
|
+
private updateInternalValue;
|
|
32
|
+
private toggleMenu;
|
|
33
|
+
private openMenu;
|
|
34
|
+
private calculateMenuDirection;
|
|
35
|
+
private closeMenu;
|
|
36
|
+
private selectOption;
|
|
37
|
+
private handleTriggerKeyDown;
|
|
38
|
+
private handleMenuKeyDown;
|
|
39
|
+
private scrollFocusedOptionIntoView;
|
|
40
|
+
private handleOptionMouseEnter;
|
|
41
|
+
private evaluateSuffixContent;
|
|
42
|
+
private evaluatePrefixContent;
|
|
43
|
+
private getSelectedLabel;
|
|
44
|
+
private getSelectedStyle;
|
|
45
|
+
render(): import("react").JSX.Element;
|
|
46
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
export interface FontOption {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class KritzelFontFamily {
|
|
7
|
+
fontOptions: FontOption[];
|
|
8
|
+
selectedFontFamily: string;
|
|
9
|
+
fontFamilyChange: EventEmitter<string>;
|
|
10
|
+
componentWillLoad(): void;
|
|
11
|
+
private handleDropdownValueChange;
|
|
12
|
+
render(): import("react").JSX.Element;
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
import { ArrowHeadStyle, LineArrowConfig } from '../../../interfaces/arrow-head.interface';
|
|
3
|
+
export type LineEndingType = 'none' | ArrowHeadStyle;
|
|
4
|
+
export interface LineEndingsValue {
|
|
5
|
+
start: LineEndingType;
|
|
6
|
+
end: LineEndingType;
|
|
7
|
+
}
|
|
8
|
+
export declare class KritzelLineEndings {
|
|
9
|
+
/** Available ending styles */
|
|
10
|
+
styles: LineEndingType[];
|
|
11
|
+
/** Current line arrow configuration */
|
|
12
|
+
value: LineArrowConfig | undefined;
|
|
13
|
+
valueChange: EventEmitter<LineArrowConfig>;
|
|
14
|
+
private getStartEnding;
|
|
15
|
+
private getEndEnding;
|
|
16
|
+
private handleStartChange;
|
|
17
|
+
private handleEndChange;
|
|
18
|
+
private getEndingPath;
|
|
19
|
+
private renderEndingIcon;
|
|
20
|
+
render(): import("react").JSX.Element;
|
|
21
|
+
}
|
package/dist/types/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
export type ShapeFillType = 'transparent' | 'filled';
|
|
3
|
+
export declare class KritzelShapeFill {
|
|
4
|
+
/** Current fill type */
|
|
5
|
+
value: ShapeFillType;
|
|
6
|
+
valueChange: EventEmitter<ShapeFillType>;
|
|
7
|
+
private handleFillChange;
|
|
8
|
+
private renderFillIcon;
|
|
9
|
+
render(): import("react").JSX.Element;
|
|
10
|
+
}
|
package/dist/types/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventEmitter } from '@stencil/core';
|
|
2
|
+
import { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';
|
|
3
|
+
import { KritzelBaseObject } from '../../../classes/objects/base-object.class';
|
|
4
|
+
export declare class KritzelContextMenu {
|
|
5
|
+
host: HTMLElement;
|
|
6
|
+
items: ContextMenuItem[];
|
|
7
|
+
onItemsChanged(): void;
|
|
8
|
+
objects: KritzelBaseObject[];
|
|
9
|
+
actionSelected: EventEmitter<ContextMenuItem>;
|
|
10
|
+
close: EventEmitter<void>;
|
|
11
|
+
private processedItems;
|
|
12
|
+
handleOutsideClick(event: MouseEvent): void;
|
|
13
|
+
componentWillLoad(): void;
|
|
14
|
+
componentDidLoad(): void;
|
|
15
|
+
componentDidUpdate(): void;
|
|
16
|
+
private adjustPositionToViewport;
|
|
17
|
+
private handleItemClick;
|
|
18
|
+
private updateMenuItems;
|
|
19
|
+
private evaluateProperty;
|
|
20
|
+
render(): import("react").JSX.Element;
|
|
21
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported theme modes for color variations
|
|
3
|
+
*/
|
|
4
|
+
export type ThemeMode = 'light' | 'dark';
|
|
5
|
+
/**
|
|
6
|
+
* Color definition with different values per theme
|
|
7
|
+
*/
|
|
8
|
+
export interface ThemeAwareColor {
|
|
9
|
+
/** Color value for light theme */
|
|
10
|
+
light: string;
|
|
11
|
+
/** Color value for dark theme */
|
|
12
|
+
dark: string;
|
|
13
|
+
/** Optional semantic label for the color */
|
|
14
|
+
label?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Type for a color palette with theme-aware colors only
|
|
18
|
+
*/
|
|
19
|
+
export type ColorPalette = readonly ThemeAwareColor[];
|
|
20
|
+
/**
|
|
21
|
+
* Helper function to resolve a color value for a specific theme
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveColor(color: ThemeAwareColor, theme: ThemeMode): string;
|
|
24
|
+
/**
|
|
25
|
+
* Default color palette shared across all tool configurations.
|
|
26
|
+
* This ensures consistency in color options throughout the application.
|
|
27
|
+
* All colors support theme-specific variations.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_COLOR_PALETTE: ColorPalette;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ThemeAwareColor, ThemeMode } from '../constants/color-palette.constants';
|
|
2
|
+
export declare class KritzelColorHelper {
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a color value based on the current theme.
|
|
5
|
+
* Handles both simple string colors and theme-aware color objects.
|
|
6
|
+
* @param color - The color to resolve (string or ThemeAwareColor)
|
|
7
|
+
* @param theme - Optional theme to use. If not provided, uses current theme from ThemeManager
|
|
8
|
+
* @returns The resolved hex color string, or empty string if color is undefined
|
|
9
|
+
*/
|
|
10
|
+
static resolveThemeColor(color: ThemeAwareColor | undefined, theme?: ThemeMode): string;
|
|
11
|
+
/**
|
|
12
|
+
* Applies opacity to a theme-aware color and returns an rgba string.
|
|
13
|
+
* @param color - The theme-aware color object
|
|
14
|
+
* @param opacity - The opacity value between 0 and 1
|
|
15
|
+
* @param theme - Optional theme to use. If not provided, uses current theme from ThemeManager
|
|
16
|
+
* @returns The color as an rgba string, or the resolved hex if opacity is 1
|
|
17
|
+
*/
|
|
18
|
+
static applyOpacity(color: ThemeAwareColor, opacity: number, theme?: ThemeMode): string;
|
|
19
|
+
/**
|
|
20
|
+
* Determines the appropriate contrast color (black or white) based on the luminance of the given hex color.
|
|
21
|
+
* Uses the relative luminance formula: 0.299*R + 0.587*G + 0.114*B
|
|
22
|
+
* @param hexColor - The hex color string (with or without #)
|
|
23
|
+
* @returns '#000000' for light backgrounds, '#ffffff' for dark backgrounds
|
|
24
|
+
*/
|
|
25
|
+
static getContrastColor(hexColor: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Determines the appropriate text color for both light and dark themes based on the fill color.
|
|
28
|
+
* Returns default theme-appropriate colors if the fill is transparent.
|
|
29
|
+
* @param fillColor - The theme-aware fill color
|
|
30
|
+
* @returns A theme-aware color object with appropriate text colors for both themes
|
|
31
|
+
*/
|
|
32
|
+
static determineTextColor(fillColor: ThemeAwareColor): ThemeAwareColor;
|
|
33
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class KritzelCursorHelper {
|
|
2
|
+
private static _pointerCursor;
|
|
3
|
+
/**
|
|
4
|
+
* Returns the custom pointer cursor CSS value.
|
|
5
|
+
* This can be used instead of `cursor: pointer` for consistent styling.
|
|
6
|
+
*/
|
|
7
|
+
static getPointerCursor(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Returns a custom cursor CSS value with support for rotation.
|
|
10
|
+
* The icon is retrieved from the KritzelIconRegistry.
|
|
11
|
+
*/
|
|
12
|
+
static getCursor(options: {
|
|
13
|
+
iconName: string;
|
|
14
|
+
rotation?: number;
|
|
15
|
+
color?: string;
|
|
16
|
+
size?: number;
|
|
17
|
+
hotspot?: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
};
|
|
21
|
+
}): string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class KritzelEventHelper {
|
|
2
|
+
static isRightClick(ev: MouseEvent): boolean;
|
|
3
|
+
static isLeftClick(ev: MouseEvent): boolean;
|
|
4
|
+
static isPointerEventOnContextMenu(event: PointerEvent): boolean;
|
|
5
|
+
static onLongPress(event: PointerEvent, onSuccess: (event: PointerEvent) => void, onCancel?: () => void): () => void;
|
|
6
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { KritzelPoint } from "../interfaces/point.interface";
|
|
2
|
+
import { KritzelPolygon } from "../interfaces/polygon.interface";
|
|
3
|
+
export declare class KritzelGeometryHelper {
|
|
4
|
+
static doPolygonsIntersect(polygon1: KritzelPolygon, polygon2: KritzelPolygon): boolean;
|
|
5
|
+
static isPointInPolygon(point: KritzelPoint, polygon: KritzelPoint[]): boolean;
|
|
6
|
+
static intersectLines(p1a: KritzelPoint, p1b: KritzelPoint, p2a: KritzelPoint, p2b: KritzelPoint): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Finds the intersection point between a line segment and a line segment.
|
|
9
|
+
* Returns the intersection point or null if no intersection.
|
|
10
|
+
*/
|
|
11
|
+
static getLineIntersectionPoint(p1a: KritzelPoint, p1b: KritzelPoint, p2a: KritzelPoint, p2b: KritzelPoint): KritzelPoint | null;
|
|
12
|
+
/**
|
|
13
|
+
* Finds the closest intersection point between a line segment (from lineStart to lineEnd)
|
|
14
|
+
* and a polygon. Returns the intersection point closest to lineStart, or null if no intersection.
|
|
15
|
+
*/
|
|
16
|
+
static getLinePolygonIntersection(lineStart: KritzelPoint, lineEnd: KritzelPoint, polygon: KritzelPolygon): KritzelPoint | null;
|
|
17
|
+
/**
|
|
18
|
+
* Generates a polygon approximation of an ellipse.
|
|
19
|
+
* @param centerX - X coordinate of ellipse center
|
|
20
|
+
* @param centerY - Y coordinate of ellipse center
|
|
21
|
+
* @param rx - Horizontal radius
|
|
22
|
+
* @param ry - Vertical radius
|
|
23
|
+
* @param segments - Number of segments (more = smoother approximation)
|
|
24
|
+
* @param rotation - Optional rotation angle in radians
|
|
25
|
+
*/
|
|
26
|
+
static getEllipsePolygonApproximation(centerX: number, centerY: number, rx: number, ry: number, segments?: number, rotation?: number): KritzelPoint[];
|
|
27
|
+
/**
|
|
28
|
+
* Finds the closest intersection point between a line segment and a polygon
|
|
29
|
+
* defined as an array of points. Returns the intersection closest to lineStart,
|
|
30
|
+
* or null if no intersection.
|
|
31
|
+
*/
|
|
32
|
+
static getLinePointsArrayIntersection(lineStart: KritzelPoint, lineEnd: KritzelPoint, polygonPoints: KritzelPoint[]): KritzelPoint | null;
|
|
33
|
+
/**
|
|
34
|
+
* Checks if a point is inside a polygon defined as an array of points.
|
|
35
|
+
* This is a convenience wrapper that works with arbitrary polygon point arrays.
|
|
36
|
+
*/
|
|
37
|
+
static isPointInPolygonPoints(point: KritzelPoint, polygonPoints: KritzelPoint[]): boolean;
|
|
38
|
+
}
|