@layers-app/editor 0.3.11 → 0.4.1-progress.1
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/README.md +215 -1
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +6 -6
- package/dist/layers.0EGX3HEy.js +1 -0
- package/dist/layers.1RmgGsLp.js +1 -0
- package/dist/layers.1df9kFxm.js +40 -0
- package/dist/layers.2aPuvps8.js +2235 -0
- package/dist/layers.3YvcJPBv.js +7 -0
- package/dist/layers.52famHy6.js +1 -0
- package/dist/layers.5l4Zrk2L.js +1 -0
- package/dist/layers.6hpmGhQ7.js +10 -0
- package/dist/layers.7JqFgE4-.js +15 -0
- package/dist/layers.7RKu5qAq.js +37 -0
- package/dist/layers.9QK1wiQj.js +1 -0
- package/dist/layers.9pNaFvaX.js +1 -0
- package/dist/layers.AmKAZWLq.js +11 -0
- package/dist/layers.B0J4f_xf.js +5 -0
- package/dist/layers.B19hGmey.js +1 -0
- package/dist/layers.B1O1xaS8.js +33 -0
- package/dist/layers.B2AGu32C.js +11692 -0
- package/dist/layers.B31bUvoU.js +37 -0
- package/dist/layers.B3BB_VRY.js +802 -0
- package/dist/layers.B3D4g2HH.js +1 -0
- package/dist/layers.B3jz2GM9.js +2479 -0
- package/dist/layers.B7pMHVvI.js +230 -0
- package/dist/layers.B8vyhX3w.js +40 -0
- package/dist/{layers.BnjxHNDK.js → layers.B93hVIUg.js} +84 -84
- package/dist/layers.B97E5Ket.js +41 -0
- package/dist/layers.B9oGbUwj.js +65 -0
- package/dist/layers.B9x4sQmU.js +9 -0
- package/dist/layers.B9yJUkZR.js +39 -0
- package/dist/layers.BArswBu6.js +1 -0
- package/dist/layers.BAtv1CM7.js +1 -0
- package/dist/layers.BCCZdUAo.js +6 -0
- package/dist/layers.BCpU6Rx2.js +207 -0
- package/dist/layers.BEWGfzM9.js +790 -0
- package/dist/layers.BFGghBqX.js +84 -0
- package/dist/layers.BGSQMYfb.js +3 -0
- package/dist/layers.BIOgNBCU.js +118 -0
- package/dist/layers.BIeVwYKL.js +1 -0
- package/dist/layers.BK7LrtsI.js +8 -0
- package/dist/layers.BKEU6fbU.js +268 -0
- package/dist/layers.BM5aqSQa.js +904 -0
- package/dist/layers.BMWTYLoS.js +1580 -0
- package/dist/layers.BNiUL2Vg.js +1283 -0
- package/dist/layers.BRbDF_Rn.js +40 -0
- package/dist/layers.BSJVn_-a.js +4 -0
- package/dist/{layers.C125HTat.js → layers.BSQmbaLA.js} +1 -1
- package/dist/layers.BSTBZrFn.js +1 -0
- package/dist/layers.BSZN_1IW.js +1 -0
- package/dist/layers.BU089OsF.js +160 -0
- package/dist/layers.BV_nreRT.js +5 -0
- package/dist/layers.BVzXy_Es.js +282 -0
- package/dist/layers.BX_VhzvH.js +4 -0
- package/dist/layers.BXlqVxG4.js +10 -0
- package/dist/layers.BY4eBmlK.js +37 -0
- package/dist/layers.BbCfEXyj.js +55 -0
- package/dist/layers.BcAvrhb2.js +11 -0
- package/dist/layers.Be4S2sq-.js +11 -0
- package/dist/layers.BejsVBlP.js +8 -0
- package/dist/layers.BfFWkiCr.js +8 -0
- package/dist/layers.BgOa2ZQq.js +7 -0
- package/dist/layers.BiJ8hfRt.js +1510 -0
- package/dist/layers.Bm9A8t2O.js +41 -0
- package/dist/layers.BmKPR1Q_.js +803 -0
- package/dist/layers.BpLN4VBV.js +35 -0
- package/dist/layers.Bp_LzOtD.js +6 -0
- package/dist/layers.BpilXLfW.js +6 -0
- package/dist/layers.BrlarkcH.js +1 -0
- package/dist/layers.BrwdJtoi.js +2966 -0
- package/dist/layers.BtWb_X9E.js +1088 -0
- package/dist/layers.BuQv8-pQ.js +10 -0
- package/dist/layers.BvcJQqPP.js +36 -0
- package/dist/layers.BwReZ0XC.js +8 -0
- package/dist/layers.C0uya3UC.js +257 -0
- package/dist/layers.C3Efr78e.js +1 -0
- package/dist/layers.C3kfFCwy.js +37 -0
- package/dist/layers.C4DnE7f4.js +9 -0
- package/dist/layers.C6dIKT7t.js +32 -0
- package/dist/layers.C6rE9oi4.js +5 -0
- package/dist/layers.C7lIplJU.js +247 -0
- package/dist/layers.C8_lu5UH.js +23 -0
- package/dist/layers.C9s4Ga9-.js +139 -0
- package/dist/layers.CA3xAcdD.js +84 -0
- package/dist/layers.CAt0Toqo.js +39 -0
- package/dist/layers.CBmWR4JD.js +41 -0
- package/dist/layers.CEnd1x3K.js +7 -0
- package/dist/layers.CEpgYsO5.js +10 -0
- package/dist/layers.CF3SIE-y.js +9 -0
- package/dist/layers.CFMVSllB.js +34 -0
- package/dist/layers.CGWEiDtE.js +501 -0
- package/dist/layers.CHV4TIWj.js +769 -0
- package/dist/layers.CHZsXQcr.js +1 -0
- package/dist/layers.CHe9Q8ia.js +9 -0
- package/dist/layers.CLX5RFJB.js +39 -0
- package/dist/layers.CLz5oPPj.js +1 -0
- package/dist/layers.CMV5IiUc.js +5 -0
- package/dist/layers.CN0RXanE.js +2 -0
- package/dist/layers.CNcbY4HA.js +6 -0
- package/dist/layers.COAF7f8g.js +1 -0
- package/dist/layers.COPB0bHF.js +2 -0
- package/dist/layers.CPGH36Hx.js +38 -0
- package/dist/layers.CQ_Gb_tr.js +40 -0
- package/dist/layers.CRIXCu9y.js +36 -0
- package/dist/layers.CRbZFXp0.js +10 -0
- package/dist/layers.CTHKUBrY.js +1 -0
- package/dist/layers.CTinG4fA.js +1 -0
- package/dist/layers.CUBdNh1l.js +139 -0
- package/dist/layers.CUKl38op.js +373 -0
- package/dist/layers.CUM6WWJc.js +10 -0
- package/dist/layers.CVO2cgHn.js +7 -0
- package/dist/layers.CVg-xbVM.js +9148 -0
- package/dist/layers.CWQb-v3n.js +59 -0
- package/dist/layers.CX7R1NFA.js +42 -0
- package/dist/layers.CY2dfUZP.js +220 -0
- package/dist/layers.C_YVSLx2.js +19 -0
- package/dist/layers.C_kJ5c3l.js +1089 -0
- package/dist/layers.CaXcZpWP.js +8 -0
- package/dist/layers.CacJtvRK.js +42 -0
- package/dist/layers.Cb-u0SLP.js +931 -0
- package/dist/layers.Cbk6-WFM.js +1 -0
- package/dist/layers.CcEJHfTE.js +6 -0
- package/dist/layers.CdKuzWdD.js +1 -0
- package/dist/layers.CeljVLEY.js +7 -0
- package/dist/layers.CjFEU6yv.js +36 -0
- package/dist/layers.CltyxC3q.js +39 -0
- package/dist/layers.CnZQE2Pi.js +5 -0
- package/dist/layers.Cpp1ZEuF.js +9 -0
- package/dist/layers.CpvexSFh.js +202 -0
- package/dist/layers.CqVTtuYm.js +6 -0
- package/dist/layers.Cs24L6er.js +261 -0
- package/dist/layers.CsUFpQDp.js +40 -0
- package/dist/layers.CutHJDp4.js +7 -0
- package/dist/layers.CvCD8PmL.js +39 -0
- package/dist/layers.CwE7GdQT.js +8 -0
- package/dist/layers.CwL5PiXG.js +8 -0
- package/dist/layers.CyPA2u9-.js +8 -0
- package/dist/layers.CzRgGVNU.js +41 -0
- package/dist/layers.D0zn4_Mx.js +1 -0
- package/dist/layers.D2KUO0dY.js +42 -0
- package/dist/layers.D2SIBPjl.js +41 -0
- package/dist/layers.D2Tzu1xx.js +116 -0
- package/dist/layers.D3rmRYuA.js +10 -0
- package/dist/layers.D4fGb2cV.js +1272 -0
- package/dist/layers.D56h41PX.js +1 -0
- package/dist/layers.D5Wk7Brs.js +10 -0
- package/dist/layers.D7jGxypv.js +8 -0
- package/dist/layers.D8g04PjT.js +9 -0
- package/dist/layers.D97nDwEx.js +9 -0
- package/dist/layers.D9Df9NSm.js +14 -0
- package/dist/layers.DBFfWJxR.js +51 -0
- package/dist/layers.DChAJIDE.js +40 -0
- package/dist/layers.DGjpnqy8.js +295 -0
- package/dist/layers.DKvSkiyS.js +52 -0
- package/dist/layers.DL83jGn_.js +61 -0
- package/dist/layers.DLwuMfdd.js +84 -0
- package/dist/layers.DMkBISW1.js +1 -0
- package/dist/layers.DMyyjog4.js +32 -0
- package/dist/layers.DN9HoVxI.js +18 -0
- package/dist/layers.DO-43L6O.js +423 -0
- package/dist/layers.DOrgOHBr.js +1 -0
- package/dist/layers.DPRdtwVX.js +10 -0
- package/dist/layers.DPkkvYnI.js +96 -0
- package/dist/layers.DRLM7uPa.js +1 -0
- package/dist/layers.DRk9pZsP.js +1 -0
- package/dist/layers.DRrRO-pI.js +39 -0
- package/dist/layers.DS6sUpQY.js +70 -0
- package/dist/layers.DSNZlSxG.js +40 -0
- package/dist/layers.DT14b_tp.js +122 -0
- package/dist/layers.DU9bT12-.js +11 -0
- package/dist/layers.DVysgz_L.js +9 -0
- package/dist/layers.DWyWcSYq.js +425 -0
- package/dist/layers.DYgifwCe.js +1265 -0
- package/dist/layers.DYrmRjRC.js +1034 -0
- package/dist/layers.DZVdzwBS.js +1 -0
- package/dist/layers.DbaKVP5e.js +1 -0
- package/dist/layers.Dd8k3mGW.js +32 -0
- package/dist/layers.Dera5nI8.js +8 -0
- package/dist/layers.DfHyYQto.js +1 -0
- package/dist/layers.Dg-bFIGZ.js +6 -0
- package/dist/layers.Dj2x2a5K.js +7 -0
- package/dist/layers.DjRYd6_J.js +6 -0
- package/dist/layers.DjUOC4st.js +16 -0
- package/dist/layers.Dlx-9qlV.js +4 -0
- package/dist/layers.DmXbI_X6.js +32 -0
- package/dist/layers.Dn51Gu3w.js +42 -0
- package/dist/layers.DnGlTnoF.js +8 -0
- package/dist/layers.DnXE-nI2.js +32 -0
- package/dist/layers.DneGJ5YW.js +36 -0
- package/dist/layers.DnyqZntR.js +1 -0
- package/dist/layers.DvXH8BN-.js +4 -0
- package/dist/layers.DvbNClAr.js +11 -0
- package/dist/layers.DwlMkCL5.js +1 -0
- package/dist/layers.DxA6ocdw.js +70 -0
- package/dist/layers.Dy1naDTQ.js +14 -0
- package/dist/layers.Fwx6Z-E0.js +7 -0
- package/dist/layers.GqCRYDXG.js +1619 -0
- package/dist/layers.Iok4Hx4P.js +1 -0
- package/dist/layers.JWCLFILJ.js +1 -0
- package/dist/layers.JWXTGwdn.js +39 -0
- package/dist/layers.Lv1hsK8F.js +42 -0
- package/dist/layers.MRw7LhZs.js +185 -0
- package/dist/layers.MZxHWl05.js +437 -0
- package/dist/layers.MfF8Mar4.js +40 -0
- package/dist/layers.NZaKqPGi.js +320 -0
- package/dist/layers.O16Qu9DR.js +38 -0
- package/dist/layers.OJEt97_Q.js +1 -0
- package/dist/layers.OkAEP5sK.js +41 -0
- package/dist/layers.QKd6brRD.js +1 -0
- package/dist/layers.QgpZpst1.js +1 -0
- package/dist/layers.RkLEX3Zh.js +7 -0
- package/dist/layers.RskRv7xC.js +33 -0
- package/dist/layers.Ru0qupSB.js +32 -0
- package/dist/layers.W2ukY1Da.js +960 -0
- package/dist/layers.XHdBpBIc.js +38 -0
- package/dist/layers.Y42vCoBD.js +40 -0
- package/dist/layers.ZQ_-z-aL.js +10 -0
- package/dist/layers.b0h5ZBmD.js +61 -0
- package/dist/layers.b6DSxQLV.js +186 -0
- package/dist/layers.erJbqYPP.js +9 -0
- package/dist/layers.gBi0hIYC.js +13 -0
- package/dist/layers.lCpg7dOn.js +21 -0
- package/dist/layers.ms8NfStk.js +41 -0
- package/dist/layers.mwnm89da.js +21763 -0
- package/dist/layers.nHHM2gEW.js +39 -0
- package/dist/layers.nbOz9XY9.js +44 -0
- package/dist/layers.p871JVGx.js +1359 -0
- package/dist/layers.pmoMn3BH.js +793 -0
- package/dist/layers.pw41pFms.js +35 -0
- package/dist/layers.rNpo9CKl.js +1126 -0
- package/dist/layers.uf8nbAjB.js +39 -0
- package/dist/layers.vXYsjfZS.js +9 -0
- package/dist/layers.vggOk4T3.js +48146 -0
- package/dist/layers.vmEHkEhU.js +21938 -0
- package/dist/{layers.YZkXZvVS.js → layers.vrcLKgWz.js} +14947 -13808
- package/dist/layers.vsJbLxBG.js +2 -0
- package/dist/layers.wmlkGZ6N.js +41 -0
- package/dist/layers.xJXWA8H6.js +35 -0
- package/dist/layers.zPlc1039.js +40 -0
- package/package.json +32 -16
- package/dist/layers.Cjs5EBWM.js +0 -343
- package/dist/layers.DPccTctI.js +0 -285
- package/dist/layers.DZ8DrrVn.js +0 -53491
- package/dist/layers.QVaGPbs3.js +0 -161
- package/dist/layers.VK3NB7Nd.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("./layers.BU089OsF.js"),t=require("./layers.DPkkvYnI.js"),_=require("./layers.9QK1wiQj.js"),N=require("./layers.C3Efr78e.js");require("./layers.B7pMHVvI.js");require("lodash-es");require("./layers.COAF7f8g.js");const k=s=>t.common$1.sanitizeText(s,t.getConfig());let w={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const D=function(s,o,f,i){const e=Object.keys(s);t.log$1.info("keys:",e),t.log$1.info(s),e.forEach(function(r){var l,c;const n=s[r],d={shape:"rect",id:n.id,domId:n.domId,labelText:k(n.id),labelStyle:"",style:"fill: none; stroke: black",padding:((l=t.getConfig().flowchart)==null?void 0:l.padding)??((c=t.getConfig().class)==null?void 0:c.padding)};o.setNode(n.id,d),$(n.classes,o,f,i,n.id),t.log$1.info("setNode",d)})},$=function(s,o,f,i,e){const r=Object.keys(s);t.log$1.info("keys:",r),t.log$1.info(s),r.filter(l=>s[l].parent==e).forEach(function(l){var c,n;const a=s[l],d=a.cssClasses.join(" "),g=t.getStylesFromArray(a.styles),p=a.label??a.id,u=0,y={labelStyle:g.labelStyle,shape:"class_box",labelText:k(p),classData:a,rx:u,ry:u,class:d,style:g.style,id:a.id,domId:a.domId,tooltip:i.db.getTooltip(a.id,e)||"",haveCallback:a.haveCallback,link:a.link,width:a.type==="group"?500:void 0,type:a.type,padding:((c=t.getConfig().flowchart)==null?void 0:c.padding)??((n=t.getConfig().class)==null?void 0:n.padding)};o.setNode(a.id,y),e&&o.setParent(a.id,e),t.log$1.info("setNode",y)})},E=function(s,o,f,i){t.log$1.info(s),s.forEach(function(e,r){var l,c;const n=e,a="",d={labelStyle:"",style:""},g=n.text,p=0,b={labelStyle:d.labelStyle,shape:"note",labelText:k(g),noteData:n,rx:p,ry:p,class:a,style:d.style,id:n.id,domId:n.id,tooltip:"",type:"note",padding:((l=t.getConfig().flowchart)==null?void 0:l.padding)??((c=t.getConfig().class)==null?void 0:c.padding)};if(o.setNode(n.id,b),t.log$1.info("setNode",b),!n.class||!(n.class in i))return;const y=f+r,x={id:`edgeNote${y}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:t.interpolateToCurve(w.curve,t.curveLinear)};o.setEdge(n.id,n.class,x,y)})},A=function(s,o){const f=t.getConfig().flowchart;let i=0;s.forEach(function(e){var r;i++;const l={classes:"relation",pattern:e.relation.lineType==1?"dashed":"solid",id:`id_${e.id1}_${e.id2}_${i}`,arrowhead:e.type==="arrow_open"?"none":"normal",startLabelRight:e.relationTitle1==="none"?"":e.relationTitle1,endLabelLeft:e.relationTitle2==="none"?"":e.relationTitle2,arrowTypeStart:C(e.relation.type1),arrowTypeEnd:C(e.relation.type2),style:"fill:none",labelStyle:"",curve:t.interpolateToCurve(f==null?void 0:f.curve,t.curveLinear)};if(t.log$1.info(l,e),e.style!==void 0){const c=t.getStylesFromArray(e.style);l.style=c.style,l.labelStyle=c.labelStyle}e.text=e.title,e.text===void 0?e.style!==void 0&&(l.arrowheadStyle="fill: #333"):(l.arrowheadStyle="fill: #333",l.labelpos="c",((r=t.getConfig().flowchart)==null?void 0:r.htmlLabels)??t.getConfig().htmlLabels?(l.labelType="html",l.label='<span class="edgeLabel">'+e.text+"</span>"):(l.labelType="text",l.label=e.text.replace(t.common$1.lineBreakRegex,`
|
|
2
|
+
`),e.style===void 0&&(l.style=l.style||"stroke: #333; stroke-width: 1.5px;fill:none"),l.labelStyle=l.labelStyle.replace("color:","fill:"))),o.setEdge(e.id1,e.id2,l,i)})},q=function(s){w={...w,...s}},M=async function(s,o,f,i){t.log$1.info("Drawing class - ",o);const e=t.getConfig().flowchart??t.getConfig().class,r=t.getConfig().securityLevel;t.log$1.info("config:",e);const l=(e==null?void 0:e.nodeSpacing)??50,c=(e==null?void 0:e.rankSpacing)??50,n=new _.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:i.db.getDirection(),nodesep:l,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=i.db.getNamespaces(),d=i.db.getClasses(),g=i.db.getRelations(),p=i.db.getNotes();t.log$1.info(g),D(a,n,o,i),$(d,n,o,i),A(g,n),E(p,n,g.length+1,d);let u;r==="sandbox"&&(u=t.select("#i"+o));const b=r==="sandbox"?t.select(u.nodes()[0].contentDocument.body):t.select("body"),y=b.select(`[id="${o}"]`),x=b.select("#"+o+" g");if(await N.render(x,n,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",o),t.utils.insertTitle(y,"classTitleText",(e==null?void 0:e.titleTopMargin)??5,i.db.getDiagramTitle()),t.setupGraphViewbox$1(n,y,e==null?void 0:e.diagramPadding,e==null?void 0:e.useMaxWidth),!(e!=null&&e.htmlLabels)){const S=r==="sandbox"?u.nodes()[0].contentDocument:document,L=S.querySelectorAll('[id="'+o+'"] .edgeLabel .label');for(const m of L){const T=m.getBBox(),h=S.createElementNS("http://www.w3.org/2000/svg","rect");h.setAttribute("rx",0),h.setAttribute("ry",0),h.setAttribute("width",T.width),h.setAttribute("height",T.height),m.insertBefore(h,m.firstChild)}}};function C(s){let o;switch(s){case 0:o="aggregation";break;case 1:o="extension";break;case 2:o="composition";break;case 3:o="dependency";break;case 4:o="lollipop";break;default:o="none"}return o}const I={setConf:q,draw:M},R={parser:v.parser$1,db:v.db,renderer:I,styles:v.styles,init:s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,v.db.clear()}};exports.diagram=R;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import "./layers.mwnm89da.js";
|
|
2
|
+
var u = { paste: "粘贴", pasteAsPlaintext: "粘贴为纯文本", pasteCharts: "粘贴图表", selectAll: "全部选中", multiSelect: "添加元素到选区", moveCanvas: "移动画布", cut: "剪切", copy: "拷贝", copyAsPng: "复制为 PNG 到剪贴板", copyAsSvg: "复制为 SVG 到剪贴板", copyText: "复制文本到剪贴板", copySource: "复制源码到剪贴板", convertToCode: "转换成代码", bringForward: "上移一层", sendToBack: "置于底层", bringToFront: "置于顶层", sendBackward: "下移一层", delete: "删除", copyStyles: "拷贝样式", pasteStyles: "粘贴样式", stroke: "描边", background: "背景", fill: "填充", strokeWidth: "描边宽度", strokeStyle: "边框样式", strokeStyle_solid: "实线", strokeStyle_dashed: "虚线", strokeStyle_dotted: "点虚线", sloppiness: "线条风格", opacity: "透明度", textAlign: "文本对齐", edges: "边角", sharp: "尖锐", round: "圆润", arrowheads: "端点", arrowhead_none: "无", arrowhead_arrow: "箭头", arrowhead_bar: "条状", arrowhead_circle: "圆点", arrowhead_circle_outline: "圆点(空心)", arrowhead_triangle: "三角箭头", arrowhead_triangle_outline: "三角箭头(空心)", arrowhead_diamond: "菱形", arrowhead_diamond_outline: "菱形(空心)", fontSize: "字体大小", fontFamily: "字体", addWatermark: "添加 “使用 Excalidraw 创建” 水印", handDrawn: "手写", normal: "普通", code: "代码", small: "小", medium: "中", large: "大", veryLarge: "加大", solid: "实心", hachure: "线条", zigzag: "之字形折线", crossHatch: "交叉线条", thin: "细", bold: "粗", left: "左对齐", center: "居中", right: "右对齐", extraBold: "特粗", architect: "朴素", artist: "艺术", cartoonist: "漫画家", fileTitle: "文件名", colorPicker: "取色器", canvasColors: "画布上的", canvasBackground: "画布背景", drawingCanvas: "绘制 Canvas", layers: "图层", actions: "操作", language: "语言", liveCollaboration: "实时协作...", duplicateSelection: "复制", untitled: "无标题", name: "名字", yourName: "您的姓名", madeWithExcalidraw: "使用 Excalidraw 创建", group: "编组", ungroup: "解除编组", collaborators: "协作者", showGrid: "显示网格", addToLibrary: "添加到素材库中", removeFromLibrary: "从素材库中移除", libraryLoadingMessage: "正在加载素材库…", libraries: "浏览素材库", loadingScene: "正在加载绘图…", align: "对齐", alignTop: "顶部对齐", alignBottom: "底端对齐", alignLeft: "左对齐", alignRight: "右对齐", centerVertically: "垂直居中", centerHorizontally: "水平居中", distributeHorizontally: "水平等距分布", distributeVertically: "垂直等距分布", flipHorizontal: "水平翻转", flipVertical: "垂直翻转", viewMode: "查看模式", share: "分享", showStroke: "显示描边颜色选择器", showBackground: "显示背景颜色选择器", toggleTheme: "切换主题", personalLib: "个人素材库", excalidrawLib: "Excalidraw 素材库", decreaseFontSize: "缩小字体大小", increaseFontSize: "放大字体大小", unbindText: "取消文本绑定", bindText: "将文本绑定到容器", createContainerFromText: "将文本包围在容器中", link: { edit: "编辑链接", editEmbed: "编辑链接与嵌入", create: "新建链接", createEmbed: "创建链接与嵌入", label: "链接", labelEmbed: "链接与嵌入", empty: "未设定链接" }, lineEditor: { edit: "编辑线条", exit: "退出线条编辑" }, elementLock: { lock: "锁定", unlock: "解除锁定", lockAll: "全部锁定", unlockAll: "全部解锁" }, statusPublished: "已发布", sidebarLock: "侧边栏常驻", selectAllElementsInFrame: "选择画框中的所有元素", removeAllElementsFromFrame: "分离出画框中的所有元素", eyeDropper: "从画布上取色", textToDiagram: "文字至图表", prompt: "Prompt" }, F = { noItems: "尚未添加任何项目……", hint_emptyLibrary: "选中画布上的项目添加到此处,或从下方的公共素材库中导入。", hint_emptyPrivateLibrary: "选中画布上的项目添加到此处。" }, E = { clearReset: "重置画布", exportJSON: "导出为文件", exportImage: "导出图片...", export: "保存到...", copyToClipboard: "复制到剪贴板", save: "保存至当前文件", saveAs: "保存为", load: "打开", getShareableLink: "获取共享链接", close: "关闭", selectLanguage: "选择语言", scrollBackToContent: "滚动回到内容", zoomIn: "放大", zoomOut: "缩小", resetZoom: "重置缩放", menu: "菜单", done: "完成", edit: "编辑", undo: "撤销", redo: "重做", resetLibrary: "重置素材库", createNewRoom: "新建会议室", fullScreen: "全屏", darkMode: "深色模式", lightMode: "浅色模式", zenMode: "禅模式", objectsSnapMode: "吸附至对象", exitZenMode: "退出禅模式", cancel: "取消", clear: "清除", remove: "删除", embed: "切换嵌入", publishLibrary: "发布", submit: "提交", confirm: "确定", embeddableInteractionButton: "点击以开始交互" }, e = { clearReset: "这将会清除整个画布。您是否要继续?", couldNotCreateShareableLink: "无法创建共享链接", couldNotCreateShareableLinkTooBig: "无法创建可共享链接:画布过大", couldNotLoadInvalidFile: "无法加载无效的文件", importBackendFailed: "从后端导入失败。", cannotExportEmptyCanvas: "无法导出空白画布。", couldNotCopyToClipboard: "无法复制到剪贴板。", decryptFailed: "无法解密数据。", uploadedSecurly: "上传已被端到端加密保护,这意味着 Excalidraw 的服务器和第三方都无法读取内容。", loadSceneOverridePrompt: "加载外部绘图将取代您现有的内容。您想要继续吗?", collabStopOverridePrompt: `停止会话将覆盖您先前本地存储的绘图。 您确定吗?
|
|
3
|
+
|
|
4
|
+
(如果您想保持本地绘图,只需关闭浏览器选项卡。)`, errorAddingToLibrary: "无法将项目添加到素材库中", errorRemovingFromLibrary: "无法从素材库中移除项目", confirmAddLibrary: "这将添加 {{numShapes}} 个形状到您的素材库中。您确定吗?", imageDoesNotContainScene: "此图像似乎不包含任何画布数据。您是否在导出时启用了画布嵌入功能?", cannotRestoreFromImage: "无法从此图像文件恢复画布", invalidSceneUrl: "无法从提供的 URL 导入场景。它或者格式不正确,或者不包含有效的 Excalidraw JSON 数据。", resetLibrary: "这将会清除你的素材库。你确定要这么做吗?", removeItemsFromsLibrary: "确定要从素材库中删除 {{count}} 个项目吗?", invalidEncryptionKey: "密钥必须包含22个字符。实时协作已被禁用。", collabOfflineWarning: `无网络连接。
|
|
5
|
+
您的改动将不会被保存!` }, D = { unsupportedFileType: "不支持的文件格式。", imageInsertError: "无法插入图像。请稍后再试……", fileTooBig: "文件过大。最大允许的大小为 {{maxSize}}。", svgImageInsertError: "无法插入 SVG 图像。该 SVG 标记似乎是无效的。", failedToFetchImage: "无法获取图片。", invalidSVGString: "无效的 SVG。", cannotResolveCollabServer: "无法连接到实时协作服务器。请重新加载页面并重试。", importLibraryError: "无法加载素材库", collabSaveFailed: "无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。", collabSaveFailed_sizeExceeded: "无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。", imageToolNotSupported: "图片已被禁用。", brave_measure_text_error: { line1: "您似乎正在使用 Brave 浏览器并启用了<bold>积极阻止指纹识别</bold>的设置。", line2: "这可能会破坏绘图中的 <bold>文本元素</bold>。", line3: "我们强烈建议禁用此设置。您可以按照<link>这些步骤</link>来设置。", line4: "如果禁用此设置无法修复文本元素的显示,请在 GitHub 上提交一个 <issueLink>issue</issueLink> ,或者在 <discordLink>Discord</discordLink> 上反馈" }, libraryElementTypeError: { embeddable: "嵌入的元素不能被添加到素材库。", iframe: "不能将 IFrame 元素添加到素材库中。", image: "我们不久将支持添加图片到素材库" }, asyncPasteFailedOnRead: "无法粘贴(无法读取系统剪贴板)。", asyncPasteFailedOnParse: "无法粘贴。", copyToSystemClipboardFailed: "无法复制到剪贴板。" }, B = { selection: "选择", image: "插入图像", rectangle: "矩形", diamond: "菱形", ellipse: "椭圆", arrow: "箭头", line: "线条", freedraw: "自由书写", text: "文字", library: "素材库", lock: "绘制后保持所选的工具栏状态", penMode: "笔模式 – 避免误触", link: "为选中的形状添加/更新链接", eraser: "橡皮", frame: "画框工具", magicframe: "线框图至代码", embeddable: "嵌入网页", laser: "激光笔", hand: "抓手(平移工具)", extraTools: "更多工具", mermaidToExcalidraw: "Mermaid 至 Excalidraw", magicSettings: "AI 设置" }, C = { canvasActions: "画布动作", selectedShapeActions: "选定形状操作", shapes: "形状" }, a = { canvasPanning: "要移动画布,请按住鼠标滚轮或空格键同时拖拽鼠标,或使用抓手工具。", linearElement: "点击创建多个点 拖动创建直线", freeDraw: "点击并拖动,完成时松开", text: "提示:您也可以使用选择工具双击任意位置来添加文字", embeddable: "点击并拖动以创建嵌入网页", text_selected: "双击或按回车键以编辑文本", text_editing: "按下 Escape 或 CtrlOrCmd+ENTER 完成编辑", linearElementMulti: "点击最后一个点或按下 Esc/Enter 来完成", lockAngle: "可以按住 Shift 来约束角度", resize: `您可以按住SHIFT来限制比例大小,
|
|
6
|
+
按住ALT来调整中心大小`, resizeImage: `按住SHIFT可以自由缩放,
|
|
7
|
+
按住ALT可以从中间缩放`, rotate: "旋转时可以按住 Shift 来约束角度", lineEditor_info: "按住 CtrlOrCmd 并双击或按 CtrlOrCmd + Enter 来编辑点", lineEditor_pointSelected: "按下 Delete 移除点,CtrlOrCmd+D 以复制,拖动以移动", lineEditor_nothingSelected: `选择要编辑的点 (按住 SHIFT 选择多个),
|
|
8
|
+
或按住 Alt 并点击以添加新点`, placeImage: "点击放置图像,或者点击并拖动以手动设置图像大小", publishLibrary: "发布您自己的素材库", bindTextToElement: "按下 Enter 以添加文本", deepBoxSelect: "按住 CtrlOrCmd 以深度选择,并避免拖拽", eraserRevert: "按住 Alt 以反选被标记删除的元素", firefox_clipboard_write: "将高级配置首选项“dom.events.asyncClipboard.clipboardItem”设置为“true”可以启用此功能。要更改 Firefox 的高级配置首选项,请前往“about:config”页面。", disableSnapping: "按住 Ctrl 或 Cmd 以禁用吸附" }, r = { cannotShowPreview: "无法显示预览", canvasTooBig: "画布可能过大。", canvasTooBigTip: "提示:尝试将最远的元素移动到和其它元素更近一些。" }, A = { headingMain: "遇到异常。请尝试<button>重新加载页面</button>。", clearCanvasMessage: "如果重新加载页面无效,请尝试<button>清除画布</button>。", clearCanvasCaveat: "这会造成当前工作丢失", trackedToSentry: "标识符为{{eventId}}的错误已在我们的系统中被记录", openIssueMessage: "我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑在我们的 <button>bug 跟踪系统</button>上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。", sceneContent: "画布内容:" }, t = { desc_intro: "你可以邀请其他人到目前的画面中与你协作。", desc_privacy: "别担心,该会话使用端到端加密,无论绘制什么都将保持私密,甚至连我们的服务器也无法查看。", button_startSession: "开始会话", button_stopSession: "结束会话", desc_inProgressIntro: "实时协作会话进行中。", desc_shareLink: "分享此链接给你要协作的用户", desc_exitSession: "停止会话将中断您与房间的连接,但您依然可以在本地继续使用画布。请注意,这不会影响到其他用户,他们仍可以在他们的版本上继续协作。", shareTitle: "加入 Excalidraw 实时协作会话" }, o = { title: "错误" }, i = { disk_title: "保存到本地", disk_details: "将画布数据导出为文件,以便以后导入", disk_button: "保存为文件", link_title: "分享链接", link_details: "导出为只读链接。", link_button: "导出链接", excalidrawplus_description: "将画布保存到您的 Excalidraw+ 工作区。", excalidrawplus_button: "导出", excalidrawplus_exportError: "暂时无法导出到 Excalidraw+ ..." }, l = { blog: "浏览我们的博客", click: "单击", deepSelect: "深度选择", deepBoxSelect: "在方框内深度选择并避免拖拽", curvedArrow: "曲线箭头", curvedLine: "曲线", documentation: "文档", doubleClick: "双击", drag: "拖动", editor: "编辑器", editLineArrowPoints: "编辑线条或箭头的点", editText: "添加或编辑文本", github: "发现问题?提交反馈", howto: "帮助文档", or: "或", preventBinding: "禁用箭头吸附", tools: "工具", shortcuts: "快捷键列表", textFinish: "完成编辑 (文本编辑器)", textNewLine: "添加新行(文本编辑器)", title: "帮助", view: "视图", zoomToFit: "缩放以适应所有元素", zoomToSelection: "缩放到选区", toggleElementLock: "锁定/解锁", movePageUpDown: "上下移动页面", movePageLeftRight: "左右移动页面" }, n = { title: "清除画布" }, s = { title: "发布素材库", itemName: "项目名称", authorName: "作者名", githubUsername: "GitHub 用户名", twitterUsername: "Twitter 用户名", libraryName: "名称", libraryDesc: "简介", website: "网址", placeholder: { authorName: "您的名字或用户名", libraryName: "素材库名称", libraryDesc: "介绍您的素材库,让人们了解其用途", githubHandle: "GitHub 用户名(可选),填写后,您可以编辑已提交待审的素材库", twitterHandle: "Twitter 用户名(可选),填写后,当我们在Twitter发布推广信息时便可提及您", website: "您个人网站的或任意的链接(可选)" }, errors: { required: "必填", website: "输入一个有效的URL" }, noteDescription: "提交后,您的素材库将被包含在<link>公共素材库广场</link>以供其他人在绘图中使用。", noteGuidelines: "提交的素材库需先经人工审核。在提交之前,请先阅读<link>指南</link> 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。", noteLicense: "提交即表明您已同意素材库将遵循 <link>MIT 许可证</link>,简而言之,任何人都可以不受限制地使用它们。", noteItems: "素材库中每个项目都有各自的名称以供筛选。以下项目将被包含:", atleastOneLibItem: "请选择至少一个素材库以开始", republishWarning: "注意:部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。" }, d = { title: "素材库已提交", content: "谢谢你 {{authorName}}。您的素材库已被提交审核。请点击<link>此处</link>跟进此次提交的状态" }, c = { resetLibrary: "重置素材库", removeItemsFromLib: "从素材库中删除选中的项目" }, m = { header: "导出图片", label: { withBackground: "背景", onlySelected: "仅选中", darkMode: "深色模式", embedScene: "包含画布数据", scale: "缩放比例", padding: "内边距" }, tooltip: { embedScene: `画布数据将被保存到导出的 PNG/SVG 文件,以便恢复。
|
|
9
|
+
将会增加导出文件的大小。` }, title: { exportToPng: "导出为 PNG", exportToSvg: "导出为 SVG", copyPngToClipboard: "复制 PNG 到剪切板" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "复制到剪贴板" } }, b = { tooltip: "您的绘图采用端到端加密,其内容对于 Excalidraw 服务器是不可见的。", link: "Excalidraw 中关于端到端加密的博客" }, p = { angle: "角度", element: "元素", elements: "元素", height: "高度", scene: "画布", selected: "选中", storage: "存储", title: "详细统计信息", total: "总计", version: "版本", versionCopy: "点击复制", versionNotAvailable: "版本不可用", width: "宽度" }, g = { addedToLibrary: "添加到素材库中", copyStyles: "样式已拷贝。", copyToClipboard: "已复制到剪切板。", copyToClipboardAsPng: `已将 {{exportSelection}} 作为 PNG 复制到剪贴板
|
|
10
|
+
({{exportColorScheme}})`, fileSaved: "文件已保存。", fileSavedToFilename: "保存到 {filename}", canvas: "画布", selection: "所选项", pasteAsSingleElement: `使用 {{shortcut}} 粘贴为单个元素,
|
|
11
|
+
或粘贴到现有的文本编辑器里`, unableToEmbed: "目前不允许嵌入此网址。请在 GitHub 上提 issue 请求将此网址加入白名单", unrecognizedLinkFormat: "您嵌入的链接不符合格式要求。请尝试粘贴源网站提供的“嵌入 (embed)”字符串" }, h = { transparent: "透明", black: "黑", white: "白", red: "红", pink: "粉红", grape: "紫红", violet: "蓝紫", gray: "灰", blue: "蓝", cyan: "青", teal: "蓝绿", green: "绿", yellow: "黄", orange: "橙", bronze: "古铜" }, S = { app: { center_heading: "您的所有数据都储存在浏览器本地。", center_heading_plus: "是否前往 Excalidraw+ ?", menuHint: "导出、首选项、语言……" }, defaults: { menuHint: "导出、首选项……", center_heading: "图,化繁为简。", toolbarHint: "选择工具并开始绘图!", helpHint: "快捷键和帮助" } }, y = { mostUsedCustomColors: "常用自定义颜色", colors: "颜色", shades: "色调明暗", hexCode: "十六进制值", noShades: "此颜色没有可用的明暗变化" }, w = { action: { exportToImage: { title: "导出为图片", button: "导出为图片", description: "将画布数据导出为图片,以便以后导入。" }, saveToDisk: { title: "保存到本地", button: "保存到本地", description: "将画布数据导出为文件,以便以后导入。" }, excalidrawPlus: { title: "Excalidraw+", button: "导出到 Excalidraw+", description: "将画布保存到您的 Excalidraw+ 工作区。" } }, modal: { loadFromFile: { title: "从文件加载", button: "从文件加载", description: "从文件加载将<bold>替换您现有的内容</bold>。<br></br>您可以先使用下列方式备份您的绘图。" }, shareableLink: { title: "从链接加载", button: "替换我的内容", description: "加载外部绘图将<bold>替换您现有的内容</bold>。<br></br>您可以先使用下列方式备份您的绘图。" } } }, k = { title: "Mermaid 至 Excalidraw", button: "插入", description: "目前仅支持<flowchartLink>流程图</flowchartLink>、<sequenceLink>序列图</sequenceLink>和<classLink>类图</classLink>。其他类型在 Excalidraw 中将以图像呈现。", syntax: "Mermaid 语法", preview: "预览" }, x = { labels: u, library: F, buttons: E, alerts: e, errors: D, toolBar: B, headings: C, hints: a, canvasError: r, errorSplash: A, roomDialog: t, errorDialog: o, exportDialog: i, helpDialog: l, clearCanvasDialog: n, publishDialog: s, publishSuccessDialog: d, confirmDialog: c, imageExportDialog: m, encrypted: b, stats: p, toast: g, colors: h, welcomeScreen: S, colorPicker: y, overwriteConfirm: w, mermaid: k };
|
|
12
|
+
export {
|
|
13
|
+
e as alerts,
|
|
14
|
+
E as buttons,
|
|
15
|
+
r as canvasError,
|
|
16
|
+
n as clearCanvasDialog,
|
|
17
|
+
y as colorPicker,
|
|
18
|
+
h as colors,
|
|
19
|
+
c as confirmDialog,
|
|
20
|
+
x as default,
|
|
21
|
+
b as encrypted,
|
|
22
|
+
o as errorDialog,
|
|
23
|
+
A as errorSplash,
|
|
24
|
+
D as errors,
|
|
25
|
+
i as exportDialog,
|
|
26
|
+
C as headings,
|
|
27
|
+
l as helpDialog,
|
|
28
|
+
a as hints,
|
|
29
|
+
m as imageExportDialog,
|
|
30
|
+
u as labels,
|
|
31
|
+
F as library,
|
|
32
|
+
k as mermaid,
|
|
33
|
+
w as overwriteConfirm,
|
|
34
|
+
s as publishDialog,
|
|
35
|
+
d as publishSuccessDialog,
|
|
36
|
+
t as roomDialog,
|
|
37
|
+
p as stats,
|
|
38
|
+
g as toast,
|
|
39
|
+
B as toolBar,
|
|
40
|
+
S as welcomeScreen
|
|
41
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./layers.DPkkvYnI.js");require("./layers.B7pMHVvI.js");const tt=require("./layers.DZVdzwBS.js"),nt=require("./layers.B19hGmey.js"),st=require("./layers.9pNaFvaX.js"),R=require("./layers.DOrgOHBr.js");function rt(e,y){return y<e?-1:y>e?1:y>=e?0:NaN}function at(e){return e}function lt(){var e=at,y=rt,$=null,g=R.constant(0),d=R.constant(u.tau),E=R.constant(0);function f(a){var l,m=(a=st.array(a)).length,v,I,D=0,_=new Array(m),b=new Array(m),o=+g.apply(this,arguments),w=Math.min(u.tau,Math.max(-u.tau,d.apply(this,arguments)-o)),P,T=Math.min(Math.abs(w)/m,E.apply(this,arguments)),S=T*(w<0?-1:1),t;for(l=0;l<m;++l)(t=b[_[l]=l]=+e(a[l],l,a))>0&&(D+=t);for(y!=null?_.sort(function(i,n){return y(b[i],b[n])}):$!=null&&_.sort(function(i,n){return $(a[i],a[n])}),l=0,I=D?(w-m*S)/D:0;l<m;++l,o=P)v=_[l],t=b[v],P=o+(t>0?t*I:0)+S,b[v]={data:a[v],index:l,value:t,startAngle:o,endAngle:P,padAngle:T};return b}return f.value=function(a){return arguments.length?(e=typeof a=="function"?a:R.constant(+a),f):e},f.sortValues=function(a){return arguments.length?(y=a,$=null,f):y},f.sort=function(a){return arguments.length?($=a,y=null,f):$},f.startAngle=function(a){return arguments.length?(g=typeof a=="function"?a:R.constant(+a),f):g},f.endAngle=function(a){return arguments.length?(d=typeof a=="function"?a:R.constant(+a),f):d},f.padAngle=function(a){return arguments.length?(E=typeof a=="function"?a:R.constant(+a),f):E},f}var K=(function(){var e=function(S,t,i,n){for(i=i||{},n=S.length;n--;i[S[n]]=t);return i},y=[1,3],$=[1,4],g=[1,5],d=[1,6],E=[1,10,12,14,16,18,19,20,21,22],f=[2,4],a=[1,5,10,12,14,16,18,19,20,21,22],l=[20,21,22],m=[2,7],v=[1,12],I=[1,13],D=[1,14],_=[1,15],b=[1,16],o=[1,17],w={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(t,i,n,r,c,s,V){var x=s.length-1;switch(c){case 3:r.setShowData(!0);break;case 6:this.$=s[x-1];break;case 8:r.addSection(s[x-1],r.cleanupValue(s[x]));break;case 9:this.$=s[x].trim(),r.setDiagramTitle(this.$);break;case 10:this.$=s[x].trim(),r.setAccTitle(this.$);break;case 11:case 12:this.$=s[x].trim(),r.setAccDescription(this.$);break;case 13:r.addSection(s[x].substr(8)),this.$=s[x].substr(8);break}},table:[{3:1,4:2,5:y,20:$,21:g,22:d},{1:[3]},{3:7,4:2,5:y,20:$,21:g,22:d},e(E,f,{6:8,7:[1,9]}),e(a,[2,14]),e(a,[2,15]),e(a,[2,16]),{1:[2,1]},e(l,m,{8:10,9:11,1:[2,2],10:v,12:I,14:D,16:_,18:b,19:o}),e(E,f,{6:18}),e(E,[2,5]),{4:19,20:$,21:g,22:d},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},e(l,[2,12]),e(l,[2,13]),e(l,m,{8:10,9:11,1:[2,3],10:v,12:I,14:D,16:_,18:b,19:o}),e(E,[2,6]),e(l,[2,8]),e(l,[2,9]),e(l,[2,10]),e(l,[2,11])],defaultActions:{7:[2,1]},parseError:function(t,i){if(i.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=i,n}},parse:function(t){var i=this,n=[0],r=[],c=[null],s=[],V=this.table,x="",p=0,N=0,z=2,j=1,B=s.slice.call(arguments,1),h=Object.create(this.lexer),L={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(L.yy[Y]=this.yy[Y]);h.setInput(t,L.yy),L.yy.lexer=h,L.yy.parser=this,typeof h.yylloc>"u"&&(h.yylloc={});var Z=h.yylloc;s.push(Z);var et=h.options&&h.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function it(){var O;return O=r.pop()||h.lex()||j,typeof O!="number"&&(O instanceof Array&&(r=O,O=r.pop()),O=i.symbols_[O]||O),O}for(var k,F,A,H,M={},W,C,X,G;;){if(F=n[n.length-1],this.defaultActions[F]?A=this.defaultActions[F]:((k===null||typeof k>"u")&&(k=it()),A=V[F]&&V[F][k]),typeof A>"u"||!A.length||!A[0]){var J="";G=[];for(W in V[F])this.terminals_[W]&&W>z&&G.push("'"+this.terminals_[W]+"'");h.showPosition?J="Parse error on line "+(p+1)+`:
|
|
2
|
+
`+h.showPosition()+`
|
|
3
|
+
Expecting `+G.join(", ")+", got '"+(this.terminals_[k]||k)+"'":J="Parse error on line "+(p+1)+": Unexpected "+(k==j?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(J,{text:h.match,token:this.terminals_[k]||k,line:h.yylineno,loc:Z,expected:G})}if(A[0]instanceof Array&&A.length>1)throw new Error("Parse Error: multiple actions possible at state: "+F+", token: "+k);switch(A[0]){case 1:n.push(k),c.push(h.yytext),s.push(h.yylloc),n.push(A[1]),k=null,N=h.yyleng,x=h.yytext,p=h.yylineno,Z=h.yylloc;break;case 2:if(C=this.productions_[A[1]][1],M.$=c[c.length-C],M._$={first_line:s[s.length-(C||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(C||1)].first_column,last_column:s[s.length-1].last_column},et&&(M._$.range=[s[s.length-(C||1)].range[0],s[s.length-1].range[1]]),H=this.performAction.apply(M,[x,N,p,L.yy,A[1],c,s].concat(B)),typeof H<"u")return H;C&&(n=n.slice(0,-1*C*2),c=c.slice(0,-1*C),s=s.slice(0,-1*C)),n.push(this.productions_[A[1]][0]),c.push(M.$),s.push(M._$),X=V[n[n.length-2]][n[n.length-1]],n.push(X);break;case 3:return!0}}return!0}},P=(function(){var S={EOF:1,parseError:function(i,n){if(this.yy.parser)this.yy.parser.parseError(i,n);else throw new Error(i)},setInput:function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var i=t.match(/(?:\r\n?|\n).*/g);return i?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var i=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var c=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[c[0],c[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
|
|
5
|
+
`+i+"^"},test_match:function(t,i){var n,r,c;if(this.options.backtrack_lexer&&(c={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(c.yylloc.range=this.yylloc.range.slice(0))),r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in c)this[s]=c[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,i,n,r;this._more||(this.yytext="",this.match="");for(var c=this._currentRules(),s=0;s<c.length;s++)if(n=this._input.match(this.rules[c[s]]),n&&(!i||n[0].length>i[0].length)){if(i=n,r=s,this.options.backtrack_lexer){if(t=this.test_match(n,c[s]),t!==!1)return t;if(this._backtrack){i=!1;continue}else return!1}else if(!this.options.flex)break}return i?(t=this.test_match(i,c[r]),t!==!1?t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
|
|
6
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var i=this.next();return i||this.lex()},begin:function(i){this.conditionStack.push(i)},popState:function(){var i=this.conditionStack.length-1;return i>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(i){return i=this.conditionStack.length-1-Math.abs(i||0),i>=0?this.conditionStack[i]:"INITIAL"},pushState:function(i){this.begin(i)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(i,n,r,c){switch(r){case 0:break;case 1:break;case 2:return 20;case 3:break;case 4:break;case 5:return this.begin("title"),12;case 6:return this.popState(),"title_value";case 7:return this.begin("acc_title"),14;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),16;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 15:this.popState();break;case 16:return"txt";case 17:return 5;case 18:return 7;case 19:return"value";case 20:return 22}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[6],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,7,9,11,14,17,18,19,20],inclusive:!0}}};return S})();w.lexer=P;function T(){this.yy={}}return T.prototype=w,w.Parser=T,new T})();K.parser=K;const ct=K,ot=u.defaultConfig$2.pie,q={sections:{},showData:!1};let U=q.sections,Q=q.showData;const ht=structuredClone(ot),ut=()=>structuredClone(ht),yt=()=>{U=structuredClone(q.sections),Q=q.showData,u.clear()},ft=(e,y)=>{e=u.sanitizeText$2(e,u.getConfig()),U[e]===void 0&&(U[e]=y,u.log$1.debug(`added new section: ${e}, with value: ${y}`))},pt=()=>U,gt=e=>(e.substring(0,1)===":"&&(e=e.substring(1).trim()),Number(e.trim())),dt=e=>{Q=e},mt=()=>Q,_t={getConfig:ut,clear:yt,setDiagramTitle:u.setDiagramTitle,getDiagramTitle:u.getDiagramTitle,setAccTitle:u.setAccTitle,getAccTitle:u.getAccTitle,setAccDescription:u.setAccDescription,getAccDescription:u.getAccDescription,addSection:ft,getSections:pt,cleanupValue:gt,setShowData:dt,getShowData:mt},xt=e=>`
|
|
7
|
+
.pieCircle{
|
|
8
|
+
stroke: ${e.pieStrokeColor};
|
|
9
|
+
stroke-width : ${e.pieStrokeWidth};
|
|
10
|
+
opacity : ${e.pieOpacity};
|
|
11
|
+
}
|
|
12
|
+
.pieOuterCircle{
|
|
13
|
+
stroke: ${e.pieOuterStrokeColor};
|
|
14
|
+
stroke-width: ${e.pieOuterStrokeWidth};
|
|
15
|
+
fill: none;
|
|
16
|
+
}
|
|
17
|
+
.pieTitleText {
|
|
18
|
+
text-anchor: middle;
|
|
19
|
+
font-size: ${e.pieTitleTextSize};
|
|
20
|
+
fill: ${e.pieTitleTextColor};
|
|
21
|
+
font-family: ${e.fontFamily};
|
|
22
|
+
}
|
|
23
|
+
.slice {
|
|
24
|
+
font-family: ${e.fontFamily};
|
|
25
|
+
fill: ${e.pieSectionTextColor};
|
|
26
|
+
font-size:${e.pieSectionTextSize};
|
|
27
|
+
// fill: white;
|
|
28
|
+
}
|
|
29
|
+
.legend text {
|
|
30
|
+
fill: ${e.pieLegendTextColor};
|
|
31
|
+
font-family: ${e.fontFamily};
|
|
32
|
+
font-size: ${e.pieLegendTextSize};
|
|
33
|
+
}
|
|
34
|
+
`,kt=xt,vt=e=>{const y=Object.entries(e).map(g=>({label:g[0],value:g[1]})).sort((g,d)=>d.value-g.value);return lt().value(g=>g.value)(y)},bt=(e,y,$,g)=>{u.log$1.debug(`rendering pie chart
|
|
35
|
+
`+e);const d=g.db,E=u.getConfig(),f=u.cleanAndMerge(d.getConfig(),E.pie),a=40,l=18,m=4,v=450,I=v,D=u.selectSvgElement(y),_=D.append("g"),b=d.getSections();_.attr("transform","translate("+I/2+","+v/2+")");const{themeVariables:o}=E;let[w]=u.parseFontSize(o.pieOuterStrokeWidth);w??(w=2);const P=f.textPosition,T=Math.min(I,v)/2-a,S=tt.arc().innerRadius(0).outerRadius(T),t=tt.arc().innerRadius(T*P).outerRadius(T*P);_.append("circle").attr("cx",0).attr("cy",0).attr("r",T+w/2).attr("class","pieOuterCircle");const i=vt(b),n=[o.pie1,o.pie2,o.pie3,o.pie4,o.pie5,o.pie6,o.pie7,o.pie8,o.pie9,o.pie10,o.pie11,o.pie12],r=nt.ordinal(n);_.selectAll("mySlices").data(i).enter().append("path").attr("d",S).attr("fill",p=>r(p.data.label)).attr("class","pieCircle");let c=0;Object.keys(b).forEach(p=>{c+=b[p]}),_.selectAll("mySlices").data(i).enter().append("text").text(p=>(p.data.value/c*100).toFixed(0)+"%").attr("transform",p=>"translate("+t.centroid(p)+")").style("text-anchor","middle").attr("class","slice"),_.append("text").text(d.getDiagramTitle()).attr("x",0).attr("y",-400/2).attr("class","pieTitleText");const s=_.selectAll(".legend").data(r.domain()).enter().append("g").attr("class","legend").attr("transform",(p,N)=>{const z=l+m,j=z*r.domain().length/2,B=12*l,h=N*z-j;return"translate("+B+","+h+")"});s.append("rect").attr("width",l).attr("height",l).style("fill",r).style("stroke",r),s.data(i).append("text").attr("x",l+m).attr("y",l-m).text(p=>{const{label:N,value:z}=p.data;return d.getShowData()?`${N} [${z}]`:N});const V=Math.max(...s.selectAll("text").nodes().map(p=>(p==null?void 0:p.getBoundingClientRect().width)??0)),x=I+a+l+m+V;D.attr("viewBox",`0 0 ${x} ${v}`),u.configureSvgSize(D,v,x,f.useMaxWidth)},St={draw:bt},At={parser:ct,db:_t,renderer:St,styles:kt};exports.diagram=At;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import "./layers.mwnm89da.js";
|
|
2
|
+
var e = { paste: "Colar", pasteAsPlaintext: "Colar como texto simples", pasteCharts: "Colar gráficos", selectAll: "Selecionar tudo", multiSelect: "Adicionar elemento à seleção", moveCanvas: "Mover tela", cut: "Cortar", copy: "Copiar", copyAsPng: "Copiar para a área de transferência como PNG", copyAsSvg: "Copiar para a área de transferência como SVG", copyText: "Copiar para Área de Transferência como texto", copySource: "", convertToCode: "", bringForward: "Trazer para o primeiro plano", sendToBack: "Enviar para o plano de fundo", bringToFront: "Trazer para o primeiro plano", sendBackward: "Enviar para trás", delete: "Apagar", copyStyles: "Copiar os estilos", pasteStyles: "Colar os estilos", stroke: "Contornos", background: "Fundo", fill: "Preenchimento", strokeWidth: "Espessura do traço", strokeStyle: "Estilo de traço", strokeStyle_solid: "Sólido", strokeStyle_dashed: "Tracejado", strokeStyle_dotted: "Pontilhado", sloppiness: "Desleixo", opacity: "Opacidade", textAlign: "Alinhamento do texto", edges: "Arestas", sharp: "Aguçado", round: "Redondo", arrowheads: "Pontas", arrowhead_none: "Nenhuma", arrowhead_arrow: "Seta", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Triângulo", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Tamanho da fonte", fontFamily: "Família da fontes", addWatermark: 'Adicionar "Feito com Excalidraw"', handDrawn: "Manuscrito", normal: "Normal", code: "Código", small: "Pequeno", medium: "Médio", large: "Grande", veryLarge: "Muito grande", solid: "Sólido", hachure: "Eclosão", zigzag: "ziguezague", crossHatch: "Sombreado", thin: "Fino", bold: "Espesso", left: "Esquerda", center: "Centralizar", right: "Direita", extraBold: "Muito espesso", architect: "Arquitecto", artist: "Artista", cartoonist: "Caricaturista", fileTitle: "Nome do ficheiro", colorPicker: "Seletor de cores", canvasColors: "Usado na tela", canvasBackground: "Fundo da área de desenho", drawingCanvas: "Área de desenho", layers: "Camadas", actions: "Ações", language: "Idioma", liveCollaboration: "Colaboração ao vivo...", duplicateSelection: "Duplicar", untitled: "Sem título", name: "Nome", yourName: "O seu nome", madeWithExcalidraw: "Feito com Excalidraw", group: "Agrupar seleção", ungroup: "Desagrupar seleção", collaborators: "Colaboradores", showGrid: "Mostrar grelha", addToLibrary: "Adicionar à biblioteca", removeFromLibrary: "Remover da biblioteca", libraryLoadingMessage: "A carregar a biblioteca…", libraries: "Procurar bibliotecas", loadingScene: "A carregar a cena…", align: "Alinhamento", alignTop: "Alinhar ao topo", alignBottom: "Alinhar ao fundo", alignLeft: "Alinhar à esquerda", alignRight: "Alinhar à direita", centerVertically: "Centrar verticalmente", centerHorizontally: "Centrar horizontalmente", distributeHorizontally: "Distribuir horizontalmente", distributeVertically: "Distribuir verticalmente", flipHorizontal: "Inverter horizontalmente", flipVertical: "Inverter verticalmente", viewMode: "Modo de visualização", share: "Partilhar", showStroke: "Mostrar seletor de cores do traço", showBackground: "Mostrar seletor de cores do fundo", toggleTheme: "Alternar tema", personalLib: "Biblioteca pessoal", excalidrawLib: "Biblioteca do Excalidraw", decreaseFontSize: "Reduzir o tamanho do tipo de letra", increaseFontSize: "Aumentar o tamanho do tipo de letra", unbindText: "Desvincular texto", bindText: "Ligar texto ao recipiente", createContainerFromText: "Envolver texto num recipiente", link: { edit: "Editar ligação", editEmbed: "", create: "Criar ligação", createEmbed: "", label: "Ligação", labelEmbed: "", empty: "" }, lineEditor: { edit: "Editar linha", exit: "Sair do editor de linha" }, elementLock: { lock: "Bloquear", unlock: "Desbloquear", lockAll: "Bloquear todos", unlockAll: "Desbloquear todos" }, statusPublished: "Publicado", sidebarLock: "Manter a barra lateral aberta", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, a = { noItems: "Ainda não foram adicionados nenhuns itens...", hint_emptyLibrary: "Seleccione um item na tela para adicioná-lo aqui, ou então instale uma biblioteca do repositório público abaixo.", hint_emptyPrivateLibrary: "Seleccione um item na tela para adicioná-lo aqui." }, o = { clearReset: "Limpar a área de desenho e redefinir a cor de fundo", exportJSON: "Exportar para ficheiro", exportImage: "Exportar imagem...", export: "Guardar para...", copyToClipboard: "Copiar para o clipboard", save: "Guardar no ficheiro atual", saveAs: "Guardar como", load: "Abrir", getShareableLink: "Obter um link de partilha", close: "Fechar", selectLanguage: "Selecionar idioma", scrollBackToContent: "Voltar ao conteúdo", zoomIn: "Aumentar zoom", zoomOut: "Diminuir zoom", resetZoom: "Redefinir zoom", menu: "Menu", done: "Concluído", edit: "Editar", undo: "Desfazer", redo: "Refazer", resetLibrary: "Repor a biblioteca", createNewRoom: "Criar nova sala", fullScreen: "Ecrã inteiro", darkMode: "Modo escuro", lightMode: "Modo claro", zenMode: "Modo zen", objectsSnapMode: "", exitZenMode: "Sair do modo zen", cancel: "Cancelar", clear: "Limpar", remove: "Remover", embed: "", publishLibrary: "Publicar", submit: "Enviar", confirm: "Confirmar", embeddableInteractionButton: "" }, r = { clearReset: "Isto irá limpar toda a área de desenho. Tem a certeza?", couldNotCreateShareableLink: "Não foi possível criar um link partilhável.", couldNotCreateShareableLinkTooBig: "Não foi possível criar um link partilhável: a cena é muito grande", couldNotLoadInvalidFile: "Não foi possível carregar o ficheiro inválido", importBackendFailed: "A importação do servidor falhou.", cannotExportEmptyCanvas: "Não é possível exportar uma área de desenho vazia.", couldNotCopyToClipboard: "Não foi possível copiar para a área de transferência.", decryptFailed: "Não foi possível desencriptar os dados.", uploadedSecurly: "O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.", loadSceneOverridePrompt: "Se carregar um desenho externo substituirá o conteúdo existente. Quer continuar?", collabStopOverridePrompt: `Ao interromper a sessão irá substituir o último desenho guardado. Tem a certeza?
|
|
3
|
+
|
|
4
|
+
(Caso queira manter o último desenho, simplesmente feche a janela do navegador.)`, errorAddingToLibrary: "Não foi possível adicionar o item à biblioteca", errorRemovingFromLibrary: "Não foi possível remover o item da biblioteca", confirmAddLibrary: "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem a certeza?", imageDoesNotContainScene: "Esta imagem parece não conter dados de cenas. Ativou a incorporação da cena durante a exportação?", cannotRestoreFromImage: "Não foi possível restaurar a cena deste ficheiro de imagem", invalidSceneUrl: "Não foi possível importar a cena a partir do URL fornecido. Ou está mal formado ou não contém dados JSON do Excalidraw válidos.", resetLibrary: "Isto irá limpar a sua biblioteca. Tem a certeza?", removeItemsFromsLibrary: "Apagar {{count}} item(ns) da biblioteca?", invalidEncryptionKey: "Chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desativada.", collabOfflineWarning: `Sem ligação à internet disponível.
|
|
5
|
+
As suas alterações não serão salvas!` }, i = { unsupportedFileType: "Tipo de ficheiro não suportado.", imageInsertError: "Não foi possível inserir a imagem, tente novamente mais tarde...", fileTooBig: "O ficheiro é muito grande. O tamanho máximo permitido é {{maxSize}}.", svgImageInsertError: "Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.", failedToFetchImage: "", invalidSVGString: "SVG inválido.", cannotResolveCollabServer: "Não foi possível fazer a ligação ao servidor colaborativo. Por favor, volte a carregar a página e tente novamente.", importLibraryError: "Não foi possível carregar a biblioteca", collabSaveFailed: "Não foi possível guardar na base de dados de backend. Se os problemas persistirem, guarde o ficheiro localmente para garantir que não perde o seu trabalho.", collabSaveFailed_sizeExceeded: "Não foi possível guardar na base de dados de backend, o ecrã parece estar muito grande. Deve guardar o ficheiro localmente para garantir que não perde o seu trabalho.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, t = { selection: "Seleção", image: "Inserir imagem", rectangle: "Retângulo", diamond: "Losango", ellipse: "Elipse", arrow: "Flecha", line: "Linha", freedraw: "Desenhar", text: "Texto", library: "Biblioteca", lock: "Manter a ferramenta selecionada ativa após desenhar", penMode: "Modo caneta - impedir toque", link: "Acrescentar/ Adicionar ligação para uma forma seleccionada", eraser: "Borracha", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Mão (ferramenta de movimento da tela)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, n = { canvasActions: "Ações da área de desenho", selectedShapeActions: "Ações das formas selecionadas", shapes: "Formas" }, s = { canvasPanning: "Para mover a tela, carregue na roda do rato ou na barra de espaço enquanto arrasta, ou use a ferramenta da mão", linearElement: "Clique para iniciar vários pontos, arraste para uma única linha", freeDraw: "Clique e arraste, large quando terminar", text: "Dica: também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção", embeddable: "", text_selected: "Clique duas vezes ou pressione a tecla Enter para editar o texto", text_editing: "Pressione a tecla Escape ou CtrlOrCmd+ENTER para terminar a edição", linearElementMulti: "Clique no último ponto ou pressione Escape ou Enter para terminar", lockAngle: "Pode restringir o ângulo mantendo premida a tecla SHIFT", resize: `Pode restringir as proporções mantendo a tecla SHIFT premida enquanto redimensiona,
|
|
6
|
+
mantenha a tecla ALT premida para redimensionar a partir do centro`, resizeImage: `Pode redimensionar livremente mantendo pressionada a tecla SHIFT,
|
|
7
|
+
mantenha pressionada a tecla ALT para redimensionar do centro`, rotate: "Pode restringir os ângulos mantendo a tecla SHIFT premida enquanto roda", lineEditor_info: "Pressione CtrlOrCmd e faça um duplo-clique ou pressione CtrlOrCmd + Enter para editar pontos", lineEditor_pointSelected: "Carregue na tecla Delete para remover o(s) ponto(s), CtrlOuCmd+D para duplicar, ou arraste para mover", lineEditor_nothingSelected: `Seleccione um ponto para editar (carregue em SHIFT para seleccionar vários),
|
|
8
|
+
ou carregue em Alt e clique para acrescentar novos pontos`, placeImage: "Clique para colocar a imagem ou clique e arraste para definir o seu tamanho manualmente", publishLibrary: "Publique a sua própria biblioteca", bindTextToElement: "Carregue Enter para acrescentar texto", deepBoxSelect: "Mantenha a tecla CtrlOrCmd carregada para selecção profunda, impedindo o arrastamento", eraserRevert: "Carregue também em Alt para reverter os elementos marcados para serem apagados", firefox_clipboard_write: 'Esta função pode provavelmente ser ativada definindo a opção "dom.events.asyncClipboard.clipboardItem" como "true". Para alterar os sinalizadores do navegador no Firefox, visite a página "about:config".', disableSnapping: "" }, l = { cannotShowPreview: "Não é possível mostrar uma pré-visualização", canvasTooBig: "A área de desenho pode ser muito grande.", canvasTooBigTip: "Dica: tente aproximar um pouco os elementos mais distantes." }, d = { headingMain: "Foi encontrado um erro. Tente <button>recarregar a página.</button>", clearCanvasMessage: "Se a recarga não funcionar, tente <button>a limpar a área de desenho.</button>", clearCanvasCaveat: " Isso resultará em perda de trabalho ", trackedToSentry: "O erro com o identificador {{eventId}} foi rastreado no nosso sistema.", openIssueMessage: "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso <button>rastreador de bugs.</button> Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.", sceneContent: "Conteúdo da cena:" }, c = { desc_intro: "Pode convidar pessoas para colaborarem na sua cena atual.", desc_privacy: "Não se preocupe, a sessão usa criptografia de ponta-a-ponta, por isso o que desenhar permanecerá privado. Nem mesmo o nosso servidor poderá ver o que cria.", button_startSession: "Iniciar sessão", button_stopSession: "Parar sessão", desc_inProgressIntro: "A sessão de colaboração ao vivo está agora em andamento.", desc_shareLink: "Partilhe este link com qualquer pessoa com quem queira colaborar:", desc_exitSession: "Interrompendo a sessão irá desconectar-se da sala, mas poderá continuar a trabalhar com a cena localmente. Note que isso não afetará outras pessoas e elas ainda poderão colaborar nas versões deles.", shareTitle: "Participe numa sessão de colaboração ao vivo no Excalidraw" }, m = { title: "Erro" }, p = { disk_title: "Guardar no disco", disk_details: "Exportar os dados da cena para um ficheiro do qual poderá importar mais tarde.", disk_button: "Guardar num ficheiro", link_title: "Link partilhável", link_details: "Exportar como um link de apenas leitura.", link_button: "Exportar para link", excalidrawplus_description: "Guardar a cena no seu espaço de trabalho Excalidraw+", excalidrawplus_button: "Exportar", excalidrawplus_exportError: "Não foi possível exportar para o Excalidraw+ neste momento..." }, x = { blog: "Leia o nosso blogue", click: "clicar", deepSelect: "Selecção profunda", deepBoxSelect: "Selecção profunda dentro da caixa, impedindo que seja arrastada", curvedArrow: "Seta curva", curvedLine: "Linha curva", documentation: "Documentação", doubleClick: "clique duplo", drag: "arrastar", editor: "Editor", editLineArrowPoints: "Editar pontos de linha/seta", editText: "Editar texto / adicionar etiqueta", github: "Encontrou algum problema? Informe-nos", howto: "Siga os nossos guias", or: "ou", preventBinding: "Prevenir fixação de seta", tools: "Ferramentas", shortcuts: "Atalhos de teclado", textFinish: "Finalizar edição (editor texto)", textNewLine: "Adicionar nova linha (editor de texto)", title: "Ajuda", view: "Visualizar", zoomToFit: "Ajustar para todos os elementos caberem", zoomToSelection: "Ampliar a seleção", toggleElementLock: "Trancar/destrancar selecção", movePageUpDown: "Mover página para cima / baixo", movePageLeftRight: "Mover página para esquerda / direita" }, u = { title: "Apagar tela" }, E = { title: "Publicar biblioteca", itemName: "Nome do item", authorName: "Nome do autor", githubUsername: "Nome de utilizador do GitHub", twitterUsername: "Nome de utilizador no Twitter", libraryName: "Nome da biblioteca", libraryDesc: "Descrição da biblioteca", website: "Página web", placeholder: { authorName: "Introduza o seu nome ou nome de utilizador", libraryName: "Nome da sua biblioteca", libraryDesc: "Descrição da sua biblioteca para ajudar as pessoas a entender a utilização dela", githubHandle: "Identificador do GitHub (opcional), para que possa editar a biblioteca depois desta ser enviada para revisão", twitterHandle: "Nome do Twitter (opcional), para que saibamos quem merece os créditos na promoção via Twitter", website: "Ligação para a sua página pessoal ou qualquer outra (opcional)" }, errors: { required: "Obrigatório", website: "Introduza um URL válido" }, noteDescription: "Envie a sua biblioteca para ser incluída no <link>repositório de bibliotecas públicas</link>para outras pessoas a poderem usar nos seus próprios desenhos.", noteGuidelines: "A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia <link>orientações</link> antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária.", noteLicense: "Ao enviar, concorda que a biblioteca será publicada sob a <link>Licença MIT, </link>o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições.", noteItems: "Cada item da biblioteca deve ter o seu próprio nome para que este seja pesquisável com filtros. Os seguintes itens da biblioteca serão incluídos:", atleastOneLibItem: "Por favor, seleccione pelo menos um item da biblioteca para começar", republishWarning: "Nota: alguns dos itens seleccionados estão marcados como já publicados/enviados. Só deve reenviar itens ao actualizar uma biblioteca existente ou submissão." }, b = { title: "Biblioteca enviada", content: "Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o status<link>aqui</link>" }, g = { resetLibrary: "Repor a biblioteca", removeItemsFromLib: "Remover os itens seleccionados da biblioteca" }, v = { header: "Exportar imagem", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "Cena embutida", scale: "", padding: "Espaçamento" }, tooltip: { embedScene: "" }, title: { exportToPng: "Exportar em PNG", exportToSvg: "Exportar em SVG", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "" } }, h = { tooltip: "Os seus desenhos são encriptados de ponta-a-ponta, por isso os servidores do Excalidraw nunca os verão.", link: "Publicação de blogue na encriptação ponta-a-ponta no Excalidraw" }, f = { angle: "Ângulo", element: "Elemento", elements: "Elementos", height: "Altura", scene: "Cena", selected: "Selecionado", storage: "Armazenamento", title: "Estatísticas para nerds", total: "Total", version: "Versão", versionCopy: "Clique para copiar", versionNotAvailable: "Versão não disponível", width: "Largura" }, S = { addedToLibrary: "Acrescentado à biblioteca", copyStyles: "Estilos copiados.", copyToClipboard: "Copiado para a área de transferência.", copyToClipboardAsPng: `{{exportSelection}} copiado para a área de transferência como PNG
|
|
9
|
+
({{exportColorScheme}})`, fileSaved: "Ficheiro guardado.", fileSavedToFilename: "Guardado como {filename}", canvas: "área de desenho", selection: "seleção", pasteAsSingleElement: `Usar {{shortcut}} para colar como um único elemento,
|
|
10
|
+
ou colar num editor de texto existente`, unableToEmbed: "", unrecognizedLinkFormat: "" }, A = { transparent: "Transparente", black: "Preto", white: "Branco", red: "Vermelho", pink: "Rosa", grape: "Uva", violet: "Violeta", gray: "Cinza", blue: "Azul", cyan: "", teal: "", green: "Verde", yellow: "Amarelo", orange: "Laranja", bronze: "Bronze" }, C = { app: { center_heading: "Todos os dados são guardados no seu navegador local.", center_heading_plus: "Queria antes ir para o Excalidraw+?", menuHint: "Exportar, preferências, idiomas..." }, defaults: { menuHint: "Exportar, preferências e outros...", center_heading: "Diagramas. Feito. Simples.", toolbarHint: "Escolha uma ferramenta e comece a desenhar!", helpHint: "Atalhos e ajuda" } }, F = { mostUsedCustomColors: "", colors: "Cores", shades: "Tons", hexCode: "", noShades: "" }, y = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "Guardar no disco", button: "Guardar no disco", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "Carregar a partir de ficheiro", button: "Carregar a partir de ficheiro", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, T = { title: "", button: "", description: "", syntax: "", preview: "" }, k = { labels: e, library: a, buttons: o, alerts: r, errors: i, toolBar: t, headings: n, hints: s, canvasError: l, errorSplash: d, roomDialog: c, errorDialog: m, exportDialog: p, helpDialog: x, clearCanvasDialog: u, publishDialog: E, publishSuccessDialog: b, confirmDialog: g, imageExportDialog: v, encrypted: h, stats: f, toast: S, colors: A, welcomeScreen: C, colorPicker: F, overwriteConfirm: y, mermaid: T };
|
|
11
|
+
export {
|
|
12
|
+
r as alerts,
|
|
13
|
+
o as buttons,
|
|
14
|
+
l as canvasError,
|
|
15
|
+
u as clearCanvasDialog,
|
|
16
|
+
F as colorPicker,
|
|
17
|
+
A as colors,
|
|
18
|
+
g as confirmDialog,
|
|
19
|
+
k as default,
|
|
20
|
+
h as encrypted,
|
|
21
|
+
m as errorDialog,
|
|
22
|
+
d as errorSplash,
|
|
23
|
+
i as errors,
|
|
24
|
+
p as exportDialog,
|
|
25
|
+
n as headings,
|
|
26
|
+
x as helpDialog,
|
|
27
|
+
s as hints,
|
|
28
|
+
v as imageExportDialog,
|
|
29
|
+
e as labels,
|
|
30
|
+
a as library,
|
|
31
|
+
T as mermaid,
|
|
32
|
+
y as overwriteConfirm,
|
|
33
|
+
E as publishDialog,
|
|
34
|
+
b as publishSuccessDialog,
|
|
35
|
+
c as roomDialog,
|
|
36
|
+
f as stats,
|
|
37
|
+
S as toast,
|
|
38
|
+
t as toolBar,
|
|
39
|
+
C as welcomeScreen
|
|
40
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layers-app/editor",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.1-progress.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "VITE_LAYERS=true vite --mode full ",
|
|
@@ -15,7 +15,12 @@
|
|
|
15
15
|
"dev:local": "cross-env NODE_ENV=development concurrently \"npm:server:ws\" \"vite --host\"",
|
|
16
16
|
"server:ws": "concurrently \"cd server && npm start\"",
|
|
17
17
|
"format": "prettier --write .",
|
|
18
|
-
"format:check": "prettier --check ."
|
|
18
|
+
"format:check": "prettier --check .",
|
|
19
|
+
"test:e2e": "playwright test",
|
|
20
|
+
"test:e2e:ui": "playwright test --ui",
|
|
21
|
+
"test:e2e:debug": "playwright test --debug",
|
|
22
|
+
"test:e2e:headed": "playwright test --headed",
|
|
23
|
+
"start-test-server": "cross-env CI=true VITE_LAYERS=true VITE_CORS=true vite --mode full --port 3000 --strictPort --host localhost"
|
|
19
24
|
},
|
|
20
25
|
"publishConfig": {
|
|
21
26
|
"access": "public"
|
|
@@ -27,7 +32,7 @@
|
|
|
27
32
|
"types": "dist/index.d.ts",
|
|
28
33
|
"dependencies": {
|
|
29
34
|
"@excalidraw/excalidraw": "^0.18.0",
|
|
30
|
-
"@layers-app/shared": "0.0.
|
|
35
|
+
"@layers-app/shared": "0.0.41",
|
|
31
36
|
"@lexical/headless": "^0.32.1",
|
|
32
37
|
"@lexical/markdown": "^0.32.1",
|
|
33
38
|
"@lexical/react": "^0.32.1",
|
|
@@ -42,13 +47,13 @@
|
|
|
42
47
|
},
|
|
43
48
|
"devDependencies": {
|
|
44
49
|
"@eslint/js": "^9.9.0",
|
|
45
|
-
"@mantine/core": "
|
|
46
|
-
"@mantine/dropzone": "
|
|
47
|
-
"@mantine/form": "
|
|
48
|
-
"@mantine/hooks": "
|
|
49
|
-
"@mantine/modals": "
|
|
50
|
-
"@mantine/notifications": "
|
|
51
|
-
"@mantine/tiptap": "
|
|
50
|
+
"@mantine/core": "^8.0.0",
|
|
51
|
+
"@mantine/dropzone": "^8.0.0",
|
|
52
|
+
"@mantine/form": "^8.0.0",
|
|
53
|
+
"@mantine/hooks": "^8.0.0",
|
|
54
|
+
"@mantine/modals": "^8.0.0",
|
|
55
|
+
"@mantine/notifications": "^8.0.0",
|
|
56
|
+
"@mantine/tiptap": "^8.0.0",
|
|
52
57
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
53
58
|
"@tabler/icons-react": "^3.7.0",
|
|
54
59
|
"@trivago/prettier-plugin-sort-imports": "^5.2.1",
|
|
@@ -72,11 +77,15 @@
|
|
|
72
77
|
"eslint-plugin-react": "^7.37.4",
|
|
73
78
|
"eslint-plugin-react-refresh": "^0.4.19",
|
|
74
79
|
"eslint-plugin-unused-imports": "^4.1.4",
|
|
80
|
+
"github-actions-ctrf": "^0.0.58",
|
|
81
|
+
"glob": "^10.3.10",
|
|
75
82
|
"i18next": "^25.5.2",
|
|
76
83
|
"lodash-es": "^4.17.21",
|
|
77
84
|
"postcss-import": "^16.1.0",
|
|
78
|
-
"postcss-preset-mantine": "^1.
|
|
85
|
+
"postcss-preset-mantine": "^1.17.0",
|
|
79
86
|
"prettier": "^3.4.2",
|
|
87
|
+
"prettier-plugin-organize-attributes": "^1.0.0",
|
|
88
|
+
"proper-lockfile": "^4.1.2",
|
|
80
89
|
"react-i18next": "^15.7.3",
|
|
81
90
|
"rollup-plugin-typescript-paths": "^1.5.0",
|
|
82
91
|
"rollup-plugin-visualizer": "^5.12.0",
|
|
@@ -97,6 +106,13 @@
|
|
|
97
106
|
"dompurify": "^3.2.4",
|
|
98
107
|
"mermaid": "^10.9.4",
|
|
99
108
|
"i18next": "^25.5.2",
|
|
109
|
+
"@mantine/core": "^8.0.0",
|
|
110
|
+
"@mantine/hooks": "^8.0.0",
|
|
111
|
+
"@mantine/form": "^8.0.0",
|
|
112
|
+
"@mantine/dropzone": "^8.0.0",
|
|
113
|
+
"@mantine/modals": "^8.0.0",
|
|
114
|
+
"@mantine/notifications": "^8.0.0",
|
|
115
|
+
"@mantine/tiptap": "^8.0.0",
|
|
100
116
|
"@excalidraw/mermaid-to-excalidraw": {
|
|
101
117
|
"nanoid": "^5.0.9"
|
|
102
118
|
},
|
|
@@ -108,11 +124,11 @@
|
|
|
108
124
|
}
|
|
109
125
|
},
|
|
110
126
|
"peerDependencies": {
|
|
111
|
-
"@mantine/core": ">=
|
|
112
|
-
"@mantine/dropzone": ">=
|
|
113
|
-
"@mantine/form": ">=
|
|
114
|
-
"@mantine/hooks": ">=
|
|
115
|
-
"@mantine/modals": ">=
|
|
127
|
+
"@mantine/core": ">=8.0.0",
|
|
128
|
+
"@mantine/dropzone": ">=8.0.0",
|
|
129
|
+
"@mantine/form": ">=8.0.0",
|
|
130
|
+
"@mantine/hooks": ">=8.0.0",
|
|
131
|
+
"@mantine/modals": ">=8.0.0",
|
|
116
132
|
"@tabler/icons-react": ">=3.7.0",
|
|
117
133
|
"i18next": "^25.5.2",
|
|
118
134
|
"lodash-es": ">=4.17.21",
|