@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.
- package/LICENSE.md +7 -0
- package/README.md +41 -0
- package/action.d.ts +1 -0
- package/animate.d.ts +1 -0
- package/compiler/index.js +1 -0
- package/compiler/package.json +3 -0
- package/compiler.d.ts +1 -0
- package/easing.d.ts +1 -0
- package/elements.d.ts +2078 -0
- package/index.d.ts +1 -0
- package/legacy.d.ts +1 -0
- package/motion.d.ts +1 -0
- package/package.json +185 -0
- package/src/animate/index.js +78 -0
- package/src/attachments/index.js +113 -0
- package/src/compiler/errors.js +1719 -0
- package/src/compiler/index.js +198 -0
- package/src/compiler/legacy.js +637 -0
- package/src/compiler/migrate/index.js +1996 -0
- package/src/compiler/phases/1-parse/acorn.js +198 -0
- package/src/compiler/phases/1-parse/index.js +326 -0
- package/src/compiler/phases/1-parse/read/context.js +116 -0
- package/src/compiler/phases/1-parse/read/expression.js +93 -0
- package/src/compiler/phases/1-parse/read/options.js +263 -0
- package/src/compiler/phases/1-parse/read/script.js +97 -0
- package/src/compiler/phases/1-parse/read/style.js +637 -0
- package/src/compiler/phases/1-parse/remove_typescript_nodes.js +180 -0
- package/src/compiler/phases/1-parse/state/element.js +937 -0
- package/src/compiler/phases/1-parse/state/fragment.js +17 -0
- package/src/compiler/phases/1-parse/state/tag.js +751 -0
- package/src/compiler/phases/1-parse/state/text.js +23 -0
- package/src/compiler/phases/1-parse/utils/bracket.js +213 -0
- package/src/compiler/phases/1-parse/utils/create.js +16 -0
- package/src/compiler/phases/1-parse/utils/entities.js +2234 -0
- package/src/compiler/phases/1-parse/utils/fuzzymatch.js +281 -0
- package/src/compiler/phases/1-parse/utils/html.js +127 -0
- package/src/compiler/phases/2-analyze/css/css-analyze.js +331 -0
- package/src/compiler/phases/2-analyze/css/css-prune.js +1206 -0
- package/src/compiler/phases/2-analyze/css/css-warn.js +47 -0
- package/src/compiler/phases/2-analyze/css/utils.js +177 -0
- package/src/compiler/phases/2-analyze/index.js +1300 -0
- package/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js +47 -0
- package/src/compiler/phases/2-analyze/visitors/AnimateDirective.js +15 -0
- package/src/compiler/phases/2-analyze/visitors/ArrowFunctionExpression.js +11 -0
- package/src/compiler/phases/2-analyze/visitors/AssignmentExpression.js +31 -0
- package/src/compiler/phases/2-analyze/visitors/AttachTag.js +17 -0
- package/src/compiler/phases/2-analyze/visitors/Attribute.js +66 -0
- package/src/compiler/phases/2-analyze/visitors/AwaitBlock.js +48 -0
- package/src/compiler/phases/2-analyze/visitors/AwaitExpression.js +150 -0
- package/src/compiler/phases/2-analyze/visitors/BindDirective.js +280 -0
- package/src/compiler/phases/2-analyze/visitors/CallExpression.js +339 -0
- package/src/compiler/phases/2-analyze/visitors/ClassBody.js +156 -0
- package/src/compiler/phases/2-analyze/visitors/ClassDeclaration.js +25 -0
- package/src/compiler/phases/2-analyze/visitors/ClassDirective.js +13 -0
- package/src/compiler/phases/2-analyze/visitors/Component.js +26 -0
- package/src/compiler/phases/2-analyze/visitors/ConstTag.js +45 -0
- package/src/compiler/phases/2-analyze/visitors/DebugTag.js +15 -0
- package/src/compiler/phases/2-analyze/visitors/EachBlock.js +97 -0
- package/src/compiler/phases/2-analyze/visitors/ExportDefaultDeclaration.js +20 -0
- package/src/compiler/phases/2-analyze/visitors/ExportNamedDeclaration.js +70 -0
- package/src/compiler/phases/2-analyze/visitors/ExportSpecifier.js +30 -0
- package/src/compiler/phases/2-analyze/visitors/ExpressionStatement.js +38 -0
- package/src/compiler/phases/2-analyze/visitors/ExpressionTag.js +26 -0
- package/src/compiler/phases/2-analyze/visitors/Fragment.js +10 -0
- package/src/compiler/phases/2-analyze/visitors/FunctionDeclaration.js +16 -0
- package/src/compiler/phases/2-analyze/visitors/FunctionExpression.js +11 -0
- package/src/compiler/phases/2-analyze/visitors/HtmlTag.js +19 -0
- package/src/compiler/phases/2-analyze/visitors/Identifier.js +194 -0
- package/src/compiler/phases/2-analyze/visitors/IfBlock.js +46 -0
- package/src/compiler/phases/2-analyze/visitors/ImportDeclaration.js +31 -0
- package/src/compiler/phases/2-analyze/visitors/KeyBlock.js +21 -0
- package/src/compiler/phases/2-analyze/visitors/LabeledStatement.js +95 -0
- package/src/compiler/phases/2-analyze/visitors/LetDirective.js +24 -0
- package/src/compiler/phases/2-analyze/visitors/Literal.js +14 -0
- package/src/compiler/phases/2-analyze/visitors/MemberExpression.js +28 -0
- package/src/compiler/phases/2-analyze/visitors/NewExpression.js +17 -0
- package/src/compiler/phases/2-analyze/visitors/OnDirective.js +28 -0
- package/src/compiler/phases/2-analyze/visitors/PropertyDefinition.js +21 -0
- package/src/compiler/phases/2-analyze/visitors/RegularElement.js +240 -0
- package/src/compiler/phases/2-analyze/visitors/RenderTag.js +68 -0
- package/src/compiler/phases/2-analyze/visitors/SlotElement.js +42 -0
- package/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +113 -0
- package/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js +13 -0
- package/src/compiler/phases/2-analyze/visitors/SpreadElement.js +16 -0
- package/src/compiler/phases/2-analyze/visitors/StyleDirective.js +39 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteBody.js +22 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js +30 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteComponent.js +18 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +24 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteElement.js +78 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteFragment.js +27 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteHead.js +18 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteSelf.js +36 -0
- package/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +24 -0
- package/src/compiler/phases/2-analyze/visitors/TaggedTemplateExpression.js +16 -0
- package/src/compiler/phases/2-analyze/visitors/TemplateElement.js +12 -0
- package/src/compiler/phases/2-analyze/visitors/Text.js +52 -0
- package/src/compiler/phases/2-analyze/visitors/TitleElement.js +21 -0
- package/src/compiler/phases/2-analyze/visitors/TransitionDirective.js +19 -0
- package/src/compiler/phases/2-analyze/visitors/UpdateExpression.js +29 -0
- package/src/compiler/phases/2-analyze/visitors/UseDirective.js +18 -0
- package/src/compiler/phases/2-analyze/visitors/VariableDeclarator.js +160 -0
- package/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js +334 -0
- package/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +981 -0
- package/src/compiler/phases/2-analyze/visitors/shared/attribute.js +125 -0
- package/src/compiler/phases/2-analyze/visitors/shared/component.js +177 -0
- package/src/compiler/phases/2-analyze/visitors/shared/element.js +160 -0
- package/src/compiler/phases/2-analyze/visitors/shared/fragment.js +15 -0
- package/src/compiler/phases/2-analyze/visitors/shared/function.js +24 -0
- package/src/compiler/phases/2-analyze/visitors/shared/snippets.js +17 -0
- package/src/compiler/phases/2-analyze/visitors/shared/special-element.js +16 -0
- package/src/compiler/phases/2-analyze/visitors/shared/utils.js +301 -0
- package/src/compiler/phases/3-transform/client/transform-client.js +719 -0
- package/src/compiler/phases/3-transform/client/transform-template/fix-attribute-casing.js +18 -0
- package/src/compiler/phases/3-transform/client/transform-template/index.js +67 -0
- package/src/compiler/phases/3-transform/client/transform-template/template.js +164 -0
- package/src/compiler/phases/3-transform/client/utils.js +181 -0
- package/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js +38 -0
- package/src/compiler/phases/3-transform/client/visitors/ArrowFunctionExpression.js +11 -0
- package/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js +247 -0
- package/src/compiler/phases/3-transform/client/visitors/AttachTag.js +26 -0
- package/src/compiler/phases/3-transform/client/visitors/Attribute.js +14 -0
- package/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js +124 -0
- package/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js +25 -0
- package/src/compiler/phases/3-transform/client/visitors/BinaryExpression.js +34 -0
- package/src/compiler/phases/3-transform/client/visitors/BindDirective.js +290 -0
- package/src/compiler/phases/3-transform/client/visitors/BlockStatement.js +32 -0
- package/src/compiler/phases/3-transform/client/visitors/BreakStatement.js +20 -0
- package/src/compiler/phases/3-transform/client/visitors/CallExpression.js +136 -0
- package/src/compiler/phases/3-transform/client/visitors/ClassBody.js +111 -0
- package/src/compiler/phases/3-transform/client/visitors/Comment.js +11 -0
- package/src/compiler/phases/3-transform/client/visitors/Component.js +12 -0
- package/src/compiler/phases/3-transform/client/visitors/ConstTag.js +134 -0
- package/src/compiler/phases/3-transform/client/visitors/DebugTag.js +28 -0
- package/src/compiler/phases/3-transform/client/visitors/EachBlock.js +362 -0
- package/src/compiler/phases/3-transform/client/visitors/ExportNamedDeclaration.js +19 -0
- package/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js +20 -0
- package/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js +25 -0
- package/src/compiler/phases/3-transform/client/visitors/Fragment.js +186 -0
- package/src/compiler/phases/3-transform/client/visitors/FunctionDeclaration.js +12 -0
- package/src/compiler/phases/3-transform/client/visitors/FunctionExpression.js +11 -0
- package/src/compiler/phases/3-transform/client/visitors/HtmlTag.js +53 -0
- package/src/compiler/phases/3-transform/client/visitors/Identifier.js +45 -0
- package/src/compiler/phases/3-transform/client/visitors/IfBlock.js +131 -0
- package/src/compiler/phases/3-transform/client/visitors/KeyBlock.js +45 -0
- package/src/compiler/phases/3-transform/client/visitors/LabeledStatement.js +64 -0
- package/src/compiler/phases/3-transform/client/visitors/LetDirective.js +55 -0
- package/src/compiler/phases/3-transform/client/visitors/MemberExpression.js +23 -0
- package/src/compiler/phases/3-transform/client/visitors/OnDirective.js +38 -0
- package/src/compiler/phases/3-transform/client/visitors/Program.js +153 -0
- package/src/compiler/phases/3-transform/client/visitors/RegularElement.js +725 -0
- package/src/compiler/phases/3-transform/client/visitors/RenderTag.js +95 -0
- package/src/compiler/phases/3-transform/client/visitors/SlotElement.js +94 -0
- package/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js +94 -0
- package/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js +10 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteBody.js +11 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteBoundary.js +126 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js +13 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js +11 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +161 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js +17 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteHead.js +23 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js +13 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js +11 -0
- package/src/compiler/phases/3-transform/client/visitors/TitleElement.js +48 -0
- package/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js +41 -0
- package/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js +55 -0
- package/src/compiler/phases/3-transform/client/visitors/UseDirective.js +49 -0
- package/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +422 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/component.js +536 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/declarations.js +53 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/element.js +263 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/events.js +180 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +185 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/function.js +17 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/special_element.js +22 -0
- package/src/compiler/phases/3-transform/client/visitors/shared/utils.js +513 -0
- package/src/compiler/phases/3-transform/css/index.js +479 -0
- package/src/compiler/phases/3-transform/index.js +118 -0
- package/src/compiler/phases/3-transform/server/transform-server.js +428 -0
- package/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js +124 -0
- package/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js +36 -0
- package/src/compiler/phases/3-transform/server/visitors/AwaitExpression.js +40 -0
- package/src/compiler/phases/3-transform/server/visitors/CallExpression.js +71 -0
- package/src/compiler/phases/3-transform/server/visitors/ClassBody.js +81 -0
- package/src/compiler/phases/3-transform/server/visitors/Component.js +13 -0
- package/src/compiler/phases/3-transform/server/visitors/ConstTag.js +49 -0
- package/src/compiler/phases/3-transform/server/visitors/DebugTag.js +24 -0
- package/src/compiler/phases/3-transform/server/visitors/EachBlock.js +76 -0
- package/src/compiler/phases/3-transform/server/visitors/ExpressionStatement.js +23 -0
- package/src/compiler/phases/3-transform/server/visitors/Fragment.js +53 -0
- package/src/compiler/phases/3-transform/server/visitors/HtmlTag.js +25 -0
- package/src/compiler/phases/3-transform/server/visitors/Identifier.js +24 -0
- package/src/compiler/phases/3-transform/server/visitors/IfBlock.js +48 -0
- package/src/compiler/phases/3-transform/server/visitors/KeyBlock.js +22 -0
- package/src/compiler/phases/3-transform/server/visitors/LabeledStatement.js +24 -0
- package/src/compiler/phases/3-transform/server/visitors/MemberExpression.js +19 -0
- package/src/compiler/phases/3-transform/server/visitors/Program.js +25 -0
- package/src/compiler/phases/3-transform/server/visitors/PropertyDefinition.js +37 -0
- package/src/compiler/phases/3-transform/server/visitors/RegularElement.js +216 -0
- package/src/compiler/phases/3-transform/server/visitors/RenderTag.js +45 -0
- package/src/compiler/phases/3-transform/server/visitors/SlotElement.js +68 -0
- package/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js +29 -0
- package/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js +10 -0
- package/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js +139 -0
- package/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js +12 -0
- package/src/compiler/phases/3-transform/server/visitors/SvelteElement.js +89 -0
- package/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js +11 -0
- package/src/compiler/phases/3-transform/server/visitors/SvelteHead.js +25 -0
- package/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js +12 -0
- package/src/compiler/phases/3-transform/server/visitors/TitleElement.js +21 -0
- package/src/compiler/phases/3-transform/server/visitors/UpdateExpression.js +35 -0
- package/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js +247 -0
- package/src/compiler/phases/3-transform/server/visitors/shared/component.js +359 -0
- package/src/compiler/phases/3-transform/server/visitors/shared/element.js +557 -0
- package/src/compiler/phases/3-transform/server/visitors/shared/utils.js +408 -0
- package/src/compiler/phases/3-transform/shared/assignments.js +92 -0
- package/src/compiler/phases/3-transform/shared/transform-async.js +114 -0
- package/src/compiler/phases/3-transform/utils.js +451 -0
- package/src/compiler/phases/bindings.js +227 -0
- package/src/compiler/phases/css.js +14 -0
- package/src/compiler/phases/nodes.js +258 -0
- package/src/compiler/phases/patterns.js +27 -0
- package/src/compiler/phases/scope.js +1432 -0
- package/src/compiler/preprocess/decode_sourcemap.js +96 -0
- package/src/compiler/preprocess/index.js +368 -0
- package/src/compiler/preprocess/replace_in_code.js +72 -0
- package/src/compiler/print/index.js +911 -0
- package/src/compiler/state.js +144 -0
- package/src/compiler/utils/assert.js +9 -0
- package/src/compiler/utils/ast.js +639 -0
- package/src/compiler/utils/builders.js +698 -0
- package/src/compiler/utils/compile_diagnostic.js +107 -0
- package/src/compiler/utils/extract_svelte_ignore.js +104 -0
- package/src/compiler/utils/mapped_code.js +454 -0
- package/src/compiler/utils/push_array.js +13 -0
- package/src/compiler/utils/sanitize_template_string.js +7 -0
- package/src/compiler/utils/slot.js +20 -0
- package/src/compiler/utils/string.js +9 -0
- package/src/compiler/validate-options.js +324 -0
- package/src/compiler/warnings.js +845 -0
- package/src/constants.js +66 -0
- package/src/easing/index.js +286 -0
- package/src/escaping.js +26 -0
- package/src/events/index.js +1 -0
- package/src/html-tree-validation.js +238 -0
- package/src/index-client.js +255 -0
- package/src/index-server.js +56 -0
- package/src/internal/client/constants.js +77 -0
- package/src/internal/client/context.js +258 -0
- package/src/internal/client/dev/assign.js +79 -0
- package/src/internal/client/dev/console-log.js +37 -0
- package/src/internal/client/dev/css.js +31 -0
- package/src/internal/client/dev/debug.js +500 -0
- package/src/internal/client/dev/elements.js +63 -0
- package/src/internal/client/dev/equality.js +101 -0
- package/src/internal/client/dev/hmr.js +89 -0
- package/src/internal/client/dev/inspect.js +72 -0
- package/src/internal/client/dev/legacy.js +25 -0
- package/src/internal/client/dev/ownership.js +81 -0
- package/src/internal/client/dev/tracing.js +162 -0
- package/src/internal/client/dev/validation.js +16 -0
- package/src/internal/client/dom/blocks/async.js +71 -0
- package/src/internal/client/dom/blocks/await.js +142 -0
- package/src/internal/client/dom/blocks/boundary.js +534 -0
- package/src/internal/client/dom/blocks/branches.js +227 -0
- package/src/internal/client/dom/blocks/css-props.js +28 -0
- package/src/internal/client/dom/blocks/each.js +723 -0
- package/src/internal/client/dom/blocks/html.js +128 -0
- package/src/internal/client/dom/blocks/if.js +82 -0
- package/src/internal/client/dom/blocks/key.js +40 -0
- package/src/internal/client/dom/blocks/slot.js +44 -0
- package/src/internal/client/dom/blocks/snippet.js +103 -0
- package/src/internal/client/dom/blocks/svelte-component.js +61 -0
- package/src/internal/client/dom/blocks/svelte-element.js +152 -0
- package/src/internal/client/dom/blocks/svelte-head.js +61 -0
- package/src/internal/client/dom/css.js +33 -0
- package/src/internal/client/dom/elements/actions.js +43 -0
- package/src/internal/client/dom/elements/attachments.js +33 -0
- package/src/internal/client/dom/elements/attributes.js +657 -0
- package/src/internal/client/dom/elements/bindings/document.js +17 -0
- package/src/internal/client/dom/elements/bindings/input.js +312 -0
- package/src/internal/client/dom/elements/bindings/media.js +233 -0
- package/src/internal/client/dom/elements/bindings/navigator.js +11 -0
- package/src/internal/client/dom/elements/bindings/props.js +22 -0
- package/src/internal/client/dom/elements/bindings/select.js +159 -0
- package/src/internal/client/dom/elements/bindings/shared.js +76 -0
- package/src/internal/client/dom/elements/bindings/size.js +107 -0
- package/src/internal/client/dom/elements/bindings/this.js +61 -0
- package/src/internal/client/dom/elements/bindings/universal.js +75 -0
- package/src/internal/client/dom/elements/bindings/window.js +66 -0
- package/src/internal/client/dom/elements/class.js +51 -0
- package/src/internal/client/dom/elements/custom-element.js +344 -0
- package/src/internal/client/dom/elements/customizable-select.js +99 -0
- package/src/internal/client/dom/elements/events.js +355 -0
- package/src/internal/client/dom/elements/misc.js +58 -0
- package/src/internal/client/dom/elements/style.js +57 -0
- package/src/internal/client/dom/elements/transitions.js +471 -0
- package/src/internal/client/dom/hydration.js +125 -0
- package/src/internal/client/dom/legacy/event-modifiers.js +127 -0
- package/src/internal/client/dom/legacy/lifecycle.js +82 -0
- package/src/internal/client/dom/legacy/misc.js +68 -0
- package/src/internal/client/dom/operations.js +293 -0
- package/src/internal/client/dom/reconciler.js +25 -0
- package/src/internal/client/dom/task.js +42 -0
- package/src/internal/client/dom/template.js +401 -0
- package/src/internal/client/error-handling.js +118 -0
- package/src/internal/client/errors.js +510 -0
- package/src/internal/client/hydratable.js +33 -0
- package/src/internal/client/index.js +183 -0
- package/src/internal/client/legacy.js +46 -0
- package/src/internal/client/loop.js +48 -0
- package/src/internal/client/proxy.js +432 -0
- package/src/internal/client/reactivity/async.js +306 -0
- package/src/internal/client/reactivity/batch.js +1057 -0
- package/src/internal/client/reactivity/deriveds.js +426 -0
- package/src/internal/client/reactivity/effects.js +718 -0
- package/src/internal/client/reactivity/equality.js +31 -0
- package/src/internal/client/reactivity/props.js +430 -0
- package/src/internal/client/reactivity/sources.js +370 -0
- package/src/internal/client/reactivity/status.js +25 -0
- package/src/internal/client/reactivity/store.js +203 -0
- package/src/internal/client/reactivity/utils.js +40 -0
- package/src/internal/client/render.js +335 -0
- package/src/internal/client/runtime.js +827 -0
- package/src/internal/client/timing.js +16 -0
- package/src/internal/client/validate.js +54 -0
- package/src/internal/client/warnings.js +271 -0
- package/src/internal/disclose-version.js +6 -0
- package/src/internal/flags/async.js +3 -0
- package/src/internal/flags/index.js +23 -0
- package/src/internal/flags/legacy.js +3 -0
- package/src/internal/flags/tracing.js +3 -0
- package/src/internal/index.js +5 -0
- package/src/internal/server/abort-signal.js +13 -0
- package/src/internal/server/blocks/html.js +11 -0
- package/src/internal/server/blocks/snippet.js +24 -0
- package/src/internal/server/context.js +132 -0
- package/src/internal/server/crypto.js +45 -0
- package/src/internal/server/dev.js +115 -0
- package/src/internal/server/errors.js +131 -0
- package/src/internal/server/hydratable.js +142 -0
- package/src/internal/server/hydration.js +6 -0
- package/src/internal/server/index.js +544 -0
- package/src/internal/server/render-context.js +86 -0
- package/src/internal/server/renderer.js +923 -0
- package/src/internal/server/warnings.js +29 -0
- package/src/internal/shared/attributes.js +225 -0
- package/src/internal/shared/clone.js +137 -0
- package/src/internal/shared/dev.js +65 -0
- package/src/internal/shared/errors.js +134 -0
- package/src/internal/shared/utils.js +144 -0
- package/src/internal/shared/validate.js +47 -0
- package/src/internal/shared/warnings.js +40 -0
- package/src/legacy/legacy-client.js +281 -0
- package/src/legacy/legacy-server.js +112 -0
- package/src/motion/index.js +32 -0
- package/src/motion/spring.js +369 -0
- package/src/motion/tweened.js +306 -0
- package/src/motion/utils.js +7 -0
- package/src/reactivity/create-subscriber.js +95 -0
- package/src/reactivity/date.js +118 -0
- package/src/reactivity/index-client.js +7 -0
- package/src/reactivity/index-server.js +23 -0
- package/src/reactivity/map.js +273 -0
- package/src/reactivity/media-query.js +55 -0
- package/src/reactivity/reactive-value.js +24 -0
- package/src/reactivity/set.js +213 -0
- package/src/reactivity/url-search-params.js +174 -0
- package/src/reactivity/url.js +205 -0
- package/src/reactivity/window/index.js +161 -0
- package/src/server/index.js +1 -0
- package/src/store/index-client.js +169 -0
- package/src/store/index-server.js +101 -0
- package/src/store/shared/index.js +209 -0
- package/src/store/utils.js +36 -0
- package/src/transition/index.js +300 -0
- package/src/utils.js +504 -0
- package/src/version.js +8 -0
- package/store.d.ts +1 -0
- package/svelte-html.d.ts +245 -0
- package/transition.d.ts +1 -0
- package/types/compiler/interfaces.d.ts +1 -0
- package/types/compiler/preprocess.d.ts +1 -0
- package/types/index.d.ts +3744 -0
- package/types/index.d.ts.map +280 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { noop } from '../../../shared/utils.js';
|
|
2
|
+
import { user_pre_effect } from '../../reactivity/effects.js';
|
|
3
|
+
import { on } from '../elements/events.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Substitute for the `trusted` event modifier
|
|
7
|
+
* @deprecated
|
|
8
|
+
* @param {(event: Event, ...args: Array<unknown>) => void} fn
|
|
9
|
+
* @returns {(event: Event, ...args: unknown[]) => void}
|
|
10
|
+
*/
|
|
11
|
+
export function trusted(fn) {
|
|
12
|
+
return function (...args) {
|
|
13
|
+
var event = /** @type {Event} */ (args[0]);
|
|
14
|
+
if (event.isTrusted) {
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
fn?.apply(this, args);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Substitute for the `self` event modifier
|
|
23
|
+
* @deprecated
|
|
24
|
+
* @param {(event: Event, ...args: Array<unknown>) => void} fn
|
|
25
|
+
* @returns {(event: Event, ...args: unknown[]) => void}
|
|
26
|
+
*/
|
|
27
|
+
export function self(fn) {
|
|
28
|
+
return function (...args) {
|
|
29
|
+
var event = /** @type {Event} */ (args[0]);
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
if (event.target === this) {
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
fn?.apply(this, args);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Substitute for the `stopPropagation` event modifier
|
|
40
|
+
* @deprecated
|
|
41
|
+
* @param {(event: Event, ...args: Array<unknown>) => void} fn
|
|
42
|
+
* @returns {(event: Event, ...args: unknown[]) => void}
|
|
43
|
+
*/
|
|
44
|
+
export function stopPropagation(fn) {
|
|
45
|
+
return function (...args) {
|
|
46
|
+
var event = /** @type {Event} */ (args[0]);
|
|
47
|
+
event.stopPropagation();
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
return fn?.apply(this, args);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Substitute for the `once` event modifier
|
|
55
|
+
* @deprecated
|
|
56
|
+
* @param {(event: Event, ...args: Array<unknown>) => void} fn
|
|
57
|
+
* @returns {(event: Event, ...args: unknown[]) => void}
|
|
58
|
+
*/
|
|
59
|
+
export function once(fn) {
|
|
60
|
+
var ran = false;
|
|
61
|
+
|
|
62
|
+
return function (...args) {
|
|
63
|
+
if (ran) return;
|
|
64
|
+
ran = true;
|
|
65
|
+
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
return fn?.apply(this, args);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Substitute for the `stopImmediatePropagation` event modifier
|
|
73
|
+
* @deprecated
|
|
74
|
+
* @param {(event: Event, ...args: Array<unknown>) => void} fn
|
|
75
|
+
* @returns {(event: Event, ...args: unknown[]) => void}
|
|
76
|
+
*/
|
|
77
|
+
export function stopImmediatePropagation(fn) {
|
|
78
|
+
return function (...args) {
|
|
79
|
+
var event = /** @type {Event} */ (args[0]);
|
|
80
|
+
event.stopImmediatePropagation();
|
|
81
|
+
// @ts-ignore
|
|
82
|
+
return fn?.apply(this, args);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Substitute for the `preventDefault` event modifier
|
|
88
|
+
* @deprecated
|
|
89
|
+
* @param {(event: Event, ...args: Array<unknown>) => void} fn
|
|
90
|
+
* @returns {(event: Event, ...args: unknown[]) => void}
|
|
91
|
+
*/
|
|
92
|
+
export function preventDefault(fn) {
|
|
93
|
+
return function (...args) {
|
|
94
|
+
var event = /** @type {Event} */ (args[0]);
|
|
95
|
+
event.preventDefault();
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
return fn?.apply(this, args);
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Substitute for the `passive` event modifier, implemented as an action
|
|
103
|
+
* @deprecated
|
|
104
|
+
* @param {HTMLElement} node
|
|
105
|
+
* @param {[event: string, handler: () => EventListener]} options
|
|
106
|
+
*/
|
|
107
|
+
export function passive(node, [event, handler]) {
|
|
108
|
+
user_pre_effect(() => {
|
|
109
|
+
return on(node, event, handler() ?? noop, {
|
|
110
|
+
passive: true
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Substitute for the `nonpassive` event modifier, implemented as an action
|
|
117
|
+
* @deprecated
|
|
118
|
+
* @param {HTMLElement} node
|
|
119
|
+
* @param {[event: string, handler: () => EventListener]} options
|
|
120
|
+
*/
|
|
121
|
+
export function nonpassive(node, [event, handler]) {
|
|
122
|
+
user_pre_effect(() => {
|
|
123
|
+
return on(node, event, handler() ?? noop, {
|
|
124
|
+
passive: false
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/** @import { ComponentContextLegacy } from '#client' */
|
|
2
|
+
import { run, run_all } from '../../../shared/utils.js';
|
|
3
|
+
import { component_context } from '../../context.js';
|
|
4
|
+
import { derived } from '../../reactivity/deriveds.js';
|
|
5
|
+
import { user_pre_effect, user_effect } from '../../reactivity/effects.js';
|
|
6
|
+
import { deep_read_state, get, untrack } from '../../runtime.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Legacy-mode only: Call `onMount` callbacks and set up `beforeUpdate`/`afterUpdate` effects
|
|
10
|
+
* @param {boolean} [immutable]
|
|
11
|
+
*/
|
|
12
|
+
export function init(immutable = false) {
|
|
13
|
+
const context = /** @type {ComponentContextLegacy} */ (component_context);
|
|
14
|
+
|
|
15
|
+
const callbacks = context.l.u;
|
|
16
|
+
if (!callbacks) return;
|
|
17
|
+
|
|
18
|
+
let props = () => deep_read_state(context.s);
|
|
19
|
+
|
|
20
|
+
if (immutable) {
|
|
21
|
+
let version = 0;
|
|
22
|
+
let prev = /** @type {Record<string, any>} */ ({});
|
|
23
|
+
|
|
24
|
+
// In legacy immutable mode, before/afterUpdate only fire if the object identity of a prop changes
|
|
25
|
+
const d = derived(() => {
|
|
26
|
+
let changed = false;
|
|
27
|
+
const props = context.s;
|
|
28
|
+
for (const key in props) {
|
|
29
|
+
if (props[key] !== prev[key]) {
|
|
30
|
+
prev[key] = props[key];
|
|
31
|
+
changed = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (changed) version++;
|
|
35
|
+
return version;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
props = () => get(d);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// beforeUpdate
|
|
42
|
+
if (callbacks.b.length) {
|
|
43
|
+
user_pre_effect(() => {
|
|
44
|
+
observe_all(context, props);
|
|
45
|
+
run_all(callbacks.b);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// onMount (must run before afterUpdate)
|
|
50
|
+
user_effect(() => {
|
|
51
|
+
const fns = untrack(() => callbacks.m.map(run));
|
|
52
|
+
return () => {
|
|
53
|
+
for (const fn of fns) {
|
|
54
|
+
if (typeof fn === 'function') {
|
|
55
|
+
fn();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// afterUpdate
|
|
62
|
+
if (callbacks.a.length) {
|
|
63
|
+
user_effect(() => {
|
|
64
|
+
observe_all(context, props);
|
|
65
|
+
run_all(callbacks.a);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Invoke the getter of all signals associated with a component
|
|
72
|
+
* so they can be registered to the effect this function is called in.
|
|
73
|
+
* @param {ComponentContextLegacy} context
|
|
74
|
+
* @param {(() => void)} props
|
|
75
|
+
*/
|
|
76
|
+
function observe_all(context, props) {
|
|
77
|
+
if (context.l.s) {
|
|
78
|
+
for (const signal of context.l.s) get(signal);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
props();
|
|
82
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { set, source } from '../../reactivity/sources.js';
|
|
2
|
+
import { get } from '../../runtime.js';
|
|
3
|
+
import { is_array } from '../../../shared/utils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Under some circumstances, imports may be reactive in legacy mode. In that case,
|
|
7
|
+
* they should be using `reactive_import` as part of the transformation
|
|
8
|
+
* @param {() => any} fn
|
|
9
|
+
*/
|
|
10
|
+
export function reactive_import(fn) {
|
|
11
|
+
var s = source(0);
|
|
12
|
+
|
|
13
|
+
return function () {
|
|
14
|
+
if (arguments.length === 1) {
|
|
15
|
+
set(s, get(s) + 1);
|
|
16
|
+
return arguments[0];
|
|
17
|
+
} else {
|
|
18
|
+
get(s);
|
|
19
|
+
return fn();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @this {any}
|
|
26
|
+
* @param {Record<string, unknown>} $$props
|
|
27
|
+
* @param {Event} event
|
|
28
|
+
* @returns {void}
|
|
29
|
+
*/
|
|
30
|
+
export function bubble_event($$props, event) {
|
|
31
|
+
var events = /** @type {Record<string, Function[] | Function>} */ ($$props.$$events)?.[
|
|
32
|
+
event.type
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
var callbacks = is_array(events) ? events.slice() : events == null ? [] : [events];
|
|
36
|
+
|
|
37
|
+
for (var fn of callbacks) {
|
|
38
|
+
// Preserve "this" context
|
|
39
|
+
fn.call(this, event);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Used to simulate `$on` on a component instance when `compatibility.componentApi === 4`
|
|
45
|
+
* @param {Record<string, any>} $$props
|
|
46
|
+
* @param {string} event_name
|
|
47
|
+
* @param {Function} event_callback
|
|
48
|
+
*/
|
|
49
|
+
export function add_legacy_event_listener($$props, event_name, event_callback) {
|
|
50
|
+
$$props.$$events ||= {};
|
|
51
|
+
$$props.$$events[event_name] ||= [];
|
|
52
|
+
$$props.$$events[event_name].push(event_callback);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Used to simulate `$set` on a component instance when `compatibility.componentApi === 4`.
|
|
57
|
+
* Needs component accessors so that it can call the setter of the prop. Therefore doesn't
|
|
58
|
+
* work for updating props in `$$props` or `$$restProps`.
|
|
59
|
+
* @this {Record<string, any>}
|
|
60
|
+
* @param {Record<string, any>} $$new_props
|
|
61
|
+
*/
|
|
62
|
+
export function update_legacy_props($$new_props) {
|
|
63
|
+
for (var key in $$new_props) {
|
|
64
|
+
if (key in this) {
|
|
65
|
+
this[key] = $$new_props[key];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/** @import { Effect, TemplateNode } from '#client' */
|
|
2
|
+
import { hydrate_node, hydrating, set_hydrate_node } from './hydration.js';
|
|
3
|
+
import { DEV } from 'esm-env';
|
|
4
|
+
import { init_array_prototype_warnings } from '../dev/equality.js';
|
|
5
|
+
import { get_descriptor, is_extensible } from '../../shared/utils.js';
|
|
6
|
+
import { active_effect } from '../runtime.js';
|
|
7
|
+
import { async_mode_flag } from '../../flags/index.js';
|
|
8
|
+
import { TEXT_NODE, REACTION_RAN } from '#client/constants';
|
|
9
|
+
import { eager_block_effects } from '../reactivity/batch.js';
|
|
10
|
+
import { NAMESPACE_HTML } from '../../../constants.js';
|
|
11
|
+
|
|
12
|
+
// export these for reference in the compiled code, making global name deduplication unnecessary
|
|
13
|
+
/** @type {Window} */
|
|
14
|
+
export var $window;
|
|
15
|
+
|
|
16
|
+
/** @type {Document} */
|
|
17
|
+
export var $document;
|
|
18
|
+
|
|
19
|
+
/** @type {boolean} */
|
|
20
|
+
export var is_firefox;
|
|
21
|
+
|
|
22
|
+
/** @type {() => Node | null} */
|
|
23
|
+
var first_child_getter;
|
|
24
|
+
/** @type {() => Node | null} */
|
|
25
|
+
var next_sibling_getter;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Initialize these lazily to avoid issues when using the runtime in a server context
|
|
29
|
+
* where these globals are not available while avoiding a separate server entry point
|
|
30
|
+
*/
|
|
31
|
+
export function init_operations() {
|
|
32
|
+
if ($window !== undefined) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
$window = window;
|
|
37
|
+
$document = document;
|
|
38
|
+
is_firefox = /Firefox/.test(navigator.userAgent);
|
|
39
|
+
|
|
40
|
+
var element_prototype = Element.prototype;
|
|
41
|
+
var node_prototype = Node.prototype;
|
|
42
|
+
var text_prototype = Text.prototype;
|
|
43
|
+
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
first_child_getter = get_descriptor(node_prototype, 'firstChild').get;
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
next_sibling_getter = get_descriptor(node_prototype, 'nextSibling').get;
|
|
48
|
+
|
|
49
|
+
if (is_extensible(element_prototype)) {
|
|
50
|
+
// the following assignments improve perf of lookups on DOM nodes
|
|
51
|
+
// @ts-expect-error
|
|
52
|
+
element_prototype.__click = undefined;
|
|
53
|
+
// @ts-expect-error
|
|
54
|
+
element_prototype.__className = undefined;
|
|
55
|
+
// @ts-expect-error
|
|
56
|
+
element_prototype.__attributes = null;
|
|
57
|
+
// @ts-expect-error
|
|
58
|
+
element_prototype.__style = undefined;
|
|
59
|
+
// @ts-expect-error
|
|
60
|
+
element_prototype.__e = undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (is_extensible(text_prototype)) {
|
|
64
|
+
// @ts-expect-error
|
|
65
|
+
text_prototype.__t = undefined;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (DEV) {
|
|
69
|
+
// @ts-expect-error
|
|
70
|
+
element_prototype.__svelte_meta = null;
|
|
71
|
+
|
|
72
|
+
init_array_prototype_warnings();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @param {string} value
|
|
78
|
+
* @returns {Text}
|
|
79
|
+
*/
|
|
80
|
+
export function create_text(value = '') {
|
|
81
|
+
return document.createTextNode(value);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @template {Node} N
|
|
86
|
+
* @param {N} node
|
|
87
|
+
*/
|
|
88
|
+
/*@__NO_SIDE_EFFECTS__*/
|
|
89
|
+
export function get_first_child(node) {
|
|
90
|
+
return /** @type {TemplateNode | null} */ (first_child_getter.call(node));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @template {Node} N
|
|
95
|
+
* @param {N} node
|
|
96
|
+
*/
|
|
97
|
+
/*@__NO_SIDE_EFFECTS__*/
|
|
98
|
+
export function get_next_sibling(node) {
|
|
99
|
+
return /** @type {TemplateNode | null} */ (next_sibling_getter.call(node));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Don't mark this as side-effect-free, hydration needs to walk all nodes
|
|
104
|
+
* @template {Node} N
|
|
105
|
+
* @param {N} node
|
|
106
|
+
* @param {boolean} is_text
|
|
107
|
+
* @returns {TemplateNode | null}
|
|
108
|
+
*/
|
|
109
|
+
export function child(node, is_text) {
|
|
110
|
+
if (!hydrating) {
|
|
111
|
+
return get_first_child(node);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
var child = get_first_child(hydrate_node);
|
|
115
|
+
|
|
116
|
+
// Child can be null if we have an element with a single child, like `<p>{text}</p>`, where `text` is empty
|
|
117
|
+
if (child === null) {
|
|
118
|
+
child = hydrate_node.appendChild(create_text());
|
|
119
|
+
} else if (is_text && child.nodeType !== TEXT_NODE) {
|
|
120
|
+
var text = create_text();
|
|
121
|
+
child?.before(text);
|
|
122
|
+
set_hydrate_node(text);
|
|
123
|
+
return text;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (is_text) {
|
|
127
|
+
merge_text_nodes(/** @type {Text} */ (child));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
set_hydrate_node(child);
|
|
131
|
+
return child;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Don't mark this as side-effect-free, hydration needs to walk all nodes
|
|
136
|
+
* @param {TemplateNode} node
|
|
137
|
+
* @param {boolean} [is_text]
|
|
138
|
+
* @returns {TemplateNode | null}
|
|
139
|
+
*/
|
|
140
|
+
export function first_child(node, is_text = false) {
|
|
141
|
+
if (!hydrating) {
|
|
142
|
+
var first = get_first_child(node);
|
|
143
|
+
|
|
144
|
+
// TODO prevent user comments with the empty string when preserveComments is true
|
|
145
|
+
if (first instanceof Comment && first.data === '') return get_next_sibling(first);
|
|
146
|
+
|
|
147
|
+
return first;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (is_text) {
|
|
151
|
+
// if an {expression} is empty during SSR, there might be no
|
|
152
|
+
// text node to hydrate — we must therefore create one
|
|
153
|
+
if (hydrate_node?.nodeType !== TEXT_NODE) {
|
|
154
|
+
var text = create_text();
|
|
155
|
+
|
|
156
|
+
hydrate_node?.before(text);
|
|
157
|
+
set_hydrate_node(text);
|
|
158
|
+
return text;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
merge_text_nodes(/** @type {Text} */ (hydrate_node));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return hydrate_node;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Don't mark this as side-effect-free, hydration needs to walk all nodes
|
|
169
|
+
* @param {TemplateNode} node
|
|
170
|
+
* @param {number} count
|
|
171
|
+
* @param {boolean} is_text
|
|
172
|
+
* @returns {TemplateNode | null}
|
|
173
|
+
*/
|
|
174
|
+
export function sibling(node, count = 1, is_text = false) {
|
|
175
|
+
let next_sibling = hydrating ? hydrate_node : node;
|
|
176
|
+
var last_sibling;
|
|
177
|
+
|
|
178
|
+
while (count--) {
|
|
179
|
+
last_sibling = next_sibling;
|
|
180
|
+
next_sibling = /** @type {TemplateNode} */ (get_next_sibling(next_sibling));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (!hydrating) {
|
|
184
|
+
return next_sibling;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (is_text) {
|
|
188
|
+
// if a sibling {expression} is empty during SSR, there might be no
|
|
189
|
+
// text node to hydrate — we must therefore create one
|
|
190
|
+
if (next_sibling?.nodeType !== TEXT_NODE) {
|
|
191
|
+
var text = create_text();
|
|
192
|
+
// If the next sibling is `null` and we're handling text then it's because
|
|
193
|
+
// the SSR content was empty for the text, so we need to generate a new text
|
|
194
|
+
// node and insert it after the last sibling
|
|
195
|
+
if (next_sibling === null) {
|
|
196
|
+
last_sibling?.after(text);
|
|
197
|
+
} else {
|
|
198
|
+
next_sibling.before(text);
|
|
199
|
+
}
|
|
200
|
+
set_hydrate_node(text);
|
|
201
|
+
return text;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
merge_text_nodes(/** @type {Text} */ (next_sibling));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
set_hydrate_node(next_sibling);
|
|
208
|
+
return next_sibling;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @template {Node} N
|
|
213
|
+
* @param {N} node
|
|
214
|
+
* @returns {void}
|
|
215
|
+
*/
|
|
216
|
+
export function clear_text_content(node) {
|
|
217
|
+
node.textContent = '';
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Returns `true` if we're updating the current block, for example `condition` in
|
|
222
|
+
* an `{#if condition}` block just changed. In this case, the branch should be
|
|
223
|
+
* appended (or removed) at the same time as other updates within the
|
|
224
|
+
* current `<svelte:boundary>`
|
|
225
|
+
*/
|
|
226
|
+
export function should_defer_append() {
|
|
227
|
+
if (!async_mode_flag) return false;
|
|
228
|
+
if (eager_block_effects !== null) return false;
|
|
229
|
+
|
|
230
|
+
var flags = /** @type {Effect} */ (active_effect).f;
|
|
231
|
+
return (flags & REACTION_RAN) !== 0;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* @template {keyof HTMLElementTagNameMap | string} T
|
|
236
|
+
* @param {T} tag
|
|
237
|
+
* @param {string} [namespace]
|
|
238
|
+
* @param {string} [is]
|
|
239
|
+
* @returns {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element}
|
|
240
|
+
*/
|
|
241
|
+
export function create_element(tag, namespace, is) {
|
|
242
|
+
let options = is ? { is } : undefined;
|
|
243
|
+
return /** @type {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element} */ (
|
|
244
|
+
document.createElementNS(namespace ?? NAMESPACE_HTML, tag, options)
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export function create_fragment() {
|
|
249
|
+
return document.createDocumentFragment();
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* @param {string} data
|
|
254
|
+
* @returns
|
|
255
|
+
*/
|
|
256
|
+
export function create_comment(data = '') {
|
|
257
|
+
return document.createComment(data);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* @param {Element} element
|
|
262
|
+
* @param {string} key
|
|
263
|
+
* @param {string} value
|
|
264
|
+
* @returns
|
|
265
|
+
*/
|
|
266
|
+
export function set_attribute(element, key, value = '') {
|
|
267
|
+
if (key.startsWith('xlink:')) {
|
|
268
|
+
element.setAttributeNS('http://www.w3.org/1999/xlink', key, value);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
return element.setAttribute(key, value);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Browsers split text nodes larger than 65536 bytes when parsing.
|
|
276
|
+
* For hydration to succeed, we need to stitch them back together
|
|
277
|
+
* @param {Text} text
|
|
278
|
+
*/
|
|
279
|
+
export function merge_text_nodes(text) {
|
|
280
|
+
if (/** @type {string} */ (text.nodeValue).length < 65536) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
let next = text.nextSibling;
|
|
285
|
+
|
|
286
|
+
while (next !== null && next.nodeType === TEXT_NODE) {
|
|
287
|
+
next.remove();
|
|
288
|
+
|
|
289
|
+
/** @type {string} */ (text.nodeValue) += /** @type {string} */ (next.nodeValue);
|
|
290
|
+
|
|
291
|
+
next = text.nextSibling;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { create_element } from './operations.js';
|
|
2
|
+
|
|
3
|
+
const policy =
|
|
4
|
+
// We gotta write it like this because after downleveling the pure comment may end up in the wrong location
|
|
5
|
+
globalThis?.window?.trustedTypes &&
|
|
6
|
+
/* @__PURE__ */ globalThis.window.trustedTypes.createPolicy('svelte-trusted-html', {
|
|
7
|
+
/** @param {string} html */
|
|
8
|
+
createHTML: (html) => {
|
|
9
|
+
return html;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
/** @param {string} html */
|
|
14
|
+
export function create_trusted_html(html) {
|
|
15
|
+
return /** @type {string} */ (policy?.createHTML(html) ?? html);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @param {string} html
|
|
20
|
+
*/
|
|
21
|
+
export function create_fragment_from_html(html) {
|
|
22
|
+
var elem = create_element('template');
|
|
23
|
+
elem.innerHTML = create_trusted_html(html.replaceAll('<!>', '<!---->')); // XHTML compliance
|
|
24
|
+
return elem.content;
|
|
25
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { run_all } from '../../shared/utils.js';
|
|
2
|
+
import { is_flushing_sync } from '../reactivity/batch.js';
|
|
3
|
+
|
|
4
|
+
/** @type {Array<() => void>} */
|
|
5
|
+
let micro_tasks = [];
|
|
6
|
+
|
|
7
|
+
function run_micro_tasks() {
|
|
8
|
+
var tasks = micro_tasks;
|
|
9
|
+
micro_tasks = [];
|
|
10
|
+
run_all(tasks);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @param {() => void} fn
|
|
15
|
+
*/
|
|
16
|
+
export function queue_micro_task(fn) {
|
|
17
|
+
if (micro_tasks.length === 0 && !is_flushing_sync) {
|
|
18
|
+
var tasks = micro_tasks;
|
|
19
|
+
queueMicrotask(() => {
|
|
20
|
+
// If this is false, a flushSync happened in the meantime. Do _not_ run new scheduled microtasks in that case
|
|
21
|
+
// as the ordering of microtasks would be broken at that point - consider this case:
|
|
22
|
+
// - queue_micro_task schedules microtask A to flush task X
|
|
23
|
+
// - synchronously after, flushSync runs, processing task X
|
|
24
|
+
// - synchronously after, some other microtask B is scheduled, but not through queue_micro_task but for example a Promise.resolve() in user code
|
|
25
|
+
// - synchronously after, queue_micro_task schedules microtask C to flush task Y
|
|
26
|
+
// - one tick later, microtask A now resolves, flushing task Y before microtask B, which is incorrect
|
|
27
|
+
// This if check prevents that race condition (that realistically will only happen in tests)
|
|
28
|
+
if (tasks === micro_tasks) run_micro_tasks();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
micro_tasks.push(fn);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Synchronously run any queued tasks.
|
|
37
|
+
*/
|
|
38
|
+
export function flush_tasks() {
|
|
39
|
+
while (micro_tasks.length > 0) {
|
|
40
|
+
run_micro_tasks();
|
|
41
|
+
}
|
|
42
|
+
}
|