diff --git a/.yarn/cache/@floating-ui-core-npm-1.7.3-2fe40b3781-5adfb28ddf.zip b/.yarn/cache/@floating-ui-core-npm-1.7.3-2fe40b3781-5adfb28ddf.zip new file mode 100644 index 000000000..54a3dddae Binary files /dev/null and b/.yarn/cache/@floating-ui-core-npm-1.7.3-2fe40b3781-5adfb28ddf.zip differ diff --git a/.yarn/cache/@floating-ui-dom-npm-1.7.4-e1f6d76b3d-806923e6f5.zip b/.yarn/cache/@floating-ui-dom-npm-1.7.4-e1f6d76b3d-806923e6f5.zip new file mode 100644 index 000000000..cb645d736 Binary files /dev/null and b/.yarn/cache/@floating-ui-dom-npm-1.7.4-e1f6d76b3d-806923e6f5.zip differ diff --git a/.yarn/cache/@floating-ui-react-dom-npm-2.1.3-572851951d-2e2aab5dcc.zip b/.yarn/cache/@floating-ui-react-dom-npm-2.1.6-b3d7d0fd22-24ff266806.zip similarity index 93% rename from .yarn/cache/@floating-ui-react-dom-npm-2.1.3-572851951d-2e2aab5dcc.zip rename to .yarn/cache/@floating-ui-react-dom-npm-2.1.6-b3d7d0fd22-24ff266806.zip index bd443b6ab..cc03b8482 100644 Binary files a/.yarn/cache/@floating-ui-react-dom-npm-2.1.3-572851951d-2e2aab5dcc.zip and b/.yarn/cache/@floating-ui-react-dom-npm-2.1.6-b3d7d0fd22-24ff266806.zip differ diff --git a/.yarn/cache/@floating-ui-react-npm-0.27.12-bec100b363-03c201db15.zip b/.yarn/cache/@floating-ui-react-npm-0.27.12-bec100b363-03c201db15.zip deleted file mode 100644 index 507948152..000000000 Binary files a/.yarn/cache/@floating-ui-react-npm-0.27.12-bec100b363-03c201db15.zip and /dev/null differ diff --git a/.yarn/cache/@floating-ui-react-npm-0.27.16-b1b80a3725-4f242f843c.zip b/.yarn/cache/@floating-ui-react-npm-0.27.16-b1b80a3725-4f242f843c.zip new file mode 100644 index 000000000..04d14ec71 Binary files /dev/null and b/.yarn/cache/@floating-ui-react-npm-0.27.16-b1b80a3725-4f242f843c.zip differ diff --git a/.yarn/cache/@floating-ui-utils-npm-0.2.10-5e22e99242-ffc4c24a46.zip b/.yarn/cache/@floating-ui-utils-npm-0.2.10-5e22e99242-ffc4c24a46.zip new file mode 100644 index 000000000..8032755a8 Binary files /dev/null and b/.yarn/cache/@floating-ui-utils-npm-0.2.10-5e22e99242-ffc4c24a46.zip differ diff --git a/.yarn/cache/@floating-ui-utils-npm-0.2.9-f2d9dffc79-d518b80cec.zip b/.yarn/cache/@floating-ui-utils-npm-0.2.9-f2d9dffc79-d518b80cec.zip deleted file mode 100644 index e0c080d00..000000000 Binary files a/.yarn/cache/@floating-ui-utils-npm-0.2.9-f2d9dffc79-d518b80cec.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-clipboard-npm-0.32.1-4aeb4e61ac-8a3056d93f.zip b/.yarn/cache/@lexical-clipboard-npm-0.32.1-4aeb4e61ac-8a3056d93f.zip deleted file mode 100644 index 4c3a05b94..000000000 Binary files a/.yarn/cache/@lexical-clipboard-npm-0.32.1-4aeb4e61ac-8a3056d93f.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-clipboard-npm-0.38.1-d8b1f4e445-d56bd0b5db.zip b/.yarn/cache/@lexical-clipboard-npm-0.38.1-d8b1f4e445-d56bd0b5db.zip new file mode 100644 index 000000000..d7e84e20c Binary files /dev/null and b/.yarn/cache/@lexical-clipboard-npm-0.38.1-d8b1f4e445-d56bd0b5db.zip differ diff --git a/.yarn/cache/@lexical-code-npm-0.32.1-85b0b00341-28dacc148f.zip b/.yarn/cache/@lexical-code-npm-0.32.1-85b0b00341-28dacc148f.zip deleted file mode 100644 index 91aa4fa4e..000000000 Binary files a/.yarn/cache/@lexical-code-npm-0.32.1-85b0b00341-28dacc148f.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-code-npm-0.38.1-bcca5107b9-7d2273bb05.zip b/.yarn/cache/@lexical-code-npm-0.38.1-bcca5107b9-7d2273bb05.zip new file mode 100644 index 000000000..0061b26e2 Binary files /dev/null and b/.yarn/cache/@lexical-code-npm-0.38.1-bcca5107b9-7d2273bb05.zip differ diff --git a/.yarn/cache/@lexical-devtools-core-npm-0.32.1-e9025a1b26-0b6b3f96aa.zip b/.yarn/cache/@lexical-devtools-core-npm-0.32.1-e9025a1b26-0b6b3f96aa.zip deleted file mode 100644 index 48fc6cdab..000000000 Binary files a/.yarn/cache/@lexical-devtools-core-npm-0.32.1-e9025a1b26-0b6b3f96aa.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-devtools-core-npm-0.38.1-5706254649-00ed9e4c9b.zip b/.yarn/cache/@lexical-devtools-core-npm-0.38.1-5706254649-00ed9e4c9b.zip new file mode 100644 index 000000000..862ac6b01 Binary files /dev/null and b/.yarn/cache/@lexical-devtools-core-npm-0.38.1-5706254649-00ed9e4c9b.zip differ diff --git a/.yarn/cache/@lexical-dragon-npm-0.32.1-5c58f5d560-a5e91ca93a.zip b/.yarn/cache/@lexical-dragon-npm-0.32.1-5c58f5d560-a5e91ca93a.zip deleted file mode 100644 index 5c27fcbab..000000000 Binary files a/.yarn/cache/@lexical-dragon-npm-0.32.1-5c58f5d560-a5e91ca93a.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-dragon-npm-0.38.1-483ccfe64f-1771dc711d.zip b/.yarn/cache/@lexical-dragon-npm-0.38.1-483ccfe64f-1771dc711d.zip new file mode 100644 index 000000000..8bc68b6bc Binary files /dev/null and b/.yarn/cache/@lexical-dragon-npm-0.38.1-483ccfe64f-1771dc711d.zip differ diff --git a/.yarn/cache/@lexical-extension-npm-0.38.1-68b14b30a1-36a2d22ee5.zip b/.yarn/cache/@lexical-extension-npm-0.38.1-68b14b30a1-36a2d22ee5.zip new file mode 100644 index 000000000..f93a18bc7 Binary files /dev/null and b/.yarn/cache/@lexical-extension-npm-0.38.1-68b14b30a1-36a2d22ee5.zip differ diff --git a/.yarn/cache/@lexical-hashtag-npm-0.32.1-992b8908cd-3a7b00edeb.zip b/.yarn/cache/@lexical-hashtag-npm-0.32.1-992b8908cd-3a7b00edeb.zip deleted file mode 100644 index 47717a4d1..000000000 Binary files a/.yarn/cache/@lexical-hashtag-npm-0.32.1-992b8908cd-3a7b00edeb.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-hashtag-npm-0.38.1-0b8ffe2b43-4976559218.zip b/.yarn/cache/@lexical-hashtag-npm-0.38.1-0b8ffe2b43-4976559218.zip new file mode 100644 index 000000000..97d8890c3 Binary files /dev/null and b/.yarn/cache/@lexical-hashtag-npm-0.38.1-0b8ffe2b43-4976559218.zip differ diff --git a/.yarn/cache/@lexical-headless-npm-0.32.1-20b4f7d500-35dc85b3e4.zip b/.yarn/cache/@lexical-headless-npm-0.32.1-20b4f7d500-35dc85b3e4.zip deleted file mode 100644 index 8648e3813..000000000 Binary files a/.yarn/cache/@lexical-headless-npm-0.32.1-20b4f7d500-35dc85b3e4.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-headless-npm-0.38.1-c95092faa6-994a1e3750.zip b/.yarn/cache/@lexical-headless-npm-0.38.1-c95092faa6-994a1e3750.zip new file mode 100644 index 000000000..ed595a7a1 Binary files /dev/null and b/.yarn/cache/@lexical-headless-npm-0.38.1-c95092faa6-994a1e3750.zip differ diff --git a/.yarn/cache/@lexical-history-npm-0.32.1-09fd5e6b73-34b47f6e38.zip b/.yarn/cache/@lexical-history-npm-0.32.1-09fd5e6b73-34b47f6e38.zip deleted file mode 100644 index daab078ef..000000000 Binary files a/.yarn/cache/@lexical-history-npm-0.32.1-09fd5e6b73-34b47f6e38.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-history-npm-0.38.1-f57702de2b-12fe92f722.zip b/.yarn/cache/@lexical-history-npm-0.38.1-f57702de2b-12fe92f722.zip new file mode 100644 index 000000000..5053db0c4 Binary files /dev/null and b/.yarn/cache/@lexical-history-npm-0.38.1-f57702de2b-12fe92f722.zip differ diff --git a/.yarn/cache/@lexical-html-npm-0.32.1-4e44f76986-992b4ff40d.zip b/.yarn/cache/@lexical-html-npm-0.32.1-4e44f76986-992b4ff40d.zip deleted file mode 100644 index 85b36c6ae..000000000 Binary files a/.yarn/cache/@lexical-html-npm-0.32.1-4e44f76986-992b4ff40d.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-html-npm-0.38.1-bcdd5e6b7a-effeae00d2.zip b/.yarn/cache/@lexical-html-npm-0.38.1-bcdd5e6b7a-effeae00d2.zip new file mode 100644 index 000000000..eeed0a100 Binary files /dev/null and b/.yarn/cache/@lexical-html-npm-0.38.1-bcdd5e6b7a-effeae00d2.zip differ diff --git a/.yarn/cache/@lexical-link-npm-0.32.1-19ddcf0898-40aa1fd981.zip b/.yarn/cache/@lexical-link-npm-0.32.1-19ddcf0898-40aa1fd981.zip deleted file mode 100644 index 4da71415c..000000000 Binary files a/.yarn/cache/@lexical-link-npm-0.32.1-19ddcf0898-40aa1fd981.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-link-npm-0.38.1-0dfa5a6ba1-18ffad2fe8.zip b/.yarn/cache/@lexical-link-npm-0.38.1-0dfa5a6ba1-18ffad2fe8.zip new file mode 100644 index 000000000..2719c4dcc Binary files /dev/null and b/.yarn/cache/@lexical-link-npm-0.38.1-0dfa5a6ba1-18ffad2fe8.zip differ diff --git a/.yarn/cache/@lexical-list-npm-0.32.1-40adb57217-d89c597f35.zip b/.yarn/cache/@lexical-list-npm-0.32.1-40adb57217-d89c597f35.zip deleted file mode 100644 index 9b8e49077..000000000 Binary files a/.yarn/cache/@lexical-list-npm-0.32.1-40adb57217-d89c597f35.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-list-npm-0.38.1-c17b749323-d2b288d3a4.zip b/.yarn/cache/@lexical-list-npm-0.38.1-c17b749323-d2b288d3a4.zip new file mode 100644 index 000000000..f04f5b382 Binary files /dev/null and b/.yarn/cache/@lexical-list-npm-0.38.1-c17b749323-d2b288d3a4.zip differ diff --git a/.yarn/cache/@lexical-mark-npm-0.32.1-f2e24945ec-5566e1cf57.zip b/.yarn/cache/@lexical-mark-npm-0.32.1-f2e24945ec-5566e1cf57.zip deleted file mode 100644 index cd50f2d6f..000000000 Binary files a/.yarn/cache/@lexical-mark-npm-0.32.1-f2e24945ec-5566e1cf57.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-mark-npm-0.38.1-be98b22665-3ec0f37e9a.zip b/.yarn/cache/@lexical-mark-npm-0.38.1-be98b22665-3ec0f37e9a.zip new file mode 100644 index 000000000..d815b507a Binary files /dev/null and b/.yarn/cache/@lexical-mark-npm-0.38.1-be98b22665-3ec0f37e9a.zip differ diff --git a/.yarn/cache/@lexical-markdown-npm-0.32.1-da67ee0e3b-bab8ff470b.zip b/.yarn/cache/@lexical-markdown-npm-0.32.1-da67ee0e3b-bab8ff470b.zip deleted file mode 100644 index e2f4e8ead..000000000 Binary files a/.yarn/cache/@lexical-markdown-npm-0.32.1-da67ee0e3b-bab8ff470b.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-markdown-npm-0.38.1-56dd7e2c50-9aab4eb6e9.zip b/.yarn/cache/@lexical-markdown-npm-0.38.1-56dd7e2c50-9aab4eb6e9.zip new file mode 100644 index 000000000..2d3908392 Binary files /dev/null and b/.yarn/cache/@lexical-markdown-npm-0.38.1-56dd7e2c50-9aab4eb6e9.zip differ diff --git a/.yarn/cache/@lexical-offset-npm-0.32.1-e8803bea83-a59d47bbfb.zip b/.yarn/cache/@lexical-offset-npm-0.32.1-e8803bea83-a59d47bbfb.zip deleted file mode 100644 index 4c1d29ead..000000000 Binary files a/.yarn/cache/@lexical-offset-npm-0.32.1-e8803bea83-a59d47bbfb.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-offset-npm-0.38.1-e5622a3bc4-bf397bc3db.zip b/.yarn/cache/@lexical-offset-npm-0.38.1-e5622a3bc4-bf397bc3db.zip new file mode 100644 index 000000000..b507ee231 Binary files /dev/null and b/.yarn/cache/@lexical-offset-npm-0.38.1-e5622a3bc4-bf397bc3db.zip differ diff --git a/.yarn/cache/@lexical-overflow-npm-0.32.1-23ba743ac9-569bb48aac.zip b/.yarn/cache/@lexical-overflow-npm-0.32.1-23ba743ac9-569bb48aac.zip deleted file mode 100644 index 3fe1fbed8..000000000 Binary files a/.yarn/cache/@lexical-overflow-npm-0.32.1-23ba743ac9-569bb48aac.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-overflow-npm-0.38.1-e0de8c7a60-3812795f83.zip b/.yarn/cache/@lexical-overflow-npm-0.38.1-e0de8c7a60-3812795f83.zip new file mode 100644 index 000000000..73fbdcc07 Binary files /dev/null and b/.yarn/cache/@lexical-overflow-npm-0.38.1-e0de8c7a60-3812795f83.zip differ diff --git a/.yarn/cache/@lexical-plain-text-npm-0.32.1-fe3043e1a1-143e1b4cb9.zip b/.yarn/cache/@lexical-plain-text-npm-0.32.1-fe3043e1a1-143e1b4cb9.zip deleted file mode 100644 index 3858f746d..000000000 Binary files a/.yarn/cache/@lexical-plain-text-npm-0.32.1-fe3043e1a1-143e1b4cb9.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-plain-text-npm-0.38.1-5dd2b5b300-4e2d79ced9.zip b/.yarn/cache/@lexical-plain-text-npm-0.38.1-5dd2b5b300-4e2d79ced9.zip new file mode 100644 index 000000000..b8d3b6323 Binary files /dev/null and b/.yarn/cache/@lexical-plain-text-npm-0.38.1-5dd2b5b300-4e2d79ced9.zip differ diff --git a/.yarn/cache/@lexical-react-npm-0.32.1-015c0791ba-62f9c38b41.zip b/.yarn/cache/@lexical-react-npm-0.32.1-015c0791ba-62f9c38b41.zip deleted file mode 100644 index 719b325ae..000000000 Binary files a/.yarn/cache/@lexical-react-npm-0.32.1-015c0791ba-62f9c38b41.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-react-npm-0.38.1-7926fed74c-a9488dc3f2.zip b/.yarn/cache/@lexical-react-npm-0.38.1-7926fed74c-a9488dc3f2.zip new file mode 100644 index 000000000..e6beb1ec0 Binary files /dev/null and b/.yarn/cache/@lexical-react-npm-0.38.1-7926fed74c-a9488dc3f2.zip differ diff --git a/.yarn/cache/@lexical-rich-text-npm-0.32.1-0f06076604-a1c3d1afb6.zip b/.yarn/cache/@lexical-rich-text-npm-0.32.1-0f06076604-a1c3d1afb6.zip deleted file mode 100644 index 6ead460c8..000000000 Binary files a/.yarn/cache/@lexical-rich-text-npm-0.32.1-0f06076604-a1c3d1afb6.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-rich-text-npm-0.38.1-7afcc3c269-b8d2218d5a.zip b/.yarn/cache/@lexical-rich-text-npm-0.38.1-7afcc3c269-b8d2218d5a.zip new file mode 100644 index 000000000..9445ccf6c Binary files /dev/null and b/.yarn/cache/@lexical-rich-text-npm-0.38.1-7afcc3c269-b8d2218d5a.zip differ diff --git a/.yarn/cache/@lexical-selection-npm-0.32.1-d639b09eb5-120a066f70.zip b/.yarn/cache/@lexical-selection-npm-0.32.1-d639b09eb5-120a066f70.zip deleted file mode 100644 index 5e61fe3e5..000000000 Binary files a/.yarn/cache/@lexical-selection-npm-0.32.1-d639b09eb5-120a066f70.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-selection-npm-0.38.1-1ebdbc83db-7e585e9149.zip b/.yarn/cache/@lexical-selection-npm-0.38.1-1ebdbc83db-7e585e9149.zip new file mode 100644 index 000000000..2c210b212 Binary files /dev/null and b/.yarn/cache/@lexical-selection-npm-0.38.1-1ebdbc83db-7e585e9149.zip differ diff --git a/.yarn/cache/@lexical-table-npm-0.32.1-614f1645b0-82c9865a8e.zip b/.yarn/cache/@lexical-table-npm-0.32.1-614f1645b0-82c9865a8e.zip deleted file mode 100644 index de483c2d0..000000000 Binary files a/.yarn/cache/@lexical-table-npm-0.32.1-614f1645b0-82c9865a8e.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-table-npm-0.38.1-6dd61da93e-9ea4a6bee5.zip b/.yarn/cache/@lexical-table-npm-0.38.1-6dd61da93e-9ea4a6bee5.zip new file mode 100644 index 000000000..2c9e4e22a Binary files /dev/null and b/.yarn/cache/@lexical-table-npm-0.38.1-6dd61da93e-9ea4a6bee5.zip differ diff --git a/.yarn/cache/@lexical-text-npm-0.32.1-5afd775142-adbbb8e902.zip b/.yarn/cache/@lexical-text-npm-0.38.1-dfcd229c93-abb9ff9045.zip similarity index 72% rename from .yarn/cache/@lexical-text-npm-0.32.1-5afd775142-adbbb8e902.zip rename to .yarn/cache/@lexical-text-npm-0.38.1-dfcd229c93-abb9ff9045.zip index db4e1a831..d58a88475 100644 Binary files a/.yarn/cache/@lexical-text-npm-0.32.1-5afd775142-adbbb8e902.zip and b/.yarn/cache/@lexical-text-npm-0.38.1-dfcd229c93-abb9ff9045.zip differ diff --git a/.yarn/cache/@lexical-utils-npm-0.32.1-877f33fd57-39050ec6f3.zip b/.yarn/cache/@lexical-utils-npm-0.32.1-877f33fd57-39050ec6f3.zip deleted file mode 100644 index 2478e7e1b..000000000 Binary files a/.yarn/cache/@lexical-utils-npm-0.32.1-877f33fd57-39050ec6f3.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-utils-npm-0.38.1-71c1450f0f-121c1f2d4a.zip b/.yarn/cache/@lexical-utils-npm-0.38.1-71c1450f0f-121c1f2d4a.zip new file mode 100644 index 000000000..e022fa91c Binary files /dev/null and b/.yarn/cache/@lexical-utils-npm-0.38.1-71c1450f0f-121c1f2d4a.zip differ diff --git a/.yarn/cache/@lexical-yjs-npm-0.32.1-3f336b0a28-2c7ea12ddf.zip b/.yarn/cache/@lexical-yjs-npm-0.32.1-3f336b0a28-2c7ea12ddf.zip deleted file mode 100644 index 111f1d5af..000000000 Binary files a/.yarn/cache/@lexical-yjs-npm-0.32.1-3f336b0a28-2c7ea12ddf.zip and /dev/null differ diff --git a/.yarn/cache/@lexical-yjs-npm-0.38.1-0040cc11a9-fb9ab146ba.zip b/.yarn/cache/@lexical-yjs-npm-0.38.1-0040cc11a9-fb9ab146ba.zip new file mode 100644 index 000000000..33a278f7a Binary files /dev/null and b/.yarn/cache/@lexical-yjs-npm-0.38.1-0040cc11a9-fb9ab146ba.zip differ diff --git a/.yarn/cache/@preact-signals-core-npm-1.12.1-a218932129-55719713dc.zip b/.yarn/cache/@preact-signals-core-npm-1.12.1-a218932129-55719713dc.zip new file mode 100644 index 000000000..9e9a8dd22 Binary files /dev/null and b/.yarn/cache/@preact-signals-core-npm-1.12.1-a218932129-55719713dc.zip differ diff --git a/.yarn/cache/@react-pdf-fns-npm-2.1.0-db092b9495-b7360daa76.zip b/.yarn/cache/@react-pdf-fns-npm-2.1.0-db092b9495-b7360daa76.zip deleted file mode 100644 index 2e5cbf13e..000000000 Binary files a/.yarn/cache/@react-pdf-fns-npm-2.1.0-db092b9495-b7360daa76.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-fns-npm-3.1.2-5b68a05f5c-4e8cdd32f2.zip b/.yarn/cache/@react-pdf-fns-npm-3.1.2-5b68a05f5c-4e8cdd32f2.zip new file mode 100644 index 000000000..755e83d5d Binary files /dev/null and b/.yarn/cache/@react-pdf-fns-npm-3.1.2-5b68a05f5c-4e8cdd32f2.zip differ diff --git a/.yarn/cache/@react-pdf-font-npm-2.4.2-9c8c70d337-910f7422f2.zip b/.yarn/cache/@react-pdf-font-npm-2.4.2-9c8c70d337-910f7422f2.zip deleted file mode 100644 index fbd8a9d3b..000000000 Binary files a/.yarn/cache/@react-pdf-font-npm-2.4.2-9c8c70d337-910f7422f2.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-font-npm-4.0.2-25fe9134a7-547a64dd3f.zip b/.yarn/cache/@react-pdf-font-npm-4.0.2-25fe9134a7-547a64dd3f.zip new file mode 100644 index 000000000..388c82e2a Binary files /dev/null and b/.yarn/cache/@react-pdf-font-npm-4.0.2-25fe9134a7-547a64dd3f.zip differ diff --git a/.yarn/cache/@react-pdf-image-npm-2.3.1-735ded206b-7e8bb017a5.zip b/.yarn/cache/@react-pdf-image-npm-2.3.1-735ded206b-7e8bb017a5.zip deleted file mode 100644 index 42a3b1d7a..000000000 Binary files a/.yarn/cache/@react-pdf-image-npm-2.3.1-735ded206b-7e8bb017a5.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-image-npm-3.0.3-9bc75136a5-893ebef74d.zip b/.yarn/cache/@react-pdf-image-npm-3.0.3-9bc75136a5-893ebef74d.zip new file mode 100644 index 000000000..830b611aa Binary files /dev/null and b/.yarn/cache/@react-pdf-image-npm-3.0.3-9bc75136a5-893ebef74d.zip differ diff --git a/.yarn/cache/@react-pdf-layout-npm-3.10.2-c6ddce489c-356e3e611d.zip b/.yarn/cache/@react-pdf-layout-npm-3.10.2-c6ddce489c-356e3e611d.zip deleted file mode 100644 index 9d7bf65cd..000000000 Binary files a/.yarn/cache/@react-pdf-layout-npm-3.10.2-c6ddce489c-356e3e611d.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-layout-npm-4.4.0-5c06727bb4-385e27f00a.zip b/.yarn/cache/@react-pdf-layout-npm-4.4.0-5c06727bb4-385e27f00a.zip new file mode 100644 index 000000000..88c30dd5f Binary files /dev/null and b/.yarn/cache/@react-pdf-layout-npm-4.4.0-5c06727bb4-385e27f00a.zip differ diff --git a/.yarn/cache/@react-pdf-pdfkit-npm-3.1.1-7bb571f24f-34e10401c5.zip b/.yarn/cache/@react-pdf-pdfkit-npm-3.1.1-7bb571f24f-34e10401c5.zip deleted file mode 100644 index 9b79ae26c..000000000 Binary files a/.yarn/cache/@react-pdf-pdfkit-npm-3.1.1-7bb571f24f-34e10401c5.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-pdfkit-npm-4.0.3-384052332d-209f064f04.zip b/.yarn/cache/@react-pdf-pdfkit-npm-4.0.3-384052332d-209f064f04.zip new file mode 100644 index 000000000..a3f8873b9 Binary files /dev/null and b/.yarn/cache/@react-pdf-pdfkit-npm-4.0.3-384052332d-209f064f04.zip differ diff --git a/.yarn/cache/@react-pdf-png-js-npm-2.3.0-c6f026023c-34f03fa5b9.zip b/.yarn/cache/@react-pdf-png-js-npm-2.3.0-c6f026023c-34f03fa5b9.zip deleted file mode 100644 index 27bd56ba3..000000000 Binary files a/.yarn/cache/@react-pdf-png-js-npm-2.3.0-c6f026023c-34f03fa5b9.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-png-js-npm-3.0.0-17565fff9e-90c1612d75.zip b/.yarn/cache/@react-pdf-png-js-npm-3.0.0-17565fff9e-90c1612d75.zip new file mode 100644 index 000000000..ffcd4083a Binary files /dev/null and b/.yarn/cache/@react-pdf-png-js-npm-3.0.0-17565fff9e-90c1612d75.zip differ diff --git a/.yarn/cache/@react-pdf-primitives-npm-3.1.1-3033dff230-a52c0cfff7.zip b/.yarn/cache/@react-pdf-primitives-npm-3.1.1-3033dff230-a52c0cfff7.zip deleted file mode 100644 index 208d36d8c..000000000 Binary files a/.yarn/cache/@react-pdf-primitives-npm-3.1.1-3033dff230-a52c0cfff7.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-primitives-npm-4.1.1-80eed5afd4-adadff1996.zip b/.yarn/cache/@react-pdf-primitives-npm-4.1.1-80eed5afd4-adadff1996.zip new file mode 100644 index 000000000..ee5f1e0a8 Binary files /dev/null and b/.yarn/cache/@react-pdf-primitives-npm-4.1.1-80eed5afd4-adadff1996.zip differ diff --git a/.yarn/cache/@react-pdf-reconciler-npm-1.1.4-0a87628369-d920898a1c.zip b/.yarn/cache/@react-pdf-reconciler-npm-1.1.4-0a87628369-d920898a1c.zip new file mode 100644 index 000000000..cc19ec267 Binary files /dev/null and b/.yarn/cache/@react-pdf-reconciler-npm-1.1.4-0a87628369-d920898a1c.zip differ diff --git a/.yarn/cache/@react-pdf-render-npm-3.4.0-fce1007007-48f19f6be4.zip b/.yarn/cache/@react-pdf-render-npm-3.4.0-fce1007007-48f19f6be4.zip deleted file mode 100644 index c82cb60f8..000000000 Binary files a/.yarn/cache/@react-pdf-render-npm-3.4.0-fce1007007-48f19f6be4.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-render-npm-4.3.0-674828a2c0-c0ba6c8e35.zip b/.yarn/cache/@react-pdf-render-npm-4.3.0-674828a2c0-c0ba6c8e35.zip new file mode 100644 index 000000000..26bff067c Binary files /dev/null and b/.yarn/cache/@react-pdf-render-npm-4.3.0-674828a2c0-c0ba6c8e35.zip differ diff --git a/.yarn/cache/@react-pdf-renderer-npm-3.3.2-66392dfa46-4bc9286a73.zip b/.yarn/cache/@react-pdf-renderer-npm-3.3.2-66392dfa46-4bc9286a73.zip deleted file mode 100644 index 2b32ce9b7..000000000 Binary files a/.yarn/cache/@react-pdf-renderer-npm-3.3.2-66392dfa46-4bc9286a73.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-renderer-npm-4.3.0-0712eccaac-aa54f134bc.zip b/.yarn/cache/@react-pdf-renderer-npm-4.3.0-0712eccaac-aa54f134bc.zip new file mode 100644 index 000000000..5fc0306a3 Binary files /dev/null and b/.yarn/cache/@react-pdf-renderer-npm-4.3.0-0712eccaac-aa54f134bc.zip differ diff --git a/.yarn/cache/@react-pdf-stylesheet-npm-4.2.2-42729d940a-f6ce9ecc0c.zip b/.yarn/cache/@react-pdf-stylesheet-npm-4.2.2-42729d940a-f6ce9ecc0c.zip deleted file mode 100644 index 5918a0c9f..000000000 Binary files a/.yarn/cache/@react-pdf-stylesheet-npm-4.2.2-42729d940a-f6ce9ecc0c.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-stylesheet-npm-6.1.0-5231eae246-93998eef6e.zip b/.yarn/cache/@react-pdf-stylesheet-npm-6.1.0-5231eae246-93998eef6e.zip new file mode 100644 index 000000000..b78bccfa0 Binary files /dev/null and b/.yarn/cache/@react-pdf-stylesheet-npm-6.1.0-5231eae246-93998eef6e.zip differ diff --git a/.yarn/cache/@react-pdf-textkit-npm-4.3.0-2d66fabba8-d4ce3e4051.zip b/.yarn/cache/@react-pdf-textkit-npm-4.3.0-2d66fabba8-d4ce3e4051.zip deleted file mode 100644 index 5d43fd1c0..000000000 Binary files a/.yarn/cache/@react-pdf-textkit-npm-4.3.0-2d66fabba8-d4ce3e4051.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-textkit-npm-6.0.0-ad8481d0d8-5bc087ad2d.zip b/.yarn/cache/@react-pdf-textkit-npm-6.0.0-ad8481d0d8-5bc087ad2d.zip new file mode 100644 index 000000000..e72524cf5 Binary files /dev/null and b/.yarn/cache/@react-pdf-textkit-npm-6.0.0-ad8481d0d8-5bc087ad2d.zip differ diff --git a/.yarn/cache/@react-pdf-types-npm-2.4.0-6032fd1c00-a9b826753c.zip b/.yarn/cache/@react-pdf-types-npm-2.4.0-6032fd1c00-a9b826753c.zip deleted file mode 100644 index 9966e2724..000000000 Binary files a/.yarn/cache/@react-pdf-types-npm-2.4.0-6032fd1c00-a9b826753c.zip and /dev/null differ diff --git a/.yarn/cache/@react-pdf-types-npm-2.9.0-4c17b18dcc-ed2f1854e1.zip b/.yarn/cache/@react-pdf-types-npm-2.9.0-4c17b18dcc-ed2f1854e1.zip new file mode 100644 index 000000000..831c95c81 Binary files /dev/null and b/.yarn/cache/@react-pdf-types-npm-2.9.0-4c17b18dcc-ed2f1854e1.zip differ diff --git a/.yarn/cache/@types-node-npm-20.19.23-9e5fa45fa9-1f213fa438.zip b/.yarn/cache/@types-node-npm-20.19.23-9e5fa45fa9-1f213fa438.zip new file mode 100644 index 000000000..6cc73f03c Binary files /dev/null and b/.yarn/cache/@types-node-npm-20.19.23-9e5fa45fa9-1f213fa438.zip differ diff --git a/.yarn/cache/@types-whatwg-mimetype-npm-3.0.2-cf2bd6921c-30e2599ae0.zip b/.yarn/cache/@types-whatwg-mimetype-npm-3.0.2-cf2bd6921c-30e2599ae0.zip new file mode 100644 index 000000000..726d2dd73 Binary files /dev/null and b/.yarn/cache/@types-whatwg-mimetype-npm-3.0.2-cf2bd6921c-30e2599ae0.zip differ diff --git a/.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip b/.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip new file mode 100644 index 000000000..6ca327263 Binary files /dev/null and b/.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip differ diff --git a/.yarn/cache/bidi-js-npm-1.0.3-0035393a88-877c5dcfd6.zip b/.yarn/cache/bidi-js-npm-1.0.3-0035393a88-877c5dcfd6.zip new file mode 100644 index 000000000..afcbde050 Binary files /dev/null and b/.yarn/cache/bidi-js-npm-1.0.3-0035393a88-877c5dcfd6.zip differ diff --git a/.yarn/cache/cross-fetch-npm-3.1.8-71c3c05709-78f993fa09.zip b/.yarn/cache/cross-fetch-npm-3.1.8-71c3c05709-78f993fa09.zip deleted file mode 100644 index b5d3394a9..000000000 Binary files a/.yarn/cache/cross-fetch-npm-3.1.8-71c3c05709-78f993fa09.zip and /dev/null differ diff --git a/.yarn/cache/happy-dom-npm-20.0.8-9d375c4358-4d1131542c.zip b/.yarn/cache/happy-dom-npm-20.0.8-9d375c4358-4d1131542c.zip new file mode 100644 index 000000000..25f3b0193 Binary files /dev/null and b/.yarn/cache/happy-dom-npm-20.0.8-9d375c4358-4d1131542c.zip differ diff --git a/.yarn/cache/jay-peg-npm-1.1.1-0c591a2c0b-c3786552ca.zip b/.yarn/cache/jay-peg-npm-1.1.1-0c591a2c0b-c3786552ca.zip new file mode 100644 index 000000000..05e729c15 Binary files /dev/null and b/.yarn/cache/jay-peg-npm-1.1.1-0c591a2c0b-c3786552ca.zip differ diff --git a/.yarn/cache/jpeg-exif-npm-1.1.4-b22cfb6a0d-a8693a7eeb.zip b/.yarn/cache/jpeg-exif-npm-1.1.4-b22cfb6a0d-a8693a7eeb.zip deleted file mode 100644 index 2c625d957..000000000 Binary files a/.yarn/cache/jpeg-exif-npm-1.1.4-b22cfb6a0d-a8693a7eeb.zip and /dev/null differ diff --git a/.yarn/cache/lexical-npm-0.32.1-1ded0f9720-ea3fc239b3.zip b/.yarn/cache/lexical-npm-0.32.1-1ded0f9720-ea3fc239b3.zip deleted file mode 100644 index afd641623..000000000 Binary files a/.yarn/cache/lexical-npm-0.32.1-1ded0f9720-ea3fc239b3.zip and /dev/null differ diff --git a/.yarn/cache/lexical-npm-0.38.1-adf999e94e-af080ba244.zip b/.yarn/cache/lexical-npm-0.38.1-adf999e94e-af080ba244.zip new file mode 100644 index 000000000..a0e8b3cf2 Binary files /dev/null and b/.yarn/cache/lexical-npm-0.38.1-adf999e94e-af080ba244.zip differ diff --git a/.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip b/.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip new file mode 100644 index 000000000..e4364f846 Binary files /dev/null and b/.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip differ diff --git a/.yarn/cache/react-error-boundary-npm-3.1.4-2310dba89e-f36270a5d7.zip b/.yarn/cache/react-error-boundary-npm-3.1.4-2310dba89e-f36270a5d7.zip deleted file mode 100644 index 3ef1c956d..000000000 Binary files a/.yarn/cache/react-error-boundary-npm-3.1.4-2310dba89e-f36270a5d7.zip and /dev/null differ diff --git a/.yarn/cache/react-error-boundary-npm-6.0.0-66eefd4679-d6807004d2.zip b/.yarn/cache/react-error-boundary-npm-6.0.0-66eefd4679-d6807004d2.zip new file mode 100644 index 000000000..e1fa89c5b Binary files /dev/null and b/.yarn/cache/react-error-boundary-npm-6.0.0-66eefd4679-d6807004d2.zip differ diff --git a/.yarn/cache/scheduler-npm-0.17.0-5c42088cec-18d1e66cad.zip b/.yarn/cache/scheduler-npm-0.17.0-5c42088cec-18d1e66cad.zip deleted file mode 100644 index bb0e52058..000000000 Binary files a/.yarn/cache/scheduler-npm-0.17.0-5c42088cec-18d1e66cad.zip and /dev/null differ diff --git a/.yarn/cache/scheduler-npm-0.25.0-rc-603e6108-20241029-47acf774fb-c24fb37561.zip b/.yarn/cache/scheduler-npm-0.25.0-rc-603e6108-20241029-47acf774fb-c24fb37561.zip new file mode 100644 index 000000000..2802bfd87 Binary files /dev/null and b/.yarn/cache/scheduler-npm-0.25.0-rc-603e6108-20241029-47acf774fb-c24fb37561.zip differ diff --git a/.yarn/cache/unicode-script-npm-1.2.0-89c647c38e-8081850e75.zip b/.yarn/cache/unicode-script-npm-1.2.0-89c647c38e-8081850e75.zip new file mode 100644 index 000000000..f7d0c9ae2 Binary files /dev/null and b/.yarn/cache/unicode-script-npm-1.2.0-89c647c38e-8081850e75.zip differ diff --git a/.yarn/cache/yoga-layout-npm-2.0.1-d25883a49a-65a83b1bf0.zip b/.yarn/cache/yoga-layout-npm-2.0.1-d25883a49a-65a83b1bf0.zip deleted file mode 100644 index 87d7f3511..000000000 Binary files a/.yarn/cache/yoga-layout-npm-2.0.1-d25883a49a-65a83b1bf0.zip and /dev/null differ diff --git a/.yarn/cache/yoga-layout-npm-3.2.1-51ec934670-6d75e73f6b.zip b/.yarn/cache/yoga-layout-npm-3.2.1-51ec934670-6d75e73f6b.zip new file mode 100644 index 000000000..6f4131639 Binary files /dev/null and b/.yarn/cache/yoga-layout-npm-3.2.1-51ec934670-6d75e73f6b.zip differ diff --git a/packages/web/package.json b/packages/web/package.json index b96893d17..c90968fd2 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -108,17 +108,18 @@ }, "dependencies": { "@ariakit/react": "^0.4.18", - "@lexical/clipboard": "0.32.1", - "@lexical/headless": "0.32.1", - "@lexical/link": "0.32.1", - "@lexical/list": "0.32.1", - "@lexical/react": "0.32.1", - "@lexical/rich-text": "0.32.1", - "@lexical/utils": "0.32.1", + "@lexical/clipboard": "0.38.1", + "@lexical/headless": "0.38.1", + "@lexical/link": "0.38.1", + "@lexical/list": "0.38.1", + "@lexical/react": "0.38.1", + "@lexical/rich-text": "0.38.1", + "@lexical/utils": "0.38.1", "@radix-ui/react-slot": "^1.0.1", - "@react-pdf/renderer": "^3.3.2", + "@react-pdf/renderer": "^4.3.0", "comlink": "^4.4.1", "fast-diff": "^1.3.0", - "lexical": "0.32.1" + "lexical": "0.38.1", + "unicode-script": "^1.2.0" } } diff --git a/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/FontConfig.ts b/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/FontConfig.ts new file mode 100644 index 000000000..e19c34cab --- /dev/null +++ b/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/FontConfig.ts @@ -0,0 +1,288 @@ +import { Font } from '@react-pdf/renderer' +import { LexicalNode } from 'lexical' +// @ts-expect-error No typing for this package +import { unicodeScripts } from 'unicode-script' + +enum UnicodeScript { + Latin = 'Latin', + Common = 'Common', + Cyrillic = 'Cyrillic', + Greek = 'Greek', + Hebrew = 'Hebrew', + Arabic = 'Arabic', + Devanagari = 'Devanagari', + Bengali = 'Bengali', + Tamil = 'Tamil', + Telugu = 'Telugu', + Gujarati = 'Gujarati', + Gurmukhi = 'Gurmukhi', + Malayalam = 'Malayalam', + Sinhala = 'Sinhala', + Thai = 'Thai', + Armenian = 'Armenian', + Georgian = 'Georgian', + Ethiopic = 'Ethiopic', + Myanmar = 'Myanmar', + Khmer = 'Khmer', + Lao = 'Lao', + Tibetan = 'Tibetan', + Vietnamese = 'Vietnamese', + Chinese = 'Chinese', + Han = 'Han', + Japanese = 'Japanese', + Korean = 'Korean', + Hangul = 'Hangul', +} + +export enum FontFamily { + NotoSans = 'Noto Sans', + NotoSansHebrew = 'Noto Sans Hebrew', + NotoSansArabic = 'Noto Sans Arabic', + NotoSansDevanagari = 'Noto Sans Devanagari', + NotoSansBengali = 'Noto Sans Bengali', + NotoSansTamil = 'Noto Sans Tamil', + NotoSansTelugu = 'Noto Sans Telugu', + NotoSansGujarati = 'Noto Sans Gujarati', + NotoSansGurmukhi = 'Noto Sans Gurmukhi', + NotoSansMalayalam = 'Noto Sans Malayalam', + NotoSansSinhala = 'Noto Sans Sinhala', + NotoSansThai = 'Noto Sans Thai', + NotoSansArmenian = 'Noto Sans Armenian', + NotoSansGeorgian = 'Noto Sans Georgian', + NotoSansEthiopic = 'Noto Sans Ethiopic', + NotoSansMyanmar = 'Noto Sans Myanmar', + NotoSansKhmer = 'Noto Sans Khmer', + NotoSansLao = 'Noto Sans Lao', + NotoSansTibetan = 'Noto Sans Tibetan', + NotoSansSC = 'Noto Sans SC', + NotoSansJP = 'Noto Sans JP', + NotoSansKR = 'Noto Sans KR', + Courier = 'Courier', + Helvetica = 'Helvetica', +} + +enum FontVariant { + Normal = 'normal', + Bold = 'bold', + Italic = 'italic', + BoldItalic = 'bolditalic', +} + +type FontWeight = 'normal' | 'bold' +type FontStyle = 'normal' | 'italic' + +const FONT_VARIANT_TO_FONT_OPTIONS: Record = { + [FontVariant.Normal]: { + fontWeight: 'normal', + fontStyle: 'normal', + }, + [FontVariant.Bold]: { + fontWeight: 'bold', + fontStyle: 'normal', + }, + [FontVariant.Italic]: { + fontWeight: 'normal', + fontStyle: 'italic', + }, + [FontVariant.BoldItalic]: { + fontWeight: 'bold', + fontStyle: 'italic', + }, +} + +const FONT_ASSETS_BASE_PATH = + process.env.NODE_ENV === 'development' + ? 'http://localhost:3001/assets/fonts' + : 'https://assets.standardnotes.com/fonts' + +const FALLBACK_FONT_SOURCE = '/noto-sans/NotoSans-Regular.ttf' + +export const FALLBACK_FONT_FAMILY = FontFamily.Helvetica +export const MONOSPACE_FONT_FAMILY = FontFamily.Courier + +const FONT_FAMILY_TO_FONT_SOURCES: Partial>>> = { + [FontFamily.NotoSans]: { + [FontVariant.Normal]: '/noto-sans/NotoSans-Regular.ttf', + [FontVariant.Bold]: '/noto-sans/NotoSans-Bold.ttf', + [FontVariant.Italic]: '/noto-sans/NotoSans-Italic.ttf', + [FontVariant.BoldItalic]: '/noto-sans/NotoSans-BoldItalic.ttf', + }, + [FontFamily.NotoSansHebrew]: { + [FontVariant.Normal]: '/noto-sans-hebrew/NotoSansHebrew-Regular.ttf', + [FontVariant.Bold]: '/noto-sans-hebrew/NotoSansHebrew-Bold.ttf', + }, + [FontFamily.NotoSansArabic]: { + [FontVariant.Normal]: '/noto-sans-arabic/NotoSansArabic-Regular.ttf', + [FontVariant.Bold]: '/noto-sans-arabic/NotoSansArabic-Bold.ttf', + }, + [FontFamily.NotoSansDevanagari]: { + [FontVariant.Normal]: '/noto-sans-devanagari/NotoSansDevanagari-Regular.ttf', + [FontVariant.Bold]: '/noto-sans-devanagari/NotoSansDevanagari-Bold.ttf', + }, + [FontFamily.NotoSansBengali]: { + [FontVariant.Normal]: '/noto-sans-bengali/NotoSansBengali-Regular.ttf', + }, + [FontFamily.NotoSansTamil]: { + [FontVariant.Normal]: '/noto-sans-tamil/NotoSansTamil-Regular.ttf', + }, + [FontFamily.NotoSansTelugu]: { + [FontVariant.Normal]: '/noto-sans-telugu/NotoSansTelugu-Regular.ttf', + }, + [FontFamily.NotoSansGujarati]: { + [FontVariant.Normal]: '/noto-sans-gujarati/NotoSansGujarati-Regular.ttf', + }, + [FontFamily.NotoSansGurmukhi]: { + [FontVariant.Normal]: '/noto-sans-gurmukhi/NotoSansGurmukhi-Regular.ttf', + }, + [FontFamily.NotoSansMalayalam]: { + [FontVariant.Normal]: '/noto-sans-malayalam/NotoSansMalayalam-Regular.ttf', + }, + [FontFamily.NotoSansSinhala]: { + [FontVariant.Normal]: '/noto-sans-sinhala/NotoSansSinhala-Regular.ttf', + }, + [FontFamily.NotoSansThai]: { + [FontVariant.Normal]: '/noto-sans-thai/NotoSansThai-Regular.ttf', + }, + [FontFamily.NotoSansArmenian]: { + [FontVariant.Normal]: '/noto-sans-armenian/NotoSansArmenian-Regular.ttf', + }, + [FontFamily.NotoSansGeorgian]: { + [FontVariant.Normal]: '/noto-sans-georgian/NotoSansGeorgian-Regular.ttf', + }, + [FontFamily.NotoSansEthiopic]: { + [FontVariant.Normal]: '/noto-sans-ethiopic/NotoSansEthiopic-Regular.ttf', + }, + [FontFamily.NotoSansMyanmar]: { + [FontVariant.Normal]: '/noto-sans-myanmar/NotoSansMyanmar-Regular.ttf', + }, + [FontFamily.NotoSansKhmer]: { + [FontVariant.Normal]: '/noto-sans-khmer/NotoSansKhmer-Regular.ttf', + }, + [FontFamily.NotoSansLao]: { + [FontVariant.Normal]: '/noto-sans-lao/NotoSansLao-Regular.ttf', + }, + [FontFamily.NotoSansTibetan]: { + [FontVariant.Normal]: '/noto-sans-tibetan/NotoSansTibetan-Regular.ttf', + }, + [FontFamily.NotoSansSC]: { + [FontVariant.Normal]: '/noto-sans-sc/NotoSansSC-Regular.ttf', + }, + [FontFamily.NotoSansJP]: { + [FontVariant.Normal]: '/noto-sans-jp/NotoSansJP-Regular.ttf', + }, + [FontFamily.NotoSansKR]: { + [FontVariant.Normal]: '/noto-sans-kr/NotoSansKR-Regular.ttf', + }, +} + +export const getFontFamilyForUnicodeScript = (script: UnicodeScript): FontFamily => { + switch (script) { + case UnicodeScript.Common: + case UnicodeScript.Latin: + case UnicodeScript.Cyrillic: + case UnicodeScript.Greek: + case UnicodeScript.Vietnamese: + return FontFamily.NotoSans + + case UnicodeScript.Hebrew: + return FontFamily.NotoSansHebrew + + case UnicodeScript.Arabic: + return FontFamily.NotoSansArabic + + case UnicodeScript.Devanagari: + return FontFamily.NotoSansDevanagari + + case UnicodeScript.Bengali: + return FontFamily.NotoSansBengali + + case UnicodeScript.Tamil: + return FontFamily.NotoSansTamil + + case UnicodeScript.Telugu: + return FontFamily.NotoSansTelugu + + case UnicodeScript.Gujarati: + return FontFamily.NotoSansGujarati + + case UnicodeScript.Gurmukhi: + return FontFamily.NotoSansGurmukhi + + case UnicodeScript.Malayalam: + return FontFamily.NotoSansMalayalam + + case UnicodeScript.Sinhala: + return FontFamily.NotoSansSinhala + + case UnicodeScript.Thai: + return FontFamily.NotoSansThai + + case UnicodeScript.Armenian: + return FontFamily.NotoSansArmenian + + case UnicodeScript.Georgian: + return FontFamily.NotoSansGeorgian + + case UnicodeScript.Ethiopic: + return FontFamily.NotoSansEthiopic + + case UnicodeScript.Myanmar: + return FontFamily.NotoSansMyanmar + + case UnicodeScript.Khmer: + return FontFamily.NotoSansKhmer + + case UnicodeScript.Lao: + return FontFamily.NotoSansLao + + case UnicodeScript.Tibetan: + return FontFamily.NotoSansTibetan + + case UnicodeScript.Chinese: + case UnicodeScript.Han: + return FontFamily.NotoSansSC + + case UnicodeScript.Japanese: + return FontFamily.NotoSansJP + + case UnicodeScript.Korean: + case UnicodeScript.Hangul: + return FontFamily.NotoSansKR + + default: + return FontFamily.NotoSans + } +} + +const getFontRegisterOptions = (fontFamily: FontFamily) => { + const fallback = FONT_FAMILY_TO_FONT_SOURCES[fontFamily]?.[FontVariant.Normal] ?? FALLBACK_FONT_SOURCE + + return { + family: fontFamily, + fonts: Object.entries(FONT_VARIANT_TO_FONT_OPTIONS).map(([variant, fontOptions]) => ({ + ...fontOptions, + src: `${FONT_ASSETS_BASE_PATH}${FONT_FAMILY_TO_FONT_SOURCES[fontFamily]?.[variant as FontVariant] ?? fallback}`, + })), + } +} + +export const getFontFamiliesFromLexicalNode = (node: LexicalNode) => { + const scripts: UnicodeScript[] = Array.from(unicodeScripts(node.getTextContent())) + const fontFamilies = [FontFamily.NotoSans] + scripts.forEach((script) => { + const fontFamilyForScript = getFontFamilyForUnicodeScript(script) + if (!fontFamilies.includes(fontFamilyForScript)) { + fontFamilies.unshift(fontFamilyForScript) + } + }) + const fontFamiliesSet = new Set(fontFamilies) + return Array.from(fontFamiliesSet) +} + +export const registerPDFFonts = (fontFamilies: FontFamily[]) => { + const fontFamiliesToRegister = new Set(fontFamilies) + fontFamiliesToRegister.forEach((fontFamily) => { + const registerOptions = getFontRegisterOptions(fontFamily) + Font.register(registerOptions) + }) +} diff --git a/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFExport.tsx b/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFExport.tsx index e677db936..388d8a299 100644 --- a/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFExport.tsx +++ b/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFExport.tsx @@ -24,6 +24,7 @@ import { $isCollapsibleTitleNode } from '../../../Plugins/CollapsiblePlugin/Coll import PDFWorker, { PDFDataNode, PDFWorkerInterface } from './PDFWorker.worker' import { wrap } from 'comlink' import { PrefKey, PrefValue } from '@standardnotes/snjs' +import { FALLBACK_FONT_FAMILY, FontFamily, MONOSPACE_FONT_FAMILY, getFontFamiliesFromLexicalNode } from './FontConfig' const styles = StyleSheet.create({ page: { @@ -144,6 +145,12 @@ const getFontSizeForHeading = (heading: HeadingNode) => { } const getNodeTextAlignment = (node: ElementNode) => { + const direction = node.getDirection() + + if (direction === 'rtl') { + return 'right' + } + const formatType = node.getFormatType() if (!formatType) { @@ -161,7 +168,12 @@ const getNodeTextAlignment = (node: ElementNode) => { return formatType } -const getPDFDataNodeFromLexicalNode = (node: LexicalNode): PDFDataNode => { +const getNodeDirection = (node: ElementNode) => { + const direction = node.getDirection() + return direction ?? 'ltr' +} + +const getPDFDataNodeFromLexicalNode = (node: LexicalNode, fontFamilies: FontFamily[]): PDFDataNode => { const parent = node.getParent() if ($isLineBreakNode(node)) { @@ -177,23 +189,23 @@ const getPDFDataNodeFromLexicalNode = (node: LexicalNode): PDFDataNode => { const isBold = node.hasFormat('bold') const isItalic = node.hasFormat('italic') const isHighlight = node.hasFormat('highlight') + const nodeFontFamilies = getFontFamiliesFromLexicalNode(node) + let fontFamily: FontFamily[] | FontFamily = [...nodeFontFamilies, FALLBACK_FONT_FAMILY] - let font = isInlineCode || isCodeNodeText ? 'Courier' : 'Helvetica' - if (isBold || isItalic) { - font += '-' - if (isBold) { - font += 'Bold' - } - if (isItalic) { - font += 'Oblique' - } + if (isInlineCode && isCodeNodeText) { + fontFamily = MONOSPACE_FONT_FAMILY + } else { + fontFamilies.push(...nodeFontFamilies) } return { type: 'Text', children: node.getTextContent(), style: { - fontFamily: font, + fontFamily, + fontWeight: isBold ? 'bold' : 'normal', + fontStyle: isItalic ? 'italic' : 'normal', + direction: $isElementNode(parent) ? getNodeDirection(parent) : 'ltr', textDecoration: node.hasFormat('underline') ? 'underline' : node.hasFormat('strikethrough') @@ -237,7 +249,7 @@ const getPDFDataNodeFromLexicalNode = (node: LexicalNode): PDFDataNode => { type: 'View', style: [styles.row, styles.wrap], children: line.map((child) => { - return getPDFDataNodeFromLexicalNode(child) + return getPDFDataNodeFromLexicalNode(child, fontFamilies) }), } }), @@ -267,7 +279,7 @@ const getPDFDataNodeFromLexicalNode = (node: LexicalNode): PDFDataNode => { const children = $isElementNode(node) || $isTableNode(node) || $isTableCellNode(node) || $isTableRowNode(node) ? node.getChildren().map((child) => { - return getPDFDataNodeFromLexicalNode(child) + return getPDFDataNodeFromLexicalNode(child, fontFamilies) }) : undefined @@ -427,8 +439,8 @@ const getPDFDataNodeFromLexicalNode = (node: LexicalNode): PDFDataNode => { } } -const getPDFDataNodesFromLexicalNodes = (nodes: LexicalNode[]): PDFDataNode[] => { - return nodes.map(getPDFDataNodeFromLexicalNode) +const getPDFDataNodesFromLexicalNodes = (nodes: LexicalNode[], fontFamilies: FontFamily[]): PDFDataNode[] => { + return nodes.map((node) => getPDFDataNodeFromLexicalNode(node, fontFamilies)) } const pdfWorker = new PDFWorker() @@ -438,17 +450,21 @@ const PDFWorkerComlink = wrap(pdfWorker) * @returns The PDF as an object url */ export function $generatePDFFromNodes(editor: LexicalEditor, pageSize: PrefValue[PrefKey.SuperNoteExportPDFPageSize]) { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { editor.getEditorState().read(() => { const root = $getRoot() const nodes = root.getChildren() + const fontFamilies: FontFamily[] = [] + const pdfDataNodes = getPDFDataNodesFromLexicalNodes(nodes, fontFamilies) - const pdfDataNodes = getPDFDataNodesFromLexicalNodes(nodes) - - void PDFWorkerComlink.renderPDF(pdfDataNodes, pageSize).then((blob) => { - const url = URL.createObjectURL(blob) - resolve(url) - }) + void PDFWorkerComlink.renderPDF(pdfDataNodes, pageSize, fontFamilies) + .then((blob) => { + const url = URL.createObjectURL(blob) + resolve(url) + }) + .catch((error) => { + reject(error) + }) }) }) } diff --git a/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFWorker.worker.tsx b/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFWorker.worker.tsx index 6b130c84f..f4f410357 100644 --- a/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFWorker.worker.tsx +++ b/packages/web/src/javascripts/Components/SuperEditor/Lexical/Utils/PDFExport/PDFWorker.worker.tsx @@ -17,6 +17,7 @@ import { PageProps, } from '@react-pdf/renderer' import { expose } from 'comlink' +import { FontFamily, registerPDFFonts } from './FontConfig' export type PDFDataNode = | (( @@ -94,7 +95,8 @@ const PDFDocument = ({ nodes, pageSize }: { nodes: PDFDataNode[]; pageSize: Page ) } -const renderPDF = (nodes: PDFDataNode[], pageSize: PageProps['size']) => { +const renderPDF = (nodes: PDFDataNode[], pageSize: PageProps['size'], fontFamilies: FontFamily[]) => { + registerPDFFonts(fontFamilies) return pdf().toBlob() } diff --git a/packages/web/src/javascripts/Components/SuperEditor/Tools/HeadlessSuperConverter.tsx b/packages/web/src/javascripts/Components/SuperEditor/Tools/HeadlessSuperConverter.tsx index 16013d1c4..97b1ce578 100644 --- a/packages/web/src/javascripts/Components/SuperEditor/Tools/HeadlessSuperConverter.tsx +++ b/packages/web/src/javascripts/Components/SuperEditor/Tools/HeadlessSuperConverter.tsx @@ -64,6 +64,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface { } }, ): Promise { + let didThrow = false if (superString.length === 0) { return superString } @@ -81,7 +82,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface { let content: string | undefined - await new Promise((resolve) => { + await new Promise((resolve, reject) => { const handleFileNodes = () => { if (embedBehavior === 'reference') { resolve() @@ -136,12 +137,16 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface { }), ) .then(() => resolve()) - .catch(console.error) + .catch((error) => { + didThrow = true + console.error(error) + reject(error) + }) } this.exportEditor.update(handleFileNodes, { discrete: true }) }) - await new Promise((resolve) => { + await new Promise((resolve, reject) => { const convertToFormat = () => { switch (toFormat) { case 'txt': @@ -164,10 +169,16 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface { break case 'pdf': { void import('../Lexical/Utils/PDFExport/PDFExport').then(({ $generatePDFFromNodes }): void => { - void $generatePDFFromNodes(this.exportEditor, config?.pdf?.pageSize || 'A4').then((pdf) => { - content = pdf - resolve() - }) + void $generatePDFFromNodes(this.exportEditor, config?.pdf?.pageSize || 'A4') + .then((pdf) => { + content = pdf + resolve() + }) + .catch((error) => { + didThrow = true + console.error(error) + reject(error) + }) }) break } @@ -181,7 +192,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface { this.exportEditor.update(convertToFormat, { discrete: true }) }) - if (typeof content !== 'string') { + if (didThrow || typeof content !== 'string') { throw new Error('Could not export note') } diff --git a/packages/web/web.webpack.config.js b/packages/web/web.webpack.config.js index b6898c0f7..a2cf68aba 100644 --- a/packages/web/web.webpack.config.js +++ b/packages/web/web.webpack.config.js @@ -1,3 +1,4 @@ +/* eslint-disable */ const path = require('path') const webpack = require('webpack') const MiniCssExtractPlugin = require('mini-css-extract-plugin') diff --git a/packages/web/web.webpack.dev.js b/packages/web/web.webpack.dev.js index 6fb6074f0..2084f86a6 100644 --- a/packages/web/web.webpack.dev.js +++ b/packages/web/web.webpack.dev.js @@ -29,6 +29,16 @@ module.exports = (env, argv) => { devMiddleware: { writeToDisk: argv.writeToDisk, }, + proxy: { + '/assets': { + target: 'https://assets.standardnotes.com', + changeOrigin: true, + secure: false, + pathRewrite: { + '^/assets': '', + }, + }, + }, }, }) } diff --git a/yarn.lock b/yarn.lock index 84796648d..2bba7b13f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3874,6 +3874,15 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.7.3": + version: 1.7.3 + resolution: "@floating-ui/core@npm:1.7.3" + dependencies: + "@floating-ui/utils": ^0.2.10 + checksum: 5adfb28ddfa1776ec83516439256b9026e5d62b5413f62ae51e50a870cf0df4bea9abf72aacc0610ee84bc00e85883d0d32f2a0976ee7fa89728a717a7494f27 + languageName: node + linkType: hard + "@floating-ui/dom@npm:^1.0.0": version: 1.4.5 resolution: "@floating-ui/dom@npm:1.4.5" @@ -3883,36 +3892,46 @@ __metadata: languageName: node linkType: hard -"@floating-ui/react-dom@npm:^2.1.3": - version: 2.1.3 - resolution: "@floating-ui/react-dom@npm:2.1.3" +"@floating-ui/dom@npm:^1.7.4": + version: 1.7.4 + resolution: "@floating-ui/dom@npm:1.7.4" dependencies: - "@floating-ui/dom": ^1.0.0 - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 2e2aab5dcc3c8c8ad706580e6d43fbd3b303b3b7fba08c0cf0d4edd5bf1f2fdcc7db6b07321c4d1ff9a607a03da1a742fc12f55224556bbab37ce0fafd0fae5f + "@floating-ui/core": ^1.7.3 + "@floating-ui/utils": ^0.2.10 + checksum: 806923e6f5b09e024c366070f2115a4db6e8ad28462bac29cd075170a6f7d900497da3ee542439bd0770b8e2fff12b636cc30873d1c82e9ec4a487870b080643 languageName: node linkType: hard -"@floating-ui/react@npm:^0.27.8": - version: 0.27.12 - resolution: "@floating-ui/react@npm:0.27.12" +"@floating-ui/react-dom@npm:^2.1.6": + version: 2.1.6 + resolution: "@floating-ui/react-dom@npm:2.1.6" dependencies: - "@floating-ui/react-dom": ^2.1.3 - "@floating-ui/utils": ^0.2.9 + "@floating-ui/dom": ^1.7.4 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 24ff266806cd4cba6ad066f0eda7b99583f68af877f41df0b2a8d10a392692e3a1c1d666ebb75571a060818ede940bae59d833aa517ed538f7dba9dddd9991ae + languageName: node + linkType: hard + +"@floating-ui/react@npm:^0.27.16": + version: 0.27.16 + resolution: "@floating-ui/react@npm:0.27.16" + dependencies: + "@floating-ui/react-dom": ^2.1.6 + "@floating-ui/utils": ^0.2.10 tabbable: ^6.0.0 peerDependencies: react: ">=17.0.0" react-dom: ">=17.0.0" - checksum: 03c201db156ec8e65f33548fb78176b5f96ae24b4f09b3cc5dc7fa16d04fa5782b0e90f4aa83190981ccf8dd3c6523456c3afdc72d194c994f0b15ada9a7aebb + checksum: 4f242f843ca51c57a0f5c20555da7dfd3b7a4e08e10112371dbf1eff0f390b17b518fa33e72277db85e2c756c1e23ec4605e79850763ad8a17df21bede624fe5 languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.9": - version: 0.2.9 - resolution: "@floating-ui/utils@npm:0.2.9" - checksum: d518b80cec5a323e54a069a1dd99a20f8221a4853ed98ac16c75275a0cc22f75de4f8ac5b121b4f8990bd45da7ad1fb015b9a1e4bac27bb1cd62444af84e9784 +"@floating-ui/utils@npm:^0.2.10": + version: 0.2.10 + resolution: "@floating-ui/utils@npm:0.2.10" + checksum: ffc4c24a46a665cfd0337e9aaf7de8415b572f8a0f323af39175e4b575582aed13d172e7f049eedeece9eaf022bad019c140a2d192580451984ae529bdf1285c languageName: node linkType: hard @@ -4755,264 +4774,285 @@ __metadata: languageName: node linkType: hard -"@lexical/clipboard@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/clipboard@npm:0.32.1" +"@lexical/clipboard@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/clipboard@npm:0.38.1" dependencies: - "@lexical/html": 0.32.1 - "@lexical/list": 0.32.1 - "@lexical/selection": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 8a3056d93f1c15fb84e9d47acd585348e5159e62ee79c160b3552051ce765b659d69062a2687e83eab4120dca8bd9c7564cdcb5ed704bcff4487409eac8251cc + "@lexical/html": 0.38.1 + "@lexical/list": 0.38.1 + "@lexical/selection": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: d56bd0b5dbba12bda9e92b9a4e076df31d29d2eec389cda0500a9ef9a6e7b106ff2c461a02096fa7deb31ee5ee8ba37002baa5ac2ba240a35960dd77a1720293 languageName: node linkType: hard -"@lexical/code@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/code@npm:0.32.1" +"@lexical/code@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/code@npm:0.38.1" dependencies: - "@lexical/utils": 0.32.1 - lexical: 0.32.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 prismjs: ^1.30.0 - checksum: 28dacc148fb0d96cb5cd6fad43229755a3b44faebbaf73f6fd686d9b37c6791d8faf0c259324129d20cf624e1fbef67cf7a59c71d215bc33d3eb2f13cb6b0b46 + checksum: 7d2273bb057fa00f221098c6ecf769c1aa89892548cadb4b6ed15f3be1883e1aff6f01d797d08cb4c3288d57e88fb4e4ef8aaa899b9cbd77208725d80c36afe5 languageName: node linkType: hard -"@lexical/devtools-core@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/devtools-core@npm:0.32.1" +"@lexical/devtools-core@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/devtools-core@npm:0.38.1" dependencies: - "@lexical/html": 0.32.1 - "@lexical/link": 0.32.1 - "@lexical/mark": 0.32.1 - "@lexical/table": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 + "@lexical/html": 0.38.1 + "@lexical/link": 0.38.1 + "@lexical/mark": 0.38.1 + "@lexical/table": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 peerDependencies: react: ">=17.x" react-dom: ">=17.x" - checksum: 0b6b3f96aa0dad180901c50b51723664a22226a35d9ba58389a8e7bd8232484b12ca7c3bd274d4d86680d43760d2de1b57e887415063b62e637dcc6a98d7fdeb + checksum: 00ed9e4c9b7dc0777ca80d219248286a7c91573d538a0146ec9c2aa7f320222653858ad9eb7be807036732598dab2108c84a3b54f2ada66d54c60becc990955c languageName: node linkType: hard -"@lexical/dragon@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/dragon@npm:0.32.1" +"@lexical/dragon@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/dragon@npm:0.38.1" dependencies: - lexical: 0.32.1 - checksum: a5e91ca93a8c32514d9e2b99db7b5d5b2a65c863812d2feb5cec51d7550ba8edd3a68f7b4a4fa612a725434aecc27fdecc850b84b039baef52e5fa18c777e484 + "@lexical/extension": 0.38.1 + lexical: 0.38.1 + checksum: 1771dc711d558658457995ef6f2a29a6fa5360abf202b3426cd403245ef59efd8ae9e3899130e92778980a03d7a9e4ff617228d20cc22da05ac2479b1c95e490 languageName: node linkType: hard -"@lexical/hashtag@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/hashtag@npm:0.32.1" +"@lexical/extension@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/extension@npm:0.38.1" dependencies: - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 3a7b00edeb89540565b100645e7e79d4663b87de7231fdf087ce9ec55b27dd69186b5940d4346e7d6126d59ac648004281ec1e8b29ffcc9e5712a485cc3bf0e7 + "@lexical/utils": 0.38.1 + "@preact/signals-core": ^1.11.0 + lexical: 0.38.1 + checksum: 36a2d22ee54e56556ae4c7a6cd3bedede7ae05b16f3d414e4a7a11a50cf5f1cbab72fc70a3a9301b6ecafe2c58d94fe123bbe7e515ccd221a5967d2850bb184b languageName: node linkType: hard -"@lexical/headless@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/headless@npm:0.32.1" +"@lexical/hashtag@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/hashtag@npm:0.38.1" dependencies: - lexical: 0.32.1 - checksum: 35dc85b3e4a6dcc193b9db1a08ab8ae73e4a4c02c28d2220f304fa362bd014955465b0fdee0927f7f9cbbe232905079267135b4f43d6194bdaf210ca33432a94 + "@lexical/text": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 497655921878e6facb16cad3133b7f78d1fafdce5f30ea8a75dc5c9498f11c0a7ff45391a325cecdfdd7312fd7040bb1d0b35b2b012d70b7cde08db9366e8ea5 languageName: node linkType: hard -"@lexical/history@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/history@npm:0.32.1" +"@lexical/headless@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/headless@npm:0.38.1" dependencies: - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 34b47f6e3872faab321152e99f200bdca4b132ebde0183530f4770fde929d1509c76ff371ff1847dc683fbf9cc1d2223e97c85afd0fa84a2e307d396b3c9d6a1 + happy-dom: ^20.0.0 + lexical: 0.38.1 + checksum: 994a1e3750f24c1650af77ec6151b101db8dce3f31975f25595058c586ed89d25ec7ec6172a9bf415d325e5e57fc5cdff24c4090dff931f01d3d9c5d06c28d48 languageName: node linkType: hard -"@lexical/html@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/html@npm:0.32.1" +"@lexical/history@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/history@npm:0.38.1" dependencies: - "@lexical/selection": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 992b4ff40d8a3e413f38e27d3e9290de3293d68a8e3f8507cdcd33ecd6f99af1100dd3e659cf6df3e78f3df68b036e7b0fedef76b4514068a410597e35588fb9 + "@lexical/extension": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 12fe92f72293b11a41c2c9696508c43339f4d80d7163223c601c3ecf2019fb0ee15a585b68eb576c25afd1260a73b996ae30f39670b63b63cf6e58b32e5bf5e2 languageName: node linkType: hard -"@lexical/link@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/link@npm:0.32.1" +"@lexical/html@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/html@npm:0.38.1" dependencies: - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 40aa1fd981203b47fddf43f719dc54a9228ddca9c5c7e1feba5bde6481e049b53c19223a18854a83708bc663941d447b098b1b6c2b15401f07a602adb71472f3 + "@lexical/selection": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: effeae00d2bae266d08f21c54b98708d050ea75160295d03f732a540e1e41e4ee86242ffaa5de24abdaa0449a37f7cc488ca8b1ff1a0e1a8d95ee8a59a61924c languageName: node linkType: hard -"@lexical/list@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/list@npm:0.32.1" +"@lexical/link@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/link@npm:0.38.1" dependencies: - "@lexical/selection": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: d89c597f354ee54818f319ad3dc18e76b77025651c816ad75c13d918b357ad5b148ed41124286df8ca36979fdde5d28899696b48869e97a0b0f2f10d29c3fa81 + "@lexical/extension": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 18ffad2fe86f5abf35a019ce180f87586d4fc57ab3e07308711ac75b7c7ce0f10ad1c128f36ab477f568e370529cc0d207d8b3c32917cc31ec0cc3ce1fc48d06 languageName: node linkType: hard -"@lexical/mark@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/mark@npm:0.32.1" +"@lexical/list@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/list@npm:0.38.1" dependencies: - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 5566e1cf57d73d5cd283b68f60c91c860e821db8f22491a6c172bb2ea2fff17ee680fac34854545da1ac8c1d96f8225e7b46db139d8a2d60dbbc49b7f64a67b9 + "@lexical/extension": 0.38.1 + "@lexical/selection": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: d2b288d3a4003733e453fa1b90ac31a287fa3704259a00a3eb8faab2a4fa5a42d730e75c78beff2e15266a7831fb4a048d6fbacf218d1447a4818010198914d2 languageName: node linkType: hard -"@lexical/markdown@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/markdown@npm:0.32.1" +"@lexical/mark@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/mark@npm:0.38.1" dependencies: - "@lexical/code": 0.32.1 - "@lexical/link": 0.32.1 - "@lexical/list": 0.32.1 - "@lexical/rich-text": 0.32.1 - "@lexical/text": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: bab8ff470bf09858be889485a33676fa3d7706551bd051f0b24668c71447b581354819db8fd7d375f25aea894712a9fe68c417da887eaaa4d65c1460d56b4138 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 3ec0f37e9ae505a8e0e5a304c00b2a36b17ebce0122a03a0a353e837b06397b066f6aa82d3796a1eeee00d1308d6804b2c5560d3c5a50b62039f818fbe1e8579 languageName: node linkType: hard -"@lexical/offset@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/offset@npm:0.32.1" +"@lexical/markdown@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/markdown@npm:0.38.1" dependencies: - lexical: 0.32.1 - checksum: a59d47bbfba7199ecbc474384b71988df9d19fbb55d822904e1be1d286ca1ef4d82eff0f129055b92c7ea471a968d9c6b778d48db099854aeeaf6c608635020e + "@lexical/code": 0.38.1 + "@lexical/link": 0.38.1 + "@lexical/list": 0.38.1 + "@lexical/rich-text": 0.38.1 + "@lexical/text": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 9aab4eb6e9d5abf9a6970a19aee126c7f7168a7ddfbdcec008ccc4ae1afc8a9bae2252d636ef6ca26798e36eac2e95db024c40e64978863f2a530ca7a1bd1255 languageName: node linkType: hard -"@lexical/overflow@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/overflow@npm:0.32.1" +"@lexical/offset@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/offset@npm:0.38.1" dependencies: - lexical: 0.32.1 - checksum: 569bb48aaccd61be6248f8ec606a0a9d3540553cff7e9fcd48573cb693e62c7add16273832c989ce501d8c4b0d4ffb681a8fa353165b8ce9089e1de0c961154e + lexical: 0.38.1 + checksum: bf397bc3db282e2249a37518c2ec6c4a3bee47ad01aa22b70c25b1a6a4f9842c7bb32660c28603765b4e6c85cefb8d63edd852dc8507d41b5345b2e8ac2c93fb languageName: node linkType: hard -"@lexical/plain-text@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/plain-text@npm:0.32.1" +"@lexical/overflow@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/overflow@npm:0.38.1" dependencies: - "@lexical/clipboard": 0.32.1 - "@lexical/selection": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 143e1b4cb965adf59f49c9893bed377c579657c3fcbbbf9671fd4b82a68adfcc4a3848d70a721ba9623f4c57289e215c7fd36d9e4924b0ecae6d687c1f5e85d3 + lexical: 0.38.1 + checksum: 3812795f83a3569ddea371a4afda38758b39db827ca8ba2349484bdde9c4508c01bb5f24b6980d42dfb142ce3ab1b6825b16472b1125226a03d307114bf97e23 languageName: node linkType: hard -"@lexical/react@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/react@npm:0.32.1" +"@lexical/plain-text@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/plain-text@npm:0.38.1" dependencies: - "@floating-ui/react": ^0.27.8 - "@lexical/devtools-core": 0.32.1 - "@lexical/dragon": 0.32.1 - "@lexical/hashtag": 0.32.1 - "@lexical/history": 0.32.1 - "@lexical/link": 0.32.1 - "@lexical/list": 0.32.1 - "@lexical/mark": 0.32.1 - "@lexical/markdown": 0.32.1 - "@lexical/overflow": 0.32.1 - "@lexical/plain-text": 0.32.1 - "@lexical/rich-text": 0.32.1 - "@lexical/table": 0.32.1 - "@lexical/text": 0.32.1 - "@lexical/utils": 0.32.1 - "@lexical/yjs": 0.32.1 - lexical: 0.32.1 - react-error-boundary: ^3.1.4 + "@lexical/clipboard": 0.38.1 + "@lexical/dragon": 0.38.1 + "@lexical/selection": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 4e2d79ced9dc2b2565738955161f8ca338dd70732e29e92e0b11ed6bab36606edaa01b48c3481d1d2c2bde8344f9c6e6030d1f32623c7854e1bc8762efff0a98 + languageName: node + linkType: hard + +"@lexical/react@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/react@npm:0.38.1" + dependencies: + "@floating-ui/react": ^0.27.16 + "@lexical/devtools-core": 0.38.1 + "@lexical/dragon": 0.38.1 + "@lexical/extension": 0.38.1 + "@lexical/hashtag": 0.38.1 + "@lexical/history": 0.38.1 + "@lexical/link": 0.38.1 + "@lexical/list": 0.38.1 + "@lexical/mark": 0.38.1 + "@lexical/markdown": 0.38.1 + "@lexical/overflow": 0.38.1 + "@lexical/plain-text": 0.38.1 + "@lexical/rich-text": 0.38.1 + "@lexical/table": 0.38.1 + "@lexical/text": 0.38.1 + "@lexical/utils": 0.38.1 + "@lexical/yjs": 0.38.1 + lexical: 0.38.1 + react-error-boundary: ^6.0.0 peerDependencies: react: ">=17.x" react-dom: ">=17.x" - checksum: 62f9c38b41e6ab5b7ffd67ceff37fb22e9d9e0a39ec254481ecf63e0345016d5320e96706bc005dd2986f7b23b91e74429646f4cb5bfa57d803e8d45c5dbe779 + checksum: a9488dc3f2d6207643d73b0b1dbbcd15abf5b0880db88c9befb4dfd0abd069be53e19c1647c8854e8fd63fd68732ab84556582f4690eb353c1f772fe50ff4387 languageName: node linkType: hard -"@lexical/rich-text@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/rich-text@npm:0.32.1" +"@lexical/rich-text@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/rich-text@npm:0.38.1" dependencies: - "@lexical/clipboard": 0.32.1 - "@lexical/selection": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: a1c3d1afb6d93f0b711f23e2166879f6afc2a6461de5158cfb7268d22892376b157244219c40b73b8706ca6117a8bc312cbdc200a77fd17b0d19cf8116af0295 + "@lexical/clipboard": 0.38.1 + "@lexical/dragon": 0.38.1 + "@lexical/selection": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: b8d2218d5ae0eb4570fe9004a32e99523ce67312cdeb10151c63595cc5c828475735394c811c2bfd83d518119bde84d4ad97888520b818429f00531e16797adb languageName: node linkType: hard -"@lexical/selection@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/selection@npm:0.32.1" +"@lexical/selection@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/selection@npm:0.38.1" dependencies: - lexical: 0.32.1 - checksum: 120a066f7031437f313d893945e98f64d8419afb01b682d0303917da9f49f62a4615c18e1386de65773f9bdfdf1ee031c502bce58049f42f53fcc0d8b4205133 + lexical: 0.38.1 + checksum: 7e585e9149a6353937d89c9495b328b56c1cd64c2f70852dc02c3d38da6084e5ea835dc3cbcaa26975fb343c332c3efd08732032cd41c614275f9ee699a60a37 languageName: node linkType: hard -"@lexical/table@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/table@npm:0.32.1" +"@lexical/table@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/table@npm:0.38.1" dependencies: - "@lexical/clipboard": 0.32.1 - "@lexical/utils": 0.32.1 - lexical: 0.32.1 - checksum: 82c9865a8e068235b0d7d923eec6972d71c9ba77d6403c0e059c973efb6f6b4a43c3481e6b54a7a7e6ee127d435c42f214a52a3c48ee08d2bd4efceab6b6a4fa + "@lexical/clipboard": 0.38.1 + "@lexical/extension": 0.38.1 + "@lexical/utils": 0.38.1 + lexical: 0.38.1 + checksum: 9ea4a6bee5c36d8306e6f905f081355ca3f1ce63db4117fbca11976d7c5c5cc93eac5a41c7ea9ac4aa4786d9be0d88d8b930d59ee23442fc7454d38c81a5315d languageName: node linkType: hard -"@lexical/text@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/text@npm:0.32.1" +"@lexical/text@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/text@npm:0.38.1" dependencies: - lexical: 0.32.1 - checksum: adbbb8e90282c5544029ba0e5213b9056554dc8bb779a98906b86fdcc99a41d3cce39b175e6296f9ac6de2f5e3dcfd5c1330ecdb5abaec13a2b3984a09203310 + lexical: 0.38.1 + checksum: abb9ff9045845e0114364108245ccebd46cd4df259308a07b565d670ab459d658d42dc842ab182d1f8bb71da5259a098cd3071cbb5022dabb29c1ef3179df8cf languageName: node linkType: hard -"@lexical/utils@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/utils@npm:0.32.1" +"@lexical/utils@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/utils@npm:0.38.1" dependencies: - "@lexical/list": 0.32.1 - "@lexical/selection": 0.32.1 - "@lexical/table": 0.32.1 - lexical: 0.32.1 - checksum: 39050ec6f3cb40b574444e1a024a6fd9ad7034872e4467eaa4c8a7d527fb4c61e28c244dbb7ed727134bd9865d3cdf22f7ec3a6ad0071ee8492379f1e61077b9 + "@lexical/list": 0.38.1 + "@lexical/selection": 0.38.1 + "@lexical/table": 0.38.1 + lexical: 0.38.1 + checksum: 121c1f2d4a341b1b7374315cc86f21cceb0193a77a066343cb5eb1e458a60fd21511c2285dd52001e9031b0242830d091c99df707ed5da2aea13a05e248549f2 languageName: node linkType: hard -"@lexical/yjs@npm:0.32.1": - version: 0.32.1 - resolution: "@lexical/yjs@npm:0.32.1" +"@lexical/yjs@npm:0.38.1": + version: 0.38.1 + resolution: "@lexical/yjs@npm:0.38.1" dependencies: - "@lexical/offset": 0.32.1 - "@lexical/selection": 0.32.1 - lexical: 0.32.1 + "@lexical/offset": 0.38.1 + "@lexical/selection": 0.38.1 + lexical: 0.38.1 peerDependencies: yjs: ">=13.5.22" - checksum: 2c7ea12ddf688a0c7c042381a9249d48820109d5e8fb682aefc5a11f385a9e39d2fa8962ae7f52af754d44b55568cec7351bcc5858653d9724cca92c59736821 + checksum: fb9ab146ba34323987886898a804a6f477530340404874b8548d3cb288cff792ec23690be63f7ff21d607ca07c0f7352e7e73aa1c7207e7c47e731f62eb6056a languageName: node linkType: hard @@ -6186,6 +6226,13 @@ __metadata: languageName: node linkType: hard +"@preact/signals-core@npm:^1.11.0": + version: 1.12.1 + resolution: "@preact/signals-core@npm:1.12.1" + checksum: 55719713dc25fcb812dc1bdc6a4525f62287ec0a32364b902f925a8fe22dd3c2dc5f3f92734afd8a6ae7d7c28b0dbdf553ccb0b7e94ea386e283b800f9c15d35 + languageName: node + linkType: hard + "@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/aspromise@npm:1.1.2" @@ -6724,162 +6771,171 @@ __metadata: languageName: node linkType: hard -"@react-pdf/fns@npm:2.1.0": - version: 2.1.0 - resolution: "@react-pdf/fns@npm:2.1.0" - dependencies: - "@babel/runtime": ^7.20.13 - checksum: b7360daa769971ffa4cf8c45d953a30bd35c33fdaf03b9ef5bf3ab5f82d6b46f2450b061019aeabc6309024cae4a83333b08656aa79d1a11f962c656ca74487f +"@react-pdf/fns@npm:3.1.2": + version: 3.1.2 + resolution: "@react-pdf/fns@npm:3.1.2" + checksum: 4e8cdd32f223e4d3682b49a5539b1f9cf0a6b4e035f5e5ff9aa5a0c4235278820cc7f73c085aa696e46d61f22965c4f33ba1dd8335665c3e6e545dd7f4cde185 languageName: node linkType: hard -"@react-pdf/font@npm:^2.4.2": - version: 2.4.2 - resolution: "@react-pdf/font@npm:2.4.2" +"@react-pdf/font@npm:^4.0.2": + version: 4.0.2 + resolution: "@react-pdf/font@npm:4.0.2" dependencies: - "@babel/runtime": ^7.20.13 - "@react-pdf/types": ^2.4.0 - cross-fetch: ^3.1.5 + "@react-pdf/pdfkit": ^4.0.3 + "@react-pdf/types": ^2.9.0 fontkit: ^2.0.2 is-url: ^1.2.4 - checksum: 910f7422f278a1a5c6374d746c70d416c8d172004fbc0e8acdf828e1dfd727f0ac70d4505f334886c74b25fd7d46acc1d8b1c178f84aae39714fff989c853369 + checksum: 547a64dd3fd1affcf3b1741d9215b5726d9e0d7ff583983f31ada67850db05e26bc092828b2a2f0897f4ed0683474db4fe56fb6ef5e328ea8cc5187b143f2861 languageName: node linkType: hard -"@react-pdf/image@npm:^2.3.1": - version: 2.3.1 - resolution: "@react-pdf/image@npm:2.3.1" +"@react-pdf/image@npm:^3.0.3": + version: 3.0.3 + resolution: "@react-pdf/image@npm:3.0.3" dependencies: - "@babel/runtime": ^7.20.13 - "@react-pdf/png-js": ^2.3.0 - cross-fetch: ^3.1.5 - jpeg-exif: ^1.1.4 - checksum: 7e8bb017a548df5d104af567f692e345f19a89c9a626e1630c71155b1055ef93445b12576074b05f628cfb48037efe8e9c9e04e7fc74b97d13172fb80deb2938 + "@react-pdf/png-js": ^3.0.0 + jay-peg: ^1.1.1 + checksum: 893ebef74d62d9d163af7035401c2bd0c5e43ceb7d6b9cc7e50d3ce2a2e7af7888b98e83e713a655ad6be5b0f246a1ac8a773a679ef30aaaac5b2579f0f8712f languageName: node linkType: hard -"@react-pdf/layout@npm:^3.10.2": - version: 3.10.2 - resolution: "@react-pdf/layout@npm:3.10.2" +"@react-pdf/layout@npm:^4.4.0": + version: 4.4.0 + resolution: "@react-pdf/layout@npm:4.4.0" dependencies: - "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.1.0 - "@react-pdf/image": ^2.3.1 - "@react-pdf/pdfkit": ^3.1.1 - "@react-pdf/primitives": ^3.1.1 - "@react-pdf/stylesheet": ^4.2.2 - "@react-pdf/textkit": ^4.3.0 - "@react-pdf/types": ^2.4.0 - cross-fetch: ^3.1.5 + "@react-pdf/fns": 3.1.2 + "@react-pdf/image": ^3.0.3 + "@react-pdf/primitives": ^4.1.1 + "@react-pdf/stylesheet": ^6.1.0 + "@react-pdf/textkit": ^6.0.0 + "@react-pdf/types": ^2.9.0 emoji-regex: ^10.3.0 queue: ^6.0.1 - yoga-layout: ^2.0.1 - checksum: 356e3e611d5913fa780605e3301b6939a50b2f4671163da5a5aff78d2ef666b2cc34b091913a0a98edc3559cb65cf0c49c5463827ad4f54b38c8ec7f67a0371d + yoga-layout: ^3.2.1 + checksum: 385e27f00a7b0dc94280fd7e92cc652e00783f201ef80c4f3d76e68fecc82b9d0369c37e1bb1c0e0cbd1801cc7eaaa7e96debf1950a7fb9eb405ad313f298110 languageName: node linkType: hard -"@react-pdf/pdfkit@npm:^3.1.1": - version: 3.1.1 - resolution: "@react-pdf/pdfkit@npm:3.1.1" +"@react-pdf/pdfkit@npm:^4.0.3": + version: 4.0.3 + resolution: "@react-pdf/pdfkit@npm:4.0.3" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/png-js": ^2.3.0 + "@react-pdf/png-js": ^3.0.0 browserify-zlib: ^0.2.0 crypto-js: ^4.2.0 fontkit: ^2.0.2 - jpeg-exif: ^1.1.4 + jay-peg: ^1.1.1 + linebreak: ^1.1.0 vite-compatible-readable-stream: ^3.6.1 - checksum: 34e10401c56dcee4a85230466672ad695b856ddb5202dba2606c86dce451f2dd9a2056e75385bce91f645f6e6110ec2b8800a592e9ff66422e69d18457a87a20 + checksum: 209f064f044c22991bfc11773880df0bfefc47bc81d24280901a837ecac1a80290d8f5a1f6c28ca838fc7cd40e43a01e0c8c4f13331341ac3bc24c03d0ecdd5c languageName: node linkType: hard -"@react-pdf/png-js@npm:^2.3.0": - version: 2.3.0 - resolution: "@react-pdf/png-js@npm:2.3.0" +"@react-pdf/png-js@npm:^3.0.0": + version: 3.0.0 + resolution: "@react-pdf/png-js@npm:3.0.0" dependencies: browserify-zlib: ^0.2.0 - checksum: 34f03fa5b97fc78bfe636d768ebb19cebedf391369b8b2572590379c4aadeac135b871893f0af486cd6c410ead32b09a31d08f53a1c4a7460a7a25460c9ff140 + checksum: 90c1612d7576d83eaf3fef9d5714b7fedb8f3e83a9af199763c4d68f73652aecec7d9fa90f185224c412500849f44beb4a4c49828c097e93d2ad42336bb019d1 languageName: node linkType: hard -"@react-pdf/primitives@npm:^3.1.1": - version: 3.1.1 - resolution: "@react-pdf/primitives@npm:3.1.1" - checksum: a52c0cfff74d29d36e2e4c1c2b8935faf2f13bbe3800901e93354ea044385d8716166e45f3a49bb729e6d9944d7a8239056f5af80b345cb2984e245b2e719c1d +"@react-pdf/primitives@npm:^4.1.1": + version: 4.1.1 + resolution: "@react-pdf/primitives@npm:4.1.1" + checksum: adadff1996daeca693aa59844ab613e597fdb674fce9f2c03f52573b593982ef49ff47d861290235861d02462ffbc87b7ed3da0d71af0d61c9226ce61b94ada8 languageName: node linkType: hard -"@react-pdf/render@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-pdf/render@npm:3.4.0" +"@react-pdf/reconciler@npm:^1.1.4": + version: 1.1.4 + resolution: "@react-pdf/reconciler@npm:1.1.4" + dependencies: + object-assign: ^4.1.1 + scheduler: 0.25.0-rc-603e6108-20241029 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: d920898a1c6bee70fb257aad1d53c062fedd9d2ad6ca6c63902bfc03c71713f4ab01a18cbfba55724ab7ca74985a2bc4774c51f690471182a7622a8a48056054 + languageName: node + linkType: hard + +"@react-pdf/render@npm:^4.3.0": + version: 4.3.0 + resolution: "@react-pdf/render@npm:4.3.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.1.0 - "@react-pdf/primitives": ^3.1.1 - "@react-pdf/textkit": ^4.3.0 - "@react-pdf/types": ^2.4.0 + "@react-pdf/fns": 3.1.2 + "@react-pdf/primitives": ^4.1.1 + "@react-pdf/textkit": ^6.0.0 + "@react-pdf/types": ^2.9.0 abs-svg-path: ^0.1.1 color-string: ^1.9.1 normalize-svg-path: ^1.1.0 parse-svg-path: ^0.1.2 svg-arc-to-cubic-bezier: ^3.2.0 - checksum: 48f19f6be45d48da50ee1d9f5994cda17cb74add7d14d740689d1148d57e29e4c895770b630213b23e7df25f9d0439f6d0caaba1c303d38a51a3d57394d25db7 + checksum: c0ba6c8e3577769280b842f2834bf74126f6d82624a213279e37f7d4984935be32ca66b4ee65e1b648e7f4c66184fe36d0b28211e771c79310834a2f2b43fddb languageName: node linkType: hard -"@react-pdf/renderer@npm:^3.3.2": - version: 3.3.2 - resolution: "@react-pdf/renderer@npm:3.3.2" +"@react-pdf/renderer@npm:^4.3.0": + version: 4.3.0 + resolution: "@react-pdf/renderer@npm:4.3.0" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/font": ^2.4.2 - "@react-pdf/layout": ^3.10.2 - "@react-pdf/pdfkit": ^3.1.1 - "@react-pdf/primitives": ^3.1.1 - "@react-pdf/render": ^3.4.0 - "@react-pdf/types": ^2.4.0 + "@react-pdf/fns": 3.1.2 + "@react-pdf/font": ^4.0.2 + "@react-pdf/layout": ^4.4.0 + "@react-pdf/pdfkit": ^4.0.3 + "@react-pdf/primitives": ^4.1.1 + "@react-pdf/reconciler": ^1.1.4 + "@react-pdf/render": ^4.3.0 + "@react-pdf/types": ^2.9.0 events: ^3.3.0 object-assign: ^4.1.1 prop-types: ^15.6.2 queue: ^6.0.1 - scheduler: ^0.17.0 peerDependencies: - react: ^16.8.6 || ^17.0.0 || ^18.0.0 - checksum: 4bc9286a739d2626a0b26e9edb31bf8a196f18b3d93c0901bb33e471fd8bc0055a79a530271c34b1eb127fd4053bd8b001ec56623f660cb0628f098bff4c9c71 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: aa54f134bc588e0f90670db46e2e2aff6a4a3cbf6f24caae18ece6e111a389da8b840595eb9bbfc20d8a44eea2c4e943a4154e7b04b94ea99935e1c0b58695c1 languageName: node linkType: hard -"@react-pdf/stylesheet@npm:^4.2.2": - version: 4.2.2 - resolution: "@react-pdf/stylesheet@npm:4.2.2" +"@react-pdf/stylesheet@npm:^6.1.0": + version: 6.1.0 + resolution: "@react-pdf/stylesheet@npm:6.1.0" dependencies: - "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.1.0 - "@react-pdf/types": ^2.4.0 + "@react-pdf/fns": 3.1.2 + "@react-pdf/types": ^2.9.0 color-string: ^1.9.1 hsl-to-hex: ^1.0.0 media-engine: ^1.0.3 postcss-value-parser: ^4.1.0 - checksum: f6ce9ecc0c03591563a69c8d1a28fcb56227e7b746913cfe6fa5e205cafedc98328636779ef9f1974cc77222bdbf2966f3d81178df52039595a746d892013a8e + checksum: 93998eef6e74dfca5d1c955395fcb43e3836df8674c047199ced3d08390321a895e8d2b40a4803ce26181e6be612e056f204dcf81d076229d6a00526c44db20d languageName: node linkType: hard -"@react-pdf/textkit@npm:^4.3.0": - version: 4.3.0 - resolution: "@react-pdf/textkit@npm:4.3.0" +"@react-pdf/textkit@npm:^6.0.0": + version: 6.0.0 + resolution: "@react-pdf/textkit@npm:6.0.0" dependencies: - "@babel/runtime": ^7.20.13 - "@react-pdf/fns": 2.1.0 + "@react-pdf/fns": 3.1.2 + bidi-js: ^1.0.2 hyphen: ^1.6.4 unicode-properties: ^1.4.1 - checksum: d4ce3e405160be1337241580cb0043f1b2117accfe5850e84d813a07c5c0d2cc106bed6c9c70fd1eff324c1fd7f8bf276ef314fe39addde5c9eb986130267e62 + checksum: 5bc087ad2da60d1c3c3a06f02639adaca3d059f526ee9ec79fc7877ef224813ec2eef8f064b36872b5a6e659c510813abe0d89b6fecc0c014833dd5437dc7ef9 languageName: node linkType: hard -"@react-pdf/types@npm:^2.4.0": - version: 2.4.0 - resolution: "@react-pdf/types@npm:2.4.0" - checksum: a9b826753c8ffdf9a812e7169e5c827451aff62c73269f1251275927edd07f9444cdddbdc8afa426df74996725189ce3ac7987df45d8089a42cb68b549fdfb6e +"@react-pdf/types@npm:^2.9.0": + version: 2.9.0 + resolution: "@react-pdf/types@npm:2.9.0" + dependencies: + "@react-pdf/font": ^4.0.2 + "@react-pdf/primitives": ^4.1.1 + "@react-pdf/stylesheet": ^6.1.0 + checksum: ed2f1854e161a13300f7034afb3302e1073fba454a64388fb9c4fa3b6f552413b2e055909165a33b3664a9b5ac852edbc50fca4ab321ebfeffcf90c9e95774f1 languageName: node linkType: hard @@ -8801,16 +8857,16 @@ __metadata: "@babel/plugin-transform-react-jsx": ^7.19.0 "@babel/preset-env": "*" "@babel/preset-typescript": ^7.21.5 - "@lexical/clipboard": 0.32.1 - "@lexical/headless": 0.32.1 - "@lexical/link": 0.32.1 - "@lexical/list": 0.32.1 - "@lexical/react": 0.32.1 - "@lexical/rich-text": 0.32.1 - "@lexical/utils": 0.32.1 + "@lexical/clipboard": 0.38.1 + "@lexical/headless": 0.38.1 + "@lexical/link": 0.38.1 + "@lexical/list": 0.38.1 + "@lexical/react": 0.38.1 + "@lexical/rich-text": 0.38.1 + "@lexical/utils": 0.38.1 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.10 "@radix-ui/react-slot": ^1.0.1 - "@react-pdf/renderer": ^3.3.2 + "@react-pdf/renderer": ^4.3.0 "@simplewebauthn/browser": ^8.0.2 "@standardnotes/authenticator": ^2.4.0 "@standardnotes/autobiography-theme": ^1.2.7 @@ -8859,7 +8915,7 @@ __metadata: identity-obj-proxy: ^3.0.0 jest: ^29.3.1 jest-environment-jsdom: ^29.3.1 - lexical: 0.32.1 + lexical: 0.38.1 lint-staged: ">=13" mini-css-extract-plugin: ^2.7.2 minimatch: ^5.1.1 @@ -8881,6 +8937,7 @@ __metadata: ts-jest: ^29.0.3 ts-loader: ^9.4.2 typescript: "*" + unicode-script: ^1.2.0 webextension-polyfill: ^0.10.0 webpack: "*" webpack-dev-server: "*" @@ -9563,6 +9620,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.0.0": + version: 20.19.23 + resolution: "@types/node@npm:20.19.23" + dependencies: + undici-types: ~6.21.0 + checksum: 1f213fa43821c59a0e00500e86a82e5d0e7eb912a4d216a7d9ebc59adef1aba734e3774d6fad9d213f97ba518fe3e0cd95b508e9e2b7c460f75c9bff6c957b70 + languageName: node + linkType: hard + "@types/node@npm:^22.7.7": version: 22.14.1 resolution: "@types/node@npm:22.14.1" @@ -9798,6 +9864,13 @@ __metadata: languageName: node linkType: hard +"@types/whatwg-mimetype@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/whatwg-mimetype@npm:3.0.2" + checksum: 30e2599ae02c539a6dd08b58de255aad24a41cdabeebc0293814884f1301f1328443b9915f2e990e4f484fa7f226ca8718991b63d2d387287f898c36390ef856 + languageName: node + linkType: hard + "@types/wicg-file-system-access@npm:^2023.10.4": version: 2023.10.4 resolution: "@types/wicg-file-system-access@npm:2023.10.4" @@ -11658,6 +11731,13 @@ __metadata: languageName: node linkType: hard +"base64-js@npm:0.0.8": + version: 0.0.8 + resolution: "base64-js@npm:0.0.8" + checksum: e95d2fa4b9000789fedd1e1ebac7830a70f5b1c06c72b2cf7862a48335af5d42229c0deda5085b2c8e403e479b612a55cd682bd4438838980d07cfc21c91e750 + languageName: node + linkType: hard + "base64-js@npm:^1.1.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -11710,6 +11790,15 @@ __metadata: languageName: node linkType: hard +"bidi-js@npm:^1.0.2": + version: 1.0.3 + resolution: "bidi-js@npm:1.0.3" + dependencies: + require-from-string: ^2.0.2 + checksum: 877c5dcfd69a35fd30fee9e49a03faf205a7a4cd04a38af7648974a659cab7b1cd51fa881d7957c07bd1fc5adf22b90a56da3617bb0885ee69d58ff41117658c + languageName: node + linkType: hard + "big-integer@npm:^1.6.44": version: 1.6.51 resolution: "big-integer@npm:1.6.51" @@ -13672,15 +13761,6 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.5": - version: 3.1.8 - resolution: "cross-fetch@npm:3.1.8" - dependencies: - node-fetch: ^2.6.12 - checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b3632 - languageName: node - linkType: hard - "cross-fetch@npm:^4.0.0": version: 4.0.0 resolution: "cross-fetch@npm:4.0.0" @@ -17227,6 +17307,17 @@ __metadata: languageName: node linkType: hard +"happy-dom@npm:^20.0.0": + version: 20.0.8 + resolution: "happy-dom@npm:20.0.8" + dependencies: + "@types/node": ^20.0.0 + "@types/whatwg-mimetype": ^3.0.2 + whatwg-mimetype: ^3.0.0 + checksum: 4d1131542ce1019ee83492ad2370069244a35884137783c3d6e89b609ab1a72d38349e80a4c321f33eddeea0c350abc6f0667eed22acdee21a8c0bbe0613dd0e + languageName: node + linkType: hard + "har-schema@npm:^2.0.0": version: 2.0.0 resolution: "har-schema@npm:2.0.0" @@ -18833,6 +18924,15 @@ __metadata: languageName: node linkType: hard +"jay-peg@npm:^1.1.1": + version: 1.1.1 + resolution: "jay-peg@npm:1.1.1" + dependencies: + restructure: ^3.0.0 + checksum: c3786552cab6bc8f367fceddafa771f928a299fea329ff895d5f87161f4de4e2a434b59729361571156ebf8e198e62a1abb30fa4f375617472c8fef1dfabcf59 + languageName: node + linkType: hard + "jed@npm:1.1.1": version: 1.1.1 resolution: "jed@npm:1.1.1" @@ -19475,13 +19575,6 @@ __metadata: languageName: node linkType: hard -"jpeg-exif@npm:^1.1.4": - version: 1.1.4 - resolution: "jpeg-exif@npm:1.1.4" - checksum: a8693a7eeb6c6572ca39acc8bbaf4bac1eea1331a26ec7d460410c0c7aefcb944bbc6c31d3c4649a308eea9da89ee4d38e35fe2f2604e4bf2ed09abd600cff0b - languageName: node - linkType: hard - "js-message@npm:1.0.7": version: 1.0.7 resolution: "js-message@npm:1.0.7" @@ -20065,10 +20158,10 @@ __metadata: languageName: node linkType: hard -"lexical@npm:0.32.1": - version: 0.32.1 - resolution: "lexical@npm:0.32.1" - checksum: ea3fc239b368d6c4e716b2d6bc549bfc07bf37633ac758b692b26ae9f61e7a5ec56233b7e1487e72d874176183b2bdb959b30b80ad359c4bd70aa2ffdd6277ba +"lexical@npm:0.38.1": + version: 0.38.1 + resolution: "lexical@npm:0.38.1" + checksum: af080ba2445d1fde08ad75530b969e1311ec146f4fec1e4ceaf5e8e6ef6afde85a8c8f4cb0c25756c0331b78b0b2549fc988ed9d6f6c5d1afd2cf59c85a6bac4 languageName: node linkType: hard @@ -20147,6 +20240,16 @@ __metadata: languageName: node linkType: hard +"linebreak@npm:^1.1.0": + version: 1.1.0 + resolution: "linebreak@npm:1.1.0" + dependencies: + base64-js: 0.0.8 + unicode-trie: ^2.0.0 + checksum: 65cb66900b4b60d99bb761fb4143d8673ad5dd57dd850fcd921fe425a5a8e3c4416ebee76a68058a90d88b5033a50b210f522558a7e0c7d95ca907b5a2b52520 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -24181,14 +24284,14 @@ __metadata: languageName: node linkType: hard -"react-error-boundary@npm:^3.1.4": - version: 3.1.4 - resolution: "react-error-boundary@npm:3.1.4" +"react-error-boundary@npm:^6.0.0": + version: 6.0.0 + resolution: "react-error-boundary@npm:6.0.0" dependencies: "@babel/runtime": ^7.12.5 peerDependencies: react: ">=16.13.1" - checksum: f36270a5d775a25c8920f854c0d91649ceea417b15b5bc51e270a959b0476647bb79abb4da3be7dd9a4597b029214e8fe43ea914a7f16fa7543c91f784977f1b + checksum: d6807004d2b5c0a971b433b8698d3c95ebb43d407b304d87d59d57ba2a08d10113e481031ca778a1b8529bbddb421c96e508dbd9a5b5d6f084f1d1f653b05941 languageName: node linkType: hard @@ -25340,13 +25443,10 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.17.0": - version: 0.17.0 - resolution: "scheduler@npm:0.17.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: 18d1e66cad3d26e3becd99b006d0744cda3556dbb356fc5b30df6d5499c85a308d18ee55353e01595f7c047b526564603ea80ef3d927a325faedc53ede03680c +"scheduler@npm:0.25.0-rc-603e6108-20241029": + version: 0.25.0-rc-603e6108-20241029 + resolution: "scheduler@npm:0.25.0-rc-603e6108-20241029" + checksum: c24fb37561cf73c54177f47fa0e92c95f8555eaf25d42d0cd2c4280058c8a2bf57b0f68f179bf766178ce6b6ea8c27b9a0cf0832bb3c6cd4ed3a15174dadaf04 languageName: node linkType: hard @@ -27891,6 +27991,13 @@ __metadata: languageName: node linkType: hard +"unicode-script@npm:^1.2.0": + version: 1.2.0 + resolution: "unicode-script@npm:1.2.0" + checksum: 8081850e75bfc858d718a64520286e2ca77c1ffa90808405c98febcd9ebfade660af28c1c18a90a9007205531ba960f7429646eff5e0307fb44d5876b97bc9ed + languageName: node + linkType: hard + "unicode-trie@npm:^2.0.0": version: 2.0.0 resolution: "unicode-trie@npm:2.0.0" @@ -29193,10 +29300,10 @@ __metadata: languageName: node linkType: hard -"yoga-layout@npm:^2.0.1": - version: 2.0.1 - resolution: "yoga-layout@npm:2.0.1" - checksum: 65a83b1bf019dcb506c1b10cb0c278718b8eb9ef07c2967c1c8c66c2ce8b3edf44028fbc75e05c5b6492060add7e8e742da22b4afbb44ab199f7bae76114a92a +"yoga-layout@npm:^3.2.1": + version: 3.2.1 + resolution: "yoga-layout@npm:3.2.1" + checksum: 6d75e73f6b044414def48d2bcc05b0bbc44f9d21e2dd0e2df696edddb76ea2c7fa6a2821069152bf5bfeeadd86494847a918c25dd08881f911f7915638f2fc39 languageName: node linkType: hard