@next-bricks/diagram 0.68.9 → 0.68.10

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.
Files changed (64) hide show
  1. package/dist/bricks.json +1 -1
  2. package/dist/chunks/{1265.177053f1.js → 1265.bf280e6d.js} +3 -3
  3. package/dist/chunks/1265.bf280e6d.js.map +1 -0
  4. package/dist/chunks/1889.fa8b5dbe.js +2 -0
  5. package/dist/chunks/1889.fa8b5dbe.js.map +1 -0
  6. package/dist/chunks/3171.8057c0f4.js +2 -0
  7. package/dist/chunks/3171.8057c0f4.js.map +1 -0
  8. package/dist/chunks/{3654.59bd8992.js → 3654.6a028b09.js} +3 -3
  9. package/dist/chunks/{3654.59bd8992.js.map → 3654.6a028b09.js.map} +1 -1
  10. package/dist/chunks/{3746.591c50d8.js → 3746.7fad241d.js} +2 -2
  11. package/dist/chunks/{3746.591c50d8.js.map → 3746.7fad241d.js.map} +1 -1
  12. package/dist/chunks/515.23d8419d.js +2 -0
  13. package/dist/chunks/515.23d8419d.js.map +1 -0
  14. package/dist/chunks/5399.d786845a.js +2 -0
  15. package/dist/chunks/5399.d786845a.js.map +1 -0
  16. package/dist/chunks/5552.7718c4ca.js +2 -0
  17. package/dist/chunks/5552.7718c4ca.js.map +1 -0
  18. package/dist/chunks/577.c9c65352.js.map +1 -1
  19. package/dist/chunks/6376.a8716290.js +2 -0
  20. package/dist/chunks/6376.a8716290.js.map +1 -0
  21. package/dist/chunks/7920.367555e2.js +3 -0
  22. package/dist/chunks/7920.367555e2.js.map +1 -0
  23. package/dist/chunks/9118.8a9d6592.js +3 -0
  24. package/dist/chunks/9118.8a9d6592.js.LICENSE.txt +11 -0
  25. package/dist/chunks/9118.8a9d6592.js.map +1 -0
  26. package/dist/chunks/948.e308c274.js +3 -0
  27. package/dist/chunks/948.e308c274.js.map +1 -0
  28. package/dist/chunks/eo-draw-canvas.e01342d6.js.map +1 -1
  29. package/dist/chunks/main.91a8e473.js +2 -0
  30. package/dist/chunks/main.91a8e473.js.map +1 -0
  31. package/dist/index.f358949f.js +2 -0
  32. package/dist/index.f358949f.js.map +1 -0
  33. package/dist/types.json +7 -7
  34. package/dist-types/diagram/interfaces.d.ts +3 -3
  35. package/dist-types/draw-canvas/index.d.ts +2 -2
  36. package/dist-types/draw-canvas/interfaces.d.ts +3 -3
  37. package/package.json +2 -2
  38. package/dist/chunks/1265.177053f1.js.map +0 -1
  39. package/dist/chunks/1889.9e9ad16a.js +0 -2
  40. package/dist/chunks/1889.9e9ad16a.js.map +0 -1
  41. package/dist/chunks/3171.3bd2c8f0.js +0 -2
  42. package/dist/chunks/3171.3bd2c8f0.js.map +0 -1
  43. package/dist/chunks/4667.53203ccd.js +0 -2
  44. package/dist/chunks/4667.53203ccd.js.map +0 -1
  45. package/dist/chunks/4837.32dece7c.js +0 -2
  46. package/dist/chunks/4837.32dece7c.js.map +0 -1
  47. package/dist/chunks/5399.b1b4981d.js +0 -2
  48. package/dist/chunks/5399.b1b4981d.js.map +0 -1
  49. package/dist/chunks/5552.e3e728b7.js +0 -2
  50. package/dist/chunks/5552.e3e728b7.js.map +0 -1
  51. package/dist/chunks/7218.e0bf22af.js +0 -2
  52. package/dist/chunks/7218.e0bf22af.js.map +0 -1
  53. package/dist/chunks/7920.df65d810.js +0 -3
  54. package/dist/chunks/7920.df65d810.js.map +0 -1
  55. package/dist/chunks/948.83e23068.js +0 -3
  56. package/dist/chunks/948.83e23068.js.map +0 -1
  57. package/dist/chunks/main.9ba966bb.js +0 -2
  58. package/dist/chunks/main.9ba966bb.js.map +0 -1
  59. package/dist/index.31ee50ee.js +0 -2
  60. package/dist/index.31ee50ee.js.map +0 -1
  61. /package/dist/chunks/{1265.177053f1.js.LICENSE.txt → 1265.bf280e6d.js.LICENSE.txt} +0 -0
  62. /package/dist/chunks/{3654.59bd8992.js.LICENSE.txt → 3654.6a028b09.js.LICENSE.txt} +0 -0
  63. /package/dist/chunks/{7920.df65d810.js.LICENSE.txt → 7920.367555e2.js.LICENSE.txt} +0 -0
  64. /package/dist/chunks/{948.83e23068.js.LICENSE.txt → 948.e308c274.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[515],{883:(t,e,r)=>{r.d(e,{h:()=>o});var i=r(3016),n=r(9918);function o(t,e,r,n){const o=!(null==n||!n.exitPosition),s=!(null==n||!n.entryPosition);if(t===e||(0,i.w)(t,e,0,0)&&!o&&!s)return null;let y,x,a=0,c=0;if(r){const i=e.x-t.x,n=e.y-t.y,o=Math.atan2(n,i);a=r/2*Math.cos(o+Math.PI/2),c=r/2*Math.sin(o+Math.PI/2)}const l=[o?[t.x+(n.exitPosition.x-.5)*t.width,t.y+(n.exitPosition.y-.5)*t.height]:[t.x+a,t.y+c],s?[e.x+(n.entryPosition.x-.5)*e.width,e.y+(n.entryPosition.y-.5)*e.height]:[e.x+a,e.y+c]];if(o)y=l[0];else{const e=h(t,l);y=e.length>0?e[0]:[t.x,t.y]}if(s)x=l[1];else{const t=h(e,l);x=t.length>0?t[0]:[e.x,e.y]}return[{x:y[0],y:y[1]},{x:x[0],y:x[1]}]}function h(t,e){const r=[[t.x-t.width/2,t.y-t.height/2],[t.x+t.width/2,t.y-t.height/2],[t.x+t.width/2,t.y+t.height/2],[t.x-t.width/2,t.y+t.height/2]],i=[];for(let t=0;t<4;t++)i.push([r[t],r[(t+1)%4]]);const o=[];for(const t of i){const r=(0,n.y)(e[0],e[1],t[0],t[1]);r&&o.push(r)}return o}},3016:(t,e,r)=>{function i(t,e,r,i){const o=r?n(t,r):t,h=i?n(e,i):e,s=Math.min(o.x-o.width/2,h.x-h.width/2),y=Math.max(o.x+o.width/2,h.x+h.width/2),x=Math.min(o.y-o.height/2,h.y-h.height/2),a=Math.max(o.y+o.height/2,h.y+h.height/2);return y-s<o.width+h.width&&a-x<o.height+h.height}function n(t,e){return{x:t.x-t.width/2-e,y:t.y-t.height/2-e,width:t.width+2*e,height:t.height+2*e}}r.d(e,{w:()=>i})},4487:(t,e,r)=>{function i(t){if(Array.isArray(t)){const e=t[0],r=t.length>1?t[1]:e;return[e,r,t.length>2?t[2]:e,t.length>3?t[3]:r]}return new Array(4).fill(t)}r.d(e,{D:()=>i})},4928:(t,e,r)=>{r.d(e,{o:()=>n});const i=20;function n(t,e,r,n,h,s){const y=o(t,r,h),x=o(e,n,s);let a=[],c=!1;const l="top"===r||"bottom"===r;if(l!==("top"===n||"bottom"===n)){let o,h,s,u,f,d;l?(o=e,h=t,s="right"===n?1:-1,u="bottom"===r?1:-1,f=x,d=y):(o=t,h=e,s="right"===r?1:-1,u="bottom"===n?1:-1,f=y,d=x,c=!0);const g=f.x+i*s,k=d.y+i*u;if((o.x-h.x)*s>=0)if((h.y-o.y)*u>=0)a=[{x:d.x,y:k},{x:g,y:k},{x:g,y:f.y}];else{const t=h.y+(h.height/2+i)*u,e=o.y-(o.height/2+i)*u;if((e-t)*u>=0){const r=(t+e)/2;a=[{x:d.x,y:r},{x:g,y:r},{x:g,y:f.y}]}else{const r=(h.x+h.width/2*s+o.x-o.width/2*s)/2;a=[{x:d.x,y:t},{x:r,y:t},{x:r,y:e},{x:g,y:e},{x:g,y:f.y}]}}else if((f.y-k)*u>=0)if((d.x-g)*s>=0)a=[{x:d.x,y:f.y}];else{const t=(h.y+(h.height/2+i)*u+(o.y-(o.height/2+i)*u))/2;a=[{x:d.x,y:t},{x:g,y:t},{x:g,y:f.y}]}else{const t=h.x-(h.width/2+i)*s;if((t-g)*s>=0){const e=(t+g)/2;a=[{x:d.x,y:k},{x:e,y:k},{x:e,y:f.y}]}else{const e=(h.y-h.height/2*u+o.y+o.height/2*u)/2;a=[{x:d.x,y:k},{x:t,y:k},{x:t,y:e},{x:g,y:e},{x:g,y:f.y}]}}}else if(r===n){const n="bottom"===r||"right"===r?1:-1;let o,h,s,u;const f=l?"y":"x",d=l?"x":"y";let g,k,m,w;e[f]<t[f]?(o=e,h=t,s=x,u=y,c=1===n):(o=t,h=e,s=y,u=x,c=1!==n),1===n?(g=h,k=o,m=u,w=s):(g=o,k=h,m=s,w=u);const M=g===(e[d]<t[d]?t:e)?1:-1;if(l){const t=g.x-(g.width/2+i)*M,e=m.y+i*n;if((t-w.x)*M>=0)a=[{x:w.x,y:e},{x:m.x,y:e}];else{const r=(k.y+k.height/2*n+g.y-g.height/2*n)/2;a=[{x:w.x,y:r},{x:t,y:r},{x:t,y:e},{x:m.x,y:e}]}}else{const t=m.x+i*n,e=g.y-(g.height/2+i)*M;if((e-w.y)*M>=0)a=[{x:t,y:w.y},{x:t,y:m.y}];else{const r=(k.x+k.width/2*n+g.x-g.width/2*n)/2;a=[{x:r,y:w.y},{x:r,y:e},{x:t,y:e},{x:t,y:m.y}]}}}else{const r="bottom"===n||"right"===n?1:-1;let o,h,s,c;l?(o="y",h="x",s="height",c="width"):(o="x",h="y",s="width",c="height");const u=e[o]+e[s]/2*r,f=t[o]-t[s]/2*r,d=u+i*r,g=f-i*r,k=y[h]===x[h];if((g-d)*r>=0){const t=(g+d)/2;a=k?[]:[{[h]:y[h],[o]:t},{[h]:x[h],[o]:t}]}else if(k&&(f-u)*r>=0)a=[];else{const n=e[h]<t[h]?-1:1,l=t[h]+(t[c]/2+i)*n,u=e[h]-(e[c]/2+i)*n;if((u-l)*n>=0||Math.abs((g-d)*r)<i){const t=(l+u)/2;a=[{[h]:y[h],[o]:g},{[h]:t,[o]:g},{[h]:t,[o]:d},{[h]:x[h],[o]:d}]}else{const i=(t[o]+t[s]/2*r+e[o]-e[s]/2*r)/2;a=[{[h]:y[h],[o]:g},{[h]:l,[o]:g},{[h]:l,[o]:i},{[h]:u,[o]:i},{[h]:u,[o]:d},{[h]:x[h],[o]:d}]}}}return c&&a.reverse(),[y,...a,x]}function o(t,e,r){const{x:i,y:n,width:o,height:h}=t;switch(e){case"top":return{x:i-o/2+o*r,y:n-h/2};case"bottom":return{x:i-o/2+o*r,y:n+h/2};case"left":return{x:i-o/2,y:n-h/2+h*r};case"right":return{x:i+o/2,y:n-h/2+h*r}}}},5078:(t,e,r)=>{r.d(e,{c:()=>o});var i=r(8769),n=r.n(i);function o(t){let e,{id:r,type:i,strokeColor:o}=t;switch(i){case"0..1":e=y;break;case"0..N":e=x;break;case"circle":e=h;break;default:e=s}return n().createElement(e,{id:r,strokeColor:o})}function h(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{viewBox:"0 0 9 9",refX:3,refY:3,id:e,overflow:"visible",markerWidth:9,markerHeight:9},n().createElement("circle",{stroke:"none",fill:r,cx:3,cy:3,r:3}))}function s(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 6 6",refX:5,refY:3,markerWidth:6,markerHeight:6,orient:"auto-start-reverse",strokeLinejoin:"round"},n().createElement("path",{d:"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z",stroke:r,strokeWidth:1,fill:r}))}function y(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},n().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5",stroke:r,strokeWidth:1,fill:"none"}))}function x(t){let{id:e,strokeColor:r}=t;return n().createElement("marker",{id:e,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},n().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5",stroke:r,strokeWidth:1,fill:"none"}))}},9698:(t,e,r)=>{r.d(e,{S:()=>x});var i=r(482),n=r(4643),o=r(3488),h=r(6066),s=r(4993),y=r(3269);function x(t,e,r,x,c){if(!Array.isArray(t))return"";let l;switch(e){case"curveLinear":l=i.A;break;case"curveBumpX":l=n.dJ;break;case"curveBumpY":l=n.kl;break;case"curveMonotoneX":l=o.G;break;case"curveMonotoneY":l=o.N;break;case"curveNatural":l=h.A;break;default:l=s.Ay}const u=a(t[1],t[0],r),f=a(t[t.length-2],t[t.length-1],x),d=(0,y.A)().x(((e,r)=>e.x-(0===r?u.x:r===t.length-1?f.x:0))).y(((e,r)=>e.y-(0===r?u.y:r===t.length-1?f.y:0))).curve(l);if(c&&"curveLinear"==e){const e=[];for(let r=0;r<t.length-1;r++){const i=t[r],n=t[r+1];0===r&&e.push(`M${i.x},${i.y}`);const o=c.get(r);if(o){const t=n.x-i.x,r=n.y-i.y,h=Math.atan2(r,t),s=Math.abs(h)<=Math.PI/2?-1:1,y=h+Math.PI/2*s,x=1.3*o.radius*Math.cos(y),a=1.3*o.radius*Math.sin(y),c=o.radius*Math.cos(h),l=o.radius*Math.sin(h);for(const t of o.jumpPoints){const r=t.x-c,i=t.y-l,n=t.x+c,o=t.y+l;e.push(`L${r},${i}`),e.push(`C${r+x},${i+a} ${n+x},${o+a} ${n},${o}`)}}e.push(`L${n.x},${n.y}`)}return e.join("")}return d(t)}function a(t,e,r){if(!r)return{x:0,y:0};const{x:i,y:n}=t,{x:o,y:h}=e,s=r/Math.sqrt(Math.pow(o-i,2)+Math.pow(h-n,2));return{x:(o-i)*s,y:(h-n)*s}}},9918:(t,e,r)=>{function i(t,e,r,i){let[n,o]=t,[h,s]=e,[y,x]=r,[a,c]=i;if(n===h&&o===s||y===a&&x===c)return null;const l=(c-x)*(h-n)-(a-y)*(s-o);if(0===l)return null;const u=((a-y)*(o-x)-(c-x)*(n-y))/l,f=((h-n)*(o-x)-(s-o)*(n-y))/l;return u<0||u>1||f<0||f>1?null:[n+u*(h-n),o+u*(s-o)]}r.d(e,{y:()=>i})}}]);
2
+ //# sourceMappingURL=515.23d8419d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/515.23d8419d.js","mappings":"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","sources":["webpack:///./src/diagram/lines/getDirectLinePoints.ts","webpack:///./src/diagram/processors/doTwoNodesOverlap.ts","webpack:///./src/diagram/processors/extractPartialRectTuple.ts","webpack:///./src/diagram/lines/getPolyLinePoints.ts","webpack:///./src/diagram/MarkerComponent.tsx","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/lines/intersect.ts"],"sourcesContent":["import type { EdgeView } from \"../../draw-canvas/interfaces\";\nimport type { NodePosition, NodeRect, PositionTuple } from \"../interfaces\";\nimport { doTwoNodesOverlap } from \"../processors/doTwoNodesOverlap\";\nimport { intersect } from \"./intersect\";\n\ntype LineTuple = [start: PositionTuple, end: PositionTuple];\n\nexport function getDirectLinePoints(\n source: NodeRect,\n target: NodeRect,\n parallelGap?: number,\n edgeView?: EdgeView\n): NodePosition[] | null {\n const hasExitPosition = !!edgeView?.exitPosition;\n const hasEntryPosition = !!edgeView?.entryPosition;\n\n // Ignore if two nodes are the same.\n // Ignore if two nodes overlap and no entry nor exit position.\n if (\n source === target ||\n (doTwoNodesOverlap(source, target, 0, 0) &&\n !(hasExitPosition || hasEntryPosition))\n ) {\n return null;\n }\n\n let p0: PositionTuple;\n let p1: PositionTuple;\n\n let xDiff = 0;\n let yDiff = 0;\n\n if (parallelGap) {\n const dx = target.x - source.x;\n const dy = target.y - source.y;\n const angle = Math.atan2(dy, dx);\n xDiff = (parallelGap / 2) * Math.cos(angle + Math.PI / 2);\n yDiff = (parallelGap / 2) * Math.sin(angle + Math.PI / 2);\n }\n\n const line: LineTuple = [\n hasExitPosition\n ? [\n source.x + (edgeView!.exitPosition!.x - 0.5) * source.width,\n source.y + (edgeView!.exitPosition!.y - 0.5) * source.height,\n ]\n : [source.x + xDiff, source.y + yDiff],\n hasEntryPosition\n ? [\n target.x + (edgeView!.entryPosition!.x - 0.5) * target.width,\n target.y + (edgeView!.entryPosition!.y - 0.5) * target.height,\n ]\n : [target.x + xDiff, target.y + yDiff],\n ];\n\n if (hasExitPosition) {\n p0 = line[0];\n } else {\n const sourceIntersections = getIntersections(source, line);\n // Todo: handle when more than one intersection\n if (sourceIntersections.length > 0) {\n p0 = sourceIntersections[0];\n } else {\n p0 = [source.x, source.y];\n }\n }\n\n if (hasEntryPosition) {\n p1 = line[1];\n } else {\n const targetIntersections = getIntersections(target, line);\n // Todo: handle when more than one intersection\n if (targetIntersections.length > 0) {\n p1 = targetIntersections[0];\n } else {\n p1 = [target.x, target.y];\n }\n }\n\n return [\n { x: p0[0], y: p0[1] },\n { x: p1[0], y: p1[1] },\n ];\n}\n\nfunction getIntersections(rect: NodeRect, line: LineTuple) {\n const vertices: PositionTuple[] = [\n [rect.x - rect.width / 2, rect.y - rect.height / 2],\n [rect.x + rect.width / 2, rect.y - rect.height / 2],\n [rect.x + rect.width / 2, rect.y + rect.height / 2],\n [rect.x - rect.width / 2, rect.y + rect.height / 2],\n ];\n const possibleLines: [start: PositionTuple, end: PositionTuple][] = [];\n for (let i = 0; i < 4; i++) {\n possibleLines.push([vertices[i], vertices[(i + 1) % 4]]);\n }\n const intersections: PositionTuple[] = [];\n for (const item of possibleLines) {\n const intersection = intersect(line[0], line[1], item[0], item[1]);\n if (intersection) {\n intersections.push(intersection);\n }\n }\n return intersections;\n}\n","import type { NodeRect } from \"../interfaces\";\n\nexport function doTwoNodesOverlap(\n a: NodeRect,\n b: NodeRect,\n paddingA: number,\n paddingB: number\n): boolean {\n const A = paddingA ? getNodesWithPadding(a, paddingA) : a;\n const B = paddingB ? getNodesWithPadding(b, paddingB) : b;\n const left = Math.min(A.x - A.width / 2, B.x - B.width / 2);\n const right = Math.max(A.x + A.width / 2, B.x + B.width / 2);\n const top = Math.min(A.y - A.height / 2, B.y - B.height / 2);\n const bottom = Math.max(A.y + A.height / 2, B.y + B.height / 2);\n return right - left < A.width + B.width && bottom - top < A.height + B.height;\n}\n\nfunction getNodesWithPadding(node: NodeRect, padding: number) {\n return {\n x: node.x - node.width / 2 - padding,\n y: node.y - node.height / 2 - padding,\n width: node.width + padding * 2,\n height: node.height + padding * 2,\n };\n}\n","import type { FullRectTuple, PartialRectTuple } from \"../interfaces\";\n\nexport function extractPartialRectTuple(\n value: PartialRectTuple\n): FullRectTuple {\n if (Array.isArray(value)) {\n const v0 = value[0];\n const v1 = value.length > 1 ? value[1]! : v0;\n const v2 = value.length > 2 ? value[2]! : v0;\n const v3 = value.length > 3 ? value[3]! : v1;\n return [v0, v1, v2, v3];\n }\n return new Array(4).fill(value) as FullRectTuple;\n}\n","import type { Direction, NodePosition, NodeRect } from \"../interfaces\";\n\nconst MINIMAL_OFFSET = 20;\n\nexport function getPolyLinePoints(\n source: NodeRect,\n target: NodeRect,\n sourceDirection: Direction,\n targetDirection: Direction,\n sourcePosition: number,\n targetPosition: number\n): NodePosition[] {\n const p0 = getCoordinates(source, sourceDirection, sourcePosition);\n const p1 = getCoordinates(target, targetDirection, targetPosition);\n\n let controls: NodePosition[] = [];\n let reverseControls = false;\n\n const sourceIsVertical =\n sourceDirection === \"top\" || sourceDirection === \"bottom\";\n const targetIsVertical =\n targetDirection === \"top\" || targetDirection === \"bottom\";\n\n if (sourceIsVertical !== targetIsVertical) {\n // One is vertical and the other is horizontal\n let horizontal: NodeRect;\n let vertical: NodeRect;\n let horizontalSign: number;\n let verticalSign: number;\n let horizontalPosition: NodePosition;\n let verticalPosition: NodePosition;\n if (sourceIsVertical) {\n horizontal = target;\n vertical = source;\n horizontalSign = targetDirection === \"right\" ? 1 : -1;\n verticalSign = sourceDirection === \"bottom\" ? 1 : -1;\n horizontalPosition = p1;\n verticalPosition = p0;\n } else {\n horizontal = source;\n vertical = target;\n horizontalSign = sourceDirection === \"right\" ? 1 : -1;\n verticalSign = targetDirection === \"bottom\" ? 1 : -1;\n horizontalPosition = p0;\n verticalPosition = p1;\n reverseControls = true;\n }\n\n const defaultControlX =\n horizontalPosition.x + MINIMAL_OFFSET * horizontalSign;\n const defaultControlY = verticalPosition.y + MINIMAL_OFFSET * verticalSign;\n\n if ((horizontal.x - vertical.x) * horizontalSign >= 0) {\n if ((vertical.y - horizontal.y) * verticalSign >= 0) {\n // ┌──────────────┐\n // ┌──┴──┐ ┌─────┐ │\n // │ S │ │ T ├─┘\n // └─────┘ └─────┘\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: defaultControlX, y: defaultControlY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n } else {\n const controlY0 =\n vertical.y + (vertical.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const controlY1 =\n horizontal.y -\n (horizontal.height / 2 + MINIMAL_OFFSET) * verticalSign;\n if ((controlY1 - controlY0) * verticalSign >= 0) {\n // ┌─────┐\n // │ T ├─┐\n // └─────┘ │\n // ┌────────┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const middleY = (controlY0 + controlY1) / 2;\n controls = [\n { x: verticalPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n } else {\n // ┌─────┐\n // ┌────┐ │ T ├─┐\n // ┌──┴──┐ │ └─────┘ │\n // │ S │ └─────────┘\n // └─────┘\n const middleX =\n (vertical.x +\n (vertical.width / 2) * horizontalSign +\n horizontal.x -\n (horizontal.width / 2) * horizontalSign) /\n 2;\n controls = [\n { x: verticalPosition.x, y: controlY0 },\n { x: middleX, y: controlY0 },\n { x: middleX, y: controlY1 },\n { x: defaultControlX, y: controlY1 },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n }\n } else if ((horizontalPosition.y - defaultControlY) * verticalSign >= 0) {\n if ((verticalPosition.x - defaultControlX) * horizontalSign >= 0) {\n // ┌─────┐\n // ┌──┤ T │\n // │ └─────┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [{ x: verticalPosition.x, y: horizontalPosition.y }];\n } else {\n // ┌─────┐\n // │ T ├─┐\n // └─────┘ │\n // ┌─┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const controlY0 =\n vertical.y + (vertical.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const controlY1 =\n horizontal.y -\n (horizontal.height / 2 + MINIMAL_OFFSET) * verticalSign;\n const middleY = (controlY0 + controlY1) / 2;\n controls = [\n { x: verticalPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n } else {\n const sourceExtendX =\n vertical.x - (vertical.width / 2 + MINIMAL_OFFSET) * horizontalSign;\n if ((sourceExtendX - defaultControlX) * horizontalSign >= 0) {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ S │\n // ┌─────┐ │ └─────┘\n // │ T ├─┘\n // └─────┘\n const middleX = (sourceExtendX + defaultControlX) / 2;\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: middleX, y: defaultControlY },\n { x: middleX, y: horizontalPosition.y },\n ];\n } else {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ S │\n // │ └─────┘\n // └───┐\n // ┌─────┐ │\n // │ T ├─┘\n // └─────┘\n const middleY =\n (vertical.y -\n (vertical.height / 2) * verticalSign +\n horizontal.y +\n (horizontal.height / 2) * verticalSign) /\n 2;\n controls = [\n { x: verticalPosition.x, y: defaultControlY },\n { x: sourceExtendX, y: defaultControlY },\n { x: sourceExtendX, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: horizontalPosition.y },\n ];\n }\n }\n } else if (sourceDirection === targetDirection) {\n // Same direction\n const sign =\n sourceDirection === \"bottom\" || sourceDirection === \"right\" ? 1 : -1;\n let start: NodeRect;\n let end: NodeRect;\n let startPosition: NodePosition;\n let endPosition: NodePosition;\n const axis = sourceIsVertical ? \"y\" : \"x\";\n const oppositeAxis = sourceIsVertical ? \"x\" : \"y\";\n if (target[axis] < source[axis]) {\n start = target;\n end = source;\n startPosition = p1;\n endPosition = p0;\n reverseControls = sign === 1;\n } else {\n start = source;\n end = target;\n startPosition = p0;\n endPosition = p1;\n reverseControls = sign !== 1;\n }\n const perpendicular =\n target[oppositeAxis] < source[oppositeAxis] ? source : target;\n let around: NodeRect;\n let nonAround: NodeRect;\n let aroundPosition: NodePosition;\n let nonAroundPosition: NodePosition;\n if (sign === 1) {\n around = end;\n nonAround = start;\n aroundPosition = endPosition;\n nonAroundPosition = startPosition;\n } else {\n around = start;\n nonAround = end;\n aroundPosition = startPosition;\n nonAroundPosition = endPosition;\n }\n const aroundSign = around === perpendicular ? 1 : -1;\n if (sourceIsVertical) {\n const defaultControlX =\n around.x - (around.width / 2 + MINIMAL_OFFSET) * aroundSign;\n const defaultControlY = aroundPosition.y + MINIMAL_OFFSET * sign;\n if ((defaultControlX - nonAroundPosition.x) * aroundSign >= 0) {\n // ┌─────────┐\n // │ ┌──┴──┐\n // │ │ T │\n // ┌──┴──┐ └─────┘\n // │ S │\n // └─────┘\n controls = [\n { x: nonAroundPosition.x, y: defaultControlY },\n { x: aroundPosition.x, y: defaultControlY },\n ];\n } else {\n // ┌────┐\n // │ ┌──┴──┐\n // │ │ T │\n // │ └─────┘\n // └─┐\n // ┌──┴──┐\n // │ S │\n // └─────┘\n const middleY =\n (nonAround.y +\n (nonAround.height / 2) * sign +\n around.y -\n (around.height / 2) * sign) /\n 2;\n controls = [\n { x: nonAroundPosition.x, y: middleY },\n { x: defaultControlX, y: middleY },\n { x: defaultControlX, y: defaultControlY },\n { x: aroundPosition.x, y: defaultControlY },\n ];\n }\n } else {\n const defaultControlX = aroundPosition.x + MINIMAL_OFFSET * sign;\n const defaultControlY =\n around.y - (around.height / 2 + MINIMAL_OFFSET) * aroundSign;\n if ((defaultControlY - nonAroundPosition.y) * aroundSign >= 0) {\n // ┌─────┐\n // ┌─────────┤ T │\n // │ ┌─────┐ └─────┘\n // └─┤ S │\n // └─────┘\n controls = [\n { x: defaultControlX, y: nonAroundPosition.y },\n { x: defaultControlX, y: aroundPosition.y },\n ];\n } else {\n // ┌─────────┐\n // │ ┌─────┐ │ ┌─────┐\n // └─┤ S │ └─┤ T │\n // └─────┘ └─────┘\n const middleX =\n (nonAround.x +\n (nonAround.width / 2) * sign +\n around.x -\n (around.width / 2) * sign) /\n 2;\n controls = [\n { x: middleX, y: nonAroundPosition.y },\n { x: middleX, y: defaultControlY },\n { x: defaultControlX, y: defaultControlY },\n { x: defaultControlX, y: aroundPosition.y },\n ];\n }\n }\n } else {\n // Opposite direction\n const targetSign =\n targetDirection === \"bottom\" || targetDirection === \"right\" ? 1 : -1;\n let axis: \"x\" | \"y\";\n let oppositeAxis: \"x\" | \"y\";\n let size: \"width\" | \"height\";\n let oppositeSize: \"width\" | \"height\";\n if (sourceIsVertical) {\n axis = \"y\";\n oppositeAxis = \"x\";\n size = \"height\";\n oppositeSize = \"width\";\n } else {\n axis = \"x\";\n oppositeAxis = \"y\";\n size = \"width\";\n oppositeSize = \"height\";\n }\n const targetEdge = target[axis] + (target[size] / 2) * targetSign;\n const sourceEdge = source[axis] - (source[size] / 2) * targetSign;\n const targetControl = targetEdge + MINIMAL_OFFSET * targetSign;\n const sourceControl = sourceEdge - MINIMAL_OFFSET * targetSign;\n const oppositeIsStraight = p0[oppositeAxis] === p1[oppositeAxis];\n if ((sourceControl - targetControl) * targetSign >= 0) {\n const middle = (sourceControl + targetControl) / 2;\n if (oppositeIsStraight) {\n // Straight line\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // │\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [];\n } else {\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // ┌───┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: middle },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: middle },\n ] as unknown[] as NodePosition[];\n }\n } else if (\n oppositeIsStraight &&\n (sourceEdge - targetEdge) * targetSign >= 0\n ) {\n // Straight line (very close)\n // ┌─────┐\n // │ T │\n // └──┬──┘\n // ┌──┴──┐\n // │ S │\n // └─────┘\n controls = [];\n } else {\n const targetOppositeSign =\n target[oppositeAxis] < source[oppositeAxis] ? -1 : 1;\n const sourceOppositeControl =\n source[oppositeAxis] +\n (source[oppositeSize] / 2 + MINIMAL_OFFSET) * targetOppositeSign;\n const targetOppositeControl =\n target[oppositeAxis] -\n (target[oppositeSize] / 2 + MINIMAL_OFFSET) * targetOppositeSign;\n if (\n (targetOppositeControl - sourceOppositeControl) * targetOppositeSign >=\n 0 ||\n Math.abs((sourceControl - targetControl) * targetSign) < MINIMAL_OFFSET\n ) {\n // ┌─────┐\n // ┌────┐ │ T │\n // ┌──┴──┐ │ └──┬──┘\n // │ S │ └────┘\n // └─────┘\n const oppositeMiddle =\n (sourceOppositeControl + targetOppositeControl) / 2;\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: sourceControl },\n { [oppositeAxis]: oppositeMiddle, [axis]: sourceControl },\n { [oppositeAxis]: oppositeMiddle, [axis]: targetControl },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: targetControl },\n ] as unknown[] as NodePosition[];\n } else {\n // ┌────┐\n // ┌──┴──┐ │\n // │ S │ │\n // └─────┘ │\n // ┌─────────┘\n // │ ┌─────┐\n // │ │ T │\n // │ └──┬──┘\n // └────┘\n const middle =\n (source[axis] +\n (source[size] / 2) * targetSign +\n target[axis] -\n (target[size] / 2) * targetSign) /\n 2;\n controls = [\n { [oppositeAxis]: p0[oppositeAxis], [axis]: sourceControl },\n { [oppositeAxis]: sourceOppositeControl, [axis]: sourceControl },\n { [oppositeAxis]: sourceOppositeControl, [axis]: middle },\n { [oppositeAxis]: targetOppositeControl, [axis]: middle },\n { [oppositeAxis]: targetOppositeControl, [axis]: targetControl },\n { [oppositeAxis]: p1[oppositeAxis], [axis]: targetControl },\n ] as unknown[] as NodePosition[];\n }\n }\n }\n\n if (reverseControls) {\n controls.reverse();\n }\n\n return [p0, ...controls, p1] as NodePosition[];\n}\n\nfunction getCoordinates(\n node: NodeRect,\n direction: Direction,\n position: number\n): NodePosition {\n const { x, y, width, height } = node;\n switch (direction) {\n case \"top\":\n return {\n x: x - width / 2 + width * position,\n y: y - height / 2,\n };\n case \"bottom\":\n return {\n x: x - width / 2 + width * position,\n y: y + height / 2,\n };\n case \"left\":\n return {\n x: x - width / 2,\n y: y - height / 2 + height * position,\n };\n case \"right\":\n return {\n x: x + width / 2,\n y: y - height / 2 + height * position,\n };\n }\n}\n","import React from \"react\";\nimport type { LineMarkerType } from \"./interfaces\";\n\nexport interface MarkerComponentProps extends BaseMarkerComponentProps {\n type: LineMarkerType;\n}\n\nexport interface BaseMarkerComponentProps {\n id: string;\n strokeColor?: string;\n}\n\nexport function MarkerComponent({\n id,\n type,\n strokeColor,\n}: MarkerComponentProps): JSX.Element {\n let Component: (props: BaseMarkerComponentProps) => JSX.Element;\n\n switch (type) {\n case \"0..1\":\n Component = EntityRelationZeroOrOneMarker;\n break;\n case \"0..N\":\n Component = EntityRelationZeroOrManyMarker;\n break;\n case \"circle\":\n Component = CircleMarker;\n break;\n default:\n Component = ArrowMarker;\n }\n return <Component id={id} strokeColor={strokeColor} />;\n}\n\nfunction CircleMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n const r = 3;\n const d = r * 3;\n return (\n <marker\n viewBox={`0 0 ${d} ${d}`}\n refX={r}\n refY={r}\n id={id}\n overflow=\"visible\"\n markerWidth={d}\n markerHeight={d}\n >\n <circle stroke=\"none\" fill={strokeColor} cx={r} cy={r} r={r} />\n </marker>\n );\n}\n\nfunction ArrowMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 6 6\"\n refX={5}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto-start-reverse\"\n strokeLinejoin=\"round\"\n >\n <path\n d=\"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z\"\n stroke={strokeColor}\n strokeWidth={1}\n fill={strokeColor}\n />\n </marker>\n );\n}\n\nfunction EntityRelationZeroOrOneMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 21 11\"\n refX={0.5}\n refY={5.5}\n markerWidth={21}\n markerHeight={11}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5\"\n stroke={strokeColor}\n strokeWidth={1}\n fill=\"none\"\n />\n </marker>\n );\n}\n\nfunction EntityRelationZeroOrManyMarker({\n id,\n strokeColor,\n}: BaseMarkerComponentProps): JSX.Element {\n return (\n <marker\n id={id}\n viewBox=\"0 0 21 11\"\n refX={0.5}\n refY={5.5}\n markerWidth={21}\n markerHeight={11}\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5\"\n stroke={strokeColor}\n strokeWidth={1}\n fill=\"none\"\n />\n </marker>\n );\n}\n","import {\n curveLinear,\n line,\n curveBasis,\n curveBumpX,\n curveBumpY,\n type CurveFactory,\n curveMonotoneX,\n curveNatural,\n curveMonotoneY,\n} from \"d3-shape\";\nimport type { CurveType, NodePosition } from \"../interfaces\";\nimport type { LineSegmentJumps } from \"../../draw-canvas/interfaces\";\n\n/**\n * Generate Line from points\n */\nexport function curveLine(\n points: Array<NodePosition> | null | undefined,\n curveType: CurveType | undefined,\n startOffset: number,\n endOffset: number,\n jumpsMap?: Map<number, LineSegmentJumps> | null\n): string {\n if (!Array.isArray(points)) {\n return \"\";\n }\n let curveFactory: CurveFactory;\n switch (curveType) {\n case \"curveLinear\":\n curveFactory = curveLinear;\n break;\n case \"curveBumpX\":\n curveFactory = curveBumpX;\n break;\n case \"curveBumpY\":\n curveFactory = curveBumpY;\n break;\n case \"curveMonotoneX\":\n curveFactory = curveMonotoneX;\n break;\n case \"curveMonotoneY\":\n curveFactory = curveMonotoneY;\n break;\n case \"curveNatural\":\n curveFactory = curveNatural;\n break;\n default:\n curveFactory = curveBasis;\n }\n const startOffsets = getOffsets(points[1], points[0], startOffset);\n const endOffsets = getOffsets(\n points[points.length - 2],\n points[points.length - 1],\n endOffset\n );\n const lineFunction = line<NodePosition>()\n .x(\n (d, index) =>\n d.x -\n (index === 0\n ? startOffsets.x\n : index === points.length - 1\n ? endOffsets.x\n : 0)\n )\n .y(\n (d, index) =>\n d.y -\n (index === 0\n ? startOffsets.y\n : index === points.length - 1\n ? endOffsets.y\n : 0)\n )\n .curve(curveFactory);\n\n if (jumpsMap && curveType == \"curveLinear\") {\n const d: string[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const start = points[i];\n const end = points[i + 1];\n if (i === 0) {\n d.push(`M${start.x},${start.y}`);\n }\n // 处理交叉跨线点\n const jump = jumpsMap.get(i);\n if (jump) {\n // 跨线点近似为一段半圆,参考 draw.io 使用三次贝赛尔曲线实现。\n // 一条 jump 记录中所有的 jumpPoints 都在同一线段上,因此角度一致、尺寸一致。\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.atan2(dy, dx);\n const direction = Math.abs(angle) <= Math.PI / 2 ? -1 : 1;\n const verticalAngle = angle + (Math.PI / 2) * direction;\n const offsetX = jump.radius * 1.3 * Math.cos(verticalAngle);\n const offsetY = jump.radius * 1.3 * Math.sin(verticalAngle);\n const xDiff = jump.radius * Math.cos(angle);\n const yDiff = jump.radius * Math.sin(angle);\n for (const p of jump.jumpPoints) {\n const x0 = p.x - xDiff;\n const y0 = p.y - yDiff;\n const x1 = p.x + xDiff;\n const y1 = p.y + yDiff;\n d.push(`L${x0},${y0}`);\n d.push(\n `C${x0 + offsetX},${y0 + offsetY} ${x1 + offsetX},${y1 + offsetY} ${x1},${y1}`\n );\n }\n }\n d.push(`L${end.x},${end.y}`);\n }\n return d.join(\"\");\n }\n\n return lineFunction(points)!;\n}\n\nfunction getOffsets(\n start: NodePosition,\n end: NodePosition,\n offset: number\n): NodePosition {\n if (!offset) {\n return { x: 0, y: 0 };\n }\n const { x: x0, y: y0 } = start;\n const { x: x1, y: y1 } = end;\n const distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n const ratio = offset / distance;\n return {\n x: (x1 - x0) * ratio,\n y: (y1 - y0) * ratio,\n };\n}\n","import type { PositionTuple } from \"../interfaces\";\n\n// https://paulbourke.net/geometry/pointlineplane/javascript.txt\nexport function intersect(\n [x1, y1]: PositionTuple,\n [x2, y2]: PositionTuple,\n [x3, y3]: PositionTuple,\n [x4, y4]: PositionTuple\n): null | PositionTuple {\n // Check if none of the lines are of length 0\n if ((x1 === x2 && y1 === y2) || (x3 === x4 && y3 === y4)) {\n return null;\n }\n\n const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n\n // Lines are parallel\n if (denominator === 0) {\n return null;\n }\n\n const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n const ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / denominator;\n\n // is the intersection along the segments\n if (ua < 0 || ua > 1 || ub < 0 || ub > 1) {\n return null;\n }\n\n // Return a object with the x and y coordinates of the intersection\n const x = x1 + ua * (x2 - x1);\n const y = y1 + ua * (y2 - y1);\n\n return [x, y];\n}\n"],"names":["getDirectLinePoints","source","target","parallelGap","edgeView","hasExitPosition","exitPosition","hasEntryPosition","entryPosition","doTwoNodesOverlap","p0","p1","xDiff","yDiff","dx","x","dy","y","angle","Math","atan2","cos","PI","sin","line","width","height","sourceIntersections","getIntersections","length","targetIntersections","rect","vertices","possibleLines","i","push","intersections","item","intersection","intersect","a","b","paddingA","paddingB","A","getNodesWithPadding","B","left","min","right","max","top","bottom","node","padding","extractPartialRectTuple","value","Array","isArray","v0","v1","fill","MINIMAL_OFFSET","getPolyLinePoints","sourceDirection","targetDirection","sourcePosition","targetPosition","getCoordinates","controls","reverseControls","sourceIsVertical","horizontal","vertical","horizontalSign","verticalSign","horizontalPosition","verticalPosition","defaultControlX","defaultControlY","controlY0","controlY1","middleY","middleX","sourceExtendX","sign","start","end","startPosition","endPosition","axis","oppositeAxis","around","nonAround","aroundPosition","nonAroundPosition","aroundSign","targetSign","size","oppositeSize","targetEdge","sourceEdge","targetControl","sourceControl","oppositeIsStraight","middle","targetOppositeSign","sourceOppositeControl","targetOppositeControl","abs","oppositeMiddle","reverse","direction","position","MarkerComponent","_ref","Component","id","type","strokeColor","EntityRelationZeroOrOneMarker","EntityRelationZeroOrManyMarker","CircleMarker","ArrowMarker","React","_ref2","viewBox","refX","refY","overflow","markerWidth","r","markerHeight","stroke","cx","cy","_ref3","orient","strokeLinejoin","d","strokeWidth","_ref4","_ref5","curveLine","points","curveType","startOffset","endOffset","jumpsMap","curveFactory","curveLinear","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveBasis","startOffsets","getOffsets","endOffsets","lineFunction","index","curve","jump","get","verticalAngle","offsetX","radius","offsetY","p","jumpPoints","x0","y0","x1","y1","join","offset","ratio","sqrt","pow","x2","y2","x3","y3","x4","y4","denominator","ua","ub"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[5399],{7780:(e,t,r)=>{r.r(t),r.d(t,{BrickLoadError:()=>k,enqueueStableLoadBricks:()=>p,enqueueStableLoadProcessors:()=>m,flushStableLoadBricks:()=>f,loadBricksImperatively:()=>w,loadEditorsImperatively:()=>h,loadProcessorsImperatively:()=>v,loadScript:()=>s,loadSharedModule:()=>i,loadStyle:()=>a});const n=new Map;function o(e,t,r,s){if(Array.isArray(t))return Promise.all(t.map((t=>o(e,t,r))));const a=r&&!/^https?:/.test(t)?`${r}${t}`:t,i=n.get(a);if(i)return i;const c=new Promise(((t,r)=>{const n=()=>{window.dispatchEvent(new Event("request.end"))},o=document.createElement("style"===e?"link":"script");"script"===e?Object.assign(o,{type:"text/javascript",async:!0,...s,src:a}):Object.assign(o,{rel:"stylesheet",...s,href:a}),o.onload=()=>{t(a),n()},o.onerror=e=>{r(e),n()};const i=document.currentScript||document.getElementsByTagName("script")[0];i.parentNode.insertBefore(o,i),window.dispatchEvent(new Event("request.start"))}));return n.set(a,c),c}function s(e,t,r){return o("script",e,t,r)}function a(e,t,r){return o("style",e,t,r)}async function i(e,t){await r.I("default");const n=window[e];return await n.init(r.S.default),(await n.get(t))()}let c,l,u=!1;const d=new Promise(((e,t)=>{c=e,l=t}));function f(){u||c()}function p(e,t){return S($("bricks",e,t))}function m(e,t){return S($("processors",e,t))}async function w(e,t,r){const n=$("bricks",e,t,r);return f(),S(n)}function v(e,t){const r=$("processors",e,t);return f(),S(r)}function h(e,t){const r=$("editors",e,t);return f(),S(r)}class k extends Error{constructor(e){super(e),this.name="BrickLoadError",Error.captureStackTrace&&Error.captureStackTrace(this,k)}}let y;const b="v2-adapter.load-bricks";function g(e,t,r){const n=new Map,o=new Set,s=t=>{var a;if(o.has(t))return;let i,c,l;if(o.add(t),"editors"===e){l=t;for(const e of r.values()){var u,d;null!==(u=null!==(d=e.propertyEditors)&&void 0!==d?d:e.editors)&&void 0!==u&&u.some((e=>e===l))&&(i=e)}}else if("processors"===e||t.includes(".")){[c,l]=t.split(".");const n=`bricks/${"processors"===e?(m=c,m.replace(/[A-Z]/g,(e=>`-${e[0].toLocaleLowerCase()}`)).replace(/_[0-9]/g,(e=>`-${e[1]}`))):c}`;i=r.get(n)}else{let e;l=t;for(const n of r.values()){var f;if(null!==(f=n.elements)&&void 0!==f&&f.some((e=>e===l))){var p;if(null===(p=n.deprecatedElements)||void 0===p||!p.includes(t)){i=n;break}e=n}}!i&&e&&(i=e)}var m;if(!i)return void console.error(`Package for ${t} not found.`);let w=n.get(i);w||(w=[],n.set(i,w)),w.push({fullName:t,lastName:l});const v=null===(a=i.dependencies)||void 0===a?void 0:a[t];if(v)for(const e of v)s(e)};for(const e of t)s(e);return n}async function E(e,t,r){const n=`${"processors"===e||"editors"===e?`./${e}/`:"./"}${"editors"===e?r.fullName:r.lastName}`,o=performance.now();try{await i(t,n)}catch(t){console.error(t);const n=Math.round(performance.now()-o);throw new k(`Load ${e} of "${r.fullName}" failed (${n>1e3?+(n/1e3).toFixed(2)+"s":`${n}ms`}): ${null==t?void 0:t.message}`)}}function P(e,t,r){return t.map((async t=>{var n;return await s(t.filePath,null!==(n=window.PUBLIC_ROOT)&&void 0!==n?n:""),await d,Promise.all(r.get(t).map((r=>E(e,t.id,r))))}))}async function $(e,t,r,n){const o=new Map;for(const e of r){const t=e.id||N(e.filePath);o.set(t,e)}const a=g(e,t,o);let i;const d=[],f=[];let p;const m=function(){var e;const{dll:t}=window;return!(!t||null===(e=window.BRICK_NEXT_VERSIONS)||void 0===e||null===(e=e["brick-container"])||void 0===e||!e.startsWith("2."))}();for(const e of a.keys())if(e.id)"bricks/basic"===e.id?i=e:f.push(e);else if(d.push(e),!m&&(p=o.get("bricks/v2-adapter"),!p))throw new Error("Using v2 bricks, but v2-adapter not found");const w=p;let v;const h=i;if(h){var k;const t=s(h.filePath,null!==(k=window.PUBLIC_ROOT)&&void 0!==k?k:"");u||(u=!0,t.then((()=>Promise.resolve())).then(c,l)),v=t.then((()=>Promise.all(a.get(h).map((t=>E(e,h.id,t))))))}const $=[v].concat(P(e,f,a));if(w&&d.length>0&&!m){if(!y){const e=g("bricks",[b],o),t=[...e.keys()];y=(async()=>(await Promise.all(P("bricks",t,e)),document.createElement(b)))()}$.push(y.then((t=>Promise.all(d.map((n=>{var o;const s=N(n.filePath).split("/")[1];return t.resolve(w.filePath,"editors"===e&&null!==(o=n.propertyEditorsJsFilePath)&&void 0!==o?o:n.filePath,"bricks"===e?a.get(n).map((e=>`${s}.${e.lastName}`)):[],n.dll,r)}))))))}n&&d.length>0&&m&&$.push(n(d.map((e=>a.get(e).map((e=>e.fullName)))).flat())),await Promise.all($)}async function S(e){window.dispatchEvent(new Event("request.start"));try{await e}finally{window.dispatchEvent(new Event("request.end"))}}function N(e){return e.split("/").slice(0,2).join("/")}}}]);
2
+ //# sourceMappingURL=5399.d786845a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/5399.d786845a.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/loader/dist/esm/loadScriptOrStyle.js","webpack:///../../node_modules/@next-core/loader/dist/esm/loadScript.js","webpack:///../../node_modules/@next-core/loader/dist/esm/loadStyle.js","webpack:///../../node_modules/@next-core/loader/dist/esm/loadSharedModule.js","webpack:///../../node_modules/@next-core/loader/dist/esm/stableLoadBricks.js"],"sourcesContent":["const cache = new Map();\nexport default function loadScriptOrStyle(type, src, prefix, attrs) {\n if (Array.isArray(src)) {\n return Promise.all(src.map(item => loadScriptOrStyle(type, item, prefix)));\n }\n const fixedSrc = prefix && !/^https?:/.test(src) ? `${prefix}${src}` : src;\n const cachedPromise = cache.get(fixedSrc);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = new Promise((resolve, reject) => {\n const end = () => {\n window.dispatchEvent(new Event(\"request.end\"));\n };\n const element = document.createElement(type === \"style\" ? \"link\" : \"script\");\n if (type === \"script\") {\n Object.assign(element, {\n type: \"text/javascript\",\n async: true,\n ...attrs,\n src: fixedSrc\n });\n } else {\n Object.assign(element, {\n rel: \"stylesheet\",\n ...attrs,\n href: fixedSrc\n });\n }\n element.onload = () => {\n resolve(fixedSrc);\n end();\n };\n element.onerror = e => {\n reject(e);\n end();\n };\n const firstScript = document.currentScript || document.getElementsByTagName(\"script\")[0];\n firstScript.parentNode.insertBefore(element, firstScript);\n window.dispatchEvent(new Event(\"request.start\"));\n });\n cache.set(fixedSrc, promise);\n return promise;\n}\n//# sourceMappingURL=loadScriptOrStyle.js.map","import loadScriptOrStyle from \"./loadScriptOrStyle.js\";\nexport default function loadScript(src, prefix, attrs) {\n return loadScriptOrStyle(\"script\", src, prefix, attrs);\n}\n//# sourceMappingURL=loadScript.js.map","import loadScriptOrStyle from \"./loadScriptOrStyle.js\";\nexport default function loadStyle(src, prefix, attrs) {\n return loadScriptOrStyle(\"style\", src, prefix, attrs);\n}\n//# sourceMappingURL=loadStyle.js.map","// https://github.com/module-federation/module-federation-examples/blob/eda9493f3991a423479fd834cfb1d7b241d9d1f0/advanced-api/dynamic-remotes/app1/src/App.js\nexport default async function loadSharedModule(scope, module) {\n // Initializes the share scope. This fills it with known provided modules from this build and all remotes\n await __webpack_init_sharing__(\"default\");\n const container = window[scope]; // or get the container somewhere else\n // Initialize the container, it may provide shared modules\n await container.init(__webpack_share_scopes__.default);\n const factory = await container.get(module);\n return factory();\n}\n//# sourceMappingURL=loadSharedModule.js.map","import loadScript from \"./loadScript.js\";\nimport loadSharedModule from \"./loadSharedModule.js\";\nlet resolveBasicPkg;\nlet rejectBasicPkg;\nlet basicPkgWillBeResolved = false;\nconst waitBasicPkg = new Promise((resolve, reject) => {\n resolveBasicPkg = resolve;\n rejectBasicPkg = reject;\n});\nexport function flushStableLoadBricks() {\n if (!basicPkgWillBeResolved) {\n resolveBasicPkg();\n }\n}\n\n/**\n * When loading bundles with webpack module federation concurrently, if\n * these bundles share some modules, webpack will load a singleton module\n * if versions are matched. Webpack will use the first bundle who started\n * to init the shared scope. Generally which bundle to use for a specific\n * module, does not matter. However, it may cause flaky result since the\n * shared module may from different bundles which maybe not exactly the\n * same, especially developers declare dependencies incorrectly sometimes.\n * So in order to make it less flaky, we try to make a BASIC package takes\n * precedence over others. We will always load the shared modules from the\n * basic package bundle if it contains the shared modules.\n */\nexport function enqueueStableLoadBricks(bricks, brickPackages) {\n const promise = enqueueStableLoad(\"bricks\", bricks, brickPackages);\n return dispatchRequestStatus(promise);\n}\nexport function enqueueStableLoadProcessors(processors, brickPackages) {\n const promise = enqueueStableLoad(\"processors\", processors, brickPackages);\n return dispatchRequestStatus(promise);\n}\nexport async function loadBricksImperatively(bricks, brickPackages,\n// Post loading process hook with all v2 bricks including dependencies\npostProcessV2Bricks) {\n const promise = enqueueStableLoad(\"bricks\", bricks, brickPackages, postProcessV2Bricks);\n flushStableLoadBricks();\n return dispatchRequestStatus(promise);\n}\nexport function loadProcessorsImperatively(processors, brickPackages) {\n const promise = enqueueStableLoad(\"processors\", processors, brickPackages);\n flushStableLoadBricks();\n return dispatchRequestStatus(promise);\n}\nexport function loadEditorsImperatively(editors, brickPackages) {\n const promise = enqueueStableLoad(\"editors\", editors, brickPackages);\n flushStableLoadBricks();\n return dispatchRequestStatus(promise);\n}\nexport class BrickLoadError extends Error {\n constructor(message) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(message);\n this.name = \"BrickLoadError\";\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // istanbul ignore else\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrickLoadError);\n }\n }\n}\nlet v2AdapterPromise;\nconst V2_ADAPTER_LOAD_BRICKS = \"v2-adapter.load-bricks\";\n// Get brick/processor items including their dependencies\nfunction getItemsByPkg(type, list, brickPackagesMap) {\n const itemsByPkg = new Map();\n const listToLoad = new Set();\n const add = item => {\n var _pkg$dependencies;\n if (listToLoad.has(item)) {\n return;\n }\n listToLoad.add(item);\n let pkg;\n let namespace;\n let lastName;\n if (type === \"editors\") {\n lastName = item;\n for (const p of brickPackagesMap.values()) {\n var _ref, _p$propertyEditors;\n if ((_ref = (_p$propertyEditors = p.propertyEditors) !== null && _p$propertyEditors !== void 0 ? _p$propertyEditors : p.editors) !== null && _ref !== void 0 && _ref.some(e => e === lastName)) {\n pkg = p;\n }\n }\n } else if (type === \"processors\" || item.includes(\".\")) {\n [namespace, lastName] = item.split(\".\");\n const pkgId = `bricks/${type === \"processors\" ? getProcessorPackageName(namespace) : namespace}`;\n pkg = brickPackagesMap.get(pkgId);\n } else {\n lastName = item;\n let deprecatedBrickInThisPkg;\n for (const p of brickPackagesMap.values()) {\n var _p$elements;\n if ((_p$elements = p.elements) !== null && _p$elements !== void 0 && _p$elements.some(e => e === lastName)) {\n var _p$deprecatedElements;\n if ((_p$deprecatedElements = p.deprecatedElements) !== null && _p$deprecatedElements !== void 0 && _p$deprecatedElements.includes(item)) {\n deprecatedBrickInThisPkg = p;\n } else {\n pkg = p;\n break;\n }\n }\n }\n if (!pkg && deprecatedBrickInThisPkg) {\n pkg = deprecatedBrickInThisPkg;\n }\n }\n if (!pkg) {\n // eslint-disable-next-line no-console\n console.error(`Package for ${item} not found.`);\n return;\n }\n let groupItems = itemsByPkg.get(pkg);\n if (!groupItems) {\n groupItems = [];\n itemsByPkg.set(pkg, groupItems);\n }\n groupItems.push({\n fullName: item,\n lastName\n });\n\n // Load their dependencies too\n const deps = (_pkg$dependencies = pkg.dependencies) === null || _pkg$dependencies === void 0 ? void 0 : _pkg$dependencies[item];\n if (deps) {\n for (const dep of deps) {\n add(dep);\n }\n }\n };\n for (const item of list) {\n add(item);\n }\n return itemsByPkg;\n}\nasync function loadBrickModule(type, pkgId, item) {\n const moduleName = `${type === \"processors\" || type === \"editors\" ? `./${type}/` : \"./\"}${type === \"editors\" ? item.fullName : item.lastName}`;\n const start = performance.now();\n try {\n await loadSharedModule(pkgId, moduleName);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n const cost = Math.round(performance.now() - start);\n throw new BrickLoadError(`Load ${type} of \"${item.fullName}\" failed${\n // istanbul ignore next\n process.env.NODE_ENV === \"test\" ? \"\" : ` (${cost > 1000 ? `${+(cost / 1000).toFixed(2)}s` : `${cost}ms`})`}: ${error === null || error === void 0 ? void 0 : error.message}`);\n }\n}\nfunction loadRestBricks(type, pkgs, itemsMap) {\n return pkgs.map(async pkg => {\n var _window$PUBLIC_ROOT;\n await loadScript(pkg.filePath, (_window$PUBLIC_ROOT = window.PUBLIC_ROOT) !== null && _window$PUBLIC_ROOT !== void 0 ? _window$PUBLIC_ROOT : \"\");\n await waitBasicPkg;\n return Promise.all(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemsMap.get(pkg).map(item => loadBrickModule(type, pkg.id, item)));\n });\n}\nasync function enqueueStableLoad(type, list, brickPackages,\n// Post loading process hook with all v2 bricks including dependencies\npostProcessV2Bricks) {\n const brickPackagesMap = new Map();\n for (const pkg of brickPackages) {\n const pkgId = pkg.id || getPkgIdByFilePath(pkg.filePath);\n brickPackagesMap.set(pkgId, pkg);\n }\n const itemsByPkg = getItemsByPkg(type, list, brickPackagesMap);\n let foundBasicPkg;\n const v2Packages = [];\n const v3PackagesOtherThanBasic = [];\n let maybeV2Adapter;\n const isInV2Container = isRunningInV2Container();\n for (const pkg of itemsByPkg.keys()) {\n if (pkg.id) {\n if (pkg.id === \"bricks/basic\") {\n foundBasicPkg = pkg;\n } else {\n v3PackagesOtherThanBasic.push(pkg);\n }\n } else {\n // Brick packages of v2 has no `id`\n v2Packages.push(pkg);\n if (!isInV2Container) {\n maybeV2Adapter = brickPackagesMap.get(\"bricks/v2-adapter\");\n if (!maybeV2Adapter) {\n throw new Error(\"Using v2 bricks, but v2-adapter not found\");\n }\n }\n }\n }\n const v2Adapter = maybeV2Adapter;\n let basicPkgPromise;\n const basicPkg = foundBasicPkg;\n if (basicPkg) {\n var _window$PUBLIC_ROOT2;\n const tempPromise = loadScript(basicPkg.filePath, (_window$PUBLIC_ROOT2 = window.PUBLIC_ROOT) !== null && _window$PUBLIC_ROOT2 !== void 0 ? _window$PUBLIC_ROOT2 : \"\");\n // Packages other than BASIC will wait for an extra micro-task tick.\n if (!basicPkgWillBeResolved) {\n basicPkgWillBeResolved = true;\n tempPromise.then(() => Promise.resolve()).then(resolveBasicPkg, rejectBasicPkg);\n }\n basicPkgPromise = tempPromise.then(() => Promise.all(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemsByPkg.get(basicPkg).map(item => loadBrickModule(type, basicPkg.id, item))));\n }\n const pkgPromises = [basicPkgPromise].concat(loadRestBricks(type, v3PackagesOtherThanBasic, itemsByPkg));\n if (v2Adapter && v2Packages.length > 0 && !isInV2Container) {\n if (!v2AdapterPromise) {\n // Load `v2-adapter.load-bricks` and its dependencies\n const v2AdapterItemsByPkg = getItemsByPkg(\"bricks\", [V2_ADAPTER_LOAD_BRICKS], brickPackagesMap);\n const v2AdapterPackages = [...v2AdapterItemsByPkg.keys()];\n const loadV2Adapter = async () => {\n await Promise.all(loadRestBricks(\"bricks\", v2AdapterPackages, v2AdapterItemsByPkg));\n return document.createElement(V2_ADAPTER_LOAD_BRICKS);\n };\n v2AdapterPromise = loadV2Adapter();\n }\n pkgPromises.push(v2AdapterPromise.then(adapter => Promise.all(v2Packages.map(pkg => {\n var _pkg$propertyEditorsJ;\n const pkgId = getPkgIdByFilePath(pkg.filePath);\n const pkgNamespace = pkgId.split(\"/\")[1];\n return adapter.resolve(v2Adapter.filePath, type === \"editors\" ? (_pkg$propertyEditorsJ = pkg.propertyEditorsJsFilePath) !== null && _pkg$propertyEditorsJ !== void 0 ? _pkg$propertyEditorsJ : pkg.filePath : pkg.filePath, type === \"bricks\" ?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemsByPkg.get(pkg).map(item => `${pkgNamespace}.${item.lastName}`) : [], pkg.dll,\n // Todo: remove `brickPackages` as an argument\n brickPackages);\n }))));\n }\n if (postProcessV2Bricks && v2Packages.length > 0 && isInV2Container) {\n pkgPromises.push(postProcessV2Bricks(v2Packages.map(pkg => itemsByPkg.get(pkg).map(item => item.fullName)).flat()));\n }\n await Promise.all(pkgPromises);\n}\nasync function dispatchRequestStatus(promise) {\n window.dispatchEvent(new Event(\"request.start\"));\n try {\n await promise;\n } finally {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n}\nfunction getProcessorPackageName(camelPackageName) {\n return camelPackageName.replace(/[A-Z]/g, match => `-${match[0].toLocaleLowerCase()}`).replace(/_[0-9]/g, match => `-${match[1]}`);\n}\nfunction getPkgIdByFilePath(filePath) {\n return filePath.split(\"/\").slice(0, 2).join(\"/\");\n}\nfunction isRunningInV2Container() {\n var _window$BRICK_NEXT_VE;\n const {\n dll\n } = window;\n if (dll && (_window$BRICK_NEXT_VE = window.BRICK_NEXT_VERSIONS) !== null && _window$BRICK_NEXT_VE !== void 0 && (_window$BRICK_NEXT_VE = _window$BRICK_NEXT_VE[\"brick-container\"]) !== null && _window$BRICK_NEXT_VE !== void 0 && _window$BRICK_NEXT_VE.startsWith(\"2.\")) {\n return true;\n }\n return false;\n}\n//# sourceMappingURL=stableLoadBricks.js.map"],"names":["cache","Map","loadScriptOrStyle","type","src","prefix","attrs","Array","isArray","Promise","all","map","item","fixedSrc","test","cachedPromise","get","promise","resolve","reject","end","window","dispatchEvent","Event","element","document","createElement","Object","assign","async","rel","href","onload","onerror","e","firstScript","currentScript","getElementsByTagName","parentNode","insertBefore","set","loadScript","loadStyle","loadSharedModule","scope","module","container","init","default","resolveBasicPkg","rejectBasicPkg","basicPkgWillBeResolved","waitBasicPkg","flushStableLoadBricks","enqueueStableLoadBricks","bricks","brickPackages","dispatchRequestStatus","enqueueStableLoad","enqueueStableLoadProcessors","processors","loadBricksImperatively","postProcessV2Bricks","loadProcessorsImperatively","loadEditorsImperatively","editors","BrickLoadError","Error","constructor","message","super","this","name","captureStackTrace","v2AdapterPromise","V2_ADAPTER_LOAD_BRICKS","getItemsByPkg","list","brickPackagesMap","itemsByPkg","listToLoad","Set","add","_pkg$dependencies","has","pkg","namespace","lastName","p","values","_ref","_p$propertyEditors","propertyEditors","some","includes","split","pkgId","camelPackageName","replace","match","toLocaleLowerCase","deprecatedBrickInThisPkg","_p$elements","elements","_p$deprecatedElements","deprecatedElements","console","error","groupItems","push","fullName","deps","dependencies","dep","loadBrickModule","moduleName","start","performance","now","cost","Math","round","toFixed","loadRestBricks","pkgs","itemsMap","_window$PUBLIC_ROOT","filePath","PUBLIC_ROOT","id","getPkgIdByFilePath","foundBasicPkg","v2Packages","v3PackagesOtherThanBasic","maybeV2Adapter","isInV2Container","_window$BRICK_NEXT_VE","dll","BRICK_NEXT_VERSIONS","startsWith","isRunningInV2Container","keys","v2Adapter","basicPkgPromise","basicPkg","_window$PUBLIC_ROOT2","tempPromise","then","pkgPromises","concat","length","v2AdapterItemsByPkg","v2AdapterPackages","loadV2Adapter","adapter","_pkg$propertyEditorsJ","pkgNamespace","propertyEditorsJsFilePath","flat","slice","join"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[3171,5552],{5552:(n,e,t)=>{t.r(e),t.d(e,{i18n:()=>d,i18nText:()=>l,initializeI18n:()=>u});var i=t(5630),r=t(7177),s=t(848);let a=!1;const o=new Set;function u(n,e){if(a||(a=!0,r.i18n.use(s.default).init({fallbackLng:"zh",debug:!1,supportedLngs:["zh","en"],nonExplicitSupportedLngs:!0,interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1,compatibilityJSON:"v3",resources:{}})),n&&e&&!o.has(n)){o.add(n);for(const[t,i]of Object.entries(e))r.i18n.addResourceBundle(t,n,i)}}var c=t(410);function l(n){var e;if(!n)return;const t=null!==(e=r.i18n.language)&&void 0!==e?e:"zh-CN";if((0,c.hasOwnProperty)(n,t))return n[t];const i=t.split("-")[0];if(i!==t)return(0,c.hasOwnProperty)(n,i)?n[i]:void 0;const s=`${i}-`;for(const e of Object.keys(n))if(e.startsWith(s))return n[e]}const d=i.default||i}}]);
2
+ //# sourceMappingURL=5552.7718c4ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/5552.7718c4ca.js","mappings":"6OAEA,IAAIA,GAAc,EAClB,MAAMC,EAAwB,IAAIC,IAC3B,SAASC,EAAeC,EAAIC,GAyBjC,GAxBKL,IACHA,GAAc,EACd,EAAAM,KAICC,IAAmF,WAEnFC,KAAK,CACJC,YAAa,KACbC,OAAO,EACPC,cAAe,CAAC,KAAM,MACtBC,0BAA0B,EAC1BC,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,aAAa,GAEfC,YAAY,EACZC,kBAAmB,KACnBC,UAAW,CAAC,KAGXf,GAAOC,IAAWJ,EAAsBmB,IAAIhB,GAAjD,CAGAH,EAAsBoB,IAAIjB,GAC1B,IAAK,MAAOkB,EAAMH,KAAcI,OAAOC,QAAQnB,GAC7C,EAAAC,KAAKmB,kBAAkBH,EAAMlB,EAAIe,EAHnC,CAKF,C,aClCO,SAASO,EAASC,GACvB,IAAIC,EACJ,IAAKD,EACH,OAEF,MAAME,EAAgD,QAApCD,EAAiB,EAAAtB,KAAKuB,gBAAyC,IAAnBD,EAA4BA,EAAiB,QAE3G,IAAI,IAAAE,gBAAeH,EAAME,GACvB,OAAOF,EAAKE,GAGd,MAAME,EAAkBF,EAASG,MAAM,KAAK,GAC5C,GAAID,IAAoBF,EAGtB,OAAO,IAAAC,gBAAeH,EAAMI,GAAmBJ,EAAKI,QAAmBE,EAKzE,MAAMC,EAAS,GAAGH,KAClB,IAAK,MAAMI,KAAOZ,OAAOa,KAAKT,GAC5B,GAAIQ,EAAIE,WAAWH,GACjB,OAAOP,EAAKQ,EAGlB,CC3BO,MAAM7B,EAA6E,WAAmB,C","sources":["webpack:///../../node_modules/@next-core/i18n/dist/esm/init.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/text.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/index.js"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nlet initialized = false;\nconst initializedNamespaces = new Set();\nexport function initializeI18n(NS, locales) {\n if (!initialized) {\n initialized = true;\n i18n\n // learn more: https://github.com/i18next/i18next-xhr-backend\n // .use(Backend)\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(process.env.NODE_ENV === \"test\" ? LanguageDetector : /* istanbul ignore next */LanguageDetector.default)\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: \"zh\",\n debug: process.env.NODE_ENV === \"development\",\n supportedLngs: [\"zh\", \"en\"],\n nonExplicitSupportedLngs: true,\n interpolation: {\n escapeValue: false // not needed for react as it escapes by default\n },\n react: {\n useSuspense: false\n },\n returnNull: false,\n compatibilityJSON: \"v3\",\n resources: {}\n });\n }\n if (!NS || !locales || initializedNamespaces.has(NS)) {\n return;\n }\n initializedNamespaces.add(NS);\n for (const [lang, resources] of Object.entries(locales)) {\n i18n.addResourceBundle(lang, NS, resources);\n }\n}\n//# sourceMappingURL=init.js.map","import { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nexport function i18nText(data) {\n var _i18n$language;\n if (!data) {\n return;\n }\n const language = (_i18n$language = i18n.language) !== null && _i18n$language !== void 0 ? _i18n$language : \"zh-CN\";\n // First, make a perfect match.\n if (hasOwnProperty(data, language)) {\n return data[language];\n }\n // https://en.wikipedia.org/wiki/IETF_language_tag\n const primaryLanguage = language.split(\"-\")[0];\n if (primaryLanguage !== language) {\n // Then, match the primary language (which omits other subtags).\n // E.g., match `zh` if the current language is `zh-CN`.\n return hasOwnProperty(data, primaryLanguage) ? data[primaryLanguage] : undefined;\n }\n // At last, match the first key which starts with the primary language,\n // if the current language contains primary subtag only.\n // E.g., match `zh-CN` if the current language is `zh`.\n const prefix = `${primaryLanguage}-`;\n for (const key of Object.keys(data)) {\n if (key.startsWith(prefix)) {\n return data[key];\n }\n }\n}\n//# sourceMappingURL=text.js.map","import i18next from \"i18next\";\nexport const i18n = process.env.NODE_ENV === \"test\" ? i18next : /* istanbul ignore next */i18next.default || i18next;\nexport * from \"./init.js\";\nexport * from \"./text.js\";\n//# sourceMappingURL=index.js.map"],"names":["initialized","initializedNamespaces","Set","initializeI18n","NS","locales","i18n","use","init","fallbackLng","debug","supportedLngs","nonExplicitSupportedLngs","interpolation","escapeValue","react","useSuspense","returnNull","compatibilityJSON","resources","has","add","lang","Object","entries","addResourceBundle","i18nText","data","_i18n$language","language","hasOwnProperty","primaryLanguage","split","undefined","prefix","key","keys","startsWith"],"sourceRoot":""}