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
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { VEO_BLOCK_MIME, attachBlockDropTarget, attachDesignManipulator, createBuilderSession, initBuilderMode, startElementPicker, stopElementPicker } from './chunk-L5X4AGR7.mjs';
|
|
2
|
+
import './chunk-CWIUNHWA.mjs';
|
|
3
|
+
import './chunk-PTG3BTJE.mjs';
|
|
4
|
+
//# sourceMappingURL=builder-RSWK3RIB.mjs.map
|
|
5
|
+
//# sourceMappingURL=builder-RSWK3RIB.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"builder-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"builder-RSWK3RIB.mjs"}
|
package/dist/builder.cjs
CHANGED
|
@@ -2304,7 +2304,8 @@ var CompositeRenderer = class extends BaseRenderer {
|
|
|
2304
2304
|
const idx = context.nav?.stepIndex ?? 0;
|
|
2305
2305
|
const step = context.guide.guideSteps[idx];
|
|
2306
2306
|
if (!step) return;
|
|
2307
|
-
const
|
|
2307
|
+
const badgeMode = step.badge?.enabled === true;
|
|
2308
|
+
const anchorSelector = step.position === "relative-to-element" || step.presentation === "inline" || badgeMode ? step.anchorSelector?.trim() || void 0 : void 0;
|
|
2308
2309
|
let anchor = null;
|
|
2309
2310
|
if (anchorSelector) {
|
|
2310
2311
|
anchor = await waitForElement(anchorSelector);
|
|
@@ -2341,8 +2342,13 @@ var CompositeRenderer = class extends BaseRenderer {
|
|
|
2341
2342
|
this.buildContent(card, step.blocks ?? [], doc, context, idx, readers, host);
|
|
2342
2343
|
const lastBlock = card.lastElementChild;
|
|
2343
2344
|
if (lastBlock && !lastBlock.style.marginBottom) lastBlock.style.marginBottom = "0";
|
|
2345
|
+
let closeTooltip = null;
|
|
2344
2346
|
if (design.closeButton !== false) {
|
|
2345
2347
|
const closeBtn = createCloseButton(doc, () => {
|
|
2348
|
+
if (closeTooltip) {
|
|
2349
|
+
closeTooltip();
|
|
2350
|
+
return;
|
|
2351
|
+
}
|
|
2346
2352
|
dismiss("dismissed");
|
|
2347
2353
|
this.closeOrSkip(context);
|
|
2348
2354
|
});
|
|
@@ -2361,6 +2367,21 @@ var CompositeRenderer = class extends BaseRenderer {
|
|
|
2361
2367
|
}
|
|
2362
2368
|
card.appendChild(closeBtn);
|
|
2363
2369
|
}
|
|
2370
|
+
if (badgeMode && anchor) {
|
|
2371
|
+
closeTooltip = this.renderBadgeMode(
|
|
2372
|
+
step,
|
|
2373
|
+
card,
|
|
2374
|
+
anchor,
|
|
2375
|
+
anchorSelector,
|
|
2376
|
+
host,
|
|
2377
|
+
root,
|
|
2378
|
+
doc,
|
|
2379
|
+
context,
|
|
2380
|
+
idx,
|
|
2381
|
+
design
|
|
2382
|
+
);
|
|
2383
|
+
return;
|
|
2384
|
+
}
|
|
2364
2385
|
if (step.presentation === "inline" && anchor) {
|
|
2365
2386
|
host.style.display = "block";
|
|
2366
2387
|
const pos = inlinePosOf(step.inlinePosition);
|
|
@@ -2550,6 +2571,88 @@ var CompositeRenderer = class extends BaseRenderer {
|
|
|
2550
2571
|
if (context.nav?.callbacks) context.nav.callbacks.onSkip();
|
|
2551
2572
|
else context.onClose();
|
|
2552
2573
|
}
|
|
2574
|
+
/**
|
|
2575
|
+
* Modo BADGE: inserta un MARCADOR permanente (compuesto con `step.badge.blocks`)
|
|
2576
|
+
* junto al ancla, en el flujo del DOM. Al hover/click abre la `card` (los
|
|
2577
|
+
* bloques del paso) como TOOLTIP anclado al marcador. Devuelve una función que
|
|
2578
|
+
* cierra el tooltip (para el ✕). El marcador nunca se descarta.
|
|
2579
|
+
*/
|
|
2580
|
+
renderBadgeMode(step, card, anchor, anchorSelector, host, root, doc, context, idx, design) {
|
|
2581
|
+
const trigger = step.badge?.trigger === "click" ? "click" : "hover";
|
|
2582
|
+
const badge = doc.createElement("div");
|
|
2583
|
+
badge.className = "veo-composite-badge";
|
|
2584
|
+
badge.setAttribute("role", "button");
|
|
2585
|
+
badge.tabIndex = 0;
|
|
2586
|
+
badge.style.cursor = "pointer";
|
|
2587
|
+
badge.style.display = "inline-flex";
|
|
2588
|
+
badge.style.alignItems = "center";
|
|
2589
|
+
this.buildContent(badge, step.badge?.blocks ?? [], doc, context, idx, [], host);
|
|
2590
|
+
root.appendChild(badge);
|
|
2591
|
+
const wrapper = doc.createElement("div");
|
|
2592
|
+
wrapper.className = "veo-composite-anchored";
|
|
2593
|
+
wrapper.style.display = "none";
|
|
2594
|
+
const caretEl = design.caret === false ? null : makeCaret(doc, design);
|
|
2595
|
+
if (caretEl) wrapper.appendChild(caretEl);
|
|
2596
|
+
wrapper.appendChild(card);
|
|
2597
|
+
root.appendChild(wrapper);
|
|
2598
|
+
host.style.display = "inline-block";
|
|
2599
|
+
const pos = inlinePosOf(step.inlinePosition);
|
|
2600
|
+
insertHost(anchor, host, pos);
|
|
2601
|
+
this.registerCleanup(keepHostAttached(host, anchorSelector, pos));
|
|
2602
|
+
let open = false;
|
|
2603
|
+
let stopFloat = null;
|
|
2604
|
+
let closeTimer = null;
|
|
2605
|
+
let shownEmitted = false;
|
|
2606
|
+
const openTip = () => {
|
|
2607
|
+
if (open) return;
|
|
2608
|
+
open = true;
|
|
2609
|
+
wrapper.style.display = "block";
|
|
2610
|
+
void anchorPosition(badge, wrapper, caretEl).then((stop) => {
|
|
2611
|
+
if (open) stopFloat = stop;
|
|
2612
|
+
else stop();
|
|
2613
|
+
});
|
|
2614
|
+
if (!shownEmitted) {
|
|
2615
|
+
shownEmitted = true;
|
|
2616
|
+
context.onInteraction({ guideId: context.guide.guideId, stepIndex: idx, action: "shown" });
|
|
2617
|
+
}
|
|
2618
|
+
};
|
|
2619
|
+
const closeTip = () => {
|
|
2620
|
+
open = false;
|
|
2621
|
+
wrapper.style.display = "none";
|
|
2622
|
+
stopFloat?.();
|
|
2623
|
+
stopFloat = null;
|
|
2624
|
+
};
|
|
2625
|
+
if (trigger === "hover") {
|
|
2626
|
+
const cancelClose = () => {
|
|
2627
|
+
if (closeTimer !== null) {
|
|
2628
|
+
clearTimeout(closeTimer);
|
|
2629
|
+
closeTimer = null;
|
|
2630
|
+
}
|
|
2631
|
+
};
|
|
2632
|
+
const scheduleClose = () => {
|
|
2633
|
+
cancelClose();
|
|
2634
|
+
closeTimer = window.setTimeout(closeTip, 150);
|
|
2635
|
+
};
|
|
2636
|
+
badge.addEventListener("mouseenter", () => {
|
|
2637
|
+
cancelClose();
|
|
2638
|
+
openTip();
|
|
2639
|
+
});
|
|
2640
|
+
badge.addEventListener("mouseleave", scheduleClose);
|
|
2641
|
+
badge.addEventListener("focus", openTip);
|
|
2642
|
+
wrapper.addEventListener("mouseenter", cancelClose);
|
|
2643
|
+
wrapper.addEventListener("mouseleave", scheduleClose);
|
|
2644
|
+
} else {
|
|
2645
|
+
badge.addEventListener("click", () => {
|
|
2646
|
+
if (open) closeTip();
|
|
2647
|
+
else openTip();
|
|
2648
|
+
});
|
|
2649
|
+
}
|
|
2650
|
+
this.registerCleanup(() => {
|
|
2651
|
+
stopFloat?.();
|
|
2652
|
+
if (closeTimer !== null) clearTimeout(closeTimer);
|
|
2653
|
+
});
|
|
2654
|
+
return closeTip;
|
|
2655
|
+
}
|
|
2553
2656
|
};
|
|
2554
2657
|
function inlinePosOf(p) {
|
|
2555
2658
|
return p === "before" || p === "prepend" || p === "append" ? p : "after";
|