@inkandswitch/patchwork-pkg-base 0.0.15 → 0.0.17
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/init.js +1 -0
- package/modules.json +11 -1
- package/package.json +1 -1
- package/packages/account-picker/dist/AccountPicker-7VBUJTTB.js +8860 -0
- package/packages/account-picker/dist/AccountPicker-7VBUJTTB.js.map +7 -0
- package/packages/account-picker/dist/AccountPicker-CN73XGEW.css +371 -0
- package/packages/account-picker/dist/AccountPicker-CN73XGEW.css.map +7 -0
- package/packages/account-picker/dist/chunk-5WRI5ZAA.js +31 -0
- package/packages/account-picker/dist/chunk-5WRI5ZAA.js.map +7 -0
- package/packages/account-picker/dist/tool.css +371 -0
- package/packages/account-picker/dist/tool.css.map +7 -0
- package/packages/account-picker/dist/tool.js +19 -0
- package/packages/account-picker/dist/tool.js.map +7 -0
- package/packages/account-picker/package.json +39 -0
- package/packages/codemirror-base/dist/chunk-KMEIRH3R.js +490 -0
- package/packages/codemirror-base/dist/chunk-KMEIRH3R.js.map +7 -0
- package/packages/codemirror-base/dist/lib/codemirror.js +7 -0
- package/packages/codemirror-base/dist/lib/codemirror.js.map +7 -0
- package/packages/codemirror-base/dist/main.js +17 -0
- package/packages/codemirror-base/dist/main.js.map +7 -0
- package/packages/codemirror-base/dist/tool.js +1799 -0
- package/packages/codemirror-base/dist/tool.js.map +7 -0
- package/packages/codemirror-base/package.json +55 -0
- package/packages/codemirror-markdown/dist/apl-QAIM2KBM.js +142 -0
- package/packages/codemirror-markdown/dist/apl-QAIM2KBM.js.map +7 -0
- package/packages/codemirror-markdown/dist/asciiarmor-G7UKQURA.js +58 -0
- package/packages/codemirror-markdown/dist/asciiarmor-G7UKQURA.js.map +7 -0
- package/packages/codemirror-markdown/dist/asn1-JTUXKWKT.js +144 -0
- package/packages/codemirror-markdown/dist/asn1-JTUXKWKT.js.map +7 -0
- package/packages/codemirror-markdown/dist/asterisk-NM6JCXOL.js +351 -0
- package/packages/codemirror-markdown/dist/asterisk-NM6JCXOL.js.map +7 -0
- package/packages/codemirror-markdown/dist/brainfuck-X7FFM55E.js +55 -0
- package/packages/codemirror-markdown/dist/brainfuck-X7FFM55E.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-46Z6CXSY.js +1062 -0
- package/packages/codemirror-markdown/dist/chunk-46Z6CXSY.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-6JT2ASRP.js +1111 -0
- package/packages/codemirror-markdown/dist/chunk-6JT2ASRP.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-CSJO4DNL.js +1424 -0
- package/packages/codemirror-markdown/dist/chunk-CSJO4DNL.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-FLC3A4DL.js +133 -0
- package/packages/codemirror-markdown/dist/chunk-FLC3A4DL.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-M3X2FRO3.js +998 -0
- package/packages/codemirror-markdown/dist/chunk-M3X2FRO3.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-MAW6NPUW.js +4930 -0
- package/packages/codemirror-markdown/dist/chunk-MAW6NPUW.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-MBTMKYFQ.js +1779 -0
- package/packages/codemirror-markdown/dist/chunk-MBTMKYFQ.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-NEI7FGV4.js +697 -0
- package/packages/codemirror-markdown/dist/chunk-NEI7FGV4.js.map +7 -0
- package/packages/codemirror-markdown/dist/chunk-PPGERYN5.js +2528 -0
- package/packages/codemirror-markdown/dist/chunk-PPGERYN5.js.map +7 -0
- package/packages/codemirror-markdown/dist/clike-DOBZTBQN.js +808 -0
- package/packages/codemirror-markdown/dist/clike-DOBZTBQN.js.map +7 -0
- package/packages/codemirror-markdown/dist/clojure-PTADSDNF.js +851 -0
- package/packages/codemirror-markdown/dist/clojure-PTADSDNF.js.map +7 -0
- package/packages/codemirror-markdown/dist/cmake-5HAC7YMH.js +73 -0
- package/packages/codemirror-markdown/dist/cmake-5HAC7YMH.js.map +7 -0
- package/packages/codemirror-markdown/dist/cobol-HAM4C42S.js +131 -0
- package/packages/codemirror-markdown/dist/cobol-HAM4C42S.js.map +7 -0
- package/packages/codemirror-markdown/dist/coffeescript-IBRKASSJ.js +310 -0
- package/packages/codemirror-markdown/dist/coffeescript-IBRKASSJ.js.map +7 -0
- package/packages/codemirror-markdown/dist/commonlisp-KMRPB5EW.js +132 -0
- package/packages/codemirror-markdown/dist/commonlisp-KMRPB5EW.js.map +7 -0
- package/packages/codemirror-markdown/dist/crystal-2MDF4EKJ.js +400 -0
- package/packages/codemirror-markdown/dist/crystal-2MDF4EKJ.js.map +7 -0
- package/packages/codemirror-markdown/dist/css-VQQXA3AY.js +1795 -0
- package/packages/codemirror-markdown/dist/css-VQQXA3AY.js.map +7 -0
- package/packages/codemirror-markdown/dist/cypher-ZZEGDGDJ.js +123 -0
- package/packages/codemirror-markdown/dist/cypher-ZZEGDGDJ.js.map +7 -0
- package/packages/codemirror-markdown/dist/d-5S6PJOOT.js +187 -0
- package/packages/codemirror-markdown/dist/d-5S6PJOOT.js.map +7 -0
- package/packages/codemirror-markdown/dist/datatype.js +48 -0
- package/packages/codemirror-markdown/dist/datatype.js.map +7 -0
- package/packages/codemirror-markdown/dist/diff-S77XBOWF.js +27 -0
- package/packages/codemirror-markdown/dist/diff-S77XBOWF.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-2C6IPJHB.js +98 -0
- package/packages/codemirror-markdown/dist/dist-2C6IPJHB.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-2H653DKD.js +170 -0
- package/packages/codemirror-markdown/dist/dist-2H653DKD.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-2O4EI6YQ.js +140 -0
- package/packages/codemirror-markdown/dist/dist-2O4EI6YQ.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-2UJRV4FH.js +75 -0
- package/packages/codemirror-markdown/dist/dist-2UJRV4FH.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-52S6W6Z3.js +15 -0
- package/packages/codemirror-markdown/dist/dist-52S6W6Z3.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-5KN6ODPO.js +340 -0
- package/packages/codemirror-markdown/dist/dist-5KN6ODPO.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-BOGB4NCA.js +20 -0
- package/packages/codemirror-markdown/dist/dist-BOGB4NCA.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-DZ4PW5HP.js +318 -0
- package/packages/codemirror-markdown/dist/dist-DZ4PW5HP.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-FDBKXKIA.js +100 -0
- package/packages/codemirror-markdown/dist/dist-FDBKXKIA.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-G2KVVLNT.js +381 -0
- package/packages/codemirror-markdown/dist/dist-G2KVVLNT.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-HHNZE2GE.js +193 -0
- package/packages/codemirror-markdown/dist/dist-HHNZE2GE.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-HNH74YPL.js +32 -0
- package/packages/codemirror-markdown/dist/dist-HNH74YPL.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-LBQUKRIG.js +27 -0
- package/packages/codemirror-markdown/dist/dist-LBQUKRIG.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-MFKCWPLQ.js +416 -0
- package/packages/codemirror-markdown/dist/dist-MFKCWPLQ.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-NISFJM3T.js +423 -0
- package/packages/codemirror-markdown/dist/dist-NISFJM3T.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-Q7P6VH6H.js +786 -0
- package/packages/codemirror-markdown/dist/dist-Q7P6VH6H.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-RWF5A5GN.js +451 -0
- package/packages/codemirror-markdown/dist/dist-RWF5A5GN.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-UHUU7KLC.js +748 -0
- package/packages/codemirror-markdown/dist/dist-UHUU7KLC.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-WJMBFK7W.js +360 -0
- package/packages/codemirror-markdown/dist/dist-WJMBFK7W.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-XJYSXJ7H.js +115 -0
- package/packages/codemirror-markdown/dist/dist-XJYSXJ7H.js.map +7 -0
- package/packages/codemirror-markdown/dist/dist-YY24ZXZD.js +212 -0
- package/packages/codemirror-markdown/dist/dist-YY24ZXZD.js.map +7 -0
- package/packages/codemirror-markdown/dist/dockerfile-JECCOJWP.js +209 -0
- package/packages/codemirror-markdown/dist/dockerfile-JECCOJWP.js.map +7 -0
- package/packages/codemirror-markdown/dist/dtd-MNDWTW4Z.js +116 -0
- package/packages/codemirror-markdown/dist/dtd-MNDWTW4Z.js.map +7 -0
- package/packages/codemirror-markdown/dist/dylan-VQ4IHJDS.js +317 -0
- package/packages/codemirror-markdown/dist/dylan-VQ4IHJDS.js.map +7 -0
- package/packages/codemirror-markdown/dist/ebnf-IDZBFTCG.js +142 -0
- package/packages/codemirror-markdown/dist/ebnf-IDZBFTCG.js.map +7 -0
- package/packages/codemirror-markdown/dist/ecl-X3ROY7E6.js +180 -0
- package/packages/codemirror-markdown/dist/ecl-X3ROY7E6.js.map +7 -0
- package/packages/codemirror-markdown/dist/eiffel-WB3M7Y2E.js +136 -0
- package/packages/codemirror-markdown/dist/eiffel-WB3M7Y2E.js.map +7 -0
- package/packages/codemirror-markdown/dist/elm-VHXR6ZA3.js +178 -0
- package/packages/codemirror-markdown/dist/elm-VHXR6ZA3.js.map +7 -0
- package/packages/codemirror-markdown/dist/erlang-7ZBDDQDV.js +676 -0
- package/packages/codemirror-markdown/dist/erlang-7ZBDDQDV.js.map +7 -0
- package/packages/codemirror-markdown/dist/extensions/embed.js +325 -0
- package/packages/codemirror-markdown/dist/extensions/embed.js.map +7 -0
- package/packages/codemirror-markdown/dist/extensions/links.js +118 -0
- package/packages/codemirror-markdown/dist/extensions/links.js.map +7 -0
- package/packages/codemirror-markdown/dist/extensions/markdown.js +3476 -0
- package/packages/codemirror-markdown/dist/extensions/markdown.js.map +7 -0
- package/packages/codemirror-markdown/dist/factor-IKT2GQE2.js +70 -0
- package/packages/codemirror-markdown/dist/factor-IKT2GQE2.js.map +7 -0
- package/packages/codemirror-markdown/dist/fcl-CNBUVGUC.js +143 -0
- package/packages/codemirror-markdown/dist/fcl-CNBUVGUC.js.map +7 -0
- package/packages/codemirror-markdown/dist/forth-4BTPWSFZ.js +118 -0
- package/packages/codemirror-markdown/dist/forth-4BTPWSFZ.js.map +7 -0
- package/packages/codemirror-markdown/dist/fortran-V6F5DQPK.js +469 -0
- package/packages/codemirror-markdown/dist/fortran-V6F5DQPK.js.map +7 -0
- package/packages/codemirror-markdown/dist/gas-4DLP6BC4.js +296 -0
- package/packages/codemirror-markdown/dist/gas-4DLP6BC4.js.map +7 -0
- package/packages/codemirror-markdown/dist/gherkin-OSGPX6HI.js +117 -0
- package/packages/codemirror-markdown/dist/gherkin-OSGPX6HI.js.map +7 -0
- package/packages/codemirror-markdown/dist/groovy-R2JW63QF.js +225 -0
- package/packages/codemirror-markdown/dist/groovy-R2JW63QF.js.map +7 -0
- package/packages/codemirror-markdown/dist/haskell-GG7T4J6H.js +461 -0
- package/packages/codemirror-markdown/dist/haskell-GG7T4J6H.js.map +7 -0
- package/packages/codemirror-markdown/dist/haxe-ESFUJKSE.js +521 -0
- package/packages/codemirror-markdown/dist/haxe-ESFUJKSE.js.map +7 -0
- package/packages/codemirror-markdown/dist/http-SZLSACOW.js +81 -0
- package/packages/codemirror-markdown/dist/http-SZLSACOW.js.map +7 -0
- package/packages/codemirror-markdown/dist/idl-V7UH35RP.js +987 -0
- package/packages/codemirror-markdown/dist/idl-V7UH35RP.js.map +7 -0
- package/packages/codemirror-markdown/dist/javascript-MGRPKFDN.js +13 -0
- package/packages/codemirror-markdown/dist/javascript-MGRPKFDN.js.map +7 -0
- package/packages/codemirror-markdown/dist/julia-CWCVZVPG.js +409 -0
- package/packages/codemirror-markdown/dist/julia-CWCVZVPG.js.map +7 -0
- package/packages/codemirror-markdown/dist/livescript-IGKT2FL7.js +303 -0
- package/packages/codemirror-markdown/dist/livescript-IGKT2FL7.js.map +7 -0
- package/packages/codemirror-markdown/dist/lua-GHK7GCTS.js +258 -0
- package/packages/codemirror-markdown/dist/lua-GHK7GCTS.js.map +7 -0
- package/packages/codemirror-markdown/dist/main.js +58 -0
- package/packages/codemirror-markdown/dist/main.js.map +7 -0
- package/packages/codemirror-markdown/dist/mathematica-W5LMQI3M.js +112 -0
- package/packages/codemirror-markdown/dist/mathematica-W5LMQI3M.js.map +7 -0
- package/packages/codemirror-markdown/dist/mbox-A7CXJ4HZ.js +119 -0
- package/packages/codemirror-markdown/dist/mbox-A7CXJ4HZ.js.map +7 -0
- package/packages/codemirror-markdown/dist/mirc-WYJEQUBY.js +109 -0
- package/packages/codemirror-markdown/dist/mirc-WYJEQUBY.js.map +7 -0
- package/packages/codemirror-markdown/dist/mllike-C2YS6SJI.js +340 -0
- package/packages/codemirror-markdown/dist/mllike-C2YS6SJI.js.map +7 -0
- package/packages/codemirror-markdown/dist/modelica-BMJSLZS7.js +149 -0
- package/packages/codemirror-markdown/dist/modelica-BMJSLZS7.js.map +7 -0
- package/packages/codemirror-markdown/dist/mscgen-5BORDYHW.js +137 -0
- package/packages/codemirror-markdown/dist/mscgen-5BORDYHW.js.map +7 -0
- package/packages/codemirror-markdown/dist/mumps-BYE6H7ZX.js +95 -0
- package/packages/codemirror-markdown/dist/mumps-BYE6H7ZX.js.map +7 -0
- package/packages/codemirror-markdown/dist/nginx-Y54HR7MQ.js +143 -0
- package/packages/codemirror-markdown/dist/nginx-Y54HR7MQ.js.map +7 -0
- package/packages/codemirror-markdown/dist/nsis-UZLPE2DL.js +67 -0
- package/packages/codemirror-markdown/dist/nsis-UZLPE2DL.js.map +7 -0
- package/packages/codemirror-markdown/dist/ntriples-SAI3J2VH.js +155 -0
- package/packages/codemirror-markdown/dist/ntriples-SAI3J2VH.js.map +7 -0
- package/packages/codemirror-markdown/dist/octave-TLUBYOUX.js +213 -0
- package/packages/codemirror-markdown/dist/octave-TLUBYOUX.js.map +7 -0
- package/packages/codemirror-markdown/dist/oz-F6LNIR6Q.js +233 -0
- package/packages/codemirror-markdown/dist/oz-F6LNIR6Q.js.map +7 -0
- package/packages/codemirror-markdown/dist/pascal-WINE2FE6.js +107 -0
- package/packages/codemirror-markdown/dist/pascal-WINE2FE6.js.map +7 -0
- package/packages/codemirror-markdown/dist/perl-NZG3EIBE.js +1107 -0
- package/packages/codemirror-markdown/dist/perl-NZG3EIBE.js.map +7 -0
- package/packages/codemirror-markdown/dist/pig-U7OFLRCV.js +105 -0
- package/packages/codemirror-markdown/dist/pig-U7OFLRCV.js.map +7 -0
- package/packages/codemirror-markdown/dist/powershell-ZSUS7P6D.js +330 -0
- package/packages/codemirror-markdown/dist/powershell-ZSUS7P6D.js.map +7 -0
- package/packages/codemirror-markdown/dist/properties-IJRU6UJW.js +60 -0
- package/packages/codemirror-markdown/dist/properties-IJRU6UJW.js.map +7 -0
- package/packages/codemirror-markdown/dist/protobuf-2KETQIQ5.js +80 -0
- package/packages/codemirror-markdown/dist/protobuf-2KETQIQ5.js.map +7 -0
- package/packages/codemirror-markdown/dist/pug-IQCJJAZU.js +410 -0
- package/packages/codemirror-markdown/dist/pug-IQCJJAZU.js.map +7 -0
- package/packages/codemirror-markdown/dist/puppet-YIIDDH6A.js +139 -0
- package/packages/codemirror-markdown/dist/puppet-YIIDDH6A.js.map +7 -0
- package/packages/codemirror-markdown/dist/python-A6P3XTMX.js +429 -0
- package/packages/codemirror-markdown/dist/python-A6P3XTMX.js.map +7 -0
- package/packages/codemirror-markdown/dist/q-2KXN5RX7.js +135 -0
- package/packages/codemirror-markdown/dist/q-2KXN5RX7.js.map +7 -0
- package/packages/codemirror-markdown/dist/r-BB4MIIBH.js +174 -0
- package/packages/codemirror-markdown/dist/r-BB4MIIBH.js.map +7 -0
- package/packages/codemirror-markdown/dist/rpm-LMR25AQ3.js +111 -0
- package/packages/codemirror-markdown/dist/rpm-LMR25AQ3.js.map +7 -0
- package/packages/codemirror-markdown/dist/ruby-TSD6FT73.js +333 -0
- package/packages/codemirror-markdown/dist/ruby-TSD6FT73.js.map +7 -0
- package/packages/codemirror-markdown/dist/sas-6X4WWIGV.js +209 -0
- package/packages/codemirror-markdown/dist/sas-6X4WWIGV.js.map +7 -0
- package/packages/codemirror-markdown/dist/scheme-E3I46HBL.js +230 -0
- package/packages/codemirror-markdown/dist/scheme-E3I46HBL.js.map +7 -0
- package/packages/codemirror-markdown/dist/shell-GX3PRI4I.js +224 -0
- package/packages/codemirror-markdown/dist/shell-GX3PRI4I.js.map +7 -0
- package/packages/codemirror-markdown/dist/sieve-V65ZPL4F.js +137 -0
- package/packages/codemirror-markdown/dist/sieve-V65ZPL4F.js.map +7 -0
- package/packages/codemirror-markdown/dist/smalltalk-OVKP2CVW.js +123 -0
- package/packages/codemirror-markdown/dist/smalltalk-OVKP2CVW.js.map +7 -0
- package/packages/codemirror-markdown/dist/solr-C4DLQJCF.js +71 -0
- package/packages/codemirror-markdown/dist/solr-C4DLQJCF.js.map +7 -0
- package/packages/codemirror-markdown/dist/sparql-REKUW7B3.js +251 -0
- package/packages/codemirror-markdown/dist/sparql-REKUW7B3.js.map +7 -0
- package/packages/codemirror-markdown/dist/spreadsheet-S7NN2YTQ.js +89 -0
- package/packages/codemirror-markdown/dist/spreadsheet-S7NN2YTQ.js.map +7 -0
- package/packages/codemirror-markdown/dist/sql-ML2Q43YF.js +358 -0
- package/packages/codemirror-markdown/dist/sql-ML2Q43YF.js.map +7 -0
- package/packages/codemirror-markdown/dist/stex-TCOGKBT4.js +233 -0
- package/packages/codemirror-markdown/dist/stex-TCOGKBT4.js.map +7 -0
- package/packages/codemirror-markdown/dist/stylus-3ONNYZOM.js +591 -0
- package/packages/codemirror-markdown/dist/stylus-3ONNYZOM.js.map +7 -0
- package/packages/codemirror-markdown/dist/swift-CNWGZ22Y.js +293 -0
- package/packages/codemirror-markdown/dist/swift-CNWGZ22Y.js.map +7 -0
- package/packages/codemirror-markdown/dist/tcl-77IMAZYE.js +116 -0
- package/packages/codemirror-markdown/dist/tcl-77IMAZYE.js.map +7 -0
- package/packages/codemirror-markdown/dist/textile-6IWIIKFM.js +416 -0
- package/packages/codemirror-markdown/dist/textile-6IWIIKFM.js.map +7 -0
- package/packages/codemirror-markdown/dist/tiddlywiki-IJSZMUSA.js +231 -0
- package/packages/codemirror-markdown/dist/tiddlywiki-IJSZMUSA.js.map +7 -0
- package/packages/codemirror-markdown/dist/tiki-HG37JJIT.js +276 -0
- package/packages/codemirror-markdown/dist/tiki-HG37JJIT.js.map +7 -0
- package/packages/codemirror-markdown/dist/toml-NINU2IMM.js +78 -0
- package/packages/codemirror-markdown/dist/toml-NINU2IMM.js.map +7 -0
- package/packages/codemirror-markdown/dist/troff-AOQJ4Q4C.js +63 -0
- package/packages/codemirror-markdown/dist/troff-AOQJ4Q4C.js.map +7 -0
- package/packages/codemirror-markdown/dist/ttcn-TLOZ3FX3.js +211 -0
- package/packages/codemirror-markdown/dist/ttcn-TLOZ3FX3.js.map +7 -0
- package/packages/codemirror-markdown/dist/ttcn-cfg-3B6QY7QE.js +141 -0
- package/packages/codemirror-markdown/dist/ttcn-cfg-3B6QY7QE.js.map +7 -0
- package/packages/codemirror-markdown/dist/turtle-3N5KCGXP.js +132 -0
- package/packages/codemirror-markdown/dist/turtle-3N5KCGXP.js.map +7 -0
- package/packages/codemirror-markdown/dist/vb-I7M5DRLP.js +204 -0
- package/packages/codemirror-markdown/dist/vb-I7M5DRLP.js.map +7 -0
- package/packages/codemirror-markdown/dist/vbscript-U2ARSJLD.js +482 -0
- package/packages/codemirror-markdown/dist/vbscript-U2ARSJLD.js.map +7 -0
- package/packages/codemirror-markdown/dist/velocity-R3AYP5XJ.js +151 -0
- package/packages/codemirror-markdown/dist/velocity-R3AYP5XJ.js.map +7 -0
- package/packages/codemirror-markdown/dist/verilog-7VEWVDW6.js +456 -0
- package/packages/codemirror-markdown/dist/verilog-7VEWVDW6.js.map +7 -0
- package/packages/codemirror-markdown/dist/vhdl-JZUPPGBA.js +162 -0
- package/packages/codemirror-markdown/dist/vhdl-JZUPPGBA.js.map +7 -0
- package/packages/codemirror-markdown/dist/webidl-SLQFEELK.js +206 -0
- package/packages/codemirror-markdown/dist/webidl-SLQFEELK.js.map +7 -0
- package/packages/codemirror-markdown/dist/xquery-VXP5KJ6N.js +532 -0
- package/packages/codemirror-markdown/dist/xquery-VXP5KJ6N.js.map +7 -0
- package/packages/codemirror-markdown/dist/yacas-JRBC4BEV.js +132 -0
- package/packages/codemirror-markdown/dist/yacas-JRBC4BEV.js.map +7 -0
- package/packages/codemirror-markdown/dist/z80-AJF6WLUV.js +95 -0
- package/packages/codemirror-markdown/dist/z80-AJF6WLUV.js.map +7 -0
- package/packages/codemirror-markdown/example.js +46 -0
- package/packages/codemirror-markdown/package.json +62 -0
- package/packages/commands/dist/main.js +504 -0
- package/packages/commands/dist/main.js.map +7 -0
- package/packages/commands/package.json +28 -0
- package/packages/contact/dist/ContactAvatar-FP32ZZH2.js +161 -0
- package/packages/contact/dist/ContactAvatar-FP32ZZH2.js.map +7 -0
- package/packages/contact/dist/ContactViewer-ZHEE6INW.js +60 -0
- package/packages/contact/dist/ContactViewer-ZHEE6INW.js.map +7 -0
- package/packages/contact/dist/InlineContactAvatar-VZDPEZV2.js +46 -0
- package/packages/contact/dist/InlineContactAvatar-VZDPEZV2.js.map +7 -0
- package/packages/contact/dist/chunk-MOZI4Y4O.js +54 -0
- package/packages/contact/dist/chunk-MOZI4Y4O.js.map +7 -0
- package/packages/contact/dist/datatype-ABVDVPWS.js +27 -0
- package/packages/contact/dist/datatype-ABVDVPWS.js.map +7 -0
- package/packages/contact/dist/tool.css +81 -0
- package/packages/contact/dist/tool.css.map +7 -0
- package/packages/contact/dist/tool.js +70 -0
- package/packages/contact/dist/tool.js.map +7 -0
- package/packages/contact/package.json +46 -0
- package/packages/folder/dist/datatype-HWGUFBTQ.js +27 -0
- package/packages/folder/dist/datatype-HWGUFBTQ.js.map +7 -0
- package/packages/folder/dist/index.js +27 -0
- package/packages/folder/dist/index.js.map +7 -0
- package/packages/folder/dist/tool-62JZAZRP.js +366 -0
- package/packages/folder/dist/tool-62JZAZRP.js.map +7 -0
- package/packages/folder/package.json +32 -0
- package/packages/sideboard/dist/account-bar-OJQC3J6W.js +2 -0
- package/packages/sideboard/dist/account-bar-OJQC3J6W.js.map +7 -0
- package/packages/sideboard/dist/chunk-32FICX7K.js +26 -0
- package/packages/sideboard/dist/chunk-32FICX7K.js.map +7 -0
- package/packages/sideboard/dist/chunk-3OYP6TVA.js +2 -0
- package/packages/sideboard/dist/chunk-3OYP6TVA.js.map +7 -0
- package/packages/sideboard/dist/chunk-FW4363Y4.js +2 -0
- package/packages/sideboard/dist/chunk-FW4363Y4.js.map +7 -0
- package/packages/sideboard/dist/chunk-QKYKEZU4.js +2 -0
- package/packages/sideboard/dist/chunk-QKYKEZU4.js.map +7 -0
- package/packages/sideboard/dist/document-list-panel-42LSXXCO.js +2 -0
- package/packages/sideboard/dist/document-list-panel-42LSXXCO.js.map +7 -0
- package/packages/sideboard/dist/index.css +2 -0
- package/packages/sideboard/dist/index.css.map +7 -0
- package/packages/sideboard/dist/index.js +2 -0
- package/packages/sideboard/dist/index.js.map +7 -0
- package/packages/sideboard/dist/sideboard/sideboard.js +2 -0
- package/packages/sideboard/dist/sideboard/sideboard.js.map +7 -0
- package/packages/sideboard/package.json +56 -0
- package/packages/theming/dist/active-theme-K27UXDBG.js +26 -0
- package/packages/theming/dist/active-theme-K27UXDBG.js.map +7 -0
- package/packages/theming/dist/chunk-K4OOO2TK.js +281 -0
- package/packages/theming/dist/chunk-K4OOO2TK.js.map +7 -0
- package/packages/theming/dist/chunk-RATW7VZI.js +11 -0
- package/packages/theming/dist/chunk-RATW7VZI.js.map +7 -0
- package/packages/theming/dist/chunk-U7SC4JPE.js +86 -0
- package/packages/theming/dist/chunk-U7SC4JPE.js.map +7 -0
- package/packages/theming/dist/codemirror-theme.js +2415 -0
- package/packages/theming/dist/codemirror-theme.js.map +7 -0
- package/packages/theming/dist/datatype-UUJVIZM7.js +16 -0
- package/packages/theming/dist/datatype-UUJVIZM7.js.map +7 -0
- package/packages/theming/dist/gloom-JYQPEOHI.css +102 -0
- package/packages/theming/dist/lychee-BMLMUNP6.css +114 -0
- package/packages/theming/dist/main.js +112 -0
- package/packages/theming/dist/main.js.map +7 -0
- package/packages/theming/dist/theme-RC7MV6WP.css +691 -0
- package/packages/theming/dist/theme-editor-datatype-CIXRKEFF.js +11 -0
- package/packages/theming/dist/theme-editor-datatype-CIXRKEFF.js.map +7 -0
- package/packages/theming/dist/theme-editor.js +576 -0
- package/packages/theming/dist/theme-editor.js.map +7 -0
- package/packages/theming/dist/theme-titlebar-P2CODQGF.js +21 -0
- package/packages/theming/dist/theme-titlebar-P2CODQGF.js.map +7 -0
- package/packages/theming/dist/theme-tray-5L2KGCGD.js +351 -0
- package/packages/theming/dist/theme-tray-5L2KGCGD.js.map +7 -0
- package/packages/theming/dist/tool.js +405 -0
- package/packages/theming/dist/tool.js.map +7 -0
- package/packages/theming/package.json +48 -0
- package/packages/threepane/dist/IsolatedDocumentArea-LFSDWMIY.js +2 -0
- package/packages/threepane/dist/IsolatedDocumentArea-LFSDWMIY.js.map +7 -0
- package/packages/threepane/dist/PatchworkFrame-JTNZ6365.js +2 -0
- package/packages/threepane/dist/PatchworkFrame-JTNZ6365.js.map +7 -0
- package/packages/threepane/dist/chunk-7YXO2YGV.js +2 -0
- package/packages/threepane/dist/chunk-7YXO2YGV.js.map +7 -0
- package/packages/threepane/dist/chunk-FOMAU6H2.js +972 -0
- package/packages/threepane/dist/chunk-FOMAU6H2.js.map +7 -0
- package/packages/threepane/dist/chunk-FW4363Y4.js +2 -0
- package/packages/threepane/dist/chunk-FW4363Y4.js.map +7 -0
- package/packages/threepane/dist/datatypes-FKBTWAO7.js +2 -0
- package/packages/threepane/dist/datatypes-FKBTWAO7.js.map +7 -0
- package/packages/threepane/dist/index.js +2 -0
- package/packages/threepane/dist/index.js.map +7 -0
- package/packages/threepane/package.json +42 -0
- package/packages/tldraw4/dist/chunk-IKZWERSR.js +38 -0
- package/packages/tldraw4/dist/chunk-IKZWERSR.js.map +7 -0
- package/packages/tldraw4/dist/chunk-VF5CY24G.js +140894 -0
- package/packages/tldraw4/dist/chunk-VF5CY24G.js.map +7 -0
- package/packages/tldraw4/dist/datatype.js +46 -0
- package/packages/tldraw4/dist/datatype.js.map +7 -0
- package/packages/tldraw4/dist/main.css +3202 -0
- package/packages/tldraw4/dist/main.css.map +7 -0
- package/packages/tldraw4/dist/main.js +42 -0
- package/packages/tldraw4/dist/main.js.map +7 -0
- package/packages/tldraw4/dist/tool.js +8767 -0
- package/packages/tldraw4/dist/tool.js.map +7 -0
- package/packages/tldraw4/package.json +62 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAvatar,
|
|
3
|
+
getInitials,
|
|
4
|
+
setAvatarFallback,
|
|
5
|
+
setAvatarImage
|
|
6
|
+
} from "./chunk-MOZI4Y4O.js";
|
|
7
|
+
|
|
8
|
+
// src/ui.ts
|
|
9
|
+
var USER_COLOR_PALETTE = [
|
|
10
|
+
{ name: "Sky Blue", value: "hsl(200, 70%, 50%)" },
|
|
11
|
+
{ name: "Coral", value: "hsl(10, 75%, 58%)" },
|
|
12
|
+
{ name: "Emerald", value: "hsl(145, 70%, 45%)" },
|
|
13
|
+
{ name: "Violet", value: "hsl(270, 70%, 55%)" },
|
|
14
|
+
{ name: "Amber", value: "hsl(38, 85%, 50%)" },
|
|
15
|
+
{ name: "Rose", value: "hsl(350, 70%, 55%)" },
|
|
16
|
+
{ name: "Teal", value: "hsl(178, 70%, 45%)" },
|
|
17
|
+
{ name: "Indigo", value: "hsl(235, 70%, 58%)" },
|
|
18
|
+
{ name: "Lime", value: "hsl(85, 70%, 45%)" },
|
|
19
|
+
{ name: "Fuchsia", value: "hsl(310, 70%, 55%)" },
|
|
20
|
+
{ name: "Orange", value: "hsl(25, 80%, 52%)" },
|
|
21
|
+
{ name: "Cyan", value: "hsl(188, 75%, 48%)" }
|
|
22
|
+
];
|
|
23
|
+
function generateColorFromString(str) {
|
|
24
|
+
const hash = Math.abs(
|
|
25
|
+
str.split("").reduce((acc, char) => acc + char.charCodeAt(0), 0)
|
|
26
|
+
);
|
|
27
|
+
const colorIndex = hash % USER_COLOR_PALETTE.length;
|
|
28
|
+
return USER_COLOR_PALETTE[colorIndex].value;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// src/components/ContactAvatar.ts
|
|
32
|
+
import { getImportableUrlFromAutomergeUrl } from "@inkandswitch/patchwork-filesystem";
|
|
33
|
+
|
|
34
|
+
// ../node_modules/.pnpm/@inkandswitch+patchwork-providers@0.2.2_@automerge+automerge-repo@2.6.0-subduction.39_supports-color@7.2.0_/node_modules/@inkandswitch/patchwork-providers/dist/index.js
|
|
35
|
+
function subscribe(element, selector, listener) {
|
|
36
|
+
const view = element.closest("patchwork-view");
|
|
37
|
+
const dispatchEl = view ?? element;
|
|
38
|
+
const channel = new MessageChannel();
|
|
39
|
+
const port = channel.port2;
|
|
40
|
+
const controller = new AbortController();
|
|
41
|
+
const { signal } = controller;
|
|
42
|
+
port.addEventListener("message", (event) => {
|
|
43
|
+
if (event.data?.type === "change")
|
|
44
|
+
listener(event.data.value);
|
|
45
|
+
}, { signal });
|
|
46
|
+
port.start();
|
|
47
|
+
const detail = {
|
|
48
|
+
selector,
|
|
49
|
+
port: channel.port1
|
|
50
|
+
};
|
|
51
|
+
dispatchEl.dispatchEvent(new CustomEvent("patchwork:subscribe", {
|
|
52
|
+
detail,
|
|
53
|
+
bubbles: true,
|
|
54
|
+
composed: true
|
|
55
|
+
}));
|
|
56
|
+
return () => {
|
|
57
|
+
if (signal.aborted)
|
|
58
|
+
return;
|
|
59
|
+
controller.abort();
|
|
60
|
+
port.postMessage({ type: "unsubscribe" });
|
|
61
|
+
port.close();
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// src/components/ContactAvatar.ts
|
|
66
|
+
function renderContactAvatar(handle, element) {
|
|
67
|
+
const avatar = createAvatar("default");
|
|
68
|
+
element.appendChild(avatar);
|
|
69
|
+
let selfName = "me";
|
|
70
|
+
const cleanups = [];
|
|
71
|
+
const heartbeats = {};
|
|
72
|
+
let presenceTimer;
|
|
73
|
+
function onEphemeralMessage(message) {
|
|
74
|
+
if (message.senderId) {
|
|
75
|
+
heartbeats[message.senderId] = Date.now();
|
|
76
|
+
}
|
|
77
|
+
updatePresence();
|
|
78
|
+
}
|
|
79
|
+
function updatePresence() {
|
|
80
|
+
const docUrl = handle.url;
|
|
81
|
+
const now = Date.now();
|
|
82
|
+
const timeout = 3e4;
|
|
83
|
+
const isPresent = Object.entries(heartbeats).some(
|
|
84
|
+
([id, ts]) => id !== selfName && now - ts < timeout
|
|
85
|
+
);
|
|
86
|
+
const contact = handle.doc();
|
|
87
|
+
const userColor = contact && "color" in contact && contact.color ? contact.color : generateColorFromString(docUrl);
|
|
88
|
+
if (isPresent) {
|
|
89
|
+
avatar.classList.add("contact-avatar--present");
|
|
90
|
+
avatar.style.setProperty("--contact-presence-color", userColor);
|
|
91
|
+
} else {
|
|
92
|
+
avatar.classList.remove("contact-avatar--present");
|
|
93
|
+
avatar.style.removeProperty("--contact-presence-color");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
handle.on("ephemeral-message", onEphemeralMessage);
|
|
97
|
+
cleanups.push(() => handle.off("ephemeral-message", onEphemeralMessage));
|
|
98
|
+
presenceTimer = setInterval(updatePresence, 5e3);
|
|
99
|
+
cleanups.push(() => clearInterval(presenceTimer));
|
|
100
|
+
const unsubscribe = subscribe(
|
|
101
|
+
element,
|
|
102
|
+
{ type: "patchwork:contact" },
|
|
103
|
+
(contactUrl) => {
|
|
104
|
+
element.repo.find(contactUrl).then((selfHandle) => {
|
|
105
|
+
const selfDoc = selfHandle.doc();
|
|
106
|
+
if (selfDoc?.type === "registered") {
|
|
107
|
+
selfName = selfDoc.name;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
cleanups.push(unsubscribe);
|
|
113
|
+
if (window.accountDocHandle) {
|
|
114
|
+
element.repo.find(window.accountDocHandle.url).then((accountHandle) => {
|
|
115
|
+
const accountDoc = accountHandle.doc();
|
|
116
|
+
if (accountDoc?.contactUrl) {
|
|
117
|
+
element.repo.find(accountDoc.contactUrl).then((selfHandle) => {
|
|
118
|
+
const selfDoc = selfHandle.doc();
|
|
119
|
+
if (selfDoc?.type === "registered") {
|
|
120
|
+
selfName = selfDoc.name;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
async function update() {
|
|
127
|
+
const contact = handle.doc();
|
|
128
|
+
if (!contact) {
|
|
129
|
+
avatar.style.display = "none";
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
avatar.style.display = "";
|
|
133
|
+
const isRegistered = contact.type === "registered";
|
|
134
|
+
const name = isRegistered ? contact.name : "Anonymous";
|
|
135
|
+
let avatarImgUrl;
|
|
136
|
+
if (isRegistered && contact.avatarUrl) {
|
|
137
|
+
try {
|
|
138
|
+
const avatarHandle = await element.repo.find(contact.avatarUrl);
|
|
139
|
+
avatarImgUrl = getImportableUrlFromAutomergeUrl(avatarHandle.url);
|
|
140
|
+
} catch {
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
setAvatarImage(avatar, avatarImgUrl, name);
|
|
144
|
+
if (isRegistered && name) {
|
|
145
|
+
setAvatarFallback(avatar, { initials: getInitials(name) });
|
|
146
|
+
} else {
|
|
147
|
+
setAvatarFallback(avatar, { iconSize: 20 });
|
|
148
|
+
}
|
|
149
|
+
updatePresence();
|
|
150
|
+
}
|
|
151
|
+
handle.on("change", update);
|
|
152
|
+
cleanups.push(() => handle.off("change", update));
|
|
153
|
+
update();
|
|
154
|
+
return () => {
|
|
155
|
+
for (const cleanup of cleanups) cleanup();
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
export {
|
|
159
|
+
renderContactAvatar
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=ContactAvatar-FP32ZZH2.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/ui.ts", "../src/components/ContactAvatar.ts", "../../node_modules/.pnpm/@inkandswitch+patchwork-providers@0.2.2_@automerge+automerge-repo@2.6.0-subduction.39_supports-color@7.2.0_/node_modules/@inkandswitch/patchwork-providers/dist/index.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * TODO: establish a system for referencing styles that\n * are shared across multiple tools.\n * This palette is also defined in the account-picker.\n *\n * User color palette for presence indicators (cursors, avatars, etc.)\n *\n * Colors are selected to:\n * - Be easily distinguishable from each other\n * - Work well on both light and dark backgrounds\n * - Be accessible and readable\n * - Look professional and modern\n */\nexport const USER_COLOR_PALETTE = [\n { name: \"Sky Blue\", value: \"hsl(200, 70%, 50%)\" },\n { name: \"Coral\", value: \"hsl(10, 75%, 58%)\" },\n { name: \"Emerald\", value: \"hsl(145, 70%, 45%)\" },\n { name: \"Violet\", value: \"hsl(270, 70%, 55%)\" },\n { name: \"Amber\", value: \"hsl(38, 85%, 50%)\" },\n { name: \"Rose\", value: \"hsl(350, 70%, 55%)\" },\n { name: \"Teal\", value: \"hsl(178, 70%, 45%)\" },\n { name: \"Indigo\", value: \"hsl(235, 70%, 58%)\" },\n { name: \"Lime\", value: \"hsl(85, 70%, 45%)\" },\n { name: \"Fuchsia\", value: \"hsl(310, 70%, 55%)\" },\n { name: \"Orange\", value: \"hsl(25, 80%, 52%)\" },\n { name: \"Cyan\", value: \"hsl(188, 75%, 48%)\" },\n] as const;\n\n/**\n * Generate a deterministic color from a string (like userId)\n * Useful for fallback when user hasn't chosen a color\n */\nexport function generateColorFromString(str: string): string {\n const hash = Math.abs(\n str.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0)\n );\n const colorIndex = hash % USER_COLOR_PALETTE.length;\n return USER_COLOR_PALETTE[colorIndex].value;\n}\n", "import type { AutomergeUrl, DocHandle } from \"@automerge/automerge-repo\";\nimport type { ToolElement } from \"@inkandswitch/patchwork-plugins\";\nimport type { ContactDoc } from \"../types\";\nimport { createAvatar, setAvatarImage, setAvatarFallback, getInitials } from \"./Avatar\";\nimport { generateColorFromString } from \"../ui\";\nimport { getImportableUrlFromAutomergeUrl } from \"@inkandswitch/patchwork-filesystem\";\nimport { subscribe } from \"@inkandswitch/patchwork-providers\";\n\ndeclare global {\n interface Window {\n accountDocHandle?: { url: AutomergeUrl };\n }\n}\n\ntype TinyPatchworkLayoutDoc = {\n contactUrl: AutomergeUrl;\n};\n\nexport function renderContactAvatar(\n handle: DocHandle<ContactDoc>,\n element: ToolElement\n) {\n const avatar = createAvatar(\"default\");\n element.appendChild(avatar);\n\n let selfName = \"me\";\n const cleanups: (() => void)[] = [];\n\n // Track presence via ephemeral messages\n const heartbeats: Record<string, number> = {};\n let presenceTimer: ReturnType<typeof setInterval>;\n\n function onEphemeralMessage(message: { senderId: string; message: unknown }) {\n // useRemoteAwareness tracks heartbeats from ephemeral messages\n if (message.senderId) {\n heartbeats[message.senderId] = Date.now();\n }\n updatePresence();\n }\n\n function updatePresence() {\n const docUrl = handle.url;\n const now = Date.now();\n const timeout = 30000;\n const isPresent = Object.entries(heartbeats).some(\n ([id, ts]) => id !== selfName && now - ts < timeout\n );\n\n const contact = handle.doc();\n const userColor =\n contact && \"color\" in contact && contact.color\n ? contact.color\n : generateColorFromString(docUrl);\n\n if (isPresent) {\n avatar.classList.add(\"contact-avatar--present\");\n avatar.style.setProperty(\"--contact-presence-color\", userColor);\n } else {\n avatar.classList.remove(\"contact-avatar--present\");\n avatar.style.removeProperty(\"--contact-presence-color\");\n }\n }\n\n handle.on(\"ephemeral-message\", onEphemeralMessage);\n cleanups.push(() => handle.off(\"ephemeral-message\", onEphemeralMessage));\n\n // Periodically clean up stale heartbeats\n presenceTimer = setInterval(updatePresence, 5000);\n cleanups.push(() => clearInterval(presenceTimer));\n\n // Get own contact via provider subscription\n const unsubscribe = subscribe<string>(\n element,\n { type: \"patchwork:contact\" },\n (contactUrl) => {\n element.repo\n .find<ContactDoc>(contactUrl as AutomergeUrl)\n .then((selfHandle) => {\n const selfDoc = selfHandle.doc();\n if (selfDoc?.type === \"registered\") {\n selfName = selfDoc.name;\n }\n });\n }\n );\n cleanups.push(unsubscribe);\n\n // Fallback: use window.accountDocHandle\n if (window.accountDocHandle) {\n element.repo\n .find<TinyPatchworkLayoutDoc>(window.accountDocHandle.url)\n .then((accountHandle) => {\n const accountDoc = accountHandle.doc();\n if (accountDoc?.contactUrl) {\n element.repo\n .find<ContactDoc>(accountDoc.contactUrl)\n .then((selfHandle) => {\n const selfDoc = selfHandle.doc();\n if (selfDoc?.type === \"registered\") {\n selfName = selfDoc.name;\n }\n });\n }\n });\n }\n\n async function update() {\n const contact = handle.doc();\n if (!contact) {\n avatar.style.display = \"none\";\n return;\n }\n avatar.style.display = \"\";\n\n const isRegistered = contact.type === \"registered\";\n const name = isRegistered ? contact.name : \"Anonymous\";\n\n // avatar image\n let avatarImgUrl: string | undefined;\n if (isRegistered && contact.avatarUrl) {\n try {\n const avatarHandle = await element.repo.find(contact.avatarUrl);\n avatarImgUrl = getImportableUrlFromAutomergeUrl(avatarHandle.url);\n } catch {\n // ignore failed avatar lookup\n }\n }\n setAvatarImage(avatar, avatarImgUrl, name);\n\n // fallback\n if (isRegistered && name) {\n setAvatarFallback(avatar, { initials: getInitials(name) });\n } else {\n setAvatarFallback(avatar, { iconSize: 20 });\n }\n\n updatePresence();\n }\n\n handle.on(\"change\", update);\n cleanups.push(() => handle.off(\"change\", update));\n update();\n\n return () => {\n for (const cleanup of cleanups) cleanup();\n };\n}\n", "/**\n * Open a streaming subscription. Dispatches a `patchwork:subscribe` for the\n * given `selector` carrying a fresh `MessageChannel` port; the answering\n * provider pushes values back over that channel for as long as the\n * subscription is live. `listener` is invoked once per emission (the first\n * delivery is always async because `MessagePort.postMessage` queues a task).\n *\n * The event is dispatched from the nearest enclosing `<patchwork-view>` so\n * callers can pass any node inside a provider subtree. An unclaimed\n * subscription is never settled: if no provider answers, `listener` simply\n * never fires.\n *\n * Returns an unsubscribe function. Calling it tells the provider to tear down\n * (via an `unsubscribe` message) and closes the consumer's port; any values\n * the provider emits after that are dropped.\n */\nexport function subscribe(element, selector, listener) {\n const view = element.closest(\"patchwork-view\");\n const dispatchEl = view ?? element;\n const channel = new MessageChannel();\n const port = channel.port2;\n const controller = new AbortController();\n const { signal } = controller;\n port.addEventListener(\"message\", (event) => {\n if (event.data?.type === \"change\")\n listener(event.data.value);\n }, { signal });\n // addEventListener (unlike assigning onmessage) does not implicitly start\n // the port, so message delivery has to be kicked off explicitly.\n port.start();\n const detail = {\n selector,\n port: channel.port1,\n };\n dispatchEl.dispatchEvent(new CustomEvent(\"patchwork:subscribe\", {\n detail,\n bubbles: true,\n composed: true,\n }));\n return () => {\n if (signal.aborted)\n return;\n controller.abort();\n port.postMessage({ type: \"unsubscribe\" });\n port.close();\n };\n}\n/**\n * Answer a `patchwork:subscribe`. The `producer` receives a `respond`\n * callback it can call any number of times to push values to the consumer,\n * and may return a teardown that runs when the consumer unsubscribes. Stops\n * propagation so ancestor providers don't double-answer. Values emitted after\n * the consumer unsubscribes are dropped.\n */\nexport function accept(event, producer) {\n event.stopPropagation();\n const port = event.detail.port;\n let alive = true;\n const respond = (value) => {\n if (!alive)\n return;\n port.postMessage({ type: \"change\", value });\n };\n let teardown;\n try {\n teardown = producer(respond);\n }\n catch (err) {\n console.error(\"[patchwork-providers] subscribe producer threw:\", err);\n }\n const stop = () => {\n if (!alive)\n return;\n alive = false;\n try {\n teardown?.();\n }\n catch (err) {\n console.error(\"[patchwork-providers] subscribe teardown threw:\", err);\n }\n port.close();\n };\n port.onmessage = (event) => {\n if (event.data?.type === \"unsubscribe\")\n stop();\n };\n}\n/**\n * One-shot convenience wrapper over {@link subscribe}: opens a subscription\n * for `selector`, resolves with the first value a provider emits, then\n * immediately unsubscribes. Because there is no fallback provider, an\n * unclaimed selector never resolves \u2014 use `subscribe` directly if you need to\n * handle the \"no provider\" case.\n */\nexport function request(element, selector) {\n return new Promise((resolve) => {\n const unsubscribe = subscribe(element, selector, (value) => {\n // The first emission is always async (postMessage queues a task), so\n // `unsubscribe` is assigned by the time this fires.\n unsubscribe();\n resolve(value);\n });\n });\n}\nexport { registerRepoProviderElement, } from \"./repo-provider.js\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAvatar,
|
|
3
|
+
getInitials,
|
|
4
|
+
setAvatarFallback,
|
|
5
|
+
setAvatarImage
|
|
6
|
+
} from "./chunk-MOZI4Y4O.js";
|
|
7
|
+
|
|
8
|
+
// src/components/ContactViewer.ts
|
|
9
|
+
import { automergeUrlToServiceWorkerUrl } from "@inkandswitch/patchwork-filesystem";
|
|
10
|
+
function renderContactViewer(handle, element) {
|
|
11
|
+
const wrapper = document.createElement("div");
|
|
12
|
+
wrapper.className = "contact-viewer";
|
|
13
|
+
const avatar = createAvatar("lg");
|
|
14
|
+
const nameEl = document.createElement("h2");
|
|
15
|
+
nameEl.className = "contact-viewer-name";
|
|
16
|
+
const labelEl = document.createElement("p");
|
|
17
|
+
labelEl.className = "contact-viewer-label";
|
|
18
|
+
labelEl.textContent = "Unregistered user";
|
|
19
|
+
wrapper.append(avatar, nameEl);
|
|
20
|
+
element.appendChild(wrapper);
|
|
21
|
+
async function update() {
|
|
22
|
+
const contact = handle.doc();
|
|
23
|
+
if (!contact) {
|
|
24
|
+
wrapper.style.display = "none";
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
wrapper.style.display = "";
|
|
28
|
+
const isRegistered = contact.type === "registered";
|
|
29
|
+
const name = isRegistered ? contact.name : "Anonymous";
|
|
30
|
+
nameEl.textContent = name;
|
|
31
|
+
let avatarImgUrl;
|
|
32
|
+
if (isRegistered && contact.avatarUrl) {
|
|
33
|
+
try {
|
|
34
|
+
const avatarHandle = await element.repo.find(contact.avatarUrl);
|
|
35
|
+
avatarImgUrl = automergeUrlToServiceWorkerUrl(avatarHandle.url);
|
|
36
|
+
} catch {
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
setAvatarImage(avatar, avatarImgUrl, name);
|
|
40
|
+
if (isRegistered && name) {
|
|
41
|
+
setAvatarFallback(avatar, { initials: getInitials(name) });
|
|
42
|
+
} else {
|
|
43
|
+
setAvatarFallback(avatar, { iconSize: 32 });
|
|
44
|
+
}
|
|
45
|
+
if (!isRegistered) {
|
|
46
|
+
if (!wrapper.contains(labelEl)) wrapper.appendChild(labelEl);
|
|
47
|
+
} else {
|
|
48
|
+
labelEl.remove();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
handle.on("change", update);
|
|
52
|
+
update();
|
|
53
|
+
return () => {
|
|
54
|
+
handle.off("change", update);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
renderContactViewer
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=ContactViewer-ZHEE6INW.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/ContactViewer.ts"],
|
|
4
|
+
"sourcesContent": ["import type { DocHandle } from \"@automerge/automerge-repo\";\nimport type { ToolElement } from \"@inkandswitch/patchwork-plugins\";\nimport type { ContactDoc } from \"../types\";\nimport { createAvatar, setAvatarImage, setAvatarFallback, getInitials } from \"./Avatar\";\nimport { automergeUrlToServiceWorkerUrl } from \"@inkandswitch/patchwork-filesystem\";\n\nexport function renderContactViewer(\n handle: DocHandle<ContactDoc>,\n element: ToolElement\n) {\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"contact-viewer\";\n\n const avatar = createAvatar(\"lg\");\n const nameEl = document.createElement(\"h2\");\n nameEl.className = \"contact-viewer-name\";\n const labelEl = document.createElement(\"p\");\n labelEl.className = \"contact-viewer-label\";\n labelEl.textContent = \"Unregistered user\";\n\n wrapper.append(avatar, nameEl);\n element.appendChild(wrapper);\n\n async function update() {\n const contact = handle.doc();\n if (!contact) {\n wrapper.style.display = \"none\";\n return;\n }\n wrapper.style.display = \"\";\n\n const isRegistered = contact.type === \"registered\";\n const name = isRegistered ? contact.name : \"Anonymous\";\n\n nameEl.textContent = name;\n\n // avatar image\n let avatarImgUrl: string | undefined;\n if (isRegistered && contact.avatarUrl) {\n try {\n const avatarHandle = await element.repo.find(contact.avatarUrl);\n avatarImgUrl = automergeUrlToServiceWorkerUrl(avatarHandle.url);\n } catch {\n // ignore failed avatar lookup\n }\n }\n setAvatarImage(avatar, avatarImgUrl, name);\n\n // fallback\n if (isRegistered && name) {\n setAvatarFallback(avatar, { initials: getInitials(name) });\n } else {\n setAvatarFallback(avatar, { iconSize: 32 });\n }\n\n // label\n if (!isRegistered) {\n if (!wrapper.contains(labelEl)) wrapper.appendChild(labelEl);\n } else {\n labelEl.remove();\n }\n }\n\n handle.on(\"change\", update);\n update();\n\n return () => {\n handle.off(\"change\", update);\n };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAIA,SAAS,sCAAsC;AAExC,SAAS,oBACd,QACA,SACA;AACA,QAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAQ,YAAY;AAEpB,QAAM,SAAS,aAAa,IAAI;AAChC,QAAM,SAAS,SAAS,cAAc,IAAI;AAC1C,SAAO,YAAY;AACnB,QAAM,UAAU,SAAS,cAAc,GAAG;AAC1C,UAAQ,YAAY;AACpB,UAAQ,cAAc;AAEtB,UAAQ,OAAO,QAAQ,MAAM;AAC7B,UAAQ,YAAY,OAAO;AAE3B,iBAAe,SAAS;AACtB,UAAM,UAAU,OAAO,IAAI;AAC3B,QAAI,CAAC,SAAS;AACZ,cAAQ,MAAM,UAAU;AACxB;AAAA,IACF;AACA,YAAQ,MAAM,UAAU;AAExB,UAAM,eAAe,QAAQ,SAAS;AACtC,UAAM,OAAO,eAAe,QAAQ,OAAO;AAE3C,WAAO,cAAc;AAGrB,QAAI;AACJ,QAAI,gBAAgB,QAAQ,WAAW;AACrC,UAAI;AACF,cAAM,eAAe,MAAM,QAAQ,KAAK,KAAK,QAAQ,SAAS;AAC9D,uBAAe,+BAA+B,aAAa,GAAG;AAAA,MAChE,QAAQ;AAAA,MAER;AAAA,IACF;AACA,mBAAe,QAAQ,cAAc,IAAI;AAGzC,QAAI,gBAAgB,MAAM;AACxB,wBAAkB,QAAQ,EAAE,UAAU,YAAY,IAAI,EAAE,CAAC;AAAA,IAC3D,OAAO;AACL,wBAAkB,QAAQ,EAAE,UAAU,GAAG,CAAC;AAAA,IAC5C;AAGA,QAAI,CAAC,cAAc;AACjB,UAAI,CAAC,QAAQ,SAAS,OAAO,EAAG,SAAQ,YAAY,OAAO;AAAA,IAC7D,OAAO;AACL,cAAQ,OAAO;AAAA,IACjB;AAAA,EACF;AAEA,SAAO,GAAG,UAAU,MAAM;AAC1B,SAAO;AAEP,SAAO,MAAM;AACX,WAAO,IAAI,UAAU,MAAM;AAAA,EAC7B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAvatar,
|
|
3
|
+
getInitials,
|
|
4
|
+
setAvatarFallback,
|
|
5
|
+
setAvatarImage
|
|
6
|
+
} from "./chunk-MOZI4Y4O.js";
|
|
7
|
+
|
|
8
|
+
// src/components/InlineContactAvatar.ts
|
|
9
|
+
import { automergeUrlToServiceWorkerUrl } from "@inkandswitch/patchwork-filesystem";
|
|
10
|
+
function renderInlineContactAvatar(handle, element) {
|
|
11
|
+
const avatar = createAvatar("sm");
|
|
12
|
+
element.appendChild(avatar);
|
|
13
|
+
async function update() {
|
|
14
|
+
const contact = handle.doc();
|
|
15
|
+
if (!contact) {
|
|
16
|
+
avatar.style.display = "none";
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
avatar.style.display = "";
|
|
20
|
+
const isRegistered = contact.type === "registered";
|
|
21
|
+
const name = isRegistered ? contact.name : "Anonymous";
|
|
22
|
+
let avatarImgUrl;
|
|
23
|
+
if (isRegistered && contact.avatarUrl) {
|
|
24
|
+
try {
|
|
25
|
+
const avatarHandle = await element.repo.find(contact.avatarUrl);
|
|
26
|
+
avatarImgUrl = automergeUrlToServiceWorkerUrl(avatarHandle.url);
|
|
27
|
+
} catch {
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
setAvatarImage(avatar, avatarImgUrl, name);
|
|
31
|
+
if (isRegistered && name) {
|
|
32
|
+
setAvatarFallback(avatar, { initials: getInitials(name) });
|
|
33
|
+
} else {
|
|
34
|
+
setAvatarFallback(avatar, { iconSize: 16 });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
handle.on("change", update);
|
|
38
|
+
update();
|
|
39
|
+
return () => {
|
|
40
|
+
handle.off("change", update);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
renderInlineContactAvatar
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=InlineContactAvatar-VZDPEZV2.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/InlineContactAvatar.ts"],
|
|
4
|
+
"sourcesContent": ["import type { DocHandle } from \"@automerge/automerge-repo\";\nimport type { ToolElement } from \"@inkandswitch/patchwork-plugins\";\nimport type { ContactDoc } from \"../types\";\nimport { createAvatar, setAvatarImage, setAvatarFallback, getInitials } from \"./Avatar\";\nimport { automergeUrlToServiceWorkerUrl } from \"@inkandswitch/patchwork-filesystem\";\n\nexport function renderInlineContactAvatar(\n handle: DocHandle<ContactDoc>,\n element: ToolElement\n) {\n const avatar = createAvatar(\"sm\");\n element.appendChild(avatar);\n\n async function update() {\n const contact = handle.doc();\n if (!contact) {\n avatar.style.display = \"none\";\n return;\n }\n avatar.style.display = \"\";\n\n const isRegistered = contact.type === \"registered\";\n const name = isRegistered ? contact.name : \"Anonymous\";\n\n // avatar image\n let avatarImgUrl: string | undefined;\n if (isRegistered && contact.avatarUrl) {\n try {\n const avatarHandle = await element.repo.find(contact.avatarUrl);\n avatarImgUrl = automergeUrlToServiceWorkerUrl(avatarHandle.url);\n } catch {\n // ignore failed avatar lookup\n }\n }\n setAvatarImage(avatar, avatarImgUrl, name);\n\n // fallback\n if (isRegistered && name) {\n setAvatarFallback(avatar, { initials: getInitials(name) });\n } else {\n setAvatarFallback(avatar, { iconSize: 16 });\n }\n }\n\n handle.on(\"change\", update);\n update();\n\n return () => {\n handle.off(\"change\", update);\n };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAIA,SAAS,sCAAsC;AAExC,SAAS,0BACd,QACA,SACA;AACA,QAAM,SAAS,aAAa,IAAI;AAChC,UAAQ,YAAY,MAAM;AAE1B,iBAAe,SAAS;AACtB,UAAM,UAAU,OAAO,IAAI;AAC3B,QAAI,CAAC,SAAS;AACZ,aAAO,MAAM,UAAU;AACvB;AAAA,IACF;AACA,WAAO,MAAM,UAAU;AAEvB,UAAM,eAAe,QAAQ,SAAS;AACtC,UAAM,OAAO,eAAe,QAAQ,OAAO;AAG3C,QAAI;AACJ,QAAI,gBAAgB,QAAQ,WAAW;AACrC,UAAI;AACF,cAAM,eAAe,MAAM,QAAQ,KAAK,KAAK,QAAQ,SAAS;AAC9D,uBAAe,+BAA+B,aAAa,GAAG;AAAA,MAChE,QAAQ;AAAA,MAER;AAAA,IACF;AACA,mBAAe,QAAQ,cAAc,IAAI;AAGzC,QAAI,gBAAgB,MAAM;AACxB,wBAAkB,QAAQ,EAAE,UAAU,YAAY,IAAI,EAAE,CAAC;AAAA,IAC3D,OAAO;AACL,wBAAkB,QAAQ,EAAE,UAAU,GAAG,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO,GAAG,UAAU,MAAM;AAC1B,SAAO;AAEP,SAAO,MAAM;AACX,WAAO,IAAI,UAAU,MAAM;AAAA,EAC7B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// src/components/Avatar.ts
|
|
2
|
+
var sizeClass = {
|
|
3
|
+
default: "",
|
|
4
|
+
sm: "contact-avatar--sm",
|
|
5
|
+
lg: "contact-avatar--lg"
|
|
6
|
+
};
|
|
7
|
+
var USER_ICON_SVGS = {
|
|
8
|
+
16: `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>`,
|
|
9
|
+
20: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>`,
|
|
10
|
+
32: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>`
|
|
11
|
+
};
|
|
12
|
+
function createAvatar(size = "default") {
|
|
13
|
+
const root = document.createElement("span");
|
|
14
|
+
root.className = ["contact-avatar", sizeClass[size]].filter(Boolean).join(" ");
|
|
15
|
+
return root;
|
|
16
|
+
}
|
|
17
|
+
function setAvatarImage(root, src, alt) {
|
|
18
|
+
let img = root.querySelector(".contact-avatar-image");
|
|
19
|
+
if (src) {
|
|
20
|
+
if (!img) {
|
|
21
|
+
img = document.createElement("img");
|
|
22
|
+
img.className = "contact-avatar-image";
|
|
23
|
+
root.prepend(img);
|
|
24
|
+
}
|
|
25
|
+
img.src = src;
|
|
26
|
+
img.alt = alt;
|
|
27
|
+
} else if (img) {
|
|
28
|
+
img.remove();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function setAvatarFallback(root, content) {
|
|
32
|
+
let fallback = root.querySelector(".contact-avatar-fallback");
|
|
33
|
+
if (!fallback) {
|
|
34
|
+
fallback = document.createElement("span");
|
|
35
|
+
fallback.className = "contact-avatar-fallback";
|
|
36
|
+
root.appendChild(fallback);
|
|
37
|
+
}
|
|
38
|
+
if ("initials" in content) {
|
|
39
|
+
fallback.textContent = content.initials;
|
|
40
|
+
} else {
|
|
41
|
+
fallback.innerHTML = USER_ICON_SVGS[content.iconSize] ?? USER_ICON_SVGS[20];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function getInitials(name) {
|
|
45
|
+
return name.split(" ").map((word) => word[0]).join("");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
createAvatar,
|
|
50
|
+
setAvatarImage,
|
|
51
|
+
setAvatarFallback,
|
|
52
|
+
getInitials
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-MOZI4Y4O.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/Avatar.ts"],
|
|
4
|
+
"sourcesContent": ["export type AvatarSize = \"default\" | \"sm\" | \"lg\";\n\nconst sizeClass: Record<AvatarSize, string> = {\n default: \"\",\n sm: \"contact-avatar--sm\",\n lg: \"contact-avatar--lg\",\n};\n\nconst USER_ICON_SVGS: Record<number, string> = {\n 16: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>`,\n 20: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>`,\n 32: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>`,\n};\n\nexport function createAvatar(size: AvatarSize = \"default\"): HTMLElement {\n const root = document.createElement(\"span\");\n root.className = [\"contact-avatar\", sizeClass[size]]\n .filter(Boolean)\n .join(\" \");\n return root;\n}\n\nexport function setAvatarImage(\n root: HTMLElement,\n src: string | undefined,\n alt: string\n) {\n let img = root.querySelector<HTMLImageElement>(\".contact-avatar-image\");\n if (src) {\n if (!img) {\n img = document.createElement(\"img\");\n img.className = \"contact-avatar-image\";\n root.prepend(img);\n }\n img.src = src;\n img.alt = alt;\n } else if (img) {\n img.remove();\n }\n}\n\nexport function setAvatarFallback(\n root: HTMLElement,\n content: { initials: string } | { iconSize: number }\n) {\n let fallback = root.querySelector<HTMLElement>(\".contact-avatar-fallback\");\n if (!fallback) {\n fallback = document.createElement(\"span\");\n fallback.className = \"contact-avatar-fallback\";\n root.appendChild(fallback);\n }\n if (\"initials\" in content) {\n fallback.textContent = content.initials;\n } else {\n fallback.innerHTML = USER_ICON_SVGS[content.iconSize] ?? USER_ICON_SVGS[20];\n }\n}\n\nexport function getInitials(name: string): string {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\");\n}\n"],
|
|
5
|
+
"mappings": ";AAEA,IAAM,YAAwC;AAAA,EAC5C,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,iBAAyC;AAAA,EAC7C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAAS,aAAa,OAAmB,WAAwB;AACtE,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY,CAAC,kBAAkB,UAAU,IAAI,CAAC,EAChD,OAAO,OAAO,EACd,KAAK,GAAG;AACX,SAAO;AACT;AAEO,SAAS,eACd,MACA,KACA,KACA;AACA,MAAI,MAAM,KAAK,cAAgC,uBAAuB;AACtE,MAAI,KAAK;AACP,QAAI,CAAC,KAAK;AACR,YAAM,SAAS,cAAc,KAAK;AAClC,UAAI,YAAY;AAChB,WAAK,QAAQ,GAAG;AAAA,IAClB;AACA,QAAI,MAAM;AACV,QAAI,MAAM;AAAA,EACZ,WAAW,KAAK;AACd,QAAI,OAAO;AAAA,EACb;AACF;AAEO,SAAS,kBACd,MACA,SACA;AACA,MAAI,WAAW,KAAK,cAA2B,0BAA0B;AACzE,MAAI,CAAC,UAAU;AACb,eAAW,SAAS,cAAc,MAAM;AACxC,aAAS,YAAY;AACrB,SAAK,YAAY,QAAQ;AAAA,EAC3B;AACA,MAAI,cAAc,SAAS;AACzB,aAAS,cAAc,QAAQ;AAAA,EACjC,OAAO;AACL,aAAS,YAAY,eAAe,QAAQ,QAAQ,KAAK,eAAe,EAAE;AAAA,EAC5E;AACF;AAEO,SAAS,YAAY,MAAsB;AAChD,SAAO,KACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EACrB,KAAK,EAAE;AACZ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// src/datatype.ts
|
|
2
|
+
var init = (doc) => {
|
|
3
|
+
Object.assign(doc, {
|
|
4
|
+
type: "anonymous"
|
|
5
|
+
});
|
|
6
|
+
};
|
|
7
|
+
var getTitle = (doc) => {
|
|
8
|
+
if (doc.type === "registered") {
|
|
9
|
+
return doc.name;
|
|
10
|
+
}
|
|
11
|
+
return "Anonymous";
|
|
12
|
+
};
|
|
13
|
+
var setTitle = (doc, title) => {
|
|
14
|
+
if (doc.type === "registered") {
|
|
15
|
+
doc.name = title;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var ContactDatatype = {
|
|
19
|
+
init,
|
|
20
|
+
getTitle,
|
|
21
|
+
setTitle
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
ContactDatatype,
|
|
25
|
+
init
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=datatype-ABVDVPWS.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/datatype.ts"],
|
|
4
|
+
"sourcesContent": ["import { type DatatypeImplementation } from \"@inkandswitch/patchwork-plugins\";\nimport type { ContactDoc } from \"./types\";\n\nexport const init = (doc: ContactDoc) => {\n Object.assign(doc, {\n type: \"anonymous\",\n } as ContactDoc);\n};\n\nconst getTitle = (doc: ContactDoc) => {\n if (doc.type === \"registered\") {\n return doc.name;\n }\n return \"Anonymous\";\n};\n\nconst setTitle = (doc: ContactDoc, title: string) => {\n if (doc.type === \"registered\") {\n doc.name = title;\n }\n};\n\nexport const ContactDatatype: DatatypeImplementation<ContactDoc> = {\n init,\n getTitle,\n setTitle,\n};\n"],
|
|
5
|
+
"mappings": ";AAGO,IAAM,OAAO,CAAC,QAAoB;AACvC,SAAO,OAAO,KAAK;AAAA,IACjB,MAAM;AAAA,EACR,CAAe;AACjB;AAEA,IAAM,WAAW,CAAC,QAAoB;AACpC,MAAI,IAAI,SAAS,cAAc;AAC7B,WAAO,IAAI;AAAA,EACb;AACA,SAAO;AACT;AAEA,IAAM,WAAW,CAAC,KAAiB,UAAkB;AACnD,MAAI,IAAI,SAAS,cAAc;AAC7B,QAAI,OAAO;AAAA,EACb;AACF;AAEO,IAAM,kBAAsD;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* src/styles.css */
|
|
2
|
+
@layer package {
|
|
3
|
+
:root,
|
|
4
|
+
:host,
|
|
5
|
+
[theme] {
|
|
6
|
+
--contact-fg: var(--editor-line, black);
|
|
7
|
+
--contact-muted-fg: var(--editor-line-offset-50, #999);
|
|
8
|
+
--contact-border: var(--editor-fill-offset-10, #e5e5e5);
|
|
9
|
+
--contact-fallback-bg: var(--editor-fill-offset-20, #ccc);
|
|
10
|
+
--contact-fallback-fg: var(--editor-line-offset-30, #4d4d4d);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
.contact-avatar {
|
|
14
|
+
position: relative;
|
|
15
|
+
display: inline-flex;
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
border-radius: 9999px;
|
|
19
|
+
border: 1px solid var(--contact-border);
|
|
20
|
+
min-width: 2rem;
|
|
21
|
+
min-height: 2rem;
|
|
22
|
+
max-width: 2rem;
|
|
23
|
+
max-height: 2rem;
|
|
24
|
+
height: 100%;
|
|
25
|
+
width: 100%;
|
|
26
|
+
}
|
|
27
|
+
.contact-avatar--sm {
|
|
28
|
+
min-width: initial;
|
|
29
|
+
min-height: initial;
|
|
30
|
+
max-width: initial;
|
|
31
|
+
max-height: initial;
|
|
32
|
+
width: 1.5rem;
|
|
33
|
+
height: 1.5rem;
|
|
34
|
+
}
|
|
35
|
+
.contact-avatar--lg {
|
|
36
|
+
min-width: initial;
|
|
37
|
+
min-height: initial;
|
|
38
|
+
max-width: initial;
|
|
39
|
+
max-height: initial;
|
|
40
|
+
width: 64px;
|
|
41
|
+
height: 64px;
|
|
42
|
+
}
|
|
43
|
+
.contact-avatar--present {
|
|
44
|
+
box-shadow: 0 0 0 2px var(--contact-presence-color);
|
|
45
|
+
}
|
|
46
|
+
.contact-avatar-image {
|
|
47
|
+
position: absolute;
|
|
48
|
+
inset: 0;
|
|
49
|
+
z-index: 1;
|
|
50
|
+
width: 100%;
|
|
51
|
+
height: 100%;
|
|
52
|
+
object-fit: cover;
|
|
53
|
+
}
|
|
54
|
+
.contact-avatar-fallback {
|
|
55
|
+
position: absolute;
|
|
56
|
+
inset: 0;
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
justify-content: center;
|
|
60
|
+
border-radius: 9999px;
|
|
61
|
+
background: var(--contact-fallback-bg);
|
|
62
|
+
color: var(--contact-fallback-fg);
|
|
63
|
+
}
|
|
64
|
+
.contact-viewer {
|
|
65
|
+
display: flex;
|
|
66
|
+
flex-direction: column;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: 0.5rem;
|
|
69
|
+
color: var(--contact-fg);
|
|
70
|
+
}
|
|
71
|
+
.contact-viewer-name {
|
|
72
|
+
margin: 0;
|
|
73
|
+
font-size: 1.25rem;
|
|
74
|
+
font-weight: 600;
|
|
75
|
+
}
|
|
76
|
+
.contact-viewer-label {
|
|
77
|
+
margin: 0;
|
|
78
|
+
font-size: 0.875rem;
|
|
79
|
+
color: var(--contact-muted-fg);
|
|
80
|
+
}
|
|
81
|
+
/*# sourceMappingURL=tool.css.map */
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/styles.css"],
|
|
4
|
+
"sourcesContent": ["@layer package {\n:root,\n:host,\n[theme] {\n --contact-fg: var(--editor-line, black);\n --contact-muted-fg: var(--editor-line-offset-50, #999);\n --contact-border: var(--editor-fill-offset-10, #e5e5e5);\n --contact-fallback-bg: var(--editor-fill-offset-20, #ccc);\n --contact-fallback-fg: var(--editor-line-offset-30, #4d4d4d);\n}\n}\n\n/* Avatar */\n\n.contact-avatar {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n overflow: hidden;\n border-radius: 9999px;\n border: 1px solid var(--contact-border);\n min-width: 2rem;\n min-height: 2rem;\n max-width: 2rem;\n max-height: 2rem;\n height: 100%;\n width: 100%;\n}\n\n.contact-avatar--sm {\n min-width: initial;\n min-height: initial;\n max-width: initial;\n max-height: initial;\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.contact-avatar--lg {\n min-width: initial;\n min-height: initial;\n max-width: initial;\n max-height: initial;\n width: 64px;\n height: 64px;\n}\n\n.contact-avatar--present {\n box-shadow: 0 0 0 2px var(--contact-presence-color);\n}\n\n.contact-avatar-image {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.contact-avatar-fallback {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n background: var(--contact-fallback-bg);\n color: var(--contact-fallback-fg);\n}\n\n/* Contact Viewer */\n\n.contact-viewer {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n color: var(--contact-fg);\n}\n\n.contact-viewer-name {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n.contact-viewer-label {\n margin: 0;\n font-size: 0.875rem;\n color: var(--contact-muted-fg);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA;AACA;AAAA,EACA;AAAA,EACA,CAAC;AACC,kBAAc,IAAI,aAAa,EAAE;AACjC,wBAAoB,IAAI,uBAAuB,EAAE;AACjD,sBAAkB,IAAI,uBAAuB,EAAE;AAC/C,2BAAuB,IAAI,uBAAuB,EAAE;AACpD,2BAAuB,IAAI,uBAAuB,EAAE;AACtD;AACA;AAIA,CAAC;AACC,YAAU;AACV,WAAS;AACT,eAAa;AACb,YAAU;AACV,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,aAAW;AACX,cAAY;AACZ,aAAW;AACX,cAAY;AACZ,UAAQ;AACR,SAAO;AACT;AAEA,CAAC;AACC,aAAW;AACX,cAAY;AACZ,aAAW;AACX,cAAY;AACZ,SAAO;AACP,UAAQ;AACV;AAEA,CAAC;AACC,aAAW;AACX,cAAY;AACZ,aAAW;AACX,cAAY;AACZ,SAAO;AACP,UAAQ;AACV;AAEA,CAAC;AACC,cAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AAC5B;AAEA,CAAC;AACC,YAAU;AACV,SAAO;AACP,WAAS;AACT,SAAO;AACP,UAAQ;AACR,cAAY;AACd;AAEA,CAAC;AACC,YAAU;AACV,SAAO;AACP,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,iBAAe;AACf,cAAY,IAAI;AAChB,SAAO,IAAI;AACb;AAIA,CAAC;AACC,WAAS;AACT,kBAAgB;AAChB,eAAa;AACb,OAAK;AACL,SAAO,IAAI;AACb;AAEA,CAAC;AACC,UAAQ;AACR,aAAW;AACX,eAAa;AACf;AAEA,CAAC;AACC,UAAQ;AACR,aAAW;AACX,SAAO,IAAI;AACb;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// src/tool.ts
|
|
2
|
+
function addStyles(element, textContent) {
|
|
3
|
+
const id = "contact-styles";
|
|
4
|
+
const el = element.querySelector(`#${id}`) ?? document.createElement("style");
|
|
5
|
+
Object.assign(el, { textContent, id });
|
|
6
|
+
element.append(el);
|
|
7
|
+
}
|
|
8
|
+
async function loadStyles() {
|
|
9
|
+
const url = new URL("./tool.css", import.meta.url);
|
|
10
|
+
return (await fetch(url)).text();
|
|
11
|
+
}
|
|
12
|
+
var plugins = [
|
|
13
|
+
{
|
|
14
|
+
type: "patchwork:datatype",
|
|
15
|
+
id: "contact",
|
|
16
|
+
name: "Contact",
|
|
17
|
+
icon: "User",
|
|
18
|
+
unlisted: true,
|
|
19
|
+
async load() {
|
|
20
|
+
const { ContactDatatype } = await import("./datatype-ABVDVPWS.js");
|
|
21
|
+
return ContactDatatype;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: "patchwork:tool",
|
|
26
|
+
id: "contact",
|
|
27
|
+
name: "Contact Viewer",
|
|
28
|
+
supportedDatatypes: ["contact"],
|
|
29
|
+
async load() {
|
|
30
|
+
const { renderContactViewer } = await import("./ContactViewer-ZHEE6INW.js");
|
|
31
|
+
const css = await loadStyles();
|
|
32
|
+
return (handle, element) => {
|
|
33
|
+
addStyles(document.head, css);
|
|
34
|
+
return renderContactViewer(handle, element);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
type: "patchwork:tool",
|
|
40
|
+
id: "contact-avatar",
|
|
41
|
+
name: "Contact Avatar",
|
|
42
|
+
supportedDatatypes: ["contact"],
|
|
43
|
+
async load() {
|
|
44
|
+
const { renderContactAvatar } = await import("./ContactAvatar-FP32ZZH2.js");
|
|
45
|
+
const css = await loadStyles();
|
|
46
|
+
return (handle, element) => {
|
|
47
|
+
addStyles(document.head, css);
|
|
48
|
+
return renderContactAvatar(handle, element);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "patchwork:tool",
|
|
54
|
+
id: "contact-inline",
|
|
55
|
+
name: "Inline Contact Avatar",
|
|
56
|
+
supportedDatatypes: ["contact"],
|
|
57
|
+
async load() {
|
|
58
|
+
const { renderInlineContactAvatar } = await import("./InlineContactAvatar-VZDPEZV2.js");
|
|
59
|
+
const css = await loadStyles();
|
|
60
|
+
return (handle, element) => {
|
|
61
|
+
addStyles(document.head, css);
|
|
62
|
+
return renderInlineContactAvatar(handle, element);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
export {
|
|
68
|
+
plugins
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/tool.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ToolImplementation } from \"@inkandswitch/patchwork-plugins\";\nimport \"./styles.css\";\n\nfunction addStyles(element: HTMLElement, textContent: string) {\n const id = \"contact-styles\";\n const el = element.querySelector(`#${id}`) ?? document.createElement(\"style\");\n Object.assign(el, { textContent, id });\n element.append(el);\n}\n\nasync function loadStyles() {\n const url = new URL(\"./tool.css\", import.meta.url);\n return (await fetch(url)).text();\n}\n\nexport const plugins = [\n {\n type: \"patchwork:datatype\",\n id: \"contact\",\n name: \"Contact\",\n icon: \"User\",\n unlisted: true,\n async load() {\n const { ContactDatatype } = await import(\"./datatype\");\n return ContactDatatype;\n },\n },\n {\n type: \"patchwork:tool\",\n id: \"contact\",\n name: \"Contact Viewer\",\n supportedDatatypes: [\"contact\"],\n async load(): Promise<ToolImplementation> {\n const { renderContactViewer } =\n await import(\"./components/ContactViewer\");\n const css = await loadStyles();\n return (handle, element) => {\n addStyles(document.head, css);\n return renderContactViewer(handle, element);\n };\n },\n },\n {\n type: \"patchwork:tool\",\n id: \"contact-avatar\",\n name: \"Contact Avatar\",\n supportedDatatypes: [\"contact\"],\n async load(): Promise<ToolImplementation> {\n const { renderContactAvatar } =\n await import(\"./components/ContactAvatar\");\n const css = await loadStyles();\n return (handle, element) => {\n addStyles(document.head, css);\n return renderContactAvatar(handle, element);\n };\n },\n },\n {\n type: \"patchwork:tool\",\n id: \"contact-inline\",\n name: \"Inline Contact Avatar\",\n supportedDatatypes: [\"contact\"],\n async load(): Promise<ToolImplementation> {\n const { renderInlineContactAvatar } =\n await import(\"./components/InlineContactAvatar\");\n const css = await loadStyles();\n return (handle, element) => {\n addStyles(document.head, css);\n return renderInlineContactAvatar(handle, element);\n };\n },\n },\n];\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,UAAU,SAAsB,aAAqB;AAC5D,QAAM,KAAK;AACX,QAAM,KAAK,QAAQ,cAAc,IAAI,EAAE,EAAE,KAAK,SAAS,cAAc,OAAO;AAC5E,SAAO,OAAO,IAAI,EAAE,aAAa,GAAG,CAAC;AACrC,UAAQ,OAAO,EAAE;AACnB;AAEA,eAAe,aAAa;AAC1B,QAAM,MAAM,IAAI,IAAI,cAAc,YAAY,GAAG;AACjD,UAAQ,MAAM,MAAM,GAAG,GAAG,KAAK;AACjC;AAEO,IAAM,UAAU;AAAA,EACrB;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM,OAAO;AACX,YAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAY;AACrD,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,oBAAoB,CAAC,SAAS;AAAA,IAC9B,MAAM,OAAoC;AACxC,YAAM,EAAE,oBAAoB,IAC1B,MAAM,OAAO,6BAA4B;AAC3C,YAAM,MAAM,MAAM,WAAW;AAC7B,aAAO,CAAC,QAAQ,YAAY;AAC1B,kBAAU,SAAS,MAAM,GAAG;AAC5B,eAAO,oBAAoB,QAAQ,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,oBAAoB,CAAC,SAAS;AAAA,IAC9B,MAAM,OAAoC;AACxC,YAAM,EAAE,oBAAoB,IAC1B,MAAM,OAAO,6BAA4B;AAC3C,YAAM,MAAM,MAAM,WAAW;AAC7B,aAAO,CAAC,QAAQ,YAAY;AAC1B,kBAAU,SAAS,MAAM,GAAG;AAC5B,eAAO,oBAAoB,QAAQ,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,oBAAoB,CAAC,SAAS;AAAA,IAC9B,MAAM,OAAoC;AACxC,YAAM,EAAE,0BAA0B,IAChC,MAAM,OAAO,mCAAkC;AACjD,YAAM,MAAM,MAAM,WAAW;AAC7B,aAAO,CAAC,QAAQ,YAAY;AAC1B,kBAAU,SAAS,MAAM,GAAG;AAC5B,eAAO,0BAA0B,QAAQ,OAAO;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|