kritzel-stencil 0.3.34 → 0.3.36
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-Xav9JFHg.js +2 -2
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/{kritzel-active-users_45.cjs.entry.js → kritzel-active-users_46.cjs.entry.js} +128 -83
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{schema.constants-D7Z8ELAd.js → schema.constants-Di56GD6q.js} +14 -3
- package/dist/cjs/stencil.cjs.js +1 -1
- package/dist/collection/classes/objects/shape.class.js +14 -3
- package/dist/collection/classes/structures/object-map.structure.js +15 -7
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +5 -0
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +26 -18
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +0 -41
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +26 -4
- package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +1 -1
- package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
- package/dist/collection/components/shared/kritzel-button/kritzel-button.css +1 -0
- package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
- package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
- package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
- package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
- package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
- package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
- package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
- package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -8
- package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.css +10 -0
- package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +25 -1
- package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
- package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +50 -0
- package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +70 -0
- package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
- package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +1 -1
- package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
- package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
- package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
- package/dist/collection/constants/version.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-active-users.js +1 -1
- package/dist/components/kritzel-avatar.js +1 -1
- package/dist/components/kritzel-back-to-content.js +1 -1
- package/dist/components/kritzel-button.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-current-user-dialog.js +1 -1
- package/dist/components/kritzel-current-user.js +1 -1
- package/dist/components/kritzel-editor.js +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-export.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-input.js +1 -1
- package/dist/components/kritzel-loading-overlay.d.ts +11 -0
- package/dist/components/kritzel-loading-overlay.js +1 -0
- package/dist/components/kritzel-login-dialog.js +1 -1
- package/dist/components/kritzel-master-detail.js +1 -1
- package/dist/components/kritzel-menu-item.js +1 -1
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-more-menu.js +1 -1
- package/dist/components/kritzel-numeric-input.js +1 -1
- package/dist/components/kritzel-opacity-slider.js +1 -1
- package/dist/components/kritzel-portal.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/kritzel-share-dialog.js +1 -1
- package/dist/components/kritzel-slide-toggle.js +1 -1
- package/dist/components/kritzel-split-button.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tool-config.js +1 -1
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/kritzel-watermark.js +1 -1
- package/dist/components/kritzel-workspace-manager.js +1 -1
- package/dist/components/kritzel-zoom-panel.js +1 -1
- package/dist/components/{p-wl9BhN6s.js → p-1nG2hxfJ.js} +1 -1
- package/dist/components/{p-Cb5YwXbC.js → p-8xkoVMfO.js} +1 -1
- package/dist/components/{p-BeHVCJ7n.js → p-BH4AasB1.js} +1 -1
- package/dist/components/{p-BVu03tNB.js → p-BJlf4iHH.js} +1 -1
- package/dist/components/{p-BntMEYss.js → p-BKOsmXB5.js} +1 -1
- package/dist/components/{p-DSd5xTAH.js → p-BLOPBDUF.js} +1 -1
- package/dist/components/p-B_6RNask.js +1 -0
- package/dist/components/p-BcAIRHf1.js +9 -0
- package/dist/components/{p-8p1DKytO.js → p-Bd_yPNfg.js} +1 -1
- package/dist/components/{p-BUc0GFPj.js → p-BlozPPKi.js} +1 -1
- package/dist/components/{p-7ZnANv7C.js → p-Bm_BWQa4.js} +1 -1
- package/dist/components/{p-BixEMVtW.js → p-BulDbBWB.js} +1 -1
- package/dist/components/{p-D0RYktBV.js → p-BzJEwFtn.js} +1 -1
- package/dist/components/{p-CdkNxxut.js → p-BzrxIesp.js} +1 -1
- package/dist/components/{p-CfS-5J9k.js → p-CMphprF1.js} +1 -1
- package/dist/components/{p-D0v9WP5w.js → p-CVhcOiEA.js} +1 -1
- package/dist/components/{p-CC0J_kEP.js → p-CwuGA058.js} +1 -1
- package/dist/components/p-D52oKO_e.js +1 -0
- package/dist/components/{p-M9m9-OEY.js → p-D8TOEhPY.js} +1 -1
- package/dist/components/{p-DJVRW9So.js → p-DEqpY4K2.js} +1 -1
- package/dist/components/{p-BrAeYciD.js → p-DIMNEOTW.js} +1 -1
- package/dist/components/{p-DeqALrzV.js → p-DMAScsJF.js} +1 -1
- package/dist/components/{p-DYLBjStF.js → p-DPpPd5GI.js} +1 -1
- package/dist/components/{p-Bg0xIZiR.js → p-DSOc0eIT.js} +1 -1
- package/dist/components/{p-W1ZwImdd.js → p-DXcjIb_a.js} +1 -1
- package/dist/components/{p-DPlEzPKO.js → p-DZcwchEg.js} +1 -1
- package/dist/components/{p-BX-nQAyH.js → p-DgnK50xO.js} +1 -1
- package/dist/components/p-Di5dpXrF.js +1 -0
- package/dist/components/{p-CZQz_mul.js → p-Ds-P2bYH.js} +1 -1
- package/dist/components/{p-meY80XnF.js → p-jzuGPW5o.js} +1 -1
- package/dist/components/{p-DZ8yfhhf.js → p-nxfv7vyD.js} +1 -1
- package/dist/components/p-oGAPPwAL.js +1 -0
- package/dist/components/{p-DEpnJBA3.js → p-yD_3Z3K1.js} +1 -1
- package/dist/components/{p-BcB97x3U.js → p-zd7zXld8.js} +1 -1
- package/dist/esm/index-Dhio9uis.js +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/{kritzel-active-users_45.entry.js → kritzel-active-users_46.entry.js} +128 -84
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{schema.constants-CDQonV1J.js → schema.constants-Cphx5M7a.js} +14 -3
- package/dist/esm/stencil.js +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/{p-CDQonV1J.js → p-Cphx5M7a.js} +1 -1
- package/dist/stencil/p-e6d0699a.entry.js +9 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/structures/object-map.structure.d.ts +6 -0
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +5 -0
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +2 -0
- package/dist/types/components/ui/kritzel-current-user/kritzel-current-user.d.ts +0 -3
- package/dist/types/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.d.ts +4 -0
- package/dist/types/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.d.ts +11 -0
- package/dist/types/components.d.ts +61 -0
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/interfaces/theme.interface.d.ts +7 -0
- package/package.json +1 -1
- package/dist/components/p-COdwK_mi.js +0 -1
- package/dist/components/p-XDNjFYRB.js +0 -1
- package/dist/components/p-X_pyPCe8.js +0 -1
- package/dist/components/p-vLVZEJXX.js +0 -9
- package/dist/stencil/p-3289cc4e.entry.js +0 -9
package/dist/cjs/{kritzel-active-users_45.cjs.entry.js → kritzel-active-users_46.cjs.entry.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index = require('./index-Xav9JFHg.js');
|
|
4
|
-
var schema_constants = require('./schema.constants-
|
|
4
|
+
var schema_constants = require('./schema.constants-Di56GD6q.js');
|
|
5
5
|
var Y = require('yjs');
|
|
6
6
|
require('y-indexeddb');
|
|
7
7
|
require('y-websocket');
|
|
@@ -158,16 +158,16 @@ const KritzelAvatar = class {
|
|
|
158
158
|
height: `${this.size}px`,
|
|
159
159
|
fontSize: `${Math.round(this.size * 0.4)}px`,
|
|
160
160
|
};
|
|
161
|
-
return (index.h(index.Host, { key: '
|
|
161
|
+
return (index.h(index.Host, { key: '116725d55e4443e80216b3b3251e957d2009b43e', style: containerStyles, class: {
|
|
162
162
|
'has-image': !!showImage,
|
|
163
163
|
'has-initials': !!showInitials,
|
|
164
164
|
'has-default': !!showDefaultIcon,
|
|
165
|
-
}, role: "img", "aria-label": this.getDisplayName() || 'User avatar' }, showImage && (index.h("img", { key: '
|
|
165
|
+
}, role: "img", "aria-label": this.getDisplayName() || 'User avatar' }, showImage && (index.h("img", { key: 'd70ad4eb484404b18c13e066e8c10b3c86918ee5', src: imageUrl, alt: "", class: "avatar-image", ref: (el) => {
|
|
166
166
|
if (el) {
|
|
167
167
|
el.referrerPolicy = 'no-referrer';
|
|
168
168
|
el.crossOrigin = 'anonymous';
|
|
169
169
|
}
|
|
170
|
-
}, onError: this.handleImageError })), showInitials && (index.h("span", { key: '
|
|
170
|
+
}, onError: this.handleImageError })), showInitials && (index.h("span", { key: '21a9022cffdb69e0c3626e513cb3c036a9d3a16d', class: "avatar-initials", style: { backgroundColor: this.getBackgroundColor() } }, initials)), showDefaultIcon && (index.h("span", { key: '43e676af007bf254b1921f3efcbc7fff4e204359', class: "avatar-default" }, index.h("svg", { key: 'a7378795539a902e28ca644a80f1ca00cc9f818a', viewBox: "0 0 24 24", fill: "currentColor" }, index.h("path", { key: '31548a495a86f033325c98cfcc0ae398b6bb8281', d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }))))));
|
|
171
171
|
}
|
|
172
172
|
static get watchers() { return {
|
|
173
173
|
"user": [{
|
|
@@ -477,12 +477,12 @@ const KritzelBackToContent = class {
|
|
|
477
477
|
this.backToContent.emit();
|
|
478
478
|
};
|
|
479
479
|
render() {
|
|
480
|
-
return (index.h(index.Host, { key: '
|
|
480
|
+
return (index.h(index.Host, { key: 'ab9e9297f5f26bcf79ec32e51ee0ff2524ad421f' }, index.h("button", { key: 'c32536edc9943bc9ad66f4fa727338bb01e148a6', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, index.h("kritzel-icon", { key: 'bd3aa6ffe524ad9093d1e0693574dc2d63c311bd', name: "chevrons-left" }))));
|
|
481
481
|
}
|
|
482
482
|
};
|
|
483
483
|
KritzelBackToContent.style = kritzelBackToContentCss();
|
|
484
484
|
|
|
485
|
-
const kritzelButtonCss = () => `:host{display:inline-block;font-family:sans-serif}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--kritzel-button-border-radius, 8px);padding:var(--kritzel-button-padding, 12px 20px);font-size:var(--kritzel-button-font-size, 14px);font-weight:var(--kritzel-button-font-weight, 500);transition:background-color 0.15s ease, opacity 0.15s ease;-webkit-tap-highlight-color:transparent}button.primary{background-color:var(--kritzel-button-primary-background-color, #007AFF);color:var(--kritzel-button-primary-color, #ffffff)}button.primary:hover{background-color:var(--kritzel-button-primary-hover-background-color, #006ae6)}button.primary:active{background-color:var(--kritzel-button-primary-active-background-color, #005bbf)}button.secondary{background-color:var(--kritzel-button-secondary-background-color, #f0f0f0);color:var(--kritzel-button-secondary-color, #333333)}button.secondary:hover{background-color:var(--kritzel-button-secondary-hover-background-color, #e0e0e0)}button.secondary:active{background-color:var(--kritzel-button-secondary-active-background-color, #d0d0d0)}button.text{background-color:transparent;color:var(--kritzel-button-text-color, #007AFF)}button.text:hover{background-color:var(--kritzel-button-text-hover-background-color, rgba(0, 122, 255, 0.08))}button.text:active{background-color:var(--kritzel-button-text-active-background-color, rgba(0, 122, 255, 0.15))}button.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}`;
|
|
485
|
+
const kritzelButtonCss = () => `:host{display:inline-block;font-family:sans-serif}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:inline-flex;width:var(--kritzel-button-width, auto);align-items:center;justify-content:center;gap:6px;border-radius:var(--kritzel-button-border-radius, 8px);padding:var(--kritzel-button-padding, 12px 20px);font-size:var(--kritzel-button-font-size, 14px);font-weight:var(--kritzel-button-font-weight, 500);transition:background-color 0.15s ease, opacity 0.15s ease;-webkit-tap-highlight-color:transparent}button.primary{background-color:var(--kritzel-button-primary-background-color, #007AFF);color:var(--kritzel-button-primary-color, #ffffff)}button.primary:hover{background-color:var(--kritzel-button-primary-hover-background-color, #006ae6)}button.primary:active{background-color:var(--kritzel-button-primary-active-background-color, #005bbf)}button.secondary{background-color:var(--kritzel-button-secondary-background-color, #f0f0f0);color:var(--kritzel-button-secondary-color, #333333)}button.secondary:hover{background-color:var(--kritzel-button-secondary-hover-background-color, #e0e0e0)}button.secondary:active{background-color:var(--kritzel-button-secondary-active-background-color, #d0d0d0)}button.text{background-color:transparent;color:var(--kritzel-button-text-color, #007AFF)}button.text:hover{background-color:var(--kritzel-button-text-hover-background-color, rgba(0, 122, 255, 0.08))}button.text:active{background-color:var(--kritzel-button-text-active-background-color, rgba(0, 122, 255, 0.15))}button.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}`;
|
|
486
486
|
|
|
487
487
|
const KritzelButton = class {
|
|
488
488
|
constructor(hostRef) {
|
|
@@ -504,11 +504,11 @@ const KritzelButton = class {
|
|
|
504
504
|
this.buttonClick.emit();
|
|
505
505
|
};
|
|
506
506
|
render() {
|
|
507
|
-
return (index.h(index.Host, { key: '
|
|
507
|
+
return (index.h(index.Host, { key: 'b9de2a1261ca0cb491f6980db6a596c48fa45b3a' }, index.h("button", { key: 'a9507ea0f6a1d9fcb19a7df16bea54cc0ead24f9', type: this.type, class: {
|
|
508
508
|
'kritzel-button': true,
|
|
509
509
|
[this.variant]: true,
|
|
510
510
|
'disabled': this.disabled,
|
|
511
|
-
}, disabled: this.disabled, onClick: this.handleClick }, index.h("slot", { key: '
|
|
511
|
+
}, disabled: this.disabled, onClick: this.handleClick }, index.h("slot", { key: '8449a26d4f9fe0226c6150a6639c522486b59780' }))));
|
|
512
512
|
}
|
|
513
513
|
};
|
|
514
514
|
KritzelButton.style = kritzelButtonCss();
|
|
@@ -556,13 +556,13 @@ const KritzelColorComponent = class {
|
|
|
556
556
|
render() {
|
|
557
557
|
const resolvedColor = this.resolveColor();
|
|
558
558
|
const isColorVeryLight = this.isLightColor(resolvedColor);
|
|
559
|
-
return (index.h(index.Host, { key: '
|
|
559
|
+
return (index.h(index.Host, { key: 'e39c77c55942b9c615e404efabf4939b2cf05a34' }, index.h("div", { key: 'ac343295592ea80ca7d3da61ca1244dd1aaa50db', class: "checkerboard-bg", style: {
|
|
560
560
|
width: `${this.size}px`,
|
|
561
561
|
height: `${this.size}px`,
|
|
562
562
|
borderRadius: '50%',
|
|
563
563
|
display: 'inline-block',
|
|
564
564
|
position: 'relative',
|
|
565
|
-
} }, index.h("div", { key: '
|
|
565
|
+
} }, index.h("div", { key: '4c87934b3febd4c41874cd290d86a9a9a557e3e5', class: {
|
|
566
566
|
'color-circle': true,
|
|
567
567
|
'white': isColorVeryLight,
|
|
568
568
|
}, style: {
|
|
@@ -618,7 +618,7 @@ const KritzelColorPalette = class {
|
|
|
618
618
|
render() {
|
|
619
619
|
const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);
|
|
620
620
|
const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';
|
|
621
|
-
return (index.h(index.Host, { key: '
|
|
621
|
+
return (index.h(index.Host, { key: '16aa405a43b3943473e577c5a6ab86adf4ae1ba9' }, index.h("div", { key: 'f65bb286889700dc1f0e8d84ff59721071b7b73a', class: {
|
|
622
622
|
'color-grid': true,
|
|
623
623
|
'expanded': this.isExpanded,
|
|
624
624
|
}, style: {
|
|
@@ -1186,13 +1186,13 @@ const KritzelControls = class {
|
|
|
1186
1186
|
// Separate tool controls from config control
|
|
1187
1187
|
const toolControls = this.internalControls.filter(c => c.type === 'tool' || c.type === 'separator');
|
|
1188
1188
|
const configControl = this.internalControls.find(c => c.type === 'config' && c.name === this.firstConfig?.name);
|
|
1189
|
-
return (index.h(index.Host, { key: '
|
|
1189
|
+
return (index.h(index.Host, { key: 'f66fd3057bd88d31d7d585f2c286feb7e33c3611', style: { display: this.visible ? '' : 'none' }, class: {
|
|
1190
1190
|
mobile: this.isTouchDevice,
|
|
1191
|
-
} }, this.isUtilityPanelVisible && (index.h("kritzel-utility-panel", { key: '
|
|
1191
|
+
} }, this.isUtilityPanelVisible && (index.h("kritzel-utility-panel", { key: '4841cd070407422f0081dd528566d3943d2db7cd', style: {
|
|
1192
1192
|
position: 'absolute',
|
|
1193
1193
|
bottom: '56px',
|
|
1194
1194
|
left: '12px',
|
|
1195
|
-
}, undoState: this.undoState, terms: this.terms, onUndo: () => this.kritzelEngine?.undo(), onRedo: () => this.kritzelEngine?.redo(), onDelete: () => this.kritzelEngine?.delete() })), index.h("div", { key: '
|
|
1195
|
+
}, undoState: this.undoState, terms: this.terms, onUndo: () => this.kritzelEngine?.undo(), onRedo: () => this.kritzelEngine?.redo(), onDelete: () => this.kritzelEngine?.delete() })), index.h("div", { key: '54fb1da3f8b070c4c75e27930c95ca06f46f48f1', class: "kritzel-controls" }, index.h("div", { key: '9ce27b621a8fb668716f1eb15f3b01302e476d86', class: { 'scroll-indicator-left': true, 'visible': this.canScrollLeft } }), index.h("div", { key: 'eb9f499b5139c481b5748b09ecf21cd414918a11', class: "kritzel-tools-scroll", ref: el => (this.toolsScrollRef = el), onScroll: this.handleToolsScroll }, toolControls.map(control => {
|
|
1196
1196
|
// Check if this control has sub-options (split-button)
|
|
1197
1197
|
if (control.subOptions?.length) {
|
|
1198
1198
|
const selectedSubOption = this.getSelectedSubOption(control);
|
|
@@ -1222,10 +1222,10 @@ const KritzelControls = class {
|
|
|
1222
1222
|
'kritzel-control': true,
|
|
1223
1223
|
'selected': this.activeControl?.name === control?.name,
|
|
1224
1224
|
}, key: control.name, "data-testid": `tool-${control.name}`, onClick: _event => this.handleControlClick?.(control), "aria-label": control.name.charAt(0).toUpperCase() + control.name.slice(1) }, index.h("kritzel-icon", { name: control.icon })));
|
|
1225
|
-
})), index.h("div", { key: '
|
|
1225
|
+
})), index.h("div", { key: 'c990abf4ff2970e6519c605135f3fbded691e91a', class: { 'scroll-indicator-right': true, 'visible': this.canScrollRight && !(configControl && this.activeControl && hasConfigUI) } }), configControl && this.activeControl && (index.h("div", { class: {
|
|
1226
1226
|
'kritzel-config-container': true,
|
|
1227
1227
|
'visible': hasConfigUI,
|
|
1228
|
-
}, key: configControl.name }, index.h("div", { key: '
|
|
1228
|
+
}, key: configControl.name }, index.h("div", { key: '1c163b818eed3a76bda9e802b083d2bfe8431c87', class: { 'config-gradient-left': true, 'visible': this.needsScrolling } }), index.h("kritzel-tooltip", { key: 'f7252d9aa17bdde580ca31cd558ba93d99822937', anchorElement: this.host.shadowRoot?.querySelector('.kritzel-config-container'), triggerElement: this.configTriggerRef }, index.h("kritzel-tool-config", { key: 'a15a873d8740d5c45a657bb4677a514fe9e183de', tool: this.activeControl.tool, theme: this.theme, engine: this.kritzelEngine, terms: this.terms, onToolChange: event => this.handleToolChange?.(event), onDisplayValuesChange: this.handleDisplayValuesChange, style: { width: '100%', height: '100%' } })), index.h("div", { key: 'ffbf1e35387ee732c6877f8425dbe07234d8233f', tabIndex: hasConfigUI ? 0 : -1, class: "kritzel-config", "data-testid": "tool-config", ref: el => {
|
|
1229
1229
|
if (el)
|
|
1230
1230
|
this.configTriggerRef = el;
|
|
1231
1231
|
}, onKeyDown: event => {
|
|
@@ -1234,7 +1234,7 @@ const KritzelControls = class {
|
|
|
1234
1234
|
}
|
|
1235
1235
|
}, style: {
|
|
1236
1236
|
cursor: 'pointer',
|
|
1237
|
-
} }, this.displayValues && (index.h("div", { key: '
|
|
1237
|
+
} }, this.displayValues && (index.h("div", { key: 'eb272119da9354eb069231c3d29a196c5b0e4aa2', class: "color-container" }, index.h("kritzel-color", { key: '465b3af943d740b83bd260ee493840edd235a9af', value: this.displayValues.color, theme: this.theme, size: 18, style: {
|
|
1238
1238
|
borderRadius: '50%',
|
|
1239
1239
|
border: 'none',
|
|
1240
1240
|
} })))))))));
|
|
@@ -1257,7 +1257,6 @@ const KritzelCurrentUser = class {
|
|
|
1257
1257
|
constructor(hostRef) {
|
|
1258
1258
|
index.registerInstance(this, hostRef);
|
|
1259
1259
|
}
|
|
1260
|
-
get host() { return index.getElement(this); }
|
|
1261
1260
|
/**
|
|
1262
1261
|
* The current user to display
|
|
1263
1262
|
*/
|
|
@@ -1268,28 +1267,26 @@ const KritzelCurrentUser = class {
|
|
|
1268
1267
|
avatarSize = 40;
|
|
1269
1268
|
/** Resolved localized strings keyed by term key, supplied by the editor. */
|
|
1270
1269
|
terms = {};
|
|
1271
|
-
dialogRef;
|
|
1272
|
-
handleAvatarClick = (event) => {
|
|
1273
|
-
event.stopPropagation();
|
|
1274
|
-
this.dialogRef?.open();
|
|
1275
|
-
};
|
|
1276
1270
|
render() {
|
|
1277
|
-
return (index.h(index.Host, { key: '
|
|
1271
|
+
return (index.h(index.Host, { key: 'e9746bbb98dbdae8f73ac7129bc1eb772746c576' }, index.h("kritzel-avatar", { key: '04f493ba649484cd95607c54b77e27134baa3122', user: this.user, size: this.avatarSize })));
|
|
1278
1272
|
}
|
|
1279
1273
|
};
|
|
1280
1274
|
KritzelCurrentUser.style = kritzelCurrentUserCss();
|
|
1281
1275
|
|
|
1282
|
-
const kritzelCurrentUserDialogCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.user-info{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.user-name{font-size:18px;font-weight:600;color:var(--kritzel-current-user-dialog-name-color, #333333);text-align:center;margin-top:8px}.user-email{font-size:14px;color:var(--kritzel-current-user-dialog-email-color, #666666);text-align:center}`;
|
|
1276
|
+
const kritzelCurrentUserDialogCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.user-info{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.user-name{font-size:18px;font-weight:600;color:var(--kritzel-current-user-dialog-name-color, #333333);text-align:center;margin-top:8px}.user-email{font-size:14px;color:var(--kritzel-current-user-dialog-email-color, #666666);text-align:center}.logout-button{margin-top:16px;width:100%;--kritzel-button-width:100%;--kritzel-button-primary-background-color:var(--kritzel-current-user-dialog-logout-button-background-color, #007AFF);--kritzel-button-primary-hover-background-color:var(--kritzel-current-user-dialog-logout-button-hover-background-color, #006ae6);--kritzel-button-primary-active-background-color:var(--kritzel-current-user-dialog-logout-button-active-background-color, #005bbf);--kritzel-button-primary-color:var(--kritzel-current-user-dialog-logout-button-color, #ffffff)}`;
|
|
1283
1277
|
|
|
1284
1278
|
const KritzelCurrentUserDialog = class {
|
|
1285
1279
|
constructor(hostRef) {
|
|
1286
1280
|
index.registerInstance(this, hostRef);
|
|
1281
|
+
this.logoutRequest = index.createEvent(this, "logoutRequest");
|
|
1287
1282
|
}
|
|
1288
1283
|
get host() { return index.getElement(this); }
|
|
1289
1284
|
user;
|
|
1290
1285
|
/** Resolved localized strings keyed by term key, supplied by the editor. */
|
|
1291
1286
|
terms = {};
|
|
1292
1287
|
isDialogOpen = false;
|
|
1288
|
+
/** Emitted when the user clicks the logout action. */
|
|
1289
|
+
logoutRequest;
|
|
1293
1290
|
async open() {
|
|
1294
1291
|
this.isDialogOpen = true;
|
|
1295
1292
|
}
|
|
@@ -1299,6 +1296,10 @@ const KritzelCurrentUserDialog = class {
|
|
|
1299
1296
|
closeDialog = () => {
|
|
1300
1297
|
this.isDialogOpen = false;
|
|
1301
1298
|
};
|
|
1299
|
+
handleLogout = () => {
|
|
1300
|
+
this.logoutRequest.emit();
|
|
1301
|
+
this.closeDialog();
|
|
1302
|
+
};
|
|
1302
1303
|
getDisplayName() {
|
|
1303
1304
|
if (!this.user)
|
|
1304
1305
|
return undefined;
|
|
@@ -1308,7 +1309,7 @@ const KritzelCurrentUserDialog = class {
|
|
|
1308
1309
|
}
|
|
1309
1310
|
render() {
|
|
1310
1311
|
const displayName = this.getDisplayName();
|
|
1311
|
-
return (index.h(index.Host, { key: '
|
|
1312
|
+
return (index.h(index.Host, { key: '6eb573d072c5c0b47de4a88538a507adf49bd9b4' }, index.h("kritzel-dialog", { key: '9e85ed790f146ac408023759b1fe87e60bc80282', dialogTitle: this.terms['currentUser.dialogTitle'] ?? 'Account', isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, index.h("div", { key: '33a55e6023ad6f63514085d57b7278d4733bd411', class: "user-info" }, index.h("kritzel-avatar", { key: '4580f83fc6c5bcf8a1ffcd0d635da233817233d3', user: this.user, size: 80 }), displayName && index.h("div", { key: '5e2b98005e9b4ab7cc3db2dc81f4180e8ba3abea', class: "user-name" }, displayName), this.user?.email && index.h("div", { key: '1041266c4a4525d2f08c60d59bec5a518de2184b', class: "user-email" }, this.user.email), index.h("kritzel-button", { key: 'b695c05d24ab9d4d252a45ec496d75d79583ed4d', class: "logout-button", variant: "primary", onButtonClick: this.handleLogout }, this.terms['menu.logout'] ?? 'Logout')))));
|
|
1312
1313
|
}
|
|
1313
1314
|
};
|
|
1314
1315
|
KritzelCurrentUserDialog.style = kritzelCurrentUserDialogCss();
|
|
@@ -2132,7 +2133,7 @@ const DEFAULT_SYNC_CONFIG = {
|
|
|
2132
2133
|
providers: [],
|
|
2133
2134
|
};
|
|
2134
2135
|
|
|
2135
|
-
const kritzelEditorCss = () => `kritzel-editor{display:flex;margin:0;position:relative;container-type:inline-size;overflow:hidden;width:100%;height:100%;align-items:center;justify-content:center;touch-action:manipulation;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:start;line-height:normal}kritzel-controls{position:absolute;left:0;right:0;margin-inline:auto;width:max-content;max-width:calc(100% - 16px);bottom:var(--kritzel-editor-controls-bottom, 14px);transition:transform var(--kritzel-editor-controls-transition-duration, 0.1s) var(--kritzel-editor-controls-transition, ease-in-out)}kritzel-controls.keyboard-open{transform:var(--kritzel-editor-controls-transform, translateY(300%))}.top-left-buttons{position:absolute;top:var(--kritzel-editor-top-left-buttons-top, 14px);left:var(--kritzel-editor-top-left-buttons-left, 14px);display:flex;align-items:flex-start;gap:8px}.top-center-notification-layer{position:absolute;top:var(--kritzel-editor-top-center-notification-top, 14px);left:0;right:0;z-index:var(--kritzel-editor-top-center-notification-z-index, 10001);display:flex;justify-content:center;pointer-events:none}.top-center-notification-container{width:min(90vw, 420px);pointer-events:auto;animation:kritzel-notification-slide-in var(--kritzel-editor-notification-animation-duration, 220ms) var(--kritzel-editor-notification-animation-easing, cubic-bezier(0.22, 1, 0.36, 1))}.top-center-notification-container.is-dismissing{animation:kritzel-notification-fade-out var(--kritzel-editor-notification-dismiss-animation-duration, 180ms) var(--kritzel-editor-notification-dismiss-animation-easing, ease-in) forwards}@keyframes kritzel-notification-slide-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes kritzel-notification-fade-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion: reduce){.top-center-notification-container{animation:none}}.top-right-buttons{position:absolute;top:var(--kritzel-editor-top-right-buttons-top, 14px);right:var(--kritzel-editor-top-right-buttons-right, 14px);display:flex;align-items:center;gap:8px}.bottom-left-buttons{position:absolute;left:var(--kritzel-editor-top-left-buttons-left, 14px);bottom:var(--kritzel-editor-controls-bottom, 14px);display:flex;align-items:flex-end}@container (max-width: 767px){.bottom-left-buttons{display:none}}.top-right-button{display:flex;align-items:center;justify-content:center;width:50px;height:50px;padding:0;border:var(--kritzel-split-button-border, 1px solid #ebebeb);border-radius:var(--kritzel-split-button-border-radius, 12px);background-color:var(--kritzel-split-button-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent}.top-right-button:hover{background-color:#f5f5f5}.top-right-button:active{background-color:#ebebeb}`;
|
|
2136
|
+
const kritzelEditorCss = () => `kritzel-editor{display:flex;margin:0;position:relative;container-type:inline-size;overflow:hidden;width:100%;height:100%;align-items:center;justify-content:center;touch-action:manipulation;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:start;line-height:normal}.editor-content{position:absolute;inset:0}kritzel-controls{position:absolute;left:0;right:0;margin-inline:auto;width:max-content;max-width:calc(100% - 16px);bottom:var(--kritzel-editor-controls-bottom, 14px);transition:transform var(--kritzel-editor-controls-transition-duration, 0.1s) var(--kritzel-editor-controls-transition, ease-in-out)}kritzel-controls.keyboard-open{transform:var(--kritzel-editor-controls-transform, translateY(300%))}.top-left-buttons{position:absolute;top:var(--kritzel-editor-top-left-buttons-top, 14px);left:var(--kritzel-editor-top-left-buttons-left, 14px);display:flex;align-items:flex-start;gap:8px}.top-center-notification-layer{position:absolute;top:var(--kritzel-editor-top-center-notification-top, 14px);left:0;right:0;z-index:var(--kritzel-editor-top-center-notification-z-index, 10001);display:flex;justify-content:center;pointer-events:none}.top-center-notification-container{width:min(90vw, 420px);pointer-events:auto;animation:kritzel-notification-slide-in var(--kritzel-editor-notification-animation-duration, 220ms) var(--kritzel-editor-notification-animation-easing, cubic-bezier(0.22, 1, 0.36, 1))}.top-center-notification-container.is-dismissing{animation:kritzel-notification-fade-out var(--kritzel-editor-notification-dismiss-animation-duration, 180ms) var(--kritzel-editor-notification-dismiss-animation-easing, ease-in) forwards}@keyframes kritzel-notification-slide-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes kritzel-notification-fade-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion: reduce){.top-center-notification-container{animation:none}}.top-right-buttons{position:absolute;top:var(--kritzel-editor-top-right-buttons-top, 14px);right:var(--kritzel-editor-top-right-buttons-right, 14px);display:flex;align-items:center;gap:8px}.bottom-left-buttons{position:absolute;left:var(--kritzel-editor-top-left-buttons-left, 14px);bottom:var(--kritzel-editor-controls-bottom, 14px);display:flex;align-items:flex-end}@container (max-width: 767px){.bottom-left-buttons{display:none}}.top-right-button{display:flex;align-items:center;justify-content:center;width:50px;height:50px;padding:0;border:var(--kritzel-split-button-border, 1px solid #ebebeb);border-radius:var(--kritzel-split-button-border-radius, 12px);background-color:var(--kritzel-split-button-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent}.top-right-button:hover{background-color:#f5f5f5}.top-right-button:active{background-color:#ebebeb}`;
|
|
2136
2137
|
|
|
2137
2138
|
const KritzelEditor = class {
|
|
2138
2139
|
constructor(hostRef) {
|
|
@@ -2363,6 +2364,8 @@ const KritzelEditor = class {
|
|
|
2363
2364
|
isEditorVisible = false;
|
|
2364
2365
|
activeNotification;
|
|
2365
2366
|
isNotificationDismissing = false;
|
|
2367
|
+
/** Combined loading state reported by the engine (external `isLoading` prop or internal workspace loading). Starts true so the overlay is shown until the engine reports otherwise. */
|
|
2368
|
+
isEngineLoading = true;
|
|
2366
2369
|
notificationDismissTimeout;
|
|
2367
2370
|
notificationDismissAnimationTimeout;
|
|
2368
2371
|
notificationDisplayDurationMs = 5000;
|
|
@@ -2668,6 +2671,7 @@ const KritzelEditor = class {
|
|
|
2668
2671
|
splitButtonRef;
|
|
2669
2672
|
shareDialogRef;
|
|
2670
2673
|
loginDialogRef;
|
|
2674
|
+
currentUserDialogRef;
|
|
2671
2675
|
componentWillLoad() {
|
|
2672
2676
|
this.loadSettingsFromStorage();
|
|
2673
2677
|
this.applyTheme();
|
|
@@ -2788,6 +2792,10 @@ const KritzelEditor = class {
|
|
|
2788
2792
|
event.stopPropagation();
|
|
2789
2793
|
this.awarenessChange.emit(event.detail);
|
|
2790
2794
|
}
|
|
2795
|
+
handleLoadingChange(event) {
|
|
2796
|
+
event.stopPropagation();
|
|
2797
|
+
this.isEngineLoading = event.detail;
|
|
2798
|
+
}
|
|
2791
2799
|
handleNotificationsChange(event) {
|
|
2792
2800
|
event.stopPropagation();
|
|
2793
2801
|
this.clearNotificationDismissAnimationTimer();
|
|
@@ -2892,15 +2900,7 @@ const KritzelEditor = class {
|
|
|
2892
2900
|
label: this.resolvedTerms['menu.settings'] ?? 'Settings',
|
|
2893
2901
|
icon: 'settings',
|
|
2894
2902
|
action: () => this.settingsRef.open(),
|
|
2895
|
-
}
|
|
2896
|
-
{
|
|
2897
|
-
id: 'logout',
|
|
2898
|
-
label: this.resolvedTerms['menu.logout'] ?? 'Logout',
|
|
2899
|
-
icon: 'log-out',
|
|
2900
|
-
color: '#ff3b30',
|
|
2901
|
-
isVisible: this.isLoggedIn,
|
|
2902
|
-
action: () => this.logout.emit(),
|
|
2903
|
-
},
|
|
2903
|
+
}
|
|
2904
2904
|
];
|
|
2905
2905
|
}
|
|
2906
2906
|
handleToggleIsPublic = async (event) => {
|
|
@@ -2926,6 +2926,9 @@ const KritzelEditor = class {
|
|
|
2926
2926
|
handleProviderLogin = (event) => {
|
|
2927
2927
|
this.login.emit(event.detail);
|
|
2928
2928
|
};
|
|
2929
|
+
handleCurrentUserLogout = () => {
|
|
2930
|
+
this.logout.emit();
|
|
2931
|
+
};
|
|
2929
2932
|
get isLoggedIn() {
|
|
2930
2933
|
return !!this.user && !this.user.isGuest;
|
|
2931
2934
|
}
|
|
@@ -3077,35 +3080,40 @@ const KritzelEditor = class {
|
|
|
3077
3080
|
const isLoggedIn = this.isLoggedIn;
|
|
3078
3081
|
const shouldShowCurrentUser = isLoggedIn;
|
|
3079
3082
|
const shouldShowLoginButton = this.isReady && !!this.loginConfig && !isLoggedIn;
|
|
3080
|
-
return (index.h(index.Host, { key: '
|
|
3083
|
+
return (index.h(index.Host, { key: 'a397bb3a5ab632193a0d6af07054d9235c8af7ba' }, index.h("kritzel-loading-overlay", { key: '8ac3ec51ec15a7ce3dfac4e1afb7e2d272d6fee2', visible: this.isLoading || !this.isEditorVisible || this.isEngineLoading, text: this.resolvedTerms['engine.loading'] ?? 'Loading...' }), index.h("div", { key: '0ac709cf7d3e9889f99675f20c1f2ac5bcca55da', class: "editor-content", style: {
|
|
3081
3084
|
opacity: this.isEditorVisible ? '1' : '0',
|
|
3082
3085
|
visibility: this.isEditorVisible ? 'visible' : 'hidden',
|
|
3083
3086
|
transition: 'opacity 0.2s ease-in-out, visibility 0.2s ease-in-out',
|
|
3084
|
-
} }, index.h("div", { key: '
|
|
3087
|
+
} }, index.h("div", { key: '019cbb191155260c635cb13a4d94eebbb5913045', class: "top-left-buttons" }, index.h("kritzel-workspace-manager", { key: 'b9a60281c57f90dedebd2a01ccc27a689a8f2a09', visible: this.isWorkspaceManagerVisible, workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, terms: this.resolvedTerms, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), index.h("kritzel-back-to-content", { key: 'b0b625e1cd07f29d9622b03e49cf75c9324b2d38', visible: this.isBackToContentButtonVisible, text: this.resolvedTerms['backToContent.label'] ?? 'Back to content', onBackToContent: () => this.backToContent() })), this.activeNotification && (index.h("div", { key: '80868e85dc8a0810750ff5dd04c59057d81fb823', class: "top-center-notification-layer", role: "presentation" }, index.h("div", { key: '8cfe3895cb8dcd137950daff0e677d397c20817b', class: { 'top-center-notification-container': true, 'is-dismissing': this.isNotificationDismissing }, role: "presentation" }, index.h("kritzel-notification-card", { key: 'f50a8ff5fba9ee8df8bb0fa5c2b3198ad30fd8cd', notification: this.activeNotification, locale: this.locale, onDismiss: this.dismissNotification, onHoverChange: event => this.handleNotificationHoverChange(event) })))), index.h("kritzel-engine", { key: '7b31643384b19dfd84b6093a4ccb719dd04b7669', ref: el => {
|
|
3085
3088
|
if (el) {
|
|
3086
3089
|
this.engineRef = el;
|
|
3087
3090
|
}
|
|
3088
|
-
}, 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), onNotificationsChange: event => this.handleNotificationsChange(event) }), index.h("kritzel-controls", { key: '
|
|
3091
|
+
}, 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), onNotificationsChange: event => this.handleNotificationsChange(event), onLoadingChange: event => this.handleLoadingChange(event) }), index.h("kritzel-controls", { key: '14ee52a07381785c4b8ce1f2e1b7304d44e0e128', visible: this.isControlsVisible, class: { 'keyboard-open': this.isVirtualKeyboardOpen }, ref: el => {
|
|
3089
3092
|
if (el) {
|
|
3090
3093
|
this.controlsRef = el;
|
|
3091
3094
|
}
|
|
3092
|
-
}, controls: this.controls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), index.h("div", { key: '
|
|
3095
|
+
}, controls: this.controls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), index.h("div", { key: 'c9ddf5fe7d74f32aff8182ce9dd70931f35a7274', class: "bottom-left-buttons" }, index.h("kritzel-zoom-panel", { key: '3ede1bacaa3ff6876429347c8edc20939b1ec59e', visible: this.isZoomPanelVisible, disabled: !this.isZoomingEnabled, zoomPercent: this.currentZoomPercent, terms: this.resolvedTerms, onZoomIn: () => this.zoomIn(), onZoomOut: () => this.zoomOut() })), index.h("div", { key: 'af1f5f33065d5693e1c363f6e0d49d43cf839f88', class: "top-right-buttons" }, index.h("kritzel-settings", { key: 'f281c4b2c47d0fa15e947c2bd9e6e34f6ab064cf', ref: el => {
|
|
3093
3096
|
if (el) {
|
|
3094
3097
|
this.settingsRef = el;
|
|
3095
3098
|
}
|
|
3096
|
-
}, 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) }), index.h("kritzel-export", { key: '
|
|
3099
|
+
}, 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) }), index.h("kritzel-export", { key: 'aa9f4d755cd429e287bd9dc513f059006e47c037', ref: el => {
|
|
3097
3100
|
if (el) {
|
|
3098
3101
|
this.exportRef = el;
|
|
3099
3102
|
}
|
|
3100
|
-
}, workspaceName: this.activeWorkspace?.name || 'workspace', terms: this.resolvedTerms, onExportPng: () => this.engineRef.exportViewportAsPng(), onExportSvg: () => this.engineRef.exportViewportAsSvg(), onExportJson: event => this.engineRef.downloadAsJson(event.detail) }), index.h("kritzel-active-users", { key: '
|
|
3103
|
+
}, workspaceName: this.activeWorkspace?.name || 'workspace', terms: this.resolvedTerms, onExportPng: () => this.engineRef.exportViewportAsPng(), onExportSvg: () => this.engineRef.exportViewportAsSvg(), onExportJson: event => this.engineRef.downloadAsJson(event.detail) }), index.h("kritzel-active-users", { key: 'e7f019162bf7fa84c591e78c9255ed54d49d624f', users: this.activeUsers }), shouldShowCurrentUser && index.h("kritzel-current-user", { key: '5b51e312ca1d94717c8eae781435a1c253dfecc3', user: this.user, terms: this.resolvedTerms, onClick: () => this.currentUserDialogRef?.open() }), shouldShowCurrentUser && (index.h("kritzel-current-user-dialog", { key: '328297225ea30570baa1aeec8dffda3e5fb90f6e', ref: el => {
|
|
3104
|
+
if (el) {
|
|
3105
|
+
this.currentUserDialogRef = el;
|
|
3106
|
+
this.currentUserDialogRef.addEventListener('logoutRequest', this.handleCurrentUserLogout);
|
|
3107
|
+
}
|
|
3108
|
+
}, user: this.user, terms: this.resolvedTerms })), shouldShowLoginButton && (index.h("kritzel-button", { key: '719da0f8c343b0e3be80b37318bb27e102ea0f1e', onButtonClick: () => this.loginDialogRef?.open() }, this.resolvedTerms['login.dialogTitle'] ?? 'Sign in')), index.h("kritzel-more-menu", { key: 'c3d0f82f8e21b53b966fcc99c598051b6e294b6a', items: this.moreMenuItems, visible: this.isMoreMenuVisible, terms: this.resolvedTerms }), index.h("kritzel-share-dialog", { key: '49a929e16684131fe4e0c7cc9d5f5ad769b6785c', ref: el => {
|
|
3101
3109
|
if (el) {
|
|
3102
3110
|
this.shareDialogRef = el;
|
|
3103
3111
|
}
|
|
3104
|
-
}, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (index.h("kritzel-login-dialog", { key: '
|
|
3112
|
+
}, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (index.h("kritzel-login-dialog", { key: '113bd2574096d3e64ff36b2b8d152b28ff4ba8f7', ref: el => {
|
|
3105
3113
|
if (el) {
|
|
3106
3114
|
this.loginDialogRef = el;
|
|
3107
3115
|
}
|
|
3108
|
-
}, providers: this.loginConfig.providers, dialogTitle: this.loginConfig.title ?? this.resolvedTerms['login.dialogTitle'] ?? 'Sign in', subtitle: this.loginConfig.subtitle, onProviderLogin: this.handleProviderLogin })))));
|
|
3116
|
+
}, providers: this.loginConfig.providers, dialogTitle: this.loginConfig.title ?? this.resolvedTerms['login.dialogTitle'] ?? 'Sign in', subtitle: this.loginConfig.subtitle, onProviderLogin: this.handleProviderLogin }))))));
|
|
3109
3117
|
}
|
|
3110
3118
|
static get watchers() { return {
|
|
3111
3119
|
"isEngineReady": [{
|
|
@@ -22105,6 +22113,7 @@ class KritzelObjectMap {
|
|
|
22105
22113
|
_temporaryItemsCount = 0;
|
|
22106
22114
|
_idMap = new Map();
|
|
22107
22115
|
_awareness = null;
|
|
22116
|
+
_networkSyncPromise = null;
|
|
22108
22117
|
// Store observer/listener references for cleanup
|
|
22109
22118
|
_objectsObserver = null;
|
|
22110
22119
|
_stackItemAddedHandler = null;
|
|
@@ -22134,6 +22143,13 @@ class KritzelObjectMap {
|
|
|
22134
22143
|
get isReady() {
|
|
22135
22144
|
return this._isReady;
|
|
22136
22145
|
}
|
|
22146
|
+
/**
|
|
22147
|
+
* Promise that settles when network providers finish connecting.
|
|
22148
|
+
* Resolves immediately if no network providers. Awaited by the loading overlay.
|
|
22149
|
+
*/
|
|
22150
|
+
whenNetworkSynced() {
|
|
22151
|
+
return this._networkSyncPromise ?? Promise.resolve();
|
|
22152
|
+
}
|
|
22137
22153
|
/**
|
|
22138
22154
|
* Returns the Yjs Awareness instance, if a network provider is available.
|
|
22139
22155
|
*/
|
|
@@ -22423,13 +22439,13 @@ class KritzelObjectMap {
|
|
|
22423
22439
|
if (showSyncProviderInfo && networkProviders.length > 0) {
|
|
22424
22440
|
console.info(`[Kritzel] Workspace network providers connecting in background: ${networkProviders.length}`);
|
|
22425
22441
|
}
|
|
22426
|
-
|
|
22427
|
-
|
|
22428
|
-
|
|
22429
|
-
|
|
22430
|
-
|
|
22431
|
-
|
|
22432
|
-
|
|
22442
|
+
const networkConnectPromises = networkProviders.map(provider => provider.connect().catch(err => {
|
|
22443
|
+
if (showSyncProviderInfo) {
|
|
22444
|
+
console.error(`[Kritzel] Network sync provider "${provider.constructor.name}" failed to connect:`, err);
|
|
22445
|
+
}
|
|
22446
|
+
}));
|
|
22447
|
+
// Network sync awaited by loading overlay to show remote workspace hydration
|
|
22448
|
+
this._networkSyncPromise = networkConnectPromises.length > 0 ? Promise.allSettled(networkConnectPromises).then(() => undefined) : null;
|
|
22433
22449
|
this._isReady = true;
|
|
22434
22450
|
// Find the first provider that exposes awareness (network providers)
|
|
22435
22451
|
// Awareness is available immediately after provider construction, before connect() resolves
|
|
@@ -27423,7 +27439,7 @@ class KritzelWheelHelper {
|
|
|
27423
27439
|
}
|
|
27424
27440
|
}
|
|
27425
27441
|
|
|
27426
|
-
const kritzelEngineCss = () => `:host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.ProseMirror{outline:none}p,h1,h2,h3,h4,h5,h6,blockquote,pre{margin:0;padding:0}.
|
|
27442
|
+
const kritzelEngineCss = () => `:host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.ProseMirror{outline:none}p,h1,h2,h3,h4,h5,h6,blockquote,pre{margin:0;padding:0}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}.PlaygroundEditorTheme__quote{margin:0;margin-left:20px;margin-bottom:10px;font-size:15px;color:rgb(101, 103, 107);border-left-color:rgb(206, 208, 212);border-left-width:4px;border-left-style:solid;padding-left:16px}`;
|
|
27427
27443
|
|
|
27428
27444
|
const KritzelEngine = class {
|
|
27429
27445
|
get host() { return index.getElement(this); }
|
|
@@ -27653,6 +27669,8 @@ const KritzelEngine = class {
|
|
|
27653
27669
|
awarenessChange;
|
|
27654
27670
|
/** Emitted when notifications change. */
|
|
27655
27671
|
notificationsChange;
|
|
27672
|
+
/** Emitted when the combined loading state (external `isLoading` prop or internal workspace loading) changes. */
|
|
27673
|
+
loadingChange;
|
|
27656
27674
|
forceUpdate = 0;
|
|
27657
27675
|
/** Manually triggers the `objectsSelectionChange` event. */
|
|
27658
27676
|
async triggerSelectionChange() {
|
|
@@ -29111,6 +29129,7 @@ const KritzelEngine = class {
|
|
|
29111
29129
|
_objectDistanceFadeCloseMinOpacity = 0;
|
|
29112
29130
|
syncLoadingState() {
|
|
29113
29131
|
this.core.store.state.isLoading = this._isWorkspaceLoading || this.isLoading;
|
|
29132
|
+
this.loadingChange.emit(this.core.store.state.isLoading);
|
|
29114
29133
|
}
|
|
29115
29134
|
applyToolConfig(tool, toolConfig) {
|
|
29116
29135
|
Object.entries(toolConfig).forEach(([key, value]) => {
|
|
@@ -29156,6 +29175,7 @@ const KritzelEngine = class {
|
|
|
29156
29175
|
this.viewportChange = index.createEvent(this, "viewportChange");
|
|
29157
29176
|
this.awarenessChange = index.createEvent(this, "awarenessChange");
|
|
29158
29177
|
this.notificationsChange = index.createEvent(this, "notificationsChange");
|
|
29178
|
+
this.loadingChange = index.createEvent(this, "loadingChange");
|
|
29159
29179
|
this.core = new KritzelCore(this);
|
|
29160
29180
|
}
|
|
29161
29181
|
disconnectedCallback() {
|
|
@@ -29384,14 +29404,18 @@ const KritzelEngine = class {
|
|
|
29384
29404
|
this._workspaceInitializationTargetKey = targetKey;
|
|
29385
29405
|
try {
|
|
29386
29406
|
await initializationPromise;
|
|
29407
|
+
// Wait for network providers to sync so overlay stays visible until remote data arrives
|
|
29408
|
+
const initializedObjects = this.core.store.objects;
|
|
29409
|
+
await initializedObjects?.whenNetworkSynced();
|
|
29387
29410
|
}
|
|
29388
29411
|
finally {
|
|
29412
|
+
// Only the most recent init clears loading state to prevent race conditions
|
|
29389
29413
|
if (this._workspaceInitializationPromise === initializationPromise) {
|
|
29390
29414
|
this._workspaceInitializationPromise = null;
|
|
29391
29415
|
this._workspaceInitializationTargetKey = null;
|
|
29416
|
+
this._isWorkspaceLoading = false;
|
|
29417
|
+
this.syncLoadingState();
|
|
29392
29418
|
}
|
|
29393
|
-
this._isWorkspaceLoading = false;
|
|
29394
|
-
this.syncLoadingState();
|
|
29395
29419
|
}
|
|
29396
29420
|
}
|
|
29397
29421
|
emitObjectsChange() {
|
|
@@ -29510,7 +29534,7 @@ const KritzelEngine = class {
|
|
|
29510
29534
|
}
|
|
29511
29535
|
render() {
|
|
29512
29536
|
if (!this.viewport) {
|
|
29513
|
-
return
|
|
29537
|
+
return index.h(index.Host, null);
|
|
29514
29538
|
}
|
|
29515
29539
|
const currentTheme = this.core.themeManager.getStoredTheme();
|
|
29516
29540
|
const computedStyle = window.getComputedStyle(this.host);
|
|
@@ -29567,7 +29591,7 @@ const KritzelEngine = class {
|
|
|
29567
29591
|
this.emitObjectsInViewportChange();
|
|
29568
29592
|
}
|
|
29569
29593
|
}
|
|
29570
|
-
return (index.h(index.Host, null, this.core.store.state.
|
|
29594
|
+
return (index.h(index.Host, null, this.core.store.state.debugInfo.showViewportInfo && (index.h("div", { class: "debug-panel" }, index.h("div", null, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), index.h("div", null, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), index.h("div", null, "TranslateX: ", this.core.store.state?.translateX), index.h("div", null, "TranslateY: ", this.core.store.state?.translateY), index.h("div", null, "ViewportWidth: ", this.core.store.state?.viewportWidth), index.h("div", null, "ViewportHeight: ", this.core.store.state?.viewportHeight), index.h("div", null, "PointerCount: ", this.core.store.state.pointers.size), index.h("div", null, "Scale: ", this.core.store.state?.scale), index.h("div", null, "ActiveTool: ", this.core.store.state?.activeTool?.name), index.h("div", null, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), index.h("div", null, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), index.h("div", null, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), index.h("div", null, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), index.h("div", null, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), index.h("div", null, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), index.h("div", null, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), index.h("div", null, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), index.h("div", null, "IsRotationHandleHovered: ", this.core.store.state.isRotationHandleHovered ? 'true' : 'false'), index.h("div", null, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), index.h("div", null, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), index.h("div", null, "IsPointerDown: ", this.core.store.isPointerDown ? 'true' : 'false'), index.h("div", null, "PointerX: ", this.core.store.state?.pointerX), index.h("div", null, "PointerY: ", this.core.store.state?.pointerY), index.h("div", null, "TotalObjects: ", this.core.store.totalObjectCount), index.h("div", null, "ObjectsInViewport: ", this.core.store.objectsInViewport.length), index.h("div", null, "SelectedObjects: ", this.core.store.selectionGroup?.objects.length || 0), index.h("div", null, "ViewportCenter: (", viewportCenterX.toFixed(2), ", ", viewportCenterY.toFixed(2), ")"))), index.h("div", { id: "origin", class: "origin", style: {
|
|
29571
29595
|
transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,
|
|
29572
29596
|
} }, visibleObjects?.map(object => {
|
|
29573
29597
|
const { multiplied: effectiveOpacity, overridden: effectiveOpacityString } = this.getObjectEffectiveOpacity(object, viewportScale);
|
|
@@ -30165,7 +30189,7 @@ const KritzelExport = class {
|
|
|
30165
30189
|
return (index.h("div", { class: "export-tab-content" }, index.h("kritzel-input", { label: this.terms['export.filename.label'] ?? 'Filename', value: this.exportFilename, placeholder: this.terms['export.filename.placeholder'] ?? 'Enter filename', suffix: ".json", onValueChange: this.handleFilenameChange })));
|
|
30166
30190
|
}
|
|
30167
30191
|
render() {
|
|
30168
|
-
return (index.h(index.Host, { key: '
|
|
30192
|
+
return (index.h(index.Host, { key: '5706e0f8688777826452ca0cf81e2581f6e2d14a' }, index.h("kritzel-dialog", { key: '8d0d26a672604aec2b899a7ea05ab40031ac9c43', isOpen: this.isDialogOpen, dialogTitle: this.terms['export.dialogTitle'] ?? 'Export', closable: true, contained: true, onDialogClose: this.closeDialog }, index.h("div", { key: 'a4c3f5a2961aca9dd5cba4045b8bd53635681ab0', class: "export-content" }, index.h("kritzel-pill-tabs", { key: '51a40a8596e492130cc8fa4c977cde916d7d8392', tabs: this.tabs, value: this.activeTab, onValueChange: this.handleTabChange }), this.activeTab === 'viewport' && this.renderViewportExport(), this.activeTab === 'workspace' && this.renderWorkspaceExport(), index.h("button", { key: 'a4b8e1503a0a8e682d10623bc334fcc70b5ea243', class: "export-primary-button", onClick: this.handleExport }, this.terms['export.exportButton'] ?? 'Export')))));
|
|
30169
30193
|
}
|
|
30170
30194
|
};
|
|
30171
30195
|
KritzelExport.style = kritzelExportCss();
|
|
@@ -30180,7 +30204,7 @@ const KritzelFont = class {
|
|
|
30180
30204
|
size = 24;
|
|
30181
30205
|
color = '#000000';
|
|
30182
30206
|
render() {
|
|
30183
|
-
return (index.h(index.Host, { key: '
|
|
30207
|
+
return (index.h(index.Host, { key: '054371cac30a2433611139a670406b0a1e3b99ff' }, index.h("div", { key: 'b4f2142b3cb31d067f39952a38b6f665f28f63bf', class: "font-preview", style: {
|
|
30184
30208
|
fontFamily: this.fontFamily,
|
|
30185
30209
|
fontSize: `${this.size}px`,
|
|
30186
30210
|
color: this.color
|
|
@@ -30256,7 +30280,7 @@ const KritzelFontSize = class {
|
|
|
30256
30280
|
render() {
|
|
30257
30281
|
const color = 'var(--kritzel-global-text-primary)';
|
|
30258
30282
|
const sizes = this.sizes ?? [];
|
|
30259
|
-
return (index.h(index.Host, { key: '
|
|
30283
|
+
return (index.h(index.Host, { key: '56eb19367abe312bac3b626cfcae3b1ff6e90d21' }, sizes.map(size => (index.h("div", { tabIndex: 0, class: {
|
|
30260
30284
|
'size-container': true,
|
|
30261
30285
|
'selected': this.selectedSize === size,
|
|
30262
30286
|
}, onClick: () => this.handleSizeClick(size), onKeyDown: event => this.handleKeyDown(event, size) }, index.h("kritzel-font", { fontFamily: this.fontFamily, size: size, color: color }))))));
|
|
@@ -30323,7 +30347,7 @@ const KritzelInput = class {
|
|
|
30323
30347
|
this.valueChange.emit(input.value);
|
|
30324
30348
|
};
|
|
30325
30349
|
render() {
|
|
30326
|
-
return (index.h(index.Host, { key: '
|
|
30350
|
+
return (index.h(index.Host, { key: '46a0a48902a06ad85edcbaad3679ce3fe9ba850c' }, index.h("div", { key: 'a6beaf920614aa959d2fbd68b7268afba8637358', class: "input-container" }, this.label && index.h("label", { key: 'ca6d3fb3c22f1540795dbb0695ddd9b87cc05eee', class: "input-label" }, this.label), index.h("div", { key: '78d116e82531a9cca996d594792245449bcaf9c8', class: { 'input-wrapper': true, 'has-suffix': !!this.suffix } }, index.h("input", { key: '0d10d6356dea3a11338172bbe8c3c878eefcc708', type: this.type, class: "text-input", value: this.inputValue, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput }), this.suffix && index.h("span", { key: '0e6166ba8728efc1035302d7fb048306efbe5a68', class: "input-suffix" }, this.suffix)))));
|
|
30327
30351
|
}
|
|
30328
30352
|
static get watchers() { return {
|
|
30329
30353
|
"value": [{
|
|
@@ -30416,6 +30440,26 @@ const KritzelLineEndings = class {
|
|
|
30416
30440
|
};
|
|
30417
30441
|
KritzelLineEndings.style = kritzelLineEndingsCss();
|
|
30418
30442
|
|
|
30443
|
+
const kritzelLoadingOverlayCss = () => `:host{display:contents}.loading-overlay{position:absolute;inset:0;z-index:var(--kritzel-loading-overlay-z-index, 9999);display:flex;align-items:center;justify-content:center;gap:10px;background-color:var(--kritzel-loading-overlay-background, rgba(255, 255, 255, 0.6));color:var(--kritzel-loading-overlay-color, #333);font-family:var(--kritzel-font-family, sans-serif);font-size:1.25rem;opacity:0;pointer-events:none;visibility:hidden}.loading-overlay.visible{pointer-events:all;visibility:visible;animation:kritzel-loading-fade-in 200ms ease-out var(--kritzel-loading-overlay-delay, 300ms) forwards}.loading-spinner{width:20px;height:20px;box-sizing:border-box;display:block;flex-shrink:0;border:2px solid var(--kritzel-loading-overlay-spinner-color, #cccccc);border-top-color:var(--kritzel-loading-overlay-spinner-active-color, #333333);border-radius:50%;animation:kritzel-loading-spin 0.6s linear infinite}@keyframes kritzel-loading-spin{to{transform:rotate(360deg)}}@keyframes kritzel-loading-fade-in{to{opacity:1}}`;
|
|
30444
|
+
|
|
30445
|
+
const KritzelLoadingOverlay = class {
|
|
30446
|
+
constructor(hostRef) {
|
|
30447
|
+
index.registerInstance(this, hostRef);
|
|
30448
|
+
}
|
|
30449
|
+
/**
|
|
30450
|
+
* Whether the overlay is visible
|
|
30451
|
+
*/
|
|
30452
|
+
visible = false;
|
|
30453
|
+
/**
|
|
30454
|
+
* The text to display next to the spinner
|
|
30455
|
+
*/
|
|
30456
|
+
text = 'Loading...';
|
|
30457
|
+
render() {
|
|
30458
|
+
return (index.h(index.Host, { key: 'b8c4784803ca5a0e6bf3f25c1d39139307bb6d50' }, index.h("div", { key: '5a8a2c44f1800c0275d1a94aa0eb5c2854be63b5', class: { 'loading-overlay': true, visible: this.visible }, "aria-hidden": this.visible ? 'false' : 'true' }, index.h("span", { key: '04e33166e054d7a600a83dacd48e3fb50ab69d22', class: "loading-spinner" }), this.text)));
|
|
30459
|
+
}
|
|
30460
|
+
};
|
|
30461
|
+
KritzelLoadingOverlay.style = kritzelLoadingOverlayCss();
|
|
30462
|
+
|
|
30419
30463
|
const kritzelLoginDialogCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.login-content{display:flex;flex-direction:column;gap:20px}.login-subtitle{font-size:13px;color:var(--kritzel-login-dialog-subtitle-color, #666666);margin:0;line-height:1.5;text-align:center}.login-providers{display:flex;flex-direction:column;gap:10px}.provider-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 16px;border:1px solid var(--kritzel-login-dialog-button-border-color, #e0e0e0);border-radius:8px;background:var(--kritzel-login-dialog-button-background, #ffffff);color:var(--kritzel-login-dialog-button-text-color, #333333);font-size:14px;font-weight:500;font-family:inherit;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;-webkit-tap-highlight-color:transparent}.provider-button:hover:not(:disabled){background:var(--kritzel-login-dialog-button-hover-background, #f5f5f5);border-color:var(--kritzel-login-dialog-button-hover-border-color, #cccccc)}.provider-button:active:not(:disabled){background:var(--kritzel-login-dialog-button-active-background, #ebebeb)}.provider-button:focus-visible{outline:revert;outline-offset:revert}.provider-button.is-disabled{opacity:0.5;cursor:default;pointer-events:none}.provider-button.is-loading{cursor:default}.provider-label{flex-shrink:0}.provider-button.is-loading .provider-label{opacity:0.7}@keyframes kritzel-login-spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;box-sizing:border-box;display:block;flex-shrink:0;border:2px solid var(--kritzel-login-dialog-spinner-color, #cccccc);border-top-color:var(--kritzel-login-dialog-spinner-active-color, #333333);border-radius:50%;animation:kritzel-login-spin 0.6s linear infinite}`;
|
|
30420
30464
|
|
|
30421
30465
|
const KritzelLoginDialog = class {
|
|
@@ -30463,7 +30507,7 @@ const KritzelLoginDialog = class {
|
|
|
30463
30507
|
this.dialogClosed.emit();
|
|
30464
30508
|
};
|
|
30465
30509
|
render() {
|
|
30466
|
-
return (index.h(index.Host, { key: '
|
|
30510
|
+
return (index.h(index.Host, { key: '5cedcb4fa0a9026338e930cfbbdbfa1df9853530' }, index.h("kritzel-dialog", { key: '1502a2dc67630b0a1399ef6e8d1a2fdcd4d50913', dialogTitle: this.dialogTitle, isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, index.h("div", { key: 'f84a888ccc0b1cb2052e30af56a08910da8d85b5', class: "login-content" }, this.subtitle && (index.h("p", { key: '971040609c43efea30a7bfd0c1a3de2113f77a2b', class: "login-subtitle" }, this.subtitle)), index.h("div", { key: 'ecb0c648ce0d9a8ca8b10e6a520273d817c7a0fe', class: "login-providers" }, this.providers.map(provider => (index.h("button", { key: provider.name, class: {
|
|
30467
30511
|
'provider-button': true,
|
|
30468
30512
|
'is-loading': this.loadingProvider === provider.name,
|
|
30469
30513
|
'is-disabled': this.loadingProvider !== null && this.loadingProvider !== provider.name,
|
|
@@ -30569,15 +30613,15 @@ const KritzelMasterDetail = class {
|
|
|
30569
30613
|
const selectedItem = this.items.find(item => item.id === this.selectedItemId);
|
|
30570
30614
|
const panelId = 'master-detail-panel';
|
|
30571
30615
|
const selectedTabId = selectedItem ? `tab-${selectedItem.id}` : undefined;
|
|
30572
|
-
return (index.h(index.Host, { key: '
|
|
30616
|
+
return (index.h(index.Host, { key: '0edf50b0b853633b88bf481f97f22aceba9e163e' }, index.h("div", { key: '21a0a3f81e5a60889ccd152c905cb41f52c3e037', class: {
|
|
30573
30617
|
'master-detail-container': true,
|
|
30574
30618
|
'is-mobile-detail-visible': this.showMobileDetail,
|
|
30575
|
-
} }, index.h("nav", { key: '
|
|
30619
|
+
} }, index.h("nav", { key: '41f88248cc372c8cae4cb50a19edf462a01e43f2', class: "master-menu", role: "tablist", "aria-orientation": "vertical", "aria-label": "Settings categories" }, this.items.map((item, index$1) => (index.h("button", { key: item.id, id: `tab-${item.id}`, ref: el => this.setTabRef(el, index$1), class: {
|
|
30576
30620
|
'menu-item': true,
|
|
30577
30621
|
'is-selected': item.id === this.selectedItemId,
|
|
30578
30622
|
'is-disabled': !!item.disabled,
|
|
30579
30623
|
'is-focused': index$1 === this.focusedIndex,
|
|
30580
|
-
}, role: "tab", "aria-selected": item.id === this.selectedItemId ? 'true' : 'false', "aria-controls": panelId, "aria-disabled": item.disabled ? 'true' : undefined, tabIndex: this.getTabIndex(item, index$1), disabled: item.disabled, onClick: () => this.handleItemClick(item), onKeyDown: e => this.handleKeyDown(e, item, index$1), onFocus: () => this.handleFocus(index$1), onBlur: this.handleBlur }, item.icon && (index.h("kritzel-icon", { name: item.icon, size: 20, class: "menu-item-icon" })), index.h("span", { class: "menu-item-label" }, item.label), index.h("span", { class: "menu-item-chevron", "aria-hidden": "true" }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("path", { d: "m9 18 6-6-6-6" }))))))), index.h("div", { key: '
|
|
30624
|
+
}, role: "tab", "aria-selected": item.id === this.selectedItemId ? 'true' : 'false', "aria-controls": panelId, "aria-disabled": item.disabled ? 'true' : undefined, tabIndex: this.getTabIndex(item, index$1), disabled: item.disabled, onClick: () => this.handleItemClick(item), onKeyDown: e => this.handleKeyDown(e, item, index$1), onFocus: () => this.handleFocus(index$1), onBlur: this.handleBlur }, item.icon && (index.h("kritzel-icon", { name: item.icon, size: 20, class: "menu-item-icon" })), index.h("span", { class: "menu-item-label" }, item.label), index.h("span", { class: "menu-item-chevron", "aria-hidden": "true" }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("path", { d: "m9 18 6-6-6-6" }))))))), index.h("div", { key: 'f8447facf3dfdbd7772823654847e1b90b03f73e', id: panelId, class: "detail-panel", role: "tabpanel", "aria-labelledby": selectedTabId }, index.h("button", { key: '3edc9784267613e6b3a706739bbb537161e4c747', class: "mobile-back-button", onClick: this.handleBackClick, "aria-label": "Back to menu" }, index.h("kritzel-icon", { key: 'ec0b4691735578525e5863842271366e04b13fb7', name: "chevron-left", size: 20, class: "mobile-back-icon" }), "Back"), index.h("slot", { key: 'c21fbaff78f98859b9756427125b60504d4bb630' })))));
|
|
30581
30625
|
}
|
|
30582
30626
|
static get watchers() { return {
|
|
30583
30627
|
"selectedItemId": [{
|
|
@@ -30650,7 +30694,7 @@ const KritzelMenu = class {
|
|
|
30650
30694
|
this.itemCloseChildMenu.emit(event.detail);
|
|
30651
30695
|
};
|
|
30652
30696
|
render() {
|
|
30653
|
-
return (index.h(index.Host, { key: '
|
|
30697
|
+
return (index.h(index.Host, { key: '27a90a3a8549517a2d6e341a5da13496bf714970', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && index.h("div", { key: 'c0c2351fac389f6676b38481eaacee553ca6867a', class: "has-open-child-overlay", onClick: this.onOverlayClick }), this.items.map(item => (index.h("kritzel-menu-item", { key: item.id, "data-testid": `menu-item-${item.id}`, item: item, parent: this.parent, style: { pointerEvents: this.editingMenuItem && !item.isEditing ? 'none' : 'auto' }, onItemSelect: this.handleItemSelect, onItemSave: this.handleSave, onItemCancel: this.handleCancel, onItemToggleChildMenu: this.handleToggleChildMenu, onItemCloseChildMenu: this.handleCloseChildMenu })))));
|
|
30654
30698
|
}
|
|
30655
30699
|
};
|
|
30656
30700
|
KritzelMenu.style = kritzelMenuCss();
|
|
@@ -30755,12 +30799,12 @@ const KritzelMenuItem = class {
|
|
|
30755
30799
|
];
|
|
30756
30800
|
}
|
|
30757
30801
|
render() {
|
|
30758
|
-
return (index.h(index.Host, { key: '
|
|
30802
|
+
return (index.h(index.Host, { key: '9d6653a630da5a3da38291d89d6d7d59d6994e02', tabIndex: this.item.isDisabled ? -1 : 0, class: {
|
|
30759
30803
|
'selected': this.item.isSelected,
|
|
30760
30804
|
'editing': this.item.isEditing,
|
|
30761
30805
|
'disabled': this.item.isDisabled,
|
|
30762
30806
|
'child-open': this.item.isChildMenuOpen,
|
|
30763
|
-
}, onClick: this.handleItemSelect }, index.h("div", { key: '
|
|
30807
|
+
}, onClick: this.handleItemSelect }, index.h("div", { key: '48a1678296e672c6c03fb3e1473c42d3a246d481', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
|
|
30764
30808
|
}
|
|
30765
30809
|
static get watchers() { return {
|
|
30766
30810
|
"item": [{
|
|
@@ -30833,7 +30877,7 @@ const KritzelMoreMenu = class {
|
|
|
30833
30877
|
this.closeMenu();
|
|
30834
30878
|
};
|
|
30835
30879
|
render() {
|
|
30836
|
-
return (index.h(index.Host, { key: '
|
|
30880
|
+
return (index.h(index.Host, { key: 'b7736b67210f2d2f6b54296dd680104548d61641', class: { mobile: this.isTouchDevice }, style: { display: this.visible ? '' : 'none' } }, index.h("div", { key: '076ecc02a1469bd87cb27f63f1d41183bedb11d4', class: { 'more-menu-wrapper': true, visible: this.visible } }, index.h("button", { key: 'cefe02e440391eb079af7b8accc367a291e93d6a', class: "more-menu-button", "data-testid": "more-menu-button", onClick: this.toggleMenu, "aria-label": this.terms['moreMenu.ariaLabel'] ?? 'More options' }, index.h("kritzel-icon", { key: 'cb6f4dd0f37ac0fbf1e1c28a0dc06e097e38ee00', name: this.icon, size: this.iconSize })), index.h("kritzel-portal", { key: '29099deb5b56b1a1388caa81a3c7104a05ad66a7', anchor: this.menuAnchor, offsetY: this.offsetY, onClose: this.closeMenu }, index.h("kritzel-menu", { key: 'b77286ec05add0a20bbc46f99ac7210395d0d33d', items: this.visibleItems, onItemSelect: this.handleMenuItemSelect })))));
|
|
30837
30881
|
}
|
|
30838
30882
|
};
|
|
30839
30883
|
KritzelMoreMenu.style = kritzelMoreMenuCss();
|
|
@@ -31000,7 +31044,7 @@ const KritzelNumericInput = class {
|
|
|
31000
31044
|
this.valueChange.emit(newValue);
|
|
31001
31045
|
};
|
|
31002
31046
|
render() {
|
|
31003
|
-
return (index.h(index.Host, { key: '
|
|
31047
|
+
return (index.h(index.Host, { key: '8901e0b56ccbc344420483a4a56663f7cd74d9e8' }, index.h("div", { key: '5f3d6b5c56007e11383aa69f60f22031b0e8f332', class: "input-container" }, this.label && index.h("label", { key: '2cb102a5b6c16d068f4f304fbcc6241f79fc0ce8', class: "input-label" }, this.label), index.h("div", { key: '96441095acc3d9a8e77b6d2bac2ceda683c9c976', class: "input-wrapper" }, index.h("input", { key: '523a5485111077e20faded235df6362e5ea9cfd4', type: "number", class: "numeric-input", title: "", min: this.min === Number.MIN_SAFE_INTEGER ? undefined : this.min, max: this.max === Number.MAX_SAFE_INTEGER ? undefined : this.max, step: this.step, value: this.inputValue, placeholder: this.placeholder, onInput: this.handleInput, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onInvalid: this.handleInvalid }), index.h("div", { key: '2071e98125a8d014513e93052bd8c1fee17932a5', class: "spinner-buttons" }, index.h("button", { key: '12422e5285dfb532dbbb6eb1a36dbcb3de50f2bc', type: "button", class: "spinner-button spinner-up", onClick: this.handleIncrement, tabIndex: -1, "aria-label": "Increase value" }, index.h("svg", { key: '49ad5625c80fae6706ba4ab91f47bd550481ef74', viewBox: "0 0 10 6", class: "spinner-icon" }, index.h("path", { key: 'ff7d19b61baeb5ba58bb60f2cc629bcec6eb4411', d: "M1 5L5 1L9 5", stroke: "currentColor", "stroke-width": "1.5", fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }))), index.h("button", { key: 'e4fec28e4fc997e007127f2b30b00cc752433221', type: "button", class: "spinner-button spinner-down", onClick: this.handleDecrement, tabIndex: -1, "aria-label": "Decrease value" }, index.h("svg", { key: '27bf06cde8de11f4a97090911afd6b8993463112', viewBox: "0 0 10 6", class: "spinner-icon" }, index.h("path", { key: 'ed7071dd79bfe509ebb319ce43ecb3e982dd4157', d: "M1 1L5 5L9 1", stroke: "currentColor", "stroke-width": "1.5", fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }))))))));
|
|
31004
31048
|
}
|
|
31005
31049
|
static get watchers() { return {
|
|
31006
31050
|
"value": [{
|
|
@@ -31039,7 +31083,7 @@ const KritzelOpacitySlider = class {
|
|
|
31039
31083
|
}
|
|
31040
31084
|
render() {
|
|
31041
31085
|
const percentage = this.getPercentage();
|
|
31042
|
-
return (index.h(index.Host, { key: '
|
|
31086
|
+
return (index.h(index.Host, { key: '2dadd8a7c4d1af748e91a6005433288ab231f2e8' }, index.h("div", { key: '65ae90d95bffff244d97329754cf0cb8f73331fa', class: "opacity-container" }, index.h("div", { key: '90e95347f7015882112f0653a25347e715233227', class: "slider-wrapper" }, index.h("input", { key: '15836bc089c1725062016677d3b95384d1958431', type: "range", class: "opacity-slider", min: this.min, max: this.max, step: this.step, value: this.value, onInput: (e) => this.handleInput(e), style: {
|
|
31043
31087
|
'--slider-progress': `${percentage}%`,
|
|
31044
31088
|
'--kritzel-opacity-slider-thumb-border-color': this.previewColor,
|
|
31045
31089
|
} })))));
|
|
@@ -31392,7 +31436,7 @@ const KritzelPortal = class {
|
|
|
31392
31436
|
this.portal.style.visibility = 'visible';
|
|
31393
31437
|
}
|
|
31394
31438
|
render() {
|
|
31395
|
-
return (index.h(index.Host, { key: '
|
|
31439
|
+
return (index.h(index.Host, { key: '72273b4c7811473072ee27668836a5ddddcfd618', style: { display: this.anchor ? 'block' : 'none' } }, index.h("slot", { key: 'b4f37ca27c47ab950a4639162fa31a3c2362d6f7' })));
|
|
31396
31440
|
}
|
|
31397
31441
|
static get watchers() { return {
|
|
31398
31442
|
"anchor": [{
|
|
@@ -31406,7 +31450,7 @@ const KritzelPortal = class {
|
|
|
31406
31450
|
* This file is auto-generated by the version bump scripts.
|
|
31407
31451
|
* Do not modify manually.
|
|
31408
31452
|
*/
|
|
31409
|
-
const KRITZEL_VERSION = '0.3.
|
|
31453
|
+
const KRITZEL_VERSION = '0.3.36';
|
|
31410
31454
|
|
|
31411
31455
|
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-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)}`;
|
|
31412
31456
|
|
|
@@ -31631,7 +31675,7 @@ const KritzelSettings = class {
|
|
|
31631
31675
|
}
|
|
31632
31676
|
}
|
|
31633
31677
|
render() {
|
|
31634
|
-
return (index.h(index.Host, { key: '
|
|
31678
|
+
return (index.h(index.Host, { key: '7e65885051a30635291bb98fb87addf0bdbca8e8' }, index.h("kritzel-dialog", { key: 'c795bad227882904d8dda96768e8ccdd7c48df71', isOpen: this.isDialogOpen, dialogTitle: this.t('settings.dialogTitle', 'Settings'), size: "large", contained: true, onDialogClose: this.closeDialog }, index.h("kritzel-master-detail", { key: 'eff1486d14d4b55441b9a52b293da7459771331d', items: this.categories, selectedItemId: this.selectedCategoryId, onItemSelect: this.handleCategorySelect }, this.renderCategoryContent()))));
|
|
31635
31679
|
}
|
|
31636
31680
|
static get watchers() { return {
|
|
31637
31681
|
"settings": [{
|
|
@@ -34871,9 +34915,9 @@ const KritzelShareDialog = class {
|
|
|
34871
34915
|
this.dialogClosed.emit();
|
|
34872
34916
|
};
|
|
34873
34917
|
render() {
|
|
34874
|
-
return (index.h(index.Host, { key: '
|
|
34918
|
+
return (index.h(index.Host, { key: 'b96c4cc6a9e4778715f496574f307a540285f70c' }, index.h("kritzel-dialog", { key: '9a9cead56cc50042f59f677c0a846fc9fff01a8b', dialogTitle: this.terms['share.dialogTitle'] ?? 'Share Workspace', size: "small", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, contained: true }, index.h("div", { key: 'f1ffe37126343d84f9cb70f85530596d594c6e04', class: "share-content" }, index.h("div", { key: 'e1b20fccdb127eb30d240a2812742977b6512113', class: "share-section" }, index.h("div", { key: 'fb0d4226d638309fd5696dace0cc0c73d82150fc', class: "share-row" }, index.h("div", { key: '301a27b975bb63610d94e1140aef39aa0594dda6', class: "share-label-group" }, index.h("label", { key: 'acf694843423d42414951ae88ec7eee541dd8f7f', class: "share-label" }, this.terms['share.linkSharing.label'] ?? 'Link sharing'), index.h("p", { key: '4c29b6448a27c69fceadb4166bc878216010475f', class: "share-description" }, this.internalIsPublic
|
|
34875
34919
|
? (this.terms['share.linkSharing.enabledDescription'] ?? 'Anyone with the link can access this workspace.')
|
|
34876
|
-
: (this.terms['share.linkSharing.disabledDescription'] ?? 'Link sharing is disabled. Only you can access this workspace.'))), index.h("kritzel-slide-toggle", { key: '
|
|
34920
|
+
: (this.terms['share.linkSharing.disabledDescription'] ?? 'Link sharing is disabled. Only you can access this workspace.'))), index.h("kritzel-slide-toggle", { key: 'c813213e7cf53125993de209e15c921779c019b6', checked: this.internalIsPublic, onCheckedChange: this.handleToggleChange, label: this.terms['share.linkSharing.toggleLabel'] ?? 'Enable link sharing' }))), this.internalIsPublic && (index.h("div", { key: 'af32cbadc775ce4ca3c79bdc0f8b4351c8723b28', class: "share-section" }, index.h("div", { key: 'd5c4e2b8a77306a141cc73c37dc6c57b1dc9daa5', class: "share-url-container" }, index.h("input", { key: 'f2f364c3fabd7f693247f5ad05594bd089a194ea', type: "text", class: "share-url-input", value: this.getShareUrl(), readOnly: true, onClick: (e) => e.target.select() }), index.h("button", { key: 'd27a6f00e6b14bff3f4c8d1694cc8a38eebc5ec0', class: { 'copy-button': true, 'copy-success': this.copySuccess }, onClick: this.handleCopyUrl, title: this.copySuccess ? (this.terms['share.copyLink.copied'] ?? 'Copied!') : (this.terms['share.copyLink.title'] ?? 'Copy link') }, index.h("kritzel-icon", { key: '60c72ee8d789dc14baa4c169f70c78837b0cbd0c', name: this.copySuccess ? 'check' : 'copy', size: 18 }))), this.qrCodeDataUrl && (index.h("div", { key: 'f5d361b7ed145ab5f4f7b89f9c63046ce831220b', class: "share-qr-container" }, index.h("img", { key: '5f2d4650dffab907f5a53dfb2fd4c337da3e51ee', class: "share-qr-image", src: this.qrCodeDataUrl, alt: "QR code for share link" })))))))));
|
|
34877
34921
|
}
|
|
34878
34922
|
static get watchers() { return {
|
|
34879
34923
|
"isPublic": [{
|
|
@@ -34914,7 +34958,7 @@ const KritzelSlideToggle = class {
|
|
|
34914
34958
|
}
|
|
34915
34959
|
};
|
|
34916
34960
|
render() {
|
|
34917
|
-
return (index.h(index.Host, { key: '
|
|
34961
|
+
return (index.h(index.Host, { key: '00160c9cfdafa0d53f3acfb1fb235b29abf2622a', class: { checked: this.checked, disabled: this.disabled }, tabIndex: this.disabled ? -1 : 0, role: "switch", "aria-checked": this.checked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.label, onClick: this.handleToggle, onKeyDown: this.handleKeyDown }, index.h("div", { key: '385008948ffbdc0f26249d2d833aae8f04eeb6a0', class: "toggle-track" }, index.h("div", { key: '43929e94335589feb24ee45f1c34a270653dd412', class: "toggle-thumb" }))));
|
|
34918
34962
|
}
|
|
34919
34963
|
};
|
|
34920
34964
|
KritzelSlideToggle.style = kritzelSlideToggleCss();
|
|
@@ -35014,7 +35058,7 @@ const KritzelSplitButton = class {
|
|
|
35014
35058
|
this.menuScrollTop = event.target.scrollTop;
|
|
35015
35059
|
};
|
|
35016
35060
|
render() {
|
|
35017
|
-
return (index.h(index.Host, { key: '
|
|
35061
|
+
return (index.h(index.Host, { key: 'fa22dc1185ef07d8127d9ee9f6dbe482d126f934', class: { mobile: this.isTouchDevice } }, index.h("button", { key: 'a48aba702b70e9b24ad5486dde61fa9f9c8f7cdc', class: "split-main-button", tabIndex: 0, onClick: this.handleButtonClick, disabled: this.mainButtonDisabled, "aria-label": "Main action" }, this.buttonIcon && index.h("kritzel-icon", { key: '0d1c9a3e9f744541dd6ebe491105f6ee65233543', name: this.buttonIcon })), index.h("div", { key: 'c9db29f0b9c9cf1974d78f4f60be9e1b0e26c5d2', class: "split-divider" }), index.h("button", { key: '57addfd5228b7c7668be902c53683d12c976b89b', ref: el => (this.splitMenuButtonRef = el), class: "split-menu-button", tabIndex: 0, onClick: this.toggleMenu, disabled: this.menuButtonDisabled, "aria-label": "Open menu" }, index.h("kritzel-icon", { key: 'd860cc503043425860b1234b5d34693bfdd1d5ab', name: this.dropdownIcon })), index.h("kritzel-portal", { key: 'cd6dda8869aea4205d922fc639073019bbd2b102', anchor: this.anchorElement, offsetY: 4, onClose: this.closeMenu }, index.h("kritzel-menu", { key: '1ef1c2b319662e7a2af15b46362addcc75bceb68', ref: el => (this.menuRef = el), items: this.items, onItemSelect: this.handleItemSelect, onItemSave: this.handleItemSave, onItemCancel: this.handleItemCancel, onItemToggleChildMenu: this.handleItemToggleChildMenu, onItemCloseChildMenu: this.handleItemCloseChildMenu, onClose: this.closeMenu, onScroll: this.handleScroll }))));
|
|
35018
35062
|
}
|
|
35019
35063
|
};
|
|
35020
35064
|
KritzelSplitButton.style = kritzelSplitButtonCss();
|
|
@@ -35035,7 +35079,7 @@ const KritzelStrokeSize = class {
|
|
|
35035
35079
|
}
|
|
35036
35080
|
render() {
|
|
35037
35081
|
const sizes = this.sizes ?? [];
|
|
35038
|
-
return (index.h(index.Host, { key: '
|
|
35082
|
+
return (index.h(index.Host, { key: 'ba181d798d2bf7b60308746635d2077ce1353b83' }, index.h("div", { key: '048fc8934190359b9337747567844ca88925a6ce', class: "size-grid" }, sizes.map(size => (index.h("div", { tabIndex: 0, class: {
|
|
35039
35083
|
'size-container': true,
|
|
35040
35084
|
'selected': this.selectedSize === size,
|
|
35041
35085
|
}, onClick: () => this.handleSizeClick(size) }, index.h("kritzel-color", { value: 'var(--kritzel-global-text-primary)', size: size })))))));
|
|
@@ -35416,14 +35460,14 @@ const KritzelTooltip = class {
|
|
|
35416
35460
|
}
|
|
35417
35461
|
}
|
|
35418
35462
|
render() {
|
|
35419
|
-
return (index.h(index.Host, { key: '
|
|
35463
|
+
return (index.h(index.Host, { key: '1e318ff48b72ae5e0853a92c61fd4174d6e45271', style: {
|
|
35420
35464
|
position: 'fixed',
|
|
35421
35465
|
zIndex: '9999',
|
|
35422
35466
|
transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',
|
|
35423
35467
|
visibility: this.isVisible ? 'visible' : 'hidden',
|
|
35424
35468
|
left: `${this.positionX}px`,
|
|
35425
35469
|
bottom: `${this.positionY}px`,
|
|
35426
|
-
} }, index.h("div", { key: '
|
|
35470
|
+
} }, index.h("div", { key: 'c66c9978787c59de6ca29944f666354fed2ab4c3', class: "tooltip-content", onClick: event => event.stopPropagation(), onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation() }, index.h("slot", { key: '664e78076bb988b0829b805aad4393c443db2dc7' }))));
|
|
35427
35471
|
}
|
|
35428
35472
|
static get watchers() { return {
|
|
35429
35473
|
"triggerElement": [{
|
|
@@ -35464,7 +35508,7 @@ const KritzelUtilityPanel = class {
|
|
|
35464
35508
|
this.redo.emit();
|
|
35465
35509
|
}
|
|
35466
35510
|
render() {
|
|
35467
|
-
return (index.h(index.Host, { key: '
|
|
35511
|
+
return (index.h(index.Host, { key: '90b96b2f4693016650394e085c1ccf5c61759713' }, index.h("button", { key: '325e3a869061ce7fda2d86e74250f4ea7414da8e', class: "utility-button", "data-testid": "utility-undo", disabled: !this.undoState?.canUndo, onClick: event => this.handleUndo(event), "aria-label": this.terms['utility.undo'] ?? 'Undo' }, index.h("kritzel-icon", { key: '70335427bc3a9a54a994ad22935bde4010d8f96b', name: "undo" })), index.h("button", { key: 'cf3000675d594ffe64f947b57e5aabe084be32a7', class: "utility-button", "data-testid": "utility-redo", disabled: !this.undoState?.canRedo, onClick: event => this.handleRedo(event), "aria-label": this.terms['utility.redo'] ?? 'Redo' }, index.h("kritzel-icon", { key: 'b33336374abb36a7cdb685fb970805ec1f4073e2', name: "redo" })), index.h("div", { key: '34323fd33574ba65c825687fec5b772facbd2c62', class: "utility-separator" }), index.h("button", { key: 'aff157ab166ed15b8f9172b5b63f62996ed51c6e', class: "utility-button", "data-testid": "utility-delete", onClick: () => this.delete.emit(), "aria-label": this.terms['utility.delete'] ?? 'Delete selected items' }, index.h("kritzel-icon", { key: '413104d9d493fc47ad5ae8e61af514dfd530f6ee', name: "delete" }))));
|
|
35468
35512
|
}
|
|
35469
35513
|
};
|
|
35470
35514
|
KritzelUtilityPanel.style = kritzelUtilityPanelCss();
|
|
@@ -35485,7 +35529,7 @@ const KritzelWatermark = class {
|
|
|
35485
35529
|
label;
|
|
35486
35530
|
render() {
|
|
35487
35531
|
const label = this.label ?? this.core.localizationManager.translate('watermark.poweredBy');
|
|
35488
|
-
return (index.h(index.Host, { key: '
|
|
35532
|
+
return (index.h(index.Host, { key: '0eccc75e51c7ac199e23d8f3a871593f1fb65a17' }, index.h("a", { key: '2029f8b56ba8609ca621447eac0df9d30ebfbbbe', class: "watermark-link", href: KRITZEL_WEBSITE_URL, target: "_blank", rel: "noopener noreferrer", part: "watermark", onPointerDown: (ev) => ev.stopPropagation(), onPointerUp: (ev) => ev.stopPropagation() }, label)));
|
|
35489
35533
|
}
|
|
35490
35534
|
};
|
|
35491
35535
|
KritzelWatermark.style = kritzelWatermarkCss();
|
|
@@ -35673,7 +35717,7 @@ const KritzelZoomPanel = class {
|
|
|
35673
35717
|
return Number.isFinite(this.zoomPercent) ? Math.max(1, Math.round(this.zoomPercent)) : 100;
|
|
35674
35718
|
}
|
|
35675
35719
|
render() {
|
|
35676
|
-
return (index.h(index.Host, { key: '
|
|
35720
|
+
return (index.h(index.Host, { key: '56b65a376d4bd94553416e07f2621192c4457bc2' }, index.h("div", { key: 'bdbfea3b3ee7e37eeb5c5f03388eb92ed8af9962', class: { panel: true, visible: this.visible } }, index.h("button", { key: 'de5ad152aaf7965f731bee95170b67e62af94ea2', class: "zoom-button", type: "button", "aria-label": this.terms['zoom.zoomOut'] ?? 'Zoom out', disabled: this.disabled, onClick: this.handleZoomOut }, index.h("kritzel-icon", { key: '104eb632666c55c032a40e6df2097aaa643fd23b', name: "minus" })), index.h("span", { key: 'd601b324e26a6c2737138b8f151b13dcdb2d20ab', class: "zoom-level", "aria-live": "polite" }, this.normalizedZoomPercent, "%"), index.h("button", { key: 'c976d03c69978f2d5cedf2a94b38419ed81088f6', class: "zoom-button", type: "button", "aria-label": this.terms['zoom.zoomIn'] ?? 'Zoom in', disabled: this.disabled, onClick: this.handleZoomIn }, index.h("kritzel-icon", { key: '844105bd53f3307425789aa6baf0ac3c25407414', name: "plus" })))));
|
|
35677
35721
|
}
|
|
35678
35722
|
};
|
|
35679
35723
|
KritzelZoomPanel.style = kritzelZoomPanelCss();
|
|
@@ -35701,6 +35745,7 @@ exports.kritzel_font_size = KritzelFontSize;
|
|
|
35701
35745
|
exports.kritzel_icon = KritzelIcon;
|
|
35702
35746
|
exports.kritzel_input = KritzelInput;
|
|
35703
35747
|
exports.kritzel_line_endings = KritzelLineEndings;
|
|
35748
|
+
exports.kritzel_loading_overlay = KritzelLoadingOverlay;
|
|
35704
35749
|
exports.kritzel_login_dialog = KritzelLoginDialog;
|
|
35705
35750
|
exports.kritzel_master_detail = KritzelMasterDetail;
|
|
35706
35751
|
exports.kritzel_menu = KritzelMenu;
|