svelte 4.0.1 → 4.0.2

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/compiler.cjs CHANGED
@@ -31603,6 +31603,9 @@ class AttributeWrapper extends BaseAttributeWrapper {
31603
31603
  /** @type {boolean} */
31604
31604
  is_src;
31605
31605
 
31606
+ /** @type {boolean} */
31607
+ is_srcset;
31608
+
31606
31609
  /** @type {boolean} */
31607
31610
  is_select_value_attribute;
31608
31611
 
@@ -31659,6 +31662,9 @@ class AttributeWrapper extends BaseAttributeWrapper {
31659
31662
  this.is_src =
31660
31663
  this.name === 'src' &&
31661
31664
  (!this.parent.node.namespace || this.parent.node.namespace === namespaces.html);
31665
+ this.is_srcset =
31666
+ this.name === 'srcset' &&
31667
+ (!this.parent.node.namespace || this.parent.node.namespace === namespaces.html);
31662
31668
  this.should_cache = should_cache(this);
31663
31669
  }
31664
31670
 
@@ -31703,6 +31709,11 @@ class AttributeWrapper extends BaseAttributeWrapper {
31703
31709
  b$1`if (!@src_url_equal(${element.var}.src, ${init})) ${method}(${element.var}, "${name}", ${this.last});`
31704
31710
  );
31705
31711
  updater = b$1`${method}(${element.var}, "${name}", ${should_cache ? this.last : value});`;
31712
+ } else if (this.is_srcset) {
31713
+ block.chunks.hydrate.push(
31714
+ b$1`if (!@srcset_url_equal(${element.var}, ${init})) ${method}(${element.var}, "${name}", ${this.last});`
31715
+ );
31716
+ updater = b$1`${method}(${element.var}, "${name}", ${should_cache ? this.last : value});`;
31706
31717
  } else if (property_name) {
31707
31718
  block.chunks.hydrate.push(b$1`${element.var}.${property_name} = ${init};`);
31708
31719
  updater = block.renderer.options.dev
@@ -31942,7 +31953,7 @@ Object.keys(attribute_lookup).forEach((name) => {
31942
31953
 
31943
31954
  /** @param {AttributeWrapper} attribute */
31944
31955
  function should_cache(attribute) {
31945
- return attribute.is_src || attribute.node.should_cache();
31956
+ return attribute.is_src || attribute.is_srcset || attribute.node.should_cache();
31946
31957
  }
31947
31958
  const regex_contains_checked_or_group = /checked|group/;
31948
31959
 
@@ -32842,7 +32853,7 @@ class RawMustacheTagWrapper extends Tag$1 {
32842
32853
  render(block, parent_node, _parent_nodes) {
32843
32854
  const in_head = is_head(parent_node);
32844
32855
  const can_use_innerhtml = !in_head && parent_node && !this.prev && !this.next;
32845
- if (can_use_innerhtml) {
32856
+ if (can_use_innerhtml && !this.renderer.options.hydratable) {
32846
32857
  /** @param {import('estree').Node} content */
32847
32858
  const insert = (content) => b$1`${parent_node}.innerHTML = ${content};`[0];
32848
32859
  const { init } = this.rename_this_method(block, (content) => insert(content));
@@ -43647,7 +43658,7 @@ class Fragment extends Node {
43647
43658
  }
43648
43659
 
43649
43660
  // This file is automatically generated
43650
- var internal_exports = new Set(["HtmlTag","HtmlTagHydration","ResizeObserverSingleton","SvelteComponent","SvelteComponentDev","SvelteComponentTyped","SvelteElement","action_destroyer","add_attribute","add_classes","add_flush_callback","add_iframe_resize_listener","add_location","add_render_callback","add_styles","add_transform","afterUpdate","append","append_dev","append_empty_stylesheet","append_hydration","append_hydration_dev","append_styles","assign","attr","attr_dev","attribute_to_object","beforeUpdate","bind","binding_callbacks","blank_object","bubble","check_outros","children","claim_comment","claim_component","claim_element","claim_html_tag","claim_space","claim_svg_element","claim_text","clear_loops","comment","component_subscribe","compute_rest_props","compute_slots","construct_svelte_component","construct_svelte_component_dev","contenteditable_truthy_values","createEventDispatcher","create_animation","create_bidirectional_transition","create_component","create_custom_element","create_in_transition","create_out_transition","create_slot","create_ssr_component","current_component","custom_event","dataset_dev","debug","destroy_block","destroy_component","destroy_each","detach","detach_after_dev","detach_before_dev","detach_between_dev","detach_dev","dirty_components","dispatch_dev","each","element","element_is","empty","end_hydrating","ensure_array_like","ensure_array_like_dev","escape","escape_attribute_value","escape_object","exclude_internal_props","fix_and_destroy_block","fix_and_outro_and_destroy_block","fix_position","flush","flush_render_callbacks","getAllContexts","getContext","get_all_dirty_from_scope","get_binding_group_value","get_current_component","get_custom_elements_slots","get_root_for_style","get_slot_changes","get_spread_object","get_spread_update","get_store_value","get_svelte_dataset","globals","group_outros","handle_promise","hasContext","has_prop","head_selector","identity","init","init_binding_group","init_binding_group_dynamic","insert","insert_dev","insert_hydration","insert_hydration_dev","intros","invalid_attribute_name_character","is_client","is_crossorigin","is_empty","is_function","is_promise","is_void","listen","listen_dev","loop","loop_guard","merge_ssr_styles","missing_component","mount_component","noop","not_equal","now","null_to_empty","object_without_properties","onDestroy","onMount","once","outro_and_destroy_block","prevent_default","prop_dev","query_selector_all","raf","resize_observer_border_box","resize_observer_content_box","resize_observer_device_pixel_content_box","run","run_all","safe_not_equal","schedule_update","select_multiple_value","select_option","select_options","select_value","self","setContext","set_attributes","set_current_component","set_custom_element_data","set_custom_element_data_map","set_data","set_data_contenteditable","set_data_contenteditable_dev","set_data_dev","set_data_maybe_contenteditable","set_data_maybe_contenteditable_dev","set_dynamic_element_data","set_input_type","set_input_value","set_now","set_raf","set_store_value","set_style","set_svg_attributes","space","split_css_unit","spread","src_url_equal","start_hydrating","stop_immediate_propagation","stop_propagation","subscribe","svg_element","text","tick","time_ranges_to_array","to_number","toggle_class","transition_in","transition_out","trusted","update_await_block_branch","update_keyed_each","update_slot","update_slot_base","validate_component","validate_dynamic_element","validate_each_keys","validate_slots","validate_store","validate_void_dynamic_element","xlink_attr"]);
43661
+ var internal_exports = new Set(["HtmlTag","HtmlTagHydration","ResizeObserverSingleton","SvelteComponent","SvelteComponentDev","SvelteComponentTyped","SvelteElement","action_destroyer","add_attribute","add_classes","add_flush_callback","add_iframe_resize_listener","add_location","add_render_callback","add_styles","add_transform","afterUpdate","append","append_dev","append_empty_stylesheet","append_hydration","append_hydration_dev","append_styles","assign","attr","attr_dev","attribute_to_object","beforeUpdate","bind","binding_callbacks","blank_object","bubble","check_outros","children","claim_comment","claim_component","claim_element","claim_html_tag","claim_space","claim_svg_element","claim_text","clear_loops","comment","component_subscribe","compute_rest_props","compute_slots","construct_svelte_component","construct_svelte_component_dev","contenteditable_truthy_values","createEventDispatcher","create_animation","create_bidirectional_transition","create_component","create_custom_element","create_in_transition","create_out_transition","create_slot","create_ssr_component","current_component","custom_event","dataset_dev","debug","destroy_block","destroy_component","destroy_each","detach","detach_after_dev","detach_before_dev","detach_between_dev","detach_dev","dirty_components","dispatch_dev","each","element","element_is","empty","end_hydrating","ensure_array_like","ensure_array_like_dev","escape","escape_attribute_value","escape_object","exclude_internal_props","fix_and_destroy_block","fix_and_outro_and_destroy_block","fix_position","flush","flush_render_callbacks","getAllContexts","getContext","get_all_dirty_from_scope","get_binding_group_value","get_current_component","get_custom_elements_slots","get_root_for_style","get_slot_changes","get_spread_object","get_spread_update","get_store_value","get_svelte_dataset","globals","group_outros","handle_promise","hasContext","has_prop","head_selector","identity","init","init_binding_group","init_binding_group_dynamic","insert","insert_dev","insert_hydration","insert_hydration_dev","intros","invalid_attribute_name_character","is_client","is_crossorigin","is_empty","is_function","is_promise","is_void","listen","listen_dev","loop","loop_guard","merge_ssr_styles","missing_component","mount_component","noop","not_equal","now","null_to_empty","object_without_properties","onDestroy","onMount","once","outro_and_destroy_block","prevent_default","prop_dev","query_selector_all","raf","resize_observer_border_box","resize_observer_content_box","resize_observer_device_pixel_content_box","run","run_all","safe_not_equal","schedule_update","select_multiple_value","select_option","select_options","select_value","self","setContext","set_attributes","set_current_component","set_custom_element_data","set_custom_element_data_map","set_data","set_data_contenteditable","set_data_contenteditable_dev","set_data_dev","set_data_maybe_contenteditable","set_data_maybe_contenteditable_dev","set_dynamic_element_data","set_input_type","set_input_value","set_now","set_raf","set_store_value","set_style","set_svg_attributes","space","split_css_unit","spread","src_url_equal","srcset_url_equal","start_hydrating","stop_immediate_propagation","stop_propagation","subscribe","svg_element","text","tick","time_ranges_to_array","to_number","toggle_class","transition_in","transition_out","trusted","update_await_block_branch","update_keyed_each","update_slot","update_slot_base","validate_component","validate_dynamic_element","validate_each_keys","validate_slots","validate_store","validate_void_dynamic_element","xlink_attr"]);
43651
43662
 
43652
43663
  /**
43653
43664
  *
@@ -43697,7 +43708,7 @@ function is_used_as_reference(node, parent) {
43697
43708
  * https://svelte.dev/docs/svelte-compiler#svelte-version
43698
43709
  * @type {string}
43699
43710
  */
43700
- const VERSION = '4.0.1';
43711
+ const VERSION = '4.0.2';
43701
43712
 
43702
43713
  const regex_leading_directory_separator = /^[/\\]/;
43703
43714
  const regex_starts_with_term_export = /^Export/;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte",
3
- "version": "4.0.1",
3
+ "version": "4.0.2",
4
4
  "description": "Cybernetically enhanced web apps",
5
5
  "type": "module",
6
6
  "module": "src/runtime/index.js",
@@ -58,7 +58,7 @@
58
58
  "default": "./src/runtime/store/index.js"
59
59
  },
60
60
  "./internal/disclose-version": {
61
- "import": "./src/runtime/internal/disclose-version/index.js"
61
+ "default": "./src/runtime/internal/disclose-version/index.js"
62
62
  },
63
63
  "./transition": {
64
64
  "types": "./types/index.d.ts",
@@ -127,13 +127,13 @@
127
127
  },
128
128
  "scripts": {
129
129
  "format": "prettier . --cache --plugin-search-dir=. --write",
130
- "check": "prettier . --cache --plugin-search-dir=. --check",
130
+ "check": "tsc --noEmit",
131
131
  "test": "vitest run && echo \"manually check that there are no type errors in test/types by opening the files in there\"",
132
132
  "build": "rollup -c && pnpm types",
133
133
  "generate:version": "node ./scripts/generate-version.js",
134
134
  "dev": "rollup -cw",
135
135
  "posttest": "agadoo src/internal/index.js",
136
136
  "types": "node ./scripts/generate-dts.js",
137
- "lint": "eslint \"{src,test}/**/*.{ts,js}\" --cache"
137
+ "lint": "prettier . --cache --plugin-search-dir=. --check && eslint \"{src,test}/**/*.{ts,js}\" --cache"
138
138
  }
139
139
  }
@@ -1,2 +1,2 @@
1
1
  // This file is automatically generated
2
- export default new Set(["HtmlTag","HtmlTagHydration","ResizeObserverSingleton","SvelteComponent","SvelteComponentDev","SvelteComponentTyped","SvelteElement","action_destroyer","add_attribute","add_classes","add_flush_callback","add_iframe_resize_listener","add_location","add_render_callback","add_styles","add_transform","afterUpdate","append","append_dev","append_empty_stylesheet","append_hydration","append_hydration_dev","append_styles","assign","attr","attr_dev","attribute_to_object","beforeUpdate","bind","binding_callbacks","blank_object","bubble","check_outros","children","claim_comment","claim_component","claim_element","claim_html_tag","claim_space","claim_svg_element","claim_text","clear_loops","comment","component_subscribe","compute_rest_props","compute_slots","construct_svelte_component","construct_svelte_component_dev","contenteditable_truthy_values","createEventDispatcher","create_animation","create_bidirectional_transition","create_component","create_custom_element","create_in_transition","create_out_transition","create_slot","create_ssr_component","current_component","custom_event","dataset_dev","debug","destroy_block","destroy_component","destroy_each","detach","detach_after_dev","detach_before_dev","detach_between_dev","detach_dev","dirty_components","dispatch_dev","each","element","element_is","empty","end_hydrating","ensure_array_like","ensure_array_like_dev","escape","escape_attribute_value","escape_object","exclude_internal_props","fix_and_destroy_block","fix_and_outro_and_destroy_block","fix_position","flush","flush_render_callbacks","getAllContexts","getContext","get_all_dirty_from_scope","get_binding_group_value","get_current_component","get_custom_elements_slots","get_root_for_style","get_slot_changes","get_spread_object","get_spread_update","get_store_value","get_svelte_dataset","globals","group_outros","handle_promise","hasContext","has_prop","head_selector","identity","init","init_binding_group","init_binding_group_dynamic","insert","insert_dev","insert_hydration","insert_hydration_dev","intros","invalid_attribute_name_character","is_client","is_crossorigin","is_empty","is_function","is_promise","is_void","listen","listen_dev","loop","loop_guard","merge_ssr_styles","missing_component","mount_component","noop","not_equal","now","null_to_empty","object_without_properties","onDestroy","onMount","once","outro_and_destroy_block","prevent_default","prop_dev","query_selector_all","raf","resize_observer_border_box","resize_observer_content_box","resize_observer_device_pixel_content_box","run","run_all","safe_not_equal","schedule_update","select_multiple_value","select_option","select_options","select_value","self","setContext","set_attributes","set_current_component","set_custom_element_data","set_custom_element_data_map","set_data","set_data_contenteditable","set_data_contenteditable_dev","set_data_dev","set_data_maybe_contenteditable","set_data_maybe_contenteditable_dev","set_dynamic_element_data","set_input_type","set_input_value","set_now","set_raf","set_store_value","set_style","set_svg_attributes","space","split_css_unit","spread","src_url_equal","start_hydrating","stop_immediate_propagation","stop_propagation","subscribe","svg_element","text","tick","time_ranges_to_array","to_number","toggle_class","transition_in","transition_out","trusted","update_await_block_branch","update_keyed_each","update_slot","update_slot_base","validate_component","validate_dynamic_element","validate_each_keys","validate_slots","validate_store","validate_void_dynamic_element","xlink_attr"]);
2
+ export default new Set(["HtmlTag","HtmlTagHydration","ResizeObserverSingleton","SvelteComponent","SvelteComponentDev","SvelteComponentTyped","SvelteElement","action_destroyer","add_attribute","add_classes","add_flush_callback","add_iframe_resize_listener","add_location","add_render_callback","add_styles","add_transform","afterUpdate","append","append_dev","append_empty_stylesheet","append_hydration","append_hydration_dev","append_styles","assign","attr","attr_dev","attribute_to_object","beforeUpdate","bind","binding_callbacks","blank_object","bubble","check_outros","children","claim_comment","claim_component","claim_element","claim_html_tag","claim_space","claim_svg_element","claim_text","clear_loops","comment","component_subscribe","compute_rest_props","compute_slots","construct_svelte_component","construct_svelte_component_dev","contenteditable_truthy_values","createEventDispatcher","create_animation","create_bidirectional_transition","create_component","create_custom_element","create_in_transition","create_out_transition","create_slot","create_ssr_component","current_component","custom_event","dataset_dev","debug","destroy_block","destroy_component","destroy_each","detach","detach_after_dev","detach_before_dev","detach_between_dev","detach_dev","dirty_components","dispatch_dev","each","element","element_is","empty","end_hydrating","ensure_array_like","ensure_array_like_dev","escape","escape_attribute_value","escape_object","exclude_internal_props","fix_and_destroy_block","fix_and_outro_and_destroy_block","fix_position","flush","flush_render_callbacks","getAllContexts","getContext","get_all_dirty_from_scope","get_binding_group_value","get_current_component","get_custom_elements_slots","get_root_for_style","get_slot_changes","get_spread_object","get_spread_update","get_store_value","get_svelte_dataset","globals","group_outros","handle_promise","hasContext","has_prop","head_selector","identity","init","init_binding_group","init_binding_group_dynamic","insert","insert_dev","insert_hydration","insert_hydration_dev","intros","invalid_attribute_name_character","is_client","is_crossorigin","is_empty","is_function","is_promise","is_void","listen","listen_dev","loop","loop_guard","merge_ssr_styles","missing_component","mount_component","noop","not_equal","now","null_to_empty","object_without_properties","onDestroy","onMount","once","outro_and_destroy_block","prevent_default","prop_dev","query_selector_all","raf","resize_observer_border_box","resize_observer_content_box","resize_observer_device_pixel_content_box","run","run_all","safe_not_equal","schedule_update","select_multiple_value","select_option","select_options","select_value","self","setContext","set_attributes","set_current_component","set_custom_element_data","set_custom_element_data_map","set_data","set_data_contenteditable","set_data_contenteditable_dev","set_data_dev","set_data_maybe_contenteditable","set_data_maybe_contenteditable_dev","set_dynamic_element_data","set_input_type","set_input_value","set_now","set_raf","set_store_value","set_style","set_svg_attributes","space","split_css_unit","spread","src_url_equal","srcset_url_equal","start_hydrating","stop_immediate_propagation","stop_propagation","subscribe","svg_element","text","tick","time_ranges_to_array","to_number","toggle_class","transition_in","transition_out","trusted","update_await_block_branch","update_keyed_each","update_slot","update_slot_base","validate_component","validate_dynamic_element","validate_each_keys","validate_slots","validate_store","validate_void_dynamic_element","xlink_attr"]);
@@ -64,6 +64,9 @@ export default class AttributeWrapper extends BaseAttributeWrapper {
64
64
  /** @type {boolean} */
65
65
  is_src;
66
66
 
67
+ /** @type {boolean} */
68
+ is_srcset;
69
+
67
70
  /** @type {boolean} */
68
71
  is_select_value_attribute;
69
72
 
@@ -120,6 +123,9 @@ export default class AttributeWrapper extends BaseAttributeWrapper {
120
123
  this.is_src =
121
124
  this.name === 'src' &&
122
125
  (!this.parent.node.namespace || this.parent.node.namespace === namespaces.html);
126
+ this.is_srcset =
127
+ this.name === 'srcset' &&
128
+ (!this.parent.node.namespace || this.parent.node.namespace === namespaces.html);
123
129
  this.should_cache = should_cache(this);
124
130
  }
125
131
 
@@ -164,6 +170,11 @@ export default class AttributeWrapper extends BaseAttributeWrapper {
164
170
  b`if (!@src_url_equal(${element.var}.src, ${init})) ${method}(${element.var}, "${name}", ${this.last});`
165
171
  );
166
172
  updater = b`${method}(${element.var}, "${name}", ${should_cache ? this.last : value});`;
173
+ } else if (this.is_srcset) {
174
+ block.chunks.hydrate.push(
175
+ b`if (!@srcset_url_equal(${element.var}, ${init})) ${method}(${element.var}, "${name}", ${this.last});`
176
+ );
177
+ updater = b`${method}(${element.var}, "${name}", ${should_cache ? this.last : value});`;
167
178
  } else if (property_name) {
168
179
  block.chunks.hydrate.push(b`${element.var}.${property_name} = ${init};`);
169
180
  updater = block.renderer.options.dev
@@ -403,7 +414,7 @@ Object.keys(attribute_lookup).forEach((name) => {
403
414
 
404
415
  /** @param {AttributeWrapper} attribute */
405
416
  function should_cache(attribute) {
406
- return attribute.is_src || attribute.node.should_cache();
417
+ return attribute.is_src || attribute.is_srcset || attribute.node.should_cache();
407
418
  }
408
419
  const regex_contains_checked_or_group = /checked|group/;
409
420
 
@@ -26,7 +26,7 @@ export default class RawMustacheTagWrapper extends Tag {
26
26
  render(block, parent_node, _parent_nodes) {
27
27
  const in_head = is_head(parent_node);
28
28
  const can_use_innerhtml = !in_head && parent_node && !this.prev && !this.next;
29
- if (can_use_innerhtml) {
29
+ if (can_use_innerhtml && !this.renderer.options.hydratable) {
30
30
  /** @param {import('estree').Node} content */
31
31
  const insert = (content) => b`${parent_node}.innerHTML = ${content};`[0];
32
32
  const { init } = this.rename_this_method(block, (content) => insert(content));
@@ -13,7 +13,9 @@ import {
13
13
  start_hydrating,
14
14
  end_hydrating,
15
15
  get_custom_elements_slots,
16
- insert
16
+ insert,
17
+ element,
18
+ attr
17
19
  } from './dom.js';
18
20
  import { transition_in } from './transitions.js';
19
21
 
@@ -157,23 +159,29 @@ export let SvelteElement;
157
159
 
158
160
  if (typeof HTMLElement === 'function') {
159
161
  SvelteElement = class extends HTMLElement {
160
- $$componentCtor;
161
- $$slots;
162
- $$component;
163
- $$connected = false;
164
- $$data = {};
165
- $$reflecting = false;
166
- /** @type {Record<string, CustomElementPropDefinition>} */
167
- $$props_definition = {};
168
- /** @type {Record<string, Function[]>} */
169
- $$listeners = {};
170
- /** @type {Map<Function, Function>} */
171
- $$listener_unsubscribe_fns = new Map();
162
+ /** The Svelte component constructor */
163
+ $$ctor;
164
+ /** Slots */
165
+ $$s;
166
+ /** The Svelte component instance */
167
+ $$c;
168
+ /** Whether or not the custom element is connected */
169
+ $$cn = false;
170
+ /** Component props data */
171
+ $$d = {};
172
+ /** `true` if currently in the process of reflecting component props back to attributes */
173
+ $$r = false;
174
+ /** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */
175
+ $$p_d = {};
176
+ /** @type {Record<string, Function[]>} Event listeners */
177
+ $$l = {};
178
+ /** @type {Map<Function, Function>} Event listener unsubscribe functions */
179
+ $$l_u = new Map();
172
180
 
173
181
  constructor($$componentCtor, $$slots, use_shadow_dom) {
174
182
  super();
175
- this.$$componentCtor = $$componentCtor;
176
- this.$$slots = $$slots;
183
+ this.$$ctor = $$componentCtor;
184
+ this.$$s = $$slots;
177
185
  if (use_shadow_dom) {
178
186
  this.attachShadow({ mode: 'open' });
179
187
  }
@@ -183,32 +191,32 @@ if (typeof HTMLElement === 'function') {
183
191
  // We can't determine upfront if the event is a custom event or not, so we have to
184
192
  // listen to both. If someone uses a custom event with the same name as a regular
185
193
  // browser event, this fires twice - we can't avoid that.
186
- this.$$listeners[type] = this.$$listeners[type] || [];
187
- this.$$listeners[type].push(listener);
188
- if (this.$$component) {
189
- const unsub = this.$$component.$on(type, listener);
190
- this.$$listener_unsubscribe_fns.set(listener, unsub);
194
+ this.$$l[type] = this.$$l[type] || [];
195
+ this.$$l[type].push(listener);
196
+ if (this.$$c) {
197
+ const unsub = this.$$c.$on(type, listener);
198
+ this.$$l_u.set(listener, unsub);
191
199
  }
192
200
  super.addEventListener(type, listener, options);
193
201
  }
194
202
 
195
203
  removeEventListener(type, listener, options) {
196
204
  super.removeEventListener(type, listener, options);
197
- if (this.$$component) {
198
- const unsub = this.$$listener_unsubscribe_fns.get(listener);
205
+ if (this.$$c) {
206
+ const unsub = this.$$l_u.get(listener);
199
207
  if (unsub) {
200
208
  unsub();
201
- this.$$listener_unsubscribe_fns.delete(listener);
209
+ this.$$l_u.delete(listener);
202
210
  }
203
211
  }
204
212
  }
205
213
 
206
214
  async connectedCallback() {
207
- this.$$connected = true;
208
- if (!this.$$component) {
215
+ this.$$cn = true;
216
+ if (!this.$$c) {
209
217
  // We wait one tick to let possible child slot elements be created/mounted
210
218
  await Promise.resolve();
211
- if (!this.$$connected) {
219
+ if (!this.$$cn) {
212
220
  return;
213
221
  }
214
222
  function create_slot(name) {
@@ -216,9 +224,9 @@ if (typeof HTMLElement === 'function') {
216
224
  let node;
217
225
  const obj = {
218
226
  c: function create() {
219
- node = document.createElement('slot');
227
+ node = element('slot');
220
228
  if (name !== 'default') {
221
- node.setAttribute('name', name);
229
+ attr(node, 'name', name);
222
230
  }
223
231
  },
224
232
  /**
@@ -239,74 +247,89 @@ if (typeof HTMLElement === 'function') {
239
247
  }
240
248
  const $$slots = {};
241
249
  const existing_slots = get_custom_elements_slots(this);
242
- for (const name of this.$$slots) {
250
+ for (const name of this.$$s) {
243
251
  if (name in existing_slots) {
244
252
  $$slots[name] = [create_slot(name)];
245
253
  }
246
254
  }
247
255
  for (const attribute of this.attributes) {
248
256
  // this.$$data takes precedence over this.attributes
249
- const name = this.$$get_prop_name(attribute.name);
250
- if (!(name in this.$$data)) {
251
- this.$$data[name] = get_custom_element_value(
252
- name,
253
- attribute.value,
254
- this.$$props_definition,
255
- 'toProp'
256
- );
257
+ const name = this.$$g_p(attribute.name);
258
+ if (!(name in this.$$d)) {
259
+ this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');
257
260
  }
258
261
  }
259
- this.$$component = new this.$$componentCtor({
262
+ this.$$c = new this.$$ctor({
260
263
  target: this.shadowRoot || this,
261
264
  props: {
262
- ...this.$$data,
265
+ ...this.$$d,
263
266
  $$slots,
264
267
  $$scope: {
265
268
  ctx: []
266
269
  }
267
270
  }
268
271
  });
269
- for (const type in this.$$listeners) {
270
- for (const listener of this.$$listeners[type]) {
271
- const unsub = this.$$component.$on(type, listener);
272
- this.$$listener_unsubscribe_fns.set(listener, unsub);
272
+
273
+ // Reflect component props as attributes
274
+ const reflect_attributes = () => {
275
+ this.$$r = true;
276
+ for (const key in this.$$p_d) {
277
+ this.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];
278
+ if (this.$$p_d[key].reflect) {
279
+ const attribute_value = get_custom_element_value(
280
+ key,
281
+ this.$$d[key],
282
+ this.$$p_d,
283
+ 'toAttribute'
284
+ );
285
+ if (attribute_value == null) {
286
+ this.removeAttribute(key);
287
+ } else {
288
+ this.setAttribute(this.$$p_d[key].attribute || key, attribute_value);
289
+ }
290
+ }
291
+ }
292
+ this.$$r = false;
293
+ };
294
+ this.$$c.$$.after_update.push(reflect_attributes);
295
+ reflect_attributes(); // once initially because after_update is added too late for first render
296
+
297
+ for (const type in this.$$l) {
298
+ for (const listener of this.$$l[type]) {
299
+ const unsub = this.$$c.$on(type, listener);
300
+ this.$$l_u.set(listener, unsub);
273
301
  }
274
302
  }
275
- this.$$listeners = {};
303
+ this.$$l = {};
276
304
  }
277
305
  }
278
306
 
279
307
  // We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte
280
308
  // and setting attributes through setAttribute etc, this is helpful
281
309
  attributeChangedCallback(attr, _oldValue, newValue) {
282
- if (this.$$reflecting) return;
283
- attr = this.$$get_prop_name(attr);
284
- this.$$data[attr] = get_custom_element_value(
285
- attr,
286
- newValue,
287
- this.$$props_definition,
288
- 'toProp'
289
- );
290
- this.$$component?.$set({ [attr]: this.$$data[attr] });
310
+ if (this.$$r) return;
311
+ attr = this.$$g_p(attr);
312
+ this.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');
313
+ this.$$c?.$set({ [attr]: this.$$d[attr] });
291
314
  }
292
315
 
293
316
  disconnectedCallback() {
294
- this.$$connected = false;
317
+ this.$$cn = false;
295
318
  // In a microtask, because this could be a move within the DOM
296
319
  Promise.resolve().then(() => {
297
- if (!this.$$connected) {
298
- this.$$component.$destroy();
299
- this.$$component = undefined;
320
+ if (!this.$$cn) {
321
+ this.$$c.$destroy();
322
+ this.$$c = undefined;
300
323
  }
301
324
  });
302
325
  }
303
326
 
304
- $$get_prop_name(attribute_name) {
327
+ $$g_p(attribute_name) {
305
328
  return (
306
- Object.keys(this.$$props_definition).find(
329
+ Object.keys(this.$$p_d).find(
307
330
  (key) =>
308
- this.$$props_definition[key].attribute === attribute_name ||
309
- (!this.$$props_definition[key].attribute && key.toLowerCase() === attribute_name)
331
+ this.$$p_d[key].attribute === attribute_name ||
332
+ (!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)
310
333
  ) || attribute_name
311
334
  );
312
335
  }
@@ -371,7 +394,7 @@ export function create_custom_element(
371
394
  const Class = class extends SvelteElement {
372
395
  constructor() {
373
396
  super(Component, slots, use_shadow_dom);
374
- this.$$props_definition = props_definition;
397
+ this.$$p_d = props_definition;
375
398
  }
376
399
  static get observedAttributes() {
377
400
  return Object.keys(props_definition).map((key) =>
@@ -382,36 +405,19 @@ export function create_custom_element(
382
405
  Object.keys(props_definition).forEach((prop) => {
383
406
  Object.defineProperty(Class.prototype, prop, {
384
407
  get() {
385
- return this.$$component && prop in this.$$component
386
- ? this.$$component[prop]
387
- : this.$$data[prop];
408
+ return this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];
388
409
  },
389
410
  set(value) {
390
411
  value = get_custom_element_value(prop, value, props_definition);
391
- this.$$data[prop] = value;
392
- this.$$component?.$set({ [prop]: value });
393
- if (props_definition[prop].reflect) {
394
- this.$$reflecting = true;
395
- const attribute_value = get_custom_element_value(
396
- prop,
397
- value,
398
- props_definition,
399
- 'toAttribute'
400
- );
401
- if (attribute_value == null) {
402
- this.removeAttribute(prop);
403
- } else {
404
- this.setAttribute(props_definition[prop].attribute || prop, attribute_value);
405
- }
406
- this.$$reflecting = false;
407
- }
412
+ this.$$d[prop] = value;
413
+ this.$$c?.$set({ [prop]: value });
408
414
  }
409
415
  });
410
416
  });
411
417
  accessors.forEach((accessor) => {
412
418
  Object.defineProperty(Class.prototype, accessor, {
413
419
  get() {
414
- return this.$$component?.[accessor];
420
+ return this.$$c?.[accessor];
415
421
  }
416
422
  });
417
423
  });
@@ -68,15 +68,50 @@ export function safe_not_equal(a, b) {
68
68
 
69
69
  let src_url_equal_anchor;
70
70
 
71
- /** @returns {boolean} */
71
+ /**
72
+ * @param {string} element_src
73
+ * @param {string} url
74
+ * @returns {boolean}
75
+ */
72
76
  export function src_url_equal(element_src, url) {
77
+ if (element_src === url) return true;
73
78
  if (!src_url_equal_anchor) {
74
79
  src_url_equal_anchor = document.createElement('a');
75
80
  }
81
+ // This is actually faster than doing URL(..).href
76
82
  src_url_equal_anchor.href = url;
77
83
  return element_src === src_url_equal_anchor.href;
78
84
  }
79
85
 
86
+ /** @param {string} srcset */
87
+ function split_srcset(srcset) {
88
+ return srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));
89
+ }
90
+
91
+ /**
92
+ * @param {HTMLSourceElement | HTMLImageElement} element_srcset
93
+ * @param {string} srcset
94
+ * @returns {boolean}
95
+ */
96
+ export function srcset_url_equal(element_srcset, srcset) {
97
+ const element_urls = split_srcset(element_srcset.srcset);
98
+ const urls = split_srcset(srcset);
99
+
100
+ return (
101
+ urls.length === element_urls.length &&
102
+ urls.every(
103
+ ([url, width], i) =>
104
+ width === element_urls[i][1] &&
105
+ // We need to test both ways because Vite will create an a full URL with
106
+ // `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the
107
+ // relative URLs inside srcset are not automatically resolved to absolute URLs by
108
+ // browsers (in contrast to img.src). This means both SSR and DOM code could
109
+ // contain relative or absolute URLs.
110
+ (src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))
111
+ )
112
+ );
113
+ }
114
+
80
115
  /** @returns {boolean} */
81
116
  export function not_equal(a, b) {
82
117
  return a != a ? b == b : a !== b;
@@ -6,5 +6,5 @@
6
6
  * https://svelte.dev/docs/svelte-compiler#svelte-version
7
7
  * @type {string}
8
8
  */
9
- export const VERSION = '4.0.1';
9
+ export const VERSION = '4.0.2';
10
10
  export const PUBLIC_VERSION = '4';
@@ -179,5 +179,5 @@
179
179
  null,
180
180
  null
181
181
  ],
182
- "mappings": "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"
182
+ "mappings": "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"
183
183
  }