@selectwin/kit 0.1.67 → 0.1.68

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
- import { ReactNode } from 'react';
1
+ import { ReactNode, Ref } from 'react';
2
2
  type Device = 'desktop' | 'mobile';
3
3
  export interface SelectPreviewFrameProps {
4
4
  /** Preview URL. Empty/undefined shows the placeholder. */
@@ -23,6 +23,20 @@ export interface SelectPreviewFrameProps {
23
23
  * desatualizada. Então: avisa e oferece o botão — não age.
24
24
  */
25
25
  notice?: ReactNode;
26
+ /**
27
+ * Ref para o `<iframe>` INTERNO — o `ref` do componente aponta para o wrapper, e de um
28
+ * `<div>` não se alcança `contentWindow`.
29
+ *
30
+ * Existe para quem DIRIGE o conteúdo do frame por `postMessage` em vez de recarregá-lo: um
31
+ * builder que manda o desenho ao vivo precisa da janela do frame, e a alternativa — sair
32
+ * fazendo `querySelector('iframe')` no wrapper — amarraria a página à árvore interna deste
33
+ * componente, que é exatamente o que a prop existe para evitar.
34
+ *
35
+ * ⚠️ O frame REMONTA a cada recarga (o `key` do nonce), então o ref troca de nó. Quem
36
+ * dirige não deve guardar `contentWindow`: leia-o do ref na hora de mandar, e refaça o
37
+ * aperto de mão a cada `load`.
38
+ */
39
+ iframeRef?: Ref<HTMLIFrameElement>;
26
40
  initialDevice?: Device;
27
41
  showDeviceToggle?: boolean;
28
42
  emptyLabel?: string;
package/dist/index.js CHANGED
@@ -4622,15 +4622,15 @@ function Lo() {
4622
4622
  if (!t) throw new Error("useSelectToast must be used within a SelectToastProvider");
4623
4623
  return t;
4624
4624
  }
4625
- const ta = { desktop: "100%", mobile: 390 }, Ao = R(function({ src: n, title: l = "Pré-visualização", height: c = 560, fill: s = !1, initialDevice: a = "desktop", showDeviceToggle: o = !0, emptyLabel: i = "Salve para gerar a pré-visualização.", onReload: r, notice: d, className: u, ...h }, f) {
4626
- const [g, _] = W(a), [y, N] = W(0), [S, v] = W(!0), m = n ? `${n}${n.includes("?") ? "&" : "?"}_pv=${y}` : "", M = () => {
4627
- if (v(!0), r) {
4625
+ const ta = { desktop: "100%", mobile: 390 }, Ao = R(function({ src: n, title: l = "Pré-visualização", height: c = 560, fill: s = !1, initialDevice: a = "desktop", showDeviceToggle: o = !0, emptyLabel: i = "Salve para gerar a pré-visualização.", onReload: r, notice: d, iframeRef: u, className: h, ...f }, g) {
4626
+ const [_, y] = W(a), [N, S] = W(0), [v, m] = W(!0), M = n ? `${n}${n.includes("?") ? "&" : "?"}_pv=${N}` : "", k = () => {
4627
+ if (m(!0), r) {
4628
4628
  r();
4629
4629
  return;
4630
4630
  }
4631
- N((k) => k + 1);
4631
+ S((w) => w + 1);
4632
4632
  };
4633
- return /* @__PURE__ */ p("div", { ref: f, ...h, className: `select-preview${s ? " select-preview--fill" : ""}${u ? " " + u : ""}`, children: [
4633
+ return /* @__PURE__ */ p("div", { ref: g, ...f, className: `select-preview${s ? " select-preview--fill" : ""}${h ? " " + h : ""}`, children: [
4634
4634
  /* @__PURE__ */ p("div", { className: "select-preview__bar", children: [
4635
4635
  /* @__PURE__ */ e("span", { className: "select-preview__title", children: l }),
4636
4636
  d && /* @__PURE__ */ e("span", { className: "select-preview__notice", children: d }),
@@ -4642,8 +4642,8 @@ const ta = { desktop: "100%", mobile: 390 }, Ao = R(function({ src: n, title: l
4642
4642
  size: "sm",
4643
4643
  icon: /* @__PURE__ */ e(fl, {}),
4644
4644
  label: "Visualizar em desktop",
4645
- active: g === "desktop",
4646
- onClick: () => _("desktop")
4645
+ active: _ === "desktop",
4646
+ onClick: () => y("desktop")
4647
4647
  }
4648
4648
  ),
4649
4649
  /* @__PURE__ */ e(
@@ -4652,12 +4652,12 @@ const ta = { desktop: "100%", mobile: 390 }, Ao = R(function({ src: n, title: l
4652
4652
  size: "sm",
4653
4653
  icon: /* @__PURE__ */ e(_l, {}),
4654
4654
  label: "Visualizar em mobile",
4655
- active: g === "mobile",
4656
- onClick: () => _("mobile")
4655
+ active: _ === "mobile",
4656
+ onClick: () => y("mobile")
4657
4657
  }
4658
4658
  )
4659
4659
  ] }),
4660
- /* @__PURE__ */ e(De, { size: "sm", icon: /* @__PURE__ */ e(bc, {}), label: "Recarregar", onClick: M, disabled: !n }),
4660
+ /* @__PURE__ */ e(De, { size: "sm", icon: /* @__PURE__ */ e(bc, {}), label: "Recarregar", onClick: k, disabled: !n }),
4661
4661
  n && /* @__PURE__ */ e(
4662
4662
  "a",
4663
4663
  {
@@ -4672,17 +4672,18 @@ const ta = { desktop: "100%", mobile: 390 }, Ao = R(function({ src: n, title: l
4672
4672
  )
4673
4673
  ] })
4674
4674
  ] }),
4675
- /* @__PURE__ */ e("div", { className: "select-preview__stage", style: s ? void 0 : { height: c }, children: m ? /* @__PURE__ */ p("div", { className: "select-preview__device", style: { width: ta[g] }, children: [
4676
- S && /* @__PURE__ */ e("div", { className: "select-preview__loading", children: /* @__PURE__ */ e(Ns, {}) }),
4675
+ /* @__PURE__ */ e("div", { className: "select-preview__stage", style: s ? void 0 : { height: c }, children: M ? /* @__PURE__ */ p("div", { className: "select-preview__device", style: { width: ta[_] }, children: [
4676
+ v && /* @__PURE__ */ e("div", { className: "select-preview__loading", children: /* @__PURE__ */ e(Ns, {}) }),
4677
4677
  /* @__PURE__ */ e(
4678
4678
  "iframe",
4679
4679
  {
4680
+ ref: u,
4680
4681
  title: l,
4681
- src: m,
4682
- onLoad: () => v(!1),
4682
+ src: M,
4683
+ onLoad: () => m(!1),
4683
4684
  className: "select-preview__iframe"
4684
4685
  },
4685
- y
4686
+ N
4686
4687
  )
4687
4688
  ] }) : /* @__PURE__ */ e("p", { className: "select-preview__empty", children: i }) })
4688
4689
  ] });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@selectwin/kit",
3
- "version": "0.1.67",
3
+ "version": "0.1.68",
4
4
  "description": "Selectwin design-system kit — primitivos React, charts SVG e tokens (theme-aware, sem dependência de biblioteca de chart).",
5
5
  "type": "module",
6
6
  "repository": {