@torpor/view 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/compile.cjs +310 -260
- package/dist/compile.cjs.map +1 -1
- package/dist/compile.js +310 -260
- package/dist/compile.js.map +1 -1
- package/dist/index.cjs +145 -97
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +72 -29
- package/dist/index.d.ts +72 -29
- package/dist/index.js +142 -97
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/package.json +3 -3
- package/src/compile/build/client/buildAddFragment.ts +5 -1
- package/src/compile/build/client/buildCode.ts +2 -0
- package/src/compile/build/client/buildComponentNode.ts +1 -0
- package/src/compile/build/client/buildControlNode.ts +2 -1
- package/src/compile/build/client/buildFragment.ts +47 -21
- package/src/compile/build/client/buildRootNode.ts +5 -1
- package/src/compile/build/server/buildServerComponentNode.ts +2 -4
- package/src/compile/build/server/buildServerControlNode.ts +2 -1
- package/src/compile/build/server/buildServerForNode.ts +2 -2
- package/src/compile/build/server/buildServerIfNode.ts +4 -0
- package/src/compile/build/server/buildServerRootNode.ts +3 -1
- package/src/compile/build/server/buildServerSwitchNode.ts +4 -0
- package/src/compile/parse/ParseStatus.ts +2 -1
- package/src/compile/parse/parseCode.ts +5 -8
- package/src/compile/parse/parseControl.ts +19 -6
- package/src/compile/parse/parseMarkup.ts +15 -8
- package/src/compile/types/comments.ts +2 -2
- package/src/compile/types/nodes/OperationType.ts +2 -1
- package/src/debug/printNode.ts +54 -36
- package/src/index.ts +5 -1
- package/src/render/addFragment.ts +5 -4
- package/src/render/clearLayoutSlot.ts +6 -0
- package/src/render/clearRange.ts +1 -1
- package/src/render/hydrationMarkers.ts +2 -2
- package/src/render/isComment.ts +2 -2
- package/src/render/isText.ts +3 -0
- package/src/render/nodeAnchor.ts +62 -27
- package/src/render/nodeCheckHydrationBreak.ts +25 -0
- package/src/render/nodeChild.ts +12 -7
- package/src/render/nodeNext.ts +16 -25
- package/src/render/nodeRoot.ts +26 -9
- package/src/render/nodeSkip.ts +20 -0
- package/src/render/runLayoutSlot.ts +26 -0
- package/test/attributes/components/output/Attributes-client.ts +7 -4
- package/test/attributes/components/output/Attributes-server.ts +1 -1
- package/test/attributes/components/temp/{Attributes-client-7b8f7b9996208e8d2d0a12d4f4a40a73df63d9d8.ts → Attributes-client-4620a40099e57a7fdaab895b204d85881f6dbfb7.ts} +7 -4
- package/test/attributes/components/temp/{Attributes-server-a1289434a5a801be1d63bfc85b621579e06452f0.ts → Attributes-server-80f9f58fd6cb30df11867386d4f0b15b44401ebe.ts} +1 -1
- package/test/await/components/output/Await-client.ts +18 -15
- package/test/await/components/output/Await-server.ts +2 -2
- package/test/await/components/temp/{Await-client-a7bf000bf2b59a3d5251a0fa18ec79890a52a547.ts → Await-client-5d753441145fbac078393af24cccadb208453d69.ts} +18 -15
- package/test/await/components/temp/{Await-server-06cd2a3d8c7eb5bef026ffe2fb11793becf547c2.ts → Await-server-f02f39af3bb3344ca6b18a1d64d60b21913fba31.ts} +2 -2
- package/test/bind/components/output/BindComponent-client.ts +18 -12
- package/test/bind/components/output/BindComponent-server.ts +3 -3
- package/test/bind/components/output/BindText-client.ts +10 -8
- package/test/bind/components/output/BindText-server.ts +1 -1
- package/test/bind/components/temp/{BindComponent-client-a645474748485a878871c062ad69e6bcf35e6550.ts → BindComponent-client-aaeb489ce72b664c6372f8764f7e665994a751a7.ts} +18 -12
- package/test/bind/components/temp/{BindComponent-server-c557e7aa944517ab87415b8bb35b41b0034254e7.ts → BindComponent-server-c630dee0bee6cea49d5eb8bea04979a737bb8f5e.ts} +3 -3
- package/test/bind/components/temp/{BindText-client-d5f7d721df55020ef337f660e5d278eb80fcc330.ts → BindText-client-134676d616abbad6b8a7ec48df0a2e38cbfe3b87.ts} +10 -8
- package/test/bind/components/temp/{BindText-server-4b94cdf60d9c9a2088306c4407e2ae30785169b0.ts → BindText-server-807a1ddcb68410b30429cb088d2e204ed6f585b2.ts} +1 -1
- package/test/buildHtml.ts +1 -1
- package/test/buildOutputFiles.ts +8 -1
- package/test/child-component/components/output/ParentChild-client.ts +17 -11
- package/test/child-component/components/output/ParentChild-server.ts +3 -3
- package/test/child-component/components/temp/{ParentChild-client-eaefb0cbfd251badab3c57ae2037d973f785a1b8.ts → ParentChild-client-6cf4d156ea46338815270faf67f56472f1a4ccd4.ts} +17 -11
- package/test/child-component/components/temp/{ParentChild-server-8f2fc556f87867e6e3393e2e9e6d696cda107b69.ts → ParentChild-server-a34a8b5acf1c00d1990f8ab7433599506265a45a.ts} +3 -3
- package/test/class/class.test.ts +1 -1
- package/test/class/components/output/Class-client.ts +27 -20
- package/test/class/components/output/Class-server.ts +4 -4
- package/test/class/components/temp/{Class-client-12f09850a5f8c27de6cf94c23a2b17aadbf66f01.ts → Class-client-0405eff591f854c04e5728df0479014ef91efc61.ts} +27 -20
- package/test/class/components/temp/Class-server-daf30ffb1bacf9877e3385dc9a3eede61c972329.ts +40 -0
- package/test/component/components/output/Component-client.ts +9 -4
- package/test/component/components/output/Component-server.ts +2 -0
- package/test/component/components/output/Header-client.ts +7 -5
- package/test/component/components/output/Header-server.ts +1 -1
- package/test/component/components/temp/{Component-client-a2fb6f30fc340bac909b64cb4f5ac68cde376de3.ts → Component-client-355b42e5f7411c399e2f50fba3580f4f7c3fa943.ts} +9 -4
- package/test/component/components/temp/{Component-server-40be12cd528ccf768f1ad40ef2a435ad2b2a2d71.ts → Component-server-81012827b18e82d787d194a0a1a9d4e07311a336.ts} +2 -0
- package/test/component/components/temp/{Header-client-75cb4aa868295ac168c16ba7b275fbb5ab9256f9.ts → Header-client-903877003b220272b0cb5bfd62d7d748ad46c477.ts} +7 -5
- package/test/component/components/temp/{Header-server-f73307874bec34a95dcd152d7f83a3ad13a0f4ac.ts → Header-server-6969d20782edd8f99d4b5c5b7b5563ce26e6dc2d.ts} +1 -1
- package/test/console/components/output/Console-client.ts +6 -4
- package/test/console/components/output/Console-server.ts +1 -1
- package/test/console/components/temp/{Console-client-2f206752ce59e59fba9bb91263b4102fd515951e.ts → Console-client-4fa3b3679cee88bf6151185438e36d14010944b7.ts} +6 -4
- package/test/console/components/temp/{Console-server-b4b15f7a0d1d2b50d87bad4870e1b8d368707c04.ts → Console-server-cfb2208b130d5f15403df19ae8341aaa1c9ad33a.ts} +1 -1
- package/test/const/components/output/Const-client.ts +7 -5
- package/test/const/components/output/Const-server.ts +2 -2
- package/test/const/components/temp/{Const-client-536e8fdf18d6f4f7f23b2789de2330ecf62d7865.ts → Const-client-7dff2758c14bfbd208e301a702ae1781e6daba1b.ts} +7 -5
- package/test/const/components/temp/{Const-server-8f84096c03a19296425aee5d243af0734b70ca61.ts → Const-server-1cf6ed84f72d3b15b318b80937b8de1f2c0f188c.ts} +2 -2
- package/test/effects/components/output/For-client.ts +12 -9
- package/test/effects/components/output/For-server.ts +2 -2
- package/test/effects/components/output/If-client.ts +14 -11
- package/test/effects/components/output/If-server.ts +4 -4
- package/test/effects/components/output/NestedIf-client.ts +17 -14
- package/test/effects/components/output/NestedIf-server.ts +5 -5
- package/test/effects/components/temp/{For-client-d8d4e4424ec3238fe9f79cc907d673612b63bcdf.ts → For-client-fbe876286c0f99b8391ff0c06c92b58bf580218f.ts} +12 -9
- package/test/effects/components/temp/{For-server-1f853c161bea31a1a5b11b00d7a021b70c778066.ts → For-server-efe60939d185315f4c9b567b6867c6d5af14d9aa.ts} +2 -2
- package/test/effects/components/temp/{If-client-bb06988422395321bf298a75bf5563c6f750f776.ts → If-client-420a093f13de6ce07d2d4bc94705901809096cd9.ts} +14 -11
- package/test/effects/components/temp/{If-server-97e3cbe059306fc607985dcd1b187df3a278d979.ts → If-server-2424b7b812d350d7eb8ff9afb1146807217320cd.ts} +4 -4
- package/test/effects/components/temp/{NestedIf-client-dc880c1ec92e716ec730dfa0bac0e3d9265bdf27.ts → NestedIf-client-af88ec303b1a4184263bb370ef5b1f1e8aca8efc.ts} +17 -14
- package/test/effects/components/temp/{NestedIf-server-9f199a33bae5d5fe34920d6a419937537a2b18dc.ts → NestedIf-server-ab260586490cb5afed31377d2226bb5a1fc30e2d.ts} +5 -5
- package/test/events/components/output/Increment-client.ts +9 -7
- package/test/events/components/output/Increment-server.ts +1 -1
- package/test/events/components/temp/{Increment-client-41bd7bc91aac8c7a9bf73527c8f7ba1794b09ab3.ts → Increment-client-1b5f9e231c5c4fc059d77ca0da632719283e5ac4.ts} +9 -7
- package/test/events/components/temp/{Increment-server-bbf5ac93c4f73382c4262ae42f4cc836bcb8ac1b.ts → Increment-server-b084f43082e2ec31dbe5f9edc1cb6e37e4c8df9d.ts} +1 -1
- package/test/for/components/output/For-client.ts +12 -9
- package/test/for/components/output/For-server.ts +2 -2
- package/test/for/components/output/ForEscape-client.ts +16 -13
- package/test/for/components/output/ForEscape-server.ts +2 -2
- package/test/for/components/output/ForIn-client.ts +12 -9
- package/test/for/components/output/ForIn-server.ts +2 -2
- package/test/for/components/output/ForOf-client.ts +12 -9
- package/test/for/components/output/ForOf-server.ts +2 -2
- package/test/for/components/temp/{For-client-0be5994e98c07a3455cd8a18a2b1b8ef3605aba6.ts → For-client-421f2a6ca501d135c0aef9d1aaea25de0e1c00e4.ts} +12 -9
- package/test/for/components/temp/{For-server-8490f15d02ae76b218feb7fa266415f44b2a4ab9.ts → For-server-3b6ead39728c79206203c519a215390d07d80f7e.ts} +2 -2
- package/test/for/components/temp/{ForEscape-client-a973a145e28b32ca55fe3dca53d885fcf5e11c37.ts → ForEscape-client-72879c80f7544c2edfc224095740bdea20e1e12d.ts} +16 -13
- package/test/for/components/temp/{ForEscape-server-375744ca1e10e5c8ed7dd6420beef72107e55568.ts → ForEscape-server-ed906c8cd593a0b467073ada415734de31dc38d9.ts} +2 -2
- package/test/for/components/temp/{ForIn-client-5cc25a98e10826e8477fe6f931d5d2bbd0b13c9f.ts → ForIn-client-e12c45d7f53e50ea3ed456110138dfb95f6930e0.ts} +12 -9
- package/test/for/components/temp/{ForIn-server-d68e82c048f7e0f1525f74724b91e5cd01cdc6a6.ts → ForIn-server-c8f13304a2ba235e091685256909fbfa50bdd5fd.ts} +2 -2
- package/test/for/components/temp/{ForOf-client-70b0d59ff72f1cffe2e0ac8523dd7ccdca4ffe39.ts → ForOf-client-422d67d6c046f1d1de655719d061ea29f67d23f7.ts} +12 -9
- package/test/for/components/temp/{ForOf-server-ac08d98dd249a3e64a366b8488450e6ce0d18def.ts → ForOf-server-8c2c33ca6595bf0a5e952ca9971e595e18446623.ts} +2 -2
- package/test/function/components/output/Function-client.ts +8 -6
- package/test/function/components/output/Function-server.ts +2 -2
- package/test/function/components/temp/{Function-client-b3ff029a821d47e1a2249a52dfb681f4b2e96232.ts → Function-client-4e2168306756eb927d5ed4b673334b357eecaa74.ts} +8 -6
- package/test/function/components/temp/{Function-server-2d32fbe35260c0948a135f287f131c5520e8bce7.ts → Function-server-2b19d0cd881c31dc67132107c6e322a18701c318.ts} +2 -2
- package/test/html/components/output/Html-client.ts +9 -6
- package/test/html/components/output/Html-server.ts +1 -1
- package/test/html/components/temp/{Html-client-766ba4a63f28f929ca16cd7d1640fe92f9b30792.ts → Html-client-2f309b06c3304a952d249057dec058a514d52874.ts} +9 -6
- package/test/html/components/temp/{Html-server-0a41da8b81bf833f331f3becdbac14be7ddc6c8c.ts → Html-server-d159b0ef04b1f65ae4f9e05a7b44b21e7aa14cf9.ts} +1 -1
- package/test/hydrateComponent.ts +1 -0
- package/test/if/components/IfAfterIf.torp +10 -12
- package/test/if/components/IfElse.torp +12 -11
- package/test/if/components/IfElseIf.torp +13 -15
- package/test/if/components/IfFalse.torp +10 -0
- package/test/if/components/IfNested.torp +11 -13
- package/test/if/components/output/IfAfterIf-client.ts +14 -13
- package/test/if/components/output/IfAfterIf-server.ts +4 -4
- package/test/if/components/output/IfElse-client.ts +14 -13
- package/test/if/components/output/IfElse-server.ts +4 -4
- package/test/if/components/output/IfElseIf-client.ts +16 -15
- package/test/if/components/output/IfElseIf-server.ts +5 -5
- package/test/if/components/output/IfFalse-client.ts +56 -0
- package/test/if/components/output/IfFalse-server.ts +21 -0
- package/test/if/components/output/IfNested-client.ts +19 -18
- package/test/if/components/output/IfNested-server.ts +6 -6
- package/test/if/components/temp/{IfAfterIf-client-49b6b8c42b0a351561f9f5f22c2ae2e844bf3b58.ts → IfAfterIf-client-5ddfc6dc62ffbc9a518220458403008e88e69e6c.ts} +14 -13
- package/test/if/components/temp/{IfAfterIf-server-eb67cf1fcf6711882266219940a47bd4a66497f3.ts → IfAfterIf-server-a5005147e7902d1a5a048c9fe07feb9804eb6560.ts} +4 -4
- package/test/if/components/temp/{IfElse-client-e236d4a2e99262ff09675bc519c07e2826c0d70b.ts → IfElse-client-815057ffb2d9a1861bb316d445321947ddedbb65.ts} +14 -13
- package/test/if/components/temp/{IfElse-server-c077e0e30f4d2adec41ab779198362d21542d055.ts → IfElse-server-80d93e5fc4ceba7a645f7081fa11b177dbe730d0.ts} +4 -4
- package/test/if/components/temp/{IfElseIf-client-b92106861f0c7ec3d09e3a42bb93d8f5bd4e3bdf.ts → IfElseIf-client-a7b16a8af24fdd3caa7b9e8e56d4bdb6ad3ab855.ts} +16 -15
- package/test/if/components/temp/{IfElseIf-server-67991eee3f56dc687cda600511c31396438e0a77.ts → IfElseIf-server-ddc7348705d51b02538301e0aa704130748992cf.ts} +5 -5
- package/test/if/components/temp/IfFalse-client-6507ff8abd4842b78da27d8a9d4964abc1d9b727.ts +56 -0
- package/test/if/components/temp/IfFalse-server-e8385013cfdde584b43cc0d71311cbb417859116.ts +21 -0
- package/test/if/components/temp/{IfNested-client-f563ac1b16a2280e457557281c4925ed447a9cd7.ts → IfNested-client-e09f8af625b4e0b3e9eb210440f8edda720f0d53.ts} +19 -18
- package/test/if/components/temp/{IfNested-server-0a2a9643324ab73b02b310cad61ba87dab146ab2.ts → IfNested-server-285a5d8e0e0fcc8ccf421df152fdc00811782835.ts} +6 -6
- package/test/if/if-else-false.test.ts +54 -0
- package/test/if/{if-true.test.ts → if-else-true.test.ts} +5 -2
- package/test/if/if-false.test.ts +1 -4
- package/test/importComponent.ts +4 -0
- package/test/mount/components/output/Mount-client.ts +7 -4
- package/test/mount/components/output/Mount-server.ts +1 -1
- package/test/mount/components/temp/{Mount-client-36dbc95a61345a1b7dcf07e6b0c998af2afca691.ts → Mount-client-efa5c34fbfc7646e114a1a58f0814b6dff33e566.ts} +7 -4
- package/test/mount/components/temp/{Mount-server-8bef1924a731f3db63cb827be3938fec685e53af.ts → Mount-server-62f94f276c2d6c9048765a77b575cb21146917f1.ts} +1 -1
- package/test/on-mount/components/output/OnMount-client.ts +7 -4
- package/test/on-mount/components/output/OnMount-server.ts +1 -1
- package/test/on-mount/components/temp/{OnMount-client-21708a638d2939ee8b017f5dc819cee4748bde87.ts → OnMount-client-4bb62e8bf1fcd67798598fe03bf5455a57f0a6be.ts} +7 -4
- package/test/on-mount/components/temp/{OnMount-server-1758fe2b16972fca7d4b9bb49d9256fce99780eb.ts → OnMount-server-c531f718eb68754ea6c3001d5db9c07c511e434c.ts} +1 -1
- package/test/party/components/output/AnswerButton-client.ts +8 -6
- package/test/party/components/output/AnswerButton-server.ts +1 -1
- package/test/party/components/output/AnswerButtonApp-client.ts +11 -7
- package/test/party/components/output/AnswerButtonApp-server.ts +2 -2
- package/test/party/components/output/ColorSelect-client.ts +11 -9
- package/test/party/components/output/ColorSelect-server.ts +2 -2
- package/test/party/components/output/Colors-client.ts +12 -9
- package/test/party/components/output/Colors-server.ts +2 -2
- package/test/party/components/output/Counter-client.ts +8 -6
- package/test/party/components/output/Counter-server.ts +1 -1
- package/test/party/components/output/CssStyle-client.ts +6 -4
- package/test/party/components/output/CssStyle-server.ts +1 -1
- package/test/party/components/output/DoubleCount-client.ts +7 -5
- package/test/party/components/output/DoubleCount-server.ts +1 -1
- package/test/party/components/output/FunnyButton-client.ts +12 -9
- package/test/party/components/output/FunnyButton-server.ts +2 -2
- package/test/party/components/output/FunnyButtonApp-client.ts +15 -9
- package/test/party/components/output/FunnyButtonApp-server.ts +3 -3
- package/test/party/components/output/HelloWorld-client.ts +6 -4
- package/test/party/components/output/HelloWorld-server.ts +1 -1
- package/test/party/components/output/InputFocused-client.ts +7 -4
- package/test/party/components/output/InputFocused-server.ts +1 -1
- package/test/party/components/output/InputHello-client.ts +8 -6
- package/test/party/components/output/InputHello-server.ts +1 -1
- package/test/party/components/output/IsAvailable-client.ts +8 -6
- package/test/party/components/output/IsAvailable-server.ts +1 -1
- package/test/party/components/output/Name-client.ts +7 -5
- package/test/party/components/output/Name-server.ts +1 -1
- package/test/party/components/output/NameUpdate-client.ts +7 -5
- package/test/party/components/output/NameUpdate-server.ts +1 -1
- package/test/party/components/output/PageTitle-client.ts +7 -5
- package/test/party/components/output/PageTitle-server.ts +1 -1
- package/test/party/components/output/PickPill-client.ts +9 -7
- package/test/party/components/output/PickPill-server.ts +1 -1
- package/test/party/components/output/Time-client.ts +7 -5
- package/test/party/components/output/Time-server.ts +1 -1
- package/test/party/components/output/TrafficLight-client.ts +19 -17
- package/test/party/components/output/TrafficLight-server.ts +5 -5
- package/test/party/components/output/UserProfile-client.ts +10 -8
- package/test/party/components/output/UserProfile-server.ts +1 -1
- package/test/party/components/output/UserProfileApp-client.ts +9 -4
- package/test/party/components/output/UserProfileApp-server.ts +2 -0
- package/test/party/components/output/UserProfileContext-client.ts +9 -7
- package/test/party/components/output/UserProfileContext-server.ts +1 -1
- package/test/party/components/output/UserProfileContextApp-client.ts +11 -7
- package/test/party/components/output/UserProfileContextApp-server.ts +2 -2
- package/test/party/components/temp/{AnswerButton-client-c3dc7edbfff2db1ea111086002147d771ee12193.ts → AnswerButton-client-ad8f8db36b7aaa68d8de5898a324bacfbe9f20df.ts} +8 -6
- package/test/party/components/temp/{AnswerButton-server-427442fa8cfc0a18817c2d37f9cb5cbcb3a88a05.ts → AnswerButton-server-928b5d447afa865fa09e0142c79bb1f2c1b86875.ts} +1 -1
- package/test/party/components/temp/{AnswerButtonApp-client-3e0b63a6bbc1dee3e6cb715c0297cc2ce58d3e4e.ts → AnswerButtonApp-client-a2b16c738467742436b1a2ddaf2d767795a4d625.ts} +11 -7
- package/test/party/components/temp/{AnswerButtonApp-server-bbc8bb739d2060ccda77ce406aa6b15d8f90b91c.ts → AnswerButtonApp-server-16161f2c9062dd11b8b6b8c898f9f1249ae2400d.ts} +2 -2
- package/test/party/components/temp/{ColorSelect-client-5ffa6f9d77de967993088c9a01b9f976f3333176.ts → ColorSelect-client-4e848c296047911f4c0e3bc1447e5562ce06087c.ts} +11 -9
- package/test/party/components/temp/{ColorSelect-server-3ed19eff17bf10b31d03ec507974ff913932c97a.ts → ColorSelect-server-90f83722bd85155ebb2b8ccdaf053cd28d3152be.ts} +2 -2
- package/test/party/components/temp/{Colors-client-3dafffc5c2a72037f4419fc45d08963872a29958.ts → Colors-client-dde7bf60e2b16383ec981b08f8414b1ebeb349a5.ts} +12 -9
- package/test/party/components/temp/{Colors-server-f9b3037a5f25979f71b5f8f3e658140be7c27920.ts → Colors-server-e13d49ba57f7b0dc6fb10a333ec872f5207e1ff0.ts} +2 -2
- package/test/party/components/temp/{Counter-client-4d553521fcfc6c9a4e05dce89e70b2ecf8785c4e.ts → Counter-client-3b876c148f2b14da1766eff77eb6c494f7be6414.ts} +8 -6
- package/test/party/components/temp/{Counter-server-36d1137c519691f5b86a18a5c27b7cf615b7e37c.ts → Counter-server-7adf9376b38d97f1fd4b9c14108e6814e81f14ea.ts} +1 -1
- package/test/party/components/temp/{CssStyle-client-59c0f261f67bc04f2829a0371f655d146101cec6.ts → CssStyle-client-37465dd48d1479db1bae513eb0b92c4e9a15e9ea.ts} +6 -4
- package/test/party/components/temp/{CssStyle-server-3e58d7e2f5c381a251f593245d3d8bf4b50925ae.ts → CssStyle-server-90a950501a20bfa5feac84ca6d97898c25bce2ed.ts} +1 -1
- package/test/party/components/temp/{DoubleCount-client-0426f128507a8d4516ef7501cd180662112b6d1d.ts → DoubleCount-client-6d4cf1e54368e3c6082e37c1e04f9ecde90624f2.ts} +7 -5
- package/test/party/components/temp/{DoubleCount-server-40fc88156e52281b80fd6b12dd73d2469201fa29.ts → DoubleCount-server-62c94483ebe9661e5ecc4f489787e32448ddcafa.ts} +1 -1
- package/test/party/components/temp/{FunnyButton-client-45f2c5dd56f2cdb80102193a978df6b0cec822ab.ts → FunnyButton-client-61a1699da08e210375edff33f7b27d3cc0e99cc3.ts} +12 -9
- package/test/party/components/temp/{FunnyButton-server-e8ab55e47c735f7e42c55d2b7504dfa4190a1b40.ts → FunnyButton-server-e0adab2be2d283acb8a8b580479ade999dc918e9.ts} +2 -2
- package/test/party/components/temp/{FunnyButtonApp-client-ac7101af922dc6ba472b75a428f340caca6be74a.ts → FunnyButtonApp-client-cbce6a591bae38ab8b312551f8741d50ae6294bf.ts} +15 -9
- package/test/party/components/temp/{FunnyButtonApp-server-f1a98a946e0bb9d1bb76b01e26d6ead8f55d32bb.ts → FunnyButtonApp-server-48d37de0c755843a2be34d7c7cb5c730689dcc2f.ts} +3 -3
- package/test/party/components/temp/{HelloWorld-client-791e8b9a0bd4b01e87fbe70f2b28d4ac356e3624.ts → HelloWorld-client-7344e400b4adb975fa8263d3081a06de0a793e57.ts} +6 -4
- package/test/party/components/temp/{HelloWorld-server-3c4b9a995a78d652d9220a20124c9e0d18fc7101.ts → HelloWorld-server-e0ed80e7531f303952a4af30d646263ff2e4ead6.ts} +1 -1
- package/test/party/components/temp/{InputFocused-client-11a9cb08909b26945bbc2451ab4c1dac09e6d113.ts → InputFocused-client-20d755aea7dfaf1fd5e42dcade8fb7867f59ef28.ts} +7 -4
- package/test/party/components/temp/{InputFocused-server-82be1a63c80d1dd3f06efaf0bef349d58cf1d9af.ts → InputFocused-server-ee70758a515227c04788be0e298a79c277994ccd.ts} +1 -1
- package/test/party/components/temp/{InputHello-client-b0453caeae0d43dc1878039c6b49318d12624d48.ts → InputHello-client-2a4cbd980534fde14b9d3e8a2f8e4f59a4f15d64.ts} +8 -6
- package/test/party/components/temp/{InputHello-server-6c982438e58d3649ee3890efec636ca4590a5cdb.ts → InputHello-server-1b9dd5442ded022abe92a9075ca5a4bb90486cbe.ts} +1 -1
- package/test/party/components/temp/{IsAvailable-client-d789346a68b26fd3f5d9f7aebc4c7bd181c47cad.ts → IsAvailable-client-3949f85aea0e935c3b59ab1389baee836eff1866.ts} +8 -6
- package/test/party/components/temp/{IsAvailable-server-a35b7ec5f111472c76aa1b67c857b169fe363594.ts → IsAvailable-server-123daa1ae56b77defe6666faddb44ba4252dd0fb.ts} +1 -1
- package/test/party/components/temp/{Name-client-cb8bef7cfca1306386b65410a0bd7a8acfaed359.ts → Name-client-62f0dab96aff130e81882099d7c0a111ba99cebd.ts} +7 -5
- package/test/party/components/temp/{Name-server-9da0823f748e9751e017078f39717298be232636.ts → Name-server-a402418f1ca2d8a0e6403596ec03ec47b5ff40ec.ts} +1 -1
- package/test/party/components/temp/{NameUpdate-client-ebef69b0da12d640994099592ce06c7e4b5089d4.ts → NameUpdate-client-6ceb440637c99142bafcf8512eabf831c113b8c7.ts} +7 -5
- package/test/party/components/temp/{NameUpdate-server-1856bdb5e010f7d7e5e67f2a0d87ac3f92f4e0ee.ts → NameUpdate-server-b7dcc875e894a5606544fcd78bda575ea07632ca.ts} +1 -1
- package/test/party/components/temp/{PageTitle-client-403645e918294e5cdeea8cb3f602e0a2642b2650.ts → PageTitle-client-75fea3a37fb1213bc13f56160bb6779486b2e6e9.ts} +7 -5
- package/test/party/components/temp/{PageTitle-server-4d959183b7029b6817372abd1d60a7e996baeb15.ts → PageTitle-server-12dcb4e437aaef227c704a2ee8bbdee55ca323dc.ts} +1 -1
- package/test/party/components/temp/{PickPill-client-b47d371ae5f41d87c96b3cdeed0a8bc06fbfa9c7.ts → PickPill-client-0f13aa652cb1bd45f57d5a249f8364e80204441a.ts} +9 -7
- package/test/party/components/temp/{PickPill-server-49e033c5f97dd2f98e1498327e16eb9c8c9d2f66.ts → PickPill-server-f10dae4708e36775a5e1a5ad10c6c0c309335009.ts} +1 -1
- package/test/party/components/temp/{Time-client-7ba4ca9322af2cb88a873c812fc776760c337c64.ts → Time-client-2013f274e90b45be3138727f2298305e1951131f.ts} +7 -5
- package/test/party/components/temp/{Time-server-08f66c7f3f32b13de06d75fe679cf58b5727c473.ts → Time-server-8e0278a4b16925903f3c4ceedbf1332cde4921fa.ts} +1 -1
- package/test/party/components/temp/{TrafficLight-client-549f9fe3418c113fb240cfa17e09c42e1e7f346a.ts → TrafficLight-client-4010f51fde4c8c21e6c232eff974c86820dbad4f.ts} +19 -17
- package/test/party/components/temp/{TrafficLight-server-ed2a8640fd82cf381eee8f4fb83bb09d174a4557.ts → TrafficLight-server-04bb3b2f11322ccc97a9a8a8fbb26c3c99843042.ts} +5 -5
- package/test/party/components/temp/{UserProfile-client-2c13aac1ad915e51dc557f9af765669e636c0fea.ts → UserProfile-client-11c2a928de5a5ed4cab45186f08ca09f6161afb5.ts} +10 -8
- package/test/party/components/temp/{UserProfile-server-cc1162a4297f6163bfb86e7a8aeea08e8c0625c6.ts → UserProfile-server-a0576b8d9dd15b3fab6c11758984c686ddfe2f66.ts} +1 -1
- package/test/party/components/temp/{UserProfileApp-client-2be7a11319cca4d7bfa0f3d2205c441d7e203780.ts → UserProfileApp-client-32b5cc129b32af5cdd94f39c6fb09a2e4806b04e.ts} +9 -4
- package/test/party/components/temp/{UserProfileApp-server-ab9ff66f787f775aa8571314fee8bcbef85489ef.ts → UserProfileApp-server-97397c42aaac0ee3902218d02c0ce6884434cc5b.ts} +2 -0
- package/test/party/components/temp/{UserProfileContext-client-2aa36f436a5f20614d77f48963ec5ca442eebd90.ts → UserProfileContext-client-c97c077254210061b3c9ba561f681c0cf4f6167f.ts} +9 -7
- package/test/party/components/temp/{UserProfileContext-server-cf58767df1e2d1dde919f59de73cdd9764bbc006.ts → UserProfileContext-server-2d32476b00448bdec6c1c45aac5087a5152c2471.ts} +1 -1
- package/test/party/components/temp/{UserProfileContextApp-client-5099052fdcd8fb4c368c45090390947424a4e9b0.ts → UserProfileContextApp-client-c4b64ccf44069bcbf18acb585afa62ac9127aeb9.ts} +11 -7
- package/test/party/components/temp/{UserProfileContextApp-server-6be8dab2ed4f8911f26bef137e7dea164f2b894d.ts → UserProfileContextApp-server-95a4b12d30cef621db55d5de102a906ac7286fb2.ts} +2 -2
- package/test/props/components/output/Reactive-client.ts +18 -12
- package/test/props/components/output/Reactive-server.ts +3 -3
- package/test/props/components/temp/{Reactive-client-e3e5f6ee2f22c46337c6ab1df2f241133c7e2646.ts → Reactive-client-249382840865c9911857b89085bc85ff901b8e8f.ts} +18 -12
- package/test/props/components/temp/{Reactive-server-0914d91287a1bc6d32d7cc56d086624762dbfc04.ts → Reactive-server-770cd3df7c877c0c99e156b2ba6d1f8b35914027.ts} +3 -3
- package/test/replace/components/output/Replace-client.ts +11 -8
- package/test/replace/components/output/Replace-server.ts +2 -2
- package/test/replace/components/temp/{Replace-client-3fdab63871fa4bb792317caefd3539b1888325b1.ts → Replace-client-ef66f06bc0cfa91e800b185dbccbca6a98693c21.ts} +11 -8
- package/test/replace/components/temp/{Replace-server-857aca7a58deffc3a1c95ab9d31628b4051ca203.ts → Replace-server-9519943d193b681e1d7894a0d7952affdfb0660c.ts} +2 -2
- package/test/slots/components/output/Article-client.ts +13 -9
- package/test/slots/components/output/Article-server.ts +2 -2
- package/test/slots/components/output/Basic-client.ts +9 -5
- package/test/slots/components/output/Basic-server.ts +2 -0
- package/test/slots/components/output/Header-client.ts +10 -7
- package/test/slots/components/output/Header-server.ts +2 -2
- package/test/slots/components/output/Let-client.ts +9 -5
- package/test/slots/components/output/Let-server.ts +2 -0
- package/test/slots/components/output/List-client.ts +12 -9
- package/test/slots/components/output/List-server.ts +2 -2
- package/test/slots/components/output/Named-client.ts +12 -8
- package/test/slots/components/output/Named-server.ts +2 -0
- package/test/slots/components/output/Unused-client.ts +9 -4
- package/test/slots/components/output/Unused-server.ts +2 -0
- package/test/slots/components/temp/{Article-client-80848d6cadd8abac61865d14ddd35685844797e0.ts → Article-client-f7676836f5ded94222b11ef81e41dd675d1af04b.ts} +13 -9
- package/test/slots/components/temp/{Article-server-a6bd47a621cc213db4313eb775a52246541dd203.ts → Article-server-b84141b05064f5ea1e4b535faafe459df0d875fb.ts} +2 -2
- package/test/slots/components/temp/{Basic-client-97b18686412869e8c814fd4542dfe826b1f7669f.ts → Basic-client-e7650b8be5f6e50fa0f2f343a145f86edfe14ff4.ts} +9 -5
- package/test/slots/components/temp/{Basic-server-248392e2cd147b537cd44e9a5a71885ef20102e4.ts → Basic-server-aed46a5b459cce50e7ddb311c42a76b9e91c2dae.ts} +2 -0
- package/test/slots/components/temp/{Header-client-e2e1e7d60b48b0841cd0c20224f520330ca96458.ts → Header-client-127c27e6bfcd5b37cc871164cd665b740418dc82.ts} +10 -7
- package/test/slots/components/temp/{Header-server-1c195508a91c32822da22a08576c8a30c9070636.ts → Header-server-d8e8ccb129d84478f0c4f8dc8ad1d2091188cc7b.ts} +2 -2
- package/test/slots/components/temp/{Let-client-be69c1f5aa32faf16239050d7836db46cfdcba2f.ts → Let-client-c107eb0fe42f125996d2c9a83ab7b3c1916ca26d.ts} +9 -5
- package/test/slots/components/temp/{Let-server-c3293219ed27aec61a6af36d451ddf6609c40027.ts → Let-server-62727e5e2db3df405cdbe7a2d339a99113fc7f4a.ts} +2 -0
- package/test/slots/components/temp/{List-client-a829b33214de829de689a72d2e8703b2266ad7a4.ts → List-client-ca1d8f9a9cc8b513323de7c5531a4ec03898d920.ts} +12 -9
- package/test/slots/components/temp/{List-server-06503834c9bfae9b8c2b61742568b020a3de961c.ts → List-server-f4f63df4d19e15311da347284935a1bb530a8df4.ts} +2 -2
- package/test/slots/components/temp/{Named-client-2d9d88f5fdf74d81c3ed1d769a476f4ac36c8b99.ts → Named-client-636b6a18c25a27099f883cb9eeb04e182e248941.ts} +12 -8
- package/test/slots/components/temp/{Named-server-65a7bbf038111475c8f07dccb34040ab8c1392c4.ts → Named-server-829daa82c94fd7142a721cabac1b3402cca8fce6.ts} +2 -0
- package/test/slots/components/temp/{Unused-client-1b16491cb800bbbbd871d9fbf5966c7275244019.ts → Unused-client-0aefcc79e9ae050358fa049a35b7e8e0a6bc2d66.ts} +9 -4
- package/test/slots/components/temp/{Unused-server-e5d1e85116bebc7e1a2882cb8f2c9ae7975a1de7.ts → Unused-server-379b45ff313e82f8b2949385f50d8ea482094520.ts} +2 -0
- package/test/special-component/components/output/BigTitle-client.ts +9 -6
- package/test/special-component/components/output/BigTitle-server.ts +2 -2
- package/test/special-component/components/output/Component-client.ts +10 -4
- package/test/special-component/components/output/Component-server.ts +2 -2
- package/test/special-component/components/output/SmallTitle-client.ts +9 -6
- package/test/special-component/components/output/SmallTitle-server.ts +2 -2
- package/test/special-component/components/temp/{BigTitle-client-881a9f84876fb3f6d994736edb253b96e71de926.ts → BigTitle-client-04ca3c7b6aaf76b81baa5a3d3720fbd2a1760550.ts} +9 -6
- package/test/special-component/components/temp/{BigTitle-server-9efc738f5eb131a4b859c4a99a8e255d93834e9a.ts → BigTitle-server-d8919a4c975e022c936584bd668917cb89aa8e20.ts} +2 -2
- package/test/special-component/components/temp/{Component-client-22f7e1d0955fb3d90939e956a1f0f77118c259b6.ts → Component-client-24cd39596c4281ee2709e6aa482818d071825b4f.ts} +10 -4
- package/test/special-component/components/temp/{Component-server-ce596cd84dc11f67c9f0588060a5b672eddf9715.ts → Component-server-3564dfcef8d015cab4944a3c75cc6cf329f3fad6.ts} +2 -2
- package/test/special-component/components/temp/{SmallTitle-client-25b3097b7ae47848dd82967403faf7745fc43388.ts → SmallTitle-client-213b422377a30fe0b12f7256e654bf0313ac9cf9.ts} +9 -6
- package/test/special-component/components/temp/{SmallTitle-server-fc105db9a91b83644d67e049ce583a3d1a61f50c.ts → SmallTitle-server-0a9b5098e4dda96f8c1da30294d71b39997dd118.ts} +2 -2
- package/test/special-element/components/output/Element-client.ts +8 -6
- package/test/special-element/components/output/Element-server.ts +1 -1
- package/test/special-element/components/temp/{Element-client-21c92c04579b1d29e8813265a10897d069aad5c5.ts → Element-client-c5701ed44faa4ec8ae558505063684a84cada3f2.ts} +8 -6
- package/test/special-element/components/temp/{Element-server-4bed9653529f39e72754126147fe8618f328853a.ts → Element-server-166d672256ef4635168de0090e490e48b569c7d6.ts} +1 -1
- package/test/special-head/components/output/Head-client.ts +6 -4
- package/test/special-head/components/output/Head-server.ts +1 -1
- package/test/special-head/components/temp/{Head-client-07e8af6386d767a52667a4fdc978a335ec388302.ts → Head-client-18616689a7d6f83ca076c9d825606b049de9d3ef.ts} +6 -4
- package/test/special-head/components/temp/{Head-server-d80a0f1ee10e9942d9a631df35a24cb1cfb15555.ts → Head-server-c0956653b544ff632e36da15d5f7623fa285953a.ts} +1 -1
- package/test/special-self/components/output/Self-client.ts +12 -8
- package/test/special-self/components/output/Self-server.ts +4 -4
- package/test/special-self/components/temp/{Self-client-911c67194be1fdd997537310bcafe712161e8251.ts → Self-client-99b34229c85a477881299311f56f48686352c3b3.ts} +12 -8
- package/test/special-self/components/temp/{Self-server-49ba9be1f6255dd4daf490c640f5222a85960218.ts → Self-server-ee440757ca9772d7b4111451a9ee05a157302e7c.ts} +4 -4
- package/test/style/components/output/Style-client.ts +7 -4
- package/test/style/components/output/Style-server.ts +1 -1
- package/test/style/components/temp/{Style-client-cbfac1e255c33a867ccbd5f9d1484a855d91a2d7.ts → Style-client-bc13f8dbb5f754e4eebb2473fc63a139ebf1ba92.ts} +7 -4
- package/test/style/components/temp/{Style-server-763d82ee2296be3f7620814aed950b505329c04c.ts → Style-server-85720cb43e20ab000f98bc632c29454a51ae92d9.ts} +1 -1
- package/test/svg/components/output/Shape-client.ts +14 -11
- package/test/svg/components/output/Shape-server.ts +4 -4
- package/test/svg/components/temp/{Shape-client-cb98b36ab2a0d9f06b484a3c988fb43c3a71a4a0.ts → Shape-client-368789c592401c3e4c99ddcdb8fe6dded45eb34a.ts} +14 -11
- package/test/svg/components/temp/{Shape-server-500d7fe4556026234ce5379b8e90595ddd094edc.ts → Shape-server-9951ff1dcc7aa0827f28d3f8d970813767115ae3.ts} +4 -4
- package/test/switch/components/output/Switch-client.ts +17 -14
- package/test/switch/components/output/Switch-server.ts +5 -5
- package/test/switch/components/temp/{Switch-client-9980de45e3346b79525c445edec7cbc3b375e8a4.ts → Switch-client-5ef1937202adac7fd5aae866357d95beb4b5805f.ts} +17 -14
- package/test/switch/components/temp/{Switch-server-1c5690726f28008bb565966af69b6e4e019dea82.ts → Switch-server-c1b5e1c657438ee3d8afdbf2166c5295cafc5604.ts} +5 -5
- package/test/template/errors.test.ts +8 -6
- package/test/text/components/output/Text-client.ts +8 -6
- package/test/text/components/output/Text-server.ts +1 -1
- package/test/text/components/temp/{Text-client-63f1d3bf9b3bd145c7ce7058716640e27144055e.ts → Text-client-e335aae6d8aef389dfdbb5bee14e3dd3d41e86bd.ts} +8 -6
- package/test/text/components/temp/{Text-server-9d3dd6f51e893e63c1999ceafce19ca1697d76ea.ts → Text-server-e37d33aa182f36461927d8ce36040bfd05e2f227.ts} +1 -1
- package/test/watch-array/components/output/Array-client.ts +12 -9
- package/test/watch-array/components/output/Array-server.ts +2 -2
- package/test/watch-array/components/output/ArrayEntries-client.ts +12 -9
- package/test/watch-array/components/output/ArrayEntries-server.ts +2 -2
- package/test/watch-array/components/output/ArrayIndexes-client.ts +12 -9
- package/test/watch-array/components/output/ArrayIndexes-server.ts +2 -2
- package/test/watch-array/components/output/ArrayUnkeyed-client.ts +12 -9
- package/test/watch-array/components/output/ArrayUnkeyed-server.ts +2 -2
- package/test/watch-array/components/temp/{Array-client-ffd82188a45877d74053c82fb3616e4aed0fc2ad.ts → Array-client-24ccac431fa237432ec4875234773f36a9a5b120.ts} +12 -9
- package/test/watch-array/components/temp/{Array-server-3715e815af887e8487b214e7de324850fe99e312.ts → Array-server-c907209008ac6177f614b62931a2bb1f1c3a04e1.ts} +2 -2
- package/test/watch-array/components/temp/{ArrayEntries-client-b6e982660628576061dbb44539e970b9549bdcfa.ts → ArrayEntries-client-ebfb391a78325be4411f24a1ecfdc45ca3a6a621.ts} +12 -9
- package/test/watch-array/components/temp/{ArrayEntries-server-85cbe80fbb7f6885287825e2cc0dfc1cb9835d79.ts → ArrayEntries-server-57c1ab0045fa4a02de95f69a65de6f54efe9850c.ts} +2 -2
- package/test/watch-array/components/temp/{ArrayIndexes-client-39337aa43bd8c10a53db836c3be233d48dd39b91.ts → ArrayIndexes-client-0a4b3226862bb1de13fdbc7a14f689d9f7ade2a1.ts} +12 -9
- package/test/watch-array/components/temp/{ArrayIndexes-server-ec623c724af0c7212675d61ea68e9dee87f96caa.ts → ArrayIndexes-server-f093878b94a37617e2e697a786caa680f75630a7.ts} +2 -2
- package/test/watch-array/components/temp/{ArrayUnkeyed-client-7606f9a6a221c8cf6a8b51e4895d10a3d7bccc11.ts → ArrayUnkeyed-client-0966fa5ed460f4c627d8d619e493601098d6a33e.ts} +12 -9
- package/test/watch-array/components/temp/{ArrayUnkeyed-server-db21cd576a4c70973abe10f6c8ef5cecb3ead86c.ts → ArrayUnkeyed-server-c893fa024be07e5e7fce608c3ae456bdf2279dbe.ts} +2 -2
- package/test/watch-object/components/output/Watched-client.ts +7 -5
- package/test/watch-object/components/output/Watched-server.ts +1 -1
- package/test/watch-object/components/temp/{Watched-client-bbffbf2cede1a5c071b770670eb39c0f0be725af.ts → Watched-client-d26e846bbeb8271ec5dc2a1ceb75b362af44d3bd.ts} +7 -5
- package/test/watch-object/components/temp/{Watched-server-0252addaf92fb0f0c1e2937f42918a1c9f31d196.ts → Watched-server-312fca1e769d7594fc5bb6295ccf55b544dd2f4d.ts} +1 -1
- package/test/class/components/temp/Class-server-853a463d2ad1a1e3da4da5ad59ad1c75461d2431.ts +0 -40
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@torpor/view",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Torpor's view library, for writing and mounting components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@testing-library/user-event": "^14.6.1",
|
|
36
36
|
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
|
37
37
|
"@types/jsdom": "^21.1.7",
|
|
38
|
-
"@types/node": "^24.0.
|
|
38
|
+
"@types/node": "^24.0.4",
|
|
39
39
|
"fast-glob": "^3.3.3",
|
|
40
40
|
"jsdom": "^26.1.0",
|
|
41
41
|
"sucrase": "^3.35.0",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"tsup": "^8.5.0",
|
|
44
44
|
"tsx": "^4.20.3",
|
|
45
45
|
"typescript": "^5.8.3",
|
|
46
|
-
"vitest": "^3.2.
|
|
46
|
+
"vitest": "^3.2.4"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "tsc --noEmit && tsup && tsx ./scripts/copyToRepl.ts",
|
|
@@ -15,7 +15,11 @@ export default function buildAddFragment(
|
|
|
15
15
|
const fragment = node.fragment;
|
|
16
16
|
const fragmentName = `t_fragment_${fragment.number}`;
|
|
17
17
|
status.imports.add("t_add_fragment");
|
|
18
|
-
|
|
18
|
+
let params = [fragmentName, parentName, anchorName];
|
|
19
|
+
if (fragment.endVarName) {
|
|
20
|
+
params.push(fragment.endVarName);
|
|
21
|
+
}
|
|
22
|
+
b.append(`t_add_fragment(${params.join(", ")});`);
|
|
19
23
|
// TODO: Don't need to do this if the last thing we hydrated was the end node
|
|
20
24
|
if (fragment.endVarName) {
|
|
21
25
|
status.imports.add("t_next");
|
|
@@ -31,10 +31,12 @@ const importsMap: Record<string, string> = {
|
|
|
31
31
|
t_anchor: 'import { t_anchor } from "${folder}";',
|
|
32
32
|
t_child: 'import { t_child } from "${folder}";',
|
|
33
33
|
t_next: 'import { t_next } from "${folder}";',
|
|
34
|
+
t_skip: 'import { t_skip } from "${folder}";',
|
|
34
35
|
t_frg: 'import { t_frg } from "${folder}";',
|
|
35
36
|
t_elm: 'import { t_elm } from "${folder}";',
|
|
36
37
|
t_txt: 'import { t_txt } from "${folder}";',
|
|
37
38
|
t_cmt: 'import { t_cmt } from "${folder}";',
|
|
39
|
+
t_print: 'import { t_print } from "${folder}";',
|
|
38
40
|
ListItem: 'import { type ListItem } from "${folder}";',
|
|
39
41
|
SlotRender: 'import { type SlotRender } from "${folder}";',
|
|
40
42
|
};
|
|
@@ -71,7 +71,8 @@ export default function buildControlNode(node: ControlNode, status: BuildStatus,
|
|
|
71
71
|
buildScriptNode(node, b);
|
|
72
72
|
break;
|
|
73
73
|
}
|
|
74
|
-
case "@function":
|
|
74
|
+
case "@function":
|
|
75
|
+
case "@async function": {
|
|
75
76
|
b.append("");
|
|
76
77
|
buildScriptNode(node, b);
|
|
77
78
|
b.append("");
|
|
@@ -119,14 +119,21 @@ function maybeAddRootNodeDeclaration(
|
|
|
119
119
|
} else {
|
|
120
120
|
status.imports.add("t_root");
|
|
121
121
|
const rootName = `t_root_${fragment.number}`;
|
|
122
|
-
const
|
|
122
|
+
const params = [fragmentName];
|
|
123
|
+
if (firstNode.type === "text") {
|
|
124
|
+
params.push("true");
|
|
125
|
+
}
|
|
126
|
+
const rootPath = `t_root(${params.join(", ")})`;
|
|
123
127
|
// HACK: We don't know whether this variable will be used by other child
|
|
124
128
|
// nodes, so we have to create it regardless and ignore the error if
|
|
125
129
|
// it's not used -- maybe we could be smarter about this
|
|
126
130
|
b.append("// @ts-ignore");
|
|
127
131
|
b.append(`const ${rootName} = ${rootPath};`);
|
|
128
|
-
|
|
129
|
-
//
|
|
132
|
+
// HACK: pretend we don't have the text param, so that subsequent t_root
|
|
133
|
+
// uses will be shortened, even if we don't know they are text nodes
|
|
134
|
+
varPaths.set(`t_root(${fragmentName})`, rootName);
|
|
135
|
+
|
|
136
|
+
printDebug(rootName, status, b);
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
139
|
|
|
@@ -389,8 +396,9 @@ function declareElementFragmentVars(
|
|
|
389
396
|
b.append("// @ts-ignore");
|
|
390
397
|
}
|
|
391
398
|
b.append(`const ${node.varName} = ${varPath} as ${elementTypeName(node)};`);
|
|
399
|
+
|
|
400
|
+
printDebug(node.varName, status, b);
|
|
392
401
|
}
|
|
393
|
-
//b.append(`console.log("${node.varName}", ${node.varName}, ${node.varName}.textContent);`);
|
|
394
402
|
}
|
|
395
403
|
}
|
|
396
404
|
}
|
|
@@ -500,7 +508,8 @@ function declareTextFragmentVars(
|
|
|
500
508
|
b.append("// @ts-ignore");
|
|
501
509
|
}
|
|
502
510
|
b.append(`const ${node.varName} = ${varPath};`);
|
|
503
|
-
|
|
511
|
+
|
|
512
|
+
printDebug(node.varName, status, b);
|
|
504
513
|
}
|
|
505
514
|
}
|
|
506
515
|
} else {
|
|
@@ -636,6 +645,8 @@ function declareParentAndAnchorFragmentVars(
|
|
|
636
645
|
b.append(`let ${node.parentName} as HTMLElement;`);
|
|
637
646
|
} else {
|
|
638
647
|
b.append(`const ${node.parentName} = ${parentVarPath} as HTMLElement;`);
|
|
648
|
+
|
|
649
|
+
printDebug(node.parentName, status, b);
|
|
639
650
|
}
|
|
640
651
|
varPaths.set(parentVarPath, node.parentName);
|
|
641
652
|
} else {
|
|
@@ -650,13 +661,20 @@ function declareParentAndAnchorFragmentVars(
|
|
|
650
661
|
path.children.push(anchorPath);
|
|
651
662
|
|
|
652
663
|
node.varName = nextVarName(`${name}_anchor`, status);
|
|
653
|
-
const anchorVarPath = getFragmentVarPath(
|
|
664
|
+
const anchorVarPath = getFragmentVarPath(
|
|
665
|
+
fragment,
|
|
666
|
+
status,
|
|
667
|
+
`t_anchor(${node.varName}, true)`,
|
|
668
|
+
anchorPath,
|
|
669
|
+
varPaths,
|
|
670
|
+
);
|
|
654
671
|
if (status.options?.useCreateElement) {
|
|
655
672
|
b.append(`let ${node.varName};`);
|
|
656
673
|
} else {
|
|
657
674
|
status.imports.add("t_anchor");
|
|
658
675
|
b.append(`const ${node.varName} = t_anchor(${anchorVarPath}) as HTMLElement;`);
|
|
659
|
-
|
|
676
|
+
|
|
677
|
+
printDebug(node.varName, status, b);
|
|
660
678
|
}
|
|
661
679
|
} else {
|
|
662
680
|
status.imports.add("t_cmt");
|
|
@@ -703,8 +721,9 @@ function getFragmentVarPath(
|
|
|
703
721
|
varPaths.set(name, name);
|
|
704
722
|
}
|
|
705
723
|
|
|
706
|
-
// Shorten `t_next(t_next(x))` to `
|
|
724
|
+
// Shorten `t_next(t_next(x))` to `t_skip(x, 2)`
|
|
707
725
|
while (varPath.includes("t_next(t_next(")) {
|
|
726
|
+
status.imports.add("t_skip");
|
|
708
727
|
const match = varPath.match(/(t_next\(){2,}/)![0];
|
|
709
728
|
const count = match.length / "t_next(".length;
|
|
710
729
|
const pos = varPath.indexOf("t_next(t_next(");
|
|
@@ -725,9 +744,12 @@ function getFragmentVarPath(
|
|
|
725
744
|
}
|
|
726
745
|
const tail = varPath.substring(end + count);
|
|
727
746
|
const param = varPath.substring(pos + match.length, end);
|
|
728
|
-
varPath = `${head}
|
|
747
|
+
varPath = `${head}t_skip(${param}, ${count})${tail}`;
|
|
729
748
|
}
|
|
730
749
|
|
|
750
|
+
// Set t_next_text back to t_next
|
|
751
|
+
varPath = varPath.replaceAll("t_next_text", "t_next");
|
|
752
|
+
|
|
731
753
|
return varPath;
|
|
732
754
|
}
|
|
733
755
|
|
|
@@ -746,18 +768,14 @@ function getFragmentVarPathPart(
|
|
|
746
768
|
}
|
|
747
769
|
for (let [i, child] of path.children.entries()) {
|
|
748
770
|
if (i > 0) {
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
// }
|
|
758
|
-
//} else {
|
|
759
|
-
varPath = `t_next(${varPath})`;
|
|
760
|
-
//}
|
|
771
|
+
if (child.type === "text" || child.type === "space") {
|
|
772
|
+
// HACK: Using t_next_text just stops t_next(node, true) from
|
|
773
|
+
// being converted into t_skip
|
|
774
|
+
varPath = `t_next_text(${varPath}, true)`;
|
|
775
|
+
} else {
|
|
776
|
+
status.imports.add("t_next");
|
|
777
|
+
varPath = `t_next(${varPath})`;
|
|
778
|
+
}
|
|
761
779
|
}
|
|
762
780
|
|
|
763
781
|
if (i === path.children.length - 1 && child.children.length) {
|
|
@@ -767,6 +785,14 @@ function getFragmentVarPathPart(
|
|
|
767
785
|
return varPath;
|
|
768
786
|
}
|
|
769
787
|
|
|
788
|
+
const debug = false;
|
|
789
|
+
function printDebug(varName: string, status: BuildStatus, b: Builder) {
|
|
790
|
+
if (debug) {
|
|
791
|
+
status.imports.add("t_print");
|
|
792
|
+
b.append(`console.log("${varName}:", t_print(${varName}));`);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
|
|
770
796
|
/*
|
|
771
797
|
function printPath(path: VariablePath) {
|
|
772
798
|
let parent = path;
|
|
@@ -18,7 +18,11 @@ export default function buildRootNode(
|
|
|
18
18
|
fragment: node.fragment,
|
|
19
19
|
path: "0:ch/",
|
|
20
20
|
});
|
|
21
|
-
|
|
21
|
+
|
|
22
|
+
for (let child of node.children) {
|
|
23
|
+
buildNode(child, status, b, parentName, anchorName, true);
|
|
24
|
+
}
|
|
25
|
+
|
|
22
26
|
status.fragmentStack.pop();
|
|
23
27
|
|
|
24
28
|
buildAddFragment(node, status, b, parentName, anchorName);
|
|
@@ -126,8 +126,6 @@ export default function buildServerComponentNode(
|
|
|
126
126
|
b.append("");
|
|
127
127
|
b.append(`$output += ${componentName}(${renderParams})`);
|
|
128
128
|
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
status.output += ANCHOR_COMMENT;
|
|
132
|
-
}
|
|
129
|
+
// Add the anchor node
|
|
130
|
+
status.output += ANCHOR_COMMENT;
|
|
133
131
|
}
|
|
@@ -77,7 +77,8 @@ export default function buildServerControlNode(
|
|
|
77
77
|
buildServerScriptNode(node, b);
|
|
78
78
|
break;
|
|
79
79
|
}
|
|
80
|
-
case "@function":
|
|
80
|
+
case "@function":
|
|
81
|
+
case "@async function": {
|
|
81
82
|
if (status.output) {
|
|
82
83
|
b.append(`$output += \`${status.output}\`;`);
|
|
83
84
|
status.output = "";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ANCHOR_COMMENT,
|
|
3
|
-
|
|
3
|
+
HYDRATION_BREAK_COMMENT,
|
|
4
4
|
HYDRATION_END_COMMENT,
|
|
5
5
|
HYDRATION_START_COMMENT,
|
|
6
6
|
} from "../../types/comments";
|
|
@@ -42,7 +42,7 @@ function buildServerForBranch(node: ControlNode, status: BuildServerStatus, b: B
|
|
|
42
42
|
b.append(`${node.statement} {`);
|
|
43
43
|
|
|
44
44
|
// Separate spaces across boundaries with a careted comment
|
|
45
|
-
status.output +=
|
|
45
|
+
status.output += HYDRATION_BREAK_COMMENT;
|
|
46
46
|
|
|
47
47
|
for (let child of node.children) {
|
|
48
48
|
buildServerNode(child, status, b);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ANCHOR_COMMENT,
|
|
3
|
+
HYDRATION_BREAK_COMMENT,
|
|
3
4
|
HYDRATION_END_COMMENT,
|
|
4
5
|
HYDRATION_START_COMMENT,
|
|
5
6
|
} from "../../types/comments";
|
|
@@ -40,6 +41,9 @@ export default function buildServerIfNode(
|
|
|
40
41
|
function buildServerIfBranch(node: ControlNode, status: BuildServerStatus, b: Builder) {
|
|
41
42
|
b.append(`${node.statement} {`);
|
|
42
43
|
|
|
44
|
+
// Separate spaces across boundaries with a careted comment
|
|
45
|
+
status.output += HYDRATION_BREAK_COMMENT;
|
|
46
|
+
|
|
43
47
|
for (let child of node.children) {
|
|
44
48
|
buildServerNode(child, status, b);
|
|
45
49
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ANCHOR_COMMENT,
|
|
3
|
+
HYDRATION_BREAK_COMMENT,
|
|
3
4
|
HYDRATION_END_COMMENT,
|
|
4
5
|
HYDRATION_START_COMMENT,
|
|
5
6
|
} from "../../types/comments";
|
|
@@ -42,6 +43,9 @@ export default function buildServerSwitchNode(
|
|
|
42
43
|
function buildServerSwitchBranch(node: ControlNode, status: BuildServerStatus, b: Builder) {
|
|
43
44
|
b.append(`${node.statement} {`);
|
|
44
45
|
|
|
46
|
+
// Separate spaces across boundaries with a careted comment
|
|
47
|
+
status.output += HYDRATION_BREAK_COMMENT;
|
|
48
|
+
|
|
45
49
|
for (let child of node.children) {
|
|
46
50
|
buildServerNode(child, status, b);
|
|
47
51
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type CompileError } from "../types/CompileError";
|
|
2
2
|
import { type Import } from "../types/Import";
|
|
3
3
|
import { type ElementNode } from "../types/nodes/ElementNode";
|
|
4
|
+
import { type RootNode } from "../types/nodes/RootNode";
|
|
4
5
|
import { type Style } from "../types/styles/Style";
|
|
5
6
|
|
|
6
7
|
export type ParseStatus = {
|
|
@@ -25,7 +26,7 @@ export interface ParseComponentStatus {
|
|
|
25
26
|
default?: boolean;
|
|
26
27
|
/** Params declared by the user in the component's function */
|
|
27
28
|
params?: string;
|
|
28
|
-
markup?:
|
|
29
|
+
markup?: RootNode;
|
|
29
30
|
stack?: ElementNode[];
|
|
30
31
|
style?: Style;
|
|
31
32
|
/** $props that are used in the component's function */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type TemplateComponent } from "../../types/TemplateComponent";
|
|
2
2
|
import { type ParseResult } from "../types/ParseResult";
|
|
3
|
+
import isElementNode from "../types/nodes/isElementNode";
|
|
3
4
|
import isSpaceNode from "../types/nodes/isSpaceNode";
|
|
4
5
|
import trimQuotes from "../utils/trimQuotes";
|
|
5
6
|
import { type ParseStatus } from "./ParseStatus";
|
|
@@ -103,12 +104,7 @@ export default function parseCode(source: string): ParseResult {
|
|
|
103
104
|
name: c.name,
|
|
104
105
|
default: c.default,
|
|
105
106
|
params: c.params,
|
|
106
|
-
markup: c.markup
|
|
107
|
-
? {
|
|
108
|
-
type: "root",
|
|
109
|
-
children: [c.markup],
|
|
110
|
-
}
|
|
111
|
-
: undefined,
|
|
107
|
+
markup: c.markup,
|
|
112
108
|
style: c.style,
|
|
113
109
|
props: c.props,
|
|
114
110
|
contextProps: c.contextProps,
|
|
@@ -300,8 +296,9 @@ function parseComponentEnd(status: ParseStatus) {
|
|
|
300
296
|
// better instead to create whitespace if we don't find it when hydrating...
|
|
301
297
|
if (
|
|
302
298
|
current.markup &&
|
|
303
|
-
current.markup.
|
|
304
|
-
|
|
299
|
+
isElementNode(current.markup.children[0]) &&
|
|
300
|
+
current.markup.children[0].tagName === "html" &&
|
|
301
|
+
isSpaceNode(current.markup.children[0].children[0])
|
|
305
302
|
) {
|
|
306
303
|
current.markup.children.splice(1, 1);
|
|
307
304
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ControlNode } from "../types/nodes/ControlNode";
|
|
2
2
|
import { type ElementNode } from "../types/nodes/ElementNode";
|
|
3
3
|
import { type OperationType } from "../types/nodes/OperationType";
|
|
4
|
+
import { type RootNode } from "../types/nodes/RootNode";
|
|
4
5
|
import isControlNode from "../types/nodes/isControlNode";
|
|
5
6
|
import trimMatched from "../utils/trimMatched";
|
|
6
7
|
import trimStart from "../utils/trimStart";
|
|
@@ -30,13 +31,22 @@ const controlOperations = [
|
|
|
30
31
|
"@console",
|
|
31
32
|
"@debugger",
|
|
32
33
|
"@function",
|
|
34
|
+
"@async function",
|
|
33
35
|
];
|
|
34
36
|
|
|
35
|
-
const standaloneOperations = [
|
|
37
|
+
const standaloneOperations = [
|
|
38
|
+
"@key",
|
|
39
|
+
"@html",
|
|
40
|
+
"@const",
|
|
41
|
+
"@console",
|
|
42
|
+
"@debugger",
|
|
43
|
+
"@function",
|
|
44
|
+
"@async function",
|
|
45
|
+
];
|
|
36
46
|
|
|
37
47
|
export default function parseControl(
|
|
38
48
|
status: ParseStatus,
|
|
39
|
-
parentNode: ElementNode | ControlNode,
|
|
49
|
+
parentNode: RootNode | ElementNode | ControlNode,
|
|
40
50
|
): void {
|
|
41
51
|
const node = parseControlOpen(status);
|
|
42
52
|
if (!node) {
|
|
@@ -91,7 +101,7 @@ function parseControlOpen(status: ParseStatus): ControlNode | null {
|
|
|
91
101
|
for (status.i; status.i < status.source.length; status.i++) {
|
|
92
102
|
const char = status.source[status.i];
|
|
93
103
|
if (
|
|
94
|
-
isSpaceChar(status.source, status.i) ||
|
|
104
|
+
(isSpaceChar(status.source, status.i) && operation !== "@async") ||
|
|
95
105
|
(accept(":", status) && operation === "default") ||
|
|
96
106
|
(accept(".", status) && operation === "@console") ||
|
|
97
107
|
(accept("(", status, false) && operation === "@html")
|
|
@@ -111,7 +121,7 @@ function parseControlOpen(status: ParseStatus): ControlNode | null {
|
|
|
111
121
|
statement = parseControlStatement(start, operation, status);
|
|
112
122
|
|
|
113
123
|
// Special processing for functions -- read until the closing brace
|
|
114
|
-
if (operation === "@function") {
|
|
124
|
+
if (operation === "@function" || operation === "@async function") {
|
|
115
125
|
statement += ` {${parseInlineScript(status)}}`;
|
|
116
126
|
accept("}", status);
|
|
117
127
|
}
|
|
@@ -188,7 +198,7 @@ function parseControlStatement(start: number, operation: string, status: ParseSt
|
|
|
188
198
|
* @param node The control node
|
|
189
199
|
* @param parentNode The parent node
|
|
190
200
|
*/
|
|
191
|
-
function wrangleControlNode(node: ControlNode, parentNode: ElementNode | ControlNode) {
|
|
201
|
+
function wrangleControlNode(node: ControlNode, parentNode: RootNode | ElementNode | ControlNode) {
|
|
192
202
|
// Group
|
|
193
203
|
// * if/else into an if group
|
|
194
204
|
// * for into a for group
|
|
@@ -274,7 +284,10 @@ function wrangleControlNode(node: ControlNode, parentNode: ElementNode | Control
|
|
|
274
284
|
* @param status The parse status
|
|
275
285
|
* @param parentNode The parent node
|
|
276
286
|
*/
|
|
277
|
-
function parseControlBranches(
|
|
287
|
+
function parseControlBranches(
|
|
288
|
+
status: ParseStatus,
|
|
289
|
+
parentNode: RootNode | ElementNode | ControlNode,
|
|
290
|
+
) {
|
|
278
291
|
// Look ahead and see if we have another control statement
|
|
279
292
|
// NOTE: We could be more strict here (e.g. we could check that an else is
|
|
280
293
|
// after an if), but for now we are just leaving it to the JS parser
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { TextNode } from "../types/nodes/TextNode";
|
|
2
|
+
import type { ParseStatus } from "./ParseStatus";
|
|
3
|
+
import parseControl from "./parseControl";
|
|
2
4
|
import parseElement from "./parseElement";
|
|
3
5
|
import accept from "./utils/accept";
|
|
4
|
-
import
|
|
6
|
+
import consumeSpace from "./utils/consumeSpace";
|
|
7
|
+
import isSpaceChar from "./utils/isSpaceChar";
|
|
5
8
|
|
|
6
9
|
export default function parseMarkup(status: ParseStatus, source: string): void {
|
|
7
10
|
const current = status.components.at(-1);
|
|
@@ -20,15 +23,19 @@ export default function parseMarkup(status: ParseStatus, source: string): void {
|
|
|
20
23
|
} else if (accept("@/*", status)) {
|
|
21
24
|
// Swallow block comments
|
|
22
25
|
status.i = status.source.indexOf("*/", status.i) + 2;
|
|
26
|
+
} else if (isSpaceChar(status.source, status.i)) {
|
|
27
|
+
current.markup ??= { type: "root", children: [] };
|
|
28
|
+
const text: TextNode = { type: "text", content: consumeSpace(status) };
|
|
29
|
+
current.markup.children.push(text);
|
|
23
30
|
} else if (accept("<", status, false)) {
|
|
24
31
|
// Parse the element
|
|
25
|
-
|
|
32
|
+
current.markup ??= { type: "root", children: [] };
|
|
26
33
|
const element = parseElement(status);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
current.markup.children.push(element);
|
|
35
|
+
} else if (accept("@", status, false)) {
|
|
36
|
+
// Parse the control
|
|
37
|
+
current.markup ??= { type: "root", children: [] };
|
|
38
|
+
parseControl(status, current.markup);
|
|
32
39
|
} else {
|
|
33
40
|
status.i += 1;
|
|
34
41
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const ANCHOR_COMMENT = "<!>";
|
|
2
2
|
const HYDRATION_START_COMMENT = "<![>";
|
|
3
3
|
const HYDRATION_END_COMMENT = "<!]>";
|
|
4
|
-
const
|
|
4
|
+
const HYDRATION_BREAK_COMMENT = "<!^>";
|
|
5
5
|
|
|
6
|
-
export { ANCHOR_COMMENT, HYDRATION_START_COMMENT, HYDRATION_END_COMMENT,
|
|
6
|
+
export { ANCHOR_COMMENT, HYDRATION_START_COMMENT, HYDRATION_END_COMMENT, HYDRATION_BREAK_COMMENT };
|
package/src/debug/printNode.ts
CHANGED
|
@@ -1,43 +1,61 @@
|
|
|
1
|
-
export default function printNode(node: Node | null | undefined) {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export default function printNode(node: Node | null | undefined): string {
|
|
2
|
+
if (!node) {
|
|
3
|
+
return `\x1b[41m[null]\x1b[0m`;
|
|
4
|
+
}
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let p = el.tagName.toLowerCase();
|
|
10
|
-
if (el.id) p += "#" + el.id;
|
|
11
|
-
if (el.classList.length) p += "." + Array.from(el.classList).join(".");
|
|
12
|
-
if (node.parentNode) p += `[${Array.from(node.parentNode.childNodes).indexOf(el)}]`;
|
|
13
|
-
paths.push(p);
|
|
14
|
-
} else if (node.nodeType === 3) {
|
|
15
|
-
// Text
|
|
16
|
-
let txt = node as Text;
|
|
17
|
-
let p = "txt";
|
|
18
|
-
if (node.parentNode) p += `[${Array.from(node.parentNode.childNodes).indexOf(txt)}]`;
|
|
19
|
-
paths.push(p);
|
|
20
|
-
} else if (node.nodeType === 8) {
|
|
21
|
-
// Comment
|
|
22
|
-
let com = node as Comment;
|
|
23
|
-
let p = "cmt";
|
|
24
|
-
if (node.parentNode) p += `[${Array.from(node.parentNode.childNodes).indexOf(com)}]`;
|
|
25
|
-
paths.push(p);
|
|
26
|
-
} else if (node.nodeType === 9) {
|
|
27
|
-
// Document
|
|
28
|
-
paths.push("#doc");
|
|
29
|
-
} else if (node.nodeType === 11) {
|
|
30
|
-
// Document fragment
|
|
31
|
-
paths.push("#frag");
|
|
32
|
-
} else {
|
|
33
|
-
paths.push(node.nodeType + "?");
|
|
6
|
+
let parent = node;
|
|
7
|
+
while (parent?.parentNode) {
|
|
8
|
+
if (parent.parentNode?.nodeType === 1 && parent.parentElement?.tagName === "BODY") {
|
|
9
|
+
break;
|
|
34
10
|
}
|
|
35
|
-
|
|
11
|
+
parent = parent.parentNode;
|
|
36
12
|
}
|
|
37
13
|
|
|
38
|
-
|
|
14
|
+
let status = { p: "" };
|
|
15
|
+
printChildNode(parent!, node!, status);
|
|
16
|
+
|
|
17
|
+
return status.p;
|
|
39
18
|
}
|
|
40
19
|
|
|
41
|
-
function
|
|
42
|
-
|
|
20
|
+
function printChildNode(node: Node, target: Node, status: { p: string }) {
|
|
21
|
+
if (node.nodeType === 1) {
|
|
22
|
+
// Element
|
|
23
|
+
let el = node as Element;
|
|
24
|
+
let p = `<${el.tagName.toLowerCase()}>`;
|
|
25
|
+
if (node === target) {
|
|
26
|
+
p = `\x1b[44m${p}\x1b[0m`;
|
|
27
|
+
}
|
|
28
|
+
status.p += p;
|
|
29
|
+
} else if (node.nodeType === 3) {
|
|
30
|
+
// Text
|
|
31
|
+
let p = "…";
|
|
32
|
+
if (node === target) {
|
|
33
|
+
p = `\x1b[44m${p}\x1b[0m`;
|
|
34
|
+
}
|
|
35
|
+
status.p += p;
|
|
36
|
+
} else if (node.nodeType === 8) {
|
|
37
|
+
// Comment
|
|
38
|
+
let com = node as Comment;
|
|
39
|
+
let p = `<!${com.data}>`;
|
|
40
|
+
if (node === target) {
|
|
41
|
+
p = `\x1b[44m${p}\x1b[0m`;
|
|
42
|
+
}
|
|
43
|
+
status.p += p;
|
|
44
|
+
} else if (node.nodeType === 9) {
|
|
45
|
+
// Document
|
|
46
|
+
} else if (node.nodeType === 11) {
|
|
47
|
+
// Document fragment
|
|
48
|
+
} else {
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
for (let child of node.childNodes) {
|
|
52
|
+
printChildNode(child, target, status);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (node.nodeType === 1) {
|
|
56
|
+
// Element
|
|
57
|
+
let el = node as Element;
|
|
58
|
+
let p = `</${el.tagName.toLowerCase()}>`;
|
|
59
|
+
status.p += p;
|
|
60
|
+
}
|
|
43
61
|
}
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import t_animate from "./render/addAnimation";
|
|
|
6
6
|
import t_event from "./render/addEvent";
|
|
7
7
|
import t_add_fragment from "./render/addFragment";
|
|
8
8
|
import t_apply_props from "./render/applyProps";
|
|
9
|
+
import clearLayoutSlot from "./render/clearLayoutSlot";
|
|
9
10
|
import t_fmt from "./render/formatText";
|
|
10
11
|
import t_class from "./render/getClasses";
|
|
11
12
|
import t_fragment from "./render/getFragment";
|
|
@@ -18,10 +19,12 @@ import t_anchor from "./render/nodeAnchor";
|
|
|
18
19
|
import t_child from "./render/nodeChild";
|
|
19
20
|
import t_next from "./render/nodeNext";
|
|
20
21
|
import t_root from "./render/nodeRoot";
|
|
22
|
+
import t_skip from "./render/nodeSkip";
|
|
21
23
|
import t_pop_range from "./render/popRange";
|
|
22
24
|
import t_push_range from "./render/pushRange";
|
|
23
25
|
import t_run_control from "./render/runControl";
|
|
24
26
|
import t_run_branch from "./render/runControlBranch";
|
|
27
|
+
import runLayoutSlot from "./render/runLayoutSlot";
|
|
25
28
|
import t_run_list from "./render/runList";
|
|
26
29
|
import t_attribute from "./render/setAttribute";
|
|
27
30
|
import t_dynamic from "./render/setDynamicElement";
|
|
@@ -32,7 +35,7 @@ import { type ServerSlotRender } from "./types/ServerSlotRender";
|
|
|
32
35
|
import { type SlotRender } from "./types/SlotRender";
|
|
33
36
|
|
|
34
37
|
// Mount and hydrate
|
|
35
|
-
export { mount, hydrate };
|
|
38
|
+
export { mount, hydrate, runLayoutSlot, clearLayoutSlot };
|
|
36
39
|
|
|
37
40
|
// Functions for the user that can be called from components
|
|
38
41
|
export { $watch, $unwrap, $run, $mount };
|
|
@@ -52,6 +55,7 @@ export {
|
|
|
52
55
|
t_child,
|
|
53
56
|
t_next,
|
|
54
57
|
t_root,
|
|
58
|
+
t_skip,
|
|
55
59
|
t_pop_range,
|
|
56
60
|
t_push_range,
|
|
57
61
|
t_run_control,
|
|
@@ -6,9 +6,10 @@ export default function addFragment(
|
|
|
6
6
|
fragment: DocumentFragment,
|
|
7
7
|
parent: ParentNode,
|
|
8
8
|
before: Node | null,
|
|
9
|
+
endNode?: ChildNode,
|
|
9
10
|
): void {
|
|
10
|
-
//console.log(`adding fragment '${fragment.textContent}' to
|
|
11
|
-
//console.log("before",
|
|
11
|
+
//console.log(`adding fragment '${fragment.textContent}' to `, parent);
|
|
12
|
+
//console.log("before", before);
|
|
12
13
|
|
|
13
14
|
const range = context.activeRange;
|
|
14
15
|
const hydrationNode = context.hydrationNode;
|
|
@@ -16,7 +17,7 @@ export default function addFragment(
|
|
|
16
17
|
// Set the active range's end node to the last node in the fragment
|
|
17
18
|
if (range) {
|
|
18
19
|
if (hydrationNode) {
|
|
19
|
-
range.endNode = hydrationNode;
|
|
20
|
+
range.endNode = endNode ?? hydrationNode;
|
|
20
21
|
} else {
|
|
21
22
|
range.startNode = fragment.firstChild;
|
|
22
23
|
range.endNode = fragment.lastChild;
|
|
@@ -45,7 +46,7 @@ export default function addFragment(
|
|
|
45
46
|
if (!parentIsFragment) {
|
|
46
47
|
// Only run $mount effects if not hydrating (if hydrating, they will get
|
|
47
48
|
// run at the end when everything is hooked up)
|
|
48
|
-
if (!
|
|
49
|
+
if (!hydrationNode) {
|
|
49
50
|
for (let effect of context.mountEffects) {
|
|
50
51
|
$run(effect);
|
|
51
52
|
}
|