@dwelle/excalidraw 0.5.0-da1c822 → 0.5.0-e56eec7
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/CHANGELOG.md +13 -2
- package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-RHODGCTM.js → blockDiagram-91b80b7a-NRABZKZA.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-W7NCR7LR.js → c4Diagram-b2a90758-56M32CJD.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-TKRIVTWP.js → chunk-5EDB2FTV.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-52OGG53V.js → chunk-6VTJEXQH.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-J5HRUYQR.js → chunk-AKQDHN2W.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/chunk-AKQDHN2W.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-GF7VCOUM.js → chunk-C4OL7SRI.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-BESQLMCW.js → chunk-E47I6Q7O.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-UETNA2WX.js → chunk-KDIPICHB.js} +6377 -4340
- package/dist/browser/dev/excalidraw-assets-dev/chunk-KDIPICHB.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-5747M6KP.js → chunk-OH2YDYHX.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-GPOYIZPX.js → chunk-PXBR5CBM.js} +28 -28
- package/dist/browser/dev/excalidraw-assets-dev/chunk-PXBR5CBM.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-GCA4S2OA.js → chunk-RTA6DTUV.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-DQOPSCYA.js → chunk-TTH3BTHQ.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-B2MHJWXZ.js → chunk-U4N7TEPH.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-QFS4M5OJ.js → chunk-V3PA4IDR.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-SLLUETBM.js → chunk-WFT6ZJE6.js} +7 -7
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-PPHFJLL7.js → chunk-XZKEYTKS.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-USLWOHUZ.js → chunk-YC6VTXEO.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-GJGBT4TV.js → classDiagram-30eddba6-EZJVINS6.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-LYWTIPJA.js → classDiagram-v2-f2df5561-XSUIN44A.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-UREMLRIT.js → directory-open-01563666-KOK2HSB6.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-UN3BUDZZ.js → directory-open-4ed118d0-P3Q3CLF3.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/dist-O6HOTHQF.js +10 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-UW5C5KGW.js → en-PSBMWL4S.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-Z7U2XW2Y.js → erDiagram-47591fe2-U7FLWOG3.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-4QG336MG.js → file-open-002ab408-EQEHGU2J.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-3QI4ICCL.js → file-open-7c801643-QQT6O7P5.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-TNNERCWV.js → file-save-3189631c-YXX2C7C6.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-JFMH565P.js → file-save-745eba88-7G554KTZ.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-PARVG263.js → flowDiagram-5540d9b9-F2VP4JAA.js} +10 -10
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-ZJOPVRMB.js → flowDiagram-v2-3b53844e-2WQZZRND.js} +10 -10
- package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-ULPNBSZX.js → flowchart-elk-definition-5fe447d6-IW6O2F6C.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-ESSYVTJ4.js → ganttDiagram-9a3bba1f-B5RH7ZAO.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-6V6VVNNP.js → gitGraphDiagram-96e6b4ee-INGQRNLZ.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{image-ZNQQXS62.css → image-FDQLNM24.css} +39 -16
- package/dist/browser/dev/excalidraw-assets-dev/image-FDQLNM24.css.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{image-3LTGFHLF.js → image-GMAHLVER.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-KTX27DAY.js → image-blob-reduce.esm-OX75MRP3.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-I22FLFX3.js → infoDiagram-bcd20f53-43FMAUOR.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-WAO6F52C.js → journeyDiagram-4fe6b3dc-KFVOUX4I.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{katex-NWA2YFOP.js → katex-A3GRORPB.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-K74IKX4Y.js → mindmap-definition-f354de21-D7S3CRQ4.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{pica-3TH2EGXR.js → pica-ZAD7MTGA.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-DOB2LVE5.js → pieDiagram-79897490-OON2CRZ5.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-MJV2X7WI.js → quadrantDiagram-62f64e94-5APTNVVS.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-H4YM3XN7.js → requirementDiagram-05bf5f74-FM7WZVKU.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{roundRect-4S3QV2NZ.js → roundRect-AYYHVX5X.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-7X74ABAN.js → sankeyDiagram-97764748-5HLEFFGY.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-PPDIJFQP.js → sequenceDiagram-acc0e65c-4ZRSNGPV.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-JVBR7N35.js → stateDiagram-0ff1cf1a-OLTPYRPP.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-QYAJLQJH.js → stateDiagram-v2-9a9d610d-N3XOTAEE.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-GL7U3WDB.js → timeline-definition-fea2a41d-5PDFIYJQ.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-4U4JE4TW.js → xychartDiagram-ab372869-VIWBP45Y.js} +4 -4
- package/dist/browser/dev/index.css +38 -15
- package/dist/browser/dev/index.css.map +2 -2
- package/dist/browser/dev/index.js +9 -5
- package/dist/browser/prod/excalidraw-assets/ar-SA-JA6F2FMJ-MVAFRXH2.js +10 -0
- package/dist/browser/prod/excalidraw-assets/az-AZ-GVIENQVH-DULWV7IG.js +1 -0
- package/dist/browser/prod/excalidraw-assets/bg-BG-YFNNHCEP-TOMMDX7A.js +5 -0
- package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-BO7MW3VX.js → blockDiagram-91b80b7a-ZBW6LBXS.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/bn-BD-LMEIWSRD-U6EPN6XJ.js +5 -0
- package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-VCUPBVHR.js → c4Diagram-b2a90758-GET6IFET.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/ca-ES-C2WGCLOT-4Q2376G3.js +8 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-O77Z7CWL.js → chunk-2UGPV7X3.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-B7CDQVNY.js → chunk-364WSJPQ.js} +21 -21
- package/dist/browser/prod/excalidraw-assets/{chunk-NM5B2RBP.js → chunk-4FM7RPKW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-CVEF66PS.js → chunk-4SHJFNCN.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-22FVL4I7.js → chunk-6TNDONBF.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-QLNFR4AJ.js → chunk-BJTCWAK5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-CKRG5LOX.js +335 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-3HZHH3PT.js → chunk-IW42BK4V.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-4JYQ3563.js → chunk-MRQWXP64.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-VXFFPRP2.js → chunk-OG2UUKMT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-Q6QP4TRB.js +11 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-V7HUISEN.js → chunk-QBYA3CCP.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-5PWM36DG.js → chunk-S3O7MXSU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-SJBOQTFA.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-3VCRCP5J.js → chunk-T7MBBIYG.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-HPA5W5VE.js → chunk-X7R4RA7C.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-7UJZVYSR.js → chunk-Y3NNVSMP.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-VXGNM3LI.js → classDiagram-30eddba6-MJ5GZSCE.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-YALTASVE.js → classDiagram-v2-f2df5561-FU5PRXDD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/cs-CZ-F2NDIQMB-4NMYRMO2.js +11 -0
- package/dist/browser/prod/excalidraw-assets/da-DK-WBEQB3CJ-6YAF4DNI.js +5 -0
- package/dist/browser/prod/excalidraw-assets/de-DE-VEIMCP7R-NSRLPHDI.js +8 -0
- package/dist/browser/prod/excalidraw-assets/{directory-open-01563666-JWXY2QSC.js → directory-open-01563666-UG2J4T6L.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{directory-open-4ed118d0-6AL5X37W.js → directory-open-4ed118d0-FGQD6TMW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/dist-LI3DBBWR.js +1 -0
- package/dist/browser/prod/excalidraw-assets/el-GR-TKRKG5GQ-6N4GY2DI.js +10 -0
- package/dist/browser/prod/excalidraw-assets/{en-CPU3UVKT.js → en-MPFDZHEH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/en-Q552WR7L-QAV42NF3.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-GKYANCN7.js → erDiagram-47591fe2-YGAMNOK6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/es-ES-TOLWEZNW-ODY4LX7F.js +9 -0
- package/dist/browser/prod/excalidraw-assets/eu-ES-7CDRJQWJ-KF3KSB2X.js +11 -0
- package/dist/browser/prod/excalidraw-assets/fa-IR-527E2XGU-WLLGMWYR.js +8 -0
- package/dist/browser/prod/excalidraw-assets/fi-FI-NLQ7RQGZ-EZLGQEWF.js +6 -0
- package/dist/browser/prod/excalidraw-assets/{file-open-002ab408-3EPJOH45.js → file-open-002ab408-WLX7QPS6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-open-7c801643-QIP6HK4D.js → file-open-7c801643-YB6IH3XI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-save-3189631c-4TQJBQCS.js → file-save-3189631c-MRYCXU63.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-save-745eba88-C4L3ZGCC.js → file-save-745eba88-UZEDMFLR.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-QBRW5SLP.js → flowDiagram-5540d9b9-V23UQWYJ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-UDC2ZAFT.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-YYO2EYKS.js → flowchart-elk-definition-5fe447d6-N3ISH6AG.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/fr-FR-KUHO4FLU-2OW7FE5V.js +9 -0
- package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-3B2DUUUQ.js → ganttDiagram-9a3bba1f-7SAN2TXA.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-G6CKXXWQ.js → gitGraphDiagram-96e6b4ee-EXV6PWXL.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/gl-ES-NEXX3VBB-TESFDR6O.js +10 -0
- package/dist/browser/prod/excalidraw-assets/he-IL-MED2VGBZ-N4VYRCHF.js +10 -0
- package/dist/browser/prod/excalidraw-assets/hi-IN-5V633W7V-4VXVQ6GE.js +4 -0
- package/dist/browser/prod/excalidraw-assets/hu-HU-2FOZGVGR-7CHHZRPD.js +7 -0
- package/dist/browser/prod/excalidraw-assets/id-ID-I6BOLXTF-ULJRGCTU.js +10 -0
- package/dist/browser/prod/excalidraw-assets/image-ZKACJTPS.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{image-blob-reduce.esm-5DTGAOOI.js → image-blob-reduce.esm-GOFU5DPX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-WJTZJERL.js → infoDiagram-bcd20f53-LJZ36XP5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/it-IT-WKPQOK4P-C3FTW2QG.js +11 -0
- package/dist/browser/prod/excalidraw-assets/ja-JP-VKA4ISRU-EBXFDMUP.js +8 -0
- package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-JF22KXXQ.js → journeyDiagram-4fe6b3dc-TFRSU2KH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/kaa-IKPRSBNY-URJPWZZH.js +1 -0
- package/dist/browser/prod/excalidraw-assets/kab-KAB-IE4PHQTZ-OMISFOMM.js +8 -0
- package/dist/browser/prod/excalidraw-assets/{katex-N6R5DPQX.js → katex-HAQKNIIQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/kk-KZ-MNJT6XSV-56OVE4EH.js +1 -0
- package/dist/browser/prod/excalidraw-assets/km-KH-LADGDFXV-KI7V2Z5A.js +11 -0
- package/dist/browser/prod/excalidraw-assets/ko-KR-XD7AVF2F-EFYGITKM.js +9 -0
- package/dist/browser/prod/excalidraw-assets/ku-TR-4XBHKDQA-U25XLPMW.js +9 -0
- package/dist/browser/prod/excalidraw-assets/lt-LT-QC35R4YH-6TDSRONI.js +3 -0
- package/dist/browser/prod/excalidraw-assets/lv-LV-GSD5D3BA-KMXM2FQ7.js +7 -0
- package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-7SH5STU3.js → mindmap-definition-f354de21-J3C2WSJB.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/mr-IN-KOLSWM7Y-NVYC6JCO.js +13 -0
- package/dist/browser/prod/excalidraw-assets/my-MM-M53KMUET-A2ORJJ2D.js +1 -0
- package/dist/browser/prod/excalidraw-assets/nb-NO-XXC6U37A-L4O4DGCC.js +10 -0
- package/dist/browser/prod/excalidraw-assets/nl-NL-HCCJQEUO-7Q2LV5NM.js +8 -0
- package/dist/browser/prod/excalidraw-assets/nn-NO-6P7Z2PI2-TUT2PFEE.js +8 -0
- package/dist/browser/prod/excalidraw-assets/oc-FR-JRJKPLNT-SBQHJH7X.js +8 -0
- package/dist/browser/prod/excalidraw-assets/pa-IN-LZWLEPIB-7NKOXI65.js +4 -0
- package/dist/browser/prod/excalidraw-assets/percentages-UCQDHIQF-Q4IM6ZEB.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{pica-KWHN2PJ6.js → pica-ABPXE5C5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-5O5EBEQB.js → pieDiagram-79897490-FMJ3ZAF7.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/pl-PL-3WBLCXI2-E2SMTIVM.js +9 -0
- package/dist/browser/prod/excalidraw-assets/pt-BR-O3ZPTUNW-RS7M7EKX.js +9 -0
- package/dist/browser/prod/excalidraw-assets/pt-PT-7AQTSAFO-AEANJ2UN.js +9 -0
- package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-JTY6WOKB.js → quadrantDiagram-62f64e94-YI32TPUI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-TSFQFY5X.js → requirementDiagram-05bf5f74-UO2ATL3U.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/ro-RO-HJ65JYWV-35XNZ4QJ.js +11 -0
- package/dist/browser/prod/excalidraw-assets/{roundRect-PUCZURYS.js → roundRect-UKQBLFKQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/ru-RU-P7ROIYNC-ERPG3GJT.js +9 -0
- package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-7G2R6W67.js → sankeyDiagram-97764748-3RR36435.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-CTANNZCO.js → sequenceDiagram-acc0e65c-G2Q6J4UN.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/si-LK-7ZSWVION-YHKN25MU.js +1 -0
- package/dist/browser/prod/excalidraw-assets/sk-SK-NXVBGLYY-IKQZT26E.js +6 -0
- package/dist/browser/prod/excalidraw-assets/sl-SI-VFTWOYNP-UPLNMI3E.js +6 -0
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-I5COLKZ4.js → stateDiagram-0ff1cf1a-QEYVXCSB.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-IIHI3AJN.js → stateDiagram-v2-9a9d610d-3VKD7UYK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/sv-SE-YONBLQNW-ZG4TE7PV.js +10 -0
- package/dist/browser/prod/excalidraw-assets/ta-IN-BSETPMLX-FC54FMQJ.js +9 -0
- package/dist/browser/prod/excalidraw-assets/th-TH-URTRDITB-K6QQ2PRO.js +2 -0
- package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-CXTGKWI4.js → timeline-definition-fea2a41d-H4D6IYVJ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/tr-TR-N5SCAVTB-HMUEG6DN.js +7 -0
- package/dist/browser/prod/excalidraw-assets/uk-UA-LBCYVSQZ-DEJZCNRZ.js +6 -0
- package/dist/browser/prod/excalidraw-assets/vi-VN-POZWLIUU-EY6QFLQV.js +5 -0
- package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-QZGPPHJP.js → xychartDiagram-ab372869-SUXFHV53.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/zh-CN-FUF5V3SC-5UIL2T3T.js +10 -0
- package/dist/browser/prod/excalidraw-assets/zh-HK-OB4VW42C-3ID2CCZJ.js +1 -0
- package/dist/browser/prod/excalidraw-assets/zh-TW-5JPVKOM7-VUPJBABS.js +9 -0
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +128 -1
- package/dist/dev/{en-R7FEFJGC.json → en-Q552WR7L.json} +1 -1
- package/dist/dev/index.css +38 -15
- package/dist/dev/index.css.map +2 -2
- package/dist/dev/index.js +4575 -2598
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
- package/dist/excalidraw/actions/actionAlign.d.ts +20 -20
- package/dist/excalidraw/actions/actionAlign.js +7 -6
- package/dist/excalidraw/actions/actionBoundText.d.ts +7 -7
- package/dist/excalidraw/actions/actionBoundText.js +8 -4
- package/dist/excalidraw/actions/actionCanvas.d.ts +49 -49
- package/dist/excalidraw/actions/actionCanvas.js +16 -13
- package/dist/excalidraw/actions/actionClipboard.d.ts +24 -24
- package/dist/excalidraw/actions/actionClipboard.js +14 -13
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +8 -8
- package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
- package/dist/excalidraw/actions/actionDistribute.d.ts +8 -8
- package/dist/excalidraw/actions/actionDistribute.js +3 -2
- package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +5 -6
- package/dist/excalidraw/actions/actionDuplicateSelection.js +7 -3
- package/dist/excalidraw/actions/actionElementLock.d.ts +8 -8
- package/dist/excalidraw/actions/actionElementLock.js +3 -2
- package/dist/excalidraw/actions/actionExport.d.ts +36 -36
- package/dist/excalidraw/actions/actionExport.js +15 -11
- package/dist/excalidraw/actions/actionFinalize.d.ts +8 -8
- package/dist/excalidraw/actions/actionFinalize.js +9 -5
- package/dist/excalidraw/actions/actionFlip.d.ts +9 -9
- package/dist/excalidraw/actions/actionFlip.js +10 -9
- package/dist/excalidraw/actions/actionFrame.d.ts +14 -169
- package/dist/excalidraw/actions/actionFrame.js +7 -6
- package/dist/excalidraw/actions/actionGroup.d.ts +11 -321
- package/dist/excalidraw/actions/actionGroup.js +9 -11
- package/dist/excalidraw/actions/actionHistory.d.ts +3 -2
- package/dist/excalidraw/actions/actionHistory.js +27 -28
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +2 -2
- package/dist/excalidraw/actions/actionLinearEditor.js +2 -1
- package/dist/excalidraw/actions/actionLink.d.ts +5 -5
- package/dist/excalidraw/actions/actionLink.js +2 -1
- package/dist/excalidraw/actions/actionMenu.d.ts +8 -8
- package/dist/excalidraw/actions/actionMenu.js +4 -3
- package/dist/excalidraw/actions/actionNavigate.d.ts +3 -3
- package/dist/excalidraw/actions/actionNavigate.js +3 -2
- package/dist/excalidraw/actions/actionProperties.d.ts +32 -32
- package/dist/excalidraw/actions/actionProperties.js +18 -13
- package/dist/excalidraw/actions/actionSelectAll.d.ts +4 -4
- package/dist/excalidraw/actions/actionSelectAll.js +2 -1
- package/dist/excalidraw/actions/actionStyles.d.ts +9 -12
- package/dist/excalidraw/actions/actionStyles.js +4 -3
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +6 -4
- package/dist/excalidraw/actions/actionToggleGridMode.js +6 -2
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
- package/dist/excalidraw/actions/actionToggleStats.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleStats.js +2 -1
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
- package/dist/excalidraw/actions/actionZindex.d.ts +19 -19
- package/dist/excalidraw/actions/actionZindex.js +5 -4
- package/dist/excalidraw/actions/manager.d.ts +3 -3
- package/dist/excalidraw/actions/types.d.ts +4 -4
- package/dist/excalidraw/appState.d.ts +5 -5
- package/dist/excalidraw/change.d.ts +191 -0
- package/dist/excalidraw/change.js +894 -0
- package/dist/excalidraw/components/App.d.ts +22 -7
- package/dist/excalidraw/components/App.js +340 -130
- package/dist/excalidraw/components/CommandPalette/CommandPalette.js +1 -0
- package/dist/excalidraw/components/HelpDialog.js +1 -1
- package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
- package/dist/excalidraw/components/Stack.d.ts +2 -2
- package/dist/excalidraw/components/ToolButton.d.ts +1 -0
- package/dist/excalidraw/components/ToolButton.js +1 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +1 -0
- package/dist/excalidraw/components/hyperlink/Hyperlink.js +3 -3
- package/dist/excalidraw/components/hyperlink/helpers.js +2 -3
- package/dist/excalidraw/components/icons.d.ts +1 -0
- package/dist/excalidraw/components/icons.js +1 -0
- package/dist/excalidraw/components/main-menu/DefaultItems.d.ts +1 -1
- package/dist/excalidraw/constants.d.ts +3 -3
- package/dist/excalidraw/constants.js +6 -3
- package/dist/excalidraw/data/reconcile.d.ts +6 -0
- package/dist/excalidraw/data/reconcile.js +49 -0
- package/dist/excalidraw/data/restore.d.ts +3 -3
- package/dist/excalidraw/data/restore.js +6 -7
- package/dist/excalidraw/data/transform.d.ts +1 -1
- package/dist/excalidraw/data/transform.js +4 -3
- package/dist/excalidraw/data/url.d.ts +1 -0
- package/dist/excalidraw/data/url.js +4 -1
- package/dist/excalidraw/element/binding.d.ts +64 -9
- package/dist/excalidraw/element/binding.js +634 -96
- package/dist/excalidraw/element/bounds.d.ts +0 -1
- package/dist/excalidraw/element/bounds.js +0 -3
- package/dist/excalidraw/element/collision.d.ts +14 -19
- package/dist/excalidraw/element/collision.js +36 -713
- package/dist/excalidraw/element/embeddable.d.ts +7 -4
- package/dist/excalidraw/element/embeddable.js +88 -27
- package/dist/excalidraw/element/index.d.ts +0 -1
- package/dist/excalidraw/element/index.js +0 -1
- package/dist/excalidraw/element/linearElementEditor.d.ts +11 -11
- package/dist/excalidraw/element/linearElementEditor.js +7 -5
- package/dist/excalidraw/element/mutateElement.d.ts +1 -2
- package/dist/excalidraw/element/newElement.d.ts +1 -1
- package/dist/excalidraw/element/newElement.js +2 -1
- package/dist/excalidraw/element/resizeElements.d.ts +1 -1
- package/dist/excalidraw/element/resizeElements.js +110 -86
- package/dist/excalidraw/element/resizeTest.d.ts +4 -4
- package/dist/excalidraw/element/resizeTest.js +55 -8
- package/dist/excalidraw/element/sizeHelpers.js +3 -0
- package/dist/excalidraw/element/textElement.d.ts +1 -2
- package/dist/excalidraw/element/textElement.js +5 -34
- package/dist/excalidraw/element/transformHandles.d.ts +22 -4
- package/dist/excalidraw/element/transformHandles.js +24 -3
- package/dist/excalidraw/element/typeChecks.d.ts +2 -2
- package/dist/excalidraw/element/types.d.ts +19 -6
- package/dist/excalidraw/errors.d.ts +3 -0
- package/dist/excalidraw/errors.js +3 -0
- package/dist/excalidraw/fractionalIndex.d.ts +40 -0
- package/dist/excalidraw/fractionalIndex.js +241 -0
- package/dist/excalidraw/frame.d.ts +1 -1
- package/dist/excalidraw/groups.d.ts +2 -0
- package/dist/excalidraw/groups.js +17 -0
- package/dist/excalidraw/history.d.ts +34 -46
- package/dist/excalidraw/history.js +100 -167
- package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
- package/dist/excalidraw/hooks/useEmitter.js +13 -0
- package/dist/excalidraw/index.d.ts +2 -0
- package/dist/excalidraw/index.js +2 -0
- package/dist/excalidraw/locales/en.json +1 -1
- package/dist/excalidraw/renderer/interactiveScene.d.ts +1 -1
- package/dist/excalidraw/renderer/interactiveScene.js +8 -7
- package/dist/excalidraw/renderer/staticScene.js +14 -3
- package/dist/excalidraw/renderer/staticSvgScene.js +10 -0
- package/dist/excalidraw/scene/Scene.d.ts +7 -6
- package/dist/excalidraw/scene/Scene.js +31 -16
- package/dist/excalidraw/scene/export.js +2 -1
- package/dist/excalidraw/scene/types.d.ts +2 -1
- package/dist/excalidraw/store.d.ts +99 -0
- package/dist/excalidraw/store.js +269 -0
- package/dist/excalidraw/types.d.ts +18 -4
- package/dist/excalidraw/utils.d.ts +6 -0
- package/dist/excalidraw/utils.js +7 -0
- package/dist/excalidraw/zindex.d.ts +2 -2
- package/dist/excalidraw/zindex.js +9 -13
- package/dist/prod/{en-R7FEFJGC.json → en-Q552WR7L.json} +1 -1
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +44 -44
- package/dist/utils/collision.d.ts +4 -0
- package/dist/utils/collision.js +48 -0
- package/dist/utils/geometry/geometry.d.ts +71 -0
- package/dist/utils/geometry/geometry.js +674 -0
- package/dist/utils/geometry/shape.d.ts +56 -0
- package/dist/utils/geometry/shape.js +168 -0
- package/history.ts +161 -216
- package/package.json +2 -1
- package/dist/browser/dev/excalidraw-assets-dev/chunk-GPOYIZPX.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-J5HRUYQR.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-UETNA2WX.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/dist-Y7S5GOTG.js +0 -10
- package/dist/browser/dev/excalidraw-assets-dev/image-ZNQQXS62.css.map +0 -7
- package/dist/browser/prod/excalidraw-assets/chunk-EEN6AFMH.js +0 -269
- package/dist/browser/prod/excalidraw-assets/dist-7FHVDAZ2.js +0 -1
- package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-CRHRHP7H.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-VXYNPVOG.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-WE6NA2G6.css +0 -1
- /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-RHODGCTM.js.map → blockDiagram-91b80b7a-NRABZKZA.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-W7NCR7LR.js.map → c4Diagram-b2a90758-56M32CJD.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-TKRIVTWP.js.map → chunk-5EDB2FTV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-52OGG53V.js.map → chunk-6VTJEXQH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-GF7VCOUM.js.map → chunk-C4OL7SRI.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-BESQLMCW.js.map → chunk-E47I6Q7O.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-5747M6KP.js.map → chunk-OH2YDYHX.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-GCA4S2OA.js.map → chunk-RTA6DTUV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-DQOPSCYA.js.map → chunk-TTH3BTHQ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-B2MHJWXZ.js.map → chunk-U4N7TEPH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-QFS4M5OJ.js.map → chunk-V3PA4IDR.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-SLLUETBM.js.map → chunk-WFT6ZJE6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-PPHFJLL7.js.map → chunk-XZKEYTKS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-USLWOHUZ.js.map → chunk-YC6VTXEO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-GJGBT4TV.js.map → classDiagram-30eddba6-EZJVINS6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-LYWTIPJA.js.map → classDiagram-v2-f2df5561-XSUIN44A.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-UREMLRIT.js.map → directory-open-01563666-KOK2HSB6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-UN3BUDZZ.js.map → directory-open-4ed118d0-P3Q3CLF3.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{dist-Y7S5GOTG.js.map → dist-O6HOTHQF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{en-UW5C5KGW.js.map → en-PSBMWL4S.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-Z7U2XW2Y.js.map → erDiagram-47591fe2-U7FLWOG3.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-4QG336MG.js.map → file-open-002ab408-EQEHGU2J.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-3QI4ICCL.js.map → file-open-7c801643-QQT6O7P5.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-TNNERCWV.js.map → file-save-3189631c-YXX2C7C6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-JFMH565P.js.map → file-save-745eba88-7G554KTZ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-PARVG263.js.map → flowDiagram-5540d9b9-F2VP4JAA.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-ZJOPVRMB.js.map → flowDiagram-v2-3b53844e-2WQZZRND.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-ULPNBSZX.js.map → flowchart-elk-definition-5fe447d6-IW6O2F6C.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-ESSYVTJ4.js.map → ganttDiagram-9a3bba1f-B5RH7ZAO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-6V6VVNNP.js.map → gitGraphDiagram-96e6b4ee-INGQRNLZ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-3LTGFHLF.js.map → image-GMAHLVER.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-KTX27DAY.js.map → image-blob-reduce.esm-OX75MRP3.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-I22FLFX3.js.map → infoDiagram-bcd20f53-43FMAUOR.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-WAO6F52C.js.map → journeyDiagram-4fe6b3dc-KFVOUX4I.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{katex-NWA2YFOP.js.map → katex-A3GRORPB.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-K74IKX4Y.js.map → mindmap-definition-f354de21-D7S3CRQ4.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pica-3TH2EGXR.js.map → pica-ZAD7MTGA.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-DOB2LVE5.js.map → pieDiagram-79897490-OON2CRZ5.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-MJV2X7WI.js.map → quadrantDiagram-62f64e94-5APTNVVS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-H4YM3XN7.js.map → requirementDiagram-05bf5f74-FM7WZVKU.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{roundRect-4S3QV2NZ.js.map → roundRect-AYYHVX5X.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-7X74ABAN.js.map → sankeyDiagram-97764748-5HLEFFGY.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-PPDIJFQP.js.map → sequenceDiagram-acc0e65c-4ZRSNGPV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-JVBR7N35.js.map → stateDiagram-0ff1cf1a-OLTPYRPP.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-QYAJLQJH.js.map → stateDiagram-v2-9a9d610d-N3XOTAEE.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-GL7U3WDB.js.map → timeline-definition-fea2a41d-5PDFIYJQ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-4U4JE4TW.js.map → xychartDiagram-ab372869-VIWBP45Y.js.map} +0 -0
|
@@ -205,6 +205,7 @@ function CommandPaletteInner({ customCommandPaletteItems, }) {
|
|
|
205
205
|
actionManager.actions.zoomToFit,
|
|
206
206
|
actionManager.actions.zenMode,
|
|
207
207
|
actionManager.actions.viewMode,
|
|
208
|
+
actionManager.actions.gridMode,
|
|
208
209
|
actionManager.actions.objectsSnapMode,
|
|
209
210
|
actionManager.actions.toggleShortcuts,
|
|
210
211
|
actionManager.actions.selectAll,
|
|
@@ -57,7 +57,7 @@ export const HelpDialog = ({ onClose }) => {
|
|
|
57
57
|
t("helpDialog.click"),
|
|
58
58
|
t("helpDialog.click"),
|
|
59
59
|
t("helpDialog.click"),
|
|
60
|
-
], isOr: false }), _jsx(Shortcut, { label: t("toolBar.lock"), shortcuts: [KEYS.Q] }), _jsx(Shortcut, { label: t("helpDialog.preventBinding"), shortcuts: [getShortcutKey("CtrlOrCmd")] }), _jsx(Shortcut, { label: t("toolBar.link"), shortcuts: [getShortcutKey("CtrlOrCmd+K")] })] }), _jsxs(ShortcutIsland, { className: "HelpDialog__island--view", caption: t("helpDialog.view"), children: [_jsx(Shortcut, { label: t("buttons.zoomIn"), shortcuts: [getShortcutKey("CtrlOrCmd++")] }), _jsx(Shortcut, { label: t("buttons.zoomOut"), shortcuts: [getShortcutKey("CtrlOrCmd+-")] }), _jsx(Shortcut, { label: t("buttons.resetZoom"), shortcuts: [getShortcutKey("CtrlOrCmd+0")] }), _jsx(Shortcut, { label: t("helpDialog.zoomToFit"), shortcuts: ["Shift+1"] }), _jsx(Shortcut, { label: t("helpDialog.zoomToSelection"), shortcuts: ["Shift+2"] }), _jsx(Shortcut, { label: t("helpDialog.movePageUpDown"), shortcuts: ["PgUp/PgDn"] }), _jsx(Shortcut, { label: t("helpDialog.movePageLeftRight"), shortcuts: ["Shift+PgUp/PgDn"] }), _jsx(Shortcut, { label: t("buttons.zenMode"), shortcuts: [getShortcutKey("Alt+Z")] }), _jsx(Shortcut, { label: t("buttons.objectsSnapMode"), shortcuts: [getShortcutKey("Alt+S")] }), _jsx(Shortcut, { label: t("labels.
|
|
60
|
+
], isOr: false }), _jsx(Shortcut, { label: t("toolBar.lock"), shortcuts: [KEYS.Q] }), _jsx(Shortcut, { label: t("helpDialog.preventBinding"), shortcuts: [getShortcutKey("CtrlOrCmd")] }), _jsx(Shortcut, { label: t("toolBar.link"), shortcuts: [getShortcutKey("CtrlOrCmd+K")] })] }), _jsxs(ShortcutIsland, { className: "HelpDialog__island--view", caption: t("helpDialog.view"), children: [_jsx(Shortcut, { label: t("buttons.zoomIn"), shortcuts: [getShortcutKey("CtrlOrCmd++")] }), _jsx(Shortcut, { label: t("buttons.zoomOut"), shortcuts: [getShortcutKey("CtrlOrCmd+-")] }), _jsx(Shortcut, { label: t("buttons.resetZoom"), shortcuts: [getShortcutKey("CtrlOrCmd+0")] }), _jsx(Shortcut, { label: t("helpDialog.zoomToFit"), shortcuts: ["Shift+1"] }), _jsx(Shortcut, { label: t("helpDialog.zoomToSelection"), shortcuts: ["Shift+2"] }), _jsx(Shortcut, { label: t("helpDialog.movePageUpDown"), shortcuts: ["PgUp/PgDn"] }), _jsx(Shortcut, { label: t("helpDialog.movePageLeftRight"), shortcuts: ["Shift+PgUp/PgDn"] }), _jsx(Shortcut, { label: t("buttons.zenMode"), shortcuts: [getShortcutKey("Alt+Z")] }), _jsx(Shortcut, { label: t("buttons.objectsSnapMode"), shortcuts: [getShortcutKey("Alt+S")] }), _jsx(Shortcut, { label: t("labels.toggleGrid"), shortcuts: [getShortcutKey("CtrlOrCmd+'")] }), _jsx(Shortcut, { label: t("labels.viewMode"), shortcuts: [getShortcutKey("Alt+R")] }), _jsx(Shortcut, { label: t("labels.toggleTheme"), shortcuts: [getShortcutKey("Alt+Shift+D")] }), _jsx(Shortcut, { label: t("stats.title"), shortcuts: [getShortcutKey("Alt+/")] }), _jsx(Shortcut, { label: t("commandPalette.title"), shortcuts: isFirefox
|
|
61
61
|
? [getShortcutFromShortcutName("commandPalette")]
|
|
62
62
|
: [
|
|
63
63
|
getShortcutFromShortcutName("commandPalette"),
|
|
@@ -11,7 +11,7 @@ import "./Sidebar.scss";
|
|
|
11
11
|
export declare const isSidebarDockedAtom: import("jotai").PrimitiveAtom<boolean> & {
|
|
12
12
|
init: boolean;
|
|
13
13
|
};
|
|
14
|
-
export declare const SidebarInner: React.ForwardRefExoticComponent<
|
|
14
|
+
export declare const SidebarInner: React.ForwardRefExoticComponent<Omit<{
|
|
15
15
|
name: string;
|
|
16
16
|
children: React.ReactNode;
|
|
17
17
|
onStateChange?: ((state: {
|
|
@@ -22,7 +22,7 @@ export declare const SidebarInner: React.ForwardRefExoticComponent<Pick<{
|
|
|
22
22
|
docked?: boolean | undefined;
|
|
23
23
|
className?: string | undefined;
|
|
24
24
|
__fallback?: boolean | undefined;
|
|
25
|
-
} & Omit<React.RefAttributes<HTMLDivElement>, "onSelect">, "
|
|
25
|
+
} & Omit<React.RefAttributes<HTMLDivElement>, "onSelect">, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
26
26
|
export declare const Sidebar: React.ForwardRefExoticComponent<{
|
|
27
27
|
name: string;
|
|
28
28
|
children: React.ReactNode;
|
|
@@ -10,7 +10,7 @@ type StackProps = {
|
|
|
10
10
|
ref: React.RefObject<HTMLDivElement>;
|
|
11
11
|
};
|
|
12
12
|
declare const _default: {
|
|
13
|
-
Row: React.ForwardRefExoticComponent<
|
|
14
|
-
Col: React.ForwardRefExoticComponent<
|
|
13
|
+
Row: React.ForwardRefExoticComponent<Omit<StackProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
Col: React.ForwardRefExoticComponent<Omit<StackProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
15
15
|
};
|
|
16
16
|
export default _default;
|
|
@@ -52,7 +52,7 @@ export const ToolButton = React.forwardRef((props, ref) => {
|
|
|
52
52
|
ToolIcon: !props.hidden,
|
|
53
53
|
"ToolIcon--selected": props.selected,
|
|
54
54
|
"ToolIcon--plain": props.type === "icon",
|
|
55
|
-
}), style: props.style, "data-testid": props["data-testid"], hidden: props.hidden, title: props.title, "aria-label": props["aria-label"], type: type, onClick: onClick, ref: innerRef, disabled: isLoading || props.isLoading, children: [(props.icon || props.label) && (_jsxs("div", { className: "ToolIcon__icon", "aria-hidden": "true", children: [props.icon || props.label, props.keyBindingLabel && (_jsx("span", { className: "ToolIcon__keybinding", children: props.keyBindingLabel })), props.isLoading && _jsx(Spinner, {})] })), props.showAriaLabel && (_jsxs("div", { className: "ToolIcon__label", children: [props["aria-label"], " ", isLoading && _jsx(Spinner, {})] })), props.children] }));
|
|
55
|
+
}), style: props.style, "data-testid": props["data-testid"], hidden: props.hidden, title: props.title, "aria-label": props["aria-label"], type: type, onClick: onClick, ref: innerRef, disabled: isLoading || props.isLoading || !!props.disabled, children: [(props.icon || props.label) && (_jsxs("div", { className: "ToolIcon__icon", "aria-hidden": "true", "aria-disabled": !!props.disabled, children: [props.icon || props.label, props.keyBindingLabel && (_jsx("span", { className: "ToolIcon__keybinding", children: props.keyBindingLabel })), props.isLoading && _jsx(Spinner, {})] })), props.showAriaLabel && (_jsxs("div", { className: "ToolIcon__label", children: [props["aria-label"], " ", isLoading && _jsx(Spinner, {})] })), props.children] }));
|
|
56
56
|
}
|
|
57
57
|
return (_jsxs("label", { className: clsx("ToolIcon", props.className), title: props.title, onPointerDown: (event) => {
|
|
58
58
|
lastPointerTypeRef.current = event.pointerType || null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { DOMAttributes } from "react";
|
|
3
|
-
import type { InteractiveCanvasAppState } from "../../types";
|
|
3
|
+
import type { Device, InteractiveCanvasAppState } from "../../types";
|
|
4
4
|
import type { RenderableElementsMap, RenderInteractiveSceneCallback } from "../../scene/types";
|
|
5
5
|
import type { NonDeletedExcalidrawElement } from "../../element/types";
|
|
6
6
|
type InteractiveCanvasProps = {
|
|
@@ -13,6 +13,7 @@ type InteractiveCanvasProps = {
|
|
|
13
13
|
selectionNonce: number | undefined;
|
|
14
14
|
scale: number;
|
|
15
15
|
appState: InteractiveCanvasAppState;
|
|
16
|
+
device: Device;
|
|
16
17
|
renderInteractiveSceneCallback: (data: RenderInteractiveSceneCallback) => void;
|
|
17
18
|
handleCanvasRef: (canvas: HTMLCanvasElement | null) => void;
|
|
18
19
|
onContextMenu: Exclude<DOMAttributes<HTMLCanvasElement | HTMLDivElement>["onContextMenu"], undefined>;
|
|
@@ -10,9 +10,9 @@ import clsx from "clsx";
|
|
|
10
10
|
import { KEYS } from "../../keys";
|
|
11
11
|
import { EVENT, HYPERLINK_TOOLTIP_DELAY } from "../../constants";
|
|
12
12
|
import { getElementAbsoluteCoords } from "../../element/bounds";
|
|
13
|
-
import { getTooltipDiv, updateTooltipPosition } from "
|
|
13
|
+
import { getTooltipDiv, updateTooltipPosition } from "../../components/Tooltip";
|
|
14
14
|
import { getSelectedElements } from "../../scene";
|
|
15
|
-
import {
|
|
15
|
+
import { hitElementBoundingBox } from "../../element/collision";
|
|
16
16
|
import { isLocalLink, normalizeLink } from "../../data/url";
|
|
17
17
|
import "./Hyperlink.scss";
|
|
18
18
|
import { trackEvent } from "../../analytics";
|
|
@@ -252,7 +252,7 @@ const shouldHideLinkPopup = (element, elementsMap, appState, [clientX, clientY])
|
|
|
252
252
|
const { x: sceneX, y: sceneY } = viewportCoordsToSceneCoords({ clientX, clientY }, appState);
|
|
253
253
|
const threshold = 15 / appState.zoom.value;
|
|
254
254
|
// hitbox to prevent hiding when hovered in element bounding box
|
|
255
|
-
if (
|
|
255
|
+
if (hitElementBoundingBox(sceneX, sceneY, element, elementsMap)) {
|
|
256
256
|
return false;
|
|
257
257
|
}
|
|
258
258
|
const [x1, y1, x2] = getElementAbsoluteCoords(element, elementsMap);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MIME_TYPES } from "../../constants";
|
|
2
2
|
import { getElementAbsoluteCoords } from "../../element/bounds";
|
|
3
|
-
import {
|
|
3
|
+
import { hitElementBoundingBox } from "../../element/collision";
|
|
4
4
|
import { rotate } from "../../math";
|
|
5
5
|
import { DEFAULT_LINK_SIZE } from "../../renderer/renderElement";
|
|
6
6
|
export const EXTERNAL_LINK_IMG = document.createElement("img");
|
|
@@ -39,10 +39,9 @@ export const isPointHittingLink = (element, elementsMap, appState, [x, y], isMob
|
|
|
39
39
|
if (!element.link || appState.selectedElementIds[element.id]) {
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
|
-
const threshold = 4 / appState.zoom.value;
|
|
43
42
|
if (!isMobile &&
|
|
44
43
|
appState.viewModeEnabled &&
|
|
45
|
-
|
|
44
|
+
hitElementBoundingBox(x, y, element, elementsMap)) {
|
|
46
45
|
return true;
|
|
47
46
|
}
|
|
48
47
|
return isPointHittingLinkIcon(element, elementsMap, appState, [x, y]);
|
|
@@ -197,4 +197,5 @@ export declare const coffeeIcon: JSX.Element;
|
|
|
197
197
|
export declare const DeviceDesktopIcon: JSX.Element;
|
|
198
198
|
export declare const arrowBarToLeftIcon: JSX.Element;
|
|
199
199
|
export declare const youtubeIcon: JSX.Element;
|
|
200
|
+
export declare const gridIcon: JSX.Element;
|
|
200
201
|
export {};
|
|
@@ -244,3 +244,4 @@ export const DeviceDesktopIcon = createIcon(_jsxs("g", { stroke: "currentColor",
|
|
|
244
244
|
// arrow-bar-to-left
|
|
245
245
|
export const arrowBarToLeftIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M10 12l10 0" }), _jsx("path", { d: "M10 12l4 4" }), _jsx("path", { d: "M10 12l4 -4" }), _jsx("path", { d: "M4 4l0 16" })] }), tablerIconProps);
|
|
246
246
|
export const youtubeIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M2 8a4 4 0 0 1 4 -4h12a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-12a4 4 0 0 1 -4 -4v-8z" }), _jsx("path", { d: "M10 9l5 3l-5 3z" })] }), tablerIconProps);
|
|
247
|
+
export const gridIcon = createIcon(_jsxs("g", { strokeWidth: 1.5, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M3 6h18" }), _jsx("path", { d: "M3 12h18" }), _jsx("path", { d: "M3 18h18" }), _jsx("path", { d: "M6 3v18" }), _jsx("path", { d: "M12 3v18" }), _jsx("path", { d: "M18 3v18" })] }), tablerIconProps);
|
|
@@ -124,6 +124,8 @@ export declare const DEFAULT_ZOOM_VALUE: NormalizedZoomValue;
|
|
|
124
124
|
export declare const COLOR_WHITE = "#ffffff";
|
|
125
125
|
export declare const COLOR_CHARCOAL_BLACK = "#1e1e1e";
|
|
126
126
|
export declare const COLOR_TRANSPARENT = "transparent";
|
|
127
|
+
export declare const SIDE_RESIZING_THRESHOLD: number;
|
|
128
|
+
export declare const DEFAULT_COLLISION_THRESHOLD: number;
|
|
127
129
|
export declare const COLOR_VOICE_CALL = "#a2f1a6";
|
|
128
130
|
export declare const CANVAS_ONLY_ACTIONS: string[];
|
|
129
131
|
export declare const GRID_SIZE = 20;
|
|
@@ -176,6 +178,7 @@ export declare const VERSION_TIMEOUT = 30000;
|
|
|
176
178
|
export declare const SCROLL_TIMEOUT = 100;
|
|
177
179
|
export declare const ZOOM_STEP = 0.1;
|
|
178
180
|
export declare const MIN_ZOOM = 0.1;
|
|
181
|
+
export declare const MAX_ZOOM = 30;
|
|
179
182
|
export declare const HYPERLINK_TOOLTIP_DELAY = 300;
|
|
180
183
|
export declare const IDLE_THRESHOLD = 60000;
|
|
181
184
|
export declare const ACTIVE_THRESHOLD = 3000;
|
|
@@ -224,9 +227,6 @@ export declare const ROUNDNESS: {
|
|
|
224
227
|
readonly PROPORTIONAL_RADIUS: 2;
|
|
225
228
|
readonly ADAPTIVE_RADIUS: 3;
|
|
226
229
|
};
|
|
227
|
-
/** key containt id of precedeing elemnt id we use in reconciliation during
|
|
228
|
-
* collaboration */
|
|
229
|
-
export declare const PRECEDING_ELEMENT_KEY = "__precedingElement__";
|
|
230
230
|
export declare const ROUGHNESS: {
|
|
231
231
|
readonly architect: 0;
|
|
232
232
|
readonly artist: 1;
|
|
@@ -132,6 +132,11 @@ export const COLOR_WHITE = "#ffffff";
|
|
|
132
132
|
export const COLOR_CHARCOAL_BLACK = "#1e1e1e";
|
|
133
133
|
export const COLOR_TRANSPARENT = "transparent";
|
|
134
134
|
// -----------------------------------------------
|
|
135
|
+
export const SIDE_RESIZING_THRESHOLD = 2 * DEFAULT_TRANSFORM_HANDLE_SPACING;
|
|
136
|
+
// a small epsilon to make side resizing always take precedence
|
|
137
|
+
// (avoids an increase in renders and changes to tests)
|
|
138
|
+
const EPSILON = 0.00001;
|
|
139
|
+
export const DEFAULT_COLLISION_THRESHOLD = 2 * SIDE_RESIZING_THRESHOLD - EPSILON;
|
|
135
140
|
// keep this in sync with CSS
|
|
136
141
|
export const COLOR_VOICE_CALL = "#a2f1a6";
|
|
137
142
|
export const CANVAS_ONLY_ACTIONS = ["selectAll"];
|
|
@@ -182,6 +187,7 @@ export const VERSION_TIMEOUT = 30000;
|
|
|
182
187
|
export const SCROLL_TIMEOUT = 100;
|
|
183
188
|
export const ZOOM_STEP = 0.1;
|
|
184
189
|
export const MIN_ZOOM = 0.1;
|
|
190
|
+
export const MAX_ZOOM = 30.0;
|
|
185
191
|
export const HYPERLINK_TOOLTIP_DELAY = 300;
|
|
186
192
|
// Report a user inactive after IDLE_THRESHOLD milliseconds
|
|
187
193
|
export const IDLE_THRESHOLD = 60_000;
|
|
@@ -266,9 +272,6 @@ export const ROUNDNESS = {
|
|
|
266
272
|
// (see DEFAULT_ADAPTIVE_RADIUS constant)
|
|
267
273
|
ADAPTIVE_RADIUS: 3,
|
|
268
274
|
};
|
|
269
|
-
/** key containt id of precedeing elemnt id we use in reconciliation during
|
|
270
|
-
* collaboration */
|
|
271
|
-
export const PRECEDING_ELEMENT_KEY = "__precedingElement__";
|
|
272
275
|
export const ROUGHNESS = {
|
|
273
276
|
architect: 0,
|
|
274
277
|
artist: 1,
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OrderedExcalidrawElement } from "../element/types";
|
|
2
|
+
import { AppState } from "../types";
|
|
3
|
+
import { MakeBrand } from "../utility-types";
|
|
4
|
+
export type ReconciledExcalidrawElement = OrderedExcalidrawElement & MakeBrand<"ReconciledElement">;
|
|
5
|
+
export type RemoteExcalidrawElement = OrderedExcalidrawElement & MakeBrand<"RemoteExcalidrawElement">;
|
|
6
|
+
export declare const reconcileElements: (localElements: readonly OrderedExcalidrawElement[], remoteElements: readonly RemoteExcalidrawElement[], localAppState: AppState) => ReconciledExcalidrawElement[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { orderByFractionalIndex, syncInvalidIndices } from "../fractionalIndex";
|
|
2
|
+
import { arrayToMap } from "../utils";
|
|
3
|
+
const shouldDiscardRemoteElement = (localAppState, local, remote) => {
|
|
4
|
+
if (local &&
|
|
5
|
+
// local element is being edited
|
|
6
|
+
(local.id === localAppState.editingElement?.id ||
|
|
7
|
+
local.id === localAppState.resizingElement?.id ||
|
|
8
|
+
local.id === localAppState.draggingElement?.id || // TODO: Is this still valid? As draggingElement is selection element, which is never part of the elements array
|
|
9
|
+
// local element is newer
|
|
10
|
+
local.version > remote.version ||
|
|
11
|
+
// resolve conflicting edits deterministically by taking the one with
|
|
12
|
+
// the lowest versionNonce
|
|
13
|
+
(local.version === remote.version &&
|
|
14
|
+
local.versionNonce < remote.versionNonce))) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
export const reconcileElements = (localElements, remoteElements, localAppState) => {
|
|
20
|
+
const localElementsMap = arrayToMap(localElements);
|
|
21
|
+
const reconciledElements = [];
|
|
22
|
+
const added = new Set();
|
|
23
|
+
// process remote elements
|
|
24
|
+
for (const remoteElement of remoteElements) {
|
|
25
|
+
if (!added.has(remoteElement.id)) {
|
|
26
|
+
const localElement = localElementsMap.get(remoteElement.id);
|
|
27
|
+
const discardRemoteElement = shouldDiscardRemoteElement(localAppState, localElement, remoteElement);
|
|
28
|
+
if (localElement && discardRemoteElement) {
|
|
29
|
+
reconciledElements.push(localElement);
|
|
30
|
+
added.add(localElement.id);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
reconciledElements.push(remoteElement);
|
|
34
|
+
added.add(remoteElement.id);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// process remaining local elements
|
|
39
|
+
for (const localElement of localElements) {
|
|
40
|
+
if (!added.has(localElement.id)) {
|
|
41
|
+
reconciledElements.push(localElement);
|
|
42
|
+
added.add(localElement.id);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const orderedElements = orderByFractionalIndex(reconciledElements);
|
|
46
|
+
// de-duplicate indices
|
|
47
|
+
syncInvalidIndices(orderedElements);
|
|
48
|
+
return orderedElements;
|
|
49
|
+
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { ExcalidrawElement } from "../element/types";
|
|
1
|
+
import { ExcalidrawElement, OrderedExcalidrawElement } from "../element/types";
|
|
2
2
|
import { AppState, BinaryFiles, LibraryItem } from "../types";
|
|
3
3
|
import { ImportedDataState } from "./types";
|
|
4
4
|
type RestoredAppState = Omit<AppState, "offsetTop" | "offsetLeft" | "width" | "height">;
|
|
5
5
|
export declare const AllowedExcalidrawActiveTools: Record<AppState["activeTool"]["type"], boolean>;
|
|
6
6
|
export type RestoredDataState = {
|
|
7
|
-
elements:
|
|
7
|
+
elements: OrderedExcalidrawElement[];
|
|
8
8
|
appState: RestoredAppState;
|
|
9
9
|
files: BinaryFiles;
|
|
10
10
|
};
|
|
11
11
|
export declare const restoreElements: (elements: ImportedDataState["elements"], localElements: readonly ExcalidrawElement[] | null | undefined, opts?: {
|
|
12
12
|
refreshDimensions?: boolean;
|
|
13
13
|
repairBindings?: boolean;
|
|
14
|
-
} | undefined) =>
|
|
14
|
+
} | undefined) => OrderedExcalidrawElement[];
|
|
15
15
|
export declare const restoreAppState: (appState: ImportedDataState["appState"], localAppState: Partial<AppState> | null | undefined) => RestoredAppState;
|
|
16
16
|
export declare const restore: (data: Pick<ImportedDataState, "appState" | "elements" | "files"> | null, localAppState: Partial<AppState> | null | undefined, localElements: readonly ExcalidrawElement[] | null | undefined, elementsConfig?: {
|
|
17
17
|
refreshDimensions?: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getNonDeletedElements, getNormalizedDimensions, isInvisiblySmallElement, refreshTextDimensions, } from "../element";
|
|
2
2
|
import { isTextElement, isUsingAdaptiveRadius } from "../element/typeChecks";
|
|
3
3
|
import { randomId } from "../random";
|
|
4
|
-
import { DEFAULT_FONT_FAMILY, DEFAULT_TEXT_ALIGN, DEFAULT_VERTICAL_ALIGN,
|
|
4
|
+
import { DEFAULT_FONT_FAMILY, DEFAULT_TEXT_ALIGN, DEFAULT_VERTICAL_ALIGN, FONT_FAMILY, ROUNDNESS, DEFAULT_SIDEBAR, DEFAULT_ELEMENT_PROPS, } from "../constants";
|
|
5
5
|
import { getDefaultAppState } from "../appState";
|
|
6
6
|
import { LinearElementEditor } from "../element/linearElementEditor";
|
|
7
7
|
import { bumpVersion } from "../element/mutateElement";
|
|
@@ -9,6 +9,7 @@ import { getUpdatedTimestamp, updateActiveTool } from "../utils";
|
|
|
9
9
|
import { arrayToMap } from "../utils";
|
|
10
10
|
import { detectLineHeight, getContainerElement, getDefaultLineHeight, } from "../element/textElement";
|
|
11
11
|
import { normalizeLink } from "./url";
|
|
12
|
+
import { syncInvalidIndices } from "../fractionalIndex";
|
|
12
13
|
export const AllowedExcalidrawActiveTools = {
|
|
13
14
|
selection: true,
|
|
14
15
|
text: true,
|
|
@@ -46,6 +47,7 @@ const restoreElementWithProperties = (element, extra) => {
|
|
|
46
47
|
// newly added elements
|
|
47
48
|
version: element.version || 1,
|
|
48
49
|
versionNonce: element.versionNonce ?? 0,
|
|
50
|
+
index: element.index ?? null,
|
|
49
51
|
isDeleted: element.isDeleted ?? false,
|
|
50
52
|
id: element.id || randomId(),
|
|
51
53
|
fillStyle: element.fillStyle || DEFAULT_ELEMENT_PROPS.fillStyle,
|
|
@@ -85,9 +87,6 @@ const restoreElementWithProperties = (element, extra) => {
|
|
|
85
87
|
base.customData =
|
|
86
88
|
"customData" in extra ? extra.customData : element.customData;
|
|
87
89
|
}
|
|
88
|
-
if (PRECEDING_ELEMENT_KEY in element) {
|
|
89
|
-
base[PRECEDING_ELEMENT_KEY] = element[PRECEDING_ELEMENT_KEY];
|
|
90
|
-
}
|
|
91
90
|
return {
|
|
92
91
|
...base,
|
|
93
92
|
...getNormalizedDimensions(base),
|
|
@@ -199,7 +198,7 @@ const restoreElement = (element) => {
|
|
|
199
198
|
return null;
|
|
200
199
|
};
|
|
201
200
|
/**
|
|
202
|
-
* Repairs
|
|
201
|
+
* Repairs container element's boundElements array by removing duplicates and
|
|
203
202
|
* fixing containerId of bound elements if not present. Also removes any
|
|
204
203
|
* bound elements that do not exist in the elements array.
|
|
205
204
|
*
|
|
@@ -275,7 +274,7 @@ localElements, opts) => {
|
|
|
275
274
|
// used to detect duplicate top-level element ids
|
|
276
275
|
const existingIds = new Set();
|
|
277
276
|
const localElementsMap = localElements ? arrayToMap(localElements) : null;
|
|
278
|
-
const restoredElements = (elements || []).reduce((elements, element) => {
|
|
277
|
+
const restoredElements = syncInvalidIndices((elements || []).reduce((elements, element) => {
|
|
279
278
|
// filtering out selection, which is legacy, no longer kept in elements,
|
|
280
279
|
// and causing issues if retained
|
|
281
280
|
if (element.type !== "selection" && !isInvisiblySmallElement(element)) {
|
|
@@ -293,7 +292,7 @@ localElements, opts) => {
|
|
|
293
292
|
}
|
|
294
293
|
}
|
|
295
294
|
return elements;
|
|
296
|
-
}, []);
|
|
295
|
+
}, []));
|
|
297
296
|
if (!opts?.repairBindings) {
|
|
298
297
|
return restoredElements;
|
|
299
298
|
}
|
|
@@ -78,4 +78,4 @@ export type ExcalidrawElementSkeleton = Extract<Exclude<ExcalidrawElement, Excal
|
|
|
78
78
|
} & Partial<ExcalidrawMagicFrameElement>);
|
|
79
79
|
export declare const convertToExcalidrawElements: (elementsSkeleton: ExcalidrawElementSkeleton[] | null, opts?: {
|
|
80
80
|
regenerateIds: boolean;
|
|
81
|
-
}) =>
|
|
81
|
+
}) => import("../element/types").OrderedExcalidrawElement[];
|
|
@@ -3,9 +3,10 @@ import { getCommonBounds, newElement, newLinearElement, redrawTextBoundingBox, }
|
|
|
3
3
|
import { bindLinearElement } from "../element/binding";
|
|
4
4
|
import { newFrameElement, newImageElement, newMagicFrameElement, newTextElement, } from "../element/newElement";
|
|
5
5
|
import { getDefaultLineHeight, measureText, normalizeText, } from "../element/textElement";
|
|
6
|
-
import { assertNever, cloneJSON, getFontString, toBrandedType } from "../utils";
|
|
6
|
+
import { arrayToMap, assertNever, cloneJSON, getFontString, toBrandedType, } from "../utils";
|
|
7
7
|
import { getSizeFromPoints } from "../points";
|
|
8
8
|
import { randomId } from "../random";
|
|
9
|
+
import { syncInvalidIndices } from "../fractionalIndex";
|
|
9
10
|
const DEFAULT_LINEAR_ELEMENT_PROPS = {
|
|
10
11
|
width: 100,
|
|
11
12
|
height: 0,
|
|
@@ -214,10 +215,10 @@ class ElementStore {
|
|
|
214
215
|
this.excalidrawElements.set(ele.id, ele);
|
|
215
216
|
};
|
|
216
217
|
getElements = () => {
|
|
217
|
-
return Array.from(this.excalidrawElements.values());
|
|
218
|
+
return syncInvalidIndices(Array.from(this.excalidrawElements.values()));
|
|
218
219
|
};
|
|
219
220
|
getElementsMap = () => {
|
|
220
|
-
return toBrandedType(this.
|
|
221
|
+
return toBrandedType(arrayToMap(this.getElements()));
|
|
221
222
|
};
|
|
222
223
|
getElement = (id) => {
|
|
223
224
|
return this.excalidrawElements.get(id);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { sanitizeUrl } from "@braintree/sanitize-url";
|
|
2
|
+
export const sanitizeHTMLAttribute = (html) => {
|
|
3
|
+
return html.replace(/"/g, """);
|
|
4
|
+
};
|
|
2
5
|
export const normalizeLink = (link) => {
|
|
3
6
|
link = link.trim();
|
|
4
7
|
if (!link) {
|
|
5
8
|
return link;
|
|
6
9
|
}
|
|
7
|
-
return sanitizeUrl(link);
|
|
10
|
+
return sanitizeUrl(sanitizeHTMLAttribute(link));
|
|
8
11
|
};
|
|
9
12
|
export const isLocalLink = (link) => {
|
|
10
13
|
return !!(link?.includes(location.origin) || link?.startsWith("/"));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import * as GA from "../ga";
|
|
2
|
+
import { ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawRectangleElement, ExcalidrawDiamondElement, ExcalidrawEllipseElement, ExcalidrawImageElement, ExcalidrawFrameLikeElement, ExcalidrawIframeLikeElement, NonDeleted, ExcalidrawLinearElement, NonDeletedExcalidrawElement, ElementsMap, NonDeletedSceneElementsMap, ExcalidrawTextElement } from "./types";
|
|
3
|
+
import { AppClassProperties, AppState, Point } from "../types";
|
|
4
|
+
import { ElementUpdate } from "./mutateElement";
|
|
4
5
|
export type SuggestedBinding = NonDeleted<ExcalidrawBindableElement> | SuggestedPointBinding;
|
|
5
6
|
export type SuggestedPointBinding = [
|
|
6
7
|
NonDeleted<ExcalidrawLinearElement>,
|
|
@@ -10,18 +11,18 @@ export type SuggestedPointBinding = [
|
|
|
10
11
|
export declare const shouldEnableBindingForPointerEvent: (event: React.PointerEvent<HTMLElement>) => boolean;
|
|
11
12
|
export declare const isBindingEnabled: (appState: AppState) => boolean;
|
|
12
13
|
export declare const bindOrUnbindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, startBindingElement: ExcalidrawBindableElement | null | "keep", endBindingElement: ExcalidrawBindableElement | null | "keep", elementsMap: NonDeletedSceneElementsMap) => void;
|
|
13
|
-
export declare const bindOrUnbindSelectedElements: (selectedElements: NonDeleted<ExcalidrawElement>[],
|
|
14
|
-
export declare const maybeBindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, appState: AppState,
|
|
14
|
+
export declare const bindOrUnbindSelectedElements: (selectedElements: NonDeleted<ExcalidrawElement>[], app: AppClassProperties) => void;
|
|
15
|
+
export declare const maybeBindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, appState: AppState, pointerCoords: {
|
|
15
16
|
x: number;
|
|
16
17
|
y: number;
|
|
17
|
-
},
|
|
18
|
+
}, app: AppClassProperties) => void;
|
|
18
19
|
export declare const bindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, hoveredElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: NonDeletedSceneElementsMap) => void;
|
|
19
20
|
export declare const isLinearElementSimpleAndAlreadyBound: (linearElement: NonDeleted<ExcalidrawLinearElement>, alreadyBoundToId: ExcalidrawBindableElement["id"] | undefined, bindableElement: ExcalidrawBindableElement) => boolean;
|
|
20
|
-
export declare const unbindLinearElements: (elements: NonDeleted<ExcalidrawElement>[], elementsMap: NonDeletedSceneElementsMap) => void;
|
|
21
|
+
export declare const unbindLinearElements: (elements: readonly NonDeleted<ExcalidrawElement>[], elementsMap: NonDeletedSceneElementsMap) => void;
|
|
21
22
|
export declare const getHoveredElementForBinding: (pointerCoords: {
|
|
22
23
|
x: number;
|
|
23
24
|
y: number;
|
|
24
|
-
},
|
|
25
|
+
}, app: AppClassProperties) => NonDeleted<ExcalidrawBindableElement> | null;
|
|
25
26
|
export declare const updateBoundElements: (changedElement: NonDeletedExcalidrawElement, elementsMap: ElementsMap, options?: {
|
|
26
27
|
simultaneouslyUpdated?: readonly ExcalidrawElement[];
|
|
27
28
|
newSize?: {
|
|
@@ -29,6 +30,60 @@ export declare const updateBoundElements: (changedElement: NonDeletedExcalidrawE
|
|
|
29
30
|
height: number;
|
|
30
31
|
};
|
|
31
32
|
}) => void;
|
|
32
|
-
export declare const getEligibleElementsForBinding: (selectedElements: NonDeleted<ExcalidrawElement>[],
|
|
33
|
+
export declare const getEligibleElementsForBinding: (selectedElements: NonDeleted<ExcalidrawElement>[], app: AppClassProperties) => SuggestedBinding[];
|
|
33
34
|
export declare const fixBindingsAfterDuplication: (sceneElements: readonly ExcalidrawElement[], oldElements: readonly ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>, duplicatesServeAsOld?: "duplicatesServeAsOld" | undefined) => void;
|
|
34
35
|
export declare const fixBindingsAfterDeletion: (sceneElements: readonly ExcalidrawElement[], deletedElements: readonly ExcalidrawElement[]) => void;
|
|
36
|
+
export declare const bindingBorderTest: (element: NonDeleted<ExcalidrawBindableElement>, { x, y }: {
|
|
37
|
+
x: number;
|
|
38
|
+
y: number;
|
|
39
|
+
}, app: AppClassProperties) => boolean;
|
|
40
|
+
export declare const maxBindingGap: (element: ExcalidrawElement, elementWidth: number, elementHeight: number) => number;
|
|
41
|
+
export declare const distanceToBindableElement: (element: ExcalidrawBindableElement, point: readonly [number, number], elementsMap: ElementsMap) => number;
|
|
42
|
+
export declare const distanceToEllipse: (element: ExcalidrawEllipseElement, point: readonly [number, number], elementsMap: ElementsMap) => number;
|
|
43
|
+
export declare const determineFocusDistance: (element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], elementsMap: ElementsMap) => number;
|
|
44
|
+
export declare const determineFocusPoint: (element: ExcalidrawBindableElement, focus: number, adjecentPoint: readonly [number, number], elementsMap: ElementsMap) => readonly [number, number];
|
|
45
|
+
export declare const intersectElementWithLine: (element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap: number | undefined, elementsMap: ElementsMap) => Point[];
|
|
46
|
+
export declare const getCircleIntersections: (center: readonly [number, number, number, number, number, number, number, number], radius: number, line: readonly [number, number, number, number, number, number, number, number]) => GA.Point[];
|
|
47
|
+
export declare const findFocusPointForEllipse: (ellipse: ExcalidrawEllipseElement, relativeDistance: number, point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
|
|
48
|
+
export declare const findFocusPointForRectangulars: (element: ExcalidrawRectangleElement | ExcalidrawImageElement | ExcalidrawDiamondElement | ExcalidrawTextElement | ExcalidrawIframeLikeElement | ExcalidrawFrameLikeElement, relativeDistance: number, point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
|
|
49
|
+
export declare const bindingProperties: Set<BindableProp | BindingProp>;
|
|
50
|
+
export type BindableProp = "boundElements";
|
|
51
|
+
export type BindingProp = "frameId" | "containerId" | "startBinding" | "endBinding";
|
|
52
|
+
/**
|
|
53
|
+
* Bound element containing bindings to `frameId`, `containerId`, `startBinding` or `endBinding`.
|
|
54
|
+
*/
|
|
55
|
+
export declare class BoundElement {
|
|
56
|
+
/**
|
|
57
|
+
* Unbind the affected non deleted bindable elements (removing element from `boundElements`).
|
|
58
|
+
* - iterates non deleted bindable elements (`containerId` | `startBinding.elementId` | `endBinding.elementId`) of the current element
|
|
59
|
+
* - prepares updates to unbind each bindable element's `boundElements` from the current element
|
|
60
|
+
*/
|
|
61
|
+
static unbindAffected(elements: ElementsMap, boundElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void): void;
|
|
62
|
+
/**
|
|
63
|
+
* Rebind the next affected non deleted bindable elements (adding element to `boundElements`).
|
|
64
|
+
* - iterates non deleted bindable elements (`containerId` | `startBinding.elementId` | `endBinding.elementId`) of the current element
|
|
65
|
+
* - prepares updates to rebind each bindable element's `boundElements` to the current element
|
|
66
|
+
*
|
|
67
|
+
* NOTE: rebind expects that affected elements were previously unbound with `BoundElement.unbindAffected`
|
|
68
|
+
*/
|
|
69
|
+
static rebindAffected: (elements: ElementsMap, boundElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void) => void;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Bindable element containing bindings to `boundElements`.
|
|
73
|
+
*/
|
|
74
|
+
export declare class BindableElement {
|
|
75
|
+
/**
|
|
76
|
+
* Unbind the affected non deleted bound elements (resetting `containerId`, `startBinding`, `endBinding` to `null`).
|
|
77
|
+
* - iterates through non deleted `boundElements` of the current element
|
|
78
|
+
* - prepares updates to unbind each bound element from the current element
|
|
79
|
+
*/
|
|
80
|
+
static unbindAffected(elements: ElementsMap, bindableElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void): void;
|
|
81
|
+
/**
|
|
82
|
+
* Rebind the affected non deleted bound elements (for now setting only `containerId`, as we cannot rebind arrows atm).
|
|
83
|
+
* - iterates through non deleted `boundElements` of the current element
|
|
84
|
+
* - prepares updates to rebind each bound element to the current element or unbind it from `boundElements` in case of conflicts
|
|
85
|
+
*
|
|
86
|
+
* NOTE: rebind expects that affected elements were previously unbound with `BindaleElement.unbindAffected`
|
|
87
|
+
*/
|
|
88
|
+
static rebindAffected: (elements: ElementsMap, bindableElement: ExcalidrawElement | undefined, updateElementWith: (affected: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>) => void) => void;
|
|
89
|
+
}
|