@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/src/render/clearRange.ts
CHANGED
|
@@ -3,7 +3,7 @@ import removeEffect from "../watch/removeEffect";
|
|
|
3
3
|
import context from "./context";
|
|
4
4
|
|
|
5
5
|
export default function clearRange(range: Range): void {
|
|
6
|
-
//console.log(
|
|
6
|
+
//console.log("clearing range", range.startNode, "to", range.endNode);
|
|
7
7
|
|
|
8
8
|
// Clear effects and collect animations that take place within this range and its children
|
|
9
9
|
let animations: Animation[] = [];
|
package/src/render/isComment.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default function isComment(node: Node): node is Comment {
|
|
2
|
-
return node
|
|
1
|
+
export default function isComment(node: Node | null | undefined): node is Comment {
|
|
2
|
+
return node?.nodeType === 8;
|
|
3
3
|
}
|
package/src/render/nodeAnchor.ts
CHANGED
|
@@ -3,37 +3,72 @@ import { HYDRATION_END, HYDRATION_START } from "./hydrationMarkers";
|
|
|
3
3
|
import isComment from "./isComment";
|
|
4
4
|
import nodeNext from "./nodeNext";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Gets the anchor node for a control statement or component.
|
|
8
|
+
*
|
|
9
|
+
* When mounting, this just returns the anchor node parameter (because it was
|
|
10
|
+
* created).
|
|
11
|
+
*
|
|
12
|
+
* When hydrating, there should be matched <![> and <!]> comments in the HTML,
|
|
13
|
+
* and the anchor node should be after the end comment. The matched comment
|
|
14
|
+
* nodes will be deleted, and the hydration node set to the first node inside
|
|
15
|
+
* the matched comments.
|
|
16
|
+
*
|
|
17
|
+
* @param node The potential anchor node.
|
|
18
|
+
* @param subsequent Whether this is the second time the anchor is being retrieved.
|
|
19
|
+
* @returns The anchor node.
|
|
20
|
+
*/
|
|
21
|
+
export default function nodeAnchor(node: ChildNode, subsequent = false): ChildNode {
|
|
22
|
+
if (context.hydrationNode) {
|
|
23
|
+
// The first time we get a node anchor during hydration, the hydration
|
|
24
|
+
// node gets set to the first node in the statement, and then we work
|
|
25
|
+
// through the nodes until we get to the anchor node itself. So, the
|
|
26
|
+
// second time we get the anchor node, the hydration node should have
|
|
27
|
+
// been set to it. I'm not sure this is going to always be the case...
|
|
28
|
+
if (subsequent) {
|
|
29
|
+
return context.hydrationNode;
|
|
30
|
+
}
|
|
13
31
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
currentNode.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
if (isComment(node) && node.data === HYDRATION_START) {
|
|
33
|
+
// Skip and remove the start node, setting the hydration node in
|
|
34
|
+
// nodeNext
|
|
35
|
+
let currentNode = nodeNext(node);
|
|
36
|
+
node.remove();
|
|
37
|
+
|
|
38
|
+
// Go through siblings until we get to the end
|
|
39
|
+
let level = 1;
|
|
40
|
+
while (currentNode) {
|
|
41
|
+
if (isComment(currentNode)) {
|
|
42
|
+
if (currentNode.data === HYDRATION_START) {
|
|
43
|
+
level += 1;
|
|
44
|
+
} else if (currentNode.data === HYDRATION_END) {
|
|
45
|
+
level -= 1;
|
|
46
|
+
if (level === 0) {
|
|
47
|
+
// Remove the end node and return the next one
|
|
48
|
+
const endNode = currentNode.nextSibling;
|
|
49
|
+
currentNode.remove();
|
|
50
|
+
|
|
51
|
+
// If the statement is empty (i.e. the end comment
|
|
52
|
+
// immediately follows the start comment), move the
|
|
53
|
+
// hydration node past the removed end comment to
|
|
54
|
+
// the anchor, so that we can continue to the next
|
|
55
|
+
// nodes
|
|
56
|
+
if (context.hydrationNode === currentNode) {
|
|
57
|
+
context.hydrationNode = endNode;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// NOTE: We know this is not null as it is being
|
|
61
|
+
// called from generated code
|
|
62
|
+
return endNode!;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
30
65
|
}
|
|
66
|
+
currentNode = currentNode.nextSibling!;
|
|
31
67
|
}
|
|
32
|
-
currentNode = currentNode.nextSibling!;
|
|
33
|
-
}
|
|
34
68
|
|
|
35
|
-
|
|
36
|
-
|
|
69
|
+
if (!currentNode) {
|
|
70
|
+
throw new Error("End hydration comment not found");
|
|
71
|
+
}
|
|
37
72
|
}
|
|
38
73
|
}
|
|
39
74
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import context from "./context";
|
|
2
|
+
import { HYDRATION_BREAK } from "./hydrationMarkers";
|
|
3
|
+
import isComment from "./isComment";
|
|
4
|
+
|
|
5
|
+
// TODO: It would be good to remove this, if possible
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* When hydrating, removes and skips hydration comments that are inserted at the
|
|
9
|
+
* start of branches and used to split up text nodes that would otherwise be
|
|
10
|
+
* joined in HTML.
|
|
11
|
+
*
|
|
12
|
+
* @param node The node to check and maybe skip.
|
|
13
|
+
* @returns The next node.
|
|
14
|
+
*/
|
|
15
|
+
export default function nodeCheckHydrationBreak(node: ChildNode | null): ChildNode | null {
|
|
16
|
+
if (context.hydrationNode) {
|
|
17
|
+
if (node && isComment(node) && node.data === HYDRATION_BREAK) {
|
|
18
|
+
let comment = node;
|
|
19
|
+
node = node.nextSibling;
|
|
20
|
+
comment.remove();
|
|
21
|
+
}
|
|
22
|
+
context.hydrationNode = node;
|
|
23
|
+
}
|
|
24
|
+
return node;
|
|
25
|
+
}
|
package/src/render/nodeChild.ts
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import context from "./context";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Gets the first child of a node
|
|
4
|
+
* Gets the first child of a node.
|
|
5
|
+
*
|
|
6
|
+
* Sets the hydration node.
|
|
7
|
+
*
|
|
8
|
+
* @param parent The parent node.
|
|
5
9
|
*/
|
|
6
|
-
export default function nodeChild(parent: Node):
|
|
7
|
-
let
|
|
10
|
+
export default function nodeChild(parent: Node): ChildNode {
|
|
11
|
+
let childNode = parent.firstChild;
|
|
8
12
|
if (context.hydrationNode) {
|
|
9
13
|
// The child may be null when hydrating the sole text child of an
|
|
10
14
|
// element with no text
|
|
11
|
-
if (!
|
|
12
|
-
|
|
15
|
+
if (!childNode) {
|
|
16
|
+
childNode = parent.appendChild(parent.ownerDocument!.createTextNode(""));
|
|
13
17
|
}
|
|
14
|
-
context.hydrationNode =
|
|
18
|
+
context.hydrationNode = childNode;
|
|
15
19
|
}
|
|
20
|
+
|
|
16
21
|
// NOTE: We know this is not null as it is being called from generated code
|
|
17
|
-
return
|
|
22
|
+
return childNode!;
|
|
18
23
|
}
|
package/src/render/nodeNext.ts
CHANGED
|
@@ -1,33 +1,24 @@
|
|
|
1
1
|
import context from "./context";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import isText from "./isText";
|
|
3
|
+
import nodeCheckHydrationBreak from "./nodeCheckHydrationBreak";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Gets the next sibling of a node
|
|
6
|
+
* Gets the next sibling of a node.
|
|
7
|
+
*
|
|
8
|
+
* When hydrating, sets the hydration node.
|
|
9
|
+
*
|
|
10
|
+
* @param node The node.
|
|
11
|
+
* @param text Whether we require a text node.
|
|
7
12
|
*/
|
|
8
|
-
export default function nodeNext(node:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
nextNode = checkHydrationNode(nextNode!.nextSibling);
|
|
14
|
-
}
|
|
13
|
+
export default function nodeNext(node: ChildNode, text = false): ChildNode {
|
|
14
|
+
// If the required node is a text node, and we already have one, just use
|
|
15
|
+
// it. This is caused by text nodes being merged in HTML
|
|
16
|
+
if (context.hydrationNode && text && isText(node)) {
|
|
17
|
+
return node;
|
|
15
18
|
}
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
return nextNode!;
|
|
19
|
-
}
|
|
20
|
+
let nextNode = nodeCheckHydrationBreak(node.nextSibling);
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// Remove hydration comments that are inserted at the start of branches
|
|
24
|
-
// They are just used to split up text nodes that would otherwise be joined in HTML
|
|
25
|
-
if (nextNode && isComment(nextNode) && nextNode.data === HYDRATION_BRANCH) {
|
|
26
|
-
let comment = nextNode;
|
|
27
|
-
nextNode = nextNode.nextSibling;
|
|
28
|
-
comment.remove();
|
|
29
|
-
}
|
|
30
|
-
context.hydrationNode = nextNode;
|
|
31
|
-
}
|
|
32
|
-
return nextNode;
|
|
22
|
+
// NOTE: We know this is not null as it is being called from generated code
|
|
23
|
+
return nextNode!;
|
|
33
24
|
}
|
package/src/render/nodeRoot.ts
CHANGED
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
import context from "./context";
|
|
2
|
+
import isText from "./isText";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
|
-
* Gets the first child in a fragment
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
* Gets the first child in a fragment.
|
|
6
|
+
*
|
|
7
|
+
* When hydrating, also sets the active range's start node, while we have it.
|
|
8
|
+
*
|
|
9
|
+
* @param parent The parent of the fragment.
|
|
10
|
+
* @param text Whether we require a text node.
|
|
11
|
+
*/
|
|
12
|
+
export default function nodeRoot(parent: Node, text = false): ChildNode {
|
|
13
|
+
if (context.hydrationNode) {
|
|
14
|
+
let rootNode = context.hydrationNode;
|
|
15
|
+
|
|
16
|
+
// If the root node we need is a text node, and the hydration node is
|
|
17
|
+
// not a text node but the previous node is, use the previous node. This
|
|
18
|
+
// is caused by text nodes being merged in HTML
|
|
19
|
+
if (text && !isText(rootNode) && isText(rootNode.previousSibling)) {
|
|
20
|
+
rootNode = rootNode.previousSibling;
|
|
21
|
+
context.hydrationNode = rootNode;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// If hydrating, set the active range's start node
|
|
10
25
|
const range = context.activeRange;
|
|
11
26
|
if (range && !range.startNode) {
|
|
12
|
-
range.startNode =
|
|
27
|
+
range.startNode = rootNode;
|
|
13
28
|
}
|
|
14
|
-
|
|
29
|
+
|
|
30
|
+
return rootNode;
|
|
15
31
|
} else {
|
|
16
|
-
// NOTE: We know this is not null as it is being called from generated
|
|
32
|
+
// NOTE: We know this is not null as it is being called from generated
|
|
33
|
+
// code
|
|
17
34
|
return parent.firstChild!;
|
|
18
35
|
}
|
|
19
36
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import nodeCheckHydrationBreak from "./nodeCheckHydrationBreak";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gets the sibling of a node, x nodes after it.
|
|
5
|
+
*
|
|
6
|
+
* When hydrating, sets the hydration node.
|
|
7
|
+
*
|
|
8
|
+
* @param node The node.
|
|
9
|
+
* @param count The number of nodes to skip.
|
|
10
|
+
*/
|
|
11
|
+
export default function nodeSkip(node: ChildNode, count: number): ChildNode {
|
|
12
|
+
let nextNode = node;
|
|
13
|
+
|
|
14
|
+
for (let i = 0; i < count; i++) {
|
|
15
|
+
nextNode = nodeCheckHydrationBreak(nextNode.nextSibling)!;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// NOTE: We know this is not null as it is being called from generated code
|
|
19
|
+
return nextNode!;
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Component } from "../types/Component";
|
|
2
|
+
import type { Range } from "../types/Range";
|
|
3
|
+
import type { SlotRender } from "../types/SlotRender";
|
|
4
|
+
import newRange from "./newRange";
|
|
5
|
+
import popRange from "./popRange";
|
|
6
|
+
import pushRange from "./pushRange";
|
|
7
|
+
|
|
8
|
+
export default function runLayoutSlot(
|
|
9
|
+
component: Component,
|
|
10
|
+
slot: SlotRender,
|
|
11
|
+
parent: ParentNode,
|
|
12
|
+
anchor: Node | null,
|
|
13
|
+
$props: Record<string, string>,
|
|
14
|
+
$context?: Record<PropertyKey, any>,
|
|
15
|
+
): Range {
|
|
16
|
+
const range = newRange();
|
|
17
|
+
const oldRange = pushRange(range, true);
|
|
18
|
+
|
|
19
|
+
component(parent, anchor, $props, $context, {
|
|
20
|
+
_: slot,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
popRange(oldRange);
|
|
24
|
+
|
|
25
|
+
return range;
|
|
26
|
+
}
|
|
@@ -21,9 +21,12 @@ export default function Attributes(
|
|
|
21
21
|
/* User interface */
|
|
22
22
|
const t_fragments: DocumentFragment[] = [];
|
|
23
23
|
|
|
24
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
24
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div data-thing="" {$props.attr}> Hello! </div> `);
|
|
25
25
|
// @ts-ignore
|
|
26
|
-
const
|
|
26
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
27
|
+
const t_div_1 = t_next(t_root_0) as HTMLDivElement;
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const t_text_1 = t_next(t_div_1, true);
|
|
27
30
|
$run(function setAttribute() {
|
|
28
31
|
t_attribute(t_div_1, "thing", $props.thing);
|
|
29
32
|
});
|
|
@@ -36,7 +39,7 @@ export default function Attributes(
|
|
|
36
39
|
$run(function setAttribute() {
|
|
37
40
|
t_div_1.setAttribute("attr", $props.attr);
|
|
38
41
|
});
|
|
39
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
40
|
-
t_next(
|
|
42
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_1);
|
|
43
|
+
t_next(t_text_1);
|
|
41
44
|
|
|
42
45
|
}
|
|
@@ -12,7 +12,7 @@ export default function Attributes(
|
|
|
12
12
|
|
|
13
13
|
/* User interface */
|
|
14
14
|
let $output = "";
|
|
15
|
-
$output +=
|
|
15
|
+
$output += ` <div ${$props.thing ? `thing="${t_attr($props.thing)}"` : ''} ${$props.dataThing ? `data-thing="${t_attr($props.dataThing)}"` : ''} caption="this attribute is for ${t_attr($props.description)}" attr="${t_attr($props.attr)}"> Hello! </div> `;
|
|
16
16
|
|
|
17
17
|
return $output;
|
|
18
18
|
}
|
|
@@ -21,9 +21,12 @@ export default function Attributes(
|
|
|
21
21
|
/* User interface */
|
|
22
22
|
const t_fragments: DocumentFragment[] = [];
|
|
23
23
|
|
|
24
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
24
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div data-thing="" {$props.attr}> Hello! </div> `);
|
|
25
25
|
// @ts-ignore
|
|
26
|
-
const
|
|
26
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
27
|
+
const t_div_1 = t_next(t_root_0) as HTMLDivElement;
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const t_text_1 = t_next(t_div_1, true);
|
|
27
30
|
$run(function setAttribute() {
|
|
28
31
|
t_attribute(t_div_1, "thing", $props.thing);
|
|
29
32
|
});
|
|
@@ -36,7 +39,7 @@ export default function Attributes(
|
|
|
36
39
|
$run(function setAttribute() {
|
|
37
40
|
t_div_1.setAttribute("attr", $props.attr);
|
|
38
41
|
});
|
|
39
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
40
|
-
t_next(
|
|
42
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_1);
|
|
43
|
+
t_next(t_text_1);
|
|
41
44
|
|
|
42
45
|
}
|
|
@@ -12,7 +12,7 @@ export default function Attributes(
|
|
|
12
12
|
|
|
13
13
|
/* User interface */
|
|
14
14
|
let $output = "";
|
|
15
|
-
$output +=
|
|
15
|
+
$output += ` <div ${$props.thing ? `thing="${t_attr($props.thing)}"` : ''} ${$props.dataThing ? `data-thing="${t_attr($props.dataThing)}"` : ''} caption="this attribute is for ${t_attr($props.description)}" attr="${t_attr($props.attr)}"> Hello! </div> `;
|
|
16
16
|
|
|
17
17
|
return $output;
|
|
18
18
|
}
|
|
@@ -46,10 +46,11 @@ export default function Await(
|
|
|
46
46
|
/* User interface */
|
|
47
47
|
const t_fragments: DocumentFragment[] = [];
|
|
48
48
|
|
|
49
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
49
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <button> Guess again </button> </div> `);
|
|
50
50
|
// @ts-ignore
|
|
51
|
-
const
|
|
52
|
-
const
|
|
51
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
52
|
+
const t_await_parent_1 = t_next(t_root_0) as HTMLElement;
|
|
53
|
+
const t_await_anchor_1 = t_anchor(t_next(t_child(t_await_parent_1))) as HTMLElement;
|
|
53
54
|
|
|
54
55
|
/* @await */
|
|
55
56
|
const t_await_range_1 = t_range();
|
|
@@ -60,10 +61,10 @@ export default function Await(
|
|
|
60
61
|
t_run_branch(t_await_range_1, 0, () => {
|
|
61
62
|
const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <p>Hmm...</p> `);
|
|
62
63
|
// @ts-ignore
|
|
63
|
-
const t_root_1 = t_root(t_fragment_1);
|
|
64
|
+
const t_root_1 = t_root(t_fragment_1, true);
|
|
64
65
|
// @ts-ignore
|
|
65
|
-
const t_text_1 = t_next(t_root_1,
|
|
66
|
-
t_add_fragment(t_fragment_1,
|
|
66
|
+
const t_text_1 = t_next(t_next(t_root_1), true);
|
|
67
|
+
t_add_fragment(t_fragment_1, t_await_parent_1, t_before, t_text_1);
|
|
67
68
|
t_next(t_text_1);
|
|
68
69
|
});
|
|
69
70
|
((token) => {
|
|
@@ -74,10 +75,10 @@ export default function Await(
|
|
|
74
75
|
t_run_branch(t_await_range_1, 1, () => {
|
|
75
76
|
const t_fragment_2 = t_fragment($parent.ownerDocument!, t_fragments, 2, ` <p>Is it a number?</p> `);
|
|
76
77
|
// @ts-ignore
|
|
77
|
-
const t_root_2 = t_root(t_fragment_2);
|
|
78
|
+
const t_root_2 = t_root(t_fragment_2, true);
|
|
78
79
|
// @ts-ignore
|
|
79
|
-
const t_text_2 = t_next(t_root_2,
|
|
80
|
-
t_add_fragment(t_fragment_2,
|
|
80
|
+
const t_text_2 = t_next(t_next(t_root_2), true);
|
|
81
|
+
t_add_fragment(t_fragment_2, t_await_parent_1, t_before, t_text_2);
|
|
81
82
|
t_next(t_text_2);
|
|
82
83
|
});
|
|
83
84
|
t_pop_range(t_old_range_1);
|
|
@@ -89,14 +90,14 @@ export default function Await(
|
|
|
89
90
|
t_run_branch(t_await_range_1, 2, () => {
|
|
90
91
|
const t_fragment_3 = t_fragment($parent.ownerDocument!, t_fragments, 3, ` <p class="error">#</p> `);
|
|
91
92
|
// @ts-ignore
|
|
92
|
-
const t_root_3 = t_root(t_fragment_3);
|
|
93
|
+
const t_root_3 = t_root(t_fragment_3, true);
|
|
93
94
|
const t_text_3 = t_child(t_next(t_root_3));
|
|
94
95
|
// @ts-ignore
|
|
95
|
-
const t_text_4 = t_next(t_root_3,
|
|
96
|
+
const t_text_4 = t_next(t_next(t_root_3), true);
|
|
96
97
|
$run(function setTextContent() {
|
|
97
98
|
t_text_3.textContent = `Something went wrong: ${t_fmt(ex)}!`;
|
|
98
99
|
});
|
|
99
|
-
t_add_fragment(t_fragment_3,
|
|
100
|
+
t_add_fragment(t_fragment_3, t_await_parent_1, t_before, t_text_4);
|
|
100
101
|
t_next(t_text_4);
|
|
101
102
|
});
|
|
102
103
|
t_pop_range(t_old_range_1);
|
|
@@ -105,9 +106,11 @@ export default function Await(
|
|
|
105
106
|
})(t_await_token_1);
|
|
106
107
|
});
|
|
107
108
|
|
|
108
|
-
const t_button_1 = t_next(t_await_anchor_1,
|
|
109
|
+
const t_button_1 = t_next(t_next(t_anchor(t_await_anchor_1, true), true)) as HTMLElement;
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
const t_text_5 = t_next(t_await_parent_1, true);
|
|
109
112
|
t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
|
|
110
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
111
|
-
t_next(
|
|
113
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
|
|
114
|
+
t_next(t_text_5);
|
|
112
115
|
|
|
113
116
|
}
|
|
@@ -28,9 +28,9 @@ export default function Await(
|
|
|
28
28
|
|
|
29
29
|
/* User interface */
|
|
30
30
|
let $output = "";
|
|
31
|
-
$output +=
|
|
31
|
+
$output += ` <div> <![>`;
|
|
32
32
|
$output += ` <p>Hmm...</p> `;
|
|
33
|
-
$output += `<!]><!> <button> Guess again </button> </div
|
|
33
|
+
$output += `<!]><!> <button> Guess again </button> </div> `;
|
|
34
34
|
|
|
35
35
|
return $output;
|
|
36
36
|
}
|
|
@@ -46,10 +46,11 @@ export default function Await(
|
|
|
46
46
|
/* User interface */
|
|
47
47
|
const t_fragments: DocumentFragment[] = [];
|
|
48
48
|
|
|
49
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
49
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <button> Guess again </button> </div> `);
|
|
50
50
|
// @ts-ignore
|
|
51
|
-
const
|
|
52
|
-
const
|
|
51
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
52
|
+
const t_await_parent_1 = t_next(t_root_0) as HTMLElement;
|
|
53
|
+
const t_await_anchor_1 = t_anchor(t_next(t_child(t_await_parent_1))) as HTMLElement;
|
|
53
54
|
|
|
54
55
|
/* @await */
|
|
55
56
|
const t_await_range_1 = t_range();
|
|
@@ -60,10 +61,10 @@ export default function Await(
|
|
|
60
61
|
t_run_branch(t_await_range_1, 0, () => {
|
|
61
62
|
const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <p>Hmm...</p> `);
|
|
62
63
|
// @ts-ignore
|
|
63
|
-
const t_root_1 = t_root(t_fragment_1);
|
|
64
|
+
const t_root_1 = t_root(t_fragment_1, true);
|
|
64
65
|
// @ts-ignore
|
|
65
|
-
const t_text_1 = t_next(t_root_1,
|
|
66
|
-
t_add_fragment(t_fragment_1,
|
|
66
|
+
const t_text_1 = t_next(t_next(t_root_1), true);
|
|
67
|
+
t_add_fragment(t_fragment_1, t_await_parent_1, t_before, t_text_1);
|
|
67
68
|
t_next(t_text_1);
|
|
68
69
|
});
|
|
69
70
|
((token) => {
|
|
@@ -74,10 +75,10 @@ export default function Await(
|
|
|
74
75
|
t_run_branch(t_await_range_1, 1, () => {
|
|
75
76
|
const t_fragment_2 = t_fragment($parent.ownerDocument!, t_fragments, 2, ` <p>Is it a number?</p> `);
|
|
76
77
|
// @ts-ignore
|
|
77
|
-
const t_root_2 = t_root(t_fragment_2);
|
|
78
|
+
const t_root_2 = t_root(t_fragment_2, true);
|
|
78
79
|
// @ts-ignore
|
|
79
|
-
const t_text_2 = t_next(t_root_2,
|
|
80
|
-
t_add_fragment(t_fragment_2,
|
|
80
|
+
const t_text_2 = t_next(t_next(t_root_2), true);
|
|
81
|
+
t_add_fragment(t_fragment_2, t_await_parent_1, t_before, t_text_2);
|
|
81
82
|
t_next(t_text_2);
|
|
82
83
|
});
|
|
83
84
|
t_pop_range(t_old_range_1);
|
|
@@ -89,14 +90,14 @@ export default function Await(
|
|
|
89
90
|
t_run_branch(t_await_range_1, 2, () => {
|
|
90
91
|
const t_fragment_3 = t_fragment($parent.ownerDocument!, t_fragments, 3, ` <p class="error">#</p> `);
|
|
91
92
|
// @ts-ignore
|
|
92
|
-
const t_root_3 = t_root(t_fragment_3);
|
|
93
|
+
const t_root_3 = t_root(t_fragment_3, true);
|
|
93
94
|
const t_text_3 = t_child(t_next(t_root_3));
|
|
94
95
|
// @ts-ignore
|
|
95
|
-
const t_text_4 = t_next(t_root_3,
|
|
96
|
+
const t_text_4 = t_next(t_next(t_root_3), true);
|
|
96
97
|
$run(function setTextContent() {
|
|
97
98
|
t_text_3.textContent = `Something went wrong: ${t_fmt(ex)}!`;
|
|
98
99
|
});
|
|
99
|
-
t_add_fragment(t_fragment_3,
|
|
100
|
+
t_add_fragment(t_fragment_3, t_await_parent_1, t_before, t_text_4);
|
|
100
101
|
t_next(t_text_4);
|
|
101
102
|
});
|
|
102
103
|
t_pop_range(t_old_range_1);
|
|
@@ -105,9 +106,11 @@ export default function Await(
|
|
|
105
106
|
})(t_await_token_1);
|
|
106
107
|
});
|
|
107
108
|
|
|
108
|
-
const t_button_1 = t_next(t_await_anchor_1,
|
|
109
|
+
const t_button_1 = t_next(t_next(t_anchor(t_await_anchor_1, true), true)) as HTMLElement;
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
const t_text_5 = t_next(t_await_parent_1, true);
|
|
109
112
|
t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
|
|
110
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
111
|
-
t_next(
|
|
113
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
|
|
114
|
+
t_next(t_text_5);
|
|
112
115
|
|
|
113
116
|
}
|
|
@@ -28,9 +28,9 @@ export default function Await(
|
|
|
28
28
|
|
|
29
29
|
/* User interface */
|
|
30
30
|
let $output = "";
|
|
31
|
-
$output +=
|
|
31
|
+
$output += ` <div> <![>`;
|
|
32
32
|
$output += ` <p>Hmm...</p> `;
|
|
33
|
-
$output += `<!]><!> <button> Guess again </button> </div
|
|
33
|
+
$output += `<!]><!> <button> Guess again </button> </div> `;
|
|
34
34
|
|
|
35
35
|
return $output;
|
|
36
36
|
}
|
|
@@ -26,10 +26,11 @@ export default function BindComponent(
|
|
|
26
26
|
/* User interface */
|
|
27
27
|
const t_fragments: DocumentFragment[] = [];
|
|
28
28
|
|
|
29
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
29
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <p>#</p> </div> `);
|
|
30
30
|
// @ts-ignore
|
|
31
|
-
const
|
|
32
|
-
const
|
|
31
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
32
|
+
const t_comp_parent_1 = t_next(t_root_0) as HTMLElement;
|
|
33
|
+
const t_comp_anchor_1 = t_anchor(t_next(t_child(t_comp_parent_1))) as HTMLElement;
|
|
33
34
|
|
|
34
35
|
/* @component */
|
|
35
36
|
const t_props_1: any = $watch({});
|
|
@@ -39,13 +40,16 @@ export default function BindComponent(
|
|
|
39
40
|
$run(function setBinding() {
|
|
40
41
|
$state.name = t_props_1["name"];
|
|
41
42
|
});
|
|
42
|
-
BindText(
|
|
43
|
-
|
|
43
|
+
BindText(t_comp_parent_1, t_comp_anchor_1, t_props_1, $context);
|
|
44
|
+
|
|
45
|
+
const t_text_1 = t_child(t_next(t_next(t_anchor(t_comp_anchor_1, true), true)));
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
const t_text_2 = t_next(t_comp_parent_1, true);
|
|
44
48
|
$run(function setTextContent() {
|
|
45
49
|
t_text_1.textContent = `Hello, ${t_fmt($state.name)}`;
|
|
46
50
|
});
|
|
47
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
48
|
-
t_next(
|
|
51
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_2);
|
|
52
|
+
t_next(t_text_2);
|
|
49
53
|
|
|
50
54
|
}
|
|
51
55
|
|
|
@@ -73,15 +77,17 @@ function BindText(
|
|
|
73
77
|
/* User interface */
|
|
74
78
|
const t_fragments: DocumentFragment[] = [];
|
|
75
79
|
|
|
76
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
80
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <input></input> </div> `);
|
|
81
|
+
// @ts-ignore
|
|
82
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
83
|
+
const t_input_1 = t_next(t_child(t_next(t_root_0))) as HTMLInputElement;
|
|
77
84
|
// @ts-ignore
|
|
78
|
-
const
|
|
79
|
-
const t_input_1 = t_next(t_child(t_div_1)) as HTMLInputElement;
|
|
85
|
+
const t_text_1 = t_next(t_next(t_root_0), true);
|
|
80
86
|
$run(function setBinding() {
|
|
81
87
|
t_input_1.value = $props.name || "";
|
|
82
88
|
});
|
|
83
89
|
t_event(t_input_1, "input", (e) => $props.name = e.target.value);
|
|
84
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
85
|
-
t_next(
|
|
90
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_1);
|
|
91
|
+
t_next(t_text_1);
|
|
86
92
|
|
|
87
93
|
}
|