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,41 @@
|
|
|
1
|
+
import { KritzelTheme } from '../interfaces/theme.interface';
|
|
2
|
+
export declare class ThemeHelper {
|
|
3
|
+
/**
|
|
4
|
+
* Converts a camelCase string to kebab-case.
|
|
5
|
+
* @example ThemeHelper.camelToKebab('controlHoverBackgroundColor') → 'control-hover-background-color'
|
|
6
|
+
* @example ThemeHelper.camelToKebab('backgroundColor') → 'background-color'
|
|
7
|
+
* @example ThemeHelper.camelToKebab('gap') → 'gap'
|
|
8
|
+
*/
|
|
9
|
+
static camelToKebab(str: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Recursively flattens a theme object into a map of CSS variable names to values.
|
|
12
|
+
* Skips the 'name' property at the root level since it's the theme identifier, not a CSS value.
|
|
13
|
+
*
|
|
14
|
+
* @param theme - The theme object to flatten
|
|
15
|
+
* @param prefix - The CSS variable prefix (default: '--kritzel')
|
|
16
|
+
* @returns A Map of CSS variable names to their values
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ThemeHelper.flattenThemeToVariables(lightTheme)
|
|
20
|
+
* // Returns Map {
|
|
21
|
+
* // '--kritzel-global-pointer-cursor' => 'pointer',
|
|
22
|
+
* // '--kritzel-controls-gap' => '8px',
|
|
23
|
+
* // ...
|
|
24
|
+
* // }
|
|
25
|
+
*/
|
|
26
|
+
static flattenThemeToVariables(theme: KritzelTheme, prefix?: string): Map<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Applies a map of CSS variables to an HTML element.
|
|
29
|
+
*
|
|
30
|
+
* @param element - The target HTML element
|
|
31
|
+
* @param variables - A Map of CSS variable names to values
|
|
32
|
+
*/
|
|
33
|
+
static applyVariablesToElement(element: HTMLElement, variables: Map<string, string>): void;
|
|
34
|
+
/**
|
|
35
|
+
* Convenience method that flattens a theme and applies it to an element in one call.
|
|
36
|
+
*
|
|
37
|
+
* @param element - The target HTML element
|
|
38
|
+
* @param theme - The theme object to apply
|
|
39
|
+
*/
|
|
40
|
+
static applyThemeToElement(element: HTMLElement, theme: KritzelTheme): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview entry point for your component library
|
|
3
|
+
*
|
|
4
|
+
* This is the entry point for your component library. Use this file to export utilities,
|
|
5
|
+
* constants or data structure that accompany your components.
|
|
6
|
+
*
|
|
7
|
+
* DO NOT use this file to export your components. Instead, use the recommended approaches
|
|
8
|
+
* to consume components of this package as outlined in the `README.md`.
|
|
9
|
+
*/
|
|
10
|
+
export type * from './components';
|
|
11
|
+
export * from './classes/objects/text.class';
|
|
12
|
+
export * from './classes/objects/path.class';
|
|
13
|
+
export * from './classes/objects/image.class';
|
|
14
|
+
export * from './classes/objects/line.class';
|
|
15
|
+
export * from './classes/objects/group.class';
|
|
16
|
+
export * from './classes/tools/brush-tool.class';
|
|
17
|
+
export * from './classes/tools/line-tool.class';
|
|
18
|
+
export * from './classes/tools/eraser-tool.class';
|
|
19
|
+
export * from './classes/tools/image-tool.class';
|
|
20
|
+
export * from './classes/tools/text-tool.class';
|
|
21
|
+
export * from './helpers/cursor.helper';
|
|
22
|
+
export * from './classes/tools/selection-tool.class';
|
|
23
|
+
export * from './classes/providers/broadcast-sync-provider.class';
|
|
24
|
+
export * from './classes/providers/indexeddb-sync-provider.class';
|
|
25
|
+
export * from './classes/providers/websocket-sync-provider.class';
|
|
26
|
+
export * from './classes/providers/hocuspocus-sync-provider.class';
|
|
27
|
+
export * from './classes/structures/app-state-map.structure';
|
|
28
|
+
export * from './classes/core/workspace.class';
|
|
29
|
+
export * from './classes/managers/anchor.manager';
|
|
30
|
+
export * from './interfaces/toolbar-control.interface';
|
|
31
|
+
export * from './interfaces/menu-item.interface';
|
|
32
|
+
export * from './interfaces/sync-provider.interface';
|
|
33
|
+
export * from './interfaces/sync-config.interface';
|
|
34
|
+
export * from './interfaces/anchor.interface';
|
|
35
|
+
export * from './configs/default-brush-tool.config';
|
|
36
|
+
export * from './configs/default-text-tool.config';
|
|
37
|
+
export * from './configs/default-line-tool.config';
|
|
38
|
+
export * from './interfaces/theme.interface';
|
|
39
|
+
export * from './interfaces/shortcut.interface';
|
|
40
|
+
export * from './themes/light-theme';
|
|
41
|
+
export * from './themes/dark-theme';
|
|
42
|
+
export * from './classes/managers/theme.manager';
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an anchor connection from a line endpoint to another object's center.
|
|
3
|
+
*/
|
|
4
|
+
export interface LineAnchor {
|
|
5
|
+
/** The ID of the object that this line endpoint is anchored to */
|
|
6
|
+
objectId: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Entry in the anchor index that tracks which lines are anchored to an object.
|
|
10
|
+
*/
|
|
11
|
+
export interface AnchorIndexEntry {
|
|
12
|
+
/** The ID of the line that has an anchor */
|
|
13
|
+
lineId: string;
|
|
14
|
+
/** Which endpoint of the line is anchored */
|
|
15
|
+
endpoint: 'start' | 'end';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Represents a potential snap target during line endpoint dragging.
|
|
19
|
+
*/
|
|
20
|
+
export interface SnapTarget {
|
|
21
|
+
/** The ID of the object that can be snapped to */
|
|
22
|
+
objectId: string;
|
|
23
|
+
/** The center X coordinate of the snap target in world coordinates */
|
|
24
|
+
centerX: number;
|
|
25
|
+
/** The center Y coordinate of the snap target in world coordinates */
|
|
26
|
+
centerY: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Represents the current snap candidate state during dragging.
|
|
30
|
+
*/
|
|
31
|
+
export interface SnapCandidate {
|
|
32
|
+
/** The ID of the object being snapped to */
|
|
33
|
+
objectId: string;
|
|
34
|
+
/** Which endpoint of the line is being snapped */
|
|
35
|
+
endpoint: 'start' | 'end';
|
|
36
|
+
/** The center X coordinate for the snap indicator */
|
|
37
|
+
centerX: number;
|
|
38
|
+
/** The center Y coordinate for the snap indicator */
|
|
39
|
+
centerY: number;
|
|
40
|
+
/** The X coordinate of the line endpoint (world coords) */
|
|
41
|
+
lineEndpointX: number;
|
|
42
|
+
/** The Y coordinate of the line endpoint (world coords) */
|
|
43
|
+
lineEndpointY: number;
|
|
44
|
+
/** The X coordinate where the line intersects the object's edge (world coords) */
|
|
45
|
+
edgeX?: number;
|
|
46
|
+
/** The Y coordinate where the line intersects the object's edge (world coords) */
|
|
47
|
+
edgeY?: number;
|
|
48
|
+
/** The stroke color of the line being snapped */
|
|
49
|
+
lineStroke?: string;
|
|
50
|
+
/** The stroke width of the line being snapped */
|
|
51
|
+
lineStrokeWidth?: number;
|
|
52
|
+
/** Arrow offset to apply to the edge point (in world coords) */
|
|
53
|
+
arrowOffset?: number;
|
|
54
|
+
/** Arrow style for the snapping endpoint */
|
|
55
|
+
arrowStyle?: 'triangle' | 'open' | 'diamond' | 'circle';
|
|
56
|
+
/** Arrow fill color */
|
|
57
|
+
arrowFill?: string;
|
|
58
|
+
/** The X coordinate of the control point (world coords), if any */
|
|
59
|
+
controlX?: number;
|
|
60
|
+
/** The Y coordinate of the control point (world coords), if any */
|
|
61
|
+
controlY?: number;
|
|
62
|
+
/** The t parameter on the curve where the edge intersection occurs (0-1) */
|
|
63
|
+
t?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Visualization data for rendering anchor indicator lines.
|
|
67
|
+
*/
|
|
68
|
+
export interface AnchorVisualization {
|
|
69
|
+
/** The X coordinate where the line intersects the object's edge */
|
|
70
|
+
edgeX: number;
|
|
71
|
+
/** The Y coordinate where the line intersects the object's edge */
|
|
72
|
+
edgeY: number;
|
|
73
|
+
/** The center X coordinate of the anchored object */
|
|
74
|
+
centerX: number;
|
|
75
|
+
/** The center Y coordinate of the anchored object */
|
|
76
|
+
centerY: number;
|
|
77
|
+
/** Optional SVG path describing the curved dashed segment */
|
|
78
|
+
pathD?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Render data for anchor lines visualization (dashed lines from edge to center).
|
|
82
|
+
*/
|
|
83
|
+
export interface AnchorLinesRenderData {
|
|
84
|
+
/** The stroke width of the line */
|
|
85
|
+
lineStrokeWidth: number;
|
|
86
|
+
/** The stroke width for the indicator circle */
|
|
87
|
+
indicatorStrokeWidth: string;
|
|
88
|
+
/** The dash array for the dashed line */
|
|
89
|
+
dashArray: string;
|
|
90
|
+
/** The radius of the indicator circle */
|
|
91
|
+
indicatorRadius: number;
|
|
92
|
+
/** Visualization data for the start anchor, if any */
|
|
93
|
+
startAnchorViz: AnchorVisualization | null;
|
|
94
|
+
/** Visualization data for the end anchor, if any */
|
|
95
|
+
endAnchorViz: AnchorVisualization | null;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Render data for snap indicator visualization.
|
|
99
|
+
*/
|
|
100
|
+
export interface SnapIndicatorRenderData {
|
|
101
|
+
/** The radius of the indicator circle */
|
|
102
|
+
indicatorRadius: number;
|
|
103
|
+
/** The stroke width for the indicator circle */
|
|
104
|
+
indicatorStrokeWidth: string;
|
|
105
|
+
/** The stroke width for the line */
|
|
106
|
+
lineStrokeWidth: string;
|
|
107
|
+
/** The dash array for the dashed line */
|
|
108
|
+
dashArray: string;
|
|
109
|
+
/** The stroke color of the line */
|
|
110
|
+
lineStroke: string;
|
|
111
|
+
/** The center X coordinate */
|
|
112
|
+
centerX: number;
|
|
113
|
+
/** The center Y coordinate */
|
|
114
|
+
centerY: number;
|
|
115
|
+
/** The X coordinate of the line endpoint */
|
|
116
|
+
lineEndpointX: number;
|
|
117
|
+
/** The Y coordinate of the line endpoint */
|
|
118
|
+
lineEndpointY: number;
|
|
119
|
+
/** The X coordinate where the line intersects the object's edge */
|
|
120
|
+
edgeX?: number;
|
|
121
|
+
/** The Y coordinate where the line intersects the object's edge */
|
|
122
|
+
edgeY?: number;
|
|
123
|
+
/** Arrow offset to apply to the edge point */
|
|
124
|
+
arrowOffset?: number;
|
|
125
|
+
/** Arrow style for the snapping endpoint */
|
|
126
|
+
arrowStyle?: 'triangle' | 'open' | 'diamond' | 'circle';
|
|
127
|
+
/** Arrow fill color */
|
|
128
|
+
arrowFill?: string;
|
|
129
|
+
/** The X coordinate for the end of the solid line part (accounting for arrow offset) */
|
|
130
|
+
solidLineEndX?: number;
|
|
131
|
+
/** The Y coordinate for the end of the solid line part (accounting for arrow offset) */
|
|
132
|
+
solidLineEndY?: number;
|
|
133
|
+
/** SVG points string for the arrow head at the edge */
|
|
134
|
+
arrowPoints?: string;
|
|
135
|
+
/** SVG path d string for the dashed line part (if curved) */
|
|
136
|
+
snapLinePath?: string;
|
|
137
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ThemeAwareColor } from '../constants/color-palette.constants';
|
|
2
|
+
/**
|
|
3
|
+
* Arrow head style types
|
|
4
|
+
*/
|
|
5
|
+
export type ArrowHeadStyle = 'triangle' | 'open' | 'diamond' | 'circle';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for a single arrow head
|
|
8
|
+
*/
|
|
9
|
+
export interface ArrowHeadConfig {
|
|
10
|
+
/** Whether to display the arrow head */
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
/** Arrow head style (defaults to 'triangle') */
|
|
13
|
+
style?: ArrowHeadStyle;
|
|
14
|
+
/** Size of the arrow head in pixels (defaults to strokeWidth * 3) */
|
|
15
|
+
size?: number;
|
|
16
|
+
/** Fill color (defaults to stroke color of the line) */
|
|
17
|
+
fill?: ThemeAwareColor;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Configuration for arrow heads at both ends of a line
|
|
21
|
+
*/
|
|
22
|
+
export interface LineArrowConfig {
|
|
23
|
+
/** Arrow head at the start of the line */
|
|
24
|
+
start?: ArrowHeadConfig;
|
|
25
|
+
/** Arrow head at the end of the line */
|
|
26
|
+
end?: ArrowHeadConfig;
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { KritzelBaseObject } from "../classes/objects/base-object.class";
|
|
2
|
+
export interface ContextMenuItem {
|
|
3
|
+
label: string;
|
|
4
|
+
action: (menu: {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}, objects: KritzelBaseObject[]) => void;
|
|
8
|
+
icon?: string;
|
|
9
|
+
visible?: boolean | ((menu: {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
}, objects: KritzelBaseObject[]) => boolean | Promise<boolean>);
|
|
13
|
+
disabled?: boolean | ((menu: {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
}, objects: KritzelBaseObject[]) => boolean | Promise<boolean>);
|
|
17
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { KritzelBaseObject } from "../classes/objects/base-object.class";
|
|
2
|
+
import { KritzelObjectMap } from "../classes/structures/object-map.structure";
|
|
3
|
+
import { KritzelBaseTool } from "../classes/tools/base-tool.class";
|
|
4
|
+
import { KritzelWorkspace } from "../classes/core/workspace.class";
|
|
5
|
+
import { KritzelHandleType } from "../enums/handle-type.enum";
|
|
6
|
+
import { ContextMenuItem } from "./context-menu-item.interface";
|
|
7
|
+
import { KritzelDebugInfo } from "./debug-info.interface";
|
|
8
|
+
import { LineHandleType } from "../classes/handlers/line-handle.handler";
|
|
9
|
+
import { SnapCandidate } from "./anchor.interface";
|
|
10
|
+
export interface KritzelEngineState {
|
|
11
|
+
activeWorkspace: KritzelWorkspace;
|
|
12
|
+
activeTool: KritzelBaseTool;
|
|
13
|
+
copiedObjects?: KritzelBaseObject<any>[];
|
|
14
|
+
/** Maps copied object IDs to their original source object IDs (for anchor remapping during paste) */
|
|
15
|
+
copiedObjectIdMapping?: Map<string, string>;
|
|
16
|
+
objects: KritzelObjectMap<KritzelBaseObject<Element>>;
|
|
17
|
+
snapCandidate?: SnapCandidate | null;
|
|
18
|
+
resizeHandleType: KritzelHandleType;
|
|
19
|
+
lineHandleType: LineHandleType;
|
|
20
|
+
hasViewportChanged: boolean;
|
|
21
|
+
hasObjectsChanged: boolean;
|
|
22
|
+
isReady: boolean;
|
|
23
|
+
isEnabled: boolean;
|
|
24
|
+
isScaling: boolean;
|
|
25
|
+
isPanning: boolean;
|
|
26
|
+
isSelecting: boolean;
|
|
27
|
+
isResizing: boolean;
|
|
28
|
+
isResizeHandleHovered: boolean;
|
|
29
|
+
isResizeHandleSelected: boolean;
|
|
30
|
+
isRotating: boolean;
|
|
31
|
+
isRotationHandleHovered: boolean;
|
|
32
|
+
isRotationHandleSelected: boolean;
|
|
33
|
+
isLineHandleSelected: boolean;
|
|
34
|
+
isLineHandleDragging: boolean;
|
|
35
|
+
isDragging: boolean;
|
|
36
|
+
isDrawing: boolean;
|
|
37
|
+
isErasing: boolean;
|
|
38
|
+
isWriting: boolean;
|
|
39
|
+
isCtrlKeyPressed: boolean;
|
|
40
|
+
isContextMenuVisible: boolean;
|
|
41
|
+
contextMenuItems: ContextMenuItem[];
|
|
42
|
+
contextMenuX: number;
|
|
43
|
+
contextMenuY: number;
|
|
44
|
+
skipContextMenu: boolean;
|
|
45
|
+
debugInfo: KritzelDebugInfo;
|
|
46
|
+
host: HTMLElement;
|
|
47
|
+
pointerX: number;
|
|
48
|
+
pointerY: number;
|
|
49
|
+
scale: number;
|
|
50
|
+
scaleMax: number;
|
|
51
|
+
scaleMin: number;
|
|
52
|
+
startX: number;
|
|
53
|
+
startY: number;
|
|
54
|
+
translateX: number;
|
|
55
|
+
translateXMax: number;
|
|
56
|
+
translateXMin: number;
|
|
57
|
+
translateY: number;
|
|
58
|
+
translateYMax: number;
|
|
59
|
+
translateYMin: number;
|
|
60
|
+
viewportWidth: number;
|
|
61
|
+
viewportHeight: number;
|
|
62
|
+
longTouchTimeout: number;
|
|
63
|
+
longTouchDelay: number;
|
|
64
|
+
pointers: Map<number, PointerEvent>;
|
|
65
|
+
workspaces: KritzelWorkspace[];
|
|
66
|
+
cursor: {
|
|
67
|
+
icon: string;
|
|
68
|
+
iconActive?: string;
|
|
69
|
+
rotation?: number;
|
|
70
|
+
};
|
|
71
|
+
/** When true, objects are drawn at a fixed visual size regardless of zoom level */
|
|
72
|
+
lockDrawingScale: boolean;
|
|
73
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LineAnchor } from './anchor.interface';
|
|
2
|
+
import { LineArrowConfig } from './arrow-head.interface';
|
|
3
|
+
import { ThemeAwareColor } from '../constants/color-palette.constants';
|
|
4
|
+
export interface KritzelLineOptions {
|
|
5
|
+
startX: number;
|
|
6
|
+
startY: number;
|
|
7
|
+
endX: number;
|
|
8
|
+
endY: number;
|
|
9
|
+
controlX?: number;
|
|
10
|
+
controlY?: number;
|
|
11
|
+
translateX?: number;
|
|
12
|
+
translateY?: number;
|
|
13
|
+
scale?: number;
|
|
14
|
+
stroke?: ThemeAwareColor;
|
|
15
|
+
strokeWidth?: number;
|
|
16
|
+
opacity?: number;
|
|
17
|
+
/** Anchor connection for the start point */
|
|
18
|
+
startAnchor?: LineAnchor;
|
|
19
|
+
/** Anchor connection for the end point */
|
|
20
|
+
endAnchor?: LineAnchor;
|
|
21
|
+
/** Arrow head configuration for start and end of line */
|
|
22
|
+
arrows?: LineArrowConfig;
|
|
23
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface IKritzelMasterDetailItem {
|
|
2
|
+
/** Unique identifier for the item */
|
|
3
|
+
id: string;
|
|
4
|
+
/** Display label for the menu item */
|
|
5
|
+
label: string;
|
|
6
|
+
/** Optional icon name (for kritzel-icon) */
|
|
7
|
+
icon?: string;
|
|
8
|
+
/** Whether the item is disabled */
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface IKritzelMasterDetailSelectEvent {
|
|
12
|
+
/** The selected item */
|
|
13
|
+
item: IKritzelMasterDetailItem;
|
|
14
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface IKritzelMenuItem<T = any> {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
icon?: string;
|
|
5
|
+
value?: T;
|
|
6
|
+
children?: IKritzelMenuItem[];
|
|
7
|
+
isSelectable?: boolean;
|
|
8
|
+
isSelected?: boolean;
|
|
9
|
+
isEditing?: boolean;
|
|
10
|
+
isDisabled?: boolean;
|
|
11
|
+
isChildMenuOpen?: boolean;
|
|
12
|
+
isNewItem?: boolean;
|
|
13
|
+
childMenuAnchor?: HTMLElement;
|
|
14
|
+
unchangedState?: Partial<IKritzelMenuItem>;
|
|
15
|
+
action?: (item: IKritzelMenuItem, parent: IKritzelMenuItem) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface IKritzelMenuItemSelectEvent {
|
|
18
|
+
item: IKritzelMenuItem;
|
|
19
|
+
parent: IKritzelMenuItem;
|
|
20
|
+
}
|
|
21
|
+
export interface IKritzelMenuItemToggleChildMenuEvent {
|
|
22
|
+
item: IKritzelMenuItem;
|
|
23
|
+
childMenuAnchor: HTMLElement;
|
|
24
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { KritzelBaseObject } from '../classes/objects/base-object.class';
|
|
2
|
+
import { KritzelBoundingBox } from './bounding-box.interface';
|
|
3
|
+
import { KritzelPolygon } from './polygon.interface';
|
|
4
|
+
import { ThemeAwareColor } from '../constants/color-palette.constants';
|
|
5
|
+
export interface KritzelObject<T = Element> {
|
|
6
|
+
_elementRef: T;
|
|
7
|
+
id: string;
|
|
8
|
+
workspaceId: string;
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
translateX: number;
|
|
12
|
+
translateY: number;
|
|
13
|
+
height: number;
|
|
14
|
+
width: number;
|
|
15
|
+
backgroundColor?: ThemeAwareColor;
|
|
16
|
+
borderColor?: ThemeAwareColor;
|
|
17
|
+
borderWidth: number;
|
|
18
|
+
opacity: number;
|
|
19
|
+
scale: number;
|
|
20
|
+
resizing: boolean;
|
|
21
|
+
rotation: number;
|
|
22
|
+
markedForRemoval: boolean;
|
|
23
|
+
zIndex: number;
|
|
24
|
+
isVisible: boolean;
|
|
25
|
+
isSelected: boolean;
|
|
26
|
+
isHovered: boolean;
|
|
27
|
+
isMounted: boolean;
|
|
28
|
+
isEditable: boolean;
|
|
29
|
+
isInteractive: boolean;
|
|
30
|
+
isDebugInfoVisible: boolean;
|
|
31
|
+
set elementRef(element: T);
|
|
32
|
+
get elementRef(): T;
|
|
33
|
+
get boundingBox(): KritzelBoundingBox;
|
|
34
|
+
get totalWidth(): number;
|
|
35
|
+
get totalHeight(): number;
|
|
36
|
+
get rotationDegrees(): number;
|
|
37
|
+
get centerX(): number;
|
|
38
|
+
get centerY(): number;
|
|
39
|
+
mount(element: T): void;
|
|
40
|
+
generateId(): string;
|
|
41
|
+
isInViewport(viewport: KritzelBoundingBox, scale: number): boolean;
|
|
42
|
+
centerInViewport(): void;
|
|
43
|
+
update(): void;
|
|
44
|
+
move(startX: number, startY: number, endX: number, endY: number): void;
|
|
45
|
+
resize(x: number, y: number, width: number, height: number): void;
|
|
46
|
+
rotate(value: number): void;
|
|
47
|
+
copy(): KritzelBaseObject<Element>;
|
|
48
|
+
isClass<T extends KritzelBaseObject>(this: T, type: string): this is T;
|
|
49
|
+
edit(event?: PointerEvent): void;
|
|
50
|
+
hitTest(x: number, y: number): boolean;
|
|
51
|
+
hitTestPolygon(polygon: KritzelPolygon): boolean;
|
|
52
|
+
updatePosition(x: number, y: number): void;
|
|
53
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ThemeAwareColor } from '../constants/color-palette.constants';
|
|
2
|
+
export interface KritzelPathOptions {
|
|
3
|
+
points: number[][];
|
|
4
|
+
translateX?: number;
|
|
5
|
+
translateY?: number;
|
|
6
|
+
scale?: number;
|
|
7
|
+
stroke?: ThemeAwareColor;
|
|
8
|
+
strokeWidth?: number;
|
|
9
|
+
fill?: ThemeAwareColor;
|
|
10
|
+
opacity?: number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ThemeName } from './theme.interface';
|
|
2
|
+
export interface KritzelSettingsConfig {
|
|
3
|
+
/** Minimum zoom level allowed (0.0001 to 1) */
|
|
4
|
+
scaleMin: number;
|
|
5
|
+
/** Maximum zoom level allowed (1 to 1000) */
|
|
6
|
+
scaleMax: number;
|
|
7
|
+
/** When true, objects are drawn at a fixed visual size regardless of zoom level */
|
|
8
|
+
lockDrawingScale: boolean;
|
|
9
|
+
/** The current theme name */
|
|
10
|
+
theme: ThemeName;
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ProviderConfig } from './sync-provider.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for workspace synchronization providers
|
|
4
|
+
*/
|
|
5
|
+
export interface KritzelSyncConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Array of provider configurations to enable for synchronization.
|
|
8
|
+
* Can include provider classes directly or factory functions with options.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Simple providers
|
|
12
|
+
* providers: [IndexedDBSyncProvider, BroadcastSyncProvider]
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Provider with options using factory
|
|
16
|
+
* providers: [
|
|
17
|
+
* IndexedDBSyncProvider,
|
|
18
|
+
* WebSocketSyncProvider.with({ url: 'wss://example.com' })
|
|
19
|
+
* ]
|
|
20
|
+
*/
|
|
21
|
+
providers: ProviderConfig[];
|
|
22
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for sync providers that handle data synchronization across different mediums
|
|
4
|
+
* (IndexedDB, BroadcastChannel, WebSocket, etc.)
|
|
5
|
+
*/
|
|
6
|
+
export interface ISyncProvider {
|
|
7
|
+
/**
|
|
8
|
+
* Initialize and connect the provider
|
|
9
|
+
*/
|
|
10
|
+
connect(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Disconnect the provider (can be reconnected later)
|
|
13
|
+
*/
|
|
14
|
+
disconnect(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Destroy the provider and clean up all resources
|
|
17
|
+
*/
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Factory function type for creating provider instances
|
|
22
|
+
*/
|
|
23
|
+
export interface ProviderFactory {
|
|
24
|
+
create(docName: string, doc: Y.Doc): ISyncProvider;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Type for provider configuration - either a class constructor or a factory
|
|
28
|
+
*/
|
|
29
|
+
export type ProviderConfig = (new (docName: string, doc: Y.Doc, options?: any) => ISyncProvider) | ProviderFactory;
|