kritzel-stencil 0.1.25 → 0.1.26
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/{default-line-tool.config-nMR5iYBB.js → default-line-tool.config-Dbu-DwOX.js} +87 -38
- package/dist/cjs/{index-i21-qqbc.js → index-NMqsANCI.js} +111 -67
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-back-to-content_32.cjs.entry.js +41 -12
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/stencil.cjs.js +2 -2
- package/dist/collection/classes/objects/selection-group.class.js +86 -36
- package/dist/collection/classes/structures/quadtree.structure.js +38 -9
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/constants/version.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-back-to-content.js +1 -1
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-context-menu.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-cursor-trail.js +1 -1
- package/dist/components/kritzel-dialog.js +1 -1
- package/dist/components/kritzel-dropdown.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-family.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-icon.js +1 -1
- package/dist/components/kritzel-line-endings.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-shape-fill.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-workspace-manager.js +1 -1
- package/dist/components/{p-WnxGQWr6.js → p-6B0LH1RP.js} +1 -1
- package/dist/components/{p-CkN6-oE3.js → p-B37slzk_.js} +1 -1
- package/dist/components/{p-BGwkUUZk.js → p-BPSr4bMw.js} +1 -1
- package/dist/components/{p-JdxbP-1P.js → p-BUW_CzVu.js} +1 -1
- package/dist/components/{p-D_gY5jie.js → p-BWaNKYjM.js} +1 -1
- package/dist/components/{p-CBs9GnLk.js → p-BaLEWzaG.js} +1 -1
- package/dist/components/{p-8uzm1dKV.js → p-BcCjGflI.js} +1 -1
- package/dist/components/{p-DnB4Srvo.js → p-BjpOwF3v.js} +1 -1
- package/dist/components/p-BjwppWz9.js +1 -0
- package/dist/components/{p-GeVIjnFi.js → p-BlBskbmV.js} +1 -1
- package/dist/components/{p-CwP7yBQP.js → p-BpgX0LEG.js} +1 -1
- package/dist/components/{p-BkLVv1nj.js → p-Bq-Qb0-N.js} +1 -1
- package/dist/components/{p-RU06uu0S.js → p-BqjUcirx.js} +1 -1
- package/dist/components/{p-CJTKpwmi.js → p-C30XjZtX.js} +1 -1
- package/dist/components/{p-CDZUyTsg.js → p-CJAFwG4C.js} +1 -1
- package/dist/components/{p-rBxQNDS2.js → p-CKCulHas.js} +1 -1
- package/dist/components/{p-yWjTje8m.js → p-CS2-FWGh.js} +1 -1
- package/dist/components/{p-DoE6WkDw.js → p-CSxODmkF.js} +1 -1
- package/dist/components/{p-BNYfuHT_.js → p-Cb3hilN-.js} +1 -1
- package/dist/components/{p-BxK5ew4S.js → p-Cg1R-Lj1.js} +1 -1
- package/dist/components/{p-CbRaWk0G.js → p-Cg7hVn-a.js} +1 -1
- package/dist/components/{p-n0XDtwWP.js → p-CioyMx_2.js} +1 -1
- package/dist/components/{p-BBx_5XKc.js → p-D89vzg8F.js} +1 -1
- package/dist/components/{p-DKNtjoqf.js → p-DTd44r1v.js} +1 -1
- package/dist/components/{p-Cpb-fnoO.js → p-DUSygVl-.js} +1 -1
- package/dist/components/{p-DKDoQ9nc.js → p-Dt85tAlJ.js} +1 -1
- package/dist/components/{p-DmN0DKS3.js → p-DxWQQBfC.js} +2 -2
- package/dist/components/{p-CTQmvTXG.js → p-Dz5ub8ld.js} +1 -1
- package/dist/components/{p-6USF_L1F.js → p-K1VNFj7L.js} +1 -1
- package/dist/components/p-SVmGNrsg.js +1 -0
- package/dist/components/{p-B1qfRBi0.js → p-eE5FpwD4.js} +1 -1
- package/dist/components/{p-B-muKisW.js → p-kpem_jJ9.js} +1 -1
- package/dist/esm/{default-line-tool.config-OwcgiNEW.js → default-line-tool.config-C_yDm5gU.js} +87 -38
- package/dist/esm/{index-k35gVcuU.js → index-DeSOzavr.js} +111 -67
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-back-to-content_32.entry.js +41 -12
- package/dist/esm/kritzel-brush-style.entry.js +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/stencil.js +3 -3
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-C_yDm5gU.js +1 -0
- package/dist/stencil/p-DeSOzavr.js +2 -0
- package/dist/stencil/{p-00e3ec46.entry.js → p-c0fc7909.entry.js} +2 -2
- package/dist/stencil/{p-095f812f.entry.js → p-e2bb9026.entry.js} +1 -1
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/objects/selection-group.class.d.ts +10 -1
- package/dist/types/classes/structures/quadtree.structure.d.ts +15 -0
- package/dist/types/components.d.ts +178 -57
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +20 -1
- package/package.json +2 -2
- package/dist/components/p-8uGOVKdw.js +0 -1
- package/dist/components/p-Cj-I2_Og.js +0 -1
- package/dist/stencil/p-OwcgiNEW.js +0 -1
- package/dist/stencil/p-k35gVcuU.js +0 -2
package/dist/cjs/{default-line-tool.config-nMR5iYBB.js → default-line-tool.config-Dbu-DwOX.js}
RENAMED
|
@@ -15087,8 +15087,7 @@ function requireCjs () {
|
|
|
15087
15087
|
if (hasRequiredCjs) return cjs;
|
|
15088
15088
|
hasRequiredCjs = 1;
|
|
15089
15089
|
(function (exports) {
|
|
15090
|
-
Object.
|
|
15091
|
-
|
|
15090
|
+
var pe=Object.defineProperty;var ge=e=>pe(e,"__esModule",{value:true});var de=(e,t)=>{ge(e);for(var s in t)pe(e,s,{get:t[s],enumerable:true});};de(exports,{default:()=>ve,getStroke:()=>ne,getStrokeOutlinePoints:()=>te,getStrokePoints:()=>re});function $(e,t,s,x=h=>h){return e*x(.5-t*(.5-s))}function ce(e){return [-e[0],-e[1]]}function l(e,t){return [e[0]+t[0],e[1]+t[1]]}function a(e,t){return [e[0]-t[0],e[1]-t[1]]}function b(e,t){return [e[0]*t,e[1]*t]}function xe(e,t){return [e[0]/t,e[1]/t]}function R(e){return [e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function me(e,t){return e[0]===t[0]&&e[1]===t[1]}function Se(e){return Math.hypot(e[0],e[1])}function Pe(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return Pe(a(e,t))}function G(e){return xe(e,Se(e))}function ae(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,s){let x=Math.sin(s),h=Math.cos(s),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return [f+t[0],d+t[1]]}function K(e,t,s){return l(e,b(a(t,e),s))}function ee(e,t,s){return l(e,b(t,s))}var{min:C,PI:ke}=Math,le=.275,V=ke+1e-4;function te(e,t={}){let{size:s=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=true,easing:n=r=>r,start:f={},end:d={},last:D=false}=t,{cap:S=true,easing:j=r=>r*(2-r)}=f,{cap:q=true,easing:c=r=>--r*r*r+1}=d;if(e.length===0||s<=0)return [];let p=e[e.length-1].runningLength,g=f.taper===false?0:f.taper===true?Math.max(s,p):f.taper,T=d.taper===false?0:d.taper===true?Math.max(s,p):d.taper,oe=Math.pow(s*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let u=C(1,i.distance/s),W=C(1,1-u);o=C(1,r+(W-r)*(u*le));}return (r+o)/2},e[0].pressure),m=$(s,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=false;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:u,distance:W,runningLength:I}=e[r];if(r<e.length-1&&p-I<3)continue;if(h){if(y){let v=C(1,W/s),Z=C(1,1-v);i=C(1,H+(Z-H)*(v*le));}m=$(s,h,i,n);}else m=s/2;U===void 0&&(U=m);let fe=I<g?j(I/g):1,be=p-I<T?c((p-I)/T):1;m=Math.max(.01,m*Math.min(fe,be));let se=(r<e.length-1?e[r+1]:e[r]).vector,Y=r<e.length-1?B(u,se):1,he=B(u,X)<0&&!J,ue=Y!==null&&Y<0;if(he||ue){let v=b(R(X),m);for(let Z=1/13,w=0;w<=1;w+=Z)O=L(a(o,v),o,V*w),_.push(O),E=L(l(o,v),o,V*-w),M.push(E);z=O,F=E,ue&&(J=true);continue}if(J=false,r===e.length-1){let v=b(R(u),m);_.push(a(o,v)),M.push(l(o,v));continue}let ie=b(R(K(se,u,Y)),m);O=a(o,ie),(r<=1||A(z,O)>oe)&&(_.push(O),z=O),E=l(o,ie),(r<=1||A(F,E)>oe)&&(M.push(E),F=E),H=i,X=u;}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,u=o;u<=1;u+=o)i.push(L(r,P,V*2*u));return i}}else {if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let u=L(M[0],P,V*o);Q.push(u);}else {let i=a(_[0],M[0]),o=b(i,.5),u=b(i,.51);Q.push(a(P,o),a(P,u),l(P,u),l(P,o));}let r=R(ce(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,u=o;u<1;u+=o)N.push(L(i,k,V*3*u));}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)));}return _.concat(N,M.reverse(),Q)}function re(e,t={}){var q;let{streamline:s=.5,size:x=16,last:h=false}=t;if(e.length===0)return [];let y=.15+(1-s)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4));}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=false,D=0,S=f[0],j=n.length-1;for(let c=1;c<n.length;c++){let p=h&&c===j?n[c].slice(0,2):K(S.point,n[c],y);if(me(S.point,p))continue;let g=ae(p,S.point);if(D+=g,c<j&&!d){if(D<x)continue;d=true;}S={point:p,pressure:n[c][2]>=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S);}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ne(e,t={}){return te(re(e,t),t)}var ve=ne;
|
|
15092
15091
|
} (cjs));
|
|
15093
15092
|
return cjs;
|
|
15094
15093
|
}
|
|
@@ -16818,7 +16817,10 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
16818
16817
|
class KritzelSelectionGroup extends KritzelBaseObject {
|
|
16819
16818
|
__class__ = 'KritzelSelectionGroup';
|
|
16820
16819
|
// Store only object IDs instead of full objects
|
|
16821
|
-
|
|
16820
|
+
_objectIds = [];
|
|
16821
|
+
// Cached objects array - invalidated when objectIds changes
|
|
16822
|
+
_cachedObjects = null;
|
|
16823
|
+
_cachedObjectIdsHash = '';
|
|
16822
16824
|
// Store snapshots of object state for transformations (rotation, resize)
|
|
16823
16825
|
unchangedObjectSnapshots = new Map();
|
|
16824
16826
|
snapshotRotation = 0;
|
|
@@ -16826,16 +16828,36 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
16826
16828
|
maxX;
|
|
16827
16829
|
minY;
|
|
16828
16830
|
maxY;
|
|
16831
|
+
get objectIds() {
|
|
16832
|
+
return this._objectIds;
|
|
16833
|
+
}
|
|
16834
|
+
set objectIds(value) {
|
|
16835
|
+
this._objectIds = value;
|
|
16836
|
+
this._cachedObjects = null; // Invalidate cache
|
|
16837
|
+
}
|
|
16838
|
+
/**
|
|
16839
|
+
* Invalidate the cached objects array. Call this when objects might have changed
|
|
16840
|
+
* externally (e.g., after undo/redo operations).
|
|
16841
|
+
*/
|
|
16842
|
+
invalidateObjectsCache() {
|
|
16843
|
+
this._cachedObjects = null;
|
|
16844
|
+
}
|
|
16829
16845
|
// Getter to retrieve actual objects from the store by their IDs
|
|
16830
|
-
// Optimized:
|
|
16846
|
+
// Optimized: Caches result and only recomputes when objectIds changes
|
|
16831
16847
|
get objects() {
|
|
16832
|
-
const
|
|
16848
|
+
const currentHash = this._objectIds.join(',');
|
|
16849
|
+
if (this._cachedObjects !== null && this._cachedObjectIdsHash === currentHash) {
|
|
16850
|
+
return this._cachedObjects;
|
|
16851
|
+
}
|
|
16852
|
+
const idSet = new Set(this._objectIds);
|
|
16833
16853
|
const foundObjects = this._core.store.state.objects.filter(obj => idSet.has(obj.id));
|
|
16834
16854
|
// Preserve the original order from objectIds
|
|
16835
16855
|
const objectMap = new Map(foundObjects.map(obj => [obj.id, obj]));
|
|
16836
|
-
|
|
16856
|
+
this._cachedObjects = this._objectIds
|
|
16837
16857
|
.map(id => objectMap.get(id))
|
|
16838
16858
|
.filter((obj) => obj !== undefined);
|
|
16859
|
+
this._cachedObjectIdsHash = currentHash;
|
|
16860
|
+
return this._cachedObjects;
|
|
16839
16861
|
}
|
|
16840
16862
|
get length() {
|
|
16841
16863
|
return this.objectIds.length;
|
|
@@ -16850,49 +16872,60 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
16850
16872
|
return object;
|
|
16851
16873
|
}
|
|
16852
16874
|
addOrRemove(object) {
|
|
16853
|
-
const index = this.
|
|
16875
|
+
const index = this._objectIds.findIndex(id => id === object.id);
|
|
16854
16876
|
if (index === -1) {
|
|
16855
|
-
this.
|
|
16877
|
+
this._objectIds.push(object.id);
|
|
16856
16878
|
}
|
|
16857
16879
|
else {
|
|
16858
|
-
this.
|
|
16880
|
+
this._objectIds.splice(index, 1);
|
|
16859
16881
|
}
|
|
16860
|
-
this.
|
|
16861
|
-
this.
|
|
16882
|
+
this._cachedObjects = null; // Invalidate cache
|
|
16883
|
+
const children = this.objects; // Get cached objects once
|
|
16884
|
+
this.captureUnchangedSnapshots(children);
|
|
16885
|
+
this.refreshObjectDimensions(children);
|
|
16862
16886
|
}
|
|
16863
16887
|
/**
|
|
16864
16888
|
* Prepares the selection group and its children for a transform interaction (rotate/resize).
|
|
16865
16889
|
* Ensures snapshot state is aligned with the current visual state.
|
|
16866
16890
|
*/
|
|
16867
16891
|
beginTransform() {
|
|
16892
|
+
const children = this.objects; // Get cached objects once
|
|
16868
16893
|
// Keep the selection group's bounding box current before snapshotting.
|
|
16869
|
-
this.refreshObjectDimensions();
|
|
16870
|
-
this.captureUnchangedSnapshots();
|
|
16894
|
+
this.refreshObjectDimensions(children);
|
|
16895
|
+
this.captureUnchangedSnapshots(children);
|
|
16871
16896
|
// Groups need their own child snapshots aligned with the current transform.
|
|
16872
|
-
|
|
16897
|
+
for (const obj of children) {
|
|
16873
16898
|
if (obj instanceof KritzelGroup) {
|
|
16874
16899
|
obj.finalize();
|
|
16875
16900
|
}
|
|
16876
|
-
}
|
|
16901
|
+
}
|
|
16877
16902
|
}
|
|
16878
16903
|
deselectAllChildren() {
|
|
16879
|
-
|
|
16904
|
+
const children = this.objects;
|
|
16905
|
+
for (const obj of children) {
|
|
16906
|
+
obj.isSelected = false;
|
|
16907
|
+
}
|
|
16880
16908
|
}
|
|
16881
16909
|
updateWorkspaceId(workspaceId) {
|
|
16882
16910
|
this.workspaceId = workspaceId;
|
|
16883
|
-
|
|
16911
|
+
const children = this.objects;
|
|
16912
|
+
for (const obj of children) {
|
|
16913
|
+
obj.workspaceId = workspaceId;
|
|
16914
|
+
}
|
|
16884
16915
|
}
|
|
16885
16916
|
updateZIndices(startZIndex) {
|
|
16886
|
-
this.objects
|
|
16887
|
-
|
|
16888
|
-
|
|
16917
|
+
const children = this.objects;
|
|
16918
|
+
for (let i = 0; i < children.length; i++) {
|
|
16919
|
+
children[i].zIndex = startZIndex + i;
|
|
16920
|
+
}
|
|
16889
16921
|
}
|
|
16890
16922
|
updatePosition(x, y) {
|
|
16891
|
-
this.objects
|
|
16923
|
+
const children = this.objects;
|
|
16924
|
+
for (const obj of children) {
|
|
16892
16925
|
const deltaX = obj.translateX - this.translateX;
|
|
16893
16926
|
const deltaY = obj.translateY - this.translateY;
|
|
16894
16927
|
obj.updatePosition(x + deltaX, y + deltaY);
|
|
16895
|
-
}
|
|
16928
|
+
}
|
|
16896
16929
|
// Update snapshots
|
|
16897
16930
|
this.unchangedObjectSnapshots.forEach(snapshot => {
|
|
16898
16931
|
const deltaX = snapshot.translateX - this.translateX;
|
|
@@ -16927,8 +16960,11 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
16927
16960
|
});
|
|
16928
16961
|
}
|
|
16929
16962
|
serialize() {
|
|
16930
|
-
const { _core, _elementRef, element, totalWidth, totalHeight, unchangedObjectSnapshots, ...remainingProps } = this;
|
|
16963
|
+
const { _core, _elementRef, element, totalWidth, totalHeight, unchangedObjectSnapshots, _cachedObjects, _cachedObjectIdsHash, ...remainingProps } = this;
|
|
16931
16964
|
const clonedProps = structuredClone(remainingProps);
|
|
16965
|
+
// Ensure objectIds is serialized with the correct key name (getter returns _objectIds)
|
|
16966
|
+
clonedProps.objectIds = this.objectIds;
|
|
16967
|
+
delete clonedProps._objectIds;
|
|
16932
16968
|
if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {
|
|
16933
16969
|
clonedProps.element = element.cloneNode(true);
|
|
16934
16970
|
}
|
|
@@ -16939,6 +16975,10 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
16939
16975
|
deserialize(object) {
|
|
16940
16976
|
// First, deserialize all base properties using parent's deserialize
|
|
16941
16977
|
super.deserialize(object);
|
|
16978
|
+
// Restore objectIds through setter
|
|
16979
|
+
if (object.objectIds) {
|
|
16980
|
+
this.objectIds = object.objectIds;
|
|
16981
|
+
}
|
|
16942
16982
|
// Restore the Map from serialized object
|
|
16943
16983
|
if (object.unchangedObjectSnapshots) {
|
|
16944
16984
|
this.unchangedObjectSnapshots = new Map(Object.entries(object.unchangedObjectSnapshots));
|
|
@@ -16958,11 +16998,12 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
16958
16998
|
this.translateY += deltaY;
|
|
16959
16999
|
this._core.store.state.objects.transaction(() => {
|
|
16960
17000
|
this._core.store.state.objects.update(this);
|
|
16961
|
-
this.objects
|
|
17001
|
+
const children = this.objects;
|
|
17002
|
+
for (const obj of children) {
|
|
16962
17003
|
obj.move(startX, startY, endX, endY);
|
|
16963
17004
|
// Update any lines that are anchored to this object
|
|
16964
17005
|
this._core.anchorManager.updateAnchorsForObject(obj.id);
|
|
16965
|
-
}
|
|
17006
|
+
}
|
|
16966
17007
|
});
|
|
16967
17008
|
// Update snapshots
|
|
16968
17009
|
this.unchangedObjectSnapshots.forEach(snapshot => {
|
|
@@ -17047,31 +17088,33 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
17047
17088
|
this._core.store.state.objects.transaction(() => {
|
|
17048
17089
|
// Update the SelectionGroup itself to propagate rotation to other tabs
|
|
17049
17090
|
this._core.store.state.objects.update(this);
|
|
17050
|
-
children.
|
|
17091
|
+
const childCount = children.length;
|
|
17092
|
+
for (const child of children) {
|
|
17051
17093
|
const unchangedSnapshot = this.unchangedObjectSnapshots.get(child.id);
|
|
17052
17094
|
if (!unchangedSnapshot)
|
|
17053
|
-
|
|
17095
|
+
continue;
|
|
17054
17096
|
const offsetX = this.getOffsetXToCenterFromSnapshot(unchangedSnapshot);
|
|
17055
17097
|
const offsetY = this.getOffsetYToCenterFromSnapshot(unchangedSnapshot);
|
|
17056
17098
|
const rotatedX = cos * offsetX - sin * offsetY;
|
|
17057
17099
|
const rotatedY = sin * offsetX + cos * offsetY;
|
|
17058
17100
|
child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
|
|
17059
17101
|
child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
|
|
17060
|
-
child.rotate(
|
|
17061
|
-
}
|
|
17102
|
+
child.rotate(childCount === 1 ? value : unchangedSnapshot.rotation + angle);
|
|
17103
|
+
}
|
|
17062
17104
|
});
|
|
17063
17105
|
}
|
|
17064
17106
|
copy() {
|
|
17065
17107
|
const selectionGroup = KritzelSelectionGroup.create(this._core);
|
|
17066
|
-
this.objects
|
|
17067
|
-
|
|
17068
|
-
|
|
17108
|
+
const children = this.objects;
|
|
17109
|
+
// Sort children by zIndex and copy them
|
|
17110
|
+
const sortedChildren = [...children].sort((a, b) => a.zIndex - b.zIndex);
|
|
17111
|
+
for (const obj of sortedChildren) {
|
|
17069
17112
|
const copiedObject = obj.copy();
|
|
17070
17113
|
selectionGroup.addOrRemove(copiedObject);
|
|
17071
|
-
}
|
|
17114
|
+
}
|
|
17072
17115
|
selectionGroup.captureUnchangedSnapshots();
|
|
17073
|
-
if (
|
|
17074
|
-
selectionGroup.rotation =
|
|
17116
|
+
if (children.length === 1) {
|
|
17117
|
+
selectionGroup.rotation = children[0].rotation;
|
|
17075
17118
|
}
|
|
17076
17119
|
return selectionGroup;
|
|
17077
17120
|
}
|
|
@@ -17146,16 +17189,22 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
17146
17189
|
return objCenterY - groupCenterY;
|
|
17147
17190
|
}
|
|
17148
17191
|
hitTest(x, y) {
|
|
17149
|
-
const
|
|
17192
|
+
const children = this.objects;
|
|
17193
|
+
const isSingleLine = children.length === 1 && children[0].__class__ === 'KritzelLine';
|
|
17150
17194
|
if (isSingleLine) {
|
|
17151
|
-
return
|
|
17195
|
+
return children[0].hitTest(x, y);
|
|
17152
17196
|
}
|
|
17153
17197
|
const polygon = this.rotatedPolygon;
|
|
17154
17198
|
const polyPoints = [polygon.topLeft, polygon.topRight, polygon.bottomRight, polygon.bottomLeft];
|
|
17155
17199
|
if (KritzelGeometryHelper.isPointInPolygon({ x, y }, polyPoints)) {
|
|
17156
17200
|
return true;
|
|
17157
17201
|
}
|
|
17158
|
-
|
|
17202
|
+
for (const obj of children) {
|
|
17203
|
+
if (obj.hitTest(x, y)) {
|
|
17204
|
+
return true;
|
|
17205
|
+
}
|
|
17206
|
+
}
|
|
17207
|
+
return false;
|
|
17159
17208
|
}
|
|
17160
17209
|
}
|
|
17161
17210
|
|
|
@@ -22,7 +22,7 @@ const NAMESPACE = 'stencil';
|
|
|
22
22
|
const BUILD = /* stencil */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback: true, state: true, updatable: true};
|
|
23
23
|
|
|
24
24
|
/*
|
|
25
|
-
Stencil Client Platform v4.
|
|
25
|
+
Stencil Client Platform v4.43.0 | MIT Licensed | https://stenciljs.com
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
28
|
|
|
@@ -568,6 +568,36 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
|
|
|
568
568
|
plt.ael(elm, memberName, newValue, capture);
|
|
569
569
|
}
|
|
570
570
|
}
|
|
571
|
+
} else if (memberName[0] === "a" && memberName.startsWith("attr:")) {
|
|
572
|
+
const propName = memberName.slice(5);
|
|
573
|
+
let attrName;
|
|
574
|
+
{
|
|
575
|
+
const hostRef = getHostRef(elm);
|
|
576
|
+
if (hostRef && hostRef.$cmpMeta$ && hostRef.$cmpMeta$.$members$) {
|
|
577
|
+
const memberMeta = hostRef.$cmpMeta$.$members$[propName];
|
|
578
|
+
if (memberMeta && memberMeta[1]) {
|
|
579
|
+
attrName = memberMeta[1];
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
if (!attrName) {
|
|
584
|
+
attrName = propName.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
585
|
+
}
|
|
586
|
+
if (newValue == null || newValue === false) {
|
|
587
|
+
if (newValue !== false || elm.getAttribute(attrName) === "") {
|
|
588
|
+
elm.removeAttribute(attrName);
|
|
589
|
+
}
|
|
590
|
+
} else {
|
|
591
|
+
elm.setAttribute(attrName, newValue === true ? "" : newValue);
|
|
592
|
+
}
|
|
593
|
+
return;
|
|
594
|
+
} else if (memberName[0] === "p" && memberName.startsWith("prop:")) {
|
|
595
|
+
const propName = memberName.slice(5);
|
|
596
|
+
try {
|
|
597
|
+
elm[propName] = newValue;
|
|
598
|
+
} catch (e) {
|
|
599
|
+
}
|
|
600
|
+
return;
|
|
571
601
|
} else {
|
|
572
602
|
const isComplex = isComplexType(newValue);
|
|
573
603
|
if ((isProp || isComplex && newValue !== null) && !isSvg) {
|
|
@@ -576,7 +606,7 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
|
|
|
576
606
|
const n = newValue == null ? "" : newValue;
|
|
577
607
|
if (memberName === "list") {
|
|
578
608
|
isProp = false;
|
|
579
|
-
} else if (oldValue == null || elm[memberName]
|
|
609
|
+
} else if (oldValue == null || elm[memberName] !== n) {
|
|
580
610
|
if (typeof elm.__lookupSetter__(memberName) === "function") {
|
|
581
611
|
elm[memberName] = n;
|
|
582
612
|
} else {
|
|
@@ -1038,7 +1068,7 @@ var updateComponent = async (hostRef, instance, isInitialLoad) => {
|
|
|
1038
1068
|
if (childrenPromises.length === 0) {
|
|
1039
1069
|
postUpdate();
|
|
1040
1070
|
} else {
|
|
1041
|
-
Promise.all(childrenPromises).then(postUpdate);
|
|
1071
|
+
Promise.all(childrenPromises).then(postUpdate).catch(postUpdate);
|
|
1042
1072
|
hostRef.$flags$ |= 4 /* isWaitingForChildren */;
|
|
1043
1073
|
childrenPromises.length = 0;
|
|
1044
1074
|
}
|
|
@@ -1165,13 +1195,16 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
|
|
|
1165
1195
|
});
|
|
1166
1196
|
}
|
|
1167
1197
|
}
|
|
1168
|
-
if (
|
|
1198
|
+
if (flags & 2 /* hasRendered */) {
|
|
1169
1199
|
if (instance.componentShouldUpdate) {
|
|
1170
|
-
|
|
1200
|
+
const shouldUpdate = instance.componentShouldUpdate(newVal, oldVal, propName);
|
|
1201
|
+
if (shouldUpdate === false && !(flags & 16 /* isQueuedForUpdate */)) {
|
|
1171
1202
|
return;
|
|
1172
1203
|
}
|
|
1173
1204
|
}
|
|
1174
|
-
|
|
1205
|
+
if (!(flags & 16 /* isQueuedForUpdate */)) {
|
|
1206
|
+
scheduleUpdate(hostRef, false);
|
|
1207
|
+
}
|
|
1175
1208
|
}
|
|
1176
1209
|
}
|
|
1177
1210
|
};
|
|
@@ -1340,73 +1373,84 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
1340
1373
|
// src/runtime/initialize-component.ts
|
|
1341
1374
|
var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
|
|
1342
1375
|
let Cstr;
|
|
1343
|
-
|
|
1344
|
-
hostRef.$flags$
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1376
|
+
try {
|
|
1377
|
+
if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {
|
|
1378
|
+
hostRef.$flags$ |= 32 /* hasInitializedComponent */;
|
|
1379
|
+
const bundleId = cmpMeta.$lazyBundleId$;
|
|
1380
|
+
if (bundleId) {
|
|
1381
|
+
const CstrImport = loadModule(cmpMeta, hostRef);
|
|
1382
|
+
if (CstrImport && "then" in CstrImport) {
|
|
1383
|
+
const endLoad = uniqueTime();
|
|
1384
|
+
Cstr = await CstrImport;
|
|
1385
|
+
endLoad();
|
|
1386
|
+
} else {
|
|
1387
|
+
Cstr = CstrImport;
|
|
1388
|
+
}
|
|
1389
|
+
if (!Cstr) {
|
|
1390
|
+
throw new Error(`Constructor for "${cmpMeta.$tagName$}#${hostRef.$modeName$}" was not found`);
|
|
1391
|
+
}
|
|
1392
|
+
if (!Cstr.isProxied) {
|
|
1393
|
+
{
|
|
1394
|
+
cmpMeta.$watchers$ = Cstr.watchers;
|
|
1395
|
+
cmpMeta.$serializers$ = Cstr.serializers;
|
|
1396
|
+
cmpMeta.$deserializers$ = Cstr.deserializers;
|
|
1397
|
+
}
|
|
1398
|
+
proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);
|
|
1399
|
+
Cstr.isProxied = true;
|
|
1400
|
+
}
|
|
1401
|
+
const endNewInstance = createTime("createInstance", cmpMeta.$tagName$);
|
|
1359
1402
|
{
|
|
1360
|
-
|
|
1361
|
-
cmpMeta.$serializers$ = Cstr.serializers;
|
|
1362
|
-
cmpMeta.$deserializers$ = Cstr.deserializers;
|
|
1403
|
+
hostRef.$flags$ |= 8 /* isConstructingInstance */;
|
|
1363
1404
|
}
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
{
|
|
1380
|
-
|
|
1405
|
+
try {
|
|
1406
|
+
new Cstr(hostRef);
|
|
1407
|
+
} catch (e) {
|
|
1408
|
+
consoleError(e, elm);
|
|
1409
|
+
}
|
|
1410
|
+
{
|
|
1411
|
+
hostRef.$flags$ &= -9 /* isConstructingInstance */;
|
|
1412
|
+
}
|
|
1413
|
+
{
|
|
1414
|
+
hostRef.$flags$ |= 128 /* isWatchReady */;
|
|
1415
|
+
}
|
|
1416
|
+
endNewInstance();
|
|
1417
|
+
{
|
|
1418
|
+
fireConnectedCallback(hostRef.$lazyInstance$, elm);
|
|
1419
|
+
}
|
|
1420
|
+
} else {
|
|
1421
|
+
Cstr = elm.constructor;
|
|
1422
|
+
const cmpTag = elm.localName;
|
|
1423
|
+
customElements.whenDefined(cmpTag).then(() => hostRef.$flags$ |= 128 /* isWatchReady */);
|
|
1381
1424
|
}
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1425
|
+
if (Cstr && Cstr.style) {
|
|
1426
|
+
let style;
|
|
1427
|
+
if (typeof Cstr.style === "string") {
|
|
1428
|
+
style = Cstr.style;
|
|
1429
|
+
}
|
|
1430
|
+
const scopeId2 = getScopeId(cmpMeta);
|
|
1431
|
+
if (!styles.has(scopeId2) || BUILD.hotModuleReplacement) {
|
|
1432
|
+
const endRegisterStyles = createTime("registerStyles", cmpMeta.$tagName$);
|
|
1433
|
+
registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));
|
|
1434
|
+
endRegisterStyles();
|
|
1435
|
+
}
|
|
1385
1436
|
}
|
|
1437
|
+
}
|
|
1438
|
+
const ancestorComponent = hostRef.$ancestorComponent$;
|
|
1439
|
+
const schedule = () => scheduleUpdate(hostRef, true);
|
|
1440
|
+
if (ancestorComponent && ancestorComponent["s-rc"]) {
|
|
1441
|
+
ancestorComponent["s-rc"].push(schedule);
|
|
1386
1442
|
} else {
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
if (
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
if (!styles.has(scopeId2) || BUILD.hotModuleReplacement) {
|
|
1398
|
-
const endRegisterStyles = createTime("registerStyles", cmpMeta.$tagName$);
|
|
1399
|
-
registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));
|
|
1400
|
-
endRegisterStyles();
|
|
1401
|
-
}
|
|
1443
|
+
schedule();
|
|
1444
|
+
}
|
|
1445
|
+
} catch (e) {
|
|
1446
|
+
consoleError(e, elm);
|
|
1447
|
+
if (hostRef.$onRenderResolve$) {
|
|
1448
|
+
hostRef.$onRenderResolve$();
|
|
1449
|
+
hostRef.$onRenderResolve$ = void 0;
|
|
1450
|
+
}
|
|
1451
|
+
if (hostRef.$onReadyResolve$) {
|
|
1452
|
+
hostRef.$onReadyResolve$(elm);
|
|
1402
1453
|
}
|
|
1403
|
-
}
|
|
1404
|
-
const ancestorComponent = hostRef.$ancestorComponent$;
|
|
1405
|
-
const schedule = () => scheduleUpdate(hostRef, true);
|
|
1406
|
-
if (ancestorComponent && ancestorComponent["s-rc"]) {
|
|
1407
|
-
ancestorComponent["s-rc"].push(schedule);
|
|
1408
|
-
} else {
|
|
1409
|
-
schedule();
|
|
1410
1454
|
}
|
|
1411
1455
|
};
|
|
1412
1456
|
var fireConnectedCallback = (instance, elm) => {
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var defaultLineTool_config = require('./default-line-tool.config-
|
|
3
|
+
var index = require('./index-NMqsANCI.js');
|
|
4
|
+
var defaultLineTool_config = require('./default-line-tool.config-Dbu-DwOX.js');
|
|
5
5
|
|
|
6
6
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
7
7
|
|
|
@@ -19692,8 +19692,16 @@ class KritzelQuadtree {
|
|
|
19692
19692
|
}
|
|
19693
19693
|
query(range) {
|
|
19694
19694
|
const results = [];
|
|
19695
|
+
this._queryInto(range, results);
|
|
19696
|
+
return results;
|
|
19697
|
+
}
|
|
19698
|
+
/**
|
|
19699
|
+
* Internal method that collects query results into a pre-allocated array.
|
|
19700
|
+
* Avoids creating intermediate arrays from spread operators.
|
|
19701
|
+
*/
|
|
19702
|
+
_queryInto(range, results) {
|
|
19695
19703
|
if (!this.intersects(range, this.bounds)) {
|
|
19696
|
-
return
|
|
19704
|
+
return;
|
|
19697
19705
|
}
|
|
19698
19706
|
for (const object of this.objects) {
|
|
19699
19707
|
if (this.intersects(object.rotatedBoundingBox, range)) {
|
|
@@ -19702,28 +19710,49 @@ class KritzelQuadtree {
|
|
|
19702
19710
|
}
|
|
19703
19711
|
if (this.children !== null) {
|
|
19704
19712
|
for (const child of this.children) {
|
|
19705
|
-
|
|
19713
|
+
child._queryInto(range, results);
|
|
19706
19714
|
}
|
|
19707
19715
|
}
|
|
19708
|
-
return results;
|
|
19709
19716
|
}
|
|
19710
19717
|
filter(predicate) {
|
|
19711
|
-
const results =
|
|
19718
|
+
const results = [];
|
|
19719
|
+
this._filterInto(predicate, results);
|
|
19720
|
+
return results;
|
|
19721
|
+
}
|
|
19722
|
+
/**
|
|
19723
|
+
* Internal method that collects filter results into a pre-allocated array.
|
|
19724
|
+
* Avoids creating intermediate arrays from spread operators.
|
|
19725
|
+
*/
|
|
19726
|
+
_filterInto(predicate, results) {
|
|
19727
|
+
for (const obj of this.objects) {
|
|
19728
|
+
if (predicate(obj)) {
|
|
19729
|
+
results.push(obj);
|
|
19730
|
+
}
|
|
19731
|
+
}
|
|
19712
19732
|
if (this.children !== null) {
|
|
19713
19733
|
for (const child of this.children) {
|
|
19714
|
-
|
|
19734
|
+
child._filterInto(predicate, results);
|
|
19715
19735
|
}
|
|
19716
19736
|
}
|
|
19717
|
-
return results;
|
|
19718
19737
|
}
|
|
19719
19738
|
allObjects() {
|
|
19720
|
-
const results = [
|
|
19739
|
+
const results = [];
|
|
19740
|
+
this._collectAllInto(results);
|
|
19741
|
+
return results;
|
|
19742
|
+
}
|
|
19743
|
+
/**
|
|
19744
|
+
* Internal method that collects all objects into a pre-allocated array.
|
|
19745
|
+
* Avoids creating intermediate arrays from spread operators.
|
|
19746
|
+
*/
|
|
19747
|
+
_collectAllInto(results) {
|
|
19748
|
+
for (const obj of this.objects) {
|
|
19749
|
+
results.push(obj);
|
|
19750
|
+
}
|
|
19721
19751
|
if (this.children !== null) {
|
|
19722
19752
|
for (const child of this.children) {
|
|
19723
|
-
|
|
19753
|
+
child._collectAllInto(results);
|
|
19724
19754
|
}
|
|
19725
19755
|
}
|
|
19726
|
-
return results;
|
|
19727
19756
|
}
|
|
19728
19757
|
subdivide() {
|
|
19729
19758
|
const { x, y, z, width, height } = this.bounds;
|
|
@@ -23742,7 +23771,7 @@ const KritzelPortal = class {
|
|
|
23742
23771
|
* This file is auto-generated by the version bump scripts.
|
|
23743
23772
|
* Do not modify manually.
|
|
23744
23773
|
*/
|
|
23745
|
-
const KRITZEL_VERSION = '0.1.
|
|
23774
|
+
const KRITZEL_VERSION = '0.1.26';
|
|
23746
23775
|
|
|
23747
23776
|
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:500;color:var(--kritzel-settings-label-color, #333333);margin:0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}`;
|
|
23748
23777
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-NMqsANCI.js');
|
|
4
4
|
|
|
5
5
|
const kritzelBrushStyleCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.brush-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}`;
|
|
6
6
|
|
package/dist/cjs/loader.cjs.js
CHANGED
package/dist/cjs/stencil.cjs.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-NMqsANCI.js');
|
|
4
4
|
var appGlobals = require('./app-globals-V2Kpy_OQ.js');
|
|
5
5
|
|
|
6
6
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
7
7
|
/*
|
|
8
|
-
Stencil Client Patch Browser v4.
|
|
8
|
+
Stencil Client Patch Browser v4.43.0 | MIT Licensed | https://stenciljs.com
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
var patchBrowser = () => {
|