@rool-dev/extension 0.3.11 → 0.3.12-dev.586f1cb

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.
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/shared/utils.js
1
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/shared/utils.js
2
2
  var is_array = Array.isArray;
3
3
  var index_of = Array.prototype.indexOf;
4
4
  var includes = Array.prototype.includes;
@@ -97,7 +97,7 @@ function lifecycle_outside_component(name) {
97
97
  throw new Error(`https://svelte.dev/e/lifecycle_outside_component`);
98
98
  }
99
99
  //#endregion
100
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/errors.js
100
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/errors.js
101
101
  /**
102
102
  * Cannot create a `$derived(...)` with an `await` expression outside of an effect tree
103
103
  * @returns {never}
@@ -182,7 +182,7 @@ function svelte_boundary_reset_onerror() {
182
182
  throw new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`);
183
183
  }
184
184
  //#endregion
185
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/constants.js
185
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/constants.js
186
186
  var HYDRATION_ERROR = {};
187
187
  var UNINITIALIZED = Symbol();
188
188
  var NAMESPACE_HTML = "http://www.w3.org/1999/xhtml";
@@ -200,7 +200,7 @@ function svelte_boundary_reset_noop() {
200
200
  console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`);
201
201
  }
202
202
  //#endregion
203
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/hydration.js
203
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/hydration.js
204
204
  /** @import { TemplateNode } from '#client' */
205
205
  /**
206
206
  * Use this variable to guard everything related to hydration code so it can be treeshaken out
@@ -279,7 +279,7 @@ function read_hydration_instruction(node) {
279
279
  return node.data;
280
280
  }
281
281
  //#endregion
282
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/equality.js
282
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/equality.js
283
283
  /** @import { Equals } from '#client' */
284
284
  /** @type {Equals} */
285
285
  function equals(value) {
@@ -298,13 +298,13 @@ function safe_equals(value) {
298
298
  return !safe_not_equal(value, this.v);
299
299
  }
300
300
  //#endregion
301
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/flags/index.js
301
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/flags/index.js
302
302
  /** True if experimental.async=true */
303
303
  var async_mode_flag = false;
304
304
  /** True if we're not certain that we only have Svelte 5 code in the compilation */
305
305
  var legacy_mode_flag = false;
306
306
  //#endregion
307
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/context.js
307
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/context.js
308
308
  /** @import { ComponentContext, DevStackEntry, Effect } from '#client' */
309
309
  /** @type {ComponentContext | null} */
310
310
  var component_context = null;
@@ -390,7 +390,7 @@ function get_parent_context(component_context) {
390
390
  return null;
391
391
  }
392
392
  //#endregion
393
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/task.js
393
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/task.js
394
394
  /** @type {Array<() => void>} */
395
395
  var micro_tasks = [];
396
396
  function run_micro_tasks() {
@@ -448,7 +448,7 @@ function invoke_error_boundary(error, effect) {
448
448
  throw error;
449
449
  }
450
450
  //#endregion
451
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/status.js
451
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/status.js
452
452
  /** @import { Derived, Signal } from '#client' */
453
453
  var STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);
454
454
  /**
@@ -467,7 +467,7 @@ function update_derived_status(derived) {
467
467
  else set_signal_status(derived, MAYBE_DIRTY);
468
468
  }
469
469
  //#endregion
470
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/utils.js
470
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/utils.js
471
471
  /** @import { Derived, Effect, Value } from '#client' */
472
472
  /**
473
473
  * @param {Value[] | null} deps
@@ -495,7 +495,7 @@ function defer_effect(effect, dirty_effects, maybe_dirty_effects) {
495
495
  set_signal_status(effect, CLEAN);
496
496
  }
497
497
  //#endregion
498
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/store.js
498
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/store.js
499
499
  /**
500
500
  * We set this to `true` when updating a store so that we correctly
501
501
  * schedule effects if the update takes place inside a `$:` effect
@@ -525,7 +525,7 @@ function capture_store_binding(fn) {
525
525
  }
526
526
  }
527
527
  //#endregion
528
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/batch.js
528
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/batch.js
529
529
  /** @import { Fork } from 'svelte' */
530
530
  /** @import { Derived, Effect, Reaction, Source, Value } from '#client' */
531
531
  /** @type {Set<Batch>} */
@@ -563,15 +563,16 @@ var uid = 1;
563
563
  var Batch = class Batch {
564
564
  id = uid++;
565
565
  /**
566
- * The current values of any sources that are updated in this batch
566
+ * The current values of any signals that are updated in this batch.
567
+ * Tuple format: [value, is_derived] (note: is_derived is false for deriveds, too, if they were overridden via assignment)
567
568
  * They keys of this map are identical to `this.#previous`
568
- * @type {Map<Source, any>}
569
+ * @type {Map<Value, [any, boolean]>}
569
570
  */
570
571
  current = /* @__PURE__ */ new Map();
571
572
  /**
572
- * The values of any sources that are updated in this batch _before_ those updates took place.
573
+ * The values of any signals (sources and deriveds) that are updated in this batch _before_ those updates took place.
573
574
  * They keys of this map are identical to `this.#current`
574
- * @type {Map<Source, any>}
575
+ * @type {Map<Value, any>}
575
576
  */
576
577
  previous = /* @__PURE__ */ new Map();
577
578
  /**
@@ -586,13 +587,15 @@ var Batch = class Batch {
586
587
  */
587
588
  #discard_callbacks = /* @__PURE__ */ new Set();
588
589
  /**
589
- * The number of async effects that are currently in flight
590
+ * Async effects that are currently in flight
591
+ * @type {Map<Effect, number>}
590
592
  */
591
- #pending = 0;
593
+ #pending = /* @__PURE__ */ new Map();
592
594
  /**
593
- * The number of async effects that are currently in flight, _not_ inside a pending boundary
595
+ * Async effects that are currently in flight, _not_ inside a pending boundary
596
+ * @type {Map<Effect, number>}
594
597
  */
595
- #blocking_pending = 0;
598
+ #blocking_pending = /* @__PURE__ */ new Map();
596
599
  /**
597
600
  * A deferred that resolves when the batch is committed, used with `settled()`
598
601
  * TODO replace with Promise.withResolvers once supported widely enough
@@ -605,6 +608,11 @@ var Batch = class Batch {
605
608
  */
606
609
  #roots = [];
607
610
  /**
611
+ * Effects created while this batch was active.
612
+ * @type {Effect[]}
613
+ */
614
+ #new_effects = [];
615
+ /**
608
616
  * Deferred effects (which run after async work has completed) that are DIRTY
609
617
  * @type {Set<Effect>}
610
618
  */
@@ -624,8 +632,25 @@ var Batch = class Batch {
624
632
  #skipped_branches = /* @__PURE__ */ new Map();
625
633
  is_fork = false;
626
634
  #decrement_queued = false;
635
+ /** @type {Set<Batch>} */
636
+ #blockers = /* @__PURE__ */ new Set();
627
637
  #is_deferred() {
628
- return this.is_fork || this.#blocking_pending > 0;
638
+ return this.is_fork || this.#blocking_pending.size > 0;
639
+ }
640
+ #is_blocked() {
641
+ for (const batch of this.#blockers) for (const effect of batch.#blocking_pending.keys()) {
642
+ var skipped = false;
643
+ var e = effect;
644
+ while (e.parent !== null) {
645
+ if (this.#skipped_branches.has(e)) {
646
+ skipped = true;
647
+ break;
648
+ }
649
+ e = e.parent;
650
+ }
651
+ if (!skipped) return true;
652
+ }
653
+ return false;
629
654
  }
630
655
  /**
631
656
  * Add an effect to the #skipped_branches map and reset its children
@@ -697,12 +722,12 @@ var Batch = class Batch {
697
722
  }
698
723
  collected_effects = null;
699
724
  legacy_updates = null;
700
- if (this.#is_deferred()) {
725
+ if (this.#is_deferred() || this.#is_blocked()) {
701
726
  this.#defer_effects(render_effects);
702
727
  this.#defer_effects(effects);
703
728
  for (const [e, t] of this.#skipped_branches) reset_branch(e, t);
704
729
  } else {
705
- if (this.#pending === 0) batches.delete(this);
730
+ if (this.#pending.size === 0) batches.delete(this);
706
731
  this.#dirty_effects.clear();
707
732
  this.#maybe_dirty_effects.clear();
708
733
  for (const fn of this.#commit_callbacks) fn(this);
@@ -768,13 +793,14 @@ var Batch = class Batch {
768
793
  /**
769
794
  * Associate a change to a given source with the current
770
795
  * batch, noting its previous and current values
771
- * @param {Source} source
796
+ * @param {Value} source
772
797
  * @param {any} old_value
798
+ * @param {boolean} [is_derived]
773
799
  */
774
- capture(source, old_value) {
800
+ capture(source, old_value, is_derived = false) {
775
801
  if (old_value !== UNINITIALIZED && !this.previous.has(source)) this.previous.set(source, old_value);
776
802
  if ((source.f & 8388608) === 0) {
777
- this.current.set(source, source.v);
803
+ this.current.set(source, [source.v, is_derived]);
778
804
  batch_values?.set(source, source.v);
779
805
  }
780
806
  }
@@ -806,14 +832,23 @@ var Batch = class Batch {
806
832
  this.#discard_callbacks.clear();
807
833
  batches.delete(this);
808
834
  }
835
+ /**
836
+ * @param {Effect} effect
837
+ */
838
+ register_created_effect(effect) {
839
+ this.#new_effects.push(effect);
840
+ }
809
841
  #commit() {
810
842
  for (const batch of batches) {
811
843
  var is_earlier = batch.id < this.id;
812
844
  /** @type {Source[]} */
813
845
  var sources = [];
814
- for (const [source, value] of this.current) {
815
- if (batch.current.has(source)) if (is_earlier && value !== batch.current.get(source)) batch.current.set(source, value);
816
- else continue;
846
+ for (const [source, [value, is_derived]] of this.current) {
847
+ if (batch.current.has(source)) {
848
+ var batch_value = batch.current.get(source)[0];
849
+ if (is_earlier && value !== batch_value) batch.current.set(source, [value, is_derived]);
850
+ else continue;
851
+ }
817
852
  sources.push(source);
818
853
  }
819
854
  var others = [...batch.current.keys()].filter((s) => !this.current.has(s));
@@ -826,6 +861,12 @@ var Batch = class Batch {
826
861
  /** @type {Map<Reaction, boolean>} */
827
862
  var checked = /* @__PURE__ */ new Map();
828
863
  for (var source of sources) mark_effects(source, others, marked, checked);
864
+ checked = /* @__PURE__ */ new Map();
865
+ var current_unequal = [...batch.current.keys()].filter((c) => this.current.has(c) ? this.current.get(c)[0] !== c : true);
866
+ for (const effect of this.#new_effects) if ((effect.f & 155648) === 0 && depends_on(effect, current_unequal, checked)) if ((effect.f & 4194320) !== 0) {
867
+ set_signal_status(effect, DIRTY);
868
+ batch.schedule(effect);
869
+ } else batch.#dirty_effects.add(effect);
829
870
  if (batch.#roots.length > 0) {
830
871
  batch.apply();
831
872
  for (var root of batch.#roots) batch.#traverse(root, [], []);
@@ -834,22 +875,40 @@ var Batch = class Batch {
834
875
  batch.deactivate();
835
876
  }
836
877
  }
878
+ for (const batch of batches) if (batch.#blockers.has(this)) {
879
+ batch.#blockers.delete(this);
880
+ if (batch.#blockers.size === 0 && !batch.#is_deferred()) {
881
+ batch.activate();
882
+ batch.#process();
883
+ }
884
+ }
837
885
  }
838
886
  /**
839
- *
840
887
  * @param {boolean} blocking
888
+ * @param {Effect} effect
841
889
  */
842
- increment(blocking) {
843
- this.#pending += 1;
844
- if (blocking) this.#blocking_pending += 1;
890
+ increment(blocking, effect) {
891
+ let pending_count = this.#pending.get(effect) ?? 0;
892
+ this.#pending.set(effect, pending_count + 1);
893
+ if (blocking) {
894
+ let blocking_pending_count = this.#blocking_pending.get(effect) ?? 0;
895
+ this.#blocking_pending.set(effect, blocking_pending_count + 1);
896
+ }
845
897
  }
846
898
  /**
847
899
  * @param {boolean} blocking
900
+ * @param {Effect} effect
848
901
  * @param {boolean} skip - whether to skip updates (because this is triggered by a stale reaction)
849
902
  */
850
- decrement(blocking, skip) {
851
- this.#pending -= 1;
852
- if (blocking) this.#blocking_pending -= 1;
903
+ decrement(blocking, effect, skip) {
904
+ let pending_count = this.#pending.get(effect) ?? 0;
905
+ if (pending_count === 1) this.#pending.delete(effect);
906
+ else this.#pending.set(effect, pending_count - 1);
907
+ if (blocking) {
908
+ let blocking_pending_count = this.#blocking_pending.get(effect) ?? 0;
909
+ if (blocking_pending_count === 1) this.#blocking_pending.delete(effect);
910
+ else this.#blocking_pending.set(effect, blocking_pending_count - 1);
911
+ }
853
912
  if (this.#decrement_queued || skip) return;
854
913
  this.#decrement_queued = true;
855
914
  queue_micro_task(() => {
@@ -896,10 +955,19 @@ var Batch = class Batch {
896
955
  batch_values = null;
897
956
  return;
898
957
  }
899
- batch_values = new Map(this.current);
958
+ batch_values = /* @__PURE__ */ new Map();
959
+ for (const [source, [value]] of this.current) batch_values.set(source, value);
900
960
  for (const batch of batches) {
901
961
  if (batch === this || batch.is_fork) continue;
902
- for (const [source, previous] of batch.previous) if (!batch_values.has(source)) batch_values.set(source, previous);
962
+ var intersects = false;
963
+ var differs = false;
964
+ if (batch.id < this.id) for (const [source, [, is_derived]] of batch.current) {
965
+ if (is_derived) continue;
966
+ intersects ||= this.current.has(source);
967
+ differs ||= !this.current.has(source);
968
+ }
969
+ if (intersects && differs) this.#blockers.add(batch);
970
+ else for (const [source, previous] of batch.previous) if (!batch_values.has(source)) batch_values.set(source, previous);
903
971
  }
904
972
  }
905
973
  /**
@@ -1079,7 +1147,7 @@ function reset_all(effect) {
1079
1147
  }
1080
1148
  }
1081
1149
  //#endregion
1082
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/reactivity/create-subscriber.js
1150
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/reactivity/create-subscriber.js
1083
1151
  /**
1084
1152
  * Returns a `subscribe` function that integrates external event-based systems with Svelte's reactivity.
1085
1153
  * It's particularly useful for integrating with web APIs like `MediaQuery`, `IntersectionObserver`, or `WebSocket`.
@@ -1152,7 +1220,7 @@ function createSubscriber(start) {
1152
1220
  };
1153
1221
  }
1154
1222
  //#endregion
1155
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/blocks/boundary.js
1223
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/blocks/boundary.js
1156
1224
  /** @import { Effect, Source, TemplateNode, } from '#client' */
1157
1225
  /**
1158
1226
  * @typedef {{
@@ -1481,7 +1549,7 @@ var Boundary = class {
1481
1549
  }
1482
1550
  };
1483
1551
  //#endregion
1484
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/async.js
1552
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/async.js
1485
1553
  /** @import { Blocker, Effect, Value } from '#client' */
1486
1554
  /**
1487
1555
  * @param {Blocker[]} blockers
@@ -1554,14 +1622,15 @@ function unset_context(deactivate_batch = true) {
1554
1622
  * @returns {(skip?: boolean) => void}
1555
1623
  */
1556
1624
  function increment_pending() {
1557
- var boundary = active_effect.b;
1625
+ var effect = active_effect;
1626
+ var boundary = effect.b;
1558
1627
  var batch = current_batch;
1559
1628
  var blocking = boundary.is_rendered();
1560
1629
  boundary.update_pending_count(1, batch);
1561
- batch.increment(blocking);
1630
+ batch.increment(blocking, effect);
1562
1631
  return (skip = false) => {
1563
1632
  boundary.update_pending_count(-1, batch);
1564
- batch.decrement(blocking, skip);
1633
+ batch.decrement(blocking, effect, skip);
1565
1634
  };
1566
1635
  }
1567
1636
  /**
@@ -1741,7 +1810,7 @@ function update_derived(derived) {
1741
1810
  derived.wv = increment_write_version();
1742
1811
  if (!current_batch?.is_fork || derived.deps === null) {
1743
1812
  derived.v = value;
1744
- current_batch?.capture(derived, old_value);
1813
+ current_batch?.capture(derived, old_value, true);
1745
1814
  if (derived.deps === null) {
1746
1815
  set_signal_status(derived, CLEAN);
1747
1816
  return;
@@ -1775,7 +1844,7 @@ function unfreeze_derived_effects(derived) {
1775
1844
  for (const e of derived.effects) if (e.teardown) update_effect(e);
1776
1845
  }
1777
1846
  //#endregion
1778
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/sources.js
1847
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/sources.js
1779
1848
  /** @import { Derived, Effect, Source, Value } from '#client' */
1780
1849
  /** @type {Set<any>} */
1781
1850
  var eager_effects = /* @__PURE__ */ new Set();
@@ -2067,7 +2136,7 @@ function proxy(value) {
2067
2136
  });
2068
2137
  }
2069
2138
  //#endregion
2070
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/operations.js
2139
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/operations.js
2071
2140
  /** @import { Effect, TemplateNode } from '#client' */
2072
2141
  /** @type {Window} */
2073
2142
  var $window;
@@ -2242,7 +2311,7 @@ function merge_text_nodes(text) {
2242
2311
  }
2243
2312
  }
2244
2313
  //#endregion
2245
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js
2314
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js
2246
2315
  /**
2247
2316
  * @template T
2248
2317
  * @param {() => T} fn
@@ -2260,7 +2329,7 @@ function without_reactive_context(fn) {
2260
2329
  }
2261
2330
  }
2262
2331
  //#endregion
2263
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/effects.js
2332
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/effects.js
2264
2333
  /** @import { Blocker, ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */
2265
2334
  /**
2266
2335
  * @param {'$effect' | '$effect.pre' | '$inspect'} rune
@@ -2310,6 +2379,7 @@ function create_effect(type, fn) {
2310
2379
  wv: 0,
2311
2380
  ac: null
2312
2381
  };
2382
+ current_batch?.register_created_effect(effect);
2313
2383
  /** @type {Effect | null} */
2314
2384
  var e = effect;
2315
2385
  if ((type & 4) !== 0) if (collected_effects !== null) collected_effects.push(effect);
@@ -2506,7 +2576,7 @@ function destroy_effect(effect, remove_dom = true) {
2506
2576
  effect.f |= DESTROYED;
2507
2577
  var parent = effect.parent;
2508
2578
  if (parent !== null && parent.first !== null) unlink_effect(effect);
2509
- effect.next = effect.prev = effect.teardown = effect.ctx = effect.deps = effect.fn = effect.nodes = effect.ac = null;
2579
+ effect.next = effect.prev = effect.teardown = effect.ctx = effect.deps = effect.fn = effect.nodes = effect.ac = effect.b = null;
2510
2580
  }
2511
2581
  /**
2512
2582
  *
@@ -2629,14 +2699,14 @@ function move_effect(effect, fragment) {
2629
2699
  }
2630
2700
  }
2631
2701
  //#endregion
2632
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/legacy.js
2702
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/legacy.js
2633
2703
  /**
2634
2704
  * @type {Set<Value> | null}
2635
2705
  * @deprecated
2636
2706
  */
2637
2707
  var captured_signals = null;
2638
2708
  //#endregion
2639
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/runtime.js
2709
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/runtime.js
2640
2710
  /** @import { Derived, Effect, Reaction, Source, Value } from '#client' */
2641
2711
  var is_updating_effect = false;
2642
2712
  var is_destroying_effect = false;
@@ -3005,7 +3075,7 @@ function is_passive_event(name) {
3005
3075
  return PASSIVE_EVENTS.includes(name);
3006
3076
  }
3007
3077
  //#endregion
3008
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/elements/events.js
3078
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/elements/events.js
3009
3079
  /**
3010
3080
  * Used on elements, as a map of event type -> event handler,
3011
3081
  * and on events themselves to track which element handled an event
@@ -3145,7 +3215,7 @@ function handle_event_propagation(event) {
3145
3215
  }
3146
3216
  }
3147
3217
  //#endregion
3148
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/reconciler.js
3218
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/reconciler.js
3149
3219
  var policy = globalThis?.window?.trustedTypes && /* @__PURE__ */ globalThis.window.trustedTypes.createPolicy("svelte-trusted-html", { createHTML: (html) => {
3150
3220
  return html;
3151
3221
  } });
@@ -3162,7 +3232,7 @@ function create_fragment_from_html(html) {
3162
3232
  return elem.content;
3163
3233
  }
3164
3234
  //#endregion
3165
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/template.js
3235
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/template.js
3166
3236
  /** @import { Effect, EffectNodes, TemplateNode } from '#client' */
3167
3237
  /** @import { TemplateStructure } from './types' */
3168
3238
  /**
@@ -3411,7 +3481,7 @@ function _mount(Component, { target, anchor, props = {}, events, context, intro
3411
3481
  */
3412
3482
  var mounted_components = /* @__PURE__ */ new WeakMap();
3413
3483
  //#endregion
3414
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/blocks/branches.js
3484
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/blocks/branches.js
3415
3485
  /** @import { Effect, TemplateNode } from '#client' */
3416
3486
  /**
3417
3487
  * @typedef {{ effect: Effect, fragment: DocumentFragment }} Branch
@@ -3556,7 +3626,7 @@ var BranchManager = class {
3556
3626
  }
3557
3627
  };
3558
3628
  //#endregion
3559
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/blocks/if.js
3629
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/blocks/if.js
3560
3630
  /** @import { TemplateNode } from '#client' */
3561
3631
  /**
3562
3632
  * @param {TemplateNode} node
@@ -3602,7 +3672,7 @@ function if_block(node, fn, elseif = false) {
3602
3672
  }, flags);
3603
3673
  }
3604
3674
  //#endregion
3605
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/blocks/each.js
3675
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/blocks/each.js
3606
3676
  /** @import { EachItem, EachOutroGroup, EachState, Effect, EffectNodes, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */
3607
3677
  /** @import { Batch } from '../../reactivity/batch.js'; */
3608
3678
  /**
@@ -4014,7 +4084,7 @@ function link(state, prev, next) {
4014
4084
  else next.prev = prev;
4015
4085
  }
4016
4086
  //#endregion
4017
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/css.js
4087
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/css.js
4018
4088
  /**
4019
4089
  * @param {Node} anchor
4020
4090
  * @param {{ hash: string, code: string }} css
@@ -4032,7 +4102,7 @@ function append_styles(anchor, css) {
4032
4102
  });
4033
4103
  }
4034
4104
  //#endregion
4035
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/shared/attributes.js
4105
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/shared/attributes.js
4036
4106
  var whitespace = [..." \n\r\f\xA0\v"];
4037
4107
  /**
4038
4108
  * @param {any} value
@@ -4058,7 +4128,7 @@ function to_class(value, hash, directives) {
4058
4128
  return classname === "" ? null : classname;
4059
4129
  }
4060
4130
  //#endregion
4061
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/elements/class.js
4131
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/elements/class.js
4062
4132
  /**
4063
4133
  * @param {Element} dom
4064
4134
  * @param {boolean | number} is_html
@@ -4083,7 +4153,7 @@ function set_class(dom, is_html, value, hash, prev_classes, next_classes) {
4083
4153
  return next_classes;
4084
4154
  }
4085
4155
  //#endregion
4086
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/elements/attributes.js
4156
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/elements/attributes.js
4087
4157
  /** @import { Blocker, Effect } from '#client' */
4088
4158
  var IS_CUSTOM_ELEMENT = Symbol("is custom element");
4089
4159
  var IS_HTML = Symbol("is html");
@@ -4144,7 +4214,7 @@ function get_setters(element) {
4144
4214
  */
4145
4215
  function check_src_in_dev_hydration(element, attribute, value) {}
4146
4216
  //#endregion
4147
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/dom/elements/bindings/this.js
4217
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/dom/elements/bindings/this.js
4148
4218
  /** @import { ComponentContext, Effect } from '#client' */
4149
4219
  /**
4150
4220
  * @param {any} bound_value
@@ -4196,7 +4266,7 @@ function bind_this(element_or_component = {}, update, get_value, get_parts) {
4196
4266
  return element_or_component;
4197
4267
  }
4198
4268
  //#endregion
4199
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/client/reactivity/props.js
4269
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/client/reactivity/props.js
4200
4270
  /** @import { Effect, Source } from './types.js' */
4201
4271
  /**
4202
4272
  * This function is responsible for synchronizing a possibly bound prop with the inner component state.
@@ -4319,7 +4389,7 @@ function init_update_callbacks(context) {
4319
4389
  };
4320
4390
  }
4321
4391
  //#endregion
4322
- //#region ../../node_modules/.pnpm/svelte@5.54.0/node_modules/svelte/src/internal/disclose-version.js
4392
+ //#region ../../node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/src/internal/disclose-version.js
4323
4393
  if (typeof window !== "undefined") ((window.__svelte ??= {}).v ??= /* @__PURE__ */ new Set()).add("5");
4324
4394
  //#endregion
4325
4395
  //#region ../sdk/src/event-emitter.ts
@@ -4486,11 +4556,12 @@ var BrowserAuthProvider = class {
4486
4556
  * Initiate login by redirecting to auth page.
4487
4557
  * @param appName - The name of the application requesting login (displayed on auth page)
4488
4558
  */
4489
- login(appName) {
4559
+ login(appName, options) {
4490
4560
  const loginUrl = new URL(`${this.authBaseUrl}/`);
4491
4561
  const redirectTarget = window.location.origin + window.location.pathname + window.location.search;
4492
4562
  loginUrl.searchParams.set("redirect_uri", redirectTarget);
4493
4563
  loginUrl.searchParams.set("app_name", appName);
4564
+ if (options?.signup) loginUrl.searchParams.set("signup", "true");
4494
4565
  const state = this.generateState();
4495
4566
  this.storeState(state);
4496
4567
  loginUrl.searchParams.set("state", state);
@@ -4763,8 +4834,8 @@ var AuthManager = class {
4763
4834
  * Initiate login.
4764
4835
  * @param appName - The name of the application requesting login (displayed on auth page)
4765
4836
  */
4766
- login(appName) {
4767
- return this.provider.login(appName);
4837
+ login(appName, options) {
4838
+ return this.provider.login(appName, options);
4768
4839
  }
4769
4840
  /**
4770
4841
  * Logout - clear all tokens and state.
@@ -5352,6 +5423,7 @@ var GraphQLClient = class {
5352
5423
  createdAt
5353
5424
  updatedAt
5354
5425
  linkAccess
5426
+ memberCount
5355
5427
  }
5356
5428
  }
5357
5429
  `)).listSpaces;
@@ -5363,6 +5435,7 @@ var GraphQLClient = class {
5363
5435
  name
5364
5436
  role
5365
5437
  linkAccess
5438
+ memberCount
5366
5439
  channels {
5367
5440
  id
5368
5441
  name
@@ -6679,7 +6752,8 @@ var ClientSubscriptionManager = class {
6679
6752
  createdAt: raw.createdAt,
6680
6753
  updatedAt: raw.updatedAt,
6681
6754
  role: raw.role,
6682
- linkAccess: raw.linkAccess
6755
+ linkAccess: raw.linkAccess,
6756
+ memberCount: raw.memberCount
6683
6757
  };
6684
6758
  case "user_storage_changed": return {
6685
6759
  type,
@@ -8339,6 +8413,7 @@ var RoolSpace = class {
8339
8413
  _name;
8340
8414
  _role;
8341
8415
  _linkAccess;
8416
+ _memberCount;
8342
8417
  _channels;
8343
8418
  graphqlClient;
8344
8419
  mediaClient;
@@ -8348,6 +8423,7 @@ var RoolSpace = class {
8348
8423
  this._name = config.name;
8349
8424
  this._role = config.role;
8350
8425
  this._linkAccess = config.linkAccess;
8426
+ this._memberCount = config.memberCount;
8351
8427
  this._channels = config.channels;
8352
8428
  this.graphqlClient = config.graphqlClient;
8353
8429
  this.mediaClient = config.mediaClient;
@@ -8365,6 +8441,9 @@ var RoolSpace = class {
8365
8441
  get linkAccess() {
8366
8442
  return this._linkAccess;
8367
8443
  }
8444
+ get memberCount() {
8445
+ return this._memberCount;
8446
+ }
8368
8447
  /**
8369
8448
  * Open a channel on this space.
8370
8449
  * If the channel doesn't exist, the server creates it.
@@ -8443,10 +8522,11 @@ var RoolSpace = class {
8443
8522
  * Updates name, role, linkAccess, and channel list.
8444
8523
  */
8445
8524
  async refresh() {
8446
- const { name, role, linkAccess, channels } = await this.graphqlClient.openSpace(this._id);
8525
+ const { name, role, linkAccess, memberCount, channels } = await this.graphqlClient.openSpace(this._id);
8447
8526
  this._name = name;
8448
8527
  this._role = role;
8449
8528
  this._linkAccess = linkAccess;
8529
+ this._memberCount = memberCount;
8450
8530
  this._channels = channels;
8451
8531
  }
8452
8532
  };
@@ -8542,8 +8622,8 @@ var RoolClient = class extends EventEmitter {
8542
8622
  * Initiate login by redirecting to auth page.
8543
8623
  * @param appName - The name of the application requesting login (displayed on auth page)
8544
8624
  */
8545
- async login(appName) {
8546
- return this.authManager.login(appName);
8625
+ async login(appName, options) {
8626
+ return this.authManager.login(appName, options);
8547
8627
  }
8548
8628
  /**
8549
8629
  * Logout - clear all tokens and state.
@@ -8649,12 +8729,13 @@ var RoolClient = class extends EventEmitter {
8649
8729
  * To work with objects and AI, call space.openChannel(channelId).
8650
8730
  */
8651
8731
  async openSpace(spaceId) {
8652
- const { name, role, linkAccess, channels } = await this.graphqlClient.openSpace(spaceId);
8732
+ const { name, role, linkAccess, memberCount, channels } = await this.graphqlClient.openSpace(spaceId);
8653
8733
  return new RoolSpace({
8654
8734
  id: spaceId,
8655
8735
  name,
8656
8736
  role,
8657
8737
  linkAccess,
8738
+ memberCount,
8658
8739
  channels,
8659
8740
  graphqlClient: this.graphqlClient,
8660
8741
  mediaClient: this.mediaClient,
@@ -8674,6 +8755,7 @@ var RoolClient = class extends EventEmitter {
8674
8755
  name,
8675
8756
  role: "owner",
8676
8757
  linkAccess: "none",
8758
+ memberCount: 1,
8677
8759
  channels: [],
8678
8760
  graphqlClient: this.graphqlClient,
8679
8761
  mediaClient: this.mediaClient,
@@ -8905,7 +8987,8 @@ var RoolClient = class extends EventEmitter {
8905
8987
  size: event.size ?? 0,
8906
8988
  createdAt: event.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
8907
8989
  updatedAt: event.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
8908
- linkAccess: "none"
8990
+ linkAccess: "none",
8991
+ memberCount: 1
8909
8992
  });
8910
8993
  break;
8911
8994
  case "space_deleted":
@@ -8924,7 +9007,8 @@ var RoolClient = class extends EventEmitter {
8924
9007
  size: event.size,
8925
9008
  createdAt: event.createdAt,
8926
9009
  updatedAt: event.updatedAt,
8927
- linkAccess: event.linkAccess
9010
+ linkAccess: event.linkAccess,
9011
+ memberCount: event.memberCount
8928
9012
  });
8929
9013
  break;
8930
9014
  case "user_storage_changed":
@@ -9573,7 +9657,7 @@ var root_29 = /* @__PURE__ */ from_html(`<div class="text-[11px] text-red-500 mt
9573
9657
  var root_22 = /* @__PURE__ */ from_html(`<div class="px-4 py-3 border-b border-slate-100"><div class="text-[10px] font-semibold text-slate-400 uppercase tracking-wider mb-1.5">Publish</div> <button><!></button> <!></div>`);
9574
9658
  var root_30 = /* @__PURE__ */ from_svg(`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>`);
9575
9659
  var root_31 = /* @__PURE__ */ from_svg(`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>`);
9576
- var root_2$1 = /* @__PURE__ */ from_html(`<div class="w-[280px] shrink-0 bg-white border-r border-slate-200 flex flex-col overflow-y-auto"><div class="px-4 pt-4 pb-3 border-b border-slate-100"><div class="flex items-start justify-between mb-1"><!> <button class="p-1 -mr-1 text-slate-400 hover:text-slate-600 transition-colors shrink-0" title="Collapse sidebar"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"></path></svg></button></div> <!> <!> <!></div> <!> <!> <!> <div class="px-4 py-3 border-b border-slate-100"><div class="text-[10px] font-semibold text-slate-400 uppercase tracking-wider mb-1.5">Environment</div> <div class="flex rounded-md border border-slate-200 overflow-hidden"><button>Local</button> <button>Dev</button> <button>Prod</button></div> <div class="text-[10px] text-slate-400 mt-1 font-mono"> </div></div> <div class="px-4 py-3 border-b border-slate-100"><div class="text-[10px] font-semibold text-slate-400 uppercase tracking-wider mb-1.5">Space</div> <div class="relative" data-dropdown=""><button type="button"> <svg class="absolute right-2.5 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"></path></svg></button> <!></div> <div class="text-[11px] text-slate-400 leading-normal mt-1.5"><span></span> </div></div> <!> <div class="px-4 py-3 mt-auto flex items-center justify-between"><a href="https://docs.rool.dev/extension" target="_blank" rel="noopener noreferrer" class="text-[11px] text-slate-400 hover:text-indigo-500 transition-colors">Documentation</a> <button class="p-1 text-slate-400 hover:text-indigo-500 transition-colors"><!></button> <button class="text-[11px] text-slate-400 hover:text-red-500 transition-colors">Sign out</button></div></div>`);
9660
+ var root_2$1 = /* @__PURE__ */ from_html(`<div class="w-[280px] shrink-0 bg-white border-r border-slate-200 flex flex-col overflow-y-auto"><div class="px-4 pt-4 pb-3 border-b border-slate-100"><div class="flex items-start justify-between mb-1"><!> <button class="p-1 -mr-1 text-slate-400 hover:text-slate-600 transition-colors shrink-0" title="Collapse sidebar"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"></path></svg></button></div> <!> <!> <!></div> <!> <!> <!> <div class="px-4 py-3 border-b border-slate-100"><div class="text-[10px] font-semibold text-slate-400 uppercase tracking-wider mb-1.5">Environment</div> <div class="flex rounded-md border border-slate-200 overflow-hidden"><button>Local</button> <button>Dev</button> <button>Prod</button></div> <div class="text-[10px] text-slate-400 mt-1 font-mono"> </div></div> <div class="px-4 py-3 border-b border-slate-100"><div class="text-[10px] font-semibold text-slate-400 uppercase tracking-wider mb-1.5">Space</div> <div class="relative" data-dropdown=""><button type="button"> <svg class="absolute right-2.5 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"></path></svg></button> <!></div> <div class="text-[11px] text-slate-400 leading-normal mt-1.5"><span></span> </div></div> <!> <div class="px-4 py-3 mt-auto flex items-center justify-between"><a href="https://docs.rool.dev/extension/" target="_blank" rel="noopener noreferrer" class="text-[11px] text-slate-400 hover:text-indigo-500 transition-colors">Documentation</a> <button class="p-1 text-slate-400 hover:text-indigo-500 transition-colors"><!></button> <button class="text-[11px] text-slate-400 hover:text-red-500 transition-colors">Sign out</button></div></div>`);
9577
9661
  function Sidebar($$anchor, $$props) {
9578
9662
  push($$props, true);
9579
9663
  let dropdownOpen = prop($$props, "dropdownOpen", 15);