@dwelle/excalidraw 0.5.0-bb58eff → 0.5.0-bcfbd91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-9cddb37f-5K5MMBTZ.js → c4Diagram-9cddb37f-Z2BVR4KG.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-YLFK45LY.js → chunk-2R746FJ3.js} +21 -21
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-HPE2QM6Z.js → chunk-4YGSGIMJ.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-FG5PX37Z.js → chunk-7ZK24NYG.js} +398 -930
- package/dist/browser/dev/excalidraw-assets-dev/chunk-7ZK24NYG.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-VJWYXZRD.js → chunk-A4L3DQO2.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-LARCHXKL.js → chunk-CWUUGB6C.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-PTRCE3YZ.js → chunk-DLCKQH3C.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-ABU3Y4P6.js → chunk-IVZGHBP3.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-VVJS3CBB.js → chunk-J3RT3AEL.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-AQ5OI7FF.js → chunk-KN673SBB.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-OBKV4VWD.js → chunk-OGN4DE2Q.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-JRHEG4KR.js → chunk-P3NJMBHG.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-UN4RKPVH.js → chunk-QP4L67PY.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-AU5UG6FO.js → chunk-U7QYLFAH.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-FSI24XHB.js → chunk-ULL4JVA4.js} +7 -7
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-2WPXONHI.js → chunk-WFIY45QO.js} +2 -5
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-2WPXONHI.js.map → chunk-WFIY45QO.js.map} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-RMILGNZX.js → chunk-WWRYLVJC.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-bc733c3b-NWRL2CDH.js → classDiagram-bc733c3b-K5SPPM5G.js} +7 -7
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-8931bdaf-Y5FPX4CT.js → classDiagram-v2-8931bdaf-LMQ4MBCJ.js} +10 -10
- package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-VWSBJ543.js → directory-open-01563666-HET5VGVW.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-FYNYOZXP.js → directory-open-4ed118d0-EEZTUAOR.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/dist-MMLCHBGE.js +10 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-OFPNSLTO.js → en-CJBKYSM5.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-f6946109-URHWBVQF.js → erDiagram-f6946109-T5ZYWW62.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-K7UWK3UX.js → file-open-002ab408-2OQEKDVS.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-PUS6AQBV.js → file-open-7c801643-7IDWBVQC.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-AVBJT4K7.js → file-save-3189631c-D66DZOSK.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-FCWOWXVA.js → file-save-745eba88-3NARDH2Z.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-93327f21-ARY24FIN.js → flowDiagram-93327f21-OFTBRZYD.js} +11 -11
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-476db779-Y3LYCDLM.js → flowDiagram-v2-476db779-VVUICW5U.js} +11 -11
- package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5082a990-DTGYPOS7.js → flowchart-elk-definition-5082a990-KDDK5LFE.js} +8 -8
- package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-7ce12d6b-GWKDCJYX.js → ganttDiagram-7ce12d6b-XW6BLNYB.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-1e960c50-A4SIEE63.js → gitGraphDiagram-1e960c50-WAVVX7YE.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{image-ZQHNSB7P.css → image-BMBZMPAN.css} +20 -99
- package/dist/browser/dev/excalidraw-assets-dev/image-BMBZMPAN.css.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{image-J27XZPQC.js → image-DG6G3CCZ.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-BDWVJKFQ.js → image-blob-reduce.esm-OJYOZNL4.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-264bed3e-AUF35UHX.js → infoDiagram-264bed3e-SMYVWNAJ.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-31be0096-ADAT3O42.js → journeyDiagram-31be0096-IXIWAKJV.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-4fc2557c-YC2LM75P.js → mindmap-definition-4fc2557c-H5WTPEBY.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{pica-GXUQBC7B.js → pica-RRHXYZO2.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-157505fe-4XR6DLIZ.js → pieDiagram-157505fe-3LXENDEP.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-fd70f2d0-LIR55Z6M.js → quadrantDiagram-fd70f2d0-CBA7LD4X.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-19c99588-NKRCRRBM.js → requirementDiagram-19c99588-53JLZTYM.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{roundRect-ZNZYUVWJ.js → roundRect-5HI6M3OA.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-5dfd0049-VUKNRO5G.js → sequenceDiagram-5dfd0049-XJRLBGS7.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-133e3642-3NYPG4IW.js → stateDiagram-133e3642-ZVPN2MPZ.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-6371a76b-YINZI7AG.js → stateDiagram-v2-6371a76b-QIW3VCSC.js} +10 -10
- package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-5ed366f4-KWC42LPI.js → timeline-definition-5ed366f4-LGCWVNZT.js} +3 -3
- package/dist/browser/dev/index.css +19 -98
- package/dist/browser/dev/index.css.map +2 -2
- package/dist/browser/dev/index.js +5 -5
- package/dist/browser/prod/excalidraw-assets/{c4Diagram-9cddb37f-UIUBGLLC.js → c4Diagram-9cddb37f-CSAXQUMT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-I32TF3FD.js → chunk-56HIV6N6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-X3V4W6Y3.js → chunk-5PG4MN6E.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-XXT5RS66.js → chunk-5PXNTGLF.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-EQDCUI7P.js → chunk-6LDES2GZ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-4C6GEPVI.js → chunk-BWJEY7EX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-LOWTGNCV.js → chunk-CP5W5ACF.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-DBUEOZT5.js +269 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-MJ2YKZ3B.js → chunk-DF24HG3F.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-FVDUD6XA.js → chunk-DVVGVVYL.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-7CLKPETF.js → chunk-GTO2REC5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-YGSQT3TE.js → chunk-KQZZ435A.js} +2 -2
- package/dist/browser/prod/excalidraw-assets/{chunk-RVQN2TTU.js → chunk-ONH2E3HD.js} +3 -3
- package/dist/browser/prod/excalidraw-assets/{chunk-FGOIQKRL.js → chunk-QK2I4STK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-VZ5ZGWAN.js → chunk-TGFMJVS6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-5EY4KGYU.js → chunk-V6GEKVIM.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-VI6ARPX6.js → chunk-W7OUYNQP.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-bc733c3b-6BX33ZTH.js → classDiagram-bc733c3b-FZUH7HPQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-8931bdaf-ACBVEHQO.js → classDiagram-v2-8931bdaf-LRVGH5BD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{directory-open-01563666-C2PFQBKL.js → directory-open-01563666-WBDEPWFN.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{directory-open-4ed118d0-E55HNHTS.js → directory-open-4ed118d0-SHTOCZXQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/dist-JMLVFQ4W.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{en-46OXMRU6.js → en-6EOGX47W.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{erDiagram-f6946109-TYWREFGK.js → erDiagram-f6946109-IIBR3HHT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-open-002ab408-FQU3HANB.js → file-open-002ab408-7YMAGCE3.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-open-7c801643-BCD55L36.js → file-open-7c801643-2UIR6WEW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-save-3189631c-TAXV2OAM.js → file-save-3189631c-UAJTEO5I.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-save-745eba88-DPWZ3VE6.js → file-save-745eba88-TOUSYUTX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-93327f21-4VGGLTSV.js → flowDiagram-93327f21-XIY3FFTU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-476db779-EQMWJJEV.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5082a990-DWI3JPDY.js → flowchart-elk-definition-5082a990-LJBHN7JH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{ganttDiagram-7ce12d6b-FGLMWLXT.js → ganttDiagram-7ce12d6b-CBM3PKRU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-1e960c50-6PYRBTDK.js → gitGraphDiagram-1e960c50-TZDQTV4Y.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/image-NFLQBKBU.js +1 -0
- package/dist/browser/prod/excalidraw-assets/image-TGGHFJHC.css +1 -0
- package/dist/browser/prod/excalidraw-assets/{image-blob-reduce.esm-7C326NDW.js → image-blob-reduce.esm-NOK55Z4R.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{infoDiagram-264bed3e-B3RQYU4J.js → infoDiagram-264bed3e-VTVTW2PT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{journeyDiagram-31be0096-SPHJ2Z6S.js → journeyDiagram-31be0096-3RXCXFNL.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{mindmap-definition-4fc2557c-EKE5IPT5.js → mindmap-definition-4fc2557c-U2MTITUZ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pica-WBNTBMON.js → pica-FN4U5BBA.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pieDiagram-157505fe-R3GPKUOS.js → pieDiagram-157505fe-UPOKDCDE.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-fd70f2d0-E6DDN2FC.js → quadrantDiagram-fd70f2d0-G6SC76BN.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{requirementDiagram-19c99588-EDK37RW4.js → requirementDiagram-19c99588-OPA5Q2CG.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{roundRect-P4IDSYXR.js → roundRect-YDYZGRTK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-5dfd0049-SDPAZI6N.js → sequenceDiagram-5dfd0049-RLLGIVI3.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-133e3642-2GOIU2WH.js → stateDiagram-133e3642-POU4VV6D.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-6371a76b-HIFSCSY4.js → stateDiagram-v2-6371a76b-TI5DGF27.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{timeline-definition-5ed366f4-KTXR6TKT.js → timeline-definition-5ed366f4-RRRA7YP4.js} +1 -1
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +1 -1
- package/dist/{prod/en-54AU74IP.json → dev/en-JBWHKG2R.json} +1 -4
- package/dist/dev/index.css +19 -98
- package/dist/dev/index.css.map +2 -2
- package/dist/dev/index.js +524 -863
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +0 -9
- package/dist/excalidraw/actions/actionBoundText.d.ts +0 -6
- package/dist/excalidraw/actions/actionBoundText.js +1 -4
- package/dist/excalidraw/actions/actionCanvas.d.ts +0 -36
- package/dist/excalidraw/actions/actionClipboard.d.ts +0 -21
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +0 -9
- package/dist/excalidraw/actions/actionDuplicateSelection.js +0 -4
- package/dist/excalidraw/actions/actionElementLock.d.ts +0 -6
- package/dist/excalidraw/actions/actionExport.d.ts +1 -28
- package/dist/excalidraw/actions/actionFinalize.d.ts +0 -6
- package/dist/excalidraw/actions/actionFrame.d.ts +0 -9
- package/dist/excalidraw/actions/actionGroup.d.ts +0 -6
- package/dist/excalidraw/actions/actionGroup.js +2 -4
- package/dist/excalidraw/actions/actionHistory.js +0 -3
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +0 -3
- package/dist/excalidraw/actions/actionLink.d.ts +0 -3
- package/dist/excalidraw/actions/actionMenu.d.ts +0 -9
- package/dist/excalidraw/actions/actionNavigate.d.ts +0 -6
- package/dist/excalidraw/actions/actionNavigate.js +6 -15
- package/dist/excalidraw/actions/actionProperties.d.ts +0 -39
- package/dist/excalidraw/actions/actionSelectAll.d.ts +0 -3
- package/dist/excalidraw/actions/actionStyles.d.ts +0 -3
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +0 -3
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +0 -3
- package/dist/excalidraw/actions/actionToggleStats.d.ts +0 -3
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +0 -3
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +0 -3
- package/dist/excalidraw/actions/actionZindex.d.ts +11 -11
- package/dist/excalidraw/clients.d.ts +1 -10
- package/dist/excalidraw/clients.js +6 -153
- package/dist/excalidraw/components/App.d.ts +3 -3
- package/dist/excalidraw/components/App.js +38 -20
- package/dist/excalidraw/components/Avatar.d.ts +3 -2
- package/dist/excalidraw/components/Avatar.js +5 -2
- package/dist/excalidraw/components/UserList.d.ts +7 -3
- package/dist/excalidraw/components/UserList.js +34 -63
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +22 -19
- package/dist/excalidraw/components/icons.d.ts +0 -2
- package/dist/excalidraw/components/icons.js +1 -3
- package/dist/excalidraw/constants.d.ts +3 -2
- package/dist/excalidraw/constants.js +3 -3
- package/dist/excalidraw/data/restore.d.ts +3 -3
- package/dist/excalidraw/data/restore.js +6 -5
- package/dist/excalidraw/data/transform.d.ts +1 -1
- package/dist/excalidraw/data/transform.js +3 -4
- package/dist/excalidraw/element/embeddable.d.ts +0 -3
- package/dist/excalidraw/element/linearElementEditor.d.ts +1 -5
- package/dist/excalidraw/element/newElement.d.ts +1 -1
- package/dist/excalidraw/element/newElement.js +1 -2
- package/dist/excalidraw/element/types.d.ts +2 -14
- package/dist/excalidraw/errors.d.ts +0 -3
- package/dist/excalidraw/errors.js +0 -3
- package/dist/excalidraw/frame.d.ts +1 -1
- package/dist/excalidraw/laser-trails.js +1 -1
- package/dist/excalidraw/locales/en.json +1 -4
- package/dist/excalidraw/renderer/interactiveScene.js +119 -13
- package/dist/excalidraw/renderer/staticScene.js +4 -5
- package/dist/excalidraw/scene/Scene.d.ts +6 -7
- package/dist/excalidraw/scene/Scene.js +13 -28
- package/dist/excalidraw/scene/export.js +1 -2
- package/dist/excalidraw/scene/types.d.ts +21 -10
- package/dist/excalidraw/types.d.ts +4 -7
- package/dist/excalidraw/utils.js +0 -3
- package/dist/excalidraw/zindex.d.ts +2 -2
- package/dist/excalidraw/zindex.js +13 -9
- package/dist/{dev/en-54AU74IP.json → prod/en-JBWHKG2R.json} +1 -4
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +39 -39
- package/package.json +3 -4
- package/dist/browser/dev/excalidraw-assets-dev/chunk-FG5PX37Z.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/dist-HOOQ44NM.js +0 -10
- package/dist/browser/dev/excalidraw-assets-dev/image-ZQHNSB7P.css.map +0 -7
- package/dist/browser/prod/excalidraw-assets/chunk-D2I3QE7U.js +0 -269
- package/dist/browser/prod/excalidraw-assets/dist-XTBKPFET.js +0 -1
- package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-476db779-KLWICWG3.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-M662KTMJ.css +0 -1
- package/dist/browser/prod/excalidraw-assets/image-XP52XYUU.js +0 -1
- package/dist/excalidraw/data/reconcile.d.ts +0 -6
- package/dist/excalidraw/data/reconcile.js +0 -49
- package/dist/excalidraw/fractionalIndex.d.ts +0 -40
- package/dist/excalidraw/fractionalIndex.js +0 -241
- /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-9cddb37f-5K5MMBTZ.js.map → c4Diagram-9cddb37f-Z2BVR4KG.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-YLFK45LY.js.map → chunk-2R746FJ3.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-HPE2QM6Z.js.map → chunk-4YGSGIMJ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-VJWYXZRD.js.map → chunk-A4L3DQO2.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-LARCHXKL.js.map → chunk-CWUUGB6C.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-PTRCE3YZ.js.map → chunk-DLCKQH3C.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-ABU3Y4P6.js.map → chunk-IVZGHBP3.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-VVJS3CBB.js.map → chunk-J3RT3AEL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-AQ5OI7FF.js.map → chunk-KN673SBB.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-OBKV4VWD.js.map → chunk-OGN4DE2Q.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-JRHEG4KR.js.map → chunk-P3NJMBHG.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-UN4RKPVH.js.map → chunk-QP4L67PY.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-AU5UG6FO.js.map → chunk-U7QYLFAH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-FSI24XHB.js.map → chunk-ULL4JVA4.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-RMILGNZX.js.map → chunk-WWRYLVJC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-bc733c3b-NWRL2CDH.js.map → classDiagram-bc733c3b-K5SPPM5G.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-8931bdaf-Y5FPX4CT.js.map → classDiagram-v2-8931bdaf-LMQ4MBCJ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-VWSBJ543.js.map → directory-open-01563666-HET5VGVW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-FYNYOZXP.js.map → directory-open-4ed118d0-EEZTUAOR.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{dist-HOOQ44NM.js.map → dist-MMLCHBGE.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{en-OFPNSLTO.js.map → en-CJBKYSM5.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-f6946109-URHWBVQF.js.map → erDiagram-f6946109-T5ZYWW62.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-K7UWK3UX.js.map → file-open-002ab408-2OQEKDVS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-PUS6AQBV.js.map → file-open-7c801643-7IDWBVQC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-AVBJT4K7.js.map → file-save-3189631c-D66DZOSK.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-FCWOWXVA.js.map → file-save-745eba88-3NARDH2Z.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-93327f21-ARY24FIN.js.map → flowDiagram-93327f21-OFTBRZYD.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-476db779-Y3LYCDLM.js.map → flowDiagram-v2-476db779-VVUICW5U.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5082a990-DTGYPOS7.js.map → flowchart-elk-definition-5082a990-KDDK5LFE.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-7ce12d6b-GWKDCJYX.js.map → ganttDiagram-7ce12d6b-XW6BLNYB.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-1e960c50-A4SIEE63.js.map → gitGraphDiagram-1e960c50-WAVVX7YE.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-J27XZPQC.js.map → image-DG6G3CCZ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-BDWVJKFQ.js.map → image-blob-reduce.esm-OJYOZNL4.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-264bed3e-AUF35UHX.js.map → infoDiagram-264bed3e-SMYVWNAJ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-31be0096-ADAT3O42.js.map → journeyDiagram-31be0096-IXIWAKJV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-4fc2557c-YC2LM75P.js.map → mindmap-definition-4fc2557c-H5WTPEBY.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pica-GXUQBC7B.js.map → pica-RRHXYZO2.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-157505fe-4XR6DLIZ.js.map → pieDiagram-157505fe-3LXENDEP.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-fd70f2d0-LIR55Z6M.js.map → quadrantDiagram-fd70f2d0-CBA7LD4X.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-19c99588-NKRCRRBM.js.map → requirementDiagram-19c99588-53JLZTYM.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{roundRect-ZNZYUVWJ.js.map → roundRect-5HI6M3OA.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-5dfd0049-VUKNRO5G.js.map → sequenceDiagram-5dfd0049-XJRLBGS7.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-133e3642-3NYPG4IW.js.map → stateDiagram-133e3642-ZVPN2MPZ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-6371a76b-YINZI7AG.js.map → stateDiagram-v2-6371a76b-QIW3VCSC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-5ed366f4-KWC42LPI.js.map → timeline-definition-5ed366f4-LGCWVNZT.js.map} +0 -0
|
@@ -3,10 +3,9 @@ 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 {
|
|
6
|
+
import { assertNever, cloneJSON, getFontString, toBrandedType } from "../utils";
|
|
7
7
|
import { getSizeFromPoints } from "../points";
|
|
8
8
|
import { randomId } from "../random";
|
|
9
|
-
import { syncInvalidIndices } from "../fractionalIndex";
|
|
10
9
|
const DEFAULT_LINEAR_ELEMENT_PROPS = {
|
|
11
10
|
width: 100,
|
|
12
11
|
height: 0,
|
|
@@ -207,10 +206,10 @@ class ElementStore {
|
|
|
207
206
|
this.excalidrawElements.set(ele.id, ele);
|
|
208
207
|
};
|
|
209
208
|
getElements = () => {
|
|
210
|
-
return
|
|
209
|
+
return Array.from(this.excalidrawElements.values());
|
|
211
210
|
};
|
|
212
211
|
getElementsMap = () => {
|
|
213
|
-
return toBrandedType(
|
|
212
|
+
return toBrandedType(this.excalidrawElements);
|
|
214
213
|
};
|
|
215
214
|
getElement = (id) => {
|
|
216
215
|
return this.excalidrawElements.get(id);
|
|
@@ -136,9 +136,6 @@ export declare const actionSetEmbeddableAsActiveTool: {
|
|
|
136
136
|
id?: string | undefined;
|
|
137
137
|
socketId?: import("../types").SocketId | undefined;
|
|
138
138
|
isCurrentUser?: boolean | undefined;
|
|
139
|
-
isInCall?: boolean | undefined;
|
|
140
|
-
isSpeaking?: boolean | undefined;
|
|
141
|
-
isMuted?: boolean | undefined;
|
|
142
139
|
}>>;
|
|
143
140
|
showStats: boolean;
|
|
144
141
|
currentChartType: import("./types").ChartType;
|
|
@@ -242,15 +242,11 @@ export declare class LinearElementEditor {
|
|
|
242
242
|
color?: {
|
|
243
243
|
background: string;
|
|
244
244
|
stroke: string;
|
|
245
|
-
} | undefined;
|
|
245
|
+
} | undefined;
|
|
246
246
|
avatarUrl?: string | undefined;
|
|
247
247
|
id?: string | undefined;
|
|
248
|
-
/** whether you're dragging a point */
|
|
249
248
|
socketId?: import("../types").SocketId | undefined;
|
|
250
249
|
isCurrentUser?: boolean | undefined;
|
|
251
|
-
isInCall?: boolean | undefined;
|
|
252
|
-
isSpeaking?: boolean | undefined;
|
|
253
|
-
isMuted?: boolean | undefined;
|
|
254
250
|
}>>;
|
|
255
251
|
showStats: boolean;
|
|
256
252
|
currentChartType: import("./types").ChartType;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap } from "./types";
|
|
2
2
|
import { AppState } from "../types";
|
|
3
3
|
import { MarkOptional, Mutable } from "../utility-types";
|
|
4
|
-
export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "
|
|
4
|
+
export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData">;
|
|
5
5
|
export declare const newElement: (opts: {
|
|
6
6
|
type: ExcalidrawGenericElement["type"];
|
|
7
7
|
} & ElementConstructorOpts) => NonDeleted<ExcalidrawGenericElement>;
|
|
@@ -7,7 +7,7 @@ import { adjustXYWithRotation } from "../math";
|
|
|
7
7
|
import { getResizedElementAbsoluteCoords } from "./bounds";
|
|
8
8
|
import { measureText, normalizeText, wrapText, getBoundTextMaxWidth, getDefaultLineHeight, } from "./textElement";
|
|
9
9
|
import { DEFAULT_ELEMENT_PROPS, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_TEXT_ALIGN, DEFAULT_VERTICAL_ALIGN, VERTICAL_ALIGN, } from "../constants";
|
|
10
|
-
const _newElementBase = (type, { x, y, strokeColor = DEFAULT_ELEMENT_PROPS.strokeColor, backgroundColor = DEFAULT_ELEMENT_PROPS.backgroundColor, fillStyle = DEFAULT_ELEMENT_PROPS.fillStyle, strokeWidth = DEFAULT_ELEMENT_PROPS.strokeWidth, strokeStyle = DEFAULT_ELEMENT_PROPS.strokeStyle, roughness = DEFAULT_ELEMENT_PROPS.roughness, opacity = DEFAULT_ELEMENT_PROPS.opacity, width = 0, height = 0, angle = 0, groupIds = [], frameId = null,
|
|
10
|
+
const _newElementBase = (type, { x, y, strokeColor = DEFAULT_ELEMENT_PROPS.strokeColor, backgroundColor = DEFAULT_ELEMENT_PROPS.backgroundColor, fillStyle = DEFAULT_ELEMENT_PROPS.fillStyle, strokeWidth = DEFAULT_ELEMENT_PROPS.strokeWidth, strokeStyle = DEFAULT_ELEMENT_PROPS.strokeStyle, roughness = DEFAULT_ELEMENT_PROPS.roughness, opacity = DEFAULT_ELEMENT_PROPS.opacity, width = 0, height = 0, angle = 0, groupIds = [], frameId = null, roundness = null, boundElements = null, link = null, locked = DEFAULT_ELEMENT_PROPS.locked, ...rest }) => {
|
|
11
11
|
// assign type to guard against excess properties
|
|
12
12
|
const element = {
|
|
13
13
|
id: rest.id || randomId(),
|
|
@@ -26,7 +26,6 @@ const _newElementBase = (type, { x, y, strokeColor = DEFAULT_ELEMENT_PROPS.strok
|
|
|
26
26
|
opacity,
|
|
27
27
|
groupIds,
|
|
28
28
|
frameId,
|
|
29
|
-
index,
|
|
30
29
|
roundness,
|
|
31
30
|
seed: rest.seed ?? randomInteger(),
|
|
32
31
|
version: rest.version || 1,
|
|
@@ -18,9 +18,6 @@ export type StrokeStyle = "solid" | "dashed" | "dotted";
|
|
|
18
18
|
export type TextAlign = typeof TEXT_ALIGN[keyof typeof TEXT_ALIGN];
|
|
19
19
|
type VerticalAlignKeys = keyof typeof VERTICAL_ALIGN;
|
|
20
20
|
export type VerticalAlign = typeof VERTICAL_ALIGN[VerticalAlignKeys];
|
|
21
|
-
export type FractionalIndex = string & {
|
|
22
|
-
_brand: "franctionalIndex";
|
|
23
|
-
};
|
|
24
21
|
type _ExcalidrawElementBase = Readonly<{
|
|
25
22
|
id: string;
|
|
26
23
|
x: number;
|
|
@@ -49,11 +46,6 @@ type _ExcalidrawElementBase = Readonly<{
|
|
|
49
46
|
Used for deterministic reconciliation of updates during collaboration,
|
|
50
47
|
in case the versions (see above) are identical. */
|
|
51
48
|
versionNonce: number;
|
|
52
|
-
/** String in a fractional form defined by https://github.com/rocicorp/fractional-indexing.
|
|
53
|
-
Used for ordering in multiplayer scenarios, such as during reconciliation or undo / redo.
|
|
54
|
-
Always kept in sync with the array order by `syncMovedIndices` and `syncInvalidIndices`.
|
|
55
|
-
Could be null, i.e. for new elements which were not yet assigned to the scene. */
|
|
56
|
-
index: FractionalIndex | null;
|
|
57
49
|
isDeleted: boolean;
|
|
58
50
|
/** List of groups the element belongs to.
|
|
59
51
|
Ordered from deepest to shallowest. */
|
|
@@ -133,10 +125,6 @@ export type ExcalidrawGenericElement = ExcalidrawSelectionElement | ExcalidrawRe
|
|
|
133
125
|
* between peers and contain no state local to the peer.
|
|
134
126
|
*/
|
|
135
127
|
export type ExcalidrawElement = ExcalidrawGenericElement | ExcalidrawTextElement | ExcalidrawLinearElement | ExcalidrawFreeDrawElement | ExcalidrawImageElement | ExcalidrawFrameElement | ExcalidrawMagicFrameElement | ExcalidrawIframeElement | ExcalidrawEmbeddableElement;
|
|
136
|
-
export type Ordered<TElement extends ExcalidrawElement> = TElement & {
|
|
137
|
-
index: FractionalIndex;
|
|
138
|
-
};
|
|
139
|
-
export type OrderedExcalidrawElement = Ordered<ExcalidrawElement>;
|
|
140
128
|
export type NonDeleted<TElement extends ExcalidrawElement> = TElement & {
|
|
141
129
|
isDeleted: boolean;
|
|
142
130
|
};
|
|
@@ -207,11 +195,11 @@ export type NonDeletedElementsMap = Map<ExcalidrawElement["id"], NonDeletedExcal
|
|
|
207
195
|
* Map of all excalidraw Scene elements, including deleted.
|
|
208
196
|
* Not a subset. Use this type when you need access to current Scene elements.
|
|
209
197
|
*/
|
|
210
|
-
export type SceneElementsMap = Map<ExcalidrawElement["id"],
|
|
198
|
+
export type SceneElementsMap = Map<ExcalidrawElement["id"], ExcalidrawElement> & MakeBrand<"SceneElementsMap">;
|
|
211
199
|
/**
|
|
212
200
|
* Map of all non-deleted Scene elements.
|
|
213
201
|
* Not a subset. Use this type when you need access to current Scene elements.
|
|
214
202
|
*/
|
|
215
|
-
export type NonDeletedSceneElementsMap = Map<ExcalidrawElement["id"],
|
|
203
|
+
export type NonDeletedSceneElementsMap = Map<ExcalidrawElement["id"], NonDeletedExcalidrawElement> & MakeBrand<"NonDeletedSceneElementsMap">;
|
|
216
204
|
export type ElementsMapOrArray = readonly ExcalidrawElement[] | Readonly<ElementsMap>;
|
|
217
205
|
export {};
|
|
@@ -10,7 +10,4 @@ export declare class ImageSceneDataError extends Error {
|
|
|
10
10
|
code: ImageSceneDataErrorCode;
|
|
11
11
|
constructor(message?: string, code?: ImageSceneDataErrorCode);
|
|
12
12
|
}
|
|
13
|
-
export declare class InvalidFractionalIndexError extends Error {
|
|
14
|
-
code: "ELEMENT_HAS_INVALID_INDEX";
|
|
15
|
-
}
|
|
16
13
|
export {};
|
|
@@ -2,7 +2,7 @@ import { ElementsMap, ElementsMapOrArray, ExcalidrawElement, ExcalidrawFrameLike
|
|
|
2
2
|
import { AppClassProperties, AppState, StaticCanvasAppState } from "./types";
|
|
3
3
|
import type { ExcalidrawElementsIncludingDeleted } from "./scene/Scene";
|
|
4
4
|
import { ReadonlySetLike } from "./utility-types";
|
|
5
|
-
export declare const bindElementsToFramesAfterDuplication: (nextElements:
|
|
5
|
+
export declare const bindElementsToFramesAfterDuplication: (nextElements: ExcalidrawElement[], oldElements: readonly ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>) => void;
|
|
6
6
|
export declare function isElementIntersectingFrame(element: ExcalidrawElement, frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap): boolean;
|
|
7
7
|
export declare const getElementsCompletelyInFrame: (elements: readonly ExcalidrawElement[], frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => ExcalidrawElement[];
|
|
8
8
|
export declare const isElementContainingFrame: (elements: readonly ExcalidrawElement[], element: ExcalidrawElement, frame: ExcalidrawFrameLikeElement, elementsMap: ElementsMap) => boolean;
|
|
@@ -63,7 +63,7 @@ export class LaserTrails {
|
|
|
63
63
|
trail = new AnimatedTrail(this.animationFrameHandler, this.app, {
|
|
64
64
|
...this.getTrailOptions(),
|
|
65
65
|
fill: () => collaborator.pointer?.laserColor ||
|
|
66
|
-
getClientColor(key
|
|
66
|
+
getClientColor(collaborator.id || key),
|
|
67
67
|
});
|
|
68
68
|
trail.start(this.container);
|
|
69
69
|
this.collabTrails.set(key, trail);
|
|
@@ -536,10 +536,7 @@
|
|
|
536
536
|
},
|
|
537
537
|
"hint": {
|
|
538
538
|
"text": "Click on user to follow",
|
|
539
|
-
"followStatus": "You're currently following this user"
|
|
540
|
-
"inCall": "User is in a voice call",
|
|
541
|
-
"micMuted": "User's microphone is muted",
|
|
542
|
-
"isSpeaking": "User is speaking"
|
|
539
|
+
"followStatus": "You're currently following this user"
|
|
543
540
|
}
|
|
544
541
|
}
|
|
545
542
|
}
|
|
@@ -2,10 +2,11 @@ import { getElementAbsoluteCoords, OMIT_SIDES_FOR_MULTIPLE_ELEMENTS, getTransfor
|
|
|
2
2
|
import { roundRect } from "../renderer/roundRect";
|
|
3
3
|
import { getScrollBars, SCROLLBAR_COLOR, SCROLLBAR_WIDTH, } from "../scene/scrollbars";
|
|
4
4
|
import { renderSelectionElement } from "../renderer/renderElement";
|
|
5
|
-
import { getClientColor
|
|
5
|
+
import { getClientColor } from "../clients";
|
|
6
6
|
import { isSelectedViaGroup, getSelectedGroupIds, getElementsInGroup, selectGroupsFromGivenElements, } from "../groups";
|
|
7
7
|
import { OMIT_SIDES_FOR_FRAME, shouldShowBoundingBox, } from "../element/transformHandles";
|
|
8
8
|
import { arrayToMap, throttleRAF } from "../utils";
|
|
9
|
+
import { UserIdleState } from "../types";
|
|
9
10
|
import { DEFAULT_TRANSFORM_HANDLE_SPACING, FRAME_STYLE } from "../constants";
|
|
10
11
|
import { renderSnaps } from "../renderer/renderSnaps";
|
|
11
12
|
import { maxBindingGap } from "../element/collision";
|
|
@@ -349,10 +350,10 @@ const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selecte
|
|
|
349
350
|
selectionColors.push(selectionColor);
|
|
350
351
|
}
|
|
351
352
|
// remote users
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
const background = getClientColor(
|
|
353
|
+
if (renderConfig.remoteSelectedElementIds[element.id]) {
|
|
354
|
+
selectionColors.push(...renderConfig.remoteSelectedElementIds[element.id].map((socketId) => {
|
|
355
|
+
const { id } = renderConfig.remotePointerViewportCoords[socketId];
|
|
356
|
+
const background = getClientColor(id);
|
|
356
357
|
return background;
|
|
357
358
|
}));
|
|
358
359
|
}
|
|
@@ -365,7 +366,7 @@ const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selecte
|
|
|
365
366
|
elementX2,
|
|
366
367
|
elementY2,
|
|
367
368
|
selectionColors,
|
|
368
|
-
dashed: !!
|
|
369
|
+
dashed: !!renderConfig.remoteSelectedElementIds[element.id],
|
|
369
370
|
cx,
|
|
370
371
|
cy,
|
|
371
372
|
activeEmbeddable: appState.activeEmbeddable?.element === element &&
|
|
@@ -432,13 +433,118 @@ const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selecte
|
|
|
432
433
|
renderSnaps(context, appState);
|
|
433
434
|
// Reset zoom
|
|
434
435
|
context.restore();
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
renderConfig
|
|
438
|
-
appState
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
436
|
+
// Paint remote pointers
|
|
437
|
+
for (const clientId in renderConfig.remotePointerViewportCoords) {
|
|
438
|
+
let { x, y, id } = renderConfig.remotePointerViewportCoords[clientId];
|
|
439
|
+
x -= appState.offsetLeft;
|
|
440
|
+
y -= appState.offsetTop;
|
|
441
|
+
const width = 11;
|
|
442
|
+
const height = 14;
|
|
443
|
+
const isOutOfBounds = x < 0 ||
|
|
444
|
+
x > normalizedWidth - width ||
|
|
445
|
+
y < 0 ||
|
|
446
|
+
y > normalizedHeight - height;
|
|
447
|
+
x = Math.max(x, 0);
|
|
448
|
+
x = Math.min(x, normalizedWidth - width);
|
|
449
|
+
y = Math.max(y, 0);
|
|
450
|
+
y = Math.min(y, normalizedHeight - height);
|
|
451
|
+
const background = getClientColor(id);
|
|
452
|
+
context.save();
|
|
453
|
+
context.strokeStyle = background;
|
|
454
|
+
context.fillStyle = background;
|
|
455
|
+
const userState = renderConfig.remotePointerUserStates[clientId];
|
|
456
|
+
const isInactive = isOutOfBounds ||
|
|
457
|
+
userState === UserIdleState.IDLE ||
|
|
458
|
+
userState === UserIdleState.AWAY;
|
|
459
|
+
if (isInactive) {
|
|
460
|
+
context.globalAlpha = 0.3;
|
|
461
|
+
}
|
|
462
|
+
if (renderConfig.remotePointerButton &&
|
|
463
|
+
renderConfig.remotePointerButton[clientId] === "down") {
|
|
464
|
+
context.beginPath();
|
|
465
|
+
context.arc(x, y, 15, 0, 2 * Math.PI, false);
|
|
466
|
+
context.lineWidth = 3;
|
|
467
|
+
context.strokeStyle = "#ffffff88";
|
|
468
|
+
context.stroke();
|
|
469
|
+
context.closePath();
|
|
470
|
+
context.beginPath();
|
|
471
|
+
context.arc(x, y, 15, 0, 2 * Math.PI, false);
|
|
472
|
+
context.lineWidth = 1;
|
|
473
|
+
context.strokeStyle = background;
|
|
474
|
+
context.stroke();
|
|
475
|
+
context.closePath();
|
|
476
|
+
}
|
|
477
|
+
// Background (white outline) for arrow
|
|
478
|
+
context.fillStyle = oc.white;
|
|
479
|
+
context.strokeStyle = oc.white;
|
|
480
|
+
context.lineWidth = 6;
|
|
481
|
+
context.lineJoin = "round";
|
|
482
|
+
context.beginPath();
|
|
483
|
+
context.moveTo(x, y);
|
|
484
|
+
context.lineTo(x + 0, y + 14);
|
|
485
|
+
context.lineTo(x + 4, y + 9);
|
|
486
|
+
context.lineTo(x + 11, y + 8);
|
|
487
|
+
context.closePath();
|
|
488
|
+
context.stroke();
|
|
489
|
+
context.fill();
|
|
490
|
+
// Arrow
|
|
491
|
+
context.fillStyle = background;
|
|
492
|
+
context.strokeStyle = background;
|
|
493
|
+
context.lineWidth = 2;
|
|
494
|
+
context.lineJoin = "round";
|
|
495
|
+
context.beginPath();
|
|
496
|
+
if (isInactive) {
|
|
497
|
+
context.moveTo(x - 1, y - 1);
|
|
498
|
+
context.lineTo(x - 1, y + 15);
|
|
499
|
+
context.lineTo(x + 5, y + 10);
|
|
500
|
+
context.lineTo(x + 12, y + 9);
|
|
501
|
+
context.closePath();
|
|
502
|
+
context.fill();
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
context.moveTo(x, y);
|
|
506
|
+
context.lineTo(x + 0, y + 14);
|
|
507
|
+
context.lineTo(x + 4, y + 9);
|
|
508
|
+
context.lineTo(x + 11, y + 8);
|
|
509
|
+
context.closePath();
|
|
510
|
+
context.fill();
|
|
511
|
+
context.stroke();
|
|
512
|
+
}
|
|
513
|
+
const username = renderConfig.remotePointerUsernames[clientId] || "";
|
|
514
|
+
if (!isOutOfBounds && username) {
|
|
515
|
+
context.font = "600 12px sans-serif"; // font has to be set before context.measureText()
|
|
516
|
+
const offsetX = x + width / 2;
|
|
517
|
+
const offsetY = y + height + 2;
|
|
518
|
+
const paddingHorizontal = 5;
|
|
519
|
+
const paddingVertical = 3;
|
|
520
|
+
const measure = context.measureText(username);
|
|
521
|
+
const measureHeight = measure.actualBoundingBoxDescent + measure.actualBoundingBoxAscent;
|
|
522
|
+
const finalHeight = Math.max(measureHeight, 12);
|
|
523
|
+
const boxX = offsetX - 1;
|
|
524
|
+
const boxY = offsetY - 1;
|
|
525
|
+
const boxWidth = measure.width + 2 + paddingHorizontal * 2 + 2;
|
|
526
|
+
const boxHeight = finalHeight + 2 + paddingVertical * 2 + 2;
|
|
527
|
+
if (context.roundRect) {
|
|
528
|
+
context.beginPath();
|
|
529
|
+
context.roundRect(boxX, boxY, boxWidth, boxHeight, 8);
|
|
530
|
+
context.fillStyle = background;
|
|
531
|
+
context.fill();
|
|
532
|
+
context.strokeStyle = oc.white;
|
|
533
|
+
context.stroke();
|
|
534
|
+
}
|
|
535
|
+
else {
|
|
536
|
+
roundRect(context, boxX, boxY, boxWidth, boxHeight, 8, oc.white);
|
|
537
|
+
}
|
|
538
|
+
context.fillStyle = oc.black;
|
|
539
|
+
context.fillText(username, offsetX + paddingHorizontal + 1, offsetY +
|
|
540
|
+
paddingVertical +
|
|
541
|
+
measure.actualBoundingBoxAscent +
|
|
542
|
+
Math.floor((finalHeight - measureHeight) / 2) +
|
|
543
|
+
2);
|
|
544
|
+
}
|
|
545
|
+
context.restore();
|
|
546
|
+
context.closePath();
|
|
547
|
+
}
|
|
442
548
|
// Paint scrollbars
|
|
443
549
|
let scrollBars;
|
|
444
550
|
if (renderConfig.renderScrollbars) {
|
|
@@ -9,11 +9,10 @@ import { bootstrapCanvas, getNormalizedCanvasDimensions } from "./helpers";
|
|
|
9
9
|
import { throttleRAF } from "../utils";
|
|
10
10
|
const strokeGrid = (context, gridSize, scrollX, scrollY, zoom, width, height) => {
|
|
11
11
|
const BOLD_LINE_FREQUENCY = 5;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
})(GridLineColor || (GridLineColor = {}));
|
|
12
|
+
const GridLineColor = {
|
|
13
|
+
Bold: "#cccccc",
|
|
14
|
+
Regular: "#e5e5e5",
|
|
15
|
+
};
|
|
17
16
|
const offsetX = -Math.round(zoom.value / gridSize) * gridSize + (scrollX % gridSize);
|
|
18
17
|
const offsetY = -Math.round(zoom.value / gridSize) * gridSize + (scrollY % gridSize);
|
|
19
18
|
const lineWidth = Math.min(1 / zoom.value, 1);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawFrameLikeElement, ElementsMapOrArray
|
|
1
|
+
import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawFrameLikeElement, ElementsMapOrArray } from "../element/types";
|
|
2
2
|
import { LinearElementEditor } from "../element/linearElementEditor";
|
|
3
3
|
import { AppState } from "../types";
|
|
4
4
|
type ElementIdKey = InstanceType<typeof LinearElementEditor>["elementId"];
|
|
@@ -20,10 +20,10 @@ declare class Scene {
|
|
|
20
20
|
private elementsMap;
|
|
21
21
|
private selectedElementsCache;
|
|
22
22
|
private versionNonce;
|
|
23
|
-
getElementsMapIncludingDeleted(): Map<string,
|
|
24
|
-
getNonDeletedElementsMap(): Map<string,
|
|
25
|
-
getElementsIncludingDeleted(): readonly
|
|
26
|
-
getNonDeletedElements(): readonly
|
|
23
|
+
getElementsMapIncludingDeleted(): Map<string, ExcalidrawElement> & import("../utility-types").MakeBrand<"SceneElementsMap">;
|
|
24
|
+
getNonDeletedElementsMap(): Map<string, NonDeletedExcalidrawElement> & import("../utility-types").MakeBrand<"NonDeletedSceneElementsMap">;
|
|
25
|
+
getElementsIncludingDeleted(): readonly ExcalidrawElement[];
|
|
26
|
+
getNonDeletedElements(): readonly NonDeletedExcalidrawElement[];
|
|
27
27
|
getFramesIncludingDeleted(): readonly ExcalidrawFrameLikeElement[];
|
|
28
28
|
getSelectedElements(opts: {
|
|
29
29
|
selectedElementIds: AppState["selectedElementIds"];
|
|
@@ -59,8 +59,7 @@ declare class Scene {
|
|
|
59
59
|
destroy(): void;
|
|
60
60
|
insertElementAtIndex(element: ExcalidrawElement, index: number): void;
|
|
61
61
|
insertElementsAtIndex(elements: ExcalidrawElement[], index: number): void;
|
|
62
|
-
|
|
63
|
-
insertElements: (elements: ExcalidrawElement[]) => void;
|
|
62
|
+
addNewElement: (element: ExcalidrawElement) => void;
|
|
64
63
|
getElementIndex(elementId: string): number;
|
|
65
64
|
getContainerElement: (element: (ExcalidrawElement & {
|
|
66
65
|
containerId: ExcalidrawElement["id"] | null;
|
|
@@ -2,10 +2,7 @@ import { isNonDeletedElement } from "../element";
|
|
|
2
2
|
import { isFrameLikeElement } from "../element/typeChecks";
|
|
3
3
|
import { getSelectedElements } from "./selection";
|
|
4
4
|
import { randomInteger } from "../random";
|
|
5
|
-
import { syncInvalidIndices, syncMovedIndices, validateFractionalIndices, } from "../fractionalIndex";
|
|
6
|
-
import { arrayToMap } from "../utils";
|
|
7
5
|
import { toBrandedType } from "../utils";
|
|
8
|
-
import { ENV } from "../constants";
|
|
9
6
|
const getNonDeletedElements = (allElements) => {
|
|
10
7
|
const elementsMap = new Map();
|
|
11
8
|
const elements = [];
|
|
@@ -62,7 +59,6 @@ class Scene {
|
|
|
62
59
|
callbacks = new Set();
|
|
63
60
|
nonDeletedElements = [];
|
|
64
61
|
nonDeletedElementsMap = toBrandedType(new Map());
|
|
65
|
-
// ideally all elements within the scene should be wrapped around with `Ordered` type, but right now there is no real benefit doing so
|
|
66
62
|
elements = [];
|
|
67
63
|
nonDeletedFramesLikes = [];
|
|
68
64
|
frames = [];
|
|
@@ -155,17 +151,12 @@ class Scene {
|
|
|
155
151
|
return didChange;
|
|
156
152
|
}
|
|
157
153
|
replaceAllElements(nextElements) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
154
|
+
this.elements =
|
|
155
|
+
// ts doesn't like `Array.isArray` of `instanceof Map`
|
|
156
|
+
nextElements instanceof Array
|
|
157
|
+
? nextElements
|
|
158
|
+
: Array.from(nextElements.values());
|
|
163
159
|
const nextFrameLikes = [];
|
|
164
|
-
if (import.meta.env.DEV || import.meta.env.MODE === ENV.TEST) {
|
|
165
|
-
// throw on invalid indices in test / dev to potentially detect cases were we forgot to sync moved elements
|
|
166
|
-
validateFractionalIndices(_nextElements.map((x) => x.index));
|
|
167
|
-
}
|
|
168
|
-
this.elements = syncInvalidIndices(_nextElements);
|
|
169
160
|
this.elementsMap.clear();
|
|
170
161
|
this.elements.forEach((element) => {
|
|
171
162
|
if (isFrameLikeElement(element)) {
|
|
@@ -200,8 +191,8 @@ class Scene {
|
|
|
200
191
|
};
|
|
201
192
|
}
|
|
202
193
|
destroy() {
|
|
203
|
-
this.elements = [];
|
|
204
194
|
this.nonDeletedElements = [];
|
|
195
|
+
this.elements = [];
|
|
205
196
|
this.nonDeletedFramesLikes = [];
|
|
206
197
|
this.frames = [];
|
|
207
198
|
this.elementsMap.clear();
|
|
@@ -226,7 +217,6 @@ class Scene {
|
|
|
226
217
|
element,
|
|
227
218
|
...this.elements.slice(index),
|
|
228
219
|
];
|
|
229
|
-
syncMovedIndices(nextElements, arrayToMap([element]));
|
|
230
220
|
this.replaceAllElements(nextElements);
|
|
231
221
|
}
|
|
232
222
|
insertElementsAtIndex(elements, index) {
|
|
@@ -238,20 +228,15 @@ class Scene {
|
|
|
238
228
|
...elements,
|
|
239
229
|
...this.elements.slice(index),
|
|
240
230
|
];
|
|
241
|
-
syncMovedIndices(nextElements, arrayToMap(elements));
|
|
242
231
|
this.replaceAllElements(nextElements);
|
|
243
232
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const index = elements[0].frameId
|
|
252
|
-
? this.getElementIndex(elements[0].frameId)
|
|
253
|
-
: this.elements.length;
|
|
254
|
-
this.insertElementsAtIndex(elements, index);
|
|
233
|
+
addNewElement = (element) => {
|
|
234
|
+
if (element.frameId) {
|
|
235
|
+
this.insertElementAtIndex(element, this.getElementIndex(element.frameId));
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
this.replaceAllElements([...this.elements, element]);
|
|
239
|
+
}
|
|
255
240
|
};
|
|
256
241
|
getElementIndex(elementId) {
|
|
257
242
|
return this.elements.findIndex((element) => element.id === elementId);
|
|
@@ -11,7 +11,6 @@ import { getElementsOverlappingFrame, getFrameLikeElements, getFrameLikeTitle, g
|
|
|
11
11
|
import { newTextElement } from "../element";
|
|
12
12
|
import { newElementWith } from "../element/mutateElement";
|
|
13
13
|
import { isFrameElement, isFrameLikeElement } from "../element/typeChecks";
|
|
14
|
-
import { syncInvalidIndices } from "../fractionalIndex";
|
|
15
14
|
import { renderStaticScene } from "../renderer/staticScene";
|
|
16
15
|
const SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;
|
|
17
16
|
const truncateText = (element, maxWidth) => {
|
|
@@ -301,7 +300,7 @@ export const exportToCanvas = async ({ data, config, }) => {
|
|
|
301
300
|
canvas,
|
|
302
301
|
rc: rough.canvas(canvas),
|
|
303
302
|
elementsMap: toBrandedType(arrayToMap(elementsForRender)),
|
|
304
|
-
allElementsMap: toBrandedType(arrayToMap(
|
|
303
|
+
allElementsMap: toBrandedType(arrayToMap(elements)),
|
|
305
304
|
visibleElements: elementsForRender,
|
|
306
305
|
appState: {
|
|
307
306
|
...appState,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RoughCanvas } from "roughjs/bin/canvas";
|
|
2
2
|
import { Drawable } from "roughjs/bin/core";
|
|
3
|
-
import {
|
|
4
|
-
import { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState
|
|
3
|
+
import { ExcalidrawTextElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../element/types";
|
|
4
|
+
import { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState } from "../types";
|
|
5
5
|
import { MakeBrand } from "../utility-types";
|
|
6
6
|
export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">;
|
|
7
7
|
export type StaticCanvasRenderConfig = {
|
|
@@ -26,14 +26,25 @@ export type SVGRenderConfig = {
|
|
|
26
26
|
embedsValidationStatus: EmbedsValidationStatus;
|
|
27
27
|
};
|
|
28
28
|
export type InteractiveCanvasRenderConfig = {
|
|
29
|
-
remoteSelectedElementIds:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
remoteSelectedElementIds: {
|
|
30
|
+
[elementId: string]: string[];
|
|
31
|
+
};
|
|
32
|
+
remotePointerViewportCoords: {
|
|
33
|
+
[id: string]: {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
remotePointerUserStates: {
|
|
40
|
+
[id: string]: string;
|
|
41
|
+
};
|
|
42
|
+
remotePointerUsernames: {
|
|
43
|
+
[id: string]: string;
|
|
44
|
+
};
|
|
45
|
+
remotePointerButton?: {
|
|
46
|
+
[id: string]: string | undefined;
|
|
47
|
+
};
|
|
37
48
|
selectionColor?: string;
|
|
38
49
|
renderScrollbars?: boolean;
|
|
39
50
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, ExcalidrawImageElement, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement
|
|
2
|
+
import { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, ExcalidrawImageElement, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement } from "./element/types";
|
|
3
3
|
import { Action } from "./actions/types";
|
|
4
4
|
import { Point as RoughPoint } from "roughjs/bin/geometry";
|
|
5
5
|
import { LinearElementEditor } from "./element/linearElementEditor";
|
|
@@ -36,9 +36,6 @@ export type Collaborator = Readonly<{
|
|
|
36
36
|
id?: string;
|
|
37
37
|
socketId?: SocketId;
|
|
38
38
|
isCurrentUser?: boolean;
|
|
39
|
-
isInCall?: boolean;
|
|
40
|
-
isSpeaking?: boolean;
|
|
41
|
-
isMuted?: boolean;
|
|
42
39
|
}>;
|
|
43
40
|
export type CollaboratorPointer = {
|
|
44
41
|
x: number;
|
|
@@ -273,9 +270,9 @@ export interface AppState {
|
|
|
273
270
|
y: number;
|
|
274
271
|
} | null;
|
|
275
272
|
objectsSnapModeEnabled: boolean;
|
|
276
|
-
/** the user's
|
|
273
|
+
/** the user's clientId & username who is being followed on the canvas */
|
|
277
274
|
userToFollow: UserToFollow | null;
|
|
278
|
-
/** the
|
|
275
|
+
/** the clientIds of the users following the current user */
|
|
279
276
|
followedBy: Set<SocketId>;
|
|
280
277
|
}
|
|
281
278
|
export type UIAppState = Omit<AppState, "suggestedBindings" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
|
|
@@ -330,7 +327,7 @@ export type OnUserFollowedPayload = {
|
|
|
330
327
|
};
|
|
331
328
|
export interface ExcalidrawProps {
|
|
332
329
|
id?: string | null;
|
|
333
|
-
onChange?: (elements: readonly
|
|
330
|
+
onChange?: (elements: readonly ExcalidrawElement[], appState: AppState, files: BinaryFiles, id?: string | null) => void;
|
|
334
331
|
initialData?: MaybePromise<ExcalidrawInitialDataState | null>;
|
|
335
332
|
excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
|
|
336
333
|
onHomeButtonClick?: () => void;
|
package/dist/excalidraw/utils.js
CHANGED
|
@@ -517,9 +517,6 @@ export const isShallowEqual = (objA, objB, comparators, debug = false) => {
|
|
|
517
517
|
const aKeys = Object.keys(objA);
|
|
518
518
|
const bKeys = Object.keys(objB);
|
|
519
519
|
if (aKeys.length !== bKeys.length) {
|
|
520
|
-
if (debug) {
|
|
521
|
-
console.warn(`%cisShallowEqual: objects don't have same properties ->`, "color: #8B4000", objA, objB);
|
|
522
|
-
}
|
|
523
520
|
return false;
|
|
524
521
|
}
|
|
525
522
|
if (comparators && Array.isArray(comparators)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ExcalidrawElement } from "./element/types";
|
|
2
2
|
import { AppState } from "./types";
|
|
3
|
-
export declare const moveOneLeft: (allElements: readonly ExcalidrawElement[], appState: AppState) =>
|
|
4
|
-
export declare const moveOneRight: (allElements: readonly ExcalidrawElement[], appState: AppState) =>
|
|
3
|
+
export declare const moveOneLeft: (allElements: readonly ExcalidrawElement[], appState: AppState) => ExcalidrawElement[];
|
|
4
|
+
export declare const moveOneRight: (allElements: readonly ExcalidrawElement[], appState: AppState) => ExcalidrawElement[];
|
|
5
5
|
export declare const moveAllLeft: (allElements: readonly ExcalidrawElement[], appState: AppState) => readonly ExcalidrawElement[] | ExcalidrawElement[];
|
|
6
6
|
export declare const moveAllRight: (allElements: readonly ExcalidrawElement[], appState: AppState) => readonly ExcalidrawElement[] | ExcalidrawElement[];
|