@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,355 @@
|
|
|
1
|
+
import { teardown } from '../../reactivity/effects.js';
|
|
2
|
+
import { define_property } from '../../../shared/utils.js';
|
|
3
|
+
import { hydrating } from '../hydration.js';
|
|
4
|
+
import { queue_micro_task } from '../task.js';
|
|
5
|
+
import { FILENAME } from '../../../../constants.js';
|
|
6
|
+
import * as w from '../../warnings.js';
|
|
7
|
+
import {
|
|
8
|
+
active_effect,
|
|
9
|
+
active_reaction,
|
|
10
|
+
set_active_effect,
|
|
11
|
+
set_active_reaction
|
|
12
|
+
} from '../../runtime.js';
|
|
13
|
+
import { without_reactive_context } from './bindings/shared.js';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Used on elements, as a map of event type -> event handler,
|
|
17
|
+
* and on events themselves to track which element handled an event
|
|
18
|
+
*/
|
|
19
|
+
export const event_symbol = Symbol('events');
|
|
20
|
+
|
|
21
|
+
/** @type {Set<string>} */
|
|
22
|
+
export const all_registered_events = new Set();
|
|
23
|
+
|
|
24
|
+
/** @type {Set<(events: Array<string>) => void>} */
|
|
25
|
+
export const root_event_handles = new Set();
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* SSR adds onload and onerror attributes to catch those events before the hydration.
|
|
29
|
+
* This function detects those cases, removes the attributes and replays the events.
|
|
30
|
+
* @param {HTMLElement} dom
|
|
31
|
+
*/
|
|
32
|
+
export function replay_events(dom) {
|
|
33
|
+
if (!hydrating) return;
|
|
34
|
+
|
|
35
|
+
dom.removeAttribute('onload');
|
|
36
|
+
dom.removeAttribute('onerror');
|
|
37
|
+
// @ts-expect-error
|
|
38
|
+
const event = dom.__e;
|
|
39
|
+
if (event !== undefined) {
|
|
40
|
+
// @ts-expect-error
|
|
41
|
+
dom.__e = undefined;
|
|
42
|
+
queueMicrotask(() => {
|
|
43
|
+
if (dom.isConnected) {
|
|
44
|
+
dom.dispatchEvent(event);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @param {string} event_name
|
|
52
|
+
* @param {EventTarget} dom
|
|
53
|
+
* @param {EventListener} [handler]
|
|
54
|
+
* @param {AddEventListenerOptions} [options]
|
|
55
|
+
*/
|
|
56
|
+
export function create_event(event_name, dom, handler, options = {}) {
|
|
57
|
+
/**
|
|
58
|
+
* @this {EventTarget}
|
|
59
|
+
*/
|
|
60
|
+
function target_handler(/** @type {Event} */ event) {
|
|
61
|
+
if (!options.capture) {
|
|
62
|
+
// Only call in the bubble phase, else delegated events would be called before the capturing events
|
|
63
|
+
handle_event_propagation.call(dom, event);
|
|
64
|
+
}
|
|
65
|
+
if (!event.cancelBubble) {
|
|
66
|
+
return without_reactive_context(() => {
|
|
67
|
+
return handler?.call(this, event);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Chrome has a bug where pointer events don't work when attached to a DOM element that has been cloned
|
|
73
|
+
// with cloneNode() and the DOM element is disconnected from the document. To ensure the event works, we
|
|
74
|
+
// defer the attachment till after it's been appended to the document. TODO: remove this once Chrome fixes
|
|
75
|
+
// this bug. The same applies to wheel events and touch events.
|
|
76
|
+
if (
|
|
77
|
+
event_name.startsWith('pointer') ||
|
|
78
|
+
event_name.startsWith('touch') ||
|
|
79
|
+
event_name === 'wheel'
|
|
80
|
+
) {
|
|
81
|
+
queue_micro_task(() => {
|
|
82
|
+
dom.addEventListener(event_name, target_handler, options);
|
|
83
|
+
});
|
|
84
|
+
} else {
|
|
85
|
+
dom.addEventListener(event_name, target_handler, options);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return target_handler;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Attaches an event handler to an element and returns a function that removes the handler. Using this
|
|
93
|
+
* rather than `addEventListener` will preserve the correct order relative to handlers added declaratively
|
|
94
|
+
* (with attributes like `onclick`), which use event delegation for performance reasons
|
|
95
|
+
*
|
|
96
|
+
* @param {EventTarget} element
|
|
97
|
+
* @param {string} type
|
|
98
|
+
* @param {EventListener} handler
|
|
99
|
+
* @param {AddEventListenerOptions} [options]
|
|
100
|
+
*/
|
|
101
|
+
export function on(element, type, handler, options = {}) {
|
|
102
|
+
var target_handler = create_event(type, element, handler, options);
|
|
103
|
+
|
|
104
|
+
return () => {
|
|
105
|
+
element.removeEventListener(type, target_handler, options);
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @param {string} event_name
|
|
111
|
+
* @param {Element} dom
|
|
112
|
+
* @param {EventListener} [handler]
|
|
113
|
+
* @param {boolean} [capture]
|
|
114
|
+
* @param {boolean} [passive]
|
|
115
|
+
* @returns {void}
|
|
116
|
+
*/
|
|
117
|
+
export function event(event_name, dom, handler, capture, passive) {
|
|
118
|
+
var options = { capture, passive };
|
|
119
|
+
var target_handler = create_event(event_name, dom, handler, options);
|
|
120
|
+
|
|
121
|
+
if (
|
|
122
|
+
dom === document.body ||
|
|
123
|
+
// @ts-ignore
|
|
124
|
+
dom === window ||
|
|
125
|
+
// @ts-ignore
|
|
126
|
+
dom === document ||
|
|
127
|
+
// Firefox has quirky behavior, it can happen that we still get "canplay" events when the element is already removed
|
|
128
|
+
dom instanceof HTMLMediaElement
|
|
129
|
+
) {
|
|
130
|
+
teardown(() => {
|
|
131
|
+
dom.removeEventListener(event_name, target_handler, options);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @param {string} event_name
|
|
138
|
+
* @param {Element} element
|
|
139
|
+
* @param {EventListener} [handler]
|
|
140
|
+
* @returns {void}
|
|
141
|
+
*/
|
|
142
|
+
export function delegated(event_name, element, handler) {
|
|
143
|
+
// @ts-expect-error
|
|
144
|
+
(element[event_symbol] ??= {})[event_name] = handler;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @param {Array<string>} events
|
|
149
|
+
* @returns {void}
|
|
150
|
+
*/
|
|
151
|
+
export function delegate(events) {
|
|
152
|
+
for (var i = 0; i < events.length; i++) {
|
|
153
|
+
all_registered_events.add(events[i]);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
for (var fn of root_event_handles) {
|
|
157
|
+
fn(events);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// used to store the reference to the currently propagated event
|
|
162
|
+
// to prevent garbage collection between microtasks in Firefox
|
|
163
|
+
// If the event object is GCed too early, the expando __root property
|
|
164
|
+
// set on the event object is lost, causing the event delegation
|
|
165
|
+
// to process the event twice
|
|
166
|
+
let last_propagated_event = null;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @this {EventTarget}
|
|
170
|
+
* @param {Event} event
|
|
171
|
+
* @returns {void}
|
|
172
|
+
*/
|
|
173
|
+
export function handle_event_propagation(event) {
|
|
174
|
+
var handler_element = this;
|
|
175
|
+
var owner_document = /** @type {Node} */ (handler_element).ownerDocument;
|
|
176
|
+
var event_name = event.type;
|
|
177
|
+
var path = event.composedPath?.() || [];
|
|
178
|
+
var current_target = /** @type {null | Element} */ (path[0] || event.target);
|
|
179
|
+
|
|
180
|
+
last_propagated_event = event;
|
|
181
|
+
|
|
182
|
+
// composedPath contains list of nodes the event has propagated through.
|
|
183
|
+
// We check `event_symbol` to skip all nodes below it in case this is a
|
|
184
|
+
// parent of the `event_symbol` node, which indicates that there's nested
|
|
185
|
+
// mounted apps. In this case we don't want to trigger events multiple times.
|
|
186
|
+
var path_idx = 0;
|
|
187
|
+
|
|
188
|
+
// the `last_propagated_event === event` check is redundant, but
|
|
189
|
+
// without it the variable will be DCE'd and things will
|
|
190
|
+
// fail mysteriously in Firefox
|
|
191
|
+
// @ts-expect-error is added below
|
|
192
|
+
var handled_at = last_propagated_event === event && event[event_symbol];
|
|
193
|
+
|
|
194
|
+
if (handled_at) {
|
|
195
|
+
var at_idx = path.indexOf(handled_at);
|
|
196
|
+
if (
|
|
197
|
+
at_idx !== -1 &&
|
|
198
|
+
(handler_element === document || handler_element === /** @type {any} */ (window))
|
|
199
|
+
) {
|
|
200
|
+
// This is the fallback document listener or a window listener, but the event was already handled
|
|
201
|
+
// -> ignore, but set handle_at to document/window so that we're resetting the event
|
|
202
|
+
// chain in case someone manually dispatches the same event object again.
|
|
203
|
+
// @ts-expect-error
|
|
204
|
+
event[event_symbol] = handler_element;
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// We're deliberately not skipping if the index is higher, because
|
|
209
|
+
// someone could create an event programmatically and emit it multiple times,
|
|
210
|
+
// in which case we want to handle the whole propagation chain properly each time.
|
|
211
|
+
// (this will only be a false negative if the event is dispatched multiple times and
|
|
212
|
+
// the fallback document listener isn't reached in between, but that's super rare)
|
|
213
|
+
var handler_idx = path.indexOf(handler_element);
|
|
214
|
+
if (handler_idx === -1) {
|
|
215
|
+
// handle_idx can theoretically be -1 (happened in some JSDOM testing scenarios with an event listener on the window object)
|
|
216
|
+
// so guard against that, too, and assume that everything was handled at this point.
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (at_idx <= handler_idx) {
|
|
221
|
+
path_idx = at_idx;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
current_target = /** @type {Element} */ (path[path_idx] || event.target);
|
|
226
|
+
// there can only be one delegated event per element, and we either already handled the current target,
|
|
227
|
+
// or this is the very first target in the chain which has a non-delegated listener, in which case it's safe
|
|
228
|
+
// to handle a possible delegated event on it later (through the root delegation listener for example).
|
|
229
|
+
if (current_target === handler_element) return;
|
|
230
|
+
|
|
231
|
+
// Proxy currentTarget to correct target
|
|
232
|
+
define_property(event, 'currentTarget', {
|
|
233
|
+
configurable: true,
|
|
234
|
+
get() {
|
|
235
|
+
return current_target || owner_document;
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// This started because of Chromium issue https://chromestatus.com/feature/5128696823545856,
|
|
240
|
+
// where removal or moving of of the DOM can cause sync `blur` events to fire, which can cause logic
|
|
241
|
+
// to run inside the current `active_reaction`, which isn't what we want at all. However, on reflection,
|
|
242
|
+
// it's probably best that all event handled by Svelte have this behaviour, as we don't really want
|
|
243
|
+
// an event handler to run in the context of another reaction or effect.
|
|
244
|
+
var previous_reaction = active_reaction;
|
|
245
|
+
var previous_effect = active_effect;
|
|
246
|
+
set_active_reaction(null);
|
|
247
|
+
set_active_effect(null);
|
|
248
|
+
|
|
249
|
+
try {
|
|
250
|
+
/**
|
|
251
|
+
* @type {unknown}
|
|
252
|
+
*/
|
|
253
|
+
var throw_error;
|
|
254
|
+
/**
|
|
255
|
+
* @type {unknown[]}
|
|
256
|
+
*/
|
|
257
|
+
var other_errors = [];
|
|
258
|
+
|
|
259
|
+
while (current_target !== null) {
|
|
260
|
+
/** @type {null | Element} */
|
|
261
|
+
var parent_element =
|
|
262
|
+
current_target.assignedSlot ||
|
|
263
|
+
current_target.parentNode ||
|
|
264
|
+
/** @type {any} */ (current_target).host ||
|
|
265
|
+
null;
|
|
266
|
+
|
|
267
|
+
try {
|
|
268
|
+
// @ts-expect-error
|
|
269
|
+
var delegated = current_target[event_symbol]?.[event_name];
|
|
270
|
+
|
|
271
|
+
if (
|
|
272
|
+
delegated != null &&
|
|
273
|
+
(!(/** @type {any} */ (current_target).disabled) ||
|
|
274
|
+
// DOM could've been updated already by the time this is reached, so we check this as well
|
|
275
|
+
// -> the target could not have been disabled because it emits the event in the first place
|
|
276
|
+
event.target === current_target)
|
|
277
|
+
) {
|
|
278
|
+
delegated.call(current_target, event);
|
|
279
|
+
}
|
|
280
|
+
} catch (error) {
|
|
281
|
+
if (throw_error) {
|
|
282
|
+
other_errors.push(error);
|
|
283
|
+
} else {
|
|
284
|
+
throw_error = error;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (event.cancelBubble || parent_element === handler_element || parent_element === null) {
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
current_target = parent_element;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if (throw_error) {
|
|
294
|
+
for (let error of other_errors) {
|
|
295
|
+
// Throw the rest of the errors, one-by-one on a microtask
|
|
296
|
+
queueMicrotask(() => {
|
|
297
|
+
throw error;
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
throw throw_error;
|
|
301
|
+
}
|
|
302
|
+
} finally {
|
|
303
|
+
// @ts-expect-error is used above
|
|
304
|
+
event[event_symbol] = handler_element;
|
|
305
|
+
// @ts-ignore remove proxy on currentTarget
|
|
306
|
+
delete event.currentTarget;
|
|
307
|
+
set_active_reaction(previous_reaction);
|
|
308
|
+
set_active_effect(previous_effect);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* In dev, warn if an event handler is not a function, as it means the
|
|
314
|
+
* user probably called the handler or forgot to add a `() =>`
|
|
315
|
+
* @param {() => (event: Event, ...args: any) => void} thunk
|
|
316
|
+
* @param {EventTarget} element
|
|
317
|
+
* @param {[Event, ...any]} args
|
|
318
|
+
* @param {any} component
|
|
319
|
+
* @param {[number, number]} [loc]
|
|
320
|
+
* @param {boolean} [remove_parens]
|
|
321
|
+
*/
|
|
322
|
+
export function apply(
|
|
323
|
+
thunk,
|
|
324
|
+
element,
|
|
325
|
+
args,
|
|
326
|
+
component,
|
|
327
|
+
loc,
|
|
328
|
+
has_side_effects = false,
|
|
329
|
+
remove_parens = false
|
|
330
|
+
) {
|
|
331
|
+
let handler;
|
|
332
|
+
let error;
|
|
333
|
+
|
|
334
|
+
try {
|
|
335
|
+
handler = thunk();
|
|
336
|
+
} catch (e) {
|
|
337
|
+
error = e;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (typeof handler !== 'function' && (has_side_effects || handler != null || error)) {
|
|
341
|
+
const filename = component?.[FILENAME];
|
|
342
|
+
const location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`;
|
|
343
|
+
const phase = args[0]?.eventPhase < Event.BUBBLING_PHASE ? 'capture' : '';
|
|
344
|
+
const event_name = args[0]?.type + phase;
|
|
345
|
+
const description = `\`${event_name}\` handler${location}`;
|
|
346
|
+
const suggestion = remove_parens ? 'remove the trailing `()`' : 'add a leading `() =>`';
|
|
347
|
+
|
|
348
|
+
w.event_handler_invalid(description, suggestion);
|
|
349
|
+
|
|
350
|
+
if (error) {
|
|
351
|
+
throw error;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
handler?.apply(element, args);
|
|
355
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { hydrating } from '../hydration.js';
|
|
2
|
+
import { clear_text_content, get_first_child } from '../operations.js';
|
|
3
|
+
import { queue_micro_task } from '../task.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @param {HTMLElement} dom
|
|
7
|
+
* @param {boolean} value
|
|
8
|
+
* @returns {void}
|
|
9
|
+
*/
|
|
10
|
+
export function autofocus(dom, value) {
|
|
11
|
+
if (value) {
|
|
12
|
+
const body = document.body;
|
|
13
|
+
dom.autofocus = true;
|
|
14
|
+
|
|
15
|
+
queue_micro_task(() => {
|
|
16
|
+
if (document.activeElement === body) {
|
|
17
|
+
dom.focus();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The child of a textarea actually corresponds to the defaultValue property, so we need
|
|
25
|
+
* to remove it upon hydration to avoid a bug when someone resets the form value.
|
|
26
|
+
* @param {HTMLTextAreaElement} dom
|
|
27
|
+
* @returns {void}
|
|
28
|
+
*/
|
|
29
|
+
export function remove_textarea_child(dom) {
|
|
30
|
+
if (hydrating && get_first_child(dom) !== null) {
|
|
31
|
+
clear_text_content(dom);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let listening_to_form_reset = false;
|
|
36
|
+
|
|
37
|
+
export function add_form_reset_listener() {
|
|
38
|
+
if (!listening_to_form_reset) {
|
|
39
|
+
listening_to_form_reset = true;
|
|
40
|
+
document.addEventListener(
|
|
41
|
+
'reset',
|
|
42
|
+
(evt) => {
|
|
43
|
+
// Needs to happen one tick later or else the dom properties of the form
|
|
44
|
+
// elements have not updated to their reset values yet
|
|
45
|
+
Promise.resolve().then(() => {
|
|
46
|
+
if (!evt.defaultPrevented) {
|
|
47
|
+
for (const e of /**@type {HTMLFormElement} */ (evt.target).elements) {
|
|
48
|
+
// @ts-expect-error
|
|
49
|
+
e.__on_r?.();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
// In the capture phase to guarantee we get noticed of it (no possibility of stopPropagation)
|
|
55
|
+
{ capture: true }
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { to_style } from '../../../shared/attributes.js';
|
|
2
|
+
import { hydrating } from '../hydration.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @param {Element & ElementCSSInlineStyle} dom
|
|
6
|
+
* @param {Record<string, any>} prev
|
|
7
|
+
* @param {Record<string, any>} next
|
|
8
|
+
* @param {string} [priority]
|
|
9
|
+
*/
|
|
10
|
+
function update_styles(dom, prev = {}, next, priority) {
|
|
11
|
+
for (var key in next) {
|
|
12
|
+
var value = next[key];
|
|
13
|
+
|
|
14
|
+
if (prev[key] !== value) {
|
|
15
|
+
if (next[key] == null) {
|
|
16
|
+
dom.style.removeProperty(key);
|
|
17
|
+
} else {
|
|
18
|
+
dom.style.setProperty(key, value, priority);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @param {Element & ElementCSSInlineStyle} dom
|
|
26
|
+
* @param {string | null} value
|
|
27
|
+
* @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]
|
|
28
|
+
* @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]
|
|
29
|
+
*/
|
|
30
|
+
export function set_style(dom, value, prev_styles, next_styles) {
|
|
31
|
+
// @ts-expect-error
|
|
32
|
+
var prev = dom.__style;
|
|
33
|
+
|
|
34
|
+
if (hydrating || prev !== value) {
|
|
35
|
+
var next_style_attr = to_style(value, next_styles);
|
|
36
|
+
|
|
37
|
+
if (!hydrating || next_style_attr !== dom.getAttribute('style')) {
|
|
38
|
+
if (next_style_attr == null) {
|
|
39
|
+
dom.removeAttribute('style');
|
|
40
|
+
} else {
|
|
41
|
+
dom.style.cssText = next_style_attr;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// @ts-expect-error
|
|
46
|
+
dom.__style = value;
|
|
47
|
+
} else if (next_styles) {
|
|
48
|
+
if (Array.isArray(next_styles)) {
|
|
49
|
+
update_styles(dom, prev_styles?.[0], next_styles[0]);
|
|
50
|
+
update_styles(dom, prev_styles?.[1], next_styles[1], 'important');
|
|
51
|
+
} else {
|
|
52
|
+
update_styles(dom, prev_styles, next_styles);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return next_styles;
|
|
57
|
+
}
|