veo-sdk 0.5.27 → 0.5.28
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/builder-RSWK3RIB.mjs +5 -0
- package/dist/{builder-5UDF6IHS.mjs.map → builder-RSWK3RIB.mjs.map} +1 -1
- package/dist/builder.cjs +104 -1
- package/dist/builder.cjs.map +1 -1
- package/dist/builder.mjs +4 -4
- package/dist/{chunk-6XZPR7VC.mjs → chunk-CWIUNHWA.mjs} +106 -3
- package/dist/chunk-CWIUNHWA.mjs.map +1 -0
- package/dist/{chunk-RHYVNG3X.mjs → chunk-L5X4AGR7.mjs} +3 -3
- package/dist/{chunk-RHYVNG3X.mjs.map → chunk-L5X4AGR7.mjs.map} +1 -1
- package/dist/{chunk-XW4KLWLJ.mjs → chunk-WLW5Y5LU.mjs} +3 -3
- package/dist/{chunk-XW4KLWLJ.mjs.map → chunk-WLW5Y5LU.mjs.map} +1 -1
- package/dist/index.cjs +104 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/veo-builder.js +10 -10
- package/dist/veo-builder.js.map +1 -1
- package/dist/veo-guides.js +5 -5
- package/dist/veo-guides.js.map +1 -1
- package/package.json +1 -1
- package/dist/builder-5UDF6IHS.mjs +0 -5
- package/dist/chunk-6XZPR7VC.mjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -2626,7 +2626,8 @@ var init_composite_renderer = __esm({
|
|
|
2626
2626
|
const idx = context.nav?.stepIndex ?? 0;
|
|
2627
2627
|
const step = context.guide.guideSteps[idx];
|
|
2628
2628
|
if (!step) return;
|
|
2629
|
-
const
|
|
2629
|
+
const badgeMode = step.badge?.enabled === true;
|
|
2630
|
+
const anchorSelector = step.position === "relative-to-element" || step.presentation === "inline" || badgeMode ? step.anchorSelector?.trim() || void 0 : void 0;
|
|
2630
2631
|
let anchor = null;
|
|
2631
2632
|
if (anchorSelector) {
|
|
2632
2633
|
anchor = await waitForElement(anchorSelector);
|
|
@@ -2663,8 +2664,13 @@ var init_composite_renderer = __esm({
|
|
|
2663
2664
|
this.buildContent(card, step.blocks ?? [], doc, context, idx, readers, host);
|
|
2664
2665
|
const lastBlock = card.lastElementChild;
|
|
2665
2666
|
if (lastBlock && !lastBlock.style.marginBottom) lastBlock.style.marginBottom = "0";
|
|
2667
|
+
let closeTooltip = null;
|
|
2666
2668
|
if (design.closeButton !== false) {
|
|
2667
2669
|
const closeBtn = createCloseButton(doc, () => {
|
|
2670
|
+
if (closeTooltip) {
|
|
2671
|
+
closeTooltip();
|
|
2672
|
+
return;
|
|
2673
|
+
}
|
|
2668
2674
|
dismiss("dismissed");
|
|
2669
2675
|
this.closeOrSkip(context);
|
|
2670
2676
|
});
|
|
@@ -2683,6 +2689,21 @@ var init_composite_renderer = __esm({
|
|
|
2683
2689
|
}
|
|
2684
2690
|
card.appendChild(closeBtn);
|
|
2685
2691
|
}
|
|
2692
|
+
if (badgeMode && anchor) {
|
|
2693
|
+
closeTooltip = this.renderBadgeMode(
|
|
2694
|
+
step,
|
|
2695
|
+
card,
|
|
2696
|
+
anchor,
|
|
2697
|
+
anchorSelector,
|
|
2698
|
+
host,
|
|
2699
|
+
root,
|
|
2700
|
+
doc,
|
|
2701
|
+
context,
|
|
2702
|
+
idx,
|
|
2703
|
+
design
|
|
2704
|
+
);
|
|
2705
|
+
return;
|
|
2706
|
+
}
|
|
2686
2707
|
if (step.presentation === "inline" && anchor) {
|
|
2687
2708
|
host.style.display = "block";
|
|
2688
2709
|
const pos = inlinePosOf(step.inlinePosition);
|
|
@@ -2872,6 +2893,88 @@ var init_composite_renderer = __esm({
|
|
|
2872
2893
|
if (context.nav?.callbacks) context.nav.callbacks.onSkip();
|
|
2873
2894
|
else context.onClose();
|
|
2874
2895
|
}
|
|
2896
|
+
/**
|
|
2897
|
+
* Modo BADGE: inserta un MARCADOR permanente (compuesto con `step.badge.blocks`)
|
|
2898
|
+
* junto al ancla, en el flujo del DOM. Al hover/click abre la `card` (los
|
|
2899
|
+
* bloques del paso) como TOOLTIP anclado al marcador. Devuelve una función que
|
|
2900
|
+
* cierra el tooltip (para el ✕). El marcador nunca se descarta.
|
|
2901
|
+
*/
|
|
2902
|
+
renderBadgeMode(step, card, anchor, anchorSelector, host, root, doc, context, idx, design) {
|
|
2903
|
+
const trigger = step.badge?.trigger === "click" ? "click" : "hover";
|
|
2904
|
+
const badge = doc.createElement("div");
|
|
2905
|
+
badge.className = "veo-composite-badge";
|
|
2906
|
+
badge.setAttribute("role", "button");
|
|
2907
|
+
badge.tabIndex = 0;
|
|
2908
|
+
badge.style.cursor = "pointer";
|
|
2909
|
+
badge.style.display = "inline-flex";
|
|
2910
|
+
badge.style.alignItems = "center";
|
|
2911
|
+
this.buildContent(badge, step.badge?.blocks ?? [], doc, context, idx, [], host);
|
|
2912
|
+
root.appendChild(badge);
|
|
2913
|
+
const wrapper = doc.createElement("div");
|
|
2914
|
+
wrapper.className = "veo-composite-anchored";
|
|
2915
|
+
wrapper.style.display = "none";
|
|
2916
|
+
const caretEl = design.caret === false ? null : makeCaret(doc, design);
|
|
2917
|
+
if (caretEl) wrapper.appendChild(caretEl);
|
|
2918
|
+
wrapper.appendChild(card);
|
|
2919
|
+
root.appendChild(wrapper);
|
|
2920
|
+
host.style.display = "inline-block";
|
|
2921
|
+
const pos = inlinePosOf(step.inlinePosition);
|
|
2922
|
+
insertHost(anchor, host, pos);
|
|
2923
|
+
this.registerCleanup(keepHostAttached(host, anchorSelector, pos));
|
|
2924
|
+
let open = false;
|
|
2925
|
+
let stopFloat = null;
|
|
2926
|
+
let closeTimer = null;
|
|
2927
|
+
let shownEmitted = false;
|
|
2928
|
+
const openTip = () => {
|
|
2929
|
+
if (open) return;
|
|
2930
|
+
open = true;
|
|
2931
|
+
wrapper.style.display = "block";
|
|
2932
|
+
void anchorPosition(badge, wrapper, caretEl).then((stop) => {
|
|
2933
|
+
if (open) stopFloat = stop;
|
|
2934
|
+
else stop();
|
|
2935
|
+
});
|
|
2936
|
+
if (!shownEmitted) {
|
|
2937
|
+
shownEmitted = true;
|
|
2938
|
+
context.onInteraction({ guideId: context.guide.guideId, stepIndex: idx, action: "shown" });
|
|
2939
|
+
}
|
|
2940
|
+
};
|
|
2941
|
+
const closeTip = () => {
|
|
2942
|
+
open = false;
|
|
2943
|
+
wrapper.style.display = "none";
|
|
2944
|
+
stopFloat?.();
|
|
2945
|
+
stopFloat = null;
|
|
2946
|
+
};
|
|
2947
|
+
if (trigger === "hover") {
|
|
2948
|
+
const cancelClose = () => {
|
|
2949
|
+
if (closeTimer !== null) {
|
|
2950
|
+
clearTimeout(closeTimer);
|
|
2951
|
+
closeTimer = null;
|
|
2952
|
+
}
|
|
2953
|
+
};
|
|
2954
|
+
const scheduleClose = () => {
|
|
2955
|
+
cancelClose();
|
|
2956
|
+
closeTimer = window.setTimeout(closeTip, 150);
|
|
2957
|
+
};
|
|
2958
|
+
badge.addEventListener("mouseenter", () => {
|
|
2959
|
+
cancelClose();
|
|
2960
|
+
openTip();
|
|
2961
|
+
});
|
|
2962
|
+
badge.addEventListener("mouseleave", scheduleClose);
|
|
2963
|
+
badge.addEventListener("focus", openTip);
|
|
2964
|
+
wrapper.addEventListener("mouseenter", cancelClose);
|
|
2965
|
+
wrapper.addEventListener("mouseleave", scheduleClose);
|
|
2966
|
+
} else {
|
|
2967
|
+
badge.addEventListener("click", () => {
|
|
2968
|
+
if (open) closeTip();
|
|
2969
|
+
else openTip();
|
|
2970
|
+
});
|
|
2971
|
+
}
|
|
2972
|
+
this.registerCleanup(() => {
|
|
2973
|
+
stopFloat?.();
|
|
2974
|
+
if (closeTimer !== null) clearTimeout(closeTimer);
|
|
2975
|
+
});
|
|
2976
|
+
return closeTip;
|
|
2977
|
+
}
|
|
2875
2978
|
};
|
|
2876
2979
|
CLOSE_INSET = "10px";
|
|
2877
2980
|
}
|