kritzel-stencil 0.4.23 → 0.4.25
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/index.cjs.js +3 -46
- package/dist/cjs/kritzel-active-users_47.cjs.entry.js +93 -138
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/stencil.cjs.js +1 -1
- package/dist/collection/classes/core/core.class.js +4 -0
- package/dist/collection/classes/providers/sync/hocuspocus-sync-provider.class.js +1 -19
- package/dist/collection/classes/providers/sync/websocket-sync-provider.class.js +2 -27
- package/dist/collection/classes/structures/app-state-map.structure.js +1 -4
- package/dist/collection/classes/structures/object-map.structure.js +64 -61
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +20 -32
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +21 -73
- package/dist/collection/constants/version.js +1 -1
- package/dist/components/index.js +4 -47
- package/dist/components/kritzel-editor.js +20 -18
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/{p-Cb-xlpsJ.js → p-0fhjWRmT.js} +1 -1
- package/dist/components/{p-EijwLEZx.js → p-gJcH-huF.js} +75 -123
- package/dist/esm/index.js +3 -46
- package/dist/esm/kritzel-active-users_47.entry.js +93 -138
- package/dist/esm/loader.js +1 -1
- package/dist/esm/stencil.js +1 -1
- package/dist/stencil/index.esm.js +3 -46
- package/dist/stencil/{p-9e38407e.entry.js → p-dc5783ee.entry.js} +93 -138
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/providers/sync/hocuspocus-sync-provider.class.d.ts +1 -5
- package/dist/types/classes/providers/sync/websocket-sync-provider.class.d.ts +1 -6
- package/dist/types/classes/structures/object-map.structure.d.ts +16 -26
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +3 -4
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +3 -12
- package/dist/types/components.d.ts +7 -12
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/interfaces/sync-provider.interface.d.ts +5 -11
- package/package.json +1 -1
|
@@ -2146,8 +2146,7 @@ const KritzelEditor = class {
|
|
|
2146
2146
|
this.login = createEvent(this, "login");
|
|
2147
2147
|
this.isPublicChange = createEvent(this, "isPublicChange");
|
|
2148
2148
|
this.awarenessChange = createEvent(this, "awarenessChange");
|
|
2149
|
-
this.
|
|
2150
|
-
this.loadingChange = createEvent(this, "loadingChange");
|
|
2149
|
+
this.isSyncing = createEvent(this, "isSyncing");
|
|
2151
2150
|
}
|
|
2152
2151
|
get host() { return getElement(this); }
|
|
2153
2152
|
scaleMax = ABSOLUTE_SCALE_MAX;
|
|
@@ -2387,9 +2386,7 @@ const KritzelEditor = class {
|
|
|
2387
2386
|
login;
|
|
2388
2387
|
isPublicChange;
|
|
2389
2388
|
awarenessChange;
|
|
2390
|
-
|
|
2391
|
-
syncingChange;
|
|
2392
|
-
loadingChange;
|
|
2389
|
+
isSyncing;
|
|
2393
2390
|
isEngineReady = false;
|
|
2394
2391
|
isControlsReady = false;
|
|
2395
2392
|
isWorkspaceManagerReady = false;
|
|
@@ -2411,8 +2408,8 @@ const KritzelEditor = class {
|
|
|
2411
2408
|
contextMenuState;
|
|
2412
2409
|
normalizedControls = [];
|
|
2413
2410
|
resolvedMoreMenuItems = [];
|
|
2414
|
-
isSyncing = false;
|
|
2415
2411
|
isLoadingOverlayVisible = false;
|
|
2412
|
+
isSyncingIndicatorVisible = false;
|
|
2416
2413
|
notificationDismissTimeout;
|
|
2417
2414
|
notificationDismissAnimationTimeout;
|
|
2418
2415
|
notificationDisplayDurationMs = 5000;
|
|
@@ -2895,6 +2892,11 @@ const KritzelEditor = class {
|
|
|
2895
2892
|
event.stopPropagation();
|
|
2896
2893
|
this.awarenessChange.emit(event.detail);
|
|
2897
2894
|
}
|
|
2895
|
+
handleIsSyncingChange(event) {
|
|
2896
|
+
event.stopPropagation();
|
|
2897
|
+
this.isSyncingIndicatorVisible = event.detail;
|
|
2898
|
+
this.isSyncing.emit(event.detail);
|
|
2899
|
+
}
|
|
2898
2900
|
handleNotificationsChange(event) {
|
|
2899
2901
|
event.stopPropagation();
|
|
2900
2902
|
this.clearNotificationDismissAnimationTimer();
|
|
@@ -3208,40 +3210,40 @@ const KritzelEditor = class {
|
|
|
3208
3210
|
const isLoggedIn = this.isLoggedIn;
|
|
3209
3211
|
const shouldShowCurrentUser = isLoggedIn;
|
|
3210
3212
|
const shouldShowLoginButton = this.isReady && !!this.loginConfig && !isLoggedIn;
|
|
3211
|
-
return (h(Host, { key: '
|
|
3213
|
+
return (h(Host, { key: 'a24350a0c12d99ccb0d0ec3ab5975d0f1bf7f861' }, h("div", { key: 'bd7029567aeef8cba5290c2bf9937db1af113475', class: "editor-content", style: {
|
|
3212
3214
|
opacity: this.isEditorVisible ? '1' : '0',
|
|
3213
3215
|
visibility: this.isEditorVisible ? 'visible' : 'hidden',
|
|
3214
3216
|
transition: 'opacity 0.2s ease-in-out, visibility 0.2s ease-in-out',
|
|
3215
|
-
} }, h("div", { key: '
|
|
3217
|
+
} }, h("div", { key: 'f628dbd94d88c9bdb313a59d73ce86302c90e375', class: "top-left-buttons" }, h("kritzel-workspace-manager", { key: '5a82d054da31e47d3f8b5c6c403949a5fb97b9dd', visible: this.isWorkspaceManagerVisible, workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, terms: this.resolvedTerms, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-back-to-content", { key: 'a5bccef36c8a49ef2cb7ec029def1c7ba71d1c31', visible: this.isBackToContentButtonVisible, text: this.resolvedTerms['backToContent.label'] ?? 'Back to content', onBackToContent: () => this.backToContent() })), this.activeNotification && (h("div", { key: 'c5c359b199528dd7b1b64a6a32ef349037357c5a', class: "top-center-notification-layer", role: "presentation" }, h("div", { key: 'a41cd6c67c56626c2b6f0eb12193af1f80d6a254', class: { 'top-center-notification-container': true, 'is-dismissing': this.isNotificationDismissing }, role: "presentation" }, h("kritzel-notification-card", { key: 'fb49769368ddf0fc74998a96dd26dc446ff2b386', notification: this.activeNotification, locale: this.locale, onDismiss: this.dismissNotification, onHoverChange: event => this.handleNotificationHoverChange(event) })))), this.contextMenuState && this.contextMenuState.items.length > 0 && (h("kritzel-context-menu", { key: '56f38790f477d08761d7542ed3794c52f1f73815', class: "context-menu", items: this.contextMenuState.items, objects: this.contextMenuState.objects, style: {
|
|
3216
3218
|
position: 'absolute',
|
|
3217
3219
|
left: `${this.contextMenuState.position.x}px`,
|
|
3218
3220
|
top: `${this.contextMenuState.position.y}px`,
|
|
3219
3221
|
zIndex: '10002',
|
|
3220
|
-
}, onActionSelected: event => this.handleContextMenuActionSelected(event), onClose: () => this.hideContextMenu() })), h("kritzel-sync-indicator", { key: '
|
|
3222
|
+
}, onActionSelected: event => this.handleContextMenuActionSelected(event), onClose: () => this.hideContextMenu() })), h("kritzel-sync-indicator", { key: '4957b8bae0d7087d586c9d0c6da82cae905d7d08', visible: this.isSyncingIndicatorVisible, text: "Syncing..." }), h("kritzel-loading-overlay", { key: 'e2e99dc452245a2edf7a575ea5fb60aa91be20df', visible: this.isLoadingOverlayVisible, text: this.resolvedTerms['editor.loading'] ?? 'Loading...' }), h("kritzel-engine", { key: 'fcebe1cc1237c8649461f03679f9c76c05dde9c4', ref: el => {
|
|
3221
3223
|
if (el) {
|
|
3222
3224
|
this.engineRef = el;
|
|
3223
3225
|
}
|
|
3224
|
-
}, workspace: this.activeWorkspace, activeWorkspaceId: this.activeWorkspaceId, editorId: this.editorId, syncConfig: this.syncConfig, assetStorageConfig: this.assetStorageConfig, user: this.user, scaleMax: this.scaleMax, lockDrawingScale: this.lockDrawingScale, isObjectDistanceFadingActive: this.isObjectDistanceFadingActive, scaleMin: this.scaleMin, cursorTarget: this.cursorTarget, isLoading: this.isLoading, viewportBoundaryLeft: this.viewportBoundaryLeft, viewportBoundaryRight: this.viewportBoundaryRight, viewportBoundaryTop: this.viewportBoundaryTop, viewportBoundaryBottom: this.viewportBoundaryBottom, isPanningEnabled: this.isPanningEnabled, isZoomingEnabled: this.isZoomingEnabled, theme: this.theme, themes: this.themes, licenseKey: this.licenseKey, locale: this.locale, locales: this.locales, fallbackLocale: this.fallbackLocale, debugInfo: this.debugInfo, globalContextMenuItems: this.globalContextMenuItems, objectContextMenuItems: this.objectContextMenuItems, onIsEngineReady: event => this.onEngineReady(event), onWorkspacesChange: event => this.handleWorkspacesChange(event), onActiveWorkspaceChange: event => this.handleActiveWorkspaceChange(event), onObjectsChange: event => this.handleObjectsChange(event), onObjectsAdded: event => this.handleObjectsAdded(event), onObjectsRemoved: event => this.handleObjectsRemoved(event), onObjectsUpdated: event => this.handleObjectsUpdated(event), onUndoStateChange: event => this.handleUndoStateChange(event), onObjectsInViewportChange: event => this.handleObjectsInViewportChange(event), onViewportChange: event => this.handleViewportChange(event), onAwarenessChange: event => this.handleAwarenessChange(event),
|
|
3226
|
+
}, workspace: this.activeWorkspace, activeWorkspaceId: this.activeWorkspaceId, editorId: this.editorId, syncConfig: this.syncConfig, assetStorageConfig: this.assetStorageConfig, user: this.user, scaleMax: this.scaleMax, lockDrawingScale: this.lockDrawingScale, isObjectDistanceFadingActive: this.isObjectDistanceFadingActive, scaleMin: this.scaleMin, cursorTarget: this.cursorTarget, isLoading: this.isLoading, viewportBoundaryLeft: this.viewportBoundaryLeft, viewportBoundaryRight: this.viewportBoundaryRight, viewportBoundaryTop: this.viewportBoundaryTop, viewportBoundaryBottom: this.viewportBoundaryBottom, isPanningEnabled: this.isPanningEnabled, isZoomingEnabled: this.isZoomingEnabled, theme: this.theme, themes: this.themes, licenseKey: this.licenseKey, locale: this.locale, locales: this.locales, fallbackLocale: this.fallbackLocale, debugInfo: this.debugInfo, globalContextMenuItems: this.globalContextMenuItems, objectContextMenuItems: this.objectContextMenuItems, onIsEngineReady: event => this.onEngineReady(event), onWorkspacesChange: event => this.handleWorkspacesChange(event), onActiveWorkspaceChange: event => this.handleActiveWorkspaceChange(event), onObjectsChange: event => this.handleObjectsChange(event), onObjectsAdded: event => this.handleObjectsAdded(event), onObjectsRemoved: event => this.handleObjectsRemoved(event), onObjectsUpdated: event => this.handleObjectsUpdated(event), onUndoStateChange: event => this.handleUndoStateChange(event), onObjectsInViewportChange: event => this.handleObjectsInViewportChange(event), onViewportChange: event => this.handleViewportChange(event), onAwarenessChange: event => this.handleAwarenessChange(event), onIsSyncing: event => this.handleIsSyncingChange(event), onNotificationsChange: event => this.handleNotificationsChange(event), onContextMenuStateChange: event => this.handleContextMenuStateChange(event), onLoadingChange: event => (this.isLoadingOverlayVisible = event.detail) }), h("kritzel-controls", { key: '72b1a3f80bfedb3843d0d54159ad47793db69977', visible: this.isControlsVisible, class: { 'keyboard-open': this.isVirtualKeyboardOpen }, ref: el => {
|
|
3225
3227
|
if (el) {
|
|
3226
3228
|
this.controlsRef = el;
|
|
3227
3229
|
}
|
|
3228
|
-
}, controls: this.normalizedControls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), h("div", { key: '
|
|
3230
|
+
}, controls: this.normalizedControls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), h("div", { key: '1684a320f1806ae9fdfcfcff115d01f5788737e7', class: "bottom-left-buttons" }, h("kritzel-zoom-panel", { key: '8e85652ded70df043d79c9cd73b226aaefa5d6d4', visible: this.isZoomPanelVisible, disabled: !this.isZoomingEnabled, zoomPercent: this.currentZoomPercent, terms: this.resolvedTerms, onZoomIn: () => this.zoomIn(), onZoomOut: () => this.zoomOut() })), h("div", { key: 'a836056bdae11324f4ce79da4b991281c1985358', class: "top-right-buttons" }, h("kritzel-settings", { key: 'e68f4e79bc053e03dc37c18ee153758d284b0d34', ref: el => {
|
|
3229
3231
|
if (el) {
|
|
3230
3232
|
this.settingsRef = el;
|
|
3231
3233
|
}
|
|
3232
|
-
}, shortcuts: this.shortcuts, availableThemes: this.themes && this.themes.length > 0 ? this.themes.map(t => t.name) : ['light', 'dark'], availableLocales: this.availableLocaleOptions, settings: this.currentSettingsConfig, terms: this.resolvedTerms, onSettingsChange: event => this.handleSettingsChange(event) }), h("kritzel-export", { key: '
|
|
3234
|
+
}, shortcuts: this.shortcuts, availableThemes: this.themes && this.themes.length > 0 ? this.themes.map(t => t.name) : ['light', 'dark'], availableLocales: this.availableLocaleOptions, settings: this.currentSettingsConfig, terms: this.resolvedTerms, onSettingsChange: event => this.handleSettingsChange(event) }), h("kritzel-export", { key: 'f1e9ea467d11b55dbe75d8b0252fd7f5ed37a1a2', ref: el => {
|
|
3233
3235
|
if (el) {
|
|
3234
3236
|
this.exportRef = el;
|
|
3235
3237
|
}
|
|
3236
|
-
}, workspaceName: this.activeWorkspace?.name || 'workspace', terms: this.resolvedTerms, onExportPng: () => this.engineRef.exportViewportAsPng(), onExportSvg: () => this.engineRef.exportViewportAsSvg(), onExportJson: event => this.engineRef.downloadAsJson(event.detail) }), h("kritzel-active-users", { key: '
|
|
3238
|
+
}, workspaceName: this.activeWorkspace?.name || 'workspace', terms: this.resolvedTerms, onExportPng: () => this.engineRef.exportViewportAsPng(), onExportSvg: () => this.engineRef.exportViewportAsSvg(), onExportJson: event => this.engineRef.downloadAsJson(event.detail) }), h("kritzel-active-users", { key: '01bb56bd37bc22e82be5a1175f597cdf724c4834', users: this.activeUsers }), shouldShowCurrentUser && h("kritzel-current-user", { key: '5470ef356a4d6332b380e8c75f02f0fccbe861cc', user: this.user, terms: this.resolvedTerms, onClick: () => this.currentUserDialogRef?.open() }), shouldShowCurrentUser && (h("kritzel-current-user-dialog", { key: '229551b18f0443944a96f7b8e833ff1aefb001f4', ref: el => {
|
|
3237
3239
|
if (el) {
|
|
3238
3240
|
this.currentUserDialogRef = el;
|
|
3239
3241
|
}
|
|
3240
|
-
}, user: this.user, terms: this.resolvedTerms, onLogoutRequest: this.handleCurrentUserLogout })), shouldShowLoginButton && h("kritzel-button", { key: '
|
|
3242
|
+
}, user: this.user, terms: this.resolvedTerms, onLogoutRequest: this.handleCurrentUserLogout })), shouldShowLoginButton && h("kritzel-button", { key: '3d9a8ebbe62084e94348265f1f883bc80e625d9c', onButtonClick: () => this.loginDialogRef?.open() }, this.resolvedTerms['login.dialogTitle'] ?? 'Sign in'), h("kritzel-more-menu", { key: '9f7f763c330b27068bc371d98eb22a80adbf359e', items: this.resolvedMoreMenuItems, visible: this.isMoreMenuVisible, terms: this.resolvedTerms }), h("kritzel-share-dialog", { key: 'c60b860e22394a44270285dea45f02305a05c545', ref: el => {
|
|
3241
3243
|
if (el) {
|
|
3242
3244
|
this.shareDialogRef = el;
|
|
3243
3245
|
}
|
|
3244
|
-
}, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (h("kritzel-login-dialog", { key: '
|
|
3246
|
+
}, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (h("kritzel-login-dialog", { key: '84d0fab11722a7be1d5824b3284f000502277dfc', ref: el => {
|
|
3245
3247
|
if (el) {
|
|
3246
3248
|
this.loginDialogRef = el;
|
|
3247
3249
|
}
|
|
@@ -22284,13 +22286,17 @@ class KritzelObjectMap {
|
|
|
22284
22286
|
_awarenessChangeHandler = null;
|
|
22285
22287
|
_awarenessChangeCallbacks = [];
|
|
22286
22288
|
_objectsChangeCallbacks = [];
|
|
22287
|
-
_remoteChangesCallbacks = [];
|
|
22288
|
-
_docUpdateHandler = null;
|
|
22289
|
-
_remoteOrigins = new Set();
|
|
22290
|
-
_appliedRemoteChanges = false;
|
|
22291
22289
|
_lastAwarenessEmitTime = 0;
|
|
22292
22290
|
_awarenessEmitTimeout = null;
|
|
22293
22291
|
AWARENESS_THROTTLE_INTERVAL = 100; // milliseconds
|
|
22292
|
+
// Identities of the raw network-provider instances (e.g. WebsocketProvider, HocuspocusProvider)
|
|
22293
|
+
// that Yjs tags as transaction origin for remote updates; local providers (IndexedDB,
|
|
22294
|
+
// BroadcastChannel) never appear here, so their transactions never toggle isSyncing.
|
|
22295
|
+
_networkTransactionOrigins = new Set();
|
|
22296
|
+
_isSyncing = false;
|
|
22297
|
+
_syncingChangeCallbacks = [];
|
|
22298
|
+
_beforeTransactionHandler = null;
|
|
22299
|
+
_afterAllTransactionsHandler = null;
|
|
22294
22300
|
/**
|
|
22295
22301
|
* When true, update() only modifies local state (quadtree + idMap)
|
|
22296
22302
|
* without writing to Yjs. Used during drag operations to avoid
|
|
@@ -22311,44 +22317,12 @@ class KritzelObjectMap {
|
|
|
22311
22317
|
return this._isReady;
|
|
22312
22318
|
}
|
|
22313
22319
|
/**
|
|
22314
|
-
* Promise that settles when network providers finish connecting
|
|
22315
|
-
*
|
|
22320
|
+
* Promise that settles when network providers finish connecting.
|
|
22321
|
+
* Resolves immediately if no network providers. Awaited by the loading overlay.
|
|
22316
22322
|
*/
|
|
22317
22323
|
whenNetworkSynced() {
|
|
22318
22324
|
return this._networkSyncPromise ?? Promise.resolve();
|
|
22319
22325
|
}
|
|
22320
|
-
/**
|
|
22321
|
-
* Whether any configured provider synchronizes over the network.
|
|
22322
|
-
*/
|
|
22323
|
-
get hasNetworkSyncProvider() {
|
|
22324
|
-
return this._providers.some(provider => provider.type === 'network');
|
|
22325
|
-
}
|
|
22326
|
-
/**
|
|
22327
|
-
* Whether remote-originated changes can be told apart from local writes.
|
|
22328
|
-
* Requires every network provider to expose its Yjs update origin.
|
|
22329
|
-
*/
|
|
22330
|
-
get supportsRemoteChangeDetection() {
|
|
22331
|
-
const networkProviders = this._providers.filter(provider => provider.type === 'network');
|
|
22332
|
-
return networkProviders.length > 0 && networkProviders.every(provider => provider.updateOrigin !== undefined);
|
|
22333
|
-
}
|
|
22334
|
-
/**
|
|
22335
|
-
* Whether at least one update originating from a network provider has been
|
|
22336
|
-
* applied to this document. Stays `false` when the remote held no data the
|
|
22337
|
-
* local document was missing, because Yjs suppresses empty updates.
|
|
22338
|
-
*/
|
|
22339
|
-
get hasAppliedRemoteChanges() {
|
|
22340
|
-
return this._appliedRemoteChanges;
|
|
22341
|
-
}
|
|
22342
|
-
/**
|
|
22343
|
-
* Registers a callback invoked whenever a network provider applies changes to this document.
|
|
22344
|
-
* @returns A function that unregisters the callback.
|
|
22345
|
-
*/
|
|
22346
|
-
onRemoteChangesApplied(callback) {
|
|
22347
|
-
this._remoteChangesCallbacks.push(callback);
|
|
22348
|
-
return () => {
|
|
22349
|
-
this._remoteChangesCallbacks = this._remoteChangesCallbacks.filter(registered => registered !== callback);
|
|
22350
|
-
};
|
|
22351
|
-
}
|
|
22352
22326
|
/**
|
|
22353
22327
|
* Returns the Yjs Awareness instance, if a network provider is available.
|
|
22354
22328
|
*/
|
|
@@ -22498,6 +22472,22 @@ class KritzelObjectMap {
|
|
|
22498
22472
|
this._objectsChangeCallbacks = this._objectsChangeCallbacks.filter(existingCallback => existingCallback !== callback);
|
|
22499
22473
|
};
|
|
22500
22474
|
}
|
|
22475
|
+
/**
|
|
22476
|
+
* Whether the local copy currently differs from data a remote peer is in the process of merging in.
|
|
22477
|
+
*/
|
|
22478
|
+
get isSyncing() {
|
|
22479
|
+
return this._isSyncing;
|
|
22480
|
+
}
|
|
22481
|
+
/**
|
|
22482
|
+
* Registers a callback invoked when a remote sync starts (`true`) or finishes (`false`).
|
|
22483
|
+
* "Starts" fires from `beforeTransaction`, before the incoming remote update is merged.
|
|
22484
|
+
*/
|
|
22485
|
+
onSyncingChange(callback) {
|
|
22486
|
+
this._syncingChangeCallbacks.push(callback);
|
|
22487
|
+
return () => {
|
|
22488
|
+
this._syncingChangeCallbacks = this._syncingChangeCallbacks.filter(existingCallback => existingCallback !== callback);
|
|
22489
|
+
};
|
|
22490
|
+
}
|
|
22501
22491
|
/**
|
|
22502
22492
|
* Returns the Yjs UndoManager instance for managing undo/redo operations.
|
|
22503
22493
|
* @returns The UndoManager instance, or `null` if not initialized
|
|
@@ -22591,22 +22581,36 @@ class KritzelObjectMap {
|
|
|
22591
22581
|
const providerList = this._providers.map(p => `${p.constructor.name} (${p.type})`).join(', ');
|
|
22592
22582
|
console.info(`[Kritzel] Workspace sync providers initialized for ${docName}: ${providerList || 'none'}`);
|
|
22593
22583
|
}
|
|
22594
|
-
//
|
|
22595
|
-
|
|
22596
|
-
|
|
22597
|
-
|
|
22584
|
+
// Only network providers (WebSocket, Hocuspocus) represent a genuine remote peer;
|
|
22585
|
+
// local providers (IndexedDB, BroadcastChannel) never appear as a transaction origin here,
|
|
22586
|
+
// so loading from IndexedDB or a same-device tab never toggles isSyncing.
|
|
22587
|
+
this._networkTransactionOrigins = new Set(this._providers
|
|
22588
|
+
.filter(p => p.type === 'network')
|
|
22589
|
+
.map(p => p.rawProvider)
|
|
22590
|
+
.filter((origin) => origin != null));
|
|
22591
|
+
// Fires before a remote-origin transaction integrates its update, so this always
|
|
22592
|
+
// precedes any local/remote reconciliation for that update.
|
|
22593
|
+
this._beforeTransactionHandler = transaction => {
|
|
22594
|
+
if (this._isSyncing || !this._networkTransactionOrigins.has(transaction.origin)) {
|
|
22595
|
+
return;
|
|
22598
22596
|
}
|
|
22599
|
-
|
|
22600
|
-
|
|
22601
|
-
|
|
22597
|
+
this._isSyncing = true;
|
|
22598
|
+
this._syncingChangeCallbacks.forEach(callback => callback(true));
|
|
22599
|
+
};
|
|
22600
|
+
// Fires once a batch of transactions (possibly several remote updates) has fully settled.
|
|
22601
|
+
this._afterAllTransactionsHandler = (_doc, transactions) => {
|
|
22602
|
+
if (!this._isSyncing) {
|
|
22602
22603
|
return;
|
|
22603
22604
|
}
|
|
22604
|
-
|
|
22605
|
-
|
|
22606
|
-
|
|
22605
|
+
const hadRemoteTransaction = transactions.some(transaction => this._networkTransactionOrigins.has(transaction.origin));
|
|
22606
|
+
if (!hadRemoteTransaction) {
|
|
22607
|
+
return;
|
|
22607
22608
|
}
|
|
22609
|
+
this._isSyncing = false;
|
|
22610
|
+
this._syncingChangeCallbacks.forEach(callback => callback(false));
|
|
22608
22611
|
};
|
|
22609
|
-
this._ydoc.on('
|
|
22612
|
+
this._ydoc.on('beforeTransaction', this._beforeTransactionHandler);
|
|
22613
|
+
this._ydoc.on('afterAllTransactions', this._afterAllTransactionsHandler);
|
|
22610
22614
|
// captureTimeout is effectively infinite — undo-step boundaries are
|
|
22611
22615
|
// marked explicitly via markUndoBoundary() in insert/remove/reset and
|
|
22612
22616
|
// at stroke/gesture boundaries in the tools. This prevents a single
|
|
@@ -22660,15 +22664,12 @@ class KritzelObjectMap {
|
|
|
22660
22664
|
if (showSyncProviderInfo && networkProviders.length > 0) {
|
|
22661
22665
|
console.info(`[Kritzel] Workspace network providers connecting in background: ${networkProviders.length}`);
|
|
22662
22666
|
}
|
|
22663
|
-
const networkConnectPromises = networkProviders.map(provider => provider
|
|
22664
|
-
.connect()
|
|
22665
|
-
.then(() => provider.whenSynced?.())
|
|
22666
|
-
.catch(err => {
|
|
22667
|
+
const networkConnectPromises = networkProviders.map(provider => provider.connect().catch(err => {
|
|
22667
22668
|
if (showSyncProviderInfo) {
|
|
22668
22669
|
console.error(`[Kritzel] Network sync provider "${provider.constructor.name}" failed to connect:`, err);
|
|
22669
22670
|
}
|
|
22670
22671
|
}));
|
|
22671
|
-
//
|
|
22672
|
+
// Network sync awaited by loading overlay to show remote workspace hydration
|
|
22672
22673
|
this._networkSyncPromise = networkConnectPromises.length > 0 ? Promise.allSettled(networkConnectPromises).then(() => undefined) : null;
|
|
22673
22674
|
this._isReady = true;
|
|
22674
22675
|
// Find the first provider that exposes awareness (network providers)
|
|
@@ -23326,13 +23327,6 @@ class KritzelObjectMap {
|
|
|
23326
23327
|
this._objectsMap.unobserve(this._objectsObserver);
|
|
23327
23328
|
this._objectsObserver = null;
|
|
23328
23329
|
}
|
|
23329
|
-
if (this._ydoc && this._docUpdateHandler) {
|
|
23330
|
-
this._ydoc.off('update', this._docUpdateHandler);
|
|
23331
|
-
}
|
|
23332
|
-
this._docUpdateHandler = null;
|
|
23333
|
-
this._remoteOrigins.clear();
|
|
23334
|
-
this._remoteChangesCallbacks = [];
|
|
23335
|
-
this._appliedRemoteChanges = false;
|
|
23336
23330
|
// Remove undo manager event listeners
|
|
23337
23331
|
if (this._undoManager) {
|
|
23338
23332
|
if (this._stackItemAddedHandler) {
|
|
@@ -23365,11 +23359,20 @@ class KritzelObjectMap {
|
|
|
23365
23359
|
p.destroy();
|
|
23366
23360
|
});
|
|
23367
23361
|
this._providers = [];
|
|
23362
|
+
this._networkTransactionOrigins = new Set();
|
|
23368
23363
|
// Clear object map references
|
|
23369
23364
|
this._objectsMap = null;
|
|
23370
23365
|
this._metadataMap = null;
|
|
23371
23366
|
// Destroy Y.Doc
|
|
23372
23367
|
if (this._ydoc) {
|
|
23368
|
+
if (this._beforeTransactionHandler) {
|
|
23369
|
+
this._ydoc.off('beforeTransaction', this._beforeTransactionHandler);
|
|
23370
|
+
this._beforeTransactionHandler = null;
|
|
23371
|
+
}
|
|
23372
|
+
if (this._afterAllTransactionsHandler) {
|
|
23373
|
+
this._ydoc.off('afterAllTransactions', this._afterAllTransactionsHandler);
|
|
23374
|
+
this._afterAllTransactionsHandler = null;
|
|
23375
|
+
}
|
|
23373
23376
|
this._ydoc.destroy();
|
|
23374
23377
|
this._ydoc = null;
|
|
23375
23378
|
}
|
|
@@ -23379,6 +23382,8 @@ class KritzelObjectMap {
|
|
|
23379
23382
|
this._workspaceId = null;
|
|
23380
23383
|
this._isReady = false;
|
|
23381
23384
|
this._temporaryItemsCount = 0;
|
|
23385
|
+
this._isSyncing = false;
|
|
23386
|
+
this._syncingChangeCallbacks = [];
|
|
23382
23387
|
}
|
|
23383
23388
|
}
|
|
23384
23389
|
|
|
@@ -23828,10 +23833,7 @@ class KritzelAppStateMap {
|
|
|
23828
23833
|
if (showSyncProviderInfo && networkProviders.length > 0) {
|
|
23829
23834
|
console.info(`[Kritzel] App-state network providers connecting in background: ${networkProviders.length}`);
|
|
23830
23835
|
}
|
|
23831
|
-
const networkConnectPromises = networkProviders.map(provider => provider
|
|
23832
|
-
.connect()
|
|
23833
|
-
.then(() => provider.whenSynced?.())
|
|
23834
|
-
.catch(err => {
|
|
23836
|
+
const networkConnectPromises = networkProviders.map(provider => provider.connect().catch(err => {
|
|
23835
23837
|
if (showSyncProviderInfo) {
|
|
23836
23838
|
console.error(`[Kritzel] Network sync provider "${provider.constructor.name}" failed to connect:`, err);
|
|
23837
23839
|
}
|
|
@@ -25232,6 +25234,10 @@ class KritzelCore {
|
|
|
25232
25234
|
objectsMap.onAwarenessChange(states => {
|
|
25233
25235
|
this.engine.emitAwarenessChange(states);
|
|
25234
25236
|
});
|
|
25237
|
+
// Forward remote sync start/finish to the engine as events
|
|
25238
|
+
objectsMap.onSyncingChange(isSyncing => {
|
|
25239
|
+
this.engine.emitIsSyncing(isSyncing);
|
|
25240
|
+
});
|
|
25235
25241
|
// Rebuild anchor index after loading objects
|
|
25236
25242
|
this._anchorManager.rebuildIndex();
|
|
25237
25243
|
this.engine.emitObjectsChange();
|
|
@@ -27929,16 +27935,15 @@ const KritzelEngine = class {
|
|
|
27929
27935
|
viewportChange;
|
|
27930
27936
|
/** Emitted when the awareness state changes (remote user cursors, presence). */
|
|
27931
27937
|
awarenessChange;
|
|
27938
|
+
/** Emitted when a remote sync starts (`true`, data differs from the local copy) or finishes (`false`). */
|
|
27939
|
+
isSyncing;
|
|
27932
27940
|
/** Emitted when notifications change. */
|
|
27933
27941
|
notificationsChange;
|
|
27934
27942
|
/** Emitted when context-menu visibility, items, or position changes. */
|
|
27935
27943
|
contextMenuStateChange;
|
|
27936
27944
|
/** Emitted when the combined loading state (external `isLoading` prop or internal workspace loading) changes. */
|
|
27937
27945
|
loadingChange;
|
|
27938
|
-
/** Emitted while remote changes are being applied to the active workspace. Stays silent when the remote holds nothing new. */
|
|
27939
|
-
syncingChange;
|
|
27940
27946
|
forceUpdate = 0;
|
|
27941
|
-
isSyncing = false;
|
|
27942
27947
|
/** Manually triggers the `objectsSelectionChange` event. */
|
|
27943
27948
|
async triggerSelectionChange() {
|
|
27944
27949
|
this.objectsSelectionChange.emit();
|
|
@@ -29522,7 +29527,6 @@ const KritzelEngine = class {
|
|
|
29522
29527
|
_sceneBootstrapOpacity = 1;
|
|
29523
29528
|
_sceneBootstrapTransitionEnabled = false;
|
|
29524
29529
|
_sceneBootstrapTransitionTimer = null;
|
|
29525
|
-
_remoteChangesUnsubscribe = null;
|
|
29526
29530
|
_defaultUndoState = {
|
|
29527
29531
|
canUndo: false,
|
|
29528
29532
|
canRedo: false,
|
|
@@ -29539,17 +29543,6 @@ const KritzelEngine = class {
|
|
|
29539
29543
|
this.core.store.state.isLoading = this._isWorkspaceLoading || this.isLoading;
|
|
29540
29544
|
this.loadingChange.emit(this.core.store.state.isLoading);
|
|
29541
29545
|
}
|
|
29542
|
-
syncSyncingState(isSyncing) {
|
|
29543
|
-
if (this.isSyncing === isSyncing) {
|
|
29544
|
-
return;
|
|
29545
|
-
}
|
|
29546
|
-
this.isSyncing = isSyncing;
|
|
29547
|
-
this.syncingChange.emit(isSyncing);
|
|
29548
|
-
}
|
|
29549
|
-
clearRemoteChangesSubscription() {
|
|
29550
|
-
this._remoteChangesUnsubscribe?.();
|
|
29551
|
-
this._remoteChangesUnsubscribe = null;
|
|
29552
|
-
}
|
|
29553
29546
|
isNetworkAvailable() {
|
|
29554
29547
|
return typeof navigator !== 'undefined' && navigator.onLine;
|
|
29555
29548
|
}
|
|
@@ -29652,16 +29645,15 @@ const KritzelEngine = class {
|
|
|
29652
29645
|
this.objectsInViewportChange = createEvent(this, "objectsInViewportChange");
|
|
29653
29646
|
this.viewportChange = createEvent(this, "viewportChange");
|
|
29654
29647
|
this.awarenessChange = createEvent(this, "awarenessChange");
|
|
29648
|
+
this.isSyncing = createEvent(this, "isSyncing");
|
|
29655
29649
|
this.notificationsChange = createEvent(this, "notificationsChange");
|
|
29656
29650
|
this.contextMenuStateChange = createEvent(this, "contextMenuStateChange");
|
|
29657
29651
|
this.loadingChange = createEvent(this, "loadingChange");
|
|
29658
|
-
this.syncingChange = createEvent(this, "syncingChange");
|
|
29659
29652
|
this.core = new KritzelCore(this);
|
|
29660
29653
|
}
|
|
29661
29654
|
disconnectedCallback() {
|
|
29662
29655
|
this.throttledPointerMoveMulti.cancel();
|
|
29663
29656
|
this._revealedImageKeys.clear();
|
|
29664
|
-
this.clearRemoteChangesSubscription();
|
|
29665
29657
|
if (this._sceneBootstrapTransitionTimer !== null) {
|
|
29666
29658
|
clearTimeout(this._sceneBootstrapTransitionTimer);
|
|
29667
29659
|
this._sceneBootstrapTransitionTimer = null;
|
|
@@ -29916,7 +29908,6 @@ const KritzelEngine = class {
|
|
|
29916
29908
|
this._workspaceInitializationTargetKey = targetKey;
|
|
29917
29909
|
try {
|
|
29918
29910
|
await initializationPromise;
|
|
29919
|
-
this.trackRemoteSynchronization();
|
|
29920
29911
|
}
|
|
29921
29912
|
finally {
|
|
29922
29913
|
// Only the most recent init clears loading state to prevent race conditions
|
|
@@ -29928,45 +29919,6 @@ const KritzelEngine = class {
|
|
|
29928
29919
|
}
|
|
29929
29920
|
}
|
|
29930
29921
|
}
|
|
29931
|
-
/**
|
|
29932
|
-
* Reports syncing only while remote data is actually being reconciled into the
|
|
29933
|
-
* active workspace. Yjs suppresses updates that carry nothing new, so a workspace
|
|
29934
|
-
* that already matches the remote never reports syncing at all.
|
|
29935
|
-
*/
|
|
29936
|
-
trackRemoteSynchronization() {
|
|
29937
|
-
this.clearRemoteChangesSubscription();
|
|
29938
|
-
this.syncSyncingState(false);
|
|
29939
|
-
const initializedObjects = this.core.store.objects;
|
|
29940
|
-
if (!initializedObjects?.hasNetworkSyncProvider || !this.isNetworkAvailable()) {
|
|
29941
|
-
return;
|
|
29942
|
-
}
|
|
29943
|
-
if (initializedObjects.supportsRemoteChangeDetection) {
|
|
29944
|
-
this._remoteChangesUnsubscribe = initializedObjects.onRemoteChangesApplied(() => {
|
|
29945
|
-
if (this.core.store.objects !== initializedObjects) {
|
|
29946
|
-
return;
|
|
29947
|
-
}
|
|
29948
|
-
this.syncSyncingState(true);
|
|
29949
|
-
});
|
|
29950
|
-
// The network provider may have already applied remote changes between
|
|
29951
|
-
// object-map initialization and this subscription (e.g. an already-connected
|
|
29952
|
-
// shared socket resolves the sync handshake almost immediately). Without this
|
|
29953
|
-
// check that update is missed entirely and the indicator never appears.
|
|
29954
|
-
if (initializedObjects.hasAppliedRemoteChanges) {
|
|
29955
|
-
this.syncSyncingState(true);
|
|
29956
|
-
}
|
|
29957
|
-
}
|
|
29958
|
-
else {
|
|
29959
|
-
// Custom providers without an update origin cannot be diffed, so fall back to reporting the whole handshake.
|
|
29960
|
-
this.syncSyncingState(true);
|
|
29961
|
-
}
|
|
29962
|
-
void initializedObjects.whenNetworkSynced().finally(() => {
|
|
29963
|
-
if (this.core.store.objects !== initializedObjects) {
|
|
29964
|
-
return;
|
|
29965
|
-
}
|
|
29966
|
-
this.clearRemoteChangesSubscription();
|
|
29967
|
-
this.syncSyncingState(false);
|
|
29968
|
-
});
|
|
29969
|
-
}
|
|
29970
29922
|
emitObjectsChange() {
|
|
29971
29923
|
const objectsMap = this.core.store.objects;
|
|
29972
29924
|
if (!objectsMap) {
|
|
@@ -30000,6 +29952,9 @@ const KritzelEngine = class {
|
|
|
30000
29952
|
emitAwarenessChange(states) {
|
|
30001
29953
|
this.awarenessChange.emit(states);
|
|
30002
29954
|
}
|
|
29955
|
+
emitIsSyncing(isSyncing) {
|
|
29956
|
+
this.isSyncing.emit(isSyncing);
|
|
29957
|
+
}
|
|
30003
29958
|
emitObjectsInViewportChange() {
|
|
30004
29959
|
const visibleObjects = this.core.store.objectsInViewport;
|
|
30005
29960
|
this.objectsInViewportChange.emit(visibleObjects);
|
|
@@ -32111,7 +32066,7 @@ const KritzelPortal = class {
|
|
|
32111
32066
|
* This file is auto-generated by the version bump scripts.
|
|
32112
32067
|
* Do not modify manually.
|
|
32113
32068
|
*/
|
|
32114
|
-
const KRITZEL_VERSION = '0.4.
|
|
32069
|
+
const KRITZEL_VERSION = '0.4.25';
|
|
32115
32070
|
|
|
32116
32071
|
const kritzelSettingsCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-body-padding:0;--kritzel-dialog-width-large:800px;--kritzel-dialog-height-large:500px}.footer-button{padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.cancel-button{border:1px solid #ebebeb;background:#fff;color:inherit}.cancel-button:hover{background:#f5f5f5}.settings-tab-panel{display:none}.settings-tab-panel.is-active{display:block}.settings-content{padding:0}.settings-content h3{margin:0 0 16px 0;font-size:18px;font-weight:600;color:var(--kritzel-settings-content-heading-color, #333333)}.settings-content p{margin:0;font-size:14px;color:var(--kritzel-settings-content-text-color, #666666);line-height:1.5}.settings-group{display:flex;flex-direction:column;gap:24px}.settings-item{display:flex;flex-direction:column;gap:8px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.settings-label{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}.shortcuts-list{display:flex;flex-direction:column;gap:24px}.shortcuts-category{display:flex;flex-direction:column;gap:8px}.shortcuts-category-title{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.shortcuts-group{display:flex;flex-direction:column;gap:4px}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-item-bg, rgba(0, 0, 0, 0.02))}.shortcut-label{font-size:14px;color:var(--kritzel-settings-content-text-color, #666666)}.shortcut-key{font-family:monospace;font-size:12px;padding:2px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-key-bg, #f0f0f0);color:var(--kritzel-settings-shortcut-key-color, #333333);border:1px solid var(--kritzel-settings-shortcut-key-border, #ddd)}`;
|
|
32117
32072
|
|
package/dist/esm/loader.js
CHANGED
|
@@ -5,7 +5,7 @@ import { g as globalScripts } from './app-globals-DQuL1Twl.js';
|
|
|
5
5
|
const defineCustomElements = async (win, options) => {
|
|
6
6
|
if (typeof window === 'undefined') return undefined;
|
|
7
7
|
await globalScripts();
|
|
8
|
-
return bootstrapLazy(JSON.parse("[[\"kritzel-active-users_47\",[[512,\"kritzel-editor\",{\"scaleMax\":[1026,\"scale-max\"],\"scaleMin\":[1026,\"scale-min\"],\"lockDrawingScale\":[1028,\"lock-drawing-scale\"],\"viewportBoundaryLeft\":[1026,\"viewport-boundary-left\"],\"viewportBoundaryRight\":[1026,\"viewport-boundary-right\"],\"viewportBoundaryTop\":[1026,\"viewport-boundary-top\"],\"viewportBoundaryBottom\":[1026,\"viewport-boundary-bottom\"],\"debugInfo\":[1040],\"user\":[16],\"activeUsers\":[16],\"controls\":[16],\"globalContextMenuItems\":[16],\"objectContextMenuItems\":[16],\"moreMenuItems\":[16],\"themes\":[16],\"theme\":[1025],\"licenseKey\":[1,\"license-key\"],\"locale\":[1025],\"locales\":[16],\"fallbackLocale\":[1,\"fallback-locale\"],\"customSvgIcons\":[16],\"customFonts\":[16],\"isPanningEnabled\":[1028,\"is-panning-enabled\"],\"isZoomingEnabled\":[1028,\"is-zooming-enabled\"],\"isControlsVisible\":[4,\"is-controls-visible\"],\"isUtilityPanelVisible\":[4,\"is-utility-panel-visible\"],\"isWorkspaceManagerVisible\":[4,\"is-workspace-manager-visible\"],\"isMoreMenuVisible\":[4,\"is-more-menu-visible\"],\"isZoomPanelVisible\":[4,\"is-zoom-panel-visible\"],\"isObjectDistanceFadingActive\":[4,\"is-object-distance-fading-active\"],\"syncConfig\":[16],\"assetStorageConfig\":[16],\"cursorTarget\":[16],\"loginConfig\":[16],\"isLoading\":[4,\"is-loading\"],\"editorId\":[1,\"editor-id\"],\"activeWorkspaceId\":[1,\"active-workspace-id\"],\"isEngineReady\":[32],\"isControlsReady\":[32],\"isWorkspaceManagerReady\":[32],\"workspaces\":[32],\"activeWorkspace\":[32],\"isVirtualKeyboardOpen\":[32],\"undoState\":[32],\"isBackToContentButtonVisible\":[32],\"resolvedTerms\":[32],\"availableLocaleOptions\":[32],\"currentZoomPercent\":[32],\"shortcuts\":[32],\"currentIsPublic\":[32],\"isEditorVisible\":[32],\"activeNotification\":[32],\"isNotificationDismissing\":[32],\"contextMenuState\":[32],\"normalizedControls\":[32],\"resolvedMoreMenuItems\":[32],\"isSyncing\":[32],\"isLoadingOverlayVisible\":[32],\"getObjectById\":[64],\"addObject\":[64],\"addObjects\":[64],\"updateObject\":[64],\"removeObject\":[64],\"removeObjects\":[64],\"getSelectedObjects\":[64],\"selectObjects\":[64],\"selectAllObjectsInViewport\":[64],\"clearSelection\":[64],\"centerObjectInViewport\":[64],\"panToObject\":[64],\"backToContent\":[64],\"centerAllObjects\":[64],\"centerObjects\":[64],\"setViewport\":[64],\"panTo\":[64],\"zoomTo\":[64],\"zoomIn\":[64],\"zoomOut\":[64],\"getViewport\":[64],\"screenToWorld\":[64],\"worldToScreen\":[64],\"createWorkspace\":[64],\"updateWorkspace\":[64],\"deleteWorkspace\":[64],\"getWorkspaces\":[64],\"getActiveWorkspace\":[64],\"loadSharedWorkspace\":[64],\"reinitSync\":[64],\"registerTool\":[64],\"changeActiveTool\":[64],\"changeActiveToolByName\":[64],\"disable\":[64],\"enable\":[64],\"copy\":[64],\"cut\":[64],\"paste\":[64],\"delete\":[64],\"bringForward\":[64],\"sendBackward\":[64],\"bringToFront\":[64],\"sendToBack\":[64],\"alignObjects\":[64],\"group\":[64],\"ungroup\":[64],\"undo\":[64],\"redo\":[64],\"getScreenshot\":[64],\"exportViewportAsPng\":[64],\"exportViewportAsSvg\":[64],\"getSelectedObjectSupportedExportFormats\":[64],\"canExportSelectedObjectAs\":[64],\"exportSelectedObject\":[64],\"downloadAsJson\":[64],\"importFromFile\":[64],\"loadObjectsFromJson\":[64],\"getObjectsTotalCount\":[64],\"getAllObjects\":[64],\"findObjects\":[64],\"getObjectsInViewport\":[64],\"hideContextMenu\":[64],\"openContextMenu\":[64],\"triggerSelectionChange\":[64],\"beginSceneBootstrap\":[64],\"endSceneBootstrap\":[64],\"getDisplayableShortcuts\":[64],\"triggerNotification\":[64],\"openLoginDialog\":[64],\"setLoginLoading\":[64],\"setLocale\":[64],\"getLocale\":[64],\"getAvailableLocales\":[64],\"registerLocales\":[64],\"registerFonts\":[64],\"t\":[64]},[[0,\"dblclick\",\"onTouchStart\"]],{\"isEngineReady\":[{\"onIsEngineReady\":0}],\"isControlsReady\":[{\"onIsControlsReady\":0}],\"workspaces\":[{\"onWorkspacesChange\":0}],\"activeWorkspace\":[{\"onActiveWorkspaceChange\":0}],\"customFonts\":[{\"onCustomFontsChange\":0}],\"controls\":[{\"onControlsChange\":0}],\"moreMenuItems\":[{\"onMoreMenuItemsChange\":0}],\"syncConfig\":[{\"onSyncConfigChange\":0}],\"loginConfig\":[{\"onLoginConfigChange\":0}],\"user\":[{\"onUserChange\":0}],\"activeWorkspaceId\":[{\"onActiveWorkspaceIdChange\":0}],\"theme\":[{\"onCurrentThemeChange\":0}],\"themes\":[{\"onThemesChange\":0}],\"locale\":[{\"onLocaleChange\":0}]}],[513,\"kritzel-controls\",{\"visible\":[4],\"controls\":[16],\"activeControl\":[1040],\"isUtilityPanelVisible\":[4,\"is-utility-panel-visible\"],\"undoState\":[16],\"theme\":[1],\"terms\":[16],\"firstConfig\":[32],\"isTouchDevice\":[32],\"selectedSubOptions\":[32],\"canScrollLeft\":[32],\"canScrollRight\":[32],\"needsScrolling\":[32],\"displayValues\":[32],\"internalControls\":[32],\"closeTooltip\":[64]},[[8,\"keydown\",\"handleKeyDown\"]],{\"controls\":[{\"onControlsChange\":0}],\"theme\":[{\"onThemeChange\":0}]}],[513,\"kritzel-settings\",{\"availableThemes\":[16],\"availableLocales\":[16],\"shortcuts\":[16],\"terms\":[16],\"settings\":[16],\"isDialogOpen\":[32],\"selectedCategoryId\":[32],\"scaleMin\":[32],\"scaleMax\":[32],\"lockDrawingScale\":[32],\"theme\":[32],\"locale\":[32],\"viewportBoundaryLeft\":[32],\"viewportBoundaryRight\":[32],\"viewportBoundaryTop\":[32],\"viewportBoundaryBottom\":[32],\"debugInfo\":[32],\"open\":[64]},null,{\"settings\":[{\"onSettingsPropChange\":0}]}],[513,\"kritzel-export\",{\"workspaceName\":[1,\"workspace-name\"],\"terms\":[16],\"isDialogOpen\":[32],\"previewUrl\":[32],\"isLoading\":[32],\"activeTab\":[32],\"exportFilename\":[32],\"viewportExportFormat\":[32],\"open\":[64]}],[513,\"kritzel-workspace-manager\",{\"visible\":[4],\"activeWorkspace\":[1040],\"workspaces\":[16],\"terms\":[16],\"childMenuAnchor\":[32],\"openChildMenuItem\":[32],\"newWorkspace\":[32],\"editingItemId\":[32]},[[8,\"wheel\",\"handleWheel\"]]],[513,\"kritzel-engine\",{\"workspace\":[16],\"editorId\":[1,\"editor-id\"],\"activeWorkspaceId\":[1,\"active-workspace-id\"],\"syncConfig\":[16],\"assetStorageConfig\":[16],\"user\":[16],\"globalContextMenuItems\":[16],\"objectContextMenuItems\":[16],\"scaleMax\":[1026,\"scale-max\"],\"scaleMin\":[1026,\"scale-min\"],\"cursorTarget\":[16],\"lockDrawingScale\":[4,\"lock-drawing-scale\"],\"isObjectDistanceFadingActive\":[4,\"is-object-distance-fading-active\"],\"theme\":[1],\"licenseKey\":[1,\"license-key\"],\"themes\":[16],\"locale\":[1],\"locales\":[16],\"fallbackLocale\":[1,\"fallback-locale\"],\"viewportBoundaryLeft\":[2,\"viewport-boundary-left\"],\"viewportBoundaryRight\":[2,\"viewport-boundary-right\"],\"viewportBoundaryTop\":[2,\"viewport-boundary-top\"],\"viewportBoundaryBottom\":[2,\"viewport-boundary-bottom\"],\"debugInfo\":[16],\"isPanningEnabled\":[4,\"is-panning-enabled\"],\"isZoomingEnabled\":[4,\"is-zooming-enabled\"],\"isLoading\":[4,\"is-loading\"],\"forceUpdate\":[32],\"isSyncing\":[32],\"triggerSelectionChange\":[64],\"beginSceneBootstrap\":[64],\"endSceneBootstrap\":[64],\"registerTool\":[64],\"changeActiveTool\":[64],\"changeActiveToolByName\":[64],\"disable\":[64],\"enable\":[64],\"delete\":[64],\"copy\":[64],\"cut\":[64],\"paste\":[64],\"bringForward\":[64],\"sendBackward\":[64],\"bringToFront\":[64],\"sendToBack\":[64],\"alignObjects\":[64],\"group\":[64],\"ungroup\":[64],\"undo\":[64],\"redo\":[64],\"hideContextMenu\":[64],\"openContextMenu\":[64],\"getObjectById\":[64],\"getAllObjects\":[64],\"findObjects\":[64],\"getObjectsTotalCount\":[64],\"addObject\":[64],\"addObjects\":[64],\"updateObject\":[64],\"removeObject\":[64],\"removeObjects\":[64],\"getSelectedObjects\":[64],\"getDisplayableShortcuts\":[64],\"selectObjects\":[64],\"selectAllObjectsInViewport\":[64],\"clearSelection\":[64],\"centerObjectInViewport\":[64],\"panToObject\":[64],\"backToContent\":[64],\"centerAllObjects\":[64],\"centerObjects\":[64],\"setViewport\":[64],\"panTo\":[64],\"zoomTo\":[64],\"zoomIn\":[64],\"zoomOut\":[64],\"getViewport\":[64],\"screenToWorld\":[64],\"worldToScreen\":[64],\"getObjectsInViewport\":[64],\"getScreenshot\":[64],\"exportViewportAsPng\":[64],\"exportViewportAsSvg\":[64],\"getSelectedObjectSupportedExportFormats\":[64],\"canExportSelectedObjectAs\":[64],\"exportSelectedObject\":[64],\"exportAsJson\":[64],\"importFromJson\":[64],\"loadObjectsFromJson\":[64],\"downloadAsJson\":[64],\"importFromFile\":[64],\"createWorkspace\":[64],\"updateWorkspace\":[64],\"deleteWorkspace\":[64],\"getWorkspaces\":[64],\"getActiveWorkspace\":[64],\"getIsPublic\":[64],\"loadSharedWorkspace\":[64],\"reinitSync\":[64],\"saveSettings\":[64],\"loadSettings\":[64],\"registerLocales\":[64],\"setLocale\":[64],\"getLocale\":[64],\"getAvailableLocales\":[64],\"getAvailableLocaleOptions\":[64],\"t\":[64],\"getResolvedTerms\":[64]},[[1,\"wheel\",\"handleWheel\"],[0,\"pointerdown\",\"handlePointerDown\"],[0,\"pointermove\",\"handlePointerMove\"],[0,\"pointerup\",\"handlePointerUp\"],[0,\"pointercancel\",\"handlePointerCancel\"],[1,\"pointerleave\",\"handlePointerLeave\"],[1,\"longpress\",\"handleLongPress\"],[0,\"contextmenu\",\"handleContextMenu\"],[9,\"resize\",\"handleResize\"],[8,\"keydown\",\"handleKeyDown\"],[8,\"keyup\",\"handleKeyUp\"],[8,\"copy\",\"handleCopy\"],[8,\"cut\",\"handleCut\"],[8,\"paste\",\"handlePaste\"],[4,\"dblclick\",\"preventDoubleTapZoomOnTouchDevices\"]],{\"workspace\":[{\"onWorkspaceChange\":0}],\"activeWorkspaceId\":[{\"onActiveWorkspaceIdChange\":0}],\"syncConfig\":[{\"onSyncConfigChange\":0}],\"assetStorageConfig\":[{\"onAssetStorageConfigChange\":0}],\"user\":[{\"onUserChange\":0}],\"globalContextMenuItems\":[{\"onGlobalContextMenuItemsChange\":0}],\"objectContextMenuItems\":[{\"onObjectContextMenuItemsChange\":0}],\"scaleMax\":[{\"validateScaleMax\":0}],\"scaleMin\":[{\"validateScaleMin\":0}],\"cursorTarget\":[{\"onCursorTargetChange\":0}],\"lockDrawingScale\":[{\"onLockDrawingScaleChange\":0}],\"isObjectDistanceFadingActive\":[{\"onIsObjectDistanceFadingActiveChange\":0}],\"theme\":[{\"onThemeChange\":0}],\"licenseKey\":[{\"onLicenseKeyChange\":0}],\"themes\":[{\"onThemesChange\":0}],\"locale\":[{\"onLocaleChange\":0}],\"locales\":[{\"onLocalesChange\":0}],\"fallbackLocale\":[{\"onFallbackLocaleChange\":0}],\"viewportBoundaryLeft\":[{\"onViewportBoundaryLeftChange\":0}],\"viewportBoundaryRight\":[{\"onViewportBoundaryRightChange\":0}],\"viewportBoundaryTop\":[{\"onViewportBoundaryTopChange\":0}],\"viewportBoundaryBottom\":[{\"onViewportBoundaryBottomChange\":0}],\"debugInfo\":[{\"onDebugInfoChange\":0}],\"isLoading\":[{\"onIsLoadingChange\":0}]}],[513,\"kritzel-more-menu\",{\"visible\":[4],\"items\":[16],\"icon\":[1],\"iconSize\":[2,\"icon-size\"],\"offsetY\":[2,\"offset-y\"],\"terms\":[16],\"menuAnchor\":[32],\"isTouchDevice\":[32],\"visibleItems\":[32]},null,{\"items\":[{\"onItemsChange\":0}]}],[513,\"kritzel-current-user-dialog\",{\"user\":[16],\"terms\":[16],\"isDialogOpen\":[32],\"open\":[64],\"close\":[64]}],[513,\"kritzel-share-dialog\",{\"isPublic\":[4,\"is-public\"],\"workspaceId\":[1,\"workspace-id\"],\"terms\":[16],\"isDialogOpen\":[32],\"internalIsPublic\":[32],\"copySuccess\":[32],\"qrCodeDataUrl\":[32],\"open\":[64],\"close\":[64]},null,{\"isPublic\":[{\"onIsPublicChange\":0}],\"workspaceId\":[{\"onWorkspaceIdChange\":0}]}],[513,\"kritzel-login-dialog\",{\"providers\":[16],\"dialogTitle\":[1,\"dialog-title\"],\"subtitle\":[1],\"isDialogOpen\":[32],\"loadingProvider\":[32],\"open\":[64],\"close\":[64],\"setLoading\":[64]}],[513,\"kritzel-active-users\",{\"users\":[16],\"avatarSize\":[2,\"avatar-size\"],\"maxVisible\":[2,\"max-visible\"],\"overlap\":[2]}],[513,\"kritzel-back-to-content\",{\"visible\":[4],\"text\":[1]}],[513,\"kritzel-context-menu\",{\"items\":[16],\"objects\":[16],\"processedItems\":[32],\"openSubmenuPath\":[32],\"submenuPositions\":[32]},[[9,\"pointerdown\",\"handleOutsideClick\"]],{\"items\":[{\"onItemsChanged\":0}]}],[513,\"kritzel-current-user\",{\"user\":[16],\"avatarSize\":[2,\"avatar-size\"],\"terms\":[16]}],[513,\"kritzel-notification-card\",{\"notification\":[16],\"showTimestamp\":[4,\"show-timestamp\"],\"locale\":[1]}],[513,\"kritzel-zoom-panel\",{\"visible\":[4],\"disabled\":[4],\"zoomPercent\":[2,\"zoom-percent\"],\"terms\":[16]}],[513,\"kritzel-loading-overlay\",{\"visible\":[4],\"text\":[1]}],[513,\"kritzel-sync-indicator\",{\"visible\":[4],\"text\":[1]}],[513,\"kritzel-tool-config\",{\"tool\":[1040],\"isExpanded\":[1028,\"is-expanded\"],\"theme\":[1],\"engine\":[16],\"terms\":[16],\"config\":[32],\"palette\":[32],\"sizes\":[32],\"currentOpacity\":[32],\"updateTrigger\":[32]},null,{\"tool\":[{\"handleToolChange\":0}],\"theme\":[{\"onThemeChange\":0}],\"engine\":[{\"handleEngineChange\":0}]}],[513,\"kritzel-split-button\",{\"buttonIcon\":[1,\"button-icon\"],\"dropdownIcon\":[1,\"dropdown-icon\"],\"items\":[16],\"mainButtonDisabled\":[4,\"main-button-disabled\"],\"menuButtonDisabled\":[4,\"menu-button-disabled\"],\"isMenuOpen\":[32],\"isTouchDevice\":[32],\"anchorElement\":[32],\"menuScrollTop\":[32],\"open\":[64],\"focusMenu\":[64]}],[769,\"kritzel-master-detail\",{\"items\":[16],\"selectedItemId\":[1,\"selected-item-id\"],\"focusedIndex\":[32],\"showMobileDetail\":[32]},null,{\"selectedItemId\":[{\"watchSelectedItemId\":0}]}],[513,\"kritzel-pill-tabs\",{\"tabs\":[16],\"value\":[1025]}],[513,\"kritzel-utility-panel\",{\"undoState\":[16],\"terms\":[16]}],[513,\"kritzel-awareness-cursors\",{\"core\":[16],\"showEdgeIndicators\":[4,\"show-edge-indicators\"],\"edgeIndicatorPadding\":[2,\"edge-indicator-padding\"],\"remoteCursors\":[32],\"objectVersion\":[32]}],[769,\"kritzel-button\",{\"variant\":[1],\"disabled\":[4],\"type\":[1]}],[513,\"kritzel-cursor-trail\",{\"core\":[16],\"cursorTrailPoints\":[32],\"isLeftButtonDown\":[32]},[[9,\"pointerdown\",\"handleMouseDown\"],[9,\"pointermove\",\"handlePointerMove\"],[9,\"pointerup\",\"handlePointerUp\"]]],[513,\"kritzel-input\",{\"value\":[1025],\"label\":[1],\"placeholder\":[1],\"suffix\":[1],\"type\":[1],\"disabled\":[4],\"inputValue\":[32]},null,{\"value\":[{\"onValueChange\":0}]}],[513,\"kritzel-numeric-input\",{\"value\":[1026],\"min\":[2],\"max\":[2],\"step\":[2],\"label\":[1],\"placeholder\":[1],\"inputValue\":[32]},null,{\"value\":[{\"onValueChange\":0}]}],[769,\"kritzel-tooltip\",{\"isVisible\":[1028,\"is-visible\"],\"anchorElement\":[16],\"triggerElement\":[16],\"offsetY\":[2,\"offset-y\"],\"positionX\":[32],\"positionY\":[32],\"open\":[64],\"close\":[64],\"toggle\":[64],\"focusContent\":[64]},[[4,\"click\",\"handleOutsideClick\"],[6,\"pointerdown\",\"handleOutsidePointerDown\"],[4,\"kritzelTooltipCloseAll\",\"handleCloseAll\"],[9,\"resize\",\"handleWindowResize\"]],{\"triggerElement\":[{\"handleTriggerElementChange\":0}],\"isVisible\":[{\"handleVisibilityChange\":0}]}],[513,\"kritzel-watermark\",{\"core\":[16],\"label\":[1]}],[513,\"kritzel-color-palette\",{\"colors\":[16],\"selectedColor\":[1040],\"isExpanded\":[4,\"is-expanded\"],\"isOpaque\":[4,\"is-opaque\"],\"opacity\":[2],\"theme\":[1]}],[513,\"kritzel-font-family\",{\"fontOptions\":[16],\"selectedFontFamily\":[1025,\"selected-font-family\"]},null,{\"fontOptions\":[{\"handleFontOptionsChange\":0}]}],[513,\"kritzel-font-size\",{\"sizes\":[16],\"selectedSize\":[1026,\"selected-size\"],\"fontFamily\":[1,\"font-family\"]}],[513,\"kritzel-stroke-size\",{\"sizes\":[16],\"selectedSize\":[1026,\"selected-size\"]}],[513,\"kritzel-line-endings\",{\"styles\":[16],\"value\":[1040]}],[513,\"kritzel-opacity-slider\",{\"value\":[1026],\"min\":[2],\"max\":[2],\"step\":[2],\"previewColor\":[1,\"preview-color\"]}],[513,\"kritzel-shape-fill\",{\"value\":[1025]}],[513,\"kritzel-slide-toggle\",{\"checked\":[1028],\"disabled\":[4],\"label\":[1]}],[513,\"kritzel-avatar\",{\"user\":[16],\"name\":[1],\"size\":[2],\"color\":[1],\"imageError\":[32]},null,{\"user\":[{\"userChanged\":0}],\"profileImageUrl\":[{\"profileImageUrlChanged\":0}]}],[513,\"kritzel-font\",{\"fontFamily\":[1,\"font-family\"],\"size\":[2],\"color\":[1]}],[513,\"kritzel-color\",{\"value\":[1],\"theme\":[1],\"size\":[2]}],[513,\"kritzel-menu\",{\"items\":[16],\"parent\":[16],\"selectedIndex\":[32],\"setScrollTop\":[64],\"setFocus\":[64]}],[513,\"kritzel-menu-item\",{\"item\":[16],\"parent\":[16],\"isDirty\":[32]},null,{\"item\":[{\"onItemChange\":0}]}],[769,\"kritzel-dialog\",{\"isOpen\":[516,\"is-open\"],\"dialogTitle\":[1,\"dialog-title\"],\"closable\":[4],\"closeOnBackdrop\":[4,\"close-on-backdrop\"],\"closeOnEscape\":[4,\"close-on-escape\"],\"autoFocus\":[4,\"auto-focus\"],\"trapFocus\":[4,\"trap-focus\"],\"size\":[1],\"fullscreenOnMobile\":[4,\"fullscreen-on-mobile\"],\"contained\":[516],\"isAnimating\":[32],\"mobileLockedHeight\":[32],\"containerRect\":[32],\"containerBorderRadius\":[32],\"open\":[64],\"close\":[64],\"focusFirstElement\":[64]},[[8,\"keydown\",\"handleKeyDown\"],[9,\"resize\",\"handleWindowResize\"],[8,\"orientationchange\",\"handleOrientationChange\"]],{\"isOpen\":[{\"handleIsOpenChange\":0}]}],[769,\"kritzel-portal\",{\"anchor\":[16],\"offsetX\":[2,\"offset-x\"],\"offsetY\":[2,\"offset-y\"],\"autoFocus\":[4,\"auto-focus\"]},[[8,\"kritzel-dismiss-menus\",\"handleDismissMenus\"],[8,\"click\",\"handleOutsideClick\"],[6,\"pointerdown\",\"handleOutsidePointerDown\"],[8,\"keydown\",\"handleKeyDown\"],[11,\"resize\",\"handleResize\"],[11,\"scroll\",\"handleWindowScroll\"]],{\"anchor\":[{\"anchorChanged\":0}]}],[769,\"kritzel-dropdown\",{\"options\":[16],\"value\":[1],\"width\":[1],\"selectStyles\":[16],\"forceOpenDirection\":[1,\"force-open-direction\"],\"internalValue\":[32],\"hasSuffixContent\":[32],\"hasPrefixContent\":[32],\"isOpen\":[32],\"focusedIndex\":[32],\"openDirection\":[32]},[[4,\"click\",\"handleDocumentClick\"],[4,\"keydown\",\"handleDocumentKeydown\"]],{\"options\":[{\"optionsChanged\":0}],\"value\":[{\"externalValueChanged\":0}]}],[513,\"kritzel-icon\",{\"name\":[1],\"label\":[1],\"size\":[2]}]]],[\"kritzel-brush-style\",[[513,\"kritzel-brush-style\",{\"type\":[1],\"brushOptions\":[16]}]]]]"), options);
|
|
8
|
+
return bootstrapLazy(JSON.parse("[[\"kritzel-active-users_47\",[[512,\"kritzel-editor\",{\"scaleMax\":[1026,\"scale-max\"],\"scaleMin\":[1026,\"scale-min\"],\"lockDrawingScale\":[1028,\"lock-drawing-scale\"],\"viewportBoundaryLeft\":[1026,\"viewport-boundary-left\"],\"viewportBoundaryRight\":[1026,\"viewport-boundary-right\"],\"viewportBoundaryTop\":[1026,\"viewport-boundary-top\"],\"viewportBoundaryBottom\":[1026,\"viewport-boundary-bottom\"],\"debugInfo\":[1040],\"user\":[16],\"activeUsers\":[16],\"controls\":[16],\"globalContextMenuItems\":[16],\"objectContextMenuItems\":[16],\"moreMenuItems\":[16],\"themes\":[16],\"theme\":[1025],\"licenseKey\":[1,\"license-key\"],\"locale\":[1025],\"locales\":[16],\"fallbackLocale\":[1,\"fallback-locale\"],\"customSvgIcons\":[16],\"customFonts\":[16],\"isPanningEnabled\":[1028,\"is-panning-enabled\"],\"isZoomingEnabled\":[1028,\"is-zooming-enabled\"],\"isControlsVisible\":[4,\"is-controls-visible\"],\"isUtilityPanelVisible\":[4,\"is-utility-panel-visible\"],\"isWorkspaceManagerVisible\":[4,\"is-workspace-manager-visible\"],\"isMoreMenuVisible\":[4,\"is-more-menu-visible\"],\"isZoomPanelVisible\":[4,\"is-zoom-panel-visible\"],\"isObjectDistanceFadingActive\":[4,\"is-object-distance-fading-active\"],\"syncConfig\":[16],\"assetStorageConfig\":[16],\"cursorTarget\":[16],\"loginConfig\":[16],\"isLoading\":[4,\"is-loading\"],\"editorId\":[1,\"editor-id\"],\"activeWorkspaceId\":[1,\"active-workspace-id\"],\"isEngineReady\":[32],\"isControlsReady\":[32],\"isWorkspaceManagerReady\":[32],\"workspaces\":[32],\"activeWorkspace\":[32],\"isVirtualKeyboardOpen\":[32],\"undoState\":[32],\"isBackToContentButtonVisible\":[32],\"resolvedTerms\":[32],\"availableLocaleOptions\":[32],\"currentZoomPercent\":[32],\"shortcuts\":[32],\"currentIsPublic\":[32],\"isEditorVisible\":[32],\"activeNotification\":[32],\"isNotificationDismissing\":[32],\"contextMenuState\":[32],\"normalizedControls\":[32],\"resolvedMoreMenuItems\":[32],\"isLoadingOverlayVisible\":[32],\"isSyncingIndicatorVisible\":[32],\"getObjectById\":[64],\"addObject\":[64],\"addObjects\":[64],\"updateObject\":[64],\"removeObject\":[64],\"removeObjects\":[64],\"getSelectedObjects\":[64],\"selectObjects\":[64],\"selectAllObjectsInViewport\":[64],\"clearSelection\":[64],\"centerObjectInViewport\":[64],\"panToObject\":[64],\"backToContent\":[64],\"centerAllObjects\":[64],\"centerObjects\":[64],\"setViewport\":[64],\"panTo\":[64],\"zoomTo\":[64],\"zoomIn\":[64],\"zoomOut\":[64],\"getViewport\":[64],\"screenToWorld\":[64],\"worldToScreen\":[64],\"createWorkspace\":[64],\"updateWorkspace\":[64],\"deleteWorkspace\":[64],\"getWorkspaces\":[64],\"getActiveWorkspace\":[64],\"loadSharedWorkspace\":[64],\"reinitSync\":[64],\"registerTool\":[64],\"changeActiveTool\":[64],\"changeActiveToolByName\":[64],\"disable\":[64],\"enable\":[64],\"copy\":[64],\"cut\":[64],\"paste\":[64],\"delete\":[64],\"bringForward\":[64],\"sendBackward\":[64],\"bringToFront\":[64],\"sendToBack\":[64],\"alignObjects\":[64],\"group\":[64],\"ungroup\":[64],\"undo\":[64],\"redo\":[64],\"getScreenshot\":[64],\"exportViewportAsPng\":[64],\"exportViewportAsSvg\":[64],\"getSelectedObjectSupportedExportFormats\":[64],\"canExportSelectedObjectAs\":[64],\"exportSelectedObject\":[64],\"downloadAsJson\":[64],\"importFromFile\":[64],\"loadObjectsFromJson\":[64],\"getObjectsTotalCount\":[64],\"getAllObjects\":[64],\"findObjects\":[64],\"getObjectsInViewport\":[64],\"hideContextMenu\":[64],\"openContextMenu\":[64],\"triggerSelectionChange\":[64],\"beginSceneBootstrap\":[64],\"endSceneBootstrap\":[64],\"getDisplayableShortcuts\":[64],\"triggerNotification\":[64],\"openLoginDialog\":[64],\"setLoginLoading\":[64],\"setLocale\":[64],\"getLocale\":[64],\"getAvailableLocales\":[64],\"registerLocales\":[64],\"registerFonts\":[64],\"t\":[64]},[[0,\"dblclick\",\"onTouchStart\"]],{\"isEngineReady\":[{\"onIsEngineReady\":0}],\"isControlsReady\":[{\"onIsControlsReady\":0}],\"workspaces\":[{\"onWorkspacesChange\":0}],\"activeWorkspace\":[{\"onActiveWorkspaceChange\":0}],\"customFonts\":[{\"onCustomFontsChange\":0}],\"controls\":[{\"onControlsChange\":0}],\"moreMenuItems\":[{\"onMoreMenuItemsChange\":0}],\"syncConfig\":[{\"onSyncConfigChange\":0}],\"loginConfig\":[{\"onLoginConfigChange\":0}],\"user\":[{\"onUserChange\":0}],\"activeWorkspaceId\":[{\"onActiveWorkspaceIdChange\":0}],\"theme\":[{\"onCurrentThemeChange\":0}],\"themes\":[{\"onThemesChange\":0}],\"locale\":[{\"onLocaleChange\":0}]}],[513,\"kritzel-controls\",{\"visible\":[4],\"controls\":[16],\"activeControl\":[1040],\"isUtilityPanelVisible\":[4,\"is-utility-panel-visible\"],\"undoState\":[16],\"theme\":[1],\"terms\":[16],\"firstConfig\":[32],\"isTouchDevice\":[32],\"selectedSubOptions\":[32],\"canScrollLeft\":[32],\"canScrollRight\":[32],\"needsScrolling\":[32],\"displayValues\":[32],\"internalControls\":[32],\"closeTooltip\":[64]},[[8,\"keydown\",\"handleKeyDown\"]],{\"controls\":[{\"onControlsChange\":0}],\"theme\":[{\"onThemeChange\":0}]}],[513,\"kritzel-settings\",{\"availableThemes\":[16],\"availableLocales\":[16],\"shortcuts\":[16],\"terms\":[16],\"settings\":[16],\"isDialogOpen\":[32],\"selectedCategoryId\":[32],\"scaleMin\":[32],\"scaleMax\":[32],\"lockDrawingScale\":[32],\"theme\":[32],\"locale\":[32],\"viewportBoundaryLeft\":[32],\"viewportBoundaryRight\":[32],\"viewportBoundaryTop\":[32],\"viewportBoundaryBottom\":[32],\"debugInfo\":[32],\"open\":[64]},null,{\"settings\":[{\"onSettingsPropChange\":0}]}],[513,\"kritzel-export\",{\"workspaceName\":[1,\"workspace-name\"],\"terms\":[16],\"isDialogOpen\":[32],\"previewUrl\":[32],\"isLoading\":[32],\"activeTab\":[32],\"exportFilename\":[32],\"viewportExportFormat\":[32],\"open\":[64]}],[513,\"kritzel-workspace-manager\",{\"visible\":[4],\"activeWorkspace\":[1040],\"workspaces\":[16],\"terms\":[16],\"childMenuAnchor\":[32],\"openChildMenuItem\":[32],\"newWorkspace\":[32],\"editingItemId\":[32]},[[8,\"wheel\",\"handleWheel\"]]],[513,\"kritzel-engine\",{\"workspace\":[16],\"editorId\":[1,\"editor-id\"],\"activeWorkspaceId\":[1,\"active-workspace-id\"],\"syncConfig\":[16],\"assetStorageConfig\":[16],\"user\":[16],\"globalContextMenuItems\":[16],\"objectContextMenuItems\":[16],\"scaleMax\":[1026,\"scale-max\"],\"scaleMin\":[1026,\"scale-min\"],\"cursorTarget\":[16],\"lockDrawingScale\":[4,\"lock-drawing-scale\"],\"isObjectDistanceFadingActive\":[4,\"is-object-distance-fading-active\"],\"theme\":[1],\"licenseKey\":[1,\"license-key\"],\"themes\":[16],\"locale\":[1],\"locales\":[16],\"fallbackLocale\":[1,\"fallback-locale\"],\"viewportBoundaryLeft\":[2,\"viewport-boundary-left\"],\"viewportBoundaryRight\":[2,\"viewport-boundary-right\"],\"viewportBoundaryTop\":[2,\"viewport-boundary-top\"],\"viewportBoundaryBottom\":[2,\"viewport-boundary-bottom\"],\"debugInfo\":[16],\"isPanningEnabled\":[4,\"is-panning-enabled\"],\"isZoomingEnabled\":[4,\"is-zooming-enabled\"],\"isLoading\":[4,\"is-loading\"],\"forceUpdate\":[32],\"triggerSelectionChange\":[64],\"beginSceneBootstrap\":[64],\"endSceneBootstrap\":[64],\"registerTool\":[64],\"changeActiveTool\":[64],\"changeActiveToolByName\":[64],\"disable\":[64],\"enable\":[64],\"delete\":[64],\"copy\":[64],\"cut\":[64],\"paste\":[64],\"bringForward\":[64],\"sendBackward\":[64],\"bringToFront\":[64],\"sendToBack\":[64],\"alignObjects\":[64],\"group\":[64],\"ungroup\":[64],\"undo\":[64],\"redo\":[64],\"hideContextMenu\":[64],\"openContextMenu\":[64],\"getObjectById\":[64],\"getAllObjects\":[64],\"findObjects\":[64],\"getObjectsTotalCount\":[64],\"addObject\":[64],\"addObjects\":[64],\"updateObject\":[64],\"removeObject\":[64],\"removeObjects\":[64],\"getSelectedObjects\":[64],\"getDisplayableShortcuts\":[64],\"selectObjects\":[64],\"selectAllObjectsInViewport\":[64],\"clearSelection\":[64],\"centerObjectInViewport\":[64],\"panToObject\":[64],\"backToContent\":[64],\"centerAllObjects\":[64],\"centerObjects\":[64],\"setViewport\":[64],\"panTo\":[64],\"zoomTo\":[64],\"zoomIn\":[64],\"zoomOut\":[64],\"getViewport\":[64],\"screenToWorld\":[64],\"worldToScreen\":[64],\"getObjectsInViewport\":[64],\"getScreenshot\":[64],\"exportViewportAsPng\":[64],\"exportViewportAsSvg\":[64],\"getSelectedObjectSupportedExportFormats\":[64],\"canExportSelectedObjectAs\":[64],\"exportSelectedObject\":[64],\"exportAsJson\":[64],\"importFromJson\":[64],\"loadObjectsFromJson\":[64],\"downloadAsJson\":[64],\"importFromFile\":[64],\"createWorkspace\":[64],\"updateWorkspace\":[64],\"deleteWorkspace\":[64],\"getWorkspaces\":[64],\"getActiveWorkspace\":[64],\"getIsPublic\":[64],\"loadSharedWorkspace\":[64],\"reinitSync\":[64],\"saveSettings\":[64],\"loadSettings\":[64],\"registerLocales\":[64],\"setLocale\":[64],\"getLocale\":[64],\"getAvailableLocales\":[64],\"getAvailableLocaleOptions\":[64],\"t\":[64],\"getResolvedTerms\":[64]},[[1,\"wheel\",\"handleWheel\"],[0,\"pointerdown\",\"handlePointerDown\"],[0,\"pointermove\",\"handlePointerMove\"],[0,\"pointerup\",\"handlePointerUp\"],[0,\"pointercancel\",\"handlePointerCancel\"],[1,\"pointerleave\",\"handlePointerLeave\"],[1,\"longpress\",\"handleLongPress\"],[0,\"contextmenu\",\"handleContextMenu\"],[9,\"resize\",\"handleResize\"],[8,\"keydown\",\"handleKeyDown\"],[8,\"keyup\",\"handleKeyUp\"],[8,\"copy\",\"handleCopy\"],[8,\"cut\",\"handleCut\"],[8,\"paste\",\"handlePaste\"],[4,\"dblclick\",\"preventDoubleTapZoomOnTouchDevices\"]],{\"workspace\":[{\"onWorkspaceChange\":0}],\"activeWorkspaceId\":[{\"onActiveWorkspaceIdChange\":0}],\"syncConfig\":[{\"onSyncConfigChange\":0}],\"assetStorageConfig\":[{\"onAssetStorageConfigChange\":0}],\"user\":[{\"onUserChange\":0}],\"globalContextMenuItems\":[{\"onGlobalContextMenuItemsChange\":0}],\"objectContextMenuItems\":[{\"onObjectContextMenuItemsChange\":0}],\"scaleMax\":[{\"validateScaleMax\":0}],\"scaleMin\":[{\"validateScaleMin\":0}],\"cursorTarget\":[{\"onCursorTargetChange\":0}],\"lockDrawingScale\":[{\"onLockDrawingScaleChange\":0}],\"isObjectDistanceFadingActive\":[{\"onIsObjectDistanceFadingActiveChange\":0}],\"theme\":[{\"onThemeChange\":0}],\"licenseKey\":[{\"onLicenseKeyChange\":0}],\"themes\":[{\"onThemesChange\":0}],\"locale\":[{\"onLocaleChange\":0}],\"locales\":[{\"onLocalesChange\":0}],\"fallbackLocale\":[{\"onFallbackLocaleChange\":0}],\"viewportBoundaryLeft\":[{\"onViewportBoundaryLeftChange\":0}],\"viewportBoundaryRight\":[{\"onViewportBoundaryRightChange\":0}],\"viewportBoundaryTop\":[{\"onViewportBoundaryTopChange\":0}],\"viewportBoundaryBottom\":[{\"onViewportBoundaryBottomChange\":0}],\"debugInfo\":[{\"onDebugInfoChange\":0}],\"isLoading\":[{\"onIsLoadingChange\":0}]}],[513,\"kritzel-more-menu\",{\"visible\":[4],\"items\":[16],\"icon\":[1],\"iconSize\":[2,\"icon-size\"],\"offsetY\":[2,\"offset-y\"],\"terms\":[16],\"menuAnchor\":[32],\"isTouchDevice\":[32],\"visibleItems\":[32]},null,{\"items\":[{\"onItemsChange\":0}]}],[513,\"kritzel-current-user-dialog\",{\"user\":[16],\"terms\":[16],\"isDialogOpen\":[32],\"open\":[64],\"close\":[64]}],[513,\"kritzel-share-dialog\",{\"isPublic\":[4,\"is-public\"],\"workspaceId\":[1,\"workspace-id\"],\"terms\":[16],\"isDialogOpen\":[32],\"internalIsPublic\":[32],\"copySuccess\":[32],\"qrCodeDataUrl\":[32],\"open\":[64],\"close\":[64]},null,{\"isPublic\":[{\"onIsPublicChange\":0}],\"workspaceId\":[{\"onWorkspaceIdChange\":0}]}],[513,\"kritzel-login-dialog\",{\"providers\":[16],\"dialogTitle\":[1,\"dialog-title\"],\"subtitle\":[1],\"isDialogOpen\":[32],\"loadingProvider\":[32],\"open\":[64],\"close\":[64],\"setLoading\":[64]}],[513,\"kritzel-active-users\",{\"users\":[16],\"avatarSize\":[2,\"avatar-size\"],\"maxVisible\":[2,\"max-visible\"],\"overlap\":[2]}],[513,\"kritzel-back-to-content\",{\"visible\":[4],\"text\":[1]}],[513,\"kritzel-context-menu\",{\"items\":[16],\"objects\":[16],\"processedItems\":[32],\"openSubmenuPath\":[32],\"submenuPositions\":[32]},[[9,\"pointerdown\",\"handleOutsideClick\"]],{\"items\":[{\"onItemsChanged\":0}]}],[513,\"kritzel-current-user\",{\"user\":[16],\"avatarSize\":[2,\"avatar-size\"],\"terms\":[16]}],[513,\"kritzel-notification-card\",{\"notification\":[16],\"showTimestamp\":[4,\"show-timestamp\"],\"locale\":[1]}],[513,\"kritzel-zoom-panel\",{\"visible\":[4],\"disabled\":[4],\"zoomPercent\":[2,\"zoom-percent\"],\"terms\":[16]}],[513,\"kritzel-loading-overlay\",{\"visible\":[4],\"text\":[1]}],[513,\"kritzel-sync-indicator\",{\"visible\":[4],\"text\":[1]}],[513,\"kritzel-tool-config\",{\"tool\":[1040],\"isExpanded\":[1028,\"is-expanded\"],\"theme\":[1],\"engine\":[16],\"terms\":[16],\"config\":[32],\"palette\":[32],\"sizes\":[32],\"currentOpacity\":[32],\"updateTrigger\":[32]},null,{\"tool\":[{\"handleToolChange\":0}],\"theme\":[{\"onThemeChange\":0}],\"engine\":[{\"handleEngineChange\":0}]}],[513,\"kritzel-split-button\",{\"buttonIcon\":[1,\"button-icon\"],\"dropdownIcon\":[1,\"dropdown-icon\"],\"items\":[16],\"mainButtonDisabled\":[4,\"main-button-disabled\"],\"menuButtonDisabled\":[4,\"menu-button-disabled\"],\"isMenuOpen\":[32],\"isTouchDevice\":[32],\"anchorElement\":[32],\"menuScrollTop\":[32],\"open\":[64],\"focusMenu\":[64]}],[769,\"kritzel-master-detail\",{\"items\":[16],\"selectedItemId\":[1,\"selected-item-id\"],\"focusedIndex\":[32],\"showMobileDetail\":[32]},null,{\"selectedItemId\":[{\"watchSelectedItemId\":0}]}],[513,\"kritzel-pill-tabs\",{\"tabs\":[16],\"value\":[1025]}],[513,\"kritzel-utility-panel\",{\"undoState\":[16],\"terms\":[16]}],[513,\"kritzel-awareness-cursors\",{\"core\":[16],\"showEdgeIndicators\":[4,\"show-edge-indicators\"],\"edgeIndicatorPadding\":[2,\"edge-indicator-padding\"],\"remoteCursors\":[32],\"objectVersion\":[32]}],[769,\"kritzel-button\",{\"variant\":[1],\"disabled\":[4],\"type\":[1]}],[513,\"kritzel-cursor-trail\",{\"core\":[16],\"cursorTrailPoints\":[32],\"isLeftButtonDown\":[32]},[[9,\"pointerdown\",\"handleMouseDown\"],[9,\"pointermove\",\"handlePointerMove\"],[9,\"pointerup\",\"handlePointerUp\"]]],[513,\"kritzel-input\",{\"value\":[1025],\"label\":[1],\"placeholder\":[1],\"suffix\":[1],\"type\":[1],\"disabled\":[4],\"inputValue\":[32]},null,{\"value\":[{\"onValueChange\":0}]}],[513,\"kritzel-numeric-input\",{\"value\":[1026],\"min\":[2],\"max\":[2],\"step\":[2],\"label\":[1],\"placeholder\":[1],\"inputValue\":[32]},null,{\"value\":[{\"onValueChange\":0}]}],[769,\"kritzel-tooltip\",{\"isVisible\":[1028,\"is-visible\"],\"anchorElement\":[16],\"triggerElement\":[16],\"offsetY\":[2,\"offset-y\"],\"positionX\":[32],\"positionY\":[32],\"open\":[64],\"close\":[64],\"toggle\":[64],\"focusContent\":[64]},[[4,\"click\",\"handleOutsideClick\"],[6,\"pointerdown\",\"handleOutsidePointerDown\"],[4,\"kritzelTooltipCloseAll\",\"handleCloseAll\"],[9,\"resize\",\"handleWindowResize\"]],{\"triggerElement\":[{\"handleTriggerElementChange\":0}],\"isVisible\":[{\"handleVisibilityChange\":0}]}],[513,\"kritzel-watermark\",{\"core\":[16],\"label\":[1]}],[513,\"kritzel-color-palette\",{\"colors\":[16],\"selectedColor\":[1040],\"isExpanded\":[4,\"is-expanded\"],\"isOpaque\":[4,\"is-opaque\"],\"opacity\":[2],\"theme\":[1]}],[513,\"kritzel-font-family\",{\"fontOptions\":[16],\"selectedFontFamily\":[1025,\"selected-font-family\"]},null,{\"fontOptions\":[{\"handleFontOptionsChange\":0}]}],[513,\"kritzel-font-size\",{\"sizes\":[16],\"selectedSize\":[1026,\"selected-size\"],\"fontFamily\":[1,\"font-family\"]}],[513,\"kritzel-stroke-size\",{\"sizes\":[16],\"selectedSize\":[1026,\"selected-size\"]}],[513,\"kritzel-line-endings\",{\"styles\":[16],\"value\":[1040]}],[513,\"kritzel-opacity-slider\",{\"value\":[1026],\"min\":[2],\"max\":[2],\"step\":[2],\"previewColor\":[1,\"preview-color\"]}],[513,\"kritzel-shape-fill\",{\"value\":[1025]}],[513,\"kritzel-slide-toggle\",{\"checked\":[1028],\"disabled\":[4],\"label\":[1]}],[513,\"kritzel-avatar\",{\"user\":[16],\"name\":[1],\"size\":[2],\"color\":[1],\"imageError\":[32]},null,{\"user\":[{\"userChanged\":0}],\"profileImageUrl\":[{\"profileImageUrlChanged\":0}]}],[513,\"kritzel-font\",{\"fontFamily\":[1,\"font-family\"],\"size\":[2],\"color\":[1]}],[513,\"kritzel-color\",{\"value\":[1],\"theme\":[1],\"size\":[2]}],[513,\"kritzel-menu\",{\"items\":[16],\"parent\":[16],\"selectedIndex\":[32],\"setScrollTop\":[64],\"setFocus\":[64]}],[513,\"kritzel-menu-item\",{\"item\":[16],\"parent\":[16],\"isDirty\":[32]},null,{\"item\":[{\"onItemChange\":0}]}],[769,\"kritzel-dialog\",{\"isOpen\":[516,\"is-open\"],\"dialogTitle\":[1,\"dialog-title\"],\"closable\":[4],\"closeOnBackdrop\":[4,\"close-on-backdrop\"],\"closeOnEscape\":[4,\"close-on-escape\"],\"autoFocus\":[4,\"auto-focus\"],\"trapFocus\":[4,\"trap-focus\"],\"size\":[1],\"fullscreenOnMobile\":[4,\"fullscreen-on-mobile\"],\"contained\":[516],\"isAnimating\":[32],\"mobileLockedHeight\":[32],\"containerRect\":[32],\"containerBorderRadius\":[32],\"open\":[64],\"close\":[64],\"focusFirstElement\":[64]},[[8,\"keydown\",\"handleKeyDown\"],[9,\"resize\",\"handleWindowResize\"],[8,\"orientationchange\",\"handleOrientationChange\"]],{\"isOpen\":[{\"handleIsOpenChange\":0}]}],[769,\"kritzel-portal\",{\"anchor\":[16],\"offsetX\":[2,\"offset-x\"],\"offsetY\":[2,\"offset-y\"],\"autoFocus\":[4,\"auto-focus\"]},[[8,\"kritzel-dismiss-menus\",\"handleDismissMenus\"],[8,\"click\",\"handleOutsideClick\"],[6,\"pointerdown\",\"handleOutsidePointerDown\"],[8,\"keydown\",\"handleKeyDown\"],[11,\"resize\",\"handleResize\"],[11,\"scroll\",\"handleWindowScroll\"]],{\"anchor\":[{\"anchorChanged\":0}]}],[769,\"kritzel-dropdown\",{\"options\":[16],\"value\":[1],\"width\":[1],\"selectStyles\":[16],\"forceOpenDirection\":[1,\"force-open-direction\"],\"internalValue\":[32],\"hasSuffixContent\":[32],\"hasPrefixContent\":[32],\"isOpen\":[32],\"focusedIndex\":[32],\"openDirection\":[32]},[[4,\"click\",\"handleDocumentClick\"],[4,\"keydown\",\"handleDocumentKeydown\"]],{\"options\":[{\"optionsChanged\":0}],\"value\":[{\"externalValueChanged\":0}]}],[513,\"kritzel-icon\",{\"name\":[1],\"label\":[1],\"size\":[2]}]]],[\"kritzel-brush-style\",[[513,\"kritzel-brush-style\",{\"type\":[1],\"brushOptions\":[16]}]]]]"), options);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export { defineCustomElements };
|