@molecule/app-ide-react 1.19.0 → 1.19.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.
@@ -1 +1 @@
1
- {"version":3,"file":"HelpCard.d.ts","sourceRoot":"","sources":["../../src/components/HelpCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAMhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAKjE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,SAA8B,EAC9B,WAAkC,EAClC,YAAY,EACZ,aAAa,GACd,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,aAAa,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAA;CAC5D,GAAG,GAAG,CAAC,OAAO,CA6Hd"}
1
+ {"version":3,"file":"HelpCard.d.ts","sourceRoot":"","sources":["../../src/components/HelpCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAMhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAMjE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,SAA8B,EAC9B,WAAkC,EAClC,YAAY,EACZ,aAAa,GACd,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,aAAa,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAA;CAC5D,GAAG,GAAG,CAAC,OAAO,CAqId"}
@@ -5,6 +5,7 @@ import { getClassMap } from '@molecule/app-ui';
5
5
  import { chatCardStyle } from './chat-card-style.js';
6
6
  import { HELP_INTRO, HELP_MODES, HELP_SHORTCUTS, HELP_TIPS } from './chat-help-utilities.js';
7
7
  import { Icon } from './Icon.js';
8
+ import { isAllowedLinkHref } from './MarkdownContent.js';
8
9
  /**
9
10
  * The `/help` high-level guide card.
10
11
  *
@@ -23,10 +24,10 @@ export function HelpCard({ isLight, agentName = DEFAULT_AGENT_NAME, productName
23
24
  return (_jsxs("div", { "data-mol-id": "help-card", className: cm.textSize('xs'),
24
25
  // Shared card chrome: subtle primary tint + a uniform 1px border on all sides.
25
26
  // One source of truth with the other chat info cards (chat-card-style).
26
- style: { ...chatCardStyle(), marginBottom: 16 }, children: [_jsx("div", { className: sectionHeading, style: { marginBottom: 4 }, children: t('ide.chat.help.card.heading', undefined, { defaultValue: 'Help' }) }), _jsx("div", { className: cm.textMuted, style: { lineHeight: 1.4, marginBottom: 4 }, children: t(HELP_INTRO.key, { agentName, productName }, { defaultValue: HELP_INTRO.defaultValue }) }), _jsx("div", { className: sectionHeading, style: { marginTop: 12, marginBottom: 4 }, children: t('ide.chat.help.card.modesTitle', undefined, { defaultValue: 'Modes' }) }), _jsx("div", { "data-mol-id": "help-modes", children: HELP_MODES.map((helpMode) => (_jsxs("div", { "data-mol-id": `help-mode-${helpMode.id}`, style: { display: 'flex', alignItems: 'flex-start', gap: 8, padding: '3px 0' }, children: [_jsx(Icon, { name: helpMode.icon, size: 14, "aria-hidden": "true", "data-mol-id": `help-mode-icon-${helpMode.id}`, className: cm.textMuted, style: { flexShrink: 0, marginTop: 2, opacity: 0.8 } }), _jsx("span", { className: cm.textMuted, style: { flex: 1, lineHeight: 1.4 }, children: t(helpMode.key, { agentName }, { defaultValue: helpMode.defaultValue }) })] }, helpMode.id))) }), _jsx("div", { className: sectionHeading, style: { marginTop: 12, marginBottom: 4 }, children: t('ide.chat.help.card.tipsTitle', undefined, { defaultValue: 'Tips' }) }), _jsxs("div", { "data-mol-id": "help-tips", children: [HELP_TIPS.map((tip) => (_jsx("div", { "data-mol-id": `help-tip-${tip.id}`, className: cm.textMuted, style: { padding: '2px 0', lineHeight: 1.4 }, children: t(tip.key, { agentName }, { defaultValue: tip.defaultValue }) }, tip.id))), _jsx("div", { className: cm.textMuted, style: { marginTop: 6, lineHeight: 1.4 }, children: t(HELP_SHORTCUTS.key, undefined, { defaultValue: HELP_SHORTCUTS.defaultValue }) })] }), upgradeLines && upgradeLines.length > 0 && (_jsxs("div", { "data-mol-id": "help-upgrade", className: cm.borderT, style: { marginTop: 10, paddingTop: 8, borderColor: rowBorder }, children: [upgradeLines.map((line, i) => (_jsx("div", { className: cm.textMuted, style: { lineHeight: 1.4 }, children: line }, i))), upgradeActions.length > 0 && (_jsx("div", { style: { display: 'flex', gap: 8, marginTop: 8, flexWrap: 'wrap' }, children: upgradeActions.map((act, i) => act.href ? (_jsx("a", { "data-mol-id": "help-upgrade-action", href: act.href, target: act.href.startsWith('http') ? '_blank' : undefined, rel: act.href.startsWith('http') ? 'noopener noreferrer' : undefined,
27
+ style: { ...chatCardStyle(), marginBottom: 16 }, children: [_jsx("div", { className: sectionHeading, style: { marginBottom: 4 }, children: t('ide.chat.help.card.heading', undefined, { defaultValue: 'Help' }) }), _jsx("div", { className: cm.textMuted, style: { lineHeight: 1.4, marginBottom: 4 }, children: t(HELP_INTRO.key, { agentName, productName }, { defaultValue: HELP_INTRO.defaultValue }) }), _jsx("div", { className: sectionHeading, style: { marginTop: 12, marginBottom: 4 }, children: t('ide.chat.help.card.modesTitle', undefined, { defaultValue: 'Modes' }) }), _jsx("div", { "data-mol-id": "help-modes", children: HELP_MODES.map((helpMode) => (_jsxs("div", { "data-mol-id": `help-mode-${helpMode.id}`, style: { display: 'flex', alignItems: 'flex-start', gap: 8, padding: '3px 0' }, children: [_jsx(Icon, { name: helpMode.icon, size: 14, "aria-hidden": "true", "data-mol-id": `help-mode-icon-${helpMode.id}`, className: cm.textMuted, style: { flexShrink: 0, marginTop: 2, opacity: 0.8 } }), _jsx("span", { className: cm.textMuted, style: { flex: 1, lineHeight: 1.4 }, children: t(helpMode.key, { agentName }, { defaultValue: helpMode.defaultValue }) })] }, helpMode.id))) }), _jsx("div", { className: sectionHeading, style: { marginTop: 12, marginBottom: 4 }, children: t('ide.chat.help.card.tipsTitle', undefined, { defaultValue: 'Tips' }) }), _jsxs("div", { "data-mol-id": "help-tips", children: [HELP_TIPS.map((tip) => (_jsx("div", { "data-mol-id": `help-tip-${tip.id}`, className: cm.textMuted, style: { padding: '2px 0', lineHeight: 1.4 }, children: t(tip.key, { agentName }, { defaultValue: tip.defaultValue }) }, tip.id))), _jsx("div", { className: cm.textMuted, style: { marginTop: 6, lineHeight: 1.4 }, children: t(HELP_SHORTCUTS.key, undefined, { defaultValue: HELP_SHORTCUTS.defaultValue }) })] }), upgradeLines && upgradeLines.length > 0 && (_jsxs("div", { "data-mol-id": "help-upgrade", className: cm.borderT, style: { marginTop: 10, paddingTop: 8, borderColor: rowBorder }, children: [upgradeLines.map((line, i) => (_jsx("div", { className: cm.textMuted, style: { lineHeight: 1.4 }, children: line }, i))), upgradeActions.length > 0 && (_jsx("div", { style: { display: 'flex', gap: 8, marginTop: 8, flexWrap: 'wrap' }, children: upgradeActions.map((act, i) => act.href ? (isAllowedLinkHref(act.href) ? (_jsx("a", { "data-mol-id": "help-upgrade-action", href: act.href, target: act.href.startsWith('http') ? '_blank' : undefined, rel: act.href.startsWith('http') ? 'noopener noreferrer' : undefined,
27
28
  // The anchor form of the SAME CTA as the button below it —
28
29
  // same classes, same touch floor, so a link-backed upgrade
29
30
  // action is indistinguishable from a handler-backed one.
30
- className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: act.label }, i)) : (_jsx("button", { type: "button", "data-mol-id": "help-upgrade-action", onClick: act.onClick, className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: act.label }, i))) }))] }))] }));
31
+ className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: act.label }, i)) : (_jsx("span", { "data-mol-id": "help-upgrade-action", children: act.label }, i))) : (_jsx("button", { type: "button", "data-mol-id": "help-upgrade-action", onClick: act.onClick, className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: act.label }, i))) }))] }))] }));
31
32
  }
32
33
  //# sourceMappingURL=HelpCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HelpCard.js","sourceRoot":"","sources":["../../src/components/HelpCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HelpCard.js","sourceRoot":"","sources":["../../src/components/HelpCard.tsx"],"names":[],"mappings":"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"}
@@ -8,6 +8,24 @@
8
8
  * @module
9
9
  */
10
10
  import type { JSX } from 'react';
11
+ /**
12
+ * Whether `href` may become an `<a href>` anchor at all. A URL whose scheme is
13
+ * NOT on the allowlist (`javascript:`, `data:`, `vbscript:`, …) must render as
14
+ * inert text everywhere model-authored links render — markdown links, ChatPanel
15
+ * card actions and the HelpCard's action anchors included. A href with NO
16
+ * scheme (app routes, `#anchor`, `//host`) carries nothing executable, so it is
17
+ * allowed through this gate; whether it anchors or navigates the preview is the
18
+ * caller's decision.
19
+ *
20
+ * Browsers strip tab/CR/LF anywhere in a URL (and leading C0 controls/space)
21
+ * BEFORE scheme parsing, so `java\tscript:…` executes as `javascript:`. This
22
+ * gate strips those characters first and reads the scheme the way the browser
23
+ * will.
24
+ *
25
+ * @param href - The raw href from model output or a card action.
26
+ * @returns True when the href may render as an anchor.
27
+ */
28
+ export declare function isAllowedLinkHref(href: string): boolean;
11
29
  /** Props for {@link MarkdownContent}. */
12
30
  export interface MarkdownContentProps {
13
31
  /** The raw markdown text to render. */
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownContent.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownContent.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAkZ3C,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,wIAOzB,oBAAoB,KAAG,GAAG,CAAC,OAAO,CAwGnC,CAAA"}
1
+ {"version":3,"file":"MarkdownContent.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownContent.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAkB3C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQvD;AAmYD,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,wIAOzB,oBAAoB,KAAG,GAAG,CAAC,OAAO,CAwGnC,CAAA"}
@@ -12,6 +12,30 @@ import { StreamingIndicator } from './StreamingIndicator.js';
12
12
  * `isSafeUrl`).
13
13
  */
14
14
  const EXTERNAL_LINK_SCHEMES = new Set(['http:', 'https:', 'mailto:']);
15
+ /**
16
+ * Whether `href` may become an `<a href>` anchor at all. A URL whose scheme is
17
+ * NOT on the allowlist (`javascript:`, `data:`, `vbscript:`, …) must render as
18
+ * inert text everywhere model-authored links render — markdown links, ChatPanel
19
+ * card actions and the HelpCard's action anchors included. A href with NO
20
+ * scheme (app routes, `#anchor`, `//host`) carries nothing executable, so it is
21
+ * allowed through this gate; whether it anchors or navigates the preview is the
22
+ * caller's decision.
23
+ *
24
+ * Browsers strip tab/CR/LF anywhere in a URL (and leading C0 controls/space)
25
+ * BEFORE scheme parsing, so `java\tscript:…` executes as `javascript:`. This
26
+ * gate strips those characters first and reads the scheme the way the browser
27
+ * will.
28
+ *
29
+ * @param href - The raw href from model output or a card action.
30
+ * @returns True when the href may render as an anchor.
31
+ */
32
+ export function isAllowedLinkHref(href) {
33
+ const cleaned = href.replace(/[\t\r\n]/g, '').replace(
34
+ // eslint-disable-next-line no-control-regex -- strip LEADING C0 controls/space the way a URL parser does before scheme parsing
35
+ /^[\u0000-\u0020]+/, '');
36
+ const scheme = /^([a-z][a-z0-9+.-]*:)/i.exec(cleaned)?.[1]?.toLowerCase();
37
+ return scheme == null || EXTERNAL_LINK_SCHEMES.has(scheme);
38
+ }
15
39
  /**
16
40
  * Renders a single markdown link `[label](href)`. A ROUTE link — any app-internal path, whether
17
41
  * written with a leading slash (`/transactions`) or without (`transactions`, `courses/:id`) — is a
@@ -44,11 +68,12 @@ function LinkToken({ label, href, onNavigatePreview, }) {
44
68
  // broken by control characters (`java\tscript:`) fails the regex entirely, so it falls to
45
69
  // route handling — it can never slip into the anchor branch.
46
70
  const scheme = /^([a-z][a-z0-9+.-]*:)/i.exec(href)?.[1]?.toLowerCase();
47
- const isExternal = (scheme != null && EXTERNAL_LINK_SCHEMES.has(scheme)) || href.startsWith('//');
71
+ const allowlisted = isAllowedLinkHref(href);
72
+ const isExternal = (scheme != null && allowlisted) || href.startsWith('//');
48
73
  const isAnchor = href.startsWith('#');
49
74
  // Unapproved scheme → inert text: no anchor (model output must not be able to mint a
50
75
  // `javascript:` href) and no preview button (a `data:`/`ftp:` string is not an app route).
51
- if (scheme != null && !isExternal)
76
+ if (scheme != null && !allowlisted)
52
77
  return _jsx(_Fragment, { children: label });
53
78
  if (!isExternal && !isAnchor) {
54
79
  // Normalize to a root-relative path so the handler always receives a clean `/route`.
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownContent.js","sourceRoot":"","sources":["../../src/components/MarkdownContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownContent.js","sourceRoot":"","sources":["../../src/components/MarkdownContent.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO;IACnD,+HAA+H;IAC/H,mBAAmB,EACnB,EAAE,CACH,CAAA;IACD,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;IACzE,OAAO,MAAM,IAAI,IAAI,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,SAAS,CAAC,EACjB,KAAK,EACL,IAAI,EACJ,iBAAiB,GAKlB;IACC,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,mCAAmC;QAC1C,cAAc,EAAE,WAAW;QAC3B,mBAAmB,EAAE,KAAK;KAClB,CAAA;IAEV,2FAA2F;IAC3F,8FAA8F;IAC9F,2FAA2F;IAC3F,uFAAuF;IACvF,wFAAwF;IACxF,wFAAwF;IACxF,0FAA0F;IAC1F,6DAA6D;IAC7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;IACtE,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAErC,qFAAqF;IACrF,2FAA2F;IAC3F,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,4BAAG,KAAK,GAAI,CAAA;IAEvD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,qFAAqF;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;QACrD,+FAA+F;QAC/F,6FAA6F;QAC7F,0FAA0F;QAC1F,wEAAwE;QACxE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAA;QACzF,IAAI,eAAe,IAAI,CAAC,iBAAiB;YAAE,OAAO,4BAAG,KAAK,GAAI,CAAA;QAC9D,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,iBACD,mBAAmB,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EACtC,KAAK,EAAE,CAAC,CACN,2BAA2B,EAC3B,EAAE,IAAI,EAAE,EACR,EAAE,YAAY,EAAE,8BAA8B,EAAE,CACjD;YACD;;;wEAG4D;YAC5D,KAAK,EAAE;gBACL,GAAG,SAAS;gBACZ,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;aAClB,YAEA,KAAK,GACC,CACV,CAAA;IACH,CAAC;IACD,OAAO,CACL,YAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,EAAC,KAAK,EAAE,SAAS,YACtE,KAAK,GACJ,CACL,CAAA;AACH,CAAC;AAQD;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,MAAM,EAAE,GAAG,2BAA2B,CAAA;IACtC,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,CAAyB,CAAA;IAE7B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAClF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACrE,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7E,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,4FAA4F;AAC5F,yEAAyE;AACzE,MAAM,SAAS,GAAG,6EAA6E,CAAA;AAE/F;;;;;GAKG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,iBAA0C;IAC5E,MAAM,KAAK,GAAgB,EAAE,CAAA;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,KAAM,GAAG,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CACR,eAEE,KAAK,EAAE;oBACL,UAAU,EAAE,kEAAkE;oBAC9E,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,wBAAwB;oBACpC,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,SAAS;iBACnB,YAEA,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IATZ,CAAC,EAAE,CAUH,CACR,CAAA;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1B,gBAAgB;YAChB,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YACnD,IAAI,EAAE,EAAE,CAAC;gBACP,KAAK,CAAC,IAAI,CACR,KAAC,SAAS,IAAW,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,IAApE,CAAC,EAAE,CAAqE,CACzF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,2BAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAtB,CAAC,EAAE,CAA6B,CAAC,CAAA;QAC3D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,uBAAe,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAtB,CAAC,EAAE,CAAyB,CAAC,CAAA;QACnD,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,KAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC/B,CAAC;IAED,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACvC,OAAO,4BAAG,KAAK,GAAI,CAAA;AACrB,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,KAAK,CAAC,EACb,OAAO,EACP,MAAM,EACN,iBAAiB,GAKlB;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,GAAG,GAAkB,EAAE,CAAA;IAC7B,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;IACtB,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAErB,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,UAAU;QACV,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACvC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACxB,GAAG,CAAC,IAAI,CACN,YAEE,KAAK,EAAE;oBACL,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;oBACtC,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBAC9B,YAEA,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IARlC,CAAC,EAAE,CASN,CACL,CAAA;YACD,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,iBAAiB;QACjB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAkB,EAAE,CAAA;YAC/B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,IAAI,CACR,uBAAa,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,iBAAiB,CAAC,IAAnE,CAAC,CAAwE,CACnF,CAAA;gBACD,CAAC,EAAE,CAAA;YACL,CAAC;YACD,GAAG,CAAC,IAAI,CACN,aAAc,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,YACrF,KAAK,IADC,CAAC,EAAE,CAEP,CACN,CAAA;YACD,SAAQ;QACV,CAAC;QAED,eAAe;QACf,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAkB,EAAE,CAAA;YAC/B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CACR,uBAAa,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,iBAAiB,CAAC,IAApE,CAAC,CAAyE,CACpF,CAAA;gBACD,CAAC,EAAE,CAAA;YACL,CAAC;YACD,GAAG,CAAC,IAAI,CACN,aAEE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAE5E,KAAK,IAHD,CAAC,EAAE,CAIL,CACN,CAAA;YACD,SAAQ;QACV,CAAC;QAED,oDAAoD;QACpD,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,OACE,CAAC,GAAG,KAAK,CAAC,MAAM;YAChB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACf,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACzB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC,EAAE,CAAA;QACL,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CACN,YAAa,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,YAChE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,IAD3C,CAAC,EAAE,CAEP,CACL,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,4BAAG,GAAG,GAAI,CAAA;AACnB,CAAC;AAED,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAqC;IACrE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,iFAAiF;IACjF,SAAS,UAAU;QACjB,KAAK,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAC3C,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAC9B,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAGxE,eACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,UAAU;oBACnB,YAAY,EAAE,kCAAkC;oBAChD,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,IAAI;iBACd,aAED,eACE,KAAK,EAAE;4BACL,UAAU,EAAE,6CAA6C;4BACzD,aAAa,EAAE,OAAO;yBACvB,YAEA,IAAI,IAAI,MAAM,GACV,EAMP,iBACE,IAAI,EAAC,QAAQ,iBACD,gBAAgB,EAC5B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAChC,KAAK,EAAE;4BACL,UAAU,EAAE,MAAM;4BAClB,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,SAAS;4BACjB,KAAK,EAAE,SAAS;4BAChB,QAAQ,EAAE,MAAM;4BAChB,OAAO,EAAE,SAAS;4BAClB,OAAO,EAAE,IAAI;yBACd,YAEA,MAAM;4BACL,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;4BACzE,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,GACzD,IACL,EACN,cACE,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,WAAW;oBACpB,SAAS,EAAE,MAAM;oBACjB,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,kEAAkE;oBAC9E,UAAU,EAAE,KAAK;iBAClB,YAED,yBAAO,OAAO,GAAQ,GAClB,IACF,CACP,CAAA;AACH,CAAC;AAwCD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,eAAe,CAAC,EAC3D,IAAI,EACJ,WAAW,EACX,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACD;IACrB,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,iBAAiB;IACjB,EAAE;IACF,gFAAgF;IAChF,+EAA+E;IAC/E,8EAA8E;IAC9E,gFAAgF;IAChF,iFAAiF;IACjF,8DAA8D;IAC9D,MAAM,iBAAiB,GAAG,GAAG,CAAA;IAC7B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,CAAA,CAAC,iEAAiE;YACpF,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,CAAA;QACnD,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACjC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QACD,uEAAuE;QACvE,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE;YACzB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,YAAY,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAA;QAC/B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAExF,yEAAyE;IACzE,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IAElE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CACL,4BACG,WAAW,IAAI,CAAC,sBAAsB,IAAI,CACzC,KAAC,kBAAkB,IACjB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,SAAS,EAC3C,SAAS,EAAE,eAAe,GAC1B,CACH,GACA,CACJ,CAAA;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CACL,8BACE,eACE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAKtF,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACvB,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACpB,KAAC,SAAS,IAAS,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAvC,CAAC,CAA0C,CAC5D,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAEJ,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,MAAM,EAAE,CAAC,EACT,iBAAiB,EAAE,iBAAiB,IAH/B,CAAC,CAIN,CACH,CACF,EAMA,CAAC,sBAAsB,IAAI,CAAC,SAAS,IAAI,KAAC,kBAAkB,IAAC,MAAM,SAAG,IACnE,EACL,CAAC,sBAAsB,IAAI,SAAS,IAAI,CACvC,KAAC,kBAAkB,IAAC,KAAK,EAAE,WAAY,EAAE,SAAS,EAAE,eAAe,GAAI,CACxE,IACA,CACJ,CAAA;IACH,CAAC;IAED,OAAO,CAIL,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YACzF,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACvB,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACpB,KAAC,SAAS,IAAS,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAvC,CAAC,CAA0C,CAC5D,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAAS,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,IAAxE,CAAC,CAA2E,CACzF,CACF,GACG,CACP,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -63,6 +63,23 @@ import type { PreviewPanelProps } from '../types.js';
63
63
  * @returns `true` when the browser will show the document itself, with no bridge.
64
64
  */
65
65
  export declare function isRawDocumentUrl(url: string): boolean;
66
+ /**
67
+ * The targetOrigin for an OUTBOUND postMessage into the preview iframe: the
68
+ * iframe's CURRENT src origin when that parses, `'*'` only when it doesn't.
69
+ *
70
+ * Why: the inbound side of this bridge is gated on window identity
71
+ * (`event.source === iframe.contentWindow`), but the outbound side grew six
72
+ * wildcard posts — commands that can drive the page (click/fill/navigate)
73
+ * deliverable to WHATEVER page ever ended up in this frame. Targeting the
74
+ * frame's current src origin pins delivery to the page the panel believes it
75
+ * is talking to. The fallback stays `'*'` (never break the bridge: a stranded
76
+ * command loop is the whole preview going dark), and an unparsable src is
77
+ * exactly the case where no origin is known anyway.
78
+ *
79
+ * @param iframe - The preview iframe element (may be null pre-mount).
80
+ * @returns The targetOrigin string for `postMessage`.
81
+ */
82
+ export declare function previewTargetOrigin(iframe: HTMLIFrameElement | null): string;
66
83
  /**
67
84
  * Live preview panel with iframe, device frame selector, and URL bar.
68
85
  * @param props - Component props.
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewPanel.d.ts","sourceRoot":"","sources":["../../src/components/PreviewPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAAE,KAAK,GAAG,EAA4C,MAAM,OAAO,CAAA;AAW1E,OAAO,KAAK,EAAE,iBAAiB,EAAuC,MAAM,aAAa,CAAA;AAmOzF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD;AA2KD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,GACP,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAs9DjC;yBAp+De,YAAY"}
1
+ {"version":3,"file":"PreviewPanel.d.ts","sourceRoot":"","sources":["../../src/components/PreviewPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAAE,KAAK,GAAG,EAA4C,MAAM,OAAO,CAAA;AAW1E,OAAO,KAAK,EAAE,iBAAiB,EAAuC,MAAM,aAAa,CAAA;AAmOzF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD;AA2KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAU5E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,GACP,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CA49DjC;yBA1+De,YAAY"}
@@ -450,6 +450,34 @@ async function isServerUp(url, externalSignal) {
450
450
  externalSignal.removeEventListener('abort', onExternalAbort);
451
451
  }
452
452
  }
453
+ /**
454
+ * The targetOrigin for an OUTBOUND postMessage into the preview iframe: the
455
+ * iframe's CURRENT src origin when that parses, `'*'` only when it doesn't.
456
+ *
457
+ * Why: the inbound side of this bridge is gated on window identity
458
+ * (`event.source === iframe.contentWindow`), but the outbound side grew six
459
+ * wildcard posts — commands that can drive the page (click/fill/navigate)
460
+ * deliverable to WHATEVER page ever ended up in this frame. Targeting the
461
+ * frame's current src origin pins delivery to the page the panel believes it
462
+ * is talking to. The fallback stays `'*'` (never break the bridge: a stranded
463
+ * command loop is the whole preview going dark), and an unparsable src is
464
+ * exactly the case where no origin is known anyway.
465
+ *
466
+ * @param iframe - The preview iframe element (may be null pre-mount).
467
+ * @returns The targetOrigin string for `postMessage`.
468
+ */
469
+ export function previewTargetOrigin(iframe) {
470
+ const src = iframe?.getAttribute('src');
471
+ if (src) {
472
+ try {
473
+ return new URL(src).origin;
474
+ }
475
+ catch (_error) {
476
+ // Unparsable src — no known origin to target; keep the bridge alive.
477
+ }
478
+ }
479
+ return '*';
480
+ }
453
481
  /**
454
482
  * Live preview panel with iframe, device frame selector, and URL bar.
455
483
  * @param props - Component props.
@@ -506,7 +534,7 @@ export function PreviewPanel({ loadingIndicator, restartingIndicator, className,
506
534
  // hit to a Next.js/Nuxt/SvelteKit route commonly takes 10-30s (and an auth redirect compiles a
507
535
  // SECOND route), so a 12s window timed out navigate_preview on every imported meta-framework app.
508
536
  const post = () => {
509
- iframeRef.current?.contentWindow?.postMessage(payload, '*');
537
+ iframeRef.current?.contentWindow?.postMessage(payload, previewTargetOrigin(iframeRef.current));
510
538
  };
511
539
  post();
512
540
  const deadline = Date.now() + 40_000;
@@ -1209,7 +1237,7 @@ export function PreviewPanel({ loadingIndicator, restartingIndicator, className,
1209
1237
  event.data?.type !== 'molecule:ui-result' &&
1210
1238
  Date.now() <= pendingUi.deadline &&
1211
1239
  !uiResolvedRef.current.has(pendingUi.payload.id)) {
1212
- previewWindow.postMessage(pendingUi.payload, '*');
1240
+ previewWindow.postMessage(pendingUi.payload, previewTargetOrigin(iframeRef.current));
1213
1241
  }
1214
1242
  // A spec asked for a viewport. The e2e preview client posts this and then
1215
1243
  // polls its own innerWidth until the host honours it (up to 4s), so all
@@ -1353,11 +1381,11 @@ export function PreviewPanel({ loadingIndicator, restartingIndicator, className,
1353
1381
  height: Number.isFinite(height) && height > 0 ? Math.round(height) : 844,
1354
1382
  };
1355
1383
  setRequestedSize(next);
1356
- previewWindow.postMessage({ type: 'molecule:viewport-result', id: event.data.id, ...next }, '*');
1384
+ previewWindow.postMessage({ type: 'molecule:viewport-result', id: event.data.id, ...next }, previewTargetOrigin(iframeRef.current));
1357
1385
  }
1358
1386
  else {
1359
1387
  setRequestedSize(null);
1360
- previewWindow.postMessage({ type: 'molecule:viewport-result', id: event.data.id, width: null, height: null }, '*');
1388
+ previewWindow.postMessage({ type: 'molecule:viewport-result', id: event.data.id, width: null, height: null }, previewTargetOrigin(iframeRef.current));
1361
1389
  }
1362
1390
  }
1363
1391
  else if (event.data?.type === 'molecule:heartbeat') {
@@ -1464,7 +1492,7 @@ export function PreviewPanel({ loadingIndicator, restartingIndicator, className,
1464
1492
  // with the bridge alive the whole time (X0 rehearsal 28, G46).
1465
1493
  const pending = pendingUiPostRef.current;
1466
1494
  if (pending && Date.now() <= pending.deadline) {
1467
- iframeRef.current?.contentWindow?.postMessage(pending.payload, '*');
1495
+ iframeRef.current?.contentWindow?.postMessage(pending.payload, previewTargetOrigin(iframeRef.current));
1468
1496
  }
1469
1497
  // The document that just loaded is the raw file a link click announced (feed.xml,
1470
1498
  // provenance.json, llms.txt): the browser shows it with its own viewer and no bridge will
@@ -1952,7 +1980,7 @@ export function PreviewPanel({ loadingIndicator, restartingIndicator, className,
1952
1980
  // the preview has reported navigations (history is built from them), so the
1953
1981
  // scaffold nav-bridge receiver is always present when these fire.
1954
1982
  const postNavCommand = useCallback((action) => {
1955
- iframeRef.current?.contentWindow?.postMessage({ type: 'molecule:nav-command', action }, '*');
1983
+ iframeRef.current?.contentWindow?.postMessage({ type: 'molecule:nav-command', action }, previewTargetOrigin(iframeRef.current));
1956
1984
  }, []);
1957
1985
  const handleBack = useCallback(() => {
1958
1986
  back();