Resolves a second unintended regression introduced in #6170.
Follow-up to #8331, this time addressing the root issue so the correct select option won't be deselected in the first place when the initial bound value is undefined.
Fixes#8361
track all `#each` variables that could result in a change to the inputs and also update the `$$binding_groups` variable which holds the references to the inputs of each group accordingly.
Fixes#7633Fixes#6112Fixes#7884
Closes#4129
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: Simon Holthausen <simon.holthausen@vercel.com>
Closes#5085
---------
Co-authored-by: Marcin Wicha <23581770+marcin-wicha@users.noreply.github.com>
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Fixes#8082, where svelte-ignore somehow does not pick up the reactive-component warning.
The issue on this problem is that the map_children function suppresses warnings and errors while traversing AST nodes as src/compiler/compile/nodes classes. However, the reactive-component warning is called in src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts, and its warnings are not suppressed in map_children. Thus, we need to extract ignores and suppress here separately.
fixes#8026
1. replace the big entities list with entities that have a ; at the end where valid (there are some exceptions)
2. construct two regexes from that entities list: one for HTML where it's strictly matched, one for attributes where it tries to match browser behavior by also allowing = / digit / character afterwards
3. decode character references with one of these regexes depending on this is an attribute value or not
---------
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
Ensure innerHTML for template is done on template element
fixes#7315fixes#7319
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
* feat: optimise svelte-element output code for static tag and static attribute
* Update src/compiler/compile/render_dom/wrappers/Element/index.ts
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
* Update src/runtime/internal/dom.ts
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
* Update src/compiler/compile/render_dom/wrappers/Element/index.ts
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
* fix logic
* fix pipeline errors
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Prior to this change, the compiler would generate a template literal that had many purely static
string variables nested within it. This change collapses these static strings into the surrounding
template literal which should result in (minor) size and performance improvements for the SSR
generated code.
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: Simon Holthausen <simon.holthausen@vercel.com>
Fixes#7964
currently for a case where the parent type is ArrayPattern code needs to check if the elements are of direct type MemberExpression or Identifier, in the case of MemberExpression there will be an Identifier check for the Object of the MemberExpression.
---------
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
Fixes: #7578
When remounting a keyed input element (e.g. because the element order has changed) with spread properties, the input value gets undefined. This has happened because data_value is updated before remounting and it won't contain a value for input-value (because the value hasn't changed). When calling mount() an undefined value was assigned because of a missing check.
fixes#7948
- The assignment of the variable "previous_tag" was incorrectly positioned and could cause race condition when used with transitions.
- We need another variable to detect when we are in a transition to remove a node
---------
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
* add inert to attribute_lookup
* typed for preventing a repeat of the tragedy
* add tests
* revert unnecessary change
* add more test
---------
Co-authored-by: fcrozatier <frederic.crozatier@protonmail.com>
Closes#7771
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: Simon Holthausen <simon.holthausen@vercel.com>
fixes#4233 by calling the callback after the iframe loads, which may be asynchronous
---------
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
Related to #5967. Closes#7874
---------
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
Fixes one case of #4765
---------
Co-authored-by: Ben Bucksch <bbucksch@jw.org>
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
By passing an empty object literal as first argument to Object.assign we can avoid having objects spread as props on a component being mutated during SSR.
Fixes#8171
* fixed double up initialization on svelte:element elements
* updated test and fixed bug
* update other svelte:element test
* removed whitespace
* refactor
* correctly update expected ouput resulting from #7938
* remove .solo
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
* [fix] static svelte:element not replaced with tag in production mode
* [fix] static svelte:element not replaced with tag in production mode
* add optimization of static <svelte:element> and fix a bug
Co-authored-by: Yuichiro Yamashita <xydybaseball@gmail.com>
* warn on assignment to const
* fix formatting and switch to error
* check most local scopes first
* fix logic and add more tests
* more formatting
* Fix broken test
* use find_owner instead
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* add security warning for anchor element (rel attribute)
* manage more case for security warnings on anchor (aplocks, false positive ...)
* remove noopener checks as noreferrer imples noopener
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* important modifier for style directive
* docs
* Exclude third param if false
third param for set_style is optional
* Remove unused test
Runtime test doesn't work because of weird behaviour of computed style
the puppeteer test should cover it
* remove unnecessary test
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* add test
* improve error message if this attribute of <svelte:component> is not SvelteComponent
* add more tests
* improve validation
* simplify test
Co-authored-by: Tan Li Hau <tanhauhau@users.noreply.github.com>
* add test
* support --style-props for <svelte:component>
* refactor
* add more test
* support switching instance
* add test with svelte:self
* merge duplicated if statement
* slight refactor
* remove unnecessary anchor
* reorder insertion
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* [feature] add util module to check element is interactive element
* [feature] add util module to check role is interactive role
* [feature] add a11y checker for no-nointeractive-tabindex
* [chore] add test for no-nointeractive-tabindex
* [chore] fix tabindex-no-positive test div -> button
* [refactor] bundle up two filter into one
* Refactor: export a11y-no-nointeractive-tabindex warning from compiler_warning
* slight refactor to use existing utils
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* Fix 6860: Warn user when binding rest operator
* move the binding validation to Binding node
* update test
Co-authored-by: vaibhav rai <vaibhavrai@vaibhavs-MacBook-Pro.local>
* add more test case, supporting deep destructuring and array destructuring
Co-authored-by: vaibhav rai <vaibhavrai@vaibhavs-MacBook-Pro.local>
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* Recursively check label children for input control
* Add another test case
* Update snapshot
* clean up test
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* check noninteractive roles on interactive elements
* refactor to match the eslint-plugin-jsx-a11y implementation
* update test case
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* Check required props for ARIA roles
* Test required ARIA props check
* Properly indent with tabs in test
* swtich to use aria-query
* fix validation test
* update docs
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* fix: destroy non-fragment element such as empty components
* fix: fragment property of Empty Component is set as true in dev mode, inconsistent with production mode
* chore: revert 'removal' of component.compile_options.dev
* feat: add test for destroying empty component
* chore: update typechecking callback
* chore: revert fragment dev checks
* chore: remove unnecessary comment
* chore: update test for empty-component-destroy
* fix: revert back the patching of console.log
* use before_test and after_test
Co-authored-by: qinmu <magenta2127@mail.com>
Co-authored-by: tanhauhau <lhtan93@gmail.com>