@depup/svelte 5.53.3-depup.0

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.
Files changed (386) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +41 -0
  3. package/action.d.ts +1 -0
  4. package/animate.d.ts +1 -0
  5. package/compiler/index.js +1 -0
  6. package/compiler/package.json +3 -0
  7. package/compiler.d.ts +1 -0
  8. package/easing.d.ts +1 -0
  9. package/elements.d.ts +2078 -0
  10. package/index.d.ts +1 -0
  11. package/legacy.d.ts +1 -0
  12. package/motion.d.ts +1 -0
  13. package/package.json +185 -0
  14. package/src/animate/index.js +78 -0
  15. package/src/attachments/index.js +113 -0
  16. package/src/compiler/errors.js +1719 -0
  17. package/src/compiler/index.js +198 -0
  18. package/src/compiler/legacy.js +637 -0
  19. package/src/compiler/migrate/index.js +1996 -0
  20. package/src/compiler/phases/1-parse/acorn.js +198 -0
  21. package/src/compiler/phases/1-parse/index.js +326 -0
  22. package/src/compiler/phases/1-parse/read/context.js +116 -0
  23. package/src/compiler/phases/1-parse/read/expression.js +93 -0
  24. package/src/compiler/phases/1-parse/read/options.js +263 -0
  25. package/src/compiler/phases/1-parse/read/script.js +97 -0
  26. package/src/compiler/phases/1-parse/read/style.js +637 -0
  27. package/src/compiler/phases/1-parse/remove_typescript_nodes.js +180 -0
  28. package/src/compiler/phases/1-parse/state/element.js +937 -0
  29. package/src/compiler/phases/1-parse/state/fragment.js +17 -0
  30. package/src/compiler/phases/1-parse/state/tag.js +751 -0
  31. package/src/compiler/phases/1-parse/state/text.js +23 -0
  32. package/src/compiler/phases/1-parse/utils/bracket.js +213 -0
  33. package/src/compiler/phases/1-parse/utils/create.js +16 -0
  34. package/src/compiler/phases/1-parse/utils/entities.js +2234 -0
  35. package/src/compiler/phases/1-parse/utils/fuzzymatch.js +281 -0
  36. package/src/compiler/phases/1-parse/utils/html.js +127 -0
  37. package/src/compiler/phases/2-analyze/css/css-analyze.js +331 -0
  38. package/src/compiler/phases/2-analyze/css/css-prune.js +1206 -0
  39. package/src/compiler/phases/2-analyze/css/css-warn.js +47 -0
  40. package/src/compiler/phases/2-analyze/css/utils.js +177 -0
  41. package/src/compiler/phases/2-analyze/index.js +1300 -0
  42. package/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js +47 -0
  43. package/src/compiler/phases/2-analyze/visitors/AnimateDirective.js +15 -0
  44. package/src/compiler/phases/2-analyze/visitors/ArrowFunctionExpression.js +11 -0
  45. package/src/compiler/phases/2-analyze/visitors/AssignmentExpression.js +31 -0
  46. package/src/compiler/phases/2-analyze/visitors/AttachTag.js +17 -0
  47. package/src/compiler/phases/2-analyze/visitors/Attribute.js +66 -0
  48. package/src/compiler/phases/2-analyze/visitors/AwaitBlock.js +48 -0
  49. package/src/compiler/phases/2-analyze/visitors/AwaitExpression.js +150 -0
  50. package/src/compiler/phases/2-analyze/visitors/BindDirective.js +280 -0
  51. package/src/compiler/phases/2-analyze/visitors/CallExpression.js +339 -0
  52. package/src/compiler/phases/2-analyze/visitors/ClassBody.js +156 -0
  53. package/src/compiler/phases/2-analyze/visitors/ClassDeclaration.js +25 -0
  54. package/src/compiler/phases/2-analyze/visitors/ClassDirective.js +13 -0
  55. package/src/compiler/phases/2-analyze/visitors/Component.js +26 -0
  56. package/src/compiler/phases/2-analyze/visitors/ConstTag.js +45 -0
  57. package/src/compiler/phases/2-analyze/visitors/DebugTag.js +15 -0
  58. package/src/compiler/phases/2-analyze/visitors/EachBlock.js +97 -0
  59. package/src/compiler/phases/2-analyze/visitors/ExportDefaultDeclaration.js +20 -0
  60. package/src/compiler/phases/2-analyze/visitors/ExportNamedDeclaration.js +70 -0
  61. package/src/compiler/phases/2-analyze/visitors/ExportSpecifier.js +30 -0
  62. package/src/compiler/phases/2-analyze/visitors/ExpressionStatement.js +38 -0
  63. package/src/compiler/phases/2-analyze/visitors/ExpressionTag.js +26 -0
  64. package/src/compiler/phases/2-analyze/visitors/Fragment.js +10 -0
  65. package/src/compiler/phases/2-analyze/visitors/FunctionDeclaration.js +16 -0
  66. package/src/compiler/phases/2-analyze/visitors/FunctionExpression.js +11 -0
  67. package/src/compiler/phases/2-analyze/visitors/HtmlTag.js +19 -0
  68. package/src/compiler/phases/2-analyze/visitors/Identifier.js +194 -0
  69. package/src/compiler/phases/2-analyze/visitors/IfBlock.js +46 -0
  70. package/src/compiler/phases/2-analyze/visitors/ImportDeclaration.js +31 -0
  71. package/src/compiler/phases/2-analyze/visitors/KeyBlock.js +21 -0
  72. package/src/compiler/phases/2-analyze/visitors/LabeledStatement.js +95 -0
  73. package/src/compiler/phases/2-analyze/visitors/LetDirective.js +24 -0
  74. package/src/compiler/phases/2-analyze/visitors/Literal.js +14 -0
  75. package/src/compiler/phases/2-analyze/visitors/MemberExpression.js +28 -0
  76. package/src/compiler/phases/2-analyze/visitors/NewExpression.js +17 -0
  77. package/src/compiler/phases/2-analyze/visitors/OnDirective.js +28 -0
  78. package/src/compiler/phases/2-analyze/visitors/PropertyDefinition.js +21 -0
  79. package/src/compiler/phases/2-analyze/visitors/RegularElement.js +240 -0
  80. package/src/compiler/phases/2-analyze/visitors/RenderTag.js +68 -0
  81. package/src/compiler/phases/2-analyze/visitors/SlotElement.js +42 -0
  82. package/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +113 -0
  83. package/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js +13 -0
  84. package/src/compiler/phases/2-analyze/visitors/SpreadElement.js +16 -0
  85. package/src/compiler/phases/2-analyze/visitors/StyleDirective.js +39 -0
  86. package/src/compiler/phases/2-analyze/visitors/SvelteBody.js +22 -0
  87. package/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js +30 -0
  88. package/src/compiler/phases/2-analyze/visitors/SvelteComponent.js +18 -0
  89. package/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +24 -0
  90. package/src/compiler/phases/2-analyze/visitors/SvelteElement.js +78 -0
  91. package/src/compiler/phases/2-analyze/visitors/SvelteFragment.js +27 -0
  92. package/src/compiler/phases/2-analyze/visitors/SvelteHead.js +18 -0
  93. package/src/compiler/phases/2-analyze/visitors/SvelteSelf.js +36 -0
  94. package/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +24 -0
  95. package/src/compiler/phases/2-analyze/visitors/TaggedTemplateExpression.js +16 -0
  96. package/src/compiler/phases/2-analyze/visitors/TemplateElement.js +12 -0
  97. package/src/compiler/phases/2-analyze/visitors/Text.js +52 -0
  98. package/src/compiler/phases/2-analyze/visitors/TitleElement.js +21 -0
  99. package/src/compiler/phases/2-analyze/visitors/TransitionDirective.js +19 -0
  100. package/src/compiler/phases/2-analyze/visitors/UpdateExpression.js +29 -0
  101. package/src/compiler/phases/2-analyze/visitors/UseDirective.js +18 -0
  102. package/src/compiler/phases/2-analyze/visitors/VariableDeclarator.js +160 -0
  103. package/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js +334 -0
  104. package/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +981 -0
  105. package/src/compiler/phases/2-analyze/visitors/shared/attribute.js +125 -0
  106. package/src/compiler/phases/2-analyze/visitors/shared/component.js +177 -0
  107. package/src/compiler/phases/2-analyze/visitors/shared/element.js +160 -0
  108. package/src/compiler/phases/2-analyze/visitors/shared/fragment.js +15 -0
  109. package/src/compiler/phases/2-analyze/visitors/shared/function.js +24 -0
  110. package/src/compiler/phases/2-analyze/visitors/shared/snippets.js +17 -0
  111. package/src/compiler/phases/2-analyze/visitors/shared/special-element.js +16 -0
  112. package/src/compiler/phases/2-analyze/visitors/shared/utils.js +301 -0
  113. package/src/compiler/phases/3-transform/client/transform-client.js +719 -0
  114. package/src/compiler/phases/3-transform/client/transform-template/fix-attribute-casing.js +18 -0
  115. package/src/compiler/phases/3-transform/client/transform-template/index.js +67 -0
  116. package/src/compiler/phases/3-transform/client/transform-template/template.js +164 -0
  117. package/src/compiler/phases/3-transform/client/utils.js +181 -0
  118. package/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js +38 -0
  119. package/src/compiler/phases/3-transform/client/visitors/ArrowFunctionExpression.js +11 -0
  120. package/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js +247 -0
  121. package/src/compiler/phases/3-transform/client/visitors/AttachTag.js +26 -0
  122. package/src/compiler/phases/3-transform/client/visitors/Attribute.js +14 -0
  123. package/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js +124 -0
  124. package/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js +25 -0
  125. package/src/compiler/phases/3-transform/client/visitors/BinaryExpression.js +34 -0
  126. package/src/compiler/phases/3-transform/client/visitors/BindDirective.js +290 -0
  127. package/src/compiler/phases/3-transform/client/visitors/BlockStatement.js +32 -0
  128. package/src/compiler/phases/3-transform/client/visitors/BreakStatement.js +20 -0
  129. package/src/compiler/phases/3-transform/client/visitors/CallExpression.js +136 -0
  130. package/src/compiler/phases/3-transform/client/visitors/ClassBody.js +111 -0
  131. package/src/compiler/phases/3-transform/client/visitors/Comment.js +11 -0
  132. package/src/compiler/phases/3-transform/client/visitors/Component.js +12 -0
  133. package/src/compiler/phases/3-transform/client/visitors/ConstTag.js +134 -0
  134. package/src/compiler/phases/3-transform/client/visitors/DebugTag.js +28 -0
  135. package/src/compiler/phases/3-transform/client/visitors/EachBlock.js +362 -0
  136. package/src/compiler/phases/3-transform/client/visitors/ExportNamedDeclaration.js +19 -0
  137. package/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js +20 -0
  138. package/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js +25 -0
  139. package/src/compiler/phases/3-transform/client/visitors/Fragment.js +186 -0
  140. package/src/compiler/phases/3-transform/client/visitors/FunctionDeclaration.js +12 -0
  141. package/src/compiler/phases/3-transform/client/visitors/FunctionExpression.js +11 -0
  142. package/src/compiler/phases/3-transform/client/visitors/HtmlTag.js +53 -0
  143. package/src/compiler/phases/3-transform/client/visitors/Identifier.js +45 -0
  144. package/src/compiler/phases/3-transform/client/visitors/IfBlock.js +131 -0
  145. package/src/compiler/phases/3-transform/client/visitors/KeyBlock.js +45 -0
  146. package/src/compiler/phases/3-transform/client/visitors/LabeledStatement.js +64 -0
  147. package/src/compiler/phases/3-transform/client/visitors/LetDirective.js +55 -0
  148. package/src/compiler/phases/3-transform/client/visitors/MemberExpression.js +23 -0
  149. package/src/compiler/phases/3-transform/client/visitors/OnDirective.js +38 -0
  150. package/src/compiler/phases/3-transform/client/visitors/Program.js +153 -0
  151. package/src/compiler/phases/3-transform/client/visitors/RegularElement.js +725 -0
  152. package/src/compiler/phases/3-transform/client/visitors/RenderTag.js +95 -0
  153. package/src/compiler/phases/3-transform/client/visitors/SlotElement.js +94 -0
  154. package/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js +94 -0
  155. package/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js +10 -0
  156. package/src/compiler/phases/3-transform/client/visitors/SvelteBody.js +11 -0
  157. package/src/compiler/phases/3-transform/client/visitors/SvelteBoundary.js +126 -0
  158. package/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js +13 -0
  159. package/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js +11 -0
  160. package/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +161 -0
  161. package/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js +17 -0
  162. package/src/compiler/phases/3-transform/client/visitors/SvelteHead.js +23 -0
  163. package/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js +13 -0
  164. package/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js +11 -0
  165. package/src/compiler/phases/3-transform/client/visitors/TitleElement.js +48 -0
  166. package/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js +41 -0
  167. package/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js +55 -0
  168. package/src/compiler/phases/3-transform/client/visitors/UseDirective.js +49 -0
  169. package/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +422 -0
  170. package/src/compiler/phases/3-transform/client/visitors/shared/component.js +536 -0
  171. package/src/compiler/phases/3-transform/client/visitors/shared/declarations.js +53 -0
  172. package/src/compiler/phases/3-transform/client/visitors/shared/element.js +263 -0
  173. package/src/compiler/phases/3-transform/client/visitors/shared/events.js +180 -0
  174. package/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +185 -0
  175. package/src/compiler/phases/3-transform/client/visitors/shared/function.js +17 -0
  176. package/src/compiler/phases/3-transform/client/visitors/shared/special_element.js +22 -0
  177. package/src/compiler/phases/3-transform/client/visitors/shared/utils.js +513 -0
  178. package/src/compiler/phases/3-transform/css/index.js +479 -0
  179. package/src/compiler/phases/3-transform/index.js +118 -0
  180. package/src/compiler/phases/3-transform/server/transform-server.js +428 -0
  181. package/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js +124 -0
  182. package/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js +36 -0
  183. package/src/compiler/phases/3-transform/server/visitors/AwaitExpression.js +40 -0
  184. package/src/compiler/phases/3-transform/server/visitors/CallExpression.js +71 -0
  185. package/src/compiler/phases/3-transform/server/visitors/ClassBody.js +81 -0
  186. package/src/compiler/phases/3-transform/server/visitors/Component.js +13 -0
  187. package/src/compiler/phases/3-transform/server/visitors/ConstTag.js +49 -0
  188. package/src/compiler/phases/3-transform/server/visitors/DebugTag.js +24 -0
  189. package/src/compiler/phases/3-transform/server/visitors/EachBlock.js +76 -0
  190. package/src/compiler/phases/3-transform/server/visitors/ExpressionStatement.js +23 -0
  191. package/src/compiler/phases/3-transform/server/visitors/Fragment.js +53 -0
  192. package/src/compiler/phases/3-transform/server/visitors/HtmlTag.js +25 -0
  193. package/src/compiler/phases/3-transform/server/visitors/Identifier.js +24 -0
  194. package/src/compiler/phases/3-transform/server/visitors/IfBlock.js +48 -0
  195. package/src/compiler/phases/3-transform/server/visitors/KeyBlock.js +22 -0
  196. package/src/compiler/phases/3-transform/server/visitors/LabeledStatement.js +24 -0
  197. package/src/compiler/phases/3-transform/server/visitors/MemberExpression.js +19 -0
  198. package/src/compiler/phases/3-transform/server/visitors/Program.js +25 -0
  199. package/src/compiler/phases/3-transform/server/visitors/PropertyDefinition.js +37 -0
  200. package/src/compiler/phases/3-transform/server/visitors/RegularElement.js +216 -0
  201. package/src/compiler/phases/3-transform/server/visitors/RenderTag.js +45 -0
  202. package/src/compiler/phases/3-transform/server/visitors/SlotElement.js +68 -0
  203. package/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js +29 -0
  204. package/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js +10 -0
  205. package/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js +139 -0
  206. package/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js +12 -0
  207. package/src/compiler/phases/3-transform/server/visitors/SvelteElement.js +89 -0
  208. package/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js +11 -0
  209. package/src/compiler/phases/3-transform/server/visitors/SvelteHead.js +25 -0
  210. package/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js +12 -0
  211. package/src/compiler/phases/3-transform/server/visitors/TitleElement.js +21 -0
  212. package/src/compiler/phases/3-transform/server/visitors/UpdateExpression.js +35 -0
  213. package/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js +247 -0
  214. package/src/compiler/phases/3-transform/server/visitors/shared/component.js +359 -0
  215. package/src/compiler/phases/3-transform/server/visitors/shared/element.js +557 -0
  216. package/src/compiler/phases/3-transform/server/visitors/shared/utils.js +408 -0
  217. package/src/compiler/phases/3-transform/shared/assignments.js +92 -0
  218. package/src/compiler/phases/3-transform/shared/transform-async.js +114 -0
  219. package/src/compiler/phases/3-transform/utils.js +451 -0
  220. package/src/compiler/phases/bindings.js +227 -0
  221. package/src/compiler/phases/css.js +14 -0
  222. package/src/compiler/phases/nodes.js +258 -0
  223. package/src/compiler/phases/patterns.js +27 -0
  224. package/src/compiler/phases/scope.js +1432 -0
  225. package/src/compiler/preprocess/decode_sourcemap.js +96 -0
  226. package/src/compiler/preprocess/index.js +368 -0
  227. package/src/compiler/preprocess/replace_in_code.js +72 -0
  228. package/src/compiler/print/index.js +911 -0
  229. package/src/compiler/state.js +144 -0
  230. package/src/compiler/utils/assert.js +9 -0
  231. package/src/compiler/utils/ast.js +639 -0
  232. package/src/compiler/utils/builders.js +698 -0
  233. package/src/compiler/utils/compile_diagnostic.js +107 -0
  234. package/src/compiler/utils/extract_svelte_ignore.js +104 -0
  235. package/src/compiler/utils/mapped_code.js +454 -0
  236. package/src/compiler/utils/push_array.js +13 -0
  237. package/src/compiler/utils/sanitize_template_string.js +7 -0
  238. package/src/compiler/utils/slot.js +20 -0
  239. package/src/compiler/utils/string.js +9 -0
  240. package/src/compiler/validate-options.js +324 -0
  241. package/src/compiler/warnings.js +845 -0
  242. package/src/constants.js +66 -0
  243. package/src/easing/index.js +286 -0
  244. package/src/escaping.js +26 -0
  245. package/src/events/index.js +1 -0
  246. package/src/html-tree-validation.js +238 -0
  247. package/src/index-client.js +255 -0
  248. package/src/index-server.js +56 -0
  249. package/src/internal/client/constants.js +77 -0
  250. package/src/internal/client/context.js +258 -0
  251. package/src/internal/client/dev/assign.js +79 -0
  252. package/src/internal/client/dev/console-log.js +37 -0
  253. package/src/internal/client/dev/css.js +31 -0
  254. package/src/internal/client/dev/debug.js +500 -0
  255. package/src/internal/client/dev/elements.js +63 -0
  256. package/src/internal/client/dev/equality.js +101 -0
  257. package/src/internal/client/dev/hmr.js +89 -0
  258. package/src/internal/client/dev/inspect.js +72 -0
  259. package/src/internal/client/dev/legacy.js +25 -0
  260. package/src/internal/client/dev/ownership.js +81 -0
  261. package/src/internal/client/dev/tracing.js +162 -0
  262. package/src/internal/client/dev/validation.js +16 -0
  263. package/src/internal/client/dom/blocks/async.js +71 -0
  264. package/src/internal/client/dom/blocks/await.js +142 -0
  265. package/src/internal/client/dom/blocks/boundary.js +534 -0
  266. package/src/internal/client/dom/blocks/branches.js +227 -0
  267. package/src/internal/client/dom/blocks/css-props.js +28 -0
  268. package/src/internal/client/dom/blocks/each.js +723 -0
  269. package/src/internal/client/dom/blocks/html.js +128 -0
  270. package/src/internal/client/dom/blocks/if.js +82 -0
  271. package/src/internal/client/dom/blocks/key.js +40 -0
  272. package/src/internal/client/dom/blocks/slot.js +44 -0
  273. package/src/internal/client/dom/blocks/snippet.js +103 -0
  274. package/src/internal/client/dom/blocks/svelte-component.js +61 -0
  275. package/src/internal/client/dom/blocks/svelte-element.js +152 -0
  276. package/src/internal/client/dom/blocks/svelte-head.js +61 -0
  277. package/src/internal/client/dom/css.js +33 -0
  278. package/src/internal/client/dom/elements/actions.js +43 -0
  279. package/src/internal/client/dom/elements/attachments.js +33 -0
  280. package/src/internal/client/dom/elements/attributes.js +657 -0
  281. package/src/internal/client/dom/elements/bindings/document.js +17 -0
  282. package/src/internal/client/dom/elements/bindings/input.js +312 -0
  283. package/src/internal/client/dom/elements/bindings/media.js +233 -0
  284. package/src/internal/client/dom/elements/bindings/navigator.js +11 -0
  285. package/src/internal/client/dom/elements/bindings/props.js +22 -0
  286. package/src/internal/client/dom/elements/bindings/select.js +159 -0
  287. package/src/internal/client/dom/elements/bindings/shared.js +76 -0
  288. package/src/internal/client/dom/elements/bindings/size.js +107 -0
  289. package/src/internal/client/dom/elements/bindings/this.js +61 -0
  290. package/src/internal/client/dom/elements/bindings/universal.js +75 -0
  291. package/src/internal/client/dom/elements/bindings/window.js +66 -0
  292. package/src/internal/client/dom/elements/class.js +51 -0
  293. package/src/internal/client/dom/elements/custom-element.js +344 -0
  294. package/src/internal/client/dom/elements/customizable-select.js +99 -0
  295. package/src/internal/client/dom/elements/events.js +355 -0
  296. package/src/internal/client/dom/elements/misc.js +58 -0
  297. package/src/internal/client/dom/elements/style.js +57 -0
  298. package/src/internal/client/dom/elements/transitions.js +471 -0
  299. package/src/internal/client/dom/hydration.js +125 -0
  300. package/src/internal/client/dom/legacy/event-modifiers.js +127 -0
  301. package/src/internal/client/dom/legacy/lifecycle.js +82 -0
  302. package/src/internal/client/dom/legacy/misc.js +68 -0
  303. package/src/internal/client/dom/operations.js +293 -0
  304. package/src/internal/client/dom/reconciler.js +25 -0
  305. package/src/internal/client/dom/task.js +42 -0
  306. package/src/internal/client/dom/template.js +401 -0
  307. package/src/internal/client/error-handling.js +118 -0
  308. package/src/internal/client/errors.js +510 -0
  309. package/src/internal/client/hydratable.js +33 -0
  310. package/src/internal/client/index.js +183 -0
  311. package/src/internal/client/legacy.js +46 -0
  312. package/src/internal/client/loop.js +48 -0
  313. package/src/internal/client/proxy.js +432 -0
  314. package/src/internal/client/reactivity/async.js +306 -0
  315. package/src/internal/client/reactivity/batch.js +1057 -0
  316. package/src/internal/client/reactivity/deriveds.js +426 -0
  317. package/src/internal/client/reactivity/effects.js +718 -0
  318. package/src/internal/client/reactivity/equality.js +31 -0
  319. package/src/internal/client/reactivity/props.js +430 -0
  320. package/src/internal/client/reactivity/sources.js +370 -0
  321. package/src/internal/client/reactivity/status.js +25 -0
  322. package/src/internal/client/reactivity/store.js +203 -0
  323. package/src/internal/client/reactivity/utils.js +40 -0
  324. package/src/internal/client/render.js +335 -0
  325. package/src/internal/client/runtime.js +827 -0
  326. package/src/internal/client/timing.js +16 -0
  327. package/src/internal/client/validate.js +54 -0
  328. package/src/internal/client/warnings.js +271 -0
  329. package/src/internal/disclose-version.js +6 -0
  330. package/src/internal/flags/async.js +3 -0
  331. package/src/internal/flags/index.js +23 -0
  332. package/src/internal/flags/legacy.js +3 -0
  333. package/src/internal/flags/tracing.js +3 -0
  334. package/src/internal/index.js +5 -0
  335. package/src/internal/server/abort-signal.js +13 -0
  336. package/src/internal/server/blocks/html.js +11 -0
  337. package/src/internal/server/blocks/snippet.js +24 -0
  338. package/src/internal/server/context.js +132 -0
  339. package/src/internal/server/crypto.js +45 -0
  340. package/src/internal/server/dev.js +115 -0
  341. package/src/internal/server/errors.js +131 -0
  342. package/src/internal/server/hydratable.js +142 -0
  343. package/src/internal/server/hydration.js +6 -0
  344. package/src/internal/server/index.js +544 -0
  345. package/src/internal/server/render-context.js +86 -0
  346. package/src/internal/server/renderer.js +923 -0
  347. package/src/internal/server/warnings.js +29 -0
  348. package/src/internal/shared/attributes.js +225 -0
  349. package/src/internal/shared/clone.js +137 -0
  350. package/src/internal/shared/dev.js +65 -0
  351. package/src/internal/shared/errors.js +134 -0
  352. package/src/internal/shared/utils.js +144 -0
  353. package/src/internal/shared/validate.js +47 -0
  354. package/src/internal/shared/warnings.js +40 -0
  355. package/src/legacy/legacy-client.js +281 -0
  356. package/src/legacy/legacy-server.js +112 -0
  357. package/src/motion/index.js +32 -0
  358. package/src/motion/spring.js +369 -0
  359. package/src/motion/tweened.js +306 -0
  360. package/src/motion/utils.js +7 -0
  361. package/src/reactivity/create-subscriber.js +95 -0
  362. package/src/reactivity/date.js +118 -0
  363. package/src/reactivity/index-client.js +7 -0
  364. package/src/reactivity/index-server.js +23 -0
  365. package/src/reactivity/map.js +273 -0
  366. package/src/reactivity/media-query.js +55 -0
  367. package/src/reactivity/reactive-value.js +24 -0
  368. package/src/reactivity/set.js +213 -0
  369. package/src/reactivity/url-search-params.js +174 -0
  370. package/src/reactivity/url.js +205 -0
  371. package/src/reactivity/window/index.js +161 -0
  372. package/src/server/index.js +1 -0
  373. package/src/store/index-client.js +169 -0
  374. package/src/store/index-server.js +101 -0
  375. package/src/store/shared/index.js +209 -0
  376. package/src/store/utils.js +36 -0
  377. package/src/transition/index.js +300 -0
  378. package/src/utils.js +504 -0
  379. package/src/version.js +8 -0
  380. package/store.d.ts +1 -0
  381. package/svelte-html.d.ts +245 -0
  382. package/transition.d.ts +1 -0
  383. package/types/compiler/interfaces.d.ts +1 -0
  384. package/types/compiler/preprocess.d.ts +1 -0
  385. package/types/index.d.ts +3744 -0
  386. package/types/index.d.ts.map +280 -0
@@ -0,0 +1,718 @@
1
+ /** @import { Blocker, ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */
2
+ import {
3
+ is_dirty,
4
+ active_effect,
5
+ active_reaction,
6
+ update_effect,
7
+ get,
8
+ is_destroying_effect,
9
+ remove_reactions,
10
+ set_active_reaction,
11
+ set_is_destroying_effect,
12
+ untrack,
13
+ untracking
14
+ } from '../runtime.js';
15
+ import {
16
+ DIRTY,
17
+ BRANCH_EFFECT,
18
+ RENDER_EFFECT,
19
+ EFFECT,
20
+ DESTROYED,
21
+ INERT,
22
+ REACTION_RAN,
23
+ BLOCK_EFFECT,
24
+ ROOT_EFFECT,
25
+ EFFECT_TRANSPARENT,
26
+ DERIVED,
27
+ CLEAN,
28
+ EAGER_EFFECT,
29
+ HEAD_EFFECT,
30
+ MAYBE_DIRTY,
31
+ EFFECT_PRESERVED,
32
+ STALE_REACTION,
33
+ USER_EFFECT,
34
+ ASYNC,
35
+ CONNECTED,
36
+ MANAGED_EFFECT
37
+ } from '#client/constants';
38
+ import * as e from '../errors.js';
39
+ import { DEV } from 'esm-env';
40
+ import { define_property } from '../../shared/utils.js';
41
+ import { get_next_sibling } from '../dom/operations.js';
42
+ import { component_context, dev_current_component_function, dev_stack } from '../context.js';
43
+ import { Batch, schedule_effect } from './batch.js';
44
+ import { flatten, increment_pending } from './async.js';
45
+ import { without_reactive_context } from '../dom/elements/bindings/shared.js';
46
+ import { set_signal_status } from './status.js';
47
+
48
+ /**
49
+ * @param {'$effect' | '$effect.pre' | '$inspect'} rune
50
+ */
51
+ export function validate_effect(rune) {
52
+ if (active_effect === null) {
53
+ if (active_reaction === null) {
54
+ e.effect_orphan(rune);
55
+ }
56
+
57
+ e.effect_in_unowned_derived();
58
+ }
59
+
60
+ if (is_destroying_effect) {
61
+ e.effect_in_teardown(rune);
62
+ }
63
+ }
64
+
65
+ /**
66
+ * @param {Effect} effect
67
+ * @param {Effect} parent_effect
68
+ */
69
+ function push_effect(effect, parent_effect) {
70
+ var parent_last = parent_effect.last;
71
+ if (parent_last === null) {
72
+ parent_effect.last = parent_effect.first = effect;
73
+ } else {
74
+ parent_last.next = effect;
75
+ effect.prev = parent_last;
76
+ parent_effect.last = effect;
77
+ }
78
+ }
79
+
80
+ /**
81
+ * @param {number} type
82
+ * @param {null | (() => void | (() => void))} fn
83
+ * @param {boolean} sync
84
+ * @returns {Effect}
85
+ */
86
+ function create_effect(type, fn, sync) {
87
+ var parent = active_effect;
88
+
89
+ if (DEV) {
90
+ // Ensure the parent is never an inspect effect
91
+ while (parent !== null && (parent.f & EAGER_EFFECT) !== 0) {
92
+ parent = parent.parent;
93
+ }
94
+ }
95
+
96
+ if (parent !== null && (parent.f & INERT) !== 0) {
97
+ type |= INERT;
98
+ }
99
+
100
+ /** @type {Effect} */
101
+ var effect = {
102
+ ctx: component_context,
103
+ deps: null,
104
+ nodes: null,
105
+ f: type | DIRTY | CONNECTED,
106
+ first: null,
107
+ fn,
108
+ last: null,
109
+ next: null,
110
+ parent,
111
+ b: parent && parent.b,
112
+ prev: null,
113
+ teardown: null,
114
+ wv: 0,
115
+ ac: null
116
+ };
117
+
118
+ if (DEV) {
119
+ effect.component_function = dev_current_component_function;
120
+ }
121
+
122
+ if (sync) {
123
+ try {
124
+ update_effect(effect);
125
+ } catch (e) {
126
+ destroy_effect(effect);
127
+ throw e;
128
+ }
129
+ } else if (fn !== null) {
130
+ schedule_effect(effect);
131
+ }
132
+
133
+ /** @type {Effect | null} */
134
+ var e = effect;
135
+
136
+ // if an effect has already ran and doesn't need to be kept in the tree
137
+ // (because it won't re-run, has no DOM, and has no teardown etc)
138
+ // then we skip it and go to its child (if any)
139
+ if (
140
+ sync &&
141
+ e.deps === null &&
142
+ e.teardown === null &&
143
+ e.nodes === null &&
144
+ e.first === e.last && // either `null`, or a singular child
145
+ (e.f & EFFECT_PRESERVED) === 0
146
+ ) {
147
+ e = e.first;
148
+ if ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) {
149
+ e.f |= EFFECT_TRANSPARENT;
150
+ }
151
+ }
152
+
153
+ if (e !== null) {
154
+ e.parent = parent;
155
+
156
+ if (parent !== null) {
157
+ push_effect(e, parent);
158
+ }
159
+
160
+ // if we're in a derived, add the effect there too
161
+ if (
162
+ active_reaction !== null &&
163
+ (active_reaction.f & DERIVED) !== 0 &&
164
+ (type & ROOT_EFFECT) === 0
165
+ ) {
166
+ var derived = /** @type {Derived} */ (active_reaction);
167
+ (derived.effects ??= []).push(e);
168
+ }
169
+ }
170
+
171
+ return effect;
172
+ }
173
+
174
+ /**
175
+ * Internal representation of `$effect.tracking()`
176
+ * @returns {boolean}
177
+ */
178
+ export function effect_tracking() {
179
+ return active_reaction !== null && !untracking;
180
+ }
181
+
182
+ /**
183
+ * @param {() => void} fn
184
+ */
185
+ export function teardown(fn) {
186
+ const effect = create_effect(RENDER_EFFECT, null, false);
187
+ set_signal_status(effect, CLEAN);
188
+ effect.teardown = fn;
189
+ return effect;
190
+ }
191
+
192
+ /**
193
+ * Internal representation of `$effect(...)`
194
+ * @param {() => void | (() => void)} fn
195
+ */
196
+ export function user_effect(fn) {
197
+ validate_effect('$effect');
198
+
199
+ if (DEV) {
200
+ define_property(fn, 'name', {
201
+ value: '$effect'
202
+ });
203
+ }
204
+
205
+ // Non-nested `$effect(...)` in a component should be deferred
206
+ // until the component is mounted
207
+ var flags = /** @type {Effect} */ (active_effect).f;
208
+ var defer = !active_reaction && (flags & BRANCH_EFFECT) !== 0 && (flags & REACTION_RAN) === 0;
209
+
210
+ if (defer) {
211
+ // Top-level `$effect(...)` in an unmounted component — defer until mount
212
+ var context = /** @type {ComponentContext} */ (component_context);
213
+ (context.e ??= []).push(fn);
214
+ } else {
215
+ // Everything else — create immediately
216
+ return create_user_effect(fn);
217
+ }
218
+ }
219
+
220
+ /**
221
+ * @param {() => void | (() => void)} fn
222
+ */
223
+ export function create_user_effect(fn) {
224
+ return create_effect(EFFECT | USER_EFFECT, fn, false);
225
+ }
226
+
227
+ /**
228
+ * Internal representation of `$effect.pre(...)`
229
+ * @param {() => void | (() => void)} fn
230
+ * @returns {Effect}
231
+ */
232
+ export function user_pre_effect(fn) {
233
+ validate_effect('$effect.pre');
234
+ if (DEV) {
235
+ define_property(fn, 'name', {
236
+ value: '$effect.pre'
237
+ });
238
+ }
239
+ return create_effect(RENDER_EFFECT | USER_EFFECT, fn, true);
240
+ }
241
+
242
+ /** @param {() => void | (() => void)} fn */
243
+ export function eager_effect(fn) {
244
+ return create_effect(EAGER_EFFECT, fn, true);
245
+ }
246
+
247
+ /**
248
+ * Internal representation of `$effect.root(...)`
249
+ * @param {() => void | (() => void)} fn
250
+ * @returns {() => void}
251
+ */
252
+ export function effect_root(fn) {
253
+ Batch.ensure();
254
+ const effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);
255
+
256
+ return () => {
257
+ destroy_effect(effect);
258
+ };
259
+ }
260
+
261
+ /**
262
+ * An effect root whose children can transition out
263
+ * @param {() => void} fn
264
+ * @returns {(options?: { outro?: boolean }) => Promise<void>}
265
+ */
266
+ export function component_root(fn) {
267
+ Batch.ensure();
268
+ const effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);
269
+
270
+ return (options = {}) => {
271
+ return new Promise((fulfil) => {
272
+ if (options.outro) {
273
+ pause_effect(effect, () => {
274
+ destroy_effect(effect);
275
+ fulfil(undefined);
276
+ });
277
+ } else {
278
+ destroy_effect(effect);
279
+ fulfil(undefined);
280
+ }
281
+ });
282
+ };
283
+ }
284
+
285
+ /**
286
+ * @param {() => void | (() => void)} fn
287
+ * @returns {Effect}
288
+ */
289
+ export function effect(fn) {
290
+ return create_effect(EFFECT, fn, false);
291
+ }
292
+
293
+ /**
294
+ * Internal representation of `$: ..`
295
+ * @param {() => any} deps
296
+ * @param {() => void | (() => void)} fn
297
+ */
298
+ export function legacy_pre_effect(deps, fn) {
299
+ var context = /** @type {ComponentContextLegacy} */ (component_context);
300
+
301
+ /** @type {{ effect: null | Effect, ran: boolean, deps: () => any }} */
302
+ var token = { effect: null, ran: false, deps };
303
+
304
+ context.l.$.push(token);
305
+
306
+ token.effect = render_effect(() => {
307
+ deps();
308
+
309
+ // If this legacy pre effect has already run before the end of the reset, then
310
+ // bail out to emulate the same behavior.
311
+ if (token.ran) return;
312
+
313
+ token.ran = true;
314
+ untrack(fn);
315
+ });
316
+ }
317
+
318
+ export function legacy_pre_effect_reset() {
319
+ var context = /** @type {ComponentContextLegacy} */ (component_context);
320
+
321
+ render_effect(() => {
322
+ // Run dirty `$:` statements
323
+ for (var token of context.l.$) {
324
+ token.deps();
325
+
326
+ var effect = token.effect;
327
+
328
+ // If the effect is CLEAN, then make it MAYBE_DIRTY. This ensures we traverse through
329
+ // the effects dependencies and correctly ensure each dependency is up-to-date.
330
+ if ((effect.f & CLEAN) !== 0 && effect.deps !== null) {
331
+ set_signal_status(effect, MAYBE_DIRTY);
332
+ }
333
+
334
+ if (is_dirty(effect)) {
335
+ update_effect(effect);
336
+ }
337
+
338
+ token.ran = false;
339
+ }
340
+ });
341
+ }
342
+
343
+ /**
344
+ * @param {() => void | (() => void)} fn
345
+ * @returns {Effect}
346
+ */
347
+ export function async_effect(fn) {
348
+ return create_effect(ASYNC | EFFECT_PRESERVED, fn, true);
349
+ }
350
+
351
+ /**
352
+ * @param {() => void | (() => void)} fn
353
+ * @returns {Effect}
354
+ */
355
+ export function render_effect(fn, flags = 0) {
356
+ return create_effect(RENDER_EFFECT | flags, fn, true);
357
+ }
358
+
359
+ /**
360
+ * @param {(...expressions: any) => void | (() => void)} fn
361
+ * @param {Array<() => any>} sync
362
+ * @param {Array<() => Promise<any>>} async
363
+ * @param {Blocker[]} blockers
364
+ */
365
+ export function template_effect(fn, sync = [], async = [], blockers = []) {
366
+ flatten(blockers, sync, async, (values) => {
367
+ create_effect(RENDER_EFFECT, () => fn(...values.map(get)), true);
368
+ });
369
+ }
370
+
371
+ /**
372
+ * Like `template_effect`, but with an effect which is deferred until the batch commits
373
+ * @param {(...expressions: any) => void | (() => void)} fn
374
+ * @param {Array<() => any>} sync
375
+ * @param {Array<() => Promise<any>>} async
376
+ * @param {Blocker[]} blockers
377
+ */
378
+ export function deferred_template_effect(fn, sync = [], async = [], blockers = []) {
379
+ if (async.length > 0 || blockers.length > 0) {
380
+ var decrement_pending = increment_pending();
381
+ }
382
+
383
+ flatten(blockers, sync, async, (values) => {
384
+ create_effect(EFFECT, () => fn(...values.map(get)), false);
385
+
386
+ if (decrement_pending) {
387
+ decrement_pending();
388
+ }
389
+ });
390
+ }
391
+
392
+ /**
393
+ * @param {(() => void)} fn
394
+ * @param {number} flags
395
+ */
396
+ export function block(fn, flags = 0) {
397
+ var effect = create_effect(BLOCK_EFFECT | flags, fn, true);
398
+ if (DEV) {
399
+ effect.dev_stack = dev_stack;
400
+ }
401
+ return effect;
402
+ }
403
+
404
+ /**
405
+ * @param {(() => void)} fn
406
+ * @param {number} flags
407
+ */
408
+ export function managed(fn, flags = 0) {
409
+ var effect = create_effect(MANAGED_EFFECT | flags, fn, true);
410
+ if (DEV) {
411
+ effect.dev_stack = dev_stack;
412
+ }
413
+ return effect;
414
+ }
415
+
416
+ /**
417
+ * @param {(() => void)} fn
418
+ */
419
+ export function branch(fn) {
420
+ return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true);
421
+ }
422
+
423
+ /**
424
+ * @param {Effect} effect
425
+ */
426
+ export function execute_effect_teardown(effect) {
427
+ var teardown = effect.teardown;
428
+ if (teardown !== null) {
429
+ const previously_destroying_effect = is_destroying_effect;
430
+ const previous_reaction = active_reaction;
431
+ set_is_destroying_effect(true);
432
+ set_active_reaction(null);
433
+ try {
434
+ teardown.call(null);
435
+ } finally {
436
+ set_is_destroying_effect(previously_destroying_effect);
437
+ set_active_reaction(previous_reaction);
438
+ }
439
+ }
440
+ }
441
+
442
+ /**
443
+ * @param {Effect} signal
444
+ * @param {boolean} remove_dom
445
+ * @returns {void}
446
+ */
447
+ export function destroy_effect_children(signal, remove_dom = false) {
448
+ var effect = signal.first;
449
+ signal.first = signal.last = null;
450
+
451
+ while (effect !== null) {
452
+ const controller = effect.ac;
453
+
454
+ if (controller !== null) {
455
+ without_reactive_context(() => {
456
+ controller.abort(STALE_REACTION);
457
+ });
458
+ }
459
+
460
+ var next = effect.next;
461
+
462
+ if ((effect.f & ROOT_EFFECT) !== 0) {
463
+ // this is now an independent root
464
+ effect.parent = null;
465
+ } else {
466
+ destroy_effect(effect, remove_dom);
467
+ }
468
+
469
+ effect = next;
470
+ }
471
+ }
472
+
473
+ /**
474
+ * @param {Effect} signal
475
+ * @returns {void}
476
+ */
477
+ export function destroy_block_effect_children(signal) {
478
+ var effect = signal.first;
479
+
480
+ while (effect !== null) {
481
+ var next = effect.next;
482
+ if ((effect.f & BRANCH_EFFECT) === 0) {
483
+ destroy_effect(effect);
484
+ }
485
+ effect = next;
486
+ }
487
+ }
488
+
489
+ /**
490
+ * @param {Effect} effect
491
+ * @param {boolean} [remove_dom]
492
+ * @returns {void}
493
+ */
494
+ export function destroy_effect(effect, remove_dom = true) {
495
+ var removed = false;
496
+
497
+ if (
498
+ (remove_dom || (effect.f & HEAD_EFFECT) !== 0) &&
499
+ effect.nodes !== null &&
500
+ effect.nodes.end !== null
501
+ ) {
502
+ remove_effect_dom(effect.nodes.start, /** @type {TemplateNode} */ (effect.nodes.end));
503
+ removed = true;
504
+ }
505
+
506
+ destroy_effect_children(effect, remove_dom && !removed);
507
+ remove_reactions(effect, 0);
508
+ set_signal_status(effect, DESTROYED);
509
+
510
+ var transitions = effect.nodes && effect.nodes.t;
511
+
512
+ if (transitions !== null) {
513
+ for (const transition of transitions) {
514
+ transition.stop();
515
+ }
516
+ }
517
+
518
+ execute_effect_teardown(effect);
519
+
520
+ var parent = effect.parent;
521
+
522
+ // If the parent doesn't have any children, then skip this work altogether
523
+ if (parent !== null && parent.first !== null) {
524
+ unlink_effect(effect);
525
+ }
526
+
527
+ if (DEV) {
528
+ effect.component_function = null;
529
+ }
530
+
531
+ // `first` and `child` are nulled out in destroy_effect_children
532
+ // we don't null out `parent` so that error propagation can work correctly
533
+ effect.next =
534
+ effect.prev =
535
+ effect.teardown =
536
+ effect.ctx =
537
+ effect.deps =
538
+ effect.fn =
539
+ effect.nodes =
540
+ effect.ac =
541
+ null;
542
+ }
543
+
544
+ /**
545
+ *
546
+ * @param {TemplateNode | null} node
547
+ * @param {TemplateNode} end
548
+ */
549
+ export function remove_effect_dom(node, end) {
550
+ while (node !== null) {
551
+ /** @type {TemplateNode | null} */
552
+ var next = node === end ? null : get_next_sibling(node);
553
+
554
+ node.remove();
555
+ node = next;
556
+ }
557
+ }
558
+
559
+ /**
560
+ * Detach an effect from the effect tree, freeing up memory and
561
+ * reducing the amount of work that happens on subsequent traversals
562
+ * @param {Effect} effect
563
+ */
564
+ export function unlink_effect(effect) {
565
+ var parent = effect.parent;
566
+ var prev = effect.prev;
567
+ var next = effect.next;
568
+
569
+ if (prev !== null) prev.next = next;
570
+ if (next !== null) next.prev = prev;
571
+
572
+ if (parent !== null) {
573
+ if (parent.first === effect) parent.first = next;
574
+ if (parent.last === effect) parent.last = prev;
575
+ }
576
+ }
577
+
578
+ /**
579
+ * When a block effect is removed, we don't immediately destroy it or yank it
580
+ * out of the DOM, because it might have transitions. Instead, we 'pause' it.
581
+ * It stays around (in memory, and in the DOM) until outro transitions have
582
+ * completed, and if the state change is reversed then we _resume_ it.
583
+ * A paused effect does not update, and the DOM subtree becomes inert.
584
+ * @param {Effect} effect
585
+ * @param {() => void} [callback]
586
+ * @param {boolean} [destroy]
587
+ */
588
+ export function pause_effect(effect, callback, destroy = true) {
589
+ /** @type {TransitionManager[]} */
590
+ var transitions = [];
591
+
592
+ pause_children(effect, transitions, true);
593
+
594
+ var fn = () => {
595
+ if (destroy) destroy_effect(effect);
596
+ if (callback) callback();
597
+ };
598
+
599
+ var remaining = transitions.length;
600
+ if (remaining > 0) {
601
+ var check = () => --remaining || fn();
602
+ for (var transition of transitions) {
603
+ transition.out(check);
604
+ }
605
+ } else {
606
+ fn();
607
+ }
608
+ }
609
+
610
+ /**
611
+ * @param {Effect} effect
612
+ * @param {TransitionManager[]} transitions
613
+ * @param {boolean} local
614
+ */
615
+ function pause_children(effect, transitions, local) {
616
+ if ((effect.f & INERT) !== 0) return;
617
+ effect.f ^= INERT;
618
+
619
+ var t = effect.nodes && effect.nodes.t;
620
+
621
+ if (t !== null) {
622
+ for (const transition of t) {
623
+ if (transition.is_global || local) {
624
+ transitions.push(transition);
625
+ }
626
+ }
627
+ }
628
+
629
+ var child = effect.first;
630
+
631
+ while (child !== null) {
632
+ var sibling = child.next;
633
+ var transparent =
634
+ (child.f & EFFECT_TRANSPARENT) !== 0 ||
635
+ // If this is a branch effect without a block effect parent,
636
+ // it means the parent block effect was pruned. In that case,
637
+ // transparency information was transferred to the branch effect.
638
+ ((child.f & BRANCH_EFFECT) !== 0 && (effect.f & BLOCK_EFFECT) !== 0);
639
+ // TODO we don't need to call pause_children recursively with a linked list in place
640
+ // it's slightly more involved though as we have to account for `transparent` changing
641
+ // through the tree.
642
+ pause_children(child, transitions, transparent ? local : false);
643
+ child = sibling;
644
+ }
645
+ }
646
+
647
+ /**
648
+ * The opposite of `pause_effect`. We call this if (for example)
649
+ * `x` becomes falsy then truthy: `{#if x}...{/if}`
650
+ * @param {Effect} effect
651
+ */
652
+ export function resume_effect(effect) {
653
+ resume_children(effect, true);
654
+ }
655
+
656
+ /**
657
+ * @param {Effect} effect
658
+ * @param {boolean} local
659
+ */
660
+ function resume_children(effect, local) {
661
+ if ((effect.f & INERT) === 0) return;
662
+ effect.f ^= INERT;
663
+
664
+ // If a dependency of this effect changed while it was paused,
665
+ // schedule the effect to update. we don't use `is_dirty`
666
+ // here because we don't want to eagerly recompute a derived like
667
+ // `{#if foo}{foo.bar()}{/if}` if `foo` is now `undefined
668
+ if ((effect.f & CLEAN) === 0) {
669
+ set_signal_status(effect, DIRTY);
670
+ schedule_effect(effect);
671
+ }
672
+
673
+ var child = effect.first;
674
+
675
+ while (child !== null) {
676
+ var sibling = child.next;
677
+ var transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_EFFECT) !== 0;
678
+ // TODO we don't need to call resume_children recursively with a linked list in place
679
+ // it's slightly more involved though as we have to account for `transparent` changing
680
+ // through the tree.
681
+ resume_children(child, transparent ? local : false);
682
+ child = sibling;
683
+ }
684
+
685
+ var t = effect.nodes && effect.nodes.t;
686
+
687
+ if (t !== null) {
688
+ for (const transition of t) {
689
+ if (transition.is_global || local) {
690
+ transition.in();
691
+ }
692
+ }
693
+ }
694
+ }
695
+
696
+ export function aborted(effect = /** @type {Effect} */ (active_effect)) {
697
+ return (effect.f & DESTROYED) !== 0;
698
+ }
699
+
700
+ /**
701
+ * @param {Effect} effect
702
+ * @param {DocumentFragment} fragment
703
+ */
704
+ export function move_effect(effect, fragment) {
705
+ if (!effect.nodes) return;
706
+
707
+ /** @type {TemplateNode | null} */
708
+ var node = effect.nodes.start;
709
+ var end = effect.nodes.end;
710
+
711
+ while (node !== null) {
712
+ /** @type {TemplateNode | null} */
713
+ var next = node === end ? null : get_next_sibling(node);
714
+
715
+ fragment.append(node);
716
+ node = next;
717
+ }
718
+ }