kritzel-stencil 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-active-users_42.cjs.entry.js +83 -30
- package/dist/cjs/{workspace.migrations-BPwtowiJ.js → workspace.migrations-B89-6fP-.js} +42 -8
- package/dist/collection/classes/core/core.class.js +9 -2
- package/dist/collection/classes/handlers/line-handle.handler.js +1 -0
- package/dist/collection/classes/handlers/move.handler.js +2 -0
- package/dist/collection/classes/handlers/resize.handler.js +2 -0
- package/dist/collection/classes/handlers/rotation.handler.js +2 -0
- package/dist/collection/classes/structures/object-map.structure.js +44 -3
- package/dist/collection/classes/tools/brush-tool.class.js +2 -0
- package/dist/collection/classes/tools/eraser-tool.class.js +22 -8
- package/dist/collection/classes/tools/line-tool.class.js +2 -0
- package/dist/collection/classes/tools/shape-tool.class.js +1 -0
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +5 -5
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +7 -0
- package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +3 -2
- package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.js +3 -2
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +7 -10
- package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
- package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
- package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
- 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/constants/version.js +1 -1
- package/dist/collection/themes/dark-theme.js +4 -0
- package/dist/collection/themes/light-theme.js +4 -0
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-awareness-cursors.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-dialog.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-login-dialog.js +1 -1
- package/dist/components/kritzel-more-menu.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/kritzel-share-dialog.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-utility-panel.js +1 -1
- package/dist/components/p-0F9_lw6l.js +1 -0
- package/dist/components/{p-DfB7uJ0N.js → p-3YivOJM2.js} +1 -1
- package/dist/components/p-B2dVTxsc.js +9 -0
- package/dist/components/{p-mYhFNPgz.js → p-BAjrJjMX.js} +1 -1
- package/dist/components/{p-R9M5PnAz.js → p-BDOSy6zd.js} +1 -1
- package/dist/components/{p-DE2xDwUM.js → p-BabNumqA.js} +1 -1
- package/dist/components/{p-574MVXxi.js → p-Be6E_RMf.js} +1 -1
- package/dist/components/{p-CoyqJSjT.js → p-BmYsz1bP.js} +1 -1
- package/dist/components/p-C-qyWv4d.js +1 -0
- package/dist/components/{p-BYOIzv_f.js → p-C1Fv9rVN.js} +1 -1
- package/dist/components/{p-Bfa-Amjn.js → p-C2MdRsg6.js} +1 -1
- package/dist/components/{p-u-827ZX7.js → p-CsMMZSAP.js} +1 -1
- package/dist/components/p-DMYfjC1C.js +1 -0
- package/dist/components/{p-Dxb22STM.js → p-DYHF_MSN.js} +1 -1
- package/dist/components/{p-BWrxz4mM.js → p-Dg_nGsFe.js} +1 -1
- package/dist/components/{p-BtJB7FsW.js → p-DoDI-v-H.js} +1 -1
- package/dist/components/p-Dqpa31TI.js +1 -0
- package/dist/components/p-R60vdaIY.js +1 -0
- package/dist/components/{p-CU6kJPth.js → p-ZpItdhxS.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-active-users_42.entry.js +83 -30
- package/dist/esm/{workspace.migrations-C_uxbvuH.js → workspace.migrations-D_y5zlxK.js} +42 -8
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-74898384.entry.js +9 -0
- package/dist/stencil/p-D_y5zlxK.js +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/structures/object-map.structure.d.ts +19 -0
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/interfaces/theme.interface.d.ts +5 -5
- package/package.json +1 -1
- package/dist/components/p-BCzbwL4m.js +0 -1
- package/dist/components/p-BfJav4Zz.js +0 -1
- package/dist/components/p-BmcAX-1k.js +0 -1
- package/dist/components/p-C6Td7I4k.js +0 -1
- package/dist/components/p-CqYIRmoh.js +0 -1
- package/dist/components/p-DFeyobdy.js +0 -9
- package/dist/stencil/p-4d28c496.entry.js +0 -9
- package/dist/stencil/p-C_uxbvuH.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as e,H as o,c as r,h as i,d as a,t as s}from"./p-BWj1eE2b.js";import{d as t}from"./p-0F9_lw6l.js";import{d as l}from"./p-A7Ult9iv.js";import{d as c}from"./p-CTj2UdbS.js";const n=e(class extends o{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.toggleIsPublic=r(this,"toggleIsPublic"),this.dialogClosed=r(this,"dialogClosed")}get host(){return this}isPublic=!1;workspaceId=void 0;onIsPublicChange(e){this.internalIsPublic=e}isDialogOpen=!1;internalIsPublic=!1;copySuccess=!1;toggleIsPublic;dialogClosed;async open(){this.internalIsPublic=this.isPublic,this.isDialogOpen=!0}async close(){this.isDialogOpen=!1}handleToggleChange=e=>{const o=e.detail;this.internalIsPublic=o,this.toggleIsPublic.emit(o)};getShareUrl(){if(!this.workspaceId)return"";const e=new URL(this.workspaceId,window.location.origin);return e.searchParams.set("share","true"),e.toString()}handleCopyUrl=async()=>{const e=this.getShareUrl();if(e)try{await navigator.clipboard.writeText(e),this.copySuccess=!0,setTimeout((()=>{this.copySuccess=!1}),2e3)}catch{const o=document.createElement("textarea");o.value=e,document.body.appendChild(o),o.select(),document.execCommand("copy"),document.body.removeChild(o),this.copySuccess=!0,setTimeout((()=>{this.copySuccess=!1}),2e3)}};closeDialog=()=>{this.isDialogOpen=!1,this.dialogClosed.emit()};render(){return i(a,{key:"bd58f146337b3eca96ca34408a3d30621f01765a"},i("kritzel-dialog",{key:"c152f4ec5739a18b265f9a8b161ec8501c1a053b",dialogTitle:"Share Workspace",isOpen:this.isDialogOpen,onDialogClose:this.closeDialog,size:"small"},i("div",{key:"2810061b1c99e4f4644342453de693e1cddf9a27",class:"share-content"},i("div",{key:"bc56de53fd6136c6867018af24019383094cab0d",class:"share-section"},i("div",{key:"43464ffd61e5a19653cc081e823f01c0eb17e454",class:"share-row"},i("div",{key:"ed83ea6684695d09dc6af82b3367fbbff6e4c7e2",class:"share-label-group"},i("label",{key:"fe2eaf501dd80ad0b8d83f93a2dcdd18bc093d3b",class:"share-label"},"Link sharing"),i("p",{key:"738f1a6afc0421380164b9d270920631cefdfd78",class:"share-description"},this.internalIsPublic?"Anyone with the link can access this workspace.":"Link sharing is disabled. Only you can access this workspace.")),i("kritzel-slide-toggle",{key:"60f0200ea8f9c207cd5ee76f5a86f82707bb724b",checked:this.internalIsPublic,onCheckedChange:this.handleToggleChange,label:"Enable link sharing"}))),this.internalIsPublic&&i("div",{key:"83212a2a996b85996eee119d5535203f77d3c8dd",class:"share-section"},i("div",{key:"297031b5aef2018f7aa33c32fd0f8c82f1ddb4cb",class:"share-url-container"},i("input",{key:"467cca4a8c31b75daa82670f64b562730c241f52",type:"text",class:"share-url-input",value:this.getShareUrl(),readOnly:!0,onClick:e=>e.target.select()}),i("button",{key:"fdc0f490339cb7050fb020cb1e83e51f6374b183",class:{"copy-button":!0,"copy-success":this.copySuccess},onClick:this.handleCopyUrl,title:this.copySuccess?"Copied!":"Copy link"},i("kritzel-icon",{key:"5ff1a76d7977c75ea7bc8c339bdf515ba102e511",name:this.copySuccess?"check":"copy",size:18})))))))}static get watchers(){return{isPublic:[{onIsPublicChange:0}]}}static get style(){return":host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:420px}.share-content{display:flex;flex-direction:column;gap:20px}.share-section{display:flex;flex-direction:column;gap:8px}.share-section-revoke{padding-top:12px;border-top:1px solid var(--kritzel-share-dialog-border-color, #e5e5e5)}.share-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.share-label-group{display:flex;flex-direction:column;gap:8px;flex:1}.share-label{font-size:14px;font-weight:600;color:var(--kritzel-share-dialog-label-color, #333333);margin:0}.share-description{font-size:12px;color:var(--kritzel-share-dialog-description-color, #666666);margin:0;line-height:1.4}.share-url-container{display:flex;align-items:center;gap:8px;background:var(--kritzel-share-dialog-input-background, #f5f5f5);border:1px solid var(--kritzel-share-dialog-input-border-color, #e0e0e0);border-radius:6px;padding:4px 4px 4px 12px}.share-url-input{flex:1;border:none;background:transparent;font-size:13px;color:var(--kritzel-share-dialog-input-text-color, #333333);outline:none;min-width:0;padding:8px 0}.share-url-input:focus{outline:none}.share-url-input::selection{background:var(--kritzel-share-dialog-selection-color, #cce5ff)}.copy-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:4px;background:var(--kritzel-share-dialog-copy-button-background, #ffffff);color:var(--kritzel-share-dialog-copy-button-color, #666666);cursor:pointer;transition:all 0.15s ease;flex-shrink:0}.copy-button:hover{background:var(--kritzel-share-dialog-copy-button-hover-background, #e8e8e8);color:var(--kritzel-share-dialog-copy-button-hover-color, #333333)}.copy-button.copy-success{background:var(--kritzel-share-dialog-copy-success-background, #d4edda);color:var(--kritzel-share-dialog-copy-success-color, #28a745)}.revoke-button{align-self:flex-start;padding:8px 16px;border:1px solid var(--kritzel-share-dialog-revoke-button-border-color, #dc3545);border-radius:6px;background:transparent;color:var(--kritzel-share-dialog-revoke-button-color, #dc3545);font-size:13px;font-weight:500;cursor:pointer;transition:all 0.15s ease}.revoke-button:hover{background:var(--kritzel-share-dialog-revoke-button-hover-background, #dc3545);color:var(--kritzel-share-dialog-revoke-button-hover-color, #ffffff)}kritzel-dropdown{--kritzel-dropdown-trigger-padding:8px 12px;--kritzel-dropdown-trigger-font-size:13px}"}},[513,"kritzel-share-dialog",{isPublic:[4,"is-public"],workspaceId:[1,"workspace-id"],isDialogOpen:[32],internalIsPublic:[32],copySuccess:[32],open:[64],close:[64]},void 0,{isPublic:[{onIsPublicChange:0}]}]);function d(){"undefined"!=typeof customElements&&["kritzel-share-dialog","kritzel-dialog","kritzel-icon","kritzel-slide-toggle"].forEach((e=>{switch(e){case"kritzel-share-dialog":customElements.get(s(e))||customElements.define(s(e),n);break;case"kritzel-dialog":customElements.get(s(e))||t();break;case"kritzel-icon":customElements.get(s(e))||l();break;case"kritzel-slide-toggle":customElements.get(s(e))||c()}}))}export{n as K,d}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as i,H as
|
|
1
|
+
import{p as i,H as o,c as e,h as t,d as l,t as r}from"./p-BWj1eE2b.js";import{d as s}from"./p-0F9_lw6l.js";import{d as n}from"./p-A7Ult9iv.js";const a=i(class extends o{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow(),this.providerLogin=e(this,"providerLogin"),this.dialogClosed=e(this,"dialogClosed")}get host(){return this}providers=[];dialogTitle="Sign in";subtitle;isDialogOpen=!1;loadingProvider=null;providerLogin;dialogClosed;async open(){this.loadingProvider=null,this.isDialogOpen=!0}async close(){this.isDialogOpen=!1,this.loadingProvider=null}async setLoading(i){this.loadingProvider=i}handleProviderClick=i=>{this.loadingProvider||(this.loadingProvider=i.name,this.providerLogin.emit({provider:i.name}))};closeDialog=()=>{this.isDialogOpen=!1,this.loadingProvider=null,this.dialogClosed.emit()};render(){return t(l,{key:"1a664868b840030a773f61c2a0f4388dfb014675"},t("kritzel-dialog",{key:"09ece6fb5949fc8b204f29cd931c583e525590e1",dialogTitle:this.dialogTitle,isOpen:this.isDialogOpen,onDialogClose:this.closeDialog,size:"small"},t("div",{key:"57218d7762734929691b82700c31922f5a4991c8",class:"login-content"},this.subtitle&&t("p",{key:"9ee071786f393857cd6a666e395526a139359d60",class:"login-subtitle"},this.subtitle),t("div",{key:"a487687345aabcfb55976437ddc85feb464f0cae",class:"login-providers"},this.providers.map((i=>t("button",{key:i.name,class:{"provider-button":!0,"is-loading":this.loadingProvider===i.name,"is-disabled":null!==this.loadingProvider&&this.loadingProvider!==i.name},disabled:null!==this.loadingProvider&&this.loadingProvider!==i.name,onClick:()=>this.handleProviderClick(i)},this.loadingProvider===i.name?t("span",{class:"spinner"}):i.icon&&t("kritzel-icon",{name:i.icon,size:20}),t("span",{class:"provider-label"},i.label))))))))}static get style(){return":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}"}},[513,"kritzel-login-dialog",{providers:[16],dialogTitle:[1,"dialog-title"],subtitle:[1],isDialogOpen:[32],loadingProvider:[32],open:[64],close:[64],setLoading:[64]}]);function d(){"undefined"!=typeof customElements&&["kritzel-login-dialog","kritzel-dialog","kritzel-icon"].forEach((i=>{switch(i){case"kritzel-login-dialog":customElements.get(r(i))||customElements.define(r(i),a);break;case"kritzel-dialog":customElements.get(r(i))||s();break;case"kritzel-icon":customElements.get(r(i))||n()}}))}export{a as K,d}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { H as HocuspocusProvider, a as HocuspocusProviderWebsocket } from './workspace.migrations-
|
|
2
|
-
export { E as APP_STATE_MIGRATIONS, A as AssetNotFoundError, C as CURRENT_APP_STATE_SCHEMA_VERSION, z as CURRENT_WORKSPACE_SCHEMA_VERSION, v as DEFAULT_ASSET_STORAGE_CONFIG, D as DEFAULT_BRUSH_CONFIG, u as DEFAULT_LINE_TOOL_CONFIG, t as DEFAULT_TEXT_CONFIG, p as IndexedDBAssetProvider, I as IndexedDBSyncProvider, y as KritzelAlignment, r as KritzelAnchorManager, o as KritzelAssetResolver, g as KritzelBrushTool, m as KritzelCursorHelper, i as KritzelEraserTool, e as KritzelGroup, c as KritzelImage, j as KritzelImageTool, d as KritzelLine, h as KritzelLineTool, b as KritzelPath, n as KritzelSelectionTool, f as KritzelShape, l as KritzelShapeTool, K as KritzelText, k as KritzelTextTool, s as KritzelThemeManager, q as KritzelWorkspace, S as ShapeType, W as WORKSPACE_EXPORT_VERSION, F as WORKSPACE_MIGRATIONS, x as darkTheme, w as lightTheme, B as runMigrations } from './workspace.migrations-
|
|
1
|
+
import { H as HocuspocusProvider, a as HocuspocusProviderWebsocket } from './workspace.migrations-D_y5zlxK.js';
|
|
2
|
+
export { E as APP_STATE_MIGRATIONS, A as AssetNotFoundError, C as CURRENT_APP_STATE_SCHEMA_VERSION, z as CURRENT_WORKSPACE_SCHEMA_VERSION, v as DEFAULT_ASSET_STORAGE_CONFIG, D as DEFAULT_BRUSH_CONFIG, u as DEFAULT_LINE_TOOL_CONFIG, t as DEFAULT_TEXT_CONFIG, p as IndexedDBAssetProvider, I as IndexedDBSyncProvider, y as KritzelAlignment, r as KritzelAnchorManager, o as KritzelAssetResolver, g as KritzelBrushTool, m as KritzelCursorHelper, i as KritzelEraserTool, e as KritzelGroup, c as KritzelImage, j as KritzelImageTool, d as KritzelLine, h as KritzelLineTool, b as KritzelPath, n as KritzelSelectionTool, f as KritzelShape, l as KritzelShapeTool, K as KritzelText, k as KritzelTextTool, s as KritzelThemeManager, q as KritzelWorkspace, S as ShapeType, W as WORKSPACE_EXPORT_VERSION, F as WORKSPACE_MIGRATIONS, x as darkTheme, w as lightTheme, B as runMigrations } from './workspace.migrations-D_y5zlxK.js';
|
|
3
3
|
import * as Y from 'yjs';
|
|
4
4
|
import { WebsocketProvider } from 'y-websocket';
|
|
5
5
|
import 'y-indexeddb';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, h, H as Host, c as createEvent, g as getElement } from './index-D9HaikfQ.js';
|
|
2
|
-
import { b as KritzelPath, d as KritzelLine, G as KritzelColorHelper, n as KritzelSelectionTool, g as KritzelBrushTool, h as KritzelLineTool, l as KritzelShapeTool, k as KritzelTextTool, J as KritzelDevicesHelper, L as KritzelMouseButton, M as DEFAULT_COLOR_PALETTE, S as ShapeType, I as IndexedDBSyncProvider, D as DEFAULT_BRUSH_CONFIG, i as KritzelEraserTool, u as DEFAULT_LINE_TOOL_CONFIG, t as DEFAULT_TEXT_CONFIG, j as KritzelImageTool, y as KritzelAlignment, v as DEFAULT_ASSET_STORAGE_CONFIG, N as KritzelSelectionGroup, O as KritzelSelectionBox, P as KritzelIconRegistry, Q as KritzelKeyboardHelper, R as KritzelBaseHandler, T as KritzelToolRegistry, U as KritzelBaseObject, q as KritzelWorkspace, e as KritzelGroup, c as KritzelImage, f as KritzelShape, K as KritzelText, B as runMigrations, z as CURRENT_WORKSPACE_SCHEMA_VERSION, F as WORKSPACE_MIGRATIONS, C as CURRENT_APP_STATE_SCHEMA_VERSION, E as APP_STATE_MIGRATIONS, V as ObjectHelper, m as KritzelCursorHelper, r as KritzelAnchorManager, s as KritzelThemeManager, o as KritzelAssetResolver, X as KritzelClassHelper, Y as KritzelEventHelper, Z as KritzelBaseTool, W as WORKSPACE_EXPORT_VERSION } from './workspace.migrations-
|
|
2
|
+
import { b as KritzelPath, d as KritzelLine, G as KritzelColorHelper, n as KritzelSelectionTool, g as KritzelBrushTool, h as KritzelLineTool, l as KritzelShapeTool, k as KritzelTextTool, J as KritzelDevicesHelper, L as KritzelMouseButton, M as DEFAULT_COLOR_PALETTE, S as ShapeType, I as IndexedDBSyncProvider, D as DEFAULT_BRUSH_CONFIG, i as KritzelEraserTool, u as DEFAULT_LINE_TOOL_CONFIG, t as DEFAULT_TEXT_CONFIG, j as KritzelImageTool, y as KritzelAlignment, v as DEFAULT_ASSET_STORAGE_CONFIG, N as KritzelSelectionGroup, O as KritzelSelectionBox, P as KritzelIconRegistry, Q as KritzelKeyboardHelper, R as KritzelBaseHandler, T as KritzelToolRegistry, U as KritzelBaseObject, q as KritzelWorkspace, e as KritzelGroup, c as KritzelImage, f as KritzelShape, K as KritzelText, B as runMigrations, z as CURRENT_WORKSPACE_SCHEMA_VERSION, F as WORKSPACE_MIGRATIONS, C as CURRENT_APP_STATE_SCHEMA_VERSION, E as APP_STATE_MIGRATIONS, V as ObjectHelper, m as KritzelCursorHelper, r as KritzelAnchorManager, s as KritzelThemeManager, o as KritzelAssetResolver, X as KritzelClassHelper, Y as KritzelEventHelper, Z as KritzelBaseTool, W as WORKSPACE_EXPORT_VERSION } from './workspace.migrations-D_y5zlxK.js';
|
|
3
3
|
import * as Y from 'yjs';
|
|
4
4
|
import 'y-indexeddb';
|
|
5
5
|
import 'y-websocket';
|
|
@@ -935,10 +935,7 @@ const KritzelControls = class {
|
|
|
935
935
|
}
|
|
936
936
|
handleDisplayValuesChange = (event) => {
|
|
937
937
|
const newVal = event.detail;
|
|
938
|
-
if (this.displayValues &&
|
|
939
|
-
this.displayValues.color === newVal.color &&
|
|
940
|
-
this.displayValues.size === newVal.size &&
|
|
941
|
-
this.displayValues.fontFamily === newVal.fontFamily) {
|
|
938
|
+
if (this.displayValues && this.displayValues.color === newVal.color && this.displayValues.size === newVal.size && this.displayValues.fontFamily === newVal.fontFamily) {
|
|
942
939
|
return;
|
|
943
940
|
}
|
|
944
941
|
this.displayValues = newVal;
|
|
@@ -1070,13 +1067,13 @@ const KritzelControls = class {
|
|
|
1070
1067
|
// Separate tool controls from config control
|
|
1071
1068
|
const toolControls = this.controls.filter(c => c.type === 'tool' || c.type === 'separator');
|
|
1072
1069
|
const configControl = this.controls.find(c => c.type === 'config' && c.name === this.firstConfig?.name);
|
|
1073
|
-
return (h(Host, { key: '
|
|
1070
|
+
return (h(Host, { key: '93d08a3268edb67fc4cccb291b6e0aff6cf5a4bd', class: {
|
|
1074
1071
|
mobile: this.isTouchDevice,
|
|
1075
|
-
} }, this.isUtilityPanelVisible && (h("kritzel-utility-panel", { key: '
|
|
1072
|
+
} }, this.isUtilityPanelVisible && (h("kritzel-utility-panel", { key: '8862ea7e524b3e23d87ffea2929e04df7231bb0c', style: {
|
|
1076
1073
|
position: 'absolute',
|
|
1077
1074
|
bottom: '56px',
|
|
1078
1075
|
left: '12px',
|
|
1079
|
-
}, undoState: this.undoState, onUndo: () => this.kritzelEngine?.undo(), onRedo: () => this.kritzelEngine?.redo(), onDelete: () => this.kritzelEngine?.delete() })), h("div", { key: '
|
|
1076
|
+
}, undoState: this.undoState, onUndo: () => this.kritzelEngine?.undo(), onRedo: () => this.kritzelEngine?.redo(), onDelete: () => this.kritzelEngine?.delete() })), h("div", { key: '2ea2a41ba4cda77f5abde9231d293da181a2a568', class: "kritzel-controls" }, h("div", { key: '6bd4f6d930a0a51d5549b6dbae1e7be14cbe7822', class: { 'scroll-indicator-left': true, 'visible': this.canScrollLeft } }), h("div", { key: 'c712ca502a4ebd244394158b39391a49839bc386', class: "kritzel-tools-scroll", ref: el => (this.toolsScrollRef = el), onScroll: this.handleToolsScroll }, toolControls.map(control => {
|
|
1080
1077
|
// Check if this control has sub-options (split-button)
|
|
1081
1078
|
if (control.subOptions?.length) {
|
|
1082
1079
|
const selectedSubOption = this.getSelectedSubOption(control);
|
|
@@ -1106,10 +1103,10 @@ const KritzelControls = class {
|
|
|
1106
1103
|
'kritzel-control': true,
|
|
1107
1104
|
'selected': this.activeControl?.name === control?.name,
|
|
1108
1105
|
}, key: control.name, "data-testid": `tool-${control.name}`, onClick: _event => this.handleControlClick?.(control) }, h("kritzel-icon", { name: control.icon })));
|
|
1109
|
-
})), h("div", { key: '
|
|
1106
|
+
})), h("div", { key: '6ca260915b2880443a324855a1de96d10affd256', class: { 'scroll-indicator-right': true, 'visible': this.canScrollRight && !(configControl && this.activeControl && hasConfigUI) } }), configControl && this.activeControl && (h("div", { class: {
|
|
1110
1107
|
'kritzel-config-container': true,
|
|
1111
1108
|
'visible': hasConfigUI,
|
|
1112
|
-
}, key: configControl.name }, h("div", { key: '
|
|
1109
|
+
}, key: configControl.name }, h("div", { key: '984d30bd7f508d2fc56a9e81692fdf05dfb852c9', class: { 'config-gradient-left': true, 'visible': this.needsScrolling } }), h("kritzel-tooltip", { key: '90c59995d229c606b9bf3b625f6eefc0632371c6', anchorElement: this.host.shadowRoot?.querySelector('.kritzel-config-container'), triggerElement: this.configTriggerRef }, h("kritzel-tool-config", { key: 'cdb56f983e1f6840b11d06d166f982a93c07331b', tool: this.activeControl.tool, theme: this.theme, onToolChange: event => this.handleToolChange?.(event), onDisplayValuesChange: this.handleDisplayValuesChange, style: { width: '100%', height: '100%' } })), h("div", { key: 'c79db07dd02995d3ee105e8d7a773f89cd7072a5', tabIndex: hasConfigUI ? 0 : -1, class: "kritzel-config", "data-testid": "tool-config", ref: el => {
|
|
1113
1110
|
if (el)
|
|
1114
1111
|
this.configTriggerRef = el;
|
|
1115
1112
|
}, onKeyDown: event => {
|
|
@@ -1118,7 +1115,7 @@ const KritzelControls = class {
|
|
|
1118
1115
|
}
|
|
1119
1116
|
}, style: {
|
|
1120
1117
|
cursor: 'pointer',
|
|
1121
|
-
} }, this.
|
|
1118
|
+
} }, this.displayValues && (h("div", { key: '0573a22c3105076729eb986c98b7e8644392f767', class: "color-container" }, h("kritzel-color", { key: '1e9711c219a5c520873b3206072957f2d406c56c', value: this.displayValues.color, theme: this.theme, size: 18, style: {
|
|
1122
1119
|
borderRadius: '50%',
|
|
1123
1120
|
border: 'none',
|
|
1124
1121
|
} })))))))));
|
|
@@ -1153,7 +1150,7 @@ const KritzelCurrentUser = class {
|
|
|
1153
1150
|
this.dialogRef?.open();
|
|
1154
1151
|
};
|
|
1155
1152
|
render() {
|
|
1156
|
-
return (h(Host, { key: '
|
|
1153
|
+
return (h(Host, { key: 'c392caf731f8352fd8e2a95918fe48a2f00dd9e5' }, h("kritzel-avatar", { key: 'b3bdce0efa0c0610aa028303386c643d53bc8300', user: this.user, size: this.avatarSize, onClick: this.handleAvatarClick }), h("kritzel-current-user-dialog", { key: '5e7af1aea468028e091ad8f461e4352cb9f9636b', ref: el => (this.dialogRef = el), user: this.user })));
|
|
1157
1154
|
}
|
|
1158
1155
|
};
|
|
1159
1156
|
KritzelCurrentUser.style = kritzelCurrentUserCss();
|
|
@@ -1185,7 +1182,7 @@ const KritzelCurrentUserDialog = class {
|
|
|
1185
1182
|
}
|
|
1186
1183
|
render() {
|
|
1187
1184
|
const displayName = this.getDisplayName();
|
|
1188
|
-
return (h(Host, { key: '
|
|
1185
|
+
return (h(Host, { key: 'e1dd44cdfdbaebfe886fed0d9feba2ef232b6615' }, h("kritzel-dialog", { key: '49dd037cca0741cc949f20d9d44cfd028492dc60', dialogTitle: "Account", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small" }, h("div", { key: 'ddcdfb82cc0c896025559888d475ab5c9ad59b4c', class: "user-info" }, h("kritzel-avatar", { key: '4d164b784cde6787d26ac164c7450c0352e6a7cb', user: this.user, size: 80 }), displayName && h("div", { key: '13ad719d8bd90cd608c78438fccbb38ed1d5e5ba', class: "user-name" }, displayName), this.user?.email && h("div", { key: 'df360afd434293d9c9d5fcf114713e0a6925a78e', class: "user-email" }, this.user.email)))));
|
|
1189
1186
|
}
|
|
1190
1187
|
};
|
|
1191
1188
|
KritzelCurrentUserDialog.style = kritzelCurrentUserDialogCss();
|
|
@@ -1346,7 +1343,7 @@ class KritzelHTMLHelper {
|
|
|
1346
1343
|
}
|
|
1347
1344
|
}
|
|
1348
1345
|
|
|
1349
|
-
const kritzelDialogCss = () => `:host{display:contents}.backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;display:flex;align-items:center;justify-content:center;background-color:var(--kritzel-dialog-backdrop-color, rgba(0, 0, 0, 0.5));opacity:1;transition:opacity 150ms ease-out}.backdrop.is-animating{opacity:0}.dialog-content{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-dialog-background-color, #ffffff);border-radius:var(--kritzel-dialog-border-radius, 12px);box-shadow:var(--kritzel-dialog-box-shadow, 0 4px 20px rgba(0, 0, 0, 0.15));border:var(--kritzel-dialog-border, 1px solid #ebebeb);max-height:var(--kritzel-dialog-max-height, 90vh);max-width:var(--kritzel-dialog-max-width, 90vw);overflow:hidden;transform:scale(1);opacity:1;transition:transform 200ms ease-out, opacity 200ms ease-out;font-family:var(--kritzel-dialog-font-family, sans-serif)}.dialog-content.is-animating{transform:scale(0.95);opacity:0}.dialog-content.size-small{width:var(--kritzel-dialog-width-small, 320px);height:var(--kritzel-dialog-height-small, auto)}.dialog-content.size-medium{width:var(--kritzel-dialog-width-medium, 480px);height:var(--kritzel-dialog-height-medium, auto)}.dialog-content.size-large{width:var(--kritzel-dialog-width-large, 640px);height:var(--kritzel-dialog-height-large, auto)}.dialog-content.size-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}@media (max-width: 576px){.backdrop:has(.fullscreen-on-mobile){background-color:transparent}.dialog-content.fullscreen-on-mobile{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.dialog-content.fullscreen-on-mobile .dialog-body{display:flex;flex-direction:column}.dialog-content.fullscreen-on-mobile .dialog-body ::slotted(*){flex:1;min-height:0}}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-dialog-header-padding, 16px 20px);border-bottom:var(--kritzel-dialog-header-border, 1px solid #ebebeb);gap:12px}.dialog-title{margin:0;font-size:var(--kritzel-dialog-title-font-size, 18px);font-weight:var(--kritzel-dialog-title-font-weight, 600);color:var(--kritzel-dialog-title-color, #1a1a1a);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--kritzel-dialog-close-button-border-radius, 6px);background-color:var(--kritzel-dialog-close-button-background, transparent);color:var(--kritzel-dialog-close-button-color, #666666);cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}.close-button:hover{background-color:var(--kritzel-dialog-close-button-hover-background, #f5f5f5);color:var(--kritzel-dialog-close-button-hover-color, #1a1a1a)}.close-button:active{background-color:var(--kritzel-dialog-close-button-active-background, #ebebeb)}.close-button:focus-visible{outline:revert;outline-offset:revert}.dialog-body{padding:var(--kritzel-dialog-body-padding, 20px);overflow-y:auto;flex:1;min-height:0;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--kritzel-dialog-footer-gap, 8px);padding:var(--kritzel-dialog-footer-padding, 16px 20px);border-top:var(--kritzel-dialog-footer-border, 1px solid #ebebeb)}::slotted([slot='header']){flex:1}::slotted([slot='footer']){display:contents}`;
|
|
1346
|
+
const kritzelDialogCss = () => `:host{display:contents}.backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;display:flex;align-items:center;justify-content:center;background-color:var(--kritzel-dialog-backdrop-color, rgba(0, 0, 0, 0.5));opacity:1;transition:opacity 150ms ease-out}.backdrop.is-animating{opacity:0}.dialog-content{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-dialog-background-color, #ffffff);border-radius:var(--kritzel-dialog-border-radius, 12px);box-shadow:var(--kritzel-dialog-box-shadow, 0 4px 20px rgba(0, 0, 0, 0.15));border:var(--kritzel-dialog-border, 1px solid #ebebeb);max-height:var(--kritzel-dialog-max-height, 90vh);max-width:var(--kritzel-dialog-max-width, 90vw);overflow:hidden;transform:scale(1);opacity:1;transition:transform 200ms ease-out, opacity 200ms ease-out;font-family:var(--kritzel-dialog-font-family, sans-serif)}.dialog-content.is-animating{transform:scale(0.95);opacity:0}.dialog-content.size-small{width:var(--kritzel-dialog-width-small, 320px);height:var(--kritzel-dialog-height-small, auto)}.dialog-content.size-medium{width:var(--kritzel-dialog-width-medium, 480px);height:var(--kritzel-dialog-height-medium, auto)}.dialog-content.size-large{width:var(--kritzel-dialog-width-large, 640px);height:var(--kritzel-dialog-height-large, auto)}.dialog-content.size-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}@media (max-width: 576px), (max-height: 576px) and (orientation: landscape){.backdrop:has(.fullscreen-on-mobile){background-color:transparent}.dialog-content.fullscreen-on-mobile{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.dialog-content.fullscreen-on-mobile .dialog-body{display:flex;flex-direction:column}.dialog-content.fullscreen-on-mobile .dialog-body ::slotted(*){flex:1;min-height:0}}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-dialog-header-padding, 16px 20px);border-bottom:var(--kritzel-dialog-header-border, 1px solid #ebebeb);gap:12px}.dialog-title{margin:0;font-size:var(--kritzel-dialog-title-font-size, 18px);font-weight:var(--kritzel-dialog-title-font-weight, 600);color:var(--kritzel-dialog-title-color, #1a1a1a);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--kritzel-dialog-close-button-border-radius, 6px);background-color:var(--kritzel-dialog-close-button-background, transparent);color:var(--kritzel-dialog-close-button-color, #666666);cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}.close-button:hover{background-color:var(--kritzel-dialog-close-button-hover-background, #f5f5f5);color:var(--kritzel-dialog-close-button-hover-color, #1a1a1a)}.close-button:active{background-color:var(--kritzel-dialog-close-button-active-background, #ebebeb)}.close-button:focus-visible{outline:revert;outline-offset:revert}.dialog-body{padding:var(--kritzel-dialog-body-padding, 20px);overflow-y:auto;flex:1;min-height:0;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--kritzel-dialog-footer-gap, 8px);padding:var(--kritzel-dialog-footer-padding, 16px 20px);border-top:var(--kritzel-dialog-footer-border, 1px solid #ebebeb)}::slotted([slot='header']){flex:1}::slotted([slot='footer']){display:contents}`;
|
|
1350
1347
|
|
|
1351
1348
|
const KritzelDialog = class {
|
|
1352
1349
|
constructor(hostRef) {
|
|
@@ -1448,8 +1445,9 @@ const KritzelDialog = class {
|
|
|
1448
1445
|
document.body.style.overflow = 'hidden';
|
|
1449
1446
|
}
|
|
1450
1447
|
lockMobileViewportHeight() {
|
|
1451
|
-
// Only lock height on mobile when fullscreenOnMobile is enabled
|
|
1452
|
-
|
|
1448
|
+
// Only lock height on mobile when fullscreenOnMobile is enabled.
|
|
1449
|
+
// Use the smaller dimension so landscape phones (wide but short) are also detected.
|
|
1450
|
+
if (!this.fullscreenOnMobile || Math.min(window.innerWidth, window.innerHeight) > 576) {
|
|
1453
1451
|
this.mobileLockedHeight = null;
|
|
1454
1452
|
return;
|
|
1455
1453
|
}
|
|
@@ -21425,6 +21423,12 @@ class KritzelObjectMap {
|
|
|
21425
21423
|
* redundant full serializations of every child object per frame.
|
|
21426
21424
|
*/
|
|
21427
21425
|
_localOnlyMode = false;
|
|
21426
|
+
/**
|
|
21427
|
+
* Tracks whether we're currently executing inside a `transaction()`
|
|
21428
|
+
* callback. While true, `markUndoBoundary()` is a no-op so nested
|
|
21429
|
+
* insert/remove calls don't split the in-progress undo step.
|
|
21430
|
+
*/
|
|
21431
|
+
_inTransaction = false;
|
|
21428
21432
|
/**
|
|
21429
21433
|
* Indicates whether the object map has been initialized and is ready for use.
|
|
21430
21434
|
* @returns `true` if providers are connected and the map is operational
|
|
@@ -21663,9 +21667,12 @@ class KritzelObjectMap {
|
|
|
21663
21667
|
}
|
|
21664
21668
|
this._providers.push(provider);
|
|
21665
21669
|
}
|
|
21666
|
-
//
|
|
21670
|
+
// captureTimeout is effectively infinite — undo-step boundaries are
|
|
21671
|
+
// marked explicitly via markUndoBoundary() in insert/remove/reset and
|
|
21672
|
+
// at stroke/gesture boundaries in the tools. This prevents a single
|
|
21673
|
+
// brush stroke from being split when the user pauses after pointerdown.
|
|
21667
21674
|
this._undoManager = new Y.UndoManager([this._objectsMap], {
|
|
21668
|
-
captureTimeout:
|
|
21675
|
+
captureTimeout: Number.MAX_SAFE_INTEGER,
|
|
21669
21676
|
trackedOrigins: new Set(['local', 'temporary']),
|
|
21670
21677
|
ignoreRemoteMapChanges: true,
|
|
21671
21678
|
});
|
|
@@ -21983,9 +21990,35 @@ class KritzelObjectMap {
|
|
|
21983
21990
|
*/
|
|
21984
21991
|
transaction(callback) {
|
|
21985
21992
|
if (this._ydoc) {
|
|
21986
|
-
this.
|
|
21993
|
+
this._inTransaction = true;
|
|
21994
|
+
try {
|
|
21995
|
+
this._ydoc.transact(callback, 'local');
|
|
21996
|
+
}
|
|
21997
|
+
finally {
|
|
21998
|
+
this._inTransaction = false;
|
|
21999
|
+
}
|
|
21987
22000
|
}
|
|
21988
22001
|
}
|
|
22002
|
+
/**
|
|
22003
|
+
* Closes the current undo stack item so the next tracked change starts
|
|
22004
|
+
* a new one. Call at gesture/stroke boundaries (e.g. drag/resize/rotate
|
|
22005
|
+
* end, brush/line/shape stroke end).
|
|
22006
|
+
*
|
|
22007
|
+
* No-op while a transaction() is open.
|
|
22008
|
+
*/
|
|
22009
|
+
stopUndoCapturing() {
|
|
22010
|
+
this.markUndoBoundary();
|
|
22011
|
+
}
|
|
22012
|
+
/**
|
|
22013
|
+
* Internal: closes the current undo stack item. No-op while inside a
|
|
22014
|
+
* transaction() so wrapped multi-op work stays a single undo step.
|
|
22015
|
+
*/
|
|
22016
|
+
markUndoBoundary() {
|
|
22017
|
+
if (this._inTransaction) {
|
|
22018
|
+
return;
|
|
22019
|
+
}
|
|
22020
|
+
this._undoManager?.stopCapturing();
|
|
22021
|
+
}
|
|
21989
22022
|
/**
|
|
21990
22023
|
* Executes a callback where all update() calls only modify local state
|
|
21991
22024
|
* (quadtree + idMap) without writing to Yjs. This avoids expensive full
|
|
@@ -22049,6 +22082,7 @@ class KritzelObjectMap {
|
|
|
22049
22082
|
reset() {
|
|
22050
22083
|
this.quadtree.reset();
|
|
22051
22084
|
this._idMap.clear();
|
|
22085
|
+
this.markUndoBoundary();
|
|
22052
22086
|
this._ydoc?.transact(() => {
|
|
22053
22087
|
this._objectsMap?.clear();
|
|
22054
22088
|
}, 'local');
|
|
@@ -22069,6 +22103,7 @@ class KritzelObjectMap {
|
|
|
22069
22103
|
this._idMap.set(object.id, object);
|
|
22070
22104
|
if (this._objectsMap && this.isPersistable(object)) {
|
|
22071
22105
|
const serialized = object.serialize();
|
|
22106
|
+
this.markUndoBoundary();
|
|
22072
22107
|
this._ydoc?.transact(() => {
|
|
22073
22108
|
this._objectsMap?.set(object.id, serialized);
|
|
22074
22109
|
}, 'local');
|
|
@@ -22113,6 +22148,10 @@ class KritzelObjectMap {
|
|
|
22113
22148
|
*/
|
|
22114
22149
|
remove(predicate) {
|
|
22115
22150
|
const objectsToRemove = this.quadtree.filter(predicate);
|
|
22151
|
+
if (objectsToRemove.length === 0) {
|
|
22152
|
+
return;
|
|
22153
|
+
}
|
|
22154
|
+
this.markUndoBoundary();
|
|
22116
22155
|
for (const object of objectsToRemove) {
|
|
22117
22156
|
this.quadtree.remove(o => o.id === object.id);
|
|
22118
22157
|
this._idMap.delete(object.id);
|
|
@@ -23803,8 +23842,15 @@ class KritzelCore {
|
|
|
23803
23842
|
if (!selectionGroup) {
|
|
23804
23843
|
return;
|
|
23805
23844
|
}
|
|
23806
|
-
|
|
23807
|
-
|
|
23845
|
+
// Seal the selection group's creation into its own undo step so Yjs
|
|
23846
|
+
// doesn't collapse create+delete of the SG into a no-op on undo.
|
|
23847
|
+
this._store.objects.stopUndoCapturing();
|
|
23848
|
+
this._store.objects.transaction(() => {
|
|
23849
|
+
selectionGroup.objects.forEach(obj => this.removeObject(obj));
|
|
23850
|
+
this.removeSelectionGroup();
|
|
23851
|
+
});
|
|
23852
|
+
// Close the deletion step so subsequent unrelated changes start a new step.
|
|
23853
|
+
this._store.objects.stopUndoCapturing();
|
|
23808
23854
|
this.engine.emitObjectsInViewportChange();
|
|
23809
23855
|
this.rerender();
|
|
23810
23856
|
}
|
|
@@ -25756,7 +25802,7 @@ async function toPng(node, options = {}) {
|
|
|
25756
25802
|
return canvas.toDataURL();
|
|
25757
25803
|
}
|
|
25758
25804
|
|
|
25759
|
-
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}.workspace-loading-overlay{position:absolute;inset:0;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;pointer-events:all;animation:workspace-loading-fade-in 200ms ease-out var(--kritzel-loading-overlay-delay, 300ms) forwards;opacity:0}.workspace-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:workspace-loading-spin 0.6s linear infinite}@keyframes workspace-loading-spin{to{transform:rotate(360deg)}}@keyframes workspace-loading-fade-in{to{opacity:1}}.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}`;
|
|
25805
|
+
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}.workspace-loading-overlay{position:absolute;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;gap:10px;background-color:var(--kritzel-engine-loading-overlay-background, rgba(255, 255, 255, 0.6));color:var(--kritzel-engine-loading-overlay-color, #333);font-family:var(--kritzel-font-family, sans-serif);font-size:1.25rem;pointer-events:all;animation:workspace-loading-fade-in 200ms ease-out var(--kritzel-engine-loading-overlay-delay, 300ms) forwards;opacity:0}.workspace-loading-spinner{width:20px;height:20px;box-sizing:border-box;display:block;flex-shrink:0;border:2px solid var(--kritzel-engine-loading-overlay-spinner-color, #cccccc);border-top-color:var(--kritzel-engine-loading-overlay-spinner-active-color, #333333);border-radius:50%;animation:workspace-loading-spin 0.6s linear infinite}@keyframes workspace-loading-spin{to{transform:rotate(360deg)}}@keyframes workspace-loading-fade-in{to{opacity:1}}.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}`;
|
|
25760
25806
|
|
|
25761
25807
|
const KritzelEngine = class {
|
|
25762
25808
|
get host() { return getElement(this); }
|
|
@@ -25987,6 +26033,7 @@ const KritzelEngine = class {
|
|
|
25987
26033
|
if (this.core.store.isDisabled) {
|
|
25988
26034
|
return;
|
|
25989
26035
|
}
|
|
26036
|
+
const wasTracked = this.core.store.state.pointers.has(ev.pointerId);
|
|
25990
26037
|
this.core.store.state.pointers.delete(ev.pointerId);
|
|
25991
26038
|
if (this.host.hasPointerCapture(ev.pointerId)) {
|
|
25992
26039
|
this.host.releasePointerCapture(ev.pointerId);
|
|
@@ -25995,6 +26042,12 @@ const KritzelEngine = class {
|
|
|
25995
26042
|
if (this.core.store.state.pointers.size === 0) {
|
|
25996
26043
|
this.core.cursorManager.resetToDefault();
|
|
25997
26044
|
}
|
|
26045
|
+
// If the corresponding pointerdown was never processed (e.g. consumed by a capture-phase
|
|
26046
|
+
// listener like a tooltip close handler), skip tool logic to avoid spurious interactions
|
|
26047
|
+
// such as a selected text object entering edit mode when clicking to dismiss a popup.
|
|
26048
|
+
if (!wasTracked) {
|
|
26049
|
+
return;
|
|
26050
|
+
}
|
|
25998
26051
|
this.viewport.handlePointerUp(ev);
|
|
25999
26052
|
this.core.store.state?.activeTool?.handlePointerUp(ev);
|
|
26000
26053
|
}
|
|
@@ -27846,7 +27899,7 @@ const KritzelExport = class {
|
|
|
27846
27899
|
return (h("div", { class: "export-tab-content" }, h("kritzel-input", { label: "Filename", value: this.exportFilename, placeholder: "Enter filename", suffix: ".json", onValueChange: this.handleFilenameChange })));
|
|
27847
27900
|
}
|
|
27848
27901
|
render() {
|
|
27849
|
-
return (h(Host, { key: '
|
|
27902
|
+
return (h(Host, { key: '5178e66f75b94697c771e2dc6fe7ce317e21cd1a' }, h("kritzel-dialog", { key: '01aae6955be6828945b20e8a8a4d7c49eb92b2e2', isOpen: this.isDialogOpen, dialogTitle: "Export", closable: true, onDialogClose: this.closeDialog }, h("div", { key: '57c6f6de2917fb51201d737c4d0e1877f5671466', class: "export-content" }, h("kritzel-pill-tabs", { key: '800b8c058078ba1bba06b5edbaf370c4fa3c6806', tabs: this.tabs, value: this.activeTab, onValueChange: this.handleTabChange }), this.activeTab === 'viewport' && this.renderViewportExport(), this.activeTab === 'workspace' && this.renderWorkspaceExport(), h("button", { key: '99fb3b3d8dc42fdb47a3110e8403dde4e508e6cd', class: "export-primary-button", onClick: this.handleExport }, "Export")))));
|
|
27850
27903
|
}
|
|
27851
27904
|
};
|
|
27852
27905
|
KritzelExport.style = kritzelExportCss();
|
|
@@ -28143,7 +28196,7 @@ const KritzelLoginDialog = class {
|
|
|
28143
28196
|
this.dialogClosed.emit();
|
|
28144
28197
|
};
|
|
28145
28198
|
render() {
|
|
28146
|
-
return (h(Host, { key: '
|
|
28199
|
+
return (h(Host, { key: '1a664868b840030a773f61c2a0f4388dfb014675' }, h("kritzel-dialog", { key: '09ece6fb5949fc8b204f29cd931c583e525590e1', dialogTitle: this.dialogTitle, isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small" }, h("div", { key: '57218d7762734929691b82700c31922f5a4991c8', class: "login-content" }, this.subtitle && (h("p", { key: '9ee071786f393857cd6a666e395526a139359d60', class: "login-subtitle" }, this.subtitle)), h("div", { key: 'a487687345aabcfb55976437ddc85feb464f0cae', class: "login-providers" }, this.providers.map(provider => (h("button", { key: provider.name, class: {
|
|
28147
28200
|
'provider-button': true,
|
|
28148
28201
|
'is-loading': this.loadingProvider === provider.name,
|
|
28149
28202
|
'is-disabled': this.loadingProvider !== null && this.loadingProvider !== provider.name,
|
|
@@ -28511,7 +28564,7 @@ const KritzelMoreMenu = class {
|
|
|
28511
28564
|
this.closeMenu();
|
|
28512
28565
|
};
|
|
28513
28566
|
render() {
|
|
28514
|
-
return (h(Host, { key: '
|
|
28567
|
+
return (h(Host, { key: '0e12ffc8c72566ec92080e6a19bd1d929795bef9', class: { mobile: this.isTouchDevice } }, h("div", { key: 'cc73b51c5aa39522a7ab7ec23d5c0a2732ed7acc', class: { 'more-menu-wrapper': true, visible: this.visible } }, h("button", { key: 'c35b8c7aa56e5e0e2773fed9fbbbead0b6b01a71', class: "more-menu-button", onClick: this.toggleMenu }, h("kritzel-icon", { key: '8b3261da5a10371a17b2562b71fde48dd0ba8ccd', name: this.icon, size: this.iconSize })), h("kritzel-portal", { key: 'be4a42061f27bbca3d435dec8e4dd25fc78febb0', anchor: this.menuAnchor, offsetY: this.offsetY, onClose: this.closeMenu }, h("kritzel-menu", { key: '763043f4d02819097396ce1baa85f398695e38b5', items: this.visibleItems, onItemSelect: this.handleMenuItemSelect })))));
|
|
28515
28568
|
}
|
|
28516
28569
|
};
|
|
28517
28570
|
KritzelMoreMenu.style = kritzelMoreMenuCss();
|
|
@@ -29014,7 +29067,7 @@ const KritzelPortal = class {
|
|
|
29014
29067
|
* This file is auto-generated by the version bump scripts.
|
|
29015
29068
|
* Do not modify manually.
|
|
29016
29069
|
*/
|
|
29017
|
-
const KRITZEL_VERSION = '0.2.
|
|
29070
|
+
const KRITZEL_VERSION = '0.2.4';
|
|
29018
29071
|
|
|
29019
29072
|
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)}`;
|
|
29020
29073
|
|
|
@@ -29209,7 +29262,7 @@ const KritzelSettings = class {
|
|
|
29209
29262
|
}
|
|
29210
29263
|
}
|
|
29211
29264
|
render() {
|
|
29212
|
-
return (h(Host, { key: '
|
|
29265
|
+
return (h(Host, { key: '78a4eb80f2a4d9e7ef67d06bb39137dbde3a3301' }, h("kritzel-dialog", { key: '1adf437125186758f75dc085db9a4e0c572fccd9', isOpen: this.isDialogOpen, dialogTitle: "Settings", size: "large", onDialogClose: this.closeDialog }, h("kritzel-master-detail", { key: '68ed27f5c9c03589d0444c02ff0524dfcaa053a3', items: SETTINGS_CATEGORIES, selectedItemId: this.selectedCategoryId, onItemSelect: this.handleCategorySelect }, this.renderCategoryContent()))));
|
|
29213
29266
|
}
|
|
29214
29267
|
};
|
|
29215
29268
|
KritzelSettings.style = kritzelSettingsCss();
|
|
@@ -29335,9 +29388,9 @@ const KritzelShareDialog = class {
|
|
|
29335
29388
|
this.dialogClosed.emit();
|
|
29336
29389
|
};
|
|
29337
29390
|
render() {
|
|
29338
|
-
return (h(Host, { key: '
|
|
29391
|
+
return (h(Host, { key: 'bd58f146337b3eca96ca34408a3d30621f01765a' }, h("kritzel-dialog", { key: 'c152f4ec5739a18b265f9a8b161ec8501c1a053b', dialogTitle: "Share Workspace", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small" }, h("div", { key: '2810061b1c99e4f4644342453de693e1cddf9a27', class: "share-content" }, h("div", { key: 'bc56de53fd6136c6867018af24019383094cab0d', class: "share-section" }, h("div", { key: '43464ffd61e5a19653cc081e823f01c0eb17e454', class: "share-row" }, h("div", { key: 'ed83ea6684695d09dc6af82b3367fbbff6e4c7e2', class: "share-label-group" }, h("label", { key: 'fe2eaf501dd80ad0b8d83f93a2dcdd18bc093d3b', class: "share-label" }, "Link sharing"), h("p", { key: '738f1a6afc0421380164b9d270920631cefdfd78', class: "share-description" }, this.internalIsPublic
|
|
29339
29392
|
? 'Anyone with the link can access this workspace.'
|
|
29340
|
-
: 'Link sharing is disabled. Only you can access this workspace.')), h("kritzel-slide-toggle", { key: '
|
|
29393
|
+
: 'Link sharing is disabled. Only you can access this workspace.')), h("kritzel-slide-toggle", { key: '60f0200ea8f9c207cd5ee76f5a86f82707bb724b', checked: this.internalIsPublic, onCheckedChange: this.handleToggleChange, label: "Enable link sharing" }))), this.internalIsPublic && (h("div", { key: '83212a2a996b85996eee119d5535203f77d3c8dd', class: "share-section" }, h("div", { key: '297031b5aef2018f7aa33c32fd0f8c82f1ddb4cb', class: "share-url-container" }, h("input", { key: '467cca4a8c31b75daa82670f64b562730c241f52', type: "text", class: "share-url-input", value: this.getShareUrl(), readOnly: true, onClick: (e) => e.target.select() }), h("button", { key: 'fdc0f490339cb7050fb020cb1e83e51f6374b183', class: { 'copy-button': true, 'copy-success': this.copySuccess }, onClick: this.handleCopyUrl, title: this.copySuccess ? 'Copied!' : 'Copy link' }, h("kritzel-icon", { key: '5ff1a76d7977c75ea7bc8c339bdf515ba102e511', name: this.copySuccess ? 'check' : 'copy', size: 18 })))))))));
|
|
29341
29394
|
}
|
|
29342
29395
|
static get watchers() { return {
|
|
29343
29396
|
"isPublic": [{
|
|
@@ -29885,7 +29938,7 @@ const KritzelUtilityPanel = class {
|
|
|
29885
29938
|
this.redo.emit();
|
|
29886
29939
|
}
|
|
29887
29940
|
render() {
|
|
29888
|
-
return (h(Host, { key: '
|
|
29941
|
+
return (h(Host, { key: 'f800ea5843cf73ae132b56396ad05d664043f789' }, h("button", { key: 'd5dd4dc6e91c106eced7551c02d5f12a915b1d22', class: "utility-button", "data-testid": "utility-undo", disabled: !this.undoState?.canUndo, onClick: event => this.handleUndo(event) }, h("kritzel-icon", { key: '64ac3c8f118c991b50dc99e70d4b952fc759c958', name: "undo" })), h("button", { key: '97a8d694fd999eb505fdcdb532d4476ce369e60d', class: "utility-button", "data-testid": "utility-redo", disabled: !this.undoState?.canRedo, onClick: event => this.handleRedo(event) }, h("kritzel-icon", { key: 'ba22d5c6b246967b00112dc2efeb26920187d88f', name: "redo" })), h("div", { key: 'a4aa6a3202640742826d2217f2bbae9ebd2b84da', class: "utility-separator" }), h("button", { key: '1de2a896a6a70c22f9fa16a21af10f07f4b0303a', class: "utility-button", "data-testid": "utility-delete", onClick: () => this.delete.emit() }, h("kritzel-icon", { key: '202612645c1a3e8ee7e4cc01a0305d4e673874e4', name: "delete" }))));
|
|
29889
29942
|
}
|
|
29890
29943
|
};
|
|
29891
29944
|
KritzelUtilityPanel.style = kritzelUtilityPanelCss();
|
|
@@ -14489,6 +14489,10 @@ const lightTheme = {
|
|
|
14489
14489
|
},
|
|
14490
14490
|
engine: {
|
|
14491
14491
|
backgroundColor: '#ffffff',
|
|
14492
|
+
loadingOverlayBackground: 'rgba(255, 255, 255, 0.85)',
|
|
14493
|
+
loadingOverlayColor: '#333333',
|
|
14494
|
+
loadingOverlaySpinnerActiveColor: '#333333',
|
|
14495
|
+
loadingOverlaySpinnerColor: '#cccccc',
|
|
14492
14496
|
},
|
|
14493
14497
|
snap: {
|
|
14494
14498
|
indicatorFill: 'rgba(59, 130, 246, 0.3)',
|
|
@@ -14758,6 +14762,10 @@ const darkTheme = {
|
|
|
14758
14762
|
},
|
|
14759
14763
|
engine: {
|
|
14760
14764
|
backgroundColor: '#1a1a1a',
|
|
14765
|
+
loadingOverlayBackground: 'rgba(26, 26, 26, 0.85)',
|
|
14766
|
+
loadingOverlayColor: '#e0e0e0',
|
|
14767
|
+
loadingOverlaySpinnerActiveColor: '#e0e0e0',
|
|
14768
|
+
loadingOverlaySpinnerColor: '#555555',
|
|
14761
14769
|
},
|
|
14762
14770
|
snap: {
|
|
14763
14771
|
indicatorFill: 'rgba(10, 132, 255, 0.35)',
|
|
@@ -19649,6 +19657,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
19649
19657
|
}
|
|
19650
19658
|
this._core.store.objects?.setActiveDrawingObject(null);
|
|
19651
19659
|
this._currentPathId = null;
|
|
19660
|
+
this._core.store.objects?.stopUndoCapturing();
|
|
19652
19661
|
}
|
|
19653
19662
|
}
|
|
19654
19663
|
}
|
|
@@ -19665,6 +19674,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
19665
19674
|
}
|
|
19666
19675
|
this._core.store.objects?.setActiveDrawingObject(null);
|
|
19667
19676
|
this._currentPathId = null;
|
|
19677
|
+
this._core.store.objects?.stopUndoCapturing();
|
|
19668
19678
|
}
|
|
19669
19679
|
}
|
|
19670
19680
|
}
|
|
@@ -20496,6 +20506,7 @@ class KritzelLineTool extends KritzelBaseTool {
|
|
|
20496
20506
|
}
|
|
20497
20507
|
this._core.store.objects?.setActiveDrawingObject(null);
|
|
20498
20508
|
this._currentLineId = null;
|
|
20509
|
+
this._core.store.objects?.stopUndoCapturing();
|
|
20499
20510
|
}
|
|
20500
20511
|
}
|
|
20501
20512
|
}
|
|
@@ -20514,6 +20525,7 @@ class KritzelLineTool extends KritzelBaseTool {
|
|
|
20514
20525
|
}
|
|
20515
20526
|
this._core.store.objects?.setActiveDrawingObject(null);
|
|
20516
20527
|
this._currentLineId = null;
|
|
20528
|
+
this._core.store.objects?.stopUndoCapturing();
|
|
20517
20529
|
}
|
|
20518
20530
|
}
|
|
20519
20531
|
}
|
|
@@ -20620,17 +20632,24 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
20620
20632
|
if (event.pointerType === 'mouse') {
|
|
20621
20633
|
if (this._core.store.state.isErasing) {
|
|
20622
20634
|
const objectsToRemove = this._core.store.allObjects.filter(object => object.markedForRemoval);
|
|
20623
|
-
objectsToRemove.forEach(object => {
|
|
20624
|
-
object.markedForRemoval = false;
|
|
20625
|
-
this._core.removeObject(object);
|
|
20626
|
-
});
|
|
20627
20635
|
if (objectsToRemove.length > 0) {
|
|
20636
|
+
// Seal the previous undo step so create+delete of the same object
|
|
20637
|
+
// (e.g. just-drawn shape) don't collapse into a no-op on undo.
|
|
20638
|
+
this._core.store.objects.stopUndoCapturing();
|
|
20639
|
+
// Group all removals from this sweep into a single undo step.
|
|
20640
|
+
this._core.store.objects.transaction(() => {
|
|
20641
|
+
objectsToRemove.forEach(object => {
|
|
20642
|
+
object.markedForRemoval = false;
|
|
20643
|
+
this._core.removeObject(object);
|
|
20644
|
+
});
|
|
20645
|
+
});
|
|
20628
20646
|
this._core.rerender();
|
|
20629
20647
|
}
|
|
20630
20648
|
this._core.store.state.isErasing = false;
|
|
20631
20649
|
this._core.engine.emitObjectsChange();
|
|
20632
20650
|
if (objectsToRemove.length > 0) {
|
|
20633
20651
|
this._core.engine.emitObjectsRemoved(objectsToRemove);
|
|
20652
|
+
this._core.store.objects.stopUndoCapturing();
|
|
20634
20653
|
}
|
|
20635
20654
|
}
|
|
20636
20655
|
}
|
|
@@ -20638,17 +20657,24 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
20638
20657
|
clearTimeout(this.touchStartTimeout);
|
|
20639
20658
|
if (this._core.store.state.isErasing) {
|
|
20640
20659
|
const objectsToRemove = this._core.store.allObjects.filter(object => object.markedForRemoval);
|
|
20641
|
-
objectsToRemove.forEach(object => {
|
|
20642
|
-
object.markedForRemoval = false;
|
|
20643
|
-
this._core.removeObject(object);
|
|
20644
|
-
});
|
|
20645
20660
|
if (objectsToRemove.length > 0) {
|
|
20661
|
+
// Seal the previous undo step so create+delete of the same object
|
|
20662
|
+
// (e.g. just-drawn shape) don't collapse into a no-op on undo.
|
|
20663
|
+
this._core.store.objects.stopUndoCapturing();
|
|
20664
|
+
// Group all removals from this sweep into a single undo step.
|
|
20665
|
+
this._core.store.objects.transaction(() => {
|
|
20666
|
+
objectsToRemove.forEach(object => {
|
|
20667
|
+
object.markedForRemoval = false;
|
|
20668
|
+
this._core.removeObject(object);
|
|
20669
|
+
});
|
|
20670
|
+
});
|
|
20646
20671
|
this._core.rerender();
|
|
20647
20672
|
}
|
|
20648
20673
|
this._core.store.state.isErasing = false;
|
|
20649
20674
|
this._core.engine.emitObjectsChange();
|
|
20650
20675
|
if (objectsToRemove.length > 0) {
|
|
20651
20676
|
this._core.engine.emitObjectsRemoved(objectsToRemove);
|
|
20677
|
+
this._core.store.objects.stopUndoCapturing();
|
|
20652
20678
|
}
|
|
20653
20679
|
}
|
|
20654
20680
|
}
|
|
@@ -21253,6 +21279,7 @@ class KritzelShapeTool extends KritzelBaseTool {
|
|
|
21253
21279
|
this.isDrawing = false;
|
|
21254
21280
|
this._core.store.objects?.setActiveDrawingObject(null);
|
|
21255
21281
|
this.currentShape = null;
|
|
21282
|
+
this._core.store.objects?.stopUndoCapturing();
|
|
21256
21283
|
this._core.rerender();
|
|
21257
21284
|
}
|
|
21258
21285
|
}
|
|
@@ -21662,6 +21689,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
21662
21689
|
this._core.store.selectionGroup.update();
|
|
21663
21690
|
this._core.engine.emitObjectsChange();
|
|
21664
21691
|
this._core.store.state.hasObjectsChanged = true;
|
|
21692
|
+
this._core.store.objects.stopUndoCapturing();
|
|
21665
21693
|
}
|
|
21666
21694
|
}
|
|
21667
21695
|
}
|
|
@@ -21673,6 +21701,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
21673
21701
|
this._core.store.selectionGroup.update();
|
|
21674
21702
|
this._core.engine.emitObjectsChange();
|
|
21675
21703
|
this._core.store.state.hasObjectsChanged = true;
|
|
21704
|
+
this._core.store.objects.stopUndoCapturing();
|
|
21676
21705
|
}
|
|
21677
21706
|
}
|
|
21678
21707
|
}
|
|
@@ -22025,6 +22054,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
22025
22054
|
this._core.store.selectionGroup.update();
|
|
22026
22055
|
this._core.engine.emitObjectsChange();
|
|
22027
22056
|
this._core.store.state.hasObjectsChanged = true;
|
|
22057
|
+
this._core.store.objects.stopUndoCapturing();
|
|
22028
22058
|
}
|
|
22029
22059
|
this.reset();
|
|
22030
22060
|
}
|
|
@@ -22036,6 +22066,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
22036
22066
|
this._core.store.selectionGroup.update();
|
|
22037
22067
|
this._core.engine.emitObjectsChange();
|
|
22038
22068
|
this._core.store.state.hasObjectsChanged = true;
|
|
22069
|
+
this._core.store.objects.stopUndoCapturing();
|
|
22039
22070
|
}
|
|
22040
22071
|
this.reset();
|
|
22041
22072
|
const timeout = this._core.store.state.longTouchTimeout;
|
|
@@ -22187,6 +22218,7 @@ class KritzelRotationHandler extends KritzelBaseHandler {
|
|
|
22187
22218
|
this._core.engine.emitObjectsChange();
|
|
22188
22219
|
this._core.store.state.isRotating = false;
|
|
22189
22220
|
this._core.store.state.hasObjectsChanged = true;
|
|
22221
|
+
this._core.store.objects.stopUndoCapturing();
|
|
22190
22222
|
this.reset();
|
|
22191
22223
|
}
|
|
22192
22224
|
}
|
|
@@ -22196,6 +22228,7 @@ class KritzelRotationHandler extends KritzelBaseHandler {
|
|
|
22196
22228
|
this._core.engine.emitObjectsChange();
|
|
22197
22229
|
this._core.store.state.isRotating = false;
|
|
22198
22230
|
this._core.store.state.hasObjectsChanged = true;
|
|
22231
|
+
this._core.store.objects.stopUndoCapturing();
|
|
22199
22232
|
this.reset();
|
|
22200
22233
|
const timeout = this._core.store.state.longTouchTimeout;
|
|
22201
22234
|
if (timeout) {
|
|
@@ -23213,6 +23246,7 @@ class KritzelLineHandleHandler extends KritzelBaseHandler {
|
|
|
23213
23246
|
this._core.engine.emitObjectsChange();
|
|
23214
23247
|
this._core.store.state.hasObjectsChanged = true;
|
|
23215
23248
|
}
|
|
23249
|
+
this._core.store.objects.stopUndoCapturing();
|
|
23216
23250
|
}
|
|
23217
23251
|
this._core.store.state.isLineHandleDragging = false;
|
|
23218
23252
|
this.reset();
|