@torpor/view 0.1.5 → 0.1.7
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 +16 -0
- package/dist/compile.cjs +311 -260
- package/dist/compile.cjs.map +1 -1
- package/dist/compile.js +311 -260
- package/dist/compile.js.map +1 -1
- package/dist/index.cjs +148 -96
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +86 -29
- package/dist/index.d.ts +86 -29
- package/dist/index.js +144 -96
- 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 +3 -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 +54 -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 +7 -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 +52 -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/nodeReanchor.ts +18 -0
- 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 +21 -15
- package/test/await/components/output/Await-server.ts +2 -2
- package/test/await/components/temp/{Await-client-a7bf000bf2b59a3d5251a0fa18ec79890a52a547.ts → Await-client-e2fc91352ed24b160650d7851d82375910bd28d6.ts} +21 -15
- package/test/await/components/temp/{Await-server-06cd2a3d8c7eb5bef026ffe2fb11793becf547c2.ts → Await-server-f02f39af3bb3344ca6b18a1d64d60b21913fba31.ts} +2 -2
- package/test/bind/components/output/BindComponent-client.ts +21 -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-c4dbd934eda6b8f9a7afc697b9d6dd3edc3a4a48.ts} +21 -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 +10 -1
- package/test/child-component/components/output/ParentChild-client.ts +20 -11
- package/test/child-component/components/output/ParentChild-server.ts +3 -3
- package/test/child-component/components/temp/{ParentChild-client-eaefb0cbfd251badab3c57ae2037d973f785a1b8.ts → ParentChild-client-16042a29846dbbeec5905f163bf29b6bb48dfd42.ts} +20 -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 +30 -20
- package/test/class/components/output/Class-server.ts +4 -4
- package/test/class/components/temp/{Class-client-12f09850a5f8c27de6cf94c23a2b17aadbf66f01.ts → Class-client-71b655ee0cbda59527269a2fbf0b6d2a1176bbaa.ts} +30 -20
- package/test/class/components/temp/Class-server-daf30ffb1bacf9877e3385dc9a3eede61c972329.ts +40 -0
- package/test/component/components/output/Component-client.ts +12 -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-2f4734d1288dc88d1d5aa532791199969351ec1d.ts} +12 -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 +15 -9
- package/test/effects/components/output/For-server.ts +2 -2
- package/test/effects/components/output/If-client.ts +17 -11
- package/test/effects/components/output/If-server.ts +4 -4
- package/test/effects/components/output/NestedIf-client.ts +23 -15
- package/test/effects/components/output/NestedIf-server.ts +5 -5
- package/test/effects/components/temp/{For-client-d8d4e4424ec3238fe9f79cc907d673612b63bcdf.ts → For-client-56df708520a56e3461dd041d5fcf3a6d16d6c653.ts} +15 -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-341b189ef35481d477325e09e9b2d3479b7a6dfc.ts} +17 -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-4c74efc133b9817ff106e6ffcf4065603030a596.ts} +23 -15
- 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 +15 -9
- package/test/for/components/output/For-server.ts +2 -2
- package/test/for/components/output/ForEscape-client.ts +19 -13
- package/test/for/components/output/ForEscape-server.ts +2 -2
- package/test/for/components/output/ForIn-client.ts +15 -9
- package/test/for/components/output/ForIn-server.ts +2 -2
- package/test/for/components/output/ForOf-client.ts +15 -9
- package/test/for/components/output/ForOf-server.ts +2 -2
- package/test/for/components/temp/{For-client-0be5994e98c07a3455cd8a18a2b1b8ef3605aba6.ts → For-client-1d8c7995d69e881e0c6e23e17feb4ee73e34f7c3.ts} +15 -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-c4b46ddf79bcceb3d677baeb57ac85ec6bc5f565.ts} +19 -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-b64e5ecc592f137f08fc6ab9da800732df94976e.ts} +15 -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-4ef8193b2f0603a8edfcbe6c2d321a240211bdcd.ts} +15 -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 +12 -6
- package/test/html/components/output/Html-server.ts +1 -1
- package/test/html/components/temp/{Html-client-766ba4a63f28f929ca16cd7d1640fe92f9b30792.ts → Html-client-2c3bae5ddb348adb88e332df9bad69714a88ddd1.ts} +12 -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 +19 -13
- package/test/if/components/output/IfAfterIf-server.ts +4 -4
- package/test/if/components/output/IfElse-client.ts +17 -13
- package/test/if/components/output/IfElse-server.ts +4 -4
- package/test/if/components/output/IfElseIf-client.ts +19 -15
- package/test/if/components/output/IfElseIf-server.ts +5 -5
- package/test/if/components/output/IfFalse-client.ts +59 -0
- package/test/if/components/output/IfFalse-server.ts +21 -0
- package/test/if/components/output/IfNested-client.ts +25 -19
- package/test/if/components/output/IfNested-server.ts +6 -6
- package/test/if/components/temp/{IfAfterIf-client-49b6b8c42b0a351561f9f5f22c2ae2e844bf3b58.ts → IfAfterIf-client-e092f37a07f06c67501693a2028c3f7a809267a9.ts} +19 -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-9b9b5cd2d58364c2792c6233dcf1a028c343741b.ts} +17 -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-c6e0f7e55b7d2471527f7fbc673cdb1be41a548c.ts} +19 -15
- package/test/if/components/temp/{IfElseIf-server-67991eee3f56dc687cda600511c31396438e0a77.ts → IfElseIf-server-ddc7348705d51b02538301e0aa704130748992cf.ts} +5 -5
- package/test/if/components/temp/IfFalse-client-84249379a2b7b30baea5eeed2a64d4502763d002.ts +59 -0
- package/test/if/components/temp/IfFalse-server-e8385013cfdde584b43cc0d71311cbb417859116.ts +21 -0
- package/test/if/components/temp/{IfNested-client-f563ac1b16a2280e457557281c4925ed447a9cd7.ts → IfNested-client-6a536c2000ef72e8c289ad789b135d4b1e170b6e.ts} +25 -19
- 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 +14 -7
- package/test/party/components/output/AnswerButtonApp-server.ts +2 -2
- package/test/party/components/output/ColorSelect-client.ts +15 -10
- package/test/party/components/output/ColorSelect-server.ts +2 -2
- package/test/party/components/output/Colors-client.ts +15 -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 +15 -9
- package/test/party/components/output/FunnyButton-server.ts +2 -2
- package/test/party/components/output/FunnyButtonApp-client.ts +20 -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 +22 -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 +12 -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 +14 -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-959a3756a3549b01c5d4c6e7b1dade9dc14ce671.ts} +14 -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-06e6ef9f285d81975b97d89c8a68a494a32a8e3b.ts} +15 -10
- 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-2f3ab581879042904699c9d47ae5001b82edd910.ts} +15 -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-400cff6abc7bdd6dbcd23786070eb0e198800337.ts +46 -0
- 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-42c39a8ffb7563c474e6b3ccfc9d4ee064c8fbee.ts} +20 -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-b536f07f37c21cd9340db9cef7b95d30c53f9349.ts} +22 -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-deefee703fc851401cd3a4eec7606d0a228a631d.ts} +12 -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-0f5f11a3fd62f7e0e428fec2a260b93fcff61578.ts} +14 -7
- package/test/party/components/temp/{UserProfileContextApp-server-6be8dab2ed4f8911f26bef137e7dea164f2b894d.ts → UserProfileContextApp-server-95a4b12d30cef621db55d5de102a906ac7286fb2.ts} +2 -2
- package/test/props/components/output/Reactive-client.ts +21 -12
- package/test/props/components/output/Reactive-server.ts +3 -3
- package/test/props/components/temp/{Reactive-client-e3e5f6ee2f22c46337c6ab1df2f241133c7e2646.ts → Reactive-client-524add56a858b575fda1001bfe4891e6a1d6d751.ts} +21 -12
- package/test/props/components/temp/{Reactive-server-0914d91287a1bc6d32d7cc56d086624762dbfc04.ts → Reactive-server-770cd3df7c877c0c99e156b2ba6d1f8b35914027.ts} +3 -3
- package/test/replace/components/output/Replace-client.ts +14 -8
- package/test/replace/components/output/Replace-server.ts +2 -2
- package/test/replace/components/temp/{Replace-client-3fdab63871fa4bb792317caefd3539b1888325b1.ts → Replace-client-7f6ae4e645d18c4768ef9a212b2e9626c9abdeb0.ts} +14 -8
- package/test/replace/components/temp/{Replace-server-857aca7a58deffc3a1c95ab9d31628b4051ca203.ts → Replace-server-9519943d193b681e1d7894a0d7952affdfb0660c.ts} +2 -2
- package/test/slots/components/output/Article-client.ts +21 -10
- package/test/slots/components/output/Article-server.ts +2 -2
- package/test/slots/components/output/Basic-client.ts +12 -5
- package/test/slots/components/output/Basic-server.ts +2 -0
- package/test/slots/components/output/Header-client.ts +13 -7
- package/test/slots/components/output/Header-server.ts +2 -2
- package/test/slots/components/output/Let-client.ts +12 -5
- package/test/slots/components/output/Let-server.ts +2 -0
- package/test/slots/components/output/List-client.ts +18 -10
- package/test/slots/components/output/List-server.ts +2 -2
- package/test/slots/components/output/Named-client.ts +15 -8
- package/test/slots/components/output/Named-server.ts +2 -0
- package/test/slots/components/output/Unused-client.ts +12 -4
- package/test/slots/components/output/Unused-server.ts +2 -0
- package/test/slots/components/temp/Article-client-5f243a2540a073d4018bdc93c6a8e285ba965f5c.ts +52 -0
- 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-85377d56d5d37f56ebb10a709e9ffa1a91a2dd91.ts} +12 -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-247a12314f4fc2695e63b576731b9d0c2a73dcac.ts} +13 -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-2625080a2799f5124b1b7083b780958f95539f15.ts} +12 -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-2b316860db37180e9bdfabb32f18b391c3994ac4.ts} +18 -10
- 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-64e56746d78b308fd788c9b0409d79e4c91756ff.ts} +15 -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-3436f47c322f34378aa240b8ad789048d35b4829.ts} +12 -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 +12 -6
- package/test/special-component/components/output/BigTitle-server.ts +2 -2
- package/test/special-component/components/output/Component-client.ts +16 -5
- package/test/special-component/components/output/Component-server.ts +2 -2
- package/test/special-component/components/output/SmallTitle-client.ts +12 -6
- package/test/special-component/components/output/SmallTitle-server.ts +2 -2
- package/test/special-component/components/temp/{BigTitle-client-881a9f84876fb3f6d994736edb253b96e71de926.ts → BigTitle-client-aa7930485dfd471094922b7725ab6fd7718817e6.ts} +12 -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-3353f5d7d697fd754f92ea30f751f62efb0635c9.ts} +16 -5
- 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-419568c1936f1bb8346db193f0a17848aac61e8e.ts} +12 -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 +19 -10
- package/test/special-self/components/output/Self-server.ts +4 -4
- package/test/special-self/components/temp/{Self-client-911c67194be1fdd997537310bcafe712161e8251.ts → Self-client-bc1db32c01ceebd8aac04288c4d73431cffb200f.ts} +19 -10
- 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 +17 -11
- package/test/svg/components/output/Shape-server.ts +4 -4
- package/test/svg/components/temp/{Shape-client-cb98b36ab2a0d9f06b484a3c988fb43c3a71a4a0.ts → Shape-client-8e9515d4a360b9f4a945263a485486a557da1075.ts} +17 -11
- package/test/svg/components/temp/{Shape-server-500d7fe4556026234ce5379b8e90595ddd094edc.ts → Shape-server-9951ff1dcc7aa0827f28d3f8d970813767115ae3.ts} +4 -4
- package/test/switch/components/output/Switch-client.ts +20 -14
- package/test/switch/components/output/Switch-server.ts +5 -5
- package/test/switch/components/temp/{Switch-client-9980de45e3346b79525c445edec7cbc3b375e8a4.ts → Switch-client-485db0bdd94941ecad84528054f40ec6330c5e48.ts} +20 -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 +15 -9
- package/test/watch-array/components/output/Array-server.ts +2 -2
- package/test/watch-array/components/output/ArrayEntries-client.ts +15 -9
- package/test/watch-array/components/output/ArrayEntries-server.ts +2 -2
- package/test/watch-array/components/output/ArrayIndexes-client.ts +15 -9
- package/test/watch-array/components/output/ArrayIndexes-server.ts +2 -2
- package/test/watch-array/components/output/ArrayUnkeyed-client.ts +15 -9
- package/test/watch-array/components/output/ArrayUnkeyed-server.ts +2 -2
- package/test/watch-array/components/temp/{Array-client-ffd82188a45877d74053c82fb3616e4aed0fc2ad.ts → Array-client-8b76b82f631c149d12466795ef6b016ebeda5568.ts} +15 -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-c7b6352485a0d8ebcdb150d3e7f49d60493fde92.ts} +15 -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-d8321be46a9572147e7b4bc71d7496985217b4f8.ts} +15 -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-e37813da82c6d06de32d77348f23ed29c9c08187.ts} +15 -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/test/party/components/temp/FunnyButton-client-45f2c5dd56f2cdb80102193a978df6b0cec822ab.ts +0 -40
- package/test/slots/components/temp/Article-client-80848d6cadd8abac61865d14ddd35685844797e0.ts +0 -41
|
@@ -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
|
}
|
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,62 @@ 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
|
+
* @returns The anchor node.
|
|
19
|
+
*/
|
|
20
|
+
export default function nodeAnchor(node: ChildNode): ChildNode {
|
|
21
|
+
if (context.hydrationNode) {
|
|
22
|
+
if (isComment(node) && node.data === HYDRATION_START) {
|
|
23
|
+
// Skip and remove the start node, setting the hydration node in
|
|
24
|
+
// nodeNext
|
|
25
|
+
let currentNode = nodeNext(node);
|
|
26
|
+
node.remove();
|
|
13
27
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
// Go through siblings until we get to the end
|
|
29
|
+
let level = 1;
|
|
30
|
+
while (currentNode) {
|
|
31
|
+
if (isComment(currentNode)) {
|
|
32
|
+
if (currentNode.data === HYDRATION_START) {
|
|
33
|
+
level += 1;
|
|
34
|
+
} else if (currentNode.data === HYDRATION_END) {
|
|
35
|
+
level -= 1;
|
|
36
|
+
if (level === 0) {
|
|
37
|
+
// Remove the end node and return the next one
|
|
38
|
+
const endNode = currentNode.nextSibling;
|
|
39
|
+
currentNode.remove();
|
|
40
|
+
|
|
41
|
+
// If the statement is empty (i.e. the end comment
|
|
42
|
+
// immediately follows the start comment), move the
|
|
43
|
+
// hydration node past the removed end comment to
|
|
44
|
+
// the anchor, so that we can continue to the next
|
|
45
|
+
// nodes
|
|
46
|
+
if (context.hydrationNode === currentNode) {
|
|
47
|
+
context.hydrationNode = endNode;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// NOTE: We know this is not null as it is being
|
|
51
|
+
// called from generated code
|
|
52
|
+
return endNode!;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
30
55
|
}
|
|
56
|
+
currentNode = currentNode.nextSibling!;
|
|
31
57
|
}
|
|
32
|
-
currentNode = currentNode.nextSibling!;
|
|
33
|
-
}
|
|
34
58
|
|
|
35
|
-
|
|
36
|
-
|
|
59
|
+
if (!currentNode) {
|
|
60
|
+
throw new Error("End hydration comment not found");
|
|
61
|
+
}
|
|
37
62
|
}
|
|
38
63
|
}
|
|
39
64
|
|
|
@@ -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
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import context from "./context";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gets the anchor node after adding a fragment.
|
|
5
|
+
*
|
|
6
|
+
* When hydrating, the anchor node initially gets set to the first node in the
|
|
7
|
+
* statement, and then we work through the nodes until we get to the anchor node
|
|
8
|
+
* itself. So, after hydrating, we need to set the anchor node to the actual
|
|
9
|
+
* anchor node, from the current hydration node.
|
|
10
|
+
*
|
|
11
|
+
* I'm not sure this is going to always be the case...
|
|
12
|
+
*
|
|
13
|
+
* @param node The anchor node.
|
|
14
|
+
* @returns The (maybe new) anchor node.
|
|
15
|
+
*/
|
|
16
|
+
export default function nodeReanchor(node: ChildNode): ChildNode {
|
|
17
|
+
return context.hydrationNode ?? node;
|
|
18
|
+
}
|
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
|
}
|
|
@@ -11,6 +11,7 @@ import t_next from "../../../../src/render/nodeNext";
|
|
|
11
11
|
import t_pop_range from "../../../../src/render/popRange";
|
|
12
12
|
import t_push_range from "../../../../src/render/pushRange";
|
|
13
13
|
import t_range from "../../../../src/render/newRange";
|
|
14
|
+
import t_reanchor from "../../../../src/render/nodeReanchor";
|
|
14
15
|
import t_root from "../../../../src/render/nodeRoot";
|
|
15
16
|
import t_run_branch from "../../../../src/render/runControlBranch";
|
|
16
17
|
import t_run_control from "../../../../src/render/runControl";
|
|
@@ -46,10 +47,11 @@ export default function Await(
|
|
|
46
47
|
/* User interface */
|
|
47
48
|
const t_fragments: DocumentFragment[] = [];
|
|
48
49
|
|
|
49
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
50
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <button> Guess again </button> </div> `);
|
|
50
51
|
// @ts-ignore
|
|
51
|
-
const
|
|
52
|
-
const
|
|
52
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
53
|
+
const t_await_parent_1 = t_next(t_root_0) as HTMLElement;
|
|
54
|
+
let t_await_anchor_1 = t_anchor(t_next(t_child(t_await_parent_1))) as HTMLElement;
|
|
53
55
|
|
|
54
56
|
/* @await */
|
|
55
57
|
const t_await_range_1 = t_range();
|
|
@@ -60,10 +62,10 @@ export default function Await(
|
|
|
60
62
|
t_run_branch(t_await_range_1, 0, () => {
|
|
61
63
|
const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <p>Hmm...</p> `);
|
|
62
64
|
// @ts-ignore
|
|
63
|
-
const t_root_1 = t_root(t_fragment_1);
|
|
65
|
+
const t_root_1 = t_root(t_fragment_1, true);
|
|
64
66
|
// @ts-ignore
|
|
65
|
-
const t_text_1 = t_next(t_root_1,
|
|
66
|
-
t_add_fragment(t_fragment_1,
|
|
67
|
+
const t_text_1 = t_next(t_next(t_root_1), true);
|
|
68
|
+
t_add_fragment(t_fragment_1, t_await_parent_1, t_before, t_text_1);
|
|
67
69
|
t_next(t_text_1);
|
|
68
70
|
});
|
|
69
71
|
((token) => {
|
|
@@ -74,10 +76,10 @@ export default function Await(
|
|
|
74
76
|
t_run_branch(t_await_range_1, 1, () => {
|
|
75
77
|
const t_fragment_2 = t_fragment($parent.ownerDocument!, t_fragments, 2, ` <p>Is it a number?</p> `);
|
|
76
78
|
// @ts-ignore
|
|
77
|
-
const t_root_2 = t_root(t_fragment_2);
|
|
79
|
+
const t_root_2 = t_root(t_fragment_2, true);
|
|
78
80
|
// @ts-ignore
|
|
79
|
-
const t_text_2 = t_next(t_root_2,
|
|
80
|
-
t_add_fragment(t_fragment_2,
|
|
81
|
+
const t_text_2 = t_next(t_next(t_root_2), true);
|
|
82
|
+
t_add_fragment(t_fragment_2, t_await_parent_1, t_before, t_text_2);
|
|
81
83
|
t_next(t_text_2);
|
|
82
84
|
});
|
|
83
85
|
t_pop_range(t_old_range_1);
|
|
@@ -89,14 +91,14 @@ export default function Await(
|
|
|
89
91
|
t_run_branch(t_await_range_1, 2, () => {
|
|
90
92
|
const t_fragment_3 = t_fragment($parent.ownerDocument!, t_fragments, 3, ` <p class="error">#</p> `);
|
|
91
93
|
// @ts-ignore
|
|
92
|
-
const t_root_3 = t_root(t_fragment_3);
|
|
94
|
+
const t_root_3 = t_root(t_fragment_3, true);
|
|
93
95
|
const t_text_3 = t_child(t_next(t_root_3));
|
|
94
96
|
// @ts-ignore
|
|
95
|
-
const t_text_4 = t_next(t_root_3,
|
|
97
|
+
const t_text_4 = t_next(t_next(t_root_3), true);
|
|
96
98
|
$run(function setTextContent() {
|
|
97
99
|
t_text_3.textContent = `Something went wrong: ${t_fmt(ex)}!`;
|
|
98
100
|
});
|
|
99
|
-
t_add_fragment(t_fragment_3,
|
|
101
|
+
t_add_fragment(t_fragment_3, t_await_parent_1, t_before, t_text_4);
|
|
100
102
|
t_next(t_text_4);
|
|
101
103
|
});
|
|
102
104
|
t_pop_range(t_old_range_1);
|
|
@@ -105,9 +107,13 @@ export default function Await(
|
|
|
105
107
|
})(t_await_token_1);
|
|
106
108
|
});
|
|
107
109
|
|
|
108
|
-
|
|
110
|
+
t_await_anchor_1 = t_reanchor(t_await_anchor_1) as HTMLElement;
|
|
111
|
+
|
|
112
|
+
const t_button_1 = t_next(t_next(t_await_anchor_1, true)) as HTMLElement;
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
const t_text_5 = t_next(t_await_parent_1, true);
|
|
109
115
|
t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
|
|
110
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
111
|
-
t_next(
|
|
116
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
|
|
117
|
+
t_next(t_text_5);
|
|
112
118
|
|
|
113
119
|
}
|
|
@@ -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
|
}
|
|
@@ -11,6 +11,7 @@ import t_next from "../../../../src/render/nodeNext";
|
|
|
11
11
|
import t_pop_range from "../../../../src/render/popRange";
|
|
12
12
|
import t_push_range from "../../../../src/render/pushRange";
|
|
13
13
|
import t_range from "../../../../src/render/newRange";
|
|
14
|
+
import t_reanchor from "../../../../src/render/nodeReanchor";
|
|
14
15
|
import t_root from "../../../../src/render/nodeRoot";
|
|
15
16
|
import t_run_branch from "../../../../src/render/runControlBranch";
|
|
16
17
|
import t_run_control from "../../../../src/render/runControl";
|
|
@@ -46,10 +47,11 @@ export default function Await(
|
|
|
46
47
|
/* User interface */
|
|
47
48
|
const t_fragments: DocumentFragment[] = [];
|
|
48
49
|
|
|
49
|
-
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0,
|
|
50
|
+
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div> <!> <button> Guess again </button> </div> `);
|
|
50
51
|
// @ts-ignore
|
|
51
|
-
const
|
|
52
|
-
const
|
|
52
|
+
const t_root_0 = t_root(t_fragment_0, true);
|
|
53
|
+
const t_await_parent_1 = t_next(t_root_0) as HTMLElement;
|
|
54
|
+
let t_await_anchor_1 = t_anchor(t_next(t_child(t_await_parent_1))) as HTMLElement;
|
|
53
55
|
|
|
54
56
|
/* @await */
|
|
55
57
|
const t_await_range_1 = t_range();
|
|
@@ -60,10 +62,10 @@ export default function Await(
|
|
|
60
62
|
t_run_branch(t_await_range_1, 0, () => {
|
|
61
63
|
const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <p>Hmm...</p> `);
|
|
62
64
|
// @ts-ignore
|
|
63
|
-
const t_root_1 = t_root(t_fragment_1);
|
|
65
|
+
const t_root_1 = t_root(t_fragment_1, true);
|
|
64
66
|
// @ts-ignore
|
|
65
|
-
const t_text_1 = t_next(t_root_1,
|
|
66
|
-
t_add_fragment(t_fragment_1,
|
|
67
|
+
const t_text_1 = t_next(t_next(t_root_1), true);
|
|
68
|
+
t_add_fragment(t_fragment_1, t_await_parent_1, t_before, t_text_1);
|
|
67
69
|
t_next(t_text_1);
|
|
68
70
|
});
|
|
69
71
|
((token) => {
|
|
@@ -74,10 +76,10 @@ export default function Await(
|
|
|
74
76
|
t_run_branch(t_await_range_1, 1, () => {
|
|
75
77
|
const t_fragment_2 = t_fragment($parent.ownerDocument!, t_fragments, 2, ` <p>Is it a number?</p> `);
|
|
76
78
|
// @ts-ignore
|
|
77
|
-
const t_root_2 = t_root(t_fragment_2);
|
|
79
|
+
const t_root_2 = t_root(t_fragment_2, true);
|
|
78
80
|
// @ts-ignore
|
|
79
|
-
const t_text_2 = t_next(t_root_2,
|
|
80
|
-
t_add_fragment(t_fragment_2,
|
|
81
|
+
const t_text_2 = t_next(t_next(t_root_2), true);
|
|
82
|
+
t_add_fragment(t_fragment_2, t_await_parent_1, t_before, t_text_2);
|
|
81
83
|
t_next(t_text_2);
|
|
82
84
|
});
|
|
83
85
|
t_pop_range(t_old_range_1);
|
|
@@ -89,14 +91,14 @@ export default function Await(
|
|
|
89
91
|
t_run_branch(t_await_range_1, 2, () => {
|
|
90
92
|
const t_fragment_3 = t_fragment($parent.ownerDocument!, t_fragments, 3, ` <p class="error">#</p> `);
|
|
91
93
|
// @ts-ignore
|
|
92
|
-
const t_root_3 = t_root(t_fragment_3);
|
|
94
|
+
const t_root_3 = t_root(t_fragment_3, true);
|
|
93
95
|
const t_text_3 = t_child(t_next(t_root_3));
|
|
94
96
|
// @ts-ignore
|
|
95
|
-
const t_text_4 = t_next(t_root_3,
|
|
97
|
+
const t_text_4 = t_next(t_next(t_root_3), true);
|
|
96
98
|
$run(function setTextContent() {
|
|
97
99
|
t_text_3.textContent = `Something went wrong: ${t_fmt(ex)}!`;
|
|
98
100
|
});
|
|
99
|
-
t_add_fragment(t_fragment_3,
|
|
101
|
+
t_add_fragment(t_fragment_3, t_await_parent_1, t_before, t_text_4);
|
|
100
102
|
t_next(t_text_4);
|
|
101
103
|
});
|
|
102
104
|
t_pop_range(t_old_range_1);
|
|
@@ -105,9 +107,13 @@ export default function Await(
|
|
|
105
107
|
})(t_await_token_1);
|
|
106
108
|
});
|
|
107
109
|
|
|
108
|
-
|
|
110
|
+
t_await_anchor_1 = t_reanchor(t_await_anchor_1) as HTMLElement;
|
|
111
|
+
|
|
112
|
+
const t_button_1 = t_next(t_next(t_await_anchor_1, true)) as HTMLElement;
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
const t_text_5 = t_next(t_await_parent_1, true);
|
|
109
115
|
t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
|
|
110
|
-
t_add_fragment(t_fragment_0, $parent, $anchor);
|
|
111
|
-
t_next(
|
|
116
|
+
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
|
|
117
|
+
t_next(t_text_5);
|
|
112
118
|
|
|
113
119
|
}
|
|
@@ -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
|
}
|