@retoo/borda 0.0.2 → 0.1.1

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/dist/borda.cjs.js CHANGED
@@ -5381,6 +5381,8 @@ var BordaEvent = /* @__PURE__ */ function(BordaEvent) {
5381
5381
  BordaEvent["ON_TOUR_NEXT"] = "tour:next";
5382
5382
  /** Fired when navigating to the previous step. */
5383
5383
  BordaEvent["ON_TOUR_PREV"] = "tour:prev";
5384
+ /** Fired when a step's target fails to resolve to a DOM element, just before the tour closes. */
5385
+ BordaEvent["ON_TOUR_ERROR"] = "tour:error";
5384
5386
  /** Fired when the ArrowRight key is pressed during an active tour. */
5385
5387
  BordaEvent["ON_KEYBOARD_NEXT"] = "keyboard:next";
5386
5388
  /** Fired when the ArrowLeft key is pressed during an active tour. */
@@ -6183,6 +6185,14 @@ function useBordaAnimation(config) {
6183
6185
  }
6184
6186
  //#endregion
6185
6187
  //#region src/entities/step/model/lib/resolveBordaStepTarget.ts
6188
+ /** Runs `querySelector`, treating a malformed selector as "no match" instead of throwing. */
6189
+ function queryTarget(selector) {
6190
+ try {
6191
+ return document.querySelector(selector);
6192
+ } catch {
6193
+ return null;
6194
+ }
6195
+ }
6186
6196
  function buildSelector(query) {
6187
6197
  const parts = [];
6188
6198
  if (query.id) parts.push(`#${CSS.escape(query.id)}`);
@@ -6206,10 +6216,10 @@ function buildSelector(query) {
6206
6216
  function resolveBordaStepTarget(target) {
6207
6217
  if (!target) return null;
6208
6218
  if (target instanceof HTMLElement) return target;
6209
- if (typeof target === "string") return document.querySelector(target);
6219
+ if (typeof target === "string") return queryTarget(target);
6210
6220
  const selector = buildSelector(target);
6211
6221
  if (!selector) return null;
6212
- return document.querySelector(selector);
6222
+ return queryTarget(selector);
6213
6223
  }
6214
6224
  //#endregion
6215
6225
  //#region src/app/entrypoint/modules/borda-controller/lib/useBordaController.svelte.ts
@@ -6228,6 +6238,23 @@ function useBordaController(config, eventEmitter) {
6228
6238
  const hasNextStep = /* @__PURE__ */ user_derived(() => !get(isLastStep));
6229
6239
  const hasPrevStep = /* @__PURE__ */ user_derived(() => get(stepIndex) > 0);
6230
6240
  const tourConfig = /* @__PURE__ */ user_derived(() => config.getConfig().tour);
6241
+ /**
6242
+ * Verifies the current step's target resolved to a DOM element.
6243
+ *
6244
+ * Emits {@link BordaEvent.ON_TOUR_ERROR} followed by {@link BordaEvent.ON_TOUR_CLOSE}
6245
+ * when it didn't, instead of leaving the widget rendering nothing for a step
6246
+ * the user can't see or dismiss.
6247
+ *
6248
+ * @returns `true` when there is no step, or its target resolved; `false` when the tour was closed due to an error.
6249
+ */
6250
+ function checkCurrentTarget() {
6251
+ if (!get(step) || get(currentTarget)) return true;
6252
+ const error = new BordaError(`Borda: target for step ${get(currentStep)} did not resolve to an element.`);
6253
+ console.error(error);
6254
+ eventEmitter.emit(BordaEvent.ON_TOUR_ERROR, error);
6255
+ eventEmitter.emit(BordaEvent.ON_TOUR_CLOSE);
6256
+ return false;
6257
+ }
6231
6258
  function apply() {
6232
6259
  set(stepIndex, get(tourConfig)?.startStep ?? 0, true);
6233
6260
  get(tourConfig)?.onStart?.();
@@ -6241,6 +6268,7 @@ function useBordaController(config, eventEmitter) {
6241
6268
  await entering?.prepareElement?.();
6242
6269
  entering?.onBeforeHighlighted?.();
6243
6270
  set(stepIndex, index, true);
6271
+ if (!checkCurrentTarget()) return;
6244
6272
  entering?.onHighlighted?.();
6245
6273
  eventEmitter.emit(BordaEvent.ON_TOUR_STEP_CHANGE, get(currentStep));
6246
6274
  }
@@ -6332,7 +6360,8 @@ function useBordaController(config, eventEmitter) {
6332
6360
  prev,
6333
6361
  next,
6334
6362
  finish
6335
- }
6363
+ },
6364
+ checkCurrentTarget
6336
6365
  };
6337
6366
  }
6338
6367
  //#endregion
@@ -8413,11 +8442,9 @@ function useTooltipPosition({ getTargetElement, getTooltipElement, getPlacement,
8413
8442
  const padding = /* @__PURE__ */ user_derived(getPadding);
8414
8443
  const autoPlacement = /* @__PURE__ */ user_derived(getAutoPlacement);
8415
8444
  const arrowSide = /* @__PURE__ */ user_derived(getArrowSide);
8416
- user_effect(() => {
8445
+ /** Reads the live target/tooltip rects and writes the resolved position into state. */
8446
+ function recompute() {
8417
8447
  if (!get(target) || !get(tooltip)) return;
8418
- /** Re-run on scroll so auto-flip/shift recompute against the live viewport. */
8419
- scroll.x;
8420
- scroll.y;
8421
8448
  const layout = useTooltipLayout({
8422
8449
  target: get(target),
8423
8450
  tooltip: get(tooltip),
@@ -8436,6 +8463,19 @@ function useTooltipPosition({ getTargetElement, getTooltipElement, getPlacement,
8436
8463
  set(left, layout.position.left, true);
8437
8464
  set(effectivePlacement, layout.placement, true);
8438
8465
  set(arrowOffset, layout.arrowOffset, true);
8466
+ }
8467
+ user_effect(() => {
8468
+ if (!get(tooltip)) return;
8469
+ /** Re-run when the tooltip's own size changes (e.g. an image finishes loading). */
8470
+ const observer = new ResizeObserver(recompute);
8471
+ observer.observe(get(tooltip));
8472
+ return () => observer.disconnect();
8473
+ });
8474
+ user_effect(() => {
8475
+ /** Re-run on scroll so auto-flip/shift recompute against the live viewport. */
8476
+ scroll.x;
8477
+ scroll.y;
8478
+ recompute();
8439
8479
  });
8440
8480
  return {
8441
8481
  get top() {
@@ -8920,9 +8960,8 @@ function Borda($$anchor, $$props) {
8920
8960
  getDuration: () => $$props.animation.overlay.transitionDuration
8921
8961
  });
8922
8962
  useFocusTrap({ getContainer: () => get(bordaContainer)?.getElements()?.root ?? null });
8923
- const size = /* @__PURE__ */ user_derived(() => $$props.config.size);
8924
- const shape = /* @__PURE__ */ user_derived(() => $$props.config.shape);
8925
8963
  const rootClasses = /* @__PURE__ */ user_derived(() => ["rb"]);
8964
+ /** Container chrome isn't per-step content, so it always tracks the live config. */
8926
8965
  const containerProps = /* @__PURE__ */ user_derived(() => ({
8927
8966
  ...$$props.config.container,
8928
8967
  customClasses: {
@@ -8930,13 +8969,6 @@ function Borda($$anchor, $$props) {
8930
8969
  root: [$$props.config.container?.customClasses?.root, containerAnimator.classes]
8931
8970
  }
8932
8971
  }));
8933
- const tourOverlayProps = /* @__PURE__ */ user_derived(() => $$props.config.tourOverlay);
8934
- const tourTooltipProps = /* @__PURE__ */ user_derived(() => $$props.config.tourTooltip);
8935
- const tourImageProps = /* @__PURE__ */ user_derived(() => $$props.config.tourImage);
8936
- const tourButtonsProps = /* @__PURE__ */ user_derived(() => $$props.config.tourButtons);
8937
- const tourProgressProps = /* @__PURE__ */ user_derived(() => $$props.config.tourProgress);
8938
- const tourSkipProps = /* @__PURE__ */ user_derived(() => $$props.config.tourSkip);
8939
- const closeButtonProps = /* @__PURE__ */ user_derived(() => $$props.config.closeButton);
8940
8972
  const tourTooltipAnimation = /* @__PURE__ */ user_derived(() => $$props.animation.isEnabled ? $$props.animation.tooltip : false);
8941
8973
  const isAnimated = /* @__PURE__ */ user_derived(() => $$props.animation.isEnabled);
8942
8974
  const hasGlide = /* @__PURE__ */ user_derived(() => $$props.animation.tooltip.transition === BordaTooltipTransition.GLIDE);
@@ -8944,7 +8976,22 @@ function Borda($$anchor, $$props) {
8944
8976
  const isStepSettling = /* @__PURE__ */ user_derived(() => $$props.scroll.isScrolling || overlayTransition.isActive);
8945
8977
  /** In fade mode, hide the tooltip while the step settles, then fade it in at the new position. */
8946
8978
  const isHidden = /* @__PURE__ */ user_derived(() => !get(hasGlide) && get(isAnimated) && get(isStepSettling) && !get(isShownOnScroll));
8947
- const step = /* @__PURE__ */ user_derived(() => $$props.controller.step);
8979
+ /** Seeded once from the initial step so the first render has content; kept in sync by the effect below. */
8980
+ let displayed = /* @__PURE__ */ state(proxy({
8981
+ step: untrack(() => $$props.controller.step),
8982
+ target: untrack(() => $$props.controller.currentTarget),
8983
+ currentStep: untrack(() => $$props.controller.currentStep),
8984
+ config: untrack(() => $$props.config)
8985
+ }));
8986
+ const size = /* @__PURE__ */ user_derived(() => get(displayed).config.size);
8987
+ const shape = /* @__PURE__ */ user_derived(() => get(displayed).config.shape);
8988
+ const tourOverlayProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourOverlay);
8989
+ const tourTooltipProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourTooltip);
8990
+ const tourImageProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourImage);
8991
+ const tourButtonsProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourButtons);
8992
+ const tourProgressProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourProgress);
8993
+ const tourSkipProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourSkip);
8994
+ const closeButtonProps = /* @__PURE__ */ user_derived(() => get(displayed).config.closeButton);
8948
8995
  const tourComponents = /* @__PURE__ */ user_derived(() => {
8949
8996
  const components = get(bordaTour)?.getComponents();
8950
8997
  return {
@@ -8976,6 +9023,34 @@ function Borda($$anchor, $$props) {
8976
9023
  if ($$props.config.visibility?.isHidden) return;
8977
9024
  $$props.scroll.scrollTo($$props.controller.currentTarget);
8978
9025
  });
9026
+ user_effect(() => {
9027
+ if (!get(isHidden)) {
9028
+ set(displayed, {
9029
+ step: $$props.controller.step,
9030
+ target: $$props.controller.currentTarget,
9031
+ currentStep: $$props.controller.currentStep,
9032
+ config: $$props.config
9033
+ }, true);
9034
+ return;
9035
+ }
9036
+ /**
9037
+ * `step`/`currentTarget`/`currentStep`/`config` (incl. per-step overrides
9038
+ * like `tourProgress`) are live and swap the instant the step index
9039
+ * changes, so binding the tooltip/overlay to them directly would render
9040
+ * the new step's content immediately — visible for a frame before the
9041
+ * fade-out even starts. Keep showing the outgoing step's snapshot while
9042
+ * it fades out, and only swap once it's actually invisible.
9043
+ */
9044
+ const timeoutId = setTimeout(() => {
9045
+ set(displayed, {
9046
+ step: $$props.controller.step,
9047
+ target: $$props.controller.currentTarget,
9048
+ currentStep: $$props.controller.currentStep,
9049
+ config: $$props.config
9050
+ }, true);
9051
+ }, $$props.animation.tooltip.exitDuration);
9052
+ return () => clearTimeout(timeoutId);
9053
+ });
8979
9054
  onMount(() => {
8980
9055
  $$props.mount();
8981
9056
  });
@@ -8995,7 +9070,7 @@ function Borda($$anchor, $$props) {
8995
9070
  var consequent = ($$anchor) => {
8996
9071
  bind_this(BordaTourOverlay($$anchor, spread_props({
8997
9072
  get targetElement() {
8998
- return $$props.controller.currentTarget;
9073
+ return get(displayed).target;
8999
9074
  },
9000
9075
  get isAnimated() {
9001
9076
  return get(isAnimated);
@@ -9009,13 +9084,13 @@ function Borda($$anchor, $$props) {
9009
9084
  var consequent_1 = ($$anchor) => {
9010
9085
  bind_this(BordaTour($$anchor, {
9011
9086
  get step() {
9012
- return get(step);
9087
+ return get(displayed).step;
9013
9088
  },
9014
9089
  get currentTarget() {
9015
- return $$props.controller.currentTarget;
9090
+ return get(displayed).target;
9016
9091
  },
9017
9092
  get currentStep() {
9018
- return $$props.controller.currentStep;
9093
+ return get(displayed).currentStep;
9019
9094
  },
9020
9095
  get totalSteps() {
9021
9096
  return $$props.controller.totalSteps;
@@ -9079,7 +9154,7 @@ function Borda($$anchor, $$props) {
9079
9154
  append($$anchor, fragment_1);
9080
9155
  };
9081
9156
  if_block(node_1, ($$render) => {
9082
- if ($$props.controller.currentTarget && get(step)) $$render(consequent_2);
9157
+ if ($$props.controller.currentTarget && $$props.controller.step) $$render(consequent_2);
9083
9158
  });
9084
9159
  append($$anchor, fragment);
9085
9160
  },
@@ -9210,6 +9285,11 @@ function useBorda() {
9210
9285
  config.getConfig().tour?.onClose?.();
9211
9286
  await unmount$1(instance);
9212
9287
  });
9288
+ eventEmitter.once(BordaEvent.ON_TOUR_ERROR, (error) => {
9289
+ config.getConfig().tour?.onError?.(error);
9290
+ });
9291
+ /** Validate the initial step now that ON_TOUR_ERROR/ON_TOUR_CLOSE listeners above are registered. */
9292
+ controller.checkCurrentTarget();
9213
9293
  resolve(instance);
9214
9294
  },
9215
9295
  unmount: () => {
@@ -9252,7 +9332,7 @@ function useBorda() {
9252
9332
  }
9253
9333
  return {
9254
9334
  NAME: "@retoo/borda",
9255
- VERSION: "0.0.2",
9335
+ VERSION: "0.1.1",
9256
9336
  mount: mount$1,
9257
9337
  unmount: unmount$1,
9258
9338
  highlight: useBordaHighlight(mount$1).highlight
package/dist/borda.css CHANGED
@@ -113,7 +113,12 @@
113
113
  --rb-tour-tooltip-min-width-lg: 400px;
114
114
  --rb-tour-tooltip-min-width-xl: 460px;
115
115
  --rb-tour-tooltip-min-width-xxl: 520px;
116
- --rb-tour-tooltip-max-width: calc(100vw - 32px);
116
+ --rb-tour-tooltip-max-width-xs: 280px;
117
+ --rb-tour-tooltip-max-width-sm: 320px;
118
+ --rb-tour-tooltip-max-width-md: 380px;
119
+ --rb-tour-tooltip-max-width-lg: 440px;
120
+ --rb-tour-tooltip-max-width-xl: 500px;
121
+ --rb-tour-tooltip-max-width-xxl: 560px;
117
122
  --rb-tour-tooltip-padding-xs: 10px;
118
123
  --rb-tour-tooltip-padding-sm: 12px;
119
124
  --rb-tour-tooltip-padding-md: 16px;
@@ -694,7 +699,6 @@
694
699
  position: fixed;
695
700
  display: flex;
696
701
  flex-direction: column;
697
- max-width: var(--rb-tour-tooltip-max-width);
698
702
  background: var(--rb-tour-tooltip-background);
699
703
  border: var(--rb-tour-tooltip-border);
700
704
  border-radius: var(--rb-tour-tooltip-border-radius);
@@ -747,22 +751,28 @@
747
751
  --rb-tour-tooltip-padding: var(--rb-tour-tooltip-padding-xxl);
748
752
  }
749
753
  .rb-tour-tooltip.rb-tour-tooltip--xs {
750
- min-width: min(var(--rb-tour-tooltip-min-width-xs), var(--rb-tour-tooltip-max-width));
754
+ max-width: min(var(--rb-tour-tooltip-max-width-xs), 100vw - 32px);
755
+ min-width: min(var(--rb-tour-tooltip-min-width-xs), min(var(--rb-tour-tooltip-max-width-xs), 100vw - 32px));
751
756
  }
752
757
  .rb-tour-tooltip.rb-tour-tooltip--sm {
753
- min-width: min(var(--rb-tour-tooltip-min-width-sm), var(--rb-tour-tooltip-max-width));
758
+ max-width: min(var(--rb-tour-tooltip-max-width-sm), 100vw - 32px);
759
+ min-width: min(var(--rb-tour-tooltip-min-width-sm), min(var(--rb-tour-tooltip-max-width-sm), 100vw - 32px));
754
760
  }
755
761
  .rb-tour-tooltip.rb-tour-tooltip--md {
756
- min-width: min(var(--rb-tour-tooltip-min-width-md), var(--rb-tour-tooltip-max-width));
762
+ max-width: min(var(--rb-tour-tooltip-max-width-md), 100vw - 32px);
763
+ min-width: min(var(--rb-tour-tooltip-min-width-md), min(var(--rb-tour-tooltip-max-width-md), 100vw - 32px));
757
764
  }
758
765
  .rb-tour-tooltip.rb-tour-tooltip--lg {
759
- min-width: min(var(--rb-tour-tooltip-min-width-lg), var(--rb-tour-tooltip-max-width));
766
+ max-width: min(var(--rb-tour-tooltip-max-width-lg), 100vw - 32px);
767
+ min-width: min(var(--rb-tour-tooltip-min-width-lg), min(var(--rb-tour-tooltip-max-width-lg), 100vw - 32px));
760
768
  }
761
769
  .rb-tour-tooltip.rb-tour-tooltip--xl {
762
- min-width: min(var(--rb-tour-tooltip-min-width-xl), var(--rb-tour-tooltip-max-width));
770
+ max-width: min(var(--rb-tour-tooltip-max-width-xl), 100vw - 32px);
771
+ min-width: min(var(--rb-tour-tooltip-min-width-xl), min(var(--rb-tour-tooltip-max-width-xl), 100vw - 32px));
763
772
  }
764
773
  .rb-tour-tooltip.rb-tour-tooltip--xxl {
765
- min-width: min(var(--rb-tour-tooltip-min-width-xxl), var(--rb-tour-tooltip-max-width));
774
+ max-width: min(var(--rb-tour-tooltip-max-width-xxl), 100vw - 32px);
775
+ min-width: min(var(--rb-tour-tooltip-min-width-xxl), min(var(--rb-tour-tooltip-max-width-xxl), 100vw - 32px));
766
776
  }
767
777
  .rb-tour-tooltip--hidden {
768
778
  visibility: hidden;
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/variables/index.scss","borda.css","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/animations/_fade-in.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/animations/_fade-out.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-button.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-icon.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-image.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-progress.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-progress-line.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-close-button.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-container.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-image.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-overlay.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-skip.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-progress.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-tooltip.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-tooltip-arrow.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-buttons.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/utilities/_sr-only.scss"],"names":[],"mappings":"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","file":"borda.css"}
1
+ {"version":3,"sources":["file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/variables/index.scss","borda.css","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/animations/_fade-in.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/animations/_fade-out.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-button.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-icon.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-image.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-progress.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/shared/_borda-progress-line.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-close-button.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-container.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-image.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-overlay.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-skip.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-progress.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-tooltip.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-tooltip-arrow.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/components/widgets/_borda-tour-buttons.scss","file:///Users/dmderzhavin/dev/retoo/borda/src/shared/styles/utilities/_sr-only.scss"],"names":[],"mappings":"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","file":"borda.css"}
package/dist/borda.es.js CHANGED
@@ -5380,6 +5380,8 @@ var BordaEvent = /* @__PURE__ */ function(BordaEvent) {
5380
5380
  BordaEvent["ON_TOUR_NEXT"] = "tour:next";
5381
5381
  /** Fired when navigating to the previous step. */
5382
5382
  BordaEvent["ON_TOUR_PREV"] = "tour:prev";
5383
+ /** Fired when a step's target fails to resolve to a DOM element, just before the tour closes. */
5384
+ BordaEvent["ON_TOUR_ERROR"] = "tour:error";
5383
5385
  /** Fired when the ArrowRight key is pressed during an active tour. */
5384
5386
  BordaEvent["ON_KEYBOARD_NEXT"] = "keyboard:next";
5385
5387
  /** Fired when the ArrowLeft key is pressed during an active tour. */
@@ -6182,6 +6184,14 @@ function useBordaAnimation(config) {
6182
6184
  }
6183
6185
  //#endregion
6184
6186
  //#region src/entities/step/model/lib/resolveBordaStepTarget.ts
6187
+ /** Runs `querySelector`, treating a malformed selector as "no match" instead of throwing. */
6188
+ function queryTarget(selector) {
6189
+ try {
6190
+ return document.querySelector(selector);
6191
+ } catch {
6192
+ return null;
6193
+ }
6194
+ }
6185
6195
  function buildSelector(query) {
6186
6196
  const parts = [];
6187
6197
  if (query.id) parts.push(`#${CSS.escape(query.id)}`);
@@ -6205,10 +6215,10 @@ function buildSelector(query) {
6205
6215
  function resolveBordaStepTarget(target) {
6206
6216
  if (!target) return null;
6207
6217
  if (target instanceof HTMLElement) return target;
6208
- if (typeof target === "string") return document.querySelector(target);
6218
+ if (typeof target === "string") return queryTarget(target);
6209
6219
  const selector = buildSelector(target);
6210
6220
  if (!selector) return null;
6211
- return document.querySelector(selector);
6221
+ return queryTarget(selector);
6212
6222
  }
6213
6223
  //#endregion
6214
6224
  //#region src/app/entrypoint/modules/borda-controller/lib/useBordaController.svelte.ts
@@ -6227,6 +6237,23 @@ function useBordaController(config, eventEmitter) {
6227
6237
  const hasNextStep = /* @__PURE__ */ user_derived(() => !get(isLastStep));
6228
6238
  const hasPrevStep = /* @__PURE__ */ user_derived(() => get(stepIndex) > 0);
6229
6239
  const tourConfig = /* @__PURE__ */ user_derived(() => config.getConfig().tour);
6240
+ /**
6241
+ * Verifies the current step's target resolved to a DOM element.
6242
+ *
6243
+ * Emits {@link BordaEvent.ON_TOUR_ERROR} followed by {@link BordaEvent.ON_TOUR_CLOSE}
6244
+ * when it didn't, instead of leaving the widget rendering nothing for a step
6245
+ * the user can't see or dismiss.
6246
+ *
6247
+ * @returns `true` when there is no step, or its target resolved; `false` when the tour was closed due to an error.
6248
+ */
6249
+ function checkCurrentTarget() {
6250
+ if (!get(step) || get(currentTarget)) return true;
6251
+ const error = new BordaError(`Borda: target for step ${get(currentStep)} did not resolve to an element.`);
6252
+ console.error(error);
6253
+ eventEmitter.emit(BordaEvent.ON_TOUR_ERROR, error);
6254
+ eventEmitter.emit(BordaEvent.ON_TOUR_CLOSE);
6255
+ return false;
6256
+ }
6230
6257
  function apply() {
6231
6258
  set(stepIndex, get(tourConfig)?.startStep ?? 0, true);
6232
6259
  get(tourConfig)?.onStart?.();
@@ -6240,6 +6267,7 @@ function useBordaController(config, eventEmitter) {
6240
6267
  await entering?.prepareElement?.();
6241
6268
  entering?.onBeforeHighlighted?.();
6242
6269
  set(stepIndex, index, true);
6270
+ if (!checkCurrentTarget()) return;
6243
6271
  entering?.onHighlighted?.();
6244
6272
  eventEmitter.emit(BordaEvent.ON_TOUR_STEP_CHANGE, get(currentStep));
6245
6273
  }
@@ -6331,7 +6359,8 @@ function useBordaController(config, eventEmitter) {
6331
6359
  prev,
6332
6360
  next,
6333
6361
  finish
6334
- }
6362
+ },
6363
+ checkCurrentTarget
6335
6364
  };
6336
6365
  }
6337
6366
  //#endregion
@@ -8412,11 +8441,9 @@ function useTooltipPosition({ getTargetElement, getTooltipElement, getPlacement,
8412
8441
  const padding = /* @__PURE__ */ user_derived(getPadding);
8413
8442
  const autoPlacement = /* @__PURE__ */ user_derived(getAutoPlacement);
8414
8443
  const arrowSide = /* @__PURE__ */ user_derived(getArrowSide);
8415
- user_effect(() => {
8444
+ /** Reads the live target/tooltip rects and writes the resolved position into state. */
8445
+ function recompute() {
8416
8446
  if (!get(target) || !get(tooltip)) return;
8417
- /** Re-run on scroll so auto-flip/shift recompute against the live viewport. */
8418
- scroll.x;
8419
- scroll.y;
8420
8447
  const layout = useTooltipLayout({
8421
8448
  target: get(target),
8422
8449
  tooltip: get(tooltip),
@@ -8435,6 +8462,19 @@ function useTooltipPosition({ getTargetElement, getTooltipElement, getPlacement,
8435
8462
  set(left, layout.position.left, true);
8436
8463
  set(effectivePlacement, layout.placement, true);
8437
8464
  set(arrowOffset, layout.arrowOffset, true);
8465
+ }
8466
+ user_effect(() => {
8467
+ if (!get(tooltip)) return;
8468
+ /** Re-run when the tooltip's own size changes (e.g. an image finishes loading). */
8469
+ const observer = new ResizeObserver(recompute);
8470
+ observer.observe(get(tooltip));
8471
+ return () => observer.disconnect();
8472
+ });
8473
+ user_effect(() => {
8474
+ /** Re-run on scroll so auto-flip/shift recompute against the live viewport. */
8475
+ scroll.x;
8476
+ scroll.y;
8477
+ recompute();
8438
8478
  });
8439
8479
  return {
8440
8480
  get top() {
@@ -8919,9 +8959,8 @@ function Borda($$anchor, $$props) {
8919
8959
  getDuration: () => $$props.animation.overlay.transitionDuration
8920
8960
  });
8921
8961
  useFocusTrap({ getContainer: () => get(bordaContainer)?.getElements()?.root ?? null });
8922
- const size = /* @__PURE__ */ user_derived(() => $$props.config.size);
8923
- const shape = /* @__PURE__ */ user_derived(() => $$props.config.shape);
8924
8962
  const rootClasses = /* @__PURE__ */ user_derived(() => ["rb"]);
8963
+ /** Container chrome isn't per-step content, so it always tracks the live config. */
8925
8964
  const containerProps = /* @__PURE__ */ user_derived(() => ({
8926
8965
  ...$$props.config.container,
8927
8966
  customClasses: {
@@ -8929,13 +8968,6 @@ function Borda($$anchor, $$props) {
8929
8968
  root: [$$props.config.container?.customClasses?.root, containerAnimator.classes]
8930
8969
  }
8931
8970
  }));
8932
- const tourOverlayProps = /* @__PURE__ */ user_derived(() => $$props.config.tourOverlay);
8933
- const tourTooltipProps = /* @__PURE__ */ user_derived(() => $$props.config.tourTooltip);
8934
- const tourImageProps = /* @__PURE__ */ user_derived(() => $$props.config.tourImage);
8935
- const tourButtonsProps = /* @__PURE__ */ user_derived(() => $$props.config.tourButtons);
8936
- const tourProgressProps = /* @__PURE__ */ user_derived(() => $$props.config.tourProgress);
8937
- const tourSkipProps = /* @__PURE__ */ user_derived(() => $$props.config.tourSkip);
8938
- const closeButtonProps = /* @__PURE__ */ user_derived(() => $$props.config.closeButton);
8939
8971
  const tourTooltipAnimation = /* @__PURE__ */ user_derived(() => $$props.animation.isEnabled ? $$props.animation.tooltip : false);
8940
8972
  const isAnimated = /* @__PURE__ */ user_derived(() => $$props.animation.isEnabled);
8941
8973
  const hasGlide = /* @__PURE__ */ user_derived(() => $$props.animation.tooltip.transition === BordaTooltipTransition.GLIDE);
@@ -8943,7 +8975,22 @@ function Borda($$anchor, $$props) {
8943
8975
  const isStepSettling = /* @__PURE__ */ user_derived(() => $$props.scroll.isScrolling || overlayTransition.isActive);
8944
8976
  /** In fade mode, hide the tooltip while the step settles, then fade it in at the new position. */
8945
8977
  const isHidden = /* @__PURE__ */ user_derived(() => !get(hasGlide) && get(isAnimated) && get(isStepSettling) && !get(isShownOnScroll));
8946
- const step = /* @__PURE__ */ user_derived(() => $$props.controller.step);
8978
+ /** Seeded once from the initial step so the first render has content; kept in sync by the effect below. */
8979
+ let displayed = /* @__PURE__ */ state(proxy({
8980
+ step: untrack(() => $$props.controller.step),
8981
+ target: untrack(() => $$props.controller.currentTarget),
8982
+ currentStep: untrack(() => $$props.controller.currentStep),
8983
+ config: untrack(() => $$props.config)
8984
+ }));
8985
+ const size = /* @__PURE__ */ user_derived(() => get(displayed).config.size);
8986
+ const shape = /* @__PURE__ */ user_derived(() => get(displayed).config.shape);
8987
+ const tourOverlayProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourOverlay);
8988
+ const tourTooltipProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourTooltip);
8989
+ const tourImageProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourImage);
8990
+ const tourButtonsProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourButtons);
8991
+ const tourProgressProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourProgress);
8992
+ const tourSkipProps = /* @__PURE__ */ user_derived(() => get(displayed).config.tourSkip);
8993
+ const closeButtonProps = /* @__PURE__ */ user_derived(() => get(displayed).config.closeButton);
8947
8994
  const tourComponents = /* @__PURE__ */ user_derived(() => {
8948
8995
  const components = get(bordaTour)?.getComponents();
8949
8996
  return {
@@ -8975,6 +9022,34 @@ function Borda($$anchor, $$props) {
8975
9022
  if ($$props.config.visibility?.isHidden) return;
8976
9023
  $$props.scroll.scrollTo($$props.controller.currentTarget);
8977
9024
  });
9025
+ user_effect(() => {
9026
+ if (!get(isHidden)) {
9027
+ set(displayed, {
9028
+ step: $$props.controller.step,
9029
+ target: $$props.controller.currentTarget,
9030
+ currentStep: $$props.controller.currentStep,
9031
+ config: $$props.config
9032
+ }, true);
9033
+ return;
9034
+ }
9035
+ /**
9036
+ * `step`/`currentTarget`/`currentStep`/`config` (incl. per-step overrides
9037
+ * like `tourProgress`) are live and swap the instant the step index
9038
+ * changes, so binding the tooltip/overlay to them directly would render
9039
+ * the new step's content immediately — visible for a frame before the
9040
+ * fade-out even starts. Keep showing the outgoing step's snapshot while
9041
+ * it fades out, and only swap once it's actually invisible.
9042
+ */
9043
+ const timeoutId = setTimeout(() => {
9044
+ set(displayed, {
9045
+ step: $$props.controller.step,
9046
+ target: $$props.controller.currentTarget,
9047
+ currentStep: $$props.controller.currentStep,
9048
+ config: $$props.config
9049
+ }, true);
9050
+ }, $$props.animation.tooltip.exitDuration);
9051
+ return () => clearTimeout(timeoutId);
9052
+ });
8978
9053
  onMount(() => {
8979
9054
  $$props.mount();
8980
9055
  });
@@ -8994,7 +9069,7 @@ function Borda($$anchor, $$props) {
8994
9069
  var consequent = ($$anchor) => {
8995
9070
  bind_this(BordaTourOverlay($$anchor, spread_props({
8996
9071
  get targetElement() {
8997
- return $$props.controller.currentTarget;
9072
+ return get(displayed).target;
8998
9073
  },
8999
9074
  get isAnimated() {
9000
9075
  return get(isAnimated);
@@ -9008,13 +9083,13 @@ function Borda($$anchor, $$props) {
9008
9083
  var consequent_1 = ($$anchor) => {
9009
9084
  bind_this(BordaTour($$anchor, {
9010
9085
  get step() {
9011
- return get(step);
9086
+ return get(displayed).step;
9012
9087
  },
9013
9088
  get currentTarget() {
9014
- return $$props.controller.currentTarget;
9089
+ return get(displayed).target;
9015
9090
  },
9016
9091
  get currentStep() {
9017
- return $$props.controller.currentStep;
9092
+ return get(displayed).currentStep;
9018
9093
  },
9019
9094
  get totalSteps() {
9020
9095
  return $$props.controller.totalSteps;
@@ -9078,7 +9153,7 @@ function Borda($$anchor, $$props) {
9078
9153
  append($$anchor, fragment_1);
9079
9154
  };
9080
9155
  if_block(node_1, ($$render) => {
9081
- if ($$props.controller.currentTarget && get(step)) $$render(consequent_2);
9156
+ if ($$props.controller.currentTarget && $$props.controller.step) $$render(consequent_2);
9082
9157
  });
9083
9158
  append($$anchor, fragment);
9084
9159
  },
@@ -9209,6 +9284,11 @@ function useBorda() {
9209
9284
  config.getConfig().tour?.onClose?.();
9210
9285
  await unmount$1(instance);
9211
9286
  });
9287
+ eventEmitter.once(BordaEvent.ON_TOUR_ERROR, (error) => {
9288
+ config.getConfig().tour?.onError?.(error);
9289
+ });
9290
+ /** Validate the initial step now that ON_TOUR_ERROR/ON_TOUR_CLOSE listeners above are registered. */
9291
+ controller.checkCurrentTarget();
9212
9292
  resolve(instance);
9213
9293
  },
9214
9294
  unmount: () => {
@@ -9251,7 +9331,7 @@ function useBorda() {
9251
9331
  }
9252
9332
  return {
9253
9333
  NAME: "@retoo/borda",
9254
- VERSION: "0.0.2",
9334
+ VERSION: "0.1.1",
9255
9335
  mount: mount$1,
9256
9336
  unmount: unmount$1,
9257
9337
  highlight: useBordaHighlight(mount$1).highlight