{"version":3,"file":"index.mjs","sources":["../src/core.ts","../src/renderers/html.ts","../src/parsers/htmlToTree.ts","../src/components/Canvas.tsx","../src/components/Inspector.tsx","../src/chat/ChatPanel.tsx","../src/components/Toolbar.tsx","../src/Editor.tsx","../src/chat/OpenAIAdapter.ts","../src/components/Sidebar.tsx"],"sourcesContent":["import { EmailNode, SectionProps, TextProps, ImageProps, ButtonProps, SpacerProps, ColumnProps } from './types';\n\nexport const uid = () => Math.random().toString(36).slice(2, 10);\n\nexport const createSection = (props: Partial<SectionProps> = {}, children: EmailNode[] = []): EmailNode<SectionProps> => ({\n  id: uid(),\n  type: 'section',\n  props: {\n    backgroundColor: '#ffffff',\n    padding: '24px 24px',\n    align: 'left',\n    ...props,\n  },\n  children,\n});\n\nexport const createColumn = (props: Partial<ColumnProps> = {}, children: EmailNode[] = []): EmailNode<ColumnProps> => ({\n  id: uid(),\n  type: 'column',\n  props: {\n    width: '100%',\n    padding: '0px',\n    align: 'left',\n    ...props,\n  },\n  children,\n});\n\nexport const createText = (props: Partial<TextProps> = {}): EmailNode<TextProps> => ({\n  id: uid(),\n  type: 'text',\n  props: {\n    content: 'Write something…',\n    align: 'left',\n    color: '#111111',\n    fontSize: '14px',\n    lineHeight: '1.5',\n    ...props,\n  },\n});\n\nexport const createImage = (props: Partial<ImageProps> = {}): EmailNode<ImageProps> => ({\n  id: uid(),\n  type: 'image',\n  props: {\n    src: 'https://via.placeholder.com/600x200',\n    alt: 'Image',\n    width: '600',\n    ...props,\n  },\n});\n\nexport const createButton = (props: Partial<ButtonProps> = {}): EmailNode<ButtonProps> => ({\n  id: uid(),\n  type: 'button',\n  props: {\n    label: 'Click me',\n    href: '#',\n    backgroundColor: '#0f172a',\n    color: '#ffffff',\n    padding: '12px 16px',\n    borderRadius: '4px',\n    ...props,\n  },\n});\n\nexport const createSpacer = (props: Partial<SpacerProps> = {}): EmailNode<SpacerProps> => ({\n  id: uid(),\n  type: 'spacer',\n  props: {\n    height: '16px',\n    ...props,\n  },\n});\n\nexport function findNode(root: EmailNode, id: string): EmailNode | undefined {\n  if (root.id === id) return root;\n  if (!root.children) return undefined;\n  for (const child of root.children) {\n    const res = findNode(child, id);\n    if (res) return res;\n  }\n  return undefined;\n}\n\nexport function updateNode(root: EmailNode, id: string, patch: Partial<EmailNode['props']>): EmailNode {\n  if (root.id === id) {\n    return { ...root, props: { ...root.props, ...patch } } as EmailNode;\n  }\n  if (!root.children) return root;\n  return {\n    ...root,\n    children: root.children.map((c) => updateNode(c, id, patch)),\n  };\n}\n\nexport function insertNode(root: EmailNode, parentId: string, node: EmailNode, index?: number): EmailNode {\n  if (root.id === parentId) {\n    const children = [...(root.children ?? [])];\n    const i = index === undefined ? children.length : Math.max(0, Math.min(children.length, index));\n    children.splice(i, 0, node);\n    return { ...root, children };\n  }\n  if (!root.children) return root;\n  return { ...root, children: root.children.map((c) => insertNode(c, parentId, node, index)) };\n}\n\nexport function removeNode(root: EmailNode, id: string): EmailNode {\n  if (!root.children) return root.id === id ? root : root;\n  const filtered = root.children.filter((c) => c.id !== id).map((c) => removeNode(c, id));\n  return { ...root, children: filtered };\n}\n\nexport function moveNode(root: EmailNode, id: string, newParentId: string, newIndex: number): EmailNode {\n  // Extract node\n  let extracted: EmailNode | undefined;\n  function _remove(n: EmailNode): EmailNode {\n    if (!n.children) return n;\n    const idx = n.children.findIndex((c) => c.id === id);\n    if (idx >= 0) {\n      extracted = n.children[idx];\n      const nextChildren = [...n.children.slice(0, idx), ...n.children.slice(idx + 1)];\n      return { ...n, children: nextChildren };\n    }\n    return { ...n, children: n.children.map(_remove) };\n  }\n  const without = _remove(root);\n  if (!extracted) return root;\n  return insertNode(without, newParentId, extracted, newIndex);\n}\n\nexport function findParent(\n  root: EmailNode,\n  id: string,\n  parent: EmailNode | null = null\n): { parent: EmailNode | null; index: number } | null {\n  if (!root.children) return null;\n  const idx = root.children.findIndex((c) => c.id === id);\n  if (idx >= 0) return { parent: root, index: idx };\n  for (const child of root.children) {\n    const res = findParent(child, id, root);\n    if (res) return res;\n  }\n  return null;\n}\n\nexport function moveSibling(root: EmailNode, id: string, delta: number): EmailNode {\n  const info = findParent(root, id);\n  if (!info || !info.parent) return root;\n  const { parent, index } = info;\n  const children = [...(parent.children ?? [])];\n  const to = Math.max(0, Math.min(children.length - 1, index + delta));\n  if (to === index) return root;\n  const [node] = children.splice(index, 1);\n  children.splice(to, 0, node);\n  const replaced = { ...parent, children };\n  // write back replaced parent into tree\n  if (root.id === replaced.id) return replaced;\n  function write(n: EmailNode): EmailNode {\n    if (!n.children) return n;\n    if (n.id === replaced.id) return replaced;\n    return { ...n, children: n.children.map(write) };\n  }\n  return write(root);\n}\n","import { EmailNode } from '../types';\n\nconst esc = (s: unknown) => String(s ?? '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nexport function renderToHtml(root: EmailNode): string {\n  const inner = renderNode(root);\n  return `<!doctype html>\n<html>\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>Email</title>\n  </head>\n  <body style=\"margin:0;padding:0;background:#f6f6f6;\">\n    <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background:#f6f6f6;\">\n      <tr>\n        <td align=\"center\">\n          <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;max-width:100%;\">\n            ${inner}\n          </table>\n        </td>\n      </tr>\n    </table>\n  </body>\n</html>`;\n}\n\nfunction renderNode(node: EmailNode): string {\n  switch (node.type) {\n    case 'section': {\n      const { backgroundColor = '#ffffff', padding = '24px 24px', align = 'left' } = node.props as any;\n      const children = (node.children ?? []).map(renderNode).join('');\n      return `<tr><td align=\"${align}\" style=\"background:${backgroundColor};padding:${esc(padding)};\">${children}</td></tr>`;\n    }\n    case 'column': {\n      const { width = '100%', padding = '0px', align = 'left' } = node.props as any;\n      const children = (node.children ?? []).map(renderNode).join('');\n      return `<table role=\"presentation\" width=\"${esc(width)}\" style=\"width:${esc(width)};\" cellpadding=\"0\" cellspacing=\"0\"><tr><td align=\"${align}\" style=\"padding:${esc(padding)};\">${children}</td></tr></table>`;\n    }\n    case 'text': {\n      const { content = '', align = 'left', color = '#111111', fontSize = '14px', lineHeight = '1.5' } = node.props as any;\n      return `<div style=\"text-align:${align};color:${color};font-size:${esc(fontSize)};line-height:${esc(lineHeight)};\">${content}</div>`;\n    }\n    case 'image': {\n      const { src = '', alt = '', width = '600', href } = node.props as any;\n      const img = `<img src=\"${esc(src)}\" alt=\"${esc(alt)}\" width=\"${esc(width)}\" style=\"display:block;border:0;outline:none;text-decoration:none;width:${esc(width)}px;max-width:100%;\" />`;\n      return href ? `<a href=\"${esc(href)}\" target=\"_blank\">${img}</a>` : img;\n    }\n    case 'button': {\n      const { label = 'Click me', href = '#', backgroundColor = '#0f172a', color = '#ffffff', padding = '12px 16px', borderRadius = '4px' } = node.props as any;\n      return `<a href=\"${esc(href)}\" style=\"display:inline-block;background:${backgroundColor};color:${color};padding:${esc(padding)};border-radius:${esc(borderRadius)};text-decoration:none;font-weight:600;\">${esc(label)}</a>`;\n    }\n    case 'spacer': {\n      const { height = '16px' } = node.props as any;\n      return `<div style=\"height:${esc(height)};line-height:${esc(height)};font-size:1px;\">&nbsp;</div>`;\n    }\n    default:\n      return '';\n  }\n}\n","import { EmailNode } from '../types';\nimport { createButton, createColumn, createImage, createSection, createSpacer, createText, uid } from '../core';\n\nfunction parseStyle(style: string | null | undefined): Record<string, string> {\n  const out: Record<string, string> = {};\n  if (!style) return out;\n  style.split(';').forEach(part => {\n    const [k, ...rest] = part.split(':');\n    if (!k || rest.length === 0) return;\n    const key = k.trim().toLowerCase();\n    const val = rest.join(':').trim();\n    if (key) out[key] = val;\n  });\n  return out;\n}\n\nfunction textOf(el: Element): string {\n  return (el as HTMLElement).innerHTML ?? '';\n}\n\nfunction parseSectionTd(td: HTMLTableCellElement): EmailNode {\n  const s = parseStyle(td.getAttribute('style'));\n  const backgroundColor = s['background'] || s['background-color'] || '#ffffff';\n  const padding = s['padding'] || '24px 24px';\n  const align = (td.getAttribute('align') as any) || 'left';\n\n  const section = createSection({ backgroundColor, padding, align });\n  const children: EmailNode[] = [];\n\n  td.childNodes.forEach(node => {\n    if (node.nodeType !== 1) return; // element\n    const el = node as Element;\n    const tag = el.tagName.toLowerCase();\n\n    if (tag === 'table') {\n      // Likely a column\n      const width = (el.getAttribute('width') || (parseStyle(el.getAttribute('style'))['width'] ?? '100%')).toString();\n      // find td inside\n      const innerTd = el.querySelector('td');\n      const col = createColumn({ width, padding: innerTd ? (parseStyle(innerTd.getAttribute('style'))['padding'] || '0px') : '0px' });\n      const blocks: EmailNode[] = innerTd ? parseBlocks(innerTd) : [];\n      col.children = blocks;\n      children.push(col);\n    } else {\n      // direct blocks inside section\n      const blocks = parseBlocks(td);\n      blocks.forEach(b => children.push(b));\n    }\n  });\n\n  section.children = children;\n  return section;\n}\n\nfunction parseBlocks(container: Element): EmailNode[] {\n  const out: EmailNode[] = [];\n  container.childNodes.forEach(n => {\n    if (n.nodeType !== 1) return;\n    const el = n as Element;\n    const tag = el.tagName.toLowerCase();\n\n    if (tag === 'div') {\n      const s = parseStyle(el.getAttribute('style'));\n      const hasHeightOnly = !!s['height'] && (s['font-size']?.includes('1px') || s['line-height'] === s['height']);\n      if (hasHeightOnly) {\n        out.push(createSpacer({ height: s['height'] }));\n      } else {\n        out.push(createText({\n          content: textOf(el),\n          align: (s['text-align'] as any) || 'left',\n          color: s['color'] || '#111111',\n          fontSize: s['font-size'] || '14px',\n          lineHeight: s['line-height'] || '1.5',\n        }));\n      }\n      return;\n    }\n\n    if (tag === 'a') {\n      const s = parseStyle(el.getAttribute('style'));\n      // If it's our button style (inline-block + background)\n      if ((s['display']?.includes('inline-block') || s['display']?.includes('inline')) && (s['background'] || s['background-color'])) {\n        out.push(createButton({\n          label: el.textContent || 'Click me',\n          href: el.getAttribute('href') || '#',\n          backgroundColor: s['background'] || s['background-color'] || '#0f172a',\n          color: s['color'] || '#ffffff',\n          padding: s['padding'] || '12px 16px',\n          borderRadius: s['border-radius'] || '4px',\n        }));\n        return;\n      }\n      // Could also be a linked image\n      const img = el.querySelector('img');\n      if (img) {\n        const istyle = parseStyle(img.getAttribute('style'));\n        out.push(createImage({\n          src: img.getAttribute('src') || '',\n          alt: img.getAttribute('alt') || '',\n          width: img.getAttribute('width') || istyle['width']?.replace('px', '') || '600',\n          href: el.getAttribute('href') || undefined,\n        }));\n        return;\n      }\n    }\n\n    if (tag === 'img') {\n      const s = parseStyle(el.getAttribute('style'));\n      out.push(createImage({\n        src: el.getAttribute('src') || '',\n        alt: el.getAttribute('alt') || '',\n        width: el.getAttribute('width') || s['width']?.replace('px', '') || '600',\n      }));\n      return;\n    }\n  });\n  return out;\n}\n\nexport function parseHtmlToTree(html: string): EmailNode {\n  try {\n    const parser = new DOMParser();\n    const doc = parser.parseFromString(html, 'text/html');\n    const inner = doc.querySelector('table[width=\"600\"]') as HTMLTableElement | null;\n    if (!inner) throw new Error('Unable to find inner table');\n    const sections: EmailNode[] = [];\n    inner.querySelectorAll(':scope > tbody > tr > td, :scope > tr > td').forEach(td => {\n      // Different browsers may or may not include tbody\n      sections.push(parseSectionTd(td as HTMLTableCellElement));\n    });\n    if (sections.length === 0) {\n      // Fallback: one blank section+column\n      const section = createSection({}, [createColumn({}, [createText({ content: 'Hello' })])]);\n      return section;\n    }\n    // If multiple sections detected, wrap them into a root section with columns? Our model expects root to be a section; allow multiple by creating a root with children as sections.\n    if (sections.length === 1) return sections[0];\n    const root = createSection({}, []);\n    root.children = sections;\n    return root;\n  } catch (e) {\n    // Fallback to a simple default if parsing fails\n    return createSection({}, [createColumn({}, [createText({ content: 'Hello' })])]);\n  }\n}\n\n// Expose uid for advanced consumers (not exported in index here)\nexport { uid };\n","import React, { useState } from 'react';\nimport { EmailNode } from '../types';\n\ntype Props = {\n  root: EmailNode;\n  onSelect: (id?: string) => void;\n  selectedId?: string;\n  onMoveUp?: (id: string) => void;\n  onMoveDown?: (id: string) => void;\n  onRemove?: (id: string) => void;\n  mode?: 'edit' | 'preview';\n  factories?: Record<string, () => EmailNode>;\n  onInsertAt?: (parentId: string, node: EmailNode, index?: number) => void;\n  onInsertAfter?: (targetId: string, node: EmailNode) => void;\n};\n\nconst PlusIcon = ({ size = 18 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n    <path d=\"M12 5v14M5 12h14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n  </svg>\n);\n\nconst ArrowUpIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n    <path d=\"M12 5l-6 6m6-6l6 6M12 5v14\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n  </svg>\n);\n\nconst ArrowDownIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n    <path d=\"M12 19l6-6m-6 6l-6-6M12 19V5\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n  </svg>\n);\n\nconst TrashIcon = ({ size = 15 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n    <path d=\"M4 7h16M9 7V4h6v3m-8 0l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n  </svg>\n);\n\nexport const Canvas: React.FC<Props> = ({ root, onSelect, selectedId, onMoveUp, onMoveDown, onRemove, mode = 'edit', factories, onInsertAt, onInsertAfter }) => {\n  const [pickerFor, setPickerFor] = useState<string | undefined>(undefined);\n  const [hoverId, setHoverId] = useState<string | undefined>(undefined);\n\n  function BlockPicker({ onPick }: { onPick: (type: EmailNode['type']) => void }) {\n    const items: Array<{ t: EmailNode['type']; label: string; icon: React.ReactNode }> = [\n      { t: 'text', label: 'Text', icon: <span style={{ fontWeight: 700 }}>T</span> },\n      { t: 'button', label: 'Button', icon: <span>⬚</span> },\n      { t: 'image', label: 'Image', icon: <span>▦</span> },\n      { t: 'spacer', label: 'Spacer', icon: <span>—</span> },\n      { t: 'column', label: 'Column', icon: <span>▥</span> },\n    ];\n    return (\n      <div className=\"neb-picker\" onClick={(e) => e.stopPropagation()}>\n        {items.map((it) => (\n          <button key={it.t} className=\"neb-pick\" onClick={() => onPick(it.t)}>\n            <div className=\"icon\">{it.icon}</div>\n            <div className=\"lbl\">{it.label}</div>\n          </button>\n        ))}\n      </div>\n    );\n  }\n  function NodeView({ node }: { node: EmailNode }) {\n    const isSelected = mode === 'edit' && node.id === selectedId;\n    const onNodeClick: React.MouseEventHandler = (e) => {\n      e.stopPropagation();\n      if (mode === 'edit') onSelect(node.id);\n    };\n\n    // Render visual preview for each block\n    let rendered: React.ReactNode = null;\n    if (node.type === 'section') {\n      const { backgroundColor = '#ffffff', padding = '24px 24px' } = node.props as any;\n      rendered = (\n        <div style={{ background: backgroundColor, padding }}>\n          {node.children?.map((c) => (\n            <NodeView key={c.id} node={c} />\n          ))}\n        </div>\n      );\n    } else if (node.type === 'column') {\n      const { width = '100%', padding = '0px' } = node.props as any;\n      rendered = (\n        <div style={{ width, padding }}>\n          {node.children?.map((c) => (\n            <NodeView key={c.id} node={c} />\n          ))}\n        </div>\n      );\n    } else if (node.type === 'text') {\n      const { content = '', align = 'left', color = '#111111', fontSize = '14px', lineHeight = '1.5' } = node.props as any;\n      rendered = (\n        <div style={{ textAlign: align as any, color, fontSize, lineHeight }}>{content}</div>\n      );\n    } else if (node.type === 'image') {\n      const { src = '', alt = '', width = '600' } = node.props as any;\n      rendered = (\n        <img src={src} alt={alt} width={Number(width) || undefined} style={{ display: 'block', maxWidth: '100%' }} onClick={(e) => e.preventDefault()} />\n      );\n    } else if (node.type === 'button') {\n      const { label = 'Click me', href = '#', backgroundColor = '#0f172a', color = '#ffffff', padding = '12px 16px', borderRadius = '4px' } = node.props as any;\n      rendered = (\n        <a\n          href={href}\n          onClick={(e) => e.preventDefault()}\n          style={{ display: 'inline-block', background: backgroundColor, color, padding, borderRadius, textDecoration: 'none', fontWeight: 600 }}\n        >\n          {label}\n        </a>\n      );\n    } else if (node.type === 'spacer') {\n      const { height = '16px' } = node.props as any;\n      rendered = <div style={{ height, lineHeight: height, fontSize: 1 }} />;\n    }\n\n    const showPicker = pickerFor === node.id && mode === 'edit';\n    const showAdd = mode === 'edit' && (hoverId === node.id || showPicker);\n    return (\n      <div\n        onClick={onNodeClick}\n        onMouseEnter={() => setHoverId(node.id)}\n        onMouseLeave={() => setHoverId((id) => (id === node.id ? undefined : id))}\n        className={`neb-node ${isSelected ? 'selected' : ''}`}\n      >\n        {showAdd && (\n          <div className=\"neb-add-wrap\" onClick={(e) => e.stopPropagation()}>\n            <button\n              type=\"button\"\n              className=\"neb-add-btn \"\n              title=\"Add block\"\n              style={{ color: '#fff' }}\n              onClick={() => setPickerFor((p) => (p === node.id ? undefined : node.id))}\n            >\n              <PlusIcon  />\n            </button>\n            {showPicker && (\n              <div className=\"neb-picker-wrap\">\n                <BlockPicker\n                  onPick={(t) => {\n                    if (!factories) return;\n                    const make = (factories as any)[t] as (() => EmailNode) | undefined;\n                    const newNode = make ? make() : ({ id: Math.random().toString(36).slice(2), type: t, props: {} } as EmailNode);\n                    if (node.type === 'section' || node.type === 'column') {\n                      onInsertAt?.(node.id, newNode);\n                    } else {\n                      onInsertAfter?.(node.id, newNode);\n                    }\n                    setPickerFor(undefined);\n                  }}\n                />\n              </div>\n            )}\n          </div>\n        )}\n        {isSelected && mode === 'edit' && (\n          <div className=\"neb-side-ctrl\" onClick={(e) => e.stopPropagation()}>\n            <button className=\"ctrl\" title=\"Move up\" onClick={() => onMoveUp?.(node.id)}><ArrowUpIcon /></button>\n            <button className=\"ctrl\" title=\"Move down\" onClick={() => onMoveDown?.(node.id)}><ArrowDownIcon /></button>\n            <button className=\"ctrl danger\" title=\"Delete\" onClick={() => onRemove?.(node.id)}><TrashIcon /></button>\n          </div>\n        )}\n        {mode === 'edit' && <div className=\"label\">{node.type}</div>}\n        {rendered}\n        \n      </div>\n    );\n  }\n\n  return (\n    <div onClick={() => { setPickerFor(undefined); onSelect(undefined); }} className=\"neb-canvas-wrap\" aria-label=\"Canvas\">\n      <div className={`neb-canvas ${mode === 'preview' ? 'neb-preview' : ''}`}>\n        <div className=\"neb-stage\">\n          <NodeView node={root} />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { EmailNode } from '../types';\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n  return (\n    <label className=\"field\">\n      <span style={{ fontSize: 12, color: 'var(--subtle)' }}>{label}</span>\n      {children}\n    </label>\n  );\n}\n\ntype Props = {\n  node?: EmailNode;\n  onChange: (patch: Record<string, unknown>) => void;\n};\n\nfunction parsePx(v: any, d = 0): number {\n  if (v == null) return d;\n  const m = String(v).match(/(-?\\d+(?:\\.\\d+)?)/);\n  return m ? Number(m[1]) : d;\n}\n\nfunction toPx(n: number) { return `${Math.round(n)}px`; }\n\nfunction parsePadding(v: any): [number, number, number, number] {\n  const s = String(v ?? '').trim();\n  if (!s) return [24, 24, 24, 24];\n  const parts = s.split(/\\s+/).map((p) => parsePx(p, 0));\n  if (parts.length === 1) return [parts[0], parts[0], parts[0], parts[0]];\n  if (parts.length === 2) return [parts[0], parts[1], parts[0], parts[1]];\n  if (parts.length === 3) return [parts[0], parts[1], parts[2], parts[1]];\n  return [parts[0], parts[1], parts[2], parts[3]];\n}\n\nexport const Inspector: React.FC<Props> = ({ node, onChange }) => {\n  if (!node) return <div className=\"neb\" style={{ color: 'var(--subtle)' }}>Select a node to edit.</div>;\n  const initial = (node.props ?? {}) as any;\n\n  // Local form state to prevent focus loss while typing\n  const [form, setForm] = useState<any>(initial);\n  useEffect(() => { setForm(initial); }, [node.id]);\n\n  // Focus preservation across re-renders\n  const wrapRef = useRef<HTMLDivElement | null>(null);\n  const lastFocusRef = useRef<{ name: string; selStart?: number | null; selEnd?: number | null } | null>(null);\n  // Capture focus inside inspector to remember which field was focused\n  const onFocusCapture: React.FocusEventHandler = (e) => {\n    const t = e.target as HTMLElement;\n    if (!(t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement || t instanceof HTMLSelectElement)) return;\n    lastFocusRef.current = {\n      name: t.name,\n      selStart: (t as HTMLInputElement | HTMLTextAreaElement).selectionStart ?? null,\n      selEnd: (t as HTMLInputElement | HTMLTextAreaElement).selectionEnd ?? null,\n    };\n  };\n  // Also update caret position while typing/clicking\n  const onInputCapture: React.FormEventHandler = (e) => {\n    const t = e.target as HTMLElement;\n    if (t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement) {\n      lastFocusRef.current = {\n        name: t.name,\n        selStart: t.selectionStart ?? null,\n        selEnd: t.selectionEnd ?? null,\n      };\n    }\n  };\n  // When local form changes (set by onChange handlers), ensure the focused element remains focused\n  useLayoutEffect(() => {\n    const root = wrapRef.current;\n    if (!root) return;\n    const active = document.activeElement as Element | null;\n    // If focus is already inside inspector, nothing to do\n    if (active && root.contains(active)) return;\n    const lf = lastFocusRef.current;\n    if (!lf || !lf.name) return;\n    const el = root.querySelector(`[name=\"${CSS.escape(lf.name)}\"]`) as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null;\n    if (el) {\n      el.focus({ preventScroll: true });\n      try {\n        if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n          const start = lf.selStart ?? el.value.length;\n          const end = lf.selEnd ?? start;\n          el.setSelectionRange(start, end);\n        }\n      } catch {}\n    }\n  }, [form]);\n\n  // Change helpers\n  const setOnly = (patch: Record<string, any>) => setForm((f: any) => ({ ...f, ...patch }));\n  const commit = (patch?: Record<string, any>) => {\n    if (patch) setOnly(patch);\n    // commit the current form to parent (single render)\n    onChange({ ...form, ...(patch ?? {}) });\n  };\n\n  const props = form;\n  const isText = node.type === 'text';\n  const isButton = node.type === 'button';\n  const isImage = node.type === 'image';\n  const isSection = node.type === 'section';\n  const isColumn = node.type === 'column';\n  const isSpacer = node.type === 'spacer';\n\n  // Field moved to top-level to avoid remounts on each render\n\n  const set = setOnly;\n\n  return (\n    <div className=\"neb neb-inspector\" ref={wrapRef} onFocusCapture={onFocusCapture} onInputCapture={onInputCapture}>\n      <div className=\"body\" style={{ display: 'grid', gap: 10 }}>\n        <div className=\"bgroup\" style={{ display: 'grid', gap: 8 }}>\n          <div style={{ fontWeight: 700, color: 'var(--text)' }}>{node.type.toUpperCase()} block</div>\n\n          {isText && (\n            <>\n              <Field label=\"Content\">\n                <textarea className=\"neb-input\" name=\"content\" rows={3} value={props.content ?? ''}\n                  onChange={(e) => set({ content: e.target.value })}\n                  onBlur={(e) => commit({ content: e.target.value })}\n                />\n              </Field>\n              <div className=\"row\">\n                <Field label=\"Color\">\n                  <input type=\"color\" className=\"neb-color\" name=\"text_color\" value={props.color ?? '#111111'}\n                    onChange={(e) => set({ color: e.target.value })}\n                    onBlur={(e) => commit({ color: e.target.value })}\n                  />\n                </Field>\n                <Field label=\"Align\">\n                  <select className=\"neb-select\" name=\"text_align\" value={props.align ?? 'left'} onChange={(e) => commit({ align: e.target.value })}>\n                    <option value=\"left\">Left</option>\n                    <option value=\"center\">Center</option>\n                    <option value=\"right\">Right</option>\n                  </select>\n                </Field>\n              </div>\n              <Field label=\"Font family\">\n                <select className=\"neb-select\" name=\"font_family\" value={props.fontFamily ?? 'inherit'} onChange={(e) => commit({ fontFamily: e.target.value })}>\n                  <option value=\"inherit\">Inherit</option>\n                  <option value=\"Arial, Helvetica, sans-serif\">Arial</option>\n                  <option value=\"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif\">Segoe UI</option>\n                  <option value=\"Roboto, Helvetica, Arial, sans-serif\">Roboto</option>\n                  <option value=\"Georgia, 'Times New Roman', Times, serif\">Georgia</option>\n                  <option value=\"'Times New Roman', Times, serif\">Times</option>\n                  <option value=\"'Courier New', Courier, monospace\">Courier New</option>\n                </select>\n              </Field>\n              <Field label={`Font size: ${parsePx(props.fontSize ?? '14px', 14)}px`}>\n                <input type=\"range\" name=\"font_size\" min={10} max={48} className=\"neb-slider\" value={parsePx(props.fontSize ?? '14px', 14)}\n                  onChange={(e) => set({ fontSize: toPx(Number(e.target.value)) })}\n                  onPointerUp={(e) => commit({ fontSize: toPx(Number((e.target as HTMLInputElement).value)) })}\n                />\n              </Field>\n              <Field label={`Line height: ${(Number(props.lineHeight ?? 1.5)).toFixed(2)}` }>\n                <input type=\"range\" name=\"line_height\" min={1} max={2} step={0.05} className=\"neb-slider\" value={Number(props.lineHeight ?? 1.5)}\n                  onChange={(e) => set({ lineHeight: Number(e.target.value) })}\n                  onPointerUp={(e) => commit({ lineHeight: Number((e.target as HTMLInputElement).value) })}\n                />\n              </Field>\n            </>\n          )}\n\n          {isButton && (\n            <>\n              <Field label=\"Label\">\n                <input className=\"neb-input\" name=\"btn_label\" value={props.label ?? 'Click me'} onChange={(e) => set({ label: e.target.value })} onBlur={(e)=>commit({ label: e.target.value })} />\n              </Field>\n              <Field label=\"Href\">\n                <input className=\"neb-input\" name=\"btn_href\" value={props.href ?? '#'} onChange={(e) => set({ href: e.target.value })} onBlur={(e)=>commit({ href: e.target.value })} />\n              </Field>\n              <div className=\"row\">\n                <Field label=\"Background\">\n                  <input type=\"color\" className=\"neb-color\" name=\"btn_bg\" value={props.backgroundColor ?? '#0f172a'} onChange={(e) => set({ backgroundColor: e.target.value })} onBlur={(e)=>commit({ backgroundColor: e.target.value })} />\n                </Field>\n                <Field label=\"Text color\">\n                  <input type=\"color\" className=\"neb-color\" name=\"btn_color\" value={props.color ?? '#ffffff'} onChange={(e) => set({ color: e.target.value })} onBlur={(e)=>commit({ color: e.target.value })} />\n                </Field>\n              </div>\n              <Field label={`Padding vertical: ${parsePx((props.padding ?? '').split(' ')[0] ?? '12px', 12)}px`}>\n                <input type=\"range\" name=\"btn_pad_v\" min={0} max={32} className=\"neb-slider\" value={parsePx((props.padding ?? '').split(' ')[0] ?? '12px', 12)}\n                  onChange={(e) => {\n                    const v = Number(e.target.value);\n                    const parts = String(props.padding ?? '12px 16px').split(/\\s+/);\n                    const h = parsePx(parts[1] ?? parts[0], 16);\n                    set({ padding: `${toPx(v)} ${toPx(h)}` });\n                  }}\n                  onPointerUp={(e)=>{\n                    const v = Number((e.target as HTMLInputElement).value);\n                    const parts = String(props.padding ?? '12px 16px').split(/\\s+/);\n                    const h = parsePx(parts[1] ?? parts[0], 16);\n                    commit({ padding: `${toPx(v)} ${toPx(h)}` });\n                  }} />\n              </Field>\n              <Field label={`Padding horizontal: ${parsePx((props.padding ?? '').split(' ')[1] ?? '16px', 16)}px`}>\n                <input type=\"range\" name=\"btn_pad_h\" min={0} max={64} className=\"neb-slider\" value={parsePx((props.padding ?? '').split(' ')[1] ?? '16px', 16)}\n                  onChange={(e) => {\n                    const h = Number(e.target.value);\n                    const parts = String(props.padding ?? '12px 16px').split(/\\s+/);\n                    const v = parsePx(parts[0], 12);\n                    set({ padding: `${toPx(v)} ${toPx(h)}` });\n                  }}\n                  onPointerUp={(e)=>{\n                    const h = Number((e.target as HTMLInputElement).value);\n                    const parts = String(props.padding ?? '12px 16px').split(/\\s+/);\n                    const v = parsePx(parts[0], 12);\n                    commit({ padding: `${toPx(v)} ${toPx(h)}` });\n                  }} />\n              </Field>\n              <Field label={`Radius: ${parsePx(props.borderRadius ?? '4px', 4)}px`}>\n                <input type=\"range\" name=\"btn_radius\" min={0} max={32} className=\"neb-slider\" value={parsePx(props.borderRadius ?? '4px', 4)} onChange={(e) => set({ borderRadius: toPx(Number(e.target.value)) })} onPointerUp={(e)=>commit({ borderRadius: toPx(Number((e.target as HTMLInputElement).value)) })} />\n              </Field>\n            </>\n          )}\n\n          {isImage && (\n            <>\n              <Field label=\"Src\">\n                <input className=\"neb-input\" name=\"img_src\" value={props.src ?? ''} onChange={(e) => set({ src: e.target.value })} onBlur={(e)=>commit({ src: e.target.value })} />\n              </Field>\n              <div className=\"row\">\n                <Field label=\"Alt\">\n                  <input className=\"neb-input\" name=\"img_alt\" value={props.alt ?? ''} onChange={(e) => set({ alt: e.target.value })} onBlur={(e)=>commit({ alt: e.target.value })} />\n                </Field>\n                <Field label=\"Width\">\n                  <input type=\"range\" name=\"img_width\" min={50} max={800} className=\"neb-slider\" value={parsePx(props.width ?? '600', 600)} onChange={(e) => set({ width: String(Number(e.target.value)) })} onPointerUp={(e)=>commit({ width: String(Number((e.target as HTMLInputElement).value)) })} />\n                </Field>\n              </div>\n            </>\n          )}\n\n          {isSection && (\n            <>\n              <Field label=\"Background\">\n                <input type=\"color\" className=\"neb-color\" name=\"section_bg\" value={props.backgroundColor ?? '#ffffff'} onChange={(e) => set({ backgroundColor: e.target.value })} onBlur={(e)=>commit({ backgroundColor: e.target.value })} />\n              </Field>\n              {(() => {\n                const [pt, pr, pb, pl] = parsePadding(props.padding ?? '24px 24px');\n                return (\n                  <>\n                    <Field label={`Padding top: ${pt}px`}><input type=\"range\" name=\"section_pad_t\" min={0} max={64} className=\"neb-slider\" value={pt} onChange={(e) => set({ padding: `${toPx(Number(e.target.value))} ${toPx(pr)} ${toPx(pb)} ${toPx(pl)}` })} onPointerUp={(e)=>commit({ padding: `${toPx(Number((e.target as HTMLInputElement).value))} ${toPx(pr)} ${toPx(pb)} ${toPx(pl)}` })} /></Field>\n                    <Field label={`Padding right: ${pr}px`}><input type=\"range\" name=\"section_pad_r\" min={0} max={64} className=\"neb-slider\" value={pr} onChange={(e) => set({ padding: `${toPx(pt)} ${toPx(Number(e.target.value))} ${toPx(pb)} ${toPx(pl)}` })} onPointerUp={(e)=>commit({ padding: `${toPx(pt)} ${toPx(Number((e.target as HTMLInputElement).value))} ${toPx(pb)} ${toPx(pl)}` })} /></Field>\n                    <Field label={`Padding bottom: ${pb}px`}><input type=\"range\" name=\"section_pad_b\" min={0} max={64} className=\"neb-slider\" value={pb} onChange={(e) => set({ padding: `${toPx(pt)} ${toPx(pr)} ${toPx(Number(e.target.value))} ${toPx(pl)}` })} onPointerUp={(e)=>commit({ padding: `${toPx(pt)} ${toPx(pr)} ${toPx(Number((e.target as HTMLInputElement).value))} ${toPx(pl)}` })} /></Field>\n                    <Field label={`Padding left: ${pl}px`}><input type=\"range\" name=\"section_pad_l\" min={0} max={64} className=\"neb-slider\" value={pl} onChange={(e) => set({ padding: `${toPx(pt)} ${toPx(pr)} ${toPx(pb)} ${toPx(Number(e.target.value))}` })} onPointerUp={(e)=>commit({ padding: `${toPx(pt)} ${toPx(pr)} ${toPx(pb)} ${toPx(Number((e.target as HTMLInputElement).value))}` })} /></Field>\n                  </>\n                );\n              })()}\n              <Field label={`Border radius: ${parsePx(props.borderRadius ?? '0px', 0)}px`}>\n                <input type=\"range\" name=\"section_radius\" min={0} max={32} className=\"neb-slider\" value={parsePx(props.borderRadius ?? '0px', 0)} onChange={(e) => set({ borderRadius: toPx(Number(e.target.value)) })} onPointerUp={(e)=>commit({ borderRadius: toPx(Number((e.target as HTMLInputElement).value)) })} />\n              </Field>\n              <Field label=\"Border color\">\n                <input type=\"color\" className=\"neb-color\" name=\"section_border\" value={props.borderColor ?? '#000000'} onChange={(e) => set({ borderColor: e.target.value })} onBlur={(e)=>commit({ borderColor: e.target.value })} />\n              </Field>\n            </>\n          )}\n\n          {isColumn && (\n            <>\n              <Field label=\"Width\">\n                <input type=\"range\" name=\"col_width\" min={10} max={100} className=\"neb-slider\" value={parsePx(props.width ?? '100%', 100)} onChange={(e) => set({ width: `${Number(e.target.value)}%` })} onPointerUp={(e)=>commit({ width: `${Number((e.target as HTMLInputElement).value)}%` })} />\n              </Field>\n              <Field label=\"Padding\">\n                <input type=\"range\" name=\"col_padding\" min={0} max={48} className=\"neb-slider\" value={parsePx(props.padding ?? '0px', 0)} onChange={(e) => set({ padding: toPx(Number(e.target.value)) })} onPointerUp={(e)=>commit({ padding: toPx(Number((e.target as HTMLInputElement).value)) })} />\n              </Field>\n            </>\n          )}\n\n          {isSpacer && (\n            <Field label={`Height: ${parsePx(props.height ?? '16px', 16)}px`}>\n              <input type=\"range\" name=\"spacer_height\" min={4} max={64} className=\"neb-slider\" value={parsePx(props.height ?? '16px', 16)} onChange={(e) => set({ height: toPx(Number(e.target.value)) })} onPointerUp={(e)=>commit({ height: toPx(Number((e.target as HTMLInputElement).value)) })} />\n            </Field>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { AssistantAction, EmailNode } from '../types';\n\nexport interface ChatAdapter {\n  send: (ctx: { root: EmailNode; message: string }) => Promise<\n    | AssistantAction[]\n    | { actions: AssistantAction[]; summary?: string; reply?: string }\n  >;\n}\n\ntype Props = {\n  root: EmailNode;\n  onActions: (actions: AssistantAction[]) => void;\n  adapter: ChatAdapter;\n};\n\nexport const ChatPanel: React.FC<Props> = ({ root, onActions, adapter }) => {\n  const [input, setInput] = useState('');\n  const [busy, setBusy] = useState(false);\n  const [messages, setMessages] = useState<Array<{ role: 'user' | 'assistant'; content: string }>>([]);\n  const listRef = useRef<HTMLDivElement | null>(null);\n\n  useEffect(() => {\n    const el = listRef.current;\n    if (el) {\n      el.scrollTop = el.scrollHeight;\n    }\n  }, [messages, busy]);\n\n  function summarize(actions: AssistantAction[]): string {\n    if (!actions.length) return 'No changes.';\n    const types = actions.map(a => a.type);\n    if (types.includes('replace')) return 'Replaced the entire email with a new template.';\n    const counts = types.reduce<Record<string, number>>((m, t) => (m[t] = (m[t] ?? 0) + 1, m), {});\n    const parts = Object.entries(counts).map(([t, n]) => `${n} ${t}`);\n    return `Applied: ${parts.join(', ')}.`;\n  }\n\n  async function onSubmit(e: React.FormEvent) {\n    e.preventDefault();\n    const text = input.trim();\n    if (!text) return;\n    setMessages((m) => [...m, { role: 'user', content: text }]);\n    setBusy(true);\n    try {\n      const res = await adapter.send({ root, message: text });\n      const { actions, summary, reply } = Array.isArray(res) ? { actions: res, summary: undefined, reply: undefined } : res;\n      onActions(actions);\n      const msgs: Array<{ role: 'assistant'; content: string }> = [];\n      if (reply && reply.trim()) msgs.push({ role: 'assistant', content: reply });\n      const fallback = actions.length > 0\n        ? summarize(actions)\n        : `No changes.`;\n      const summaryToShow = summary || (actions.length ? fallback : undefined);\n      if (summaryToShow) msgs.push({ role: 'assistant', content: summaryToShow });\n      if (msgs.length === 0) msgs.push({ role: 'assistant', content: 'No changes.' });\n      setMessages((m) => [...m, ...msgs]);\n      setInput('');\n    } catch (err: any) {\n      setMessages((m) => [...m, { role: 'assistant', content: `Error: ${err?.message ?? String(err)}` }]);\n    } finally {\n      setBusy(false);\n    }\n  }\n\n  return (\n    <div style={{ display: 'grid', gridTemplateRows: '1fr auto', gap: 8, height: '100%' }}>\n      <div style={{ overflow: 'auto' }} className=\"neb-chat-list\" ref={listRef}>\n        {messages.length === 0 && (\n          <div style={{ color: 'var(--subtle)', fontSize: 13 }}>\n            Tip: Try “Create a promo email for a summer sale with a big hero image, 2 columns of features, and a CTA button. Branded blue.”\n          </div>\n        )}\n        {messages.map((m, i) => (\n          <div key={i} className={`neb-chat-msg ${m.role}`}>{m.content}</div>\n        ))}\n      </div>\n      <form onSubmit={onSubmit} style={{ display: 'flex', gap: 8 }}>\n        <input\n          placeholder=\"Ask AI to create or edit your email…\"\n          value={input}\n          onChange={(e) => setInput(e.target.value)}\n          disabled={busy}\n          className=\"neb-input\"\n          style={{ flex: 1 }}\n        />\n        <button disabled={busy} className=\"neb-btn primary\">\n          {busy ? 'Thinking…' : 'Send'}\n        </button>\n      </form>\n    </div>\n  );\n};\n","import React from 'react';\n\ntype Props = {\n  mode: 'edit' | 'preview';\n  onSetMode: (m: 'edit' | 'preview') => void;\n  onCopyHtml: () => void;\n  onExportHtml: () => void;\n  onPreviewWidth: (w: number) => void;\n  onUndo: () => void;\n  onRedo: () => void;\n  activeWidth?: number;\n  full?: boolean;\n  onToggleFull?: () => void;\n};\n\nconst PencilIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25z\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n    <path d=\"M14.06 6.19l3.75 3.75 1.65-1.65a1.5 1.5 0 000-2.12l-1.53-1.53a1.5 1.5 0 00-2.12 0l-1.65 1.65z\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n  </svg>\n);\n\nconst EyeIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6S2 12 2 12z\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n    <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n  </svg>\n);\n\nconst PhoneIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <rect x=\"8\" y=\"3\" width=\"8\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n    <circle cx=\"12\" cy=\"18\" r=\"1\" fill=\"currentColor\" />\n  </svg>\n);\n\nconst TabletIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n    <circle cx=\"12\" cy=\"16.5\" r=\"0.8\" fill=\"currentColor\" />\n  </svg>\n);\n\nconst DesktopIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <rect x=\"3\" y=\"4\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\"/>\n    <path d=\"M9 20h6\" stroke=\"currentColor\" strokeWidth=\"1.5\"/>\n    <path d=\"M10 16v4M14 16v4\" stroke=\"currentColor\" strokeWidth=\"1.5\"/>\n  </svg>\n);\n\nconst ExpandIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n    <path d=\"M4 10V4h6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n    <path d=\"M20 14v6h-6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n    <path d=\"M4 4l6 6M20 20l-6-6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n  </svg>\n);\nconst CollapseIcon = ({ size = 16 }: { size?: number }) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n    <path d=\"M10 4H4v6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n    <path d=\"M14 20h6v-6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n    <path d=\"M4 10l6-6M20 14l-6 6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n  </svg>\n);\n\nexport const Toolbar: React.FC<Props> = ({ mode, onSetMode, onCopyHtml, onExportHtml, onPreviewWidth, onUndo, onRedo, activeWidth, full, onToggleFull }) => {\n  const isActiveWidth = (w: number) => activeWidth === w;\n  return (\n    <div className=\"neb neb-toolbar\">\n      <div className=\"group\">\n        <button className=\"neb-btn ghost\" title=\"Undo\" onClick={onUndo}>↶</button>\n        <button className=\"neb-btn ghost\" title=\"Redo\" onClick={onRedo}>↷</button>\n      </div>\n      <div className=\"group\">\n        <span style={{ color: 'var(--subtle)', fontSize: 12 }}>Mode</span>\n        <div className=\"neb-seg\" role=\"group\" aria-label=\"Mode\">\n          <button\n            type=\"button\"\n            className={`seg-btn ${mode === 'edit' ? 'active' : ''}`}\n            onClick={() => onSetMode('edit')}\n            aria-pressed={mode === 'edit'}\n            title=\"Edit\"\n          >\n            <PencilIcon />\n          </button>\n          <button\n            type=\"button\"\n            className={`seg-btn ${mode === 'preview' ? 'active' : ''}`}\n            onClick={() => onSetMode('preview')}\n            aria-pressed={mode === 'preview'}\n            title=\"Preview\"\n          >\n            <EyeIcon />\n          </button>\n        </div>\n      </div>\n      <div className=\"group\">\n        <span style={{ color: 'var(--subtle)', fontSize: 12 }}>Preview</span>\n        <div className=\"neb-seg\" role=\"group\" aria-label=\"Preview width\">\n          <button\n            type=\"button\"\n            className={`seg-btn ${isActiveWidth?.(360) ? 'active' : ''}`}\n            onClick={() => onPreviewWidth(360)}\n            aria-pressed={isActiveWidth?.(360)}\n            title=\"Mobile\"\n          >\n            <PhoneIcon />\n          </button>\n          <button\n            type=\"button\"\n            className={`seg-btn ${isActiveWidth?.(600) ? 'active' : ''}`}\n            onClick={() => onPreviewWidth(600)}\n            aria-pressed={isActiveWidth?.(600)}\n            title=\"Default\"\n          >\n            <TabletIcon />\n          </button>\n          <button\n            type=\"button\"\n            className={`seg-btn ${isActiveWidth?.(800) ? 'active' : ''}`}\n            onClick={() => onPreviewWidth(800)}\n            aria-pressed={isActiveWidth?.(800)}\n            title=\"Desktop\"\n          >\n            <DesktopIcon />\n          </button>\n        </div>\n        <button className=\"neb-btn ghost\" title={full ? 'Exit full screen' : 'Full screen'} onClick={onToggleFull} aria-pressed={!!full}>\n          {full ? <CollapseIcon /> : <ExpandIcon />}\n        </button>\n      </div>\n      <div className=\"group\">\n        <button className=\"neb-btn\" onClick={onCopyHtml}>Copy HTML</button>\n        <button className=\"neb-btn primary\" onClick={onExportHtml}>Export</button>\n      </div>\n    </div>\n  );\n};\n","import React, { useMemo, useState } from 'react';\nimport { Canvas } from './components/Canvas';\nimport { Inspector } from './components/Inspector';\nimport { ChatPanel, ChatAdapter } from './chat/ChatPanel';\n// Sidebar removed; left panel will host AI chat\nimport { Toolbar } from './components/Toolbar';\nimport { EmailNode } from './types';\nimport { createButton, createColumn, createImage, createSection, createSpacer, createText, findNode, insertNode, removeNode, updateNode, moveSibling } from './core';\nimport { renderToHtml } from './renderers/html';\nimport { parseHtmlToTree } from './parsers/htmlToTree';\nimport \"./styles.css\"\n\nexport type EditorProps = {\n  /** Provide initial tree. If omitted, a default section/column is created. */\n  initial?: EmailNode;\n  /** Provide raw HTML to initialize the editor. Overrides `initial` when present. */\n  initialHtml?: string;\n  /** Provide a JSON tree to initialize the editor (same shape as EmailNode). Overrides `initial` when present. */\n  initialJson?: EmailNode;\n  /** Controlled value: when provided, the editor renders this tree and becomes controlled. */\n  value?: EmailNode;\n  chatAdapter?: ChatAdapter;\n  /** Fires on any change with the JSON tree. */\n  onChange?: (root: EmailNode) => void;\n  /** Fires on any change with fresh rendered HTML. */\n  onHtmlChange?: (html: string) => void;\n  /** Fires on any change with the JSON tree (alias for onChange, useful when passing both). */\n  onJsonChange?: (root: EmailNode) => void;\n};\n\nexport const Editor: React.FC<EditorProps> = ({ initial, initialHtml, initialJson, value, chatAdapter, onChange, onHtmlChange, onJsonChange }) => {\n  const [root, setRoot] = useState<EmailNode>(() => {\n    if (value) return value;\n    if (initialHtml) return parseHtmlToTree(initialHtml);\n    if (initialJson) return initialJson;\n    return initial ?? createSection({}, [createColumn({}, [createText({ content: 'Hello' }), createSpacer(), createButton()])]);\n  })\n  const [selectedId, setSelectedId] = useState<string | undefined>(root.id);\n  const [mode, setMode] = useState<'edit' | 'preview'>('edit');\n  const [undoStack, setUndoStack] = useState<EmailNode[]>([]);\n  const [redoStack, setRedoStack] = useState<EmailNode[]>([]);\n\n  const tree = value ?? root;\n  const selected = useMemo(() => (selectedId ? findNode(tree, selectedId) : undefined), [tree, selectedId]);\n\n  function emit(next: EmailNode, pushHistory: boolean = true) {\n    if (pushHistory) {\n      setUndoStack((s) => [...s, root]);\n      setRedoStack([]);\n    }\n    if (!value) setRoot(next);\n    const html = renderToHtml(next);\n    onChange?.(next);\n    onJsonChange?.(next);\n    onHtmlChange?.(html);\n  }\n\n  function undo() {\n    setUndoStack((s) => {\n      if (s.length === 0) return s;\n      const prev = s[s.length - 1];\n      setRedoStack((r) => [...r, root]);\n      setRoot(prev);\n      onChange?.(prev);\n      return s.slice(0, -1);\n    });\n  }\n\n  function redo() {\n    setRedoStack((r) => {\n      if (r.length === 0) return r;\n      const next = r[r.length - 1];\n      setUndoStack((s) => [...s, root]);\n      setRoot(next);\n      onChange?.(next);\n      return r.slice(0, -1);\n    });\n  }\n\n  function add(node: EmailNode) {\n    const parentId = selectedId ?? tree.id;\n    emit(insertNode(tree, parentId, node));\n  }\n\n  function insertAfter(targetId: string, node: EmailNode) {\n    // Find parent and index of target, then insert at index+1\n    // Reuse findNode to walk for parent since we have utilities in core for reordering\n    function walk(n: EmailNode, p?: EmailNode): { parent?: EmailNode; index?: number } | undefined {\n      if (!n.children) return undefined;\n      const idx = n.children.findIndex((c) => c.id === targetId);\n      if (idx >= 0) return { parent: n, index: idx };\n      for (const c of n.children) {\n        const r = walk(c, n);\n        if (r) return r;\n      }\n      return undefined;\n    }\n    const info = walk(tree);\n    if (info?.parent && info.index !== undefined) {\n      emit(insertNode(tree, info.parent.id, node, info.index + 1));\n    } else {\n      // If not found as a sibling, append to root\n      emit(insertNode(tree, tree.id, node));\n    }\n  }\n\n  function applyActions(actions: Array<{ type: string; [k: string]: any }>) {\n  let current = tree;\n    for (const a of actions) {\n      switch (a.type) {\n        case 'insert':\n          current = insertNode(current, a.parentId, a.node, a.index);\n          break;\n        case 'update':\n          current = updateNode(current, a.id, a.props);\n          break;\n        case 'remove':\n          current = removeNode(current, a.id);\n          break;\n        case 'select':\n          setSelectedId(a.id);\n          break;\n        case 'replace':\n          current = a.root as EmailNode;\n          break;\n      }\n    }\n    emit(current);\n  }\n\n  const factories = {\n    text: () => createText(),\n    image: () => createImage(),\n    button: () => createButton(),\n    spacer: () => createSpacer(),\n    column: () => createColumn(),\n    section: () => createSection(),\n  } as const;\n\n  const adapter: ChatAdapter = chatAdapter ?? {\n    async send({ message }) {\n      // naive local adapter: parse a very simple command\n      if (/add text/i.test(message)) {\n        return [{ type: 'insert', parentId: selectedId ?? root.id, node: createText({ content: 'New text' }) }];\n      }\n      if (/add button/i.test(message)) {\n        return [{ type: 'insert', parentId: selectedId ?? root.id, node: createButton({ label: 'Buy now' }) }];\n      }\n      if (/remove/i.test(message) && selectedId) {\n        return [{ type: 'remove', id: selectedId }];\n      }\n      if (/title:\\s*(.+)/i.test(message)) {\n        const m = message.match(/title:\\s*(.+)/i)!;\n        return [{ type: 'update', id: selectedId ?? root.id, props: { content: m[1] } }];\n      }\n      return [];\n    },\n  };\n\n  const [stageWidth, setStageWidth] = useState(600);\n  const [isFull, setIsFull] = useState(false);\n  const html = useMemo(() => renderToHtml(value ?? root), [value, root]);\n\n  // Templates removed; left panel hosts Chat instead\n\n  return (\n    <div className={`neb neb-reset neb-app ${isFull ? 'neb-full' : ''}`} style={{ ['--stage-width' as any]: `${stageWidth}px` }}>\n      <Toolbar\n        mode={mode}\n        onSetMode={setMode}\n        onCopyHtml={() => navigator.clipboard?.writeText(html)}\n        onExportHtml={() => {\n          const blob = new Blob([html], { type: 'text/html;charset=utf-8' });\n          const url = URL.createObjectURL(blob);\n          const a = document.createElement('a');\n          a.href = url;\n          a.download = 'email.html';\n          document.body.appendChild(a);\n          a.click();\n          a.remove();\n          URL.revokeObjectURL(url);\n        }}\n        onPreviewWidth={(w) => setStageWidth(w)}\n        activeWidth={stageWidth}\n        onUndo={undo}\n        onRedo={redo}\n        full={isFull}\n        onToggleFull={() => setIsFull((v) => !v)}\n      />\n      <div className=\"neb-shell\" style={{ gridTemplateColumns: isFull ? '0 1fr 0' : '320px 1fr 340px' }}>\n        <div className=\"neb-panel\">\n          <div className=\"header\" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n            <div className=\"neb-badges\"><span className=\"neb-badge\">AI</span></div>\n            <div className=\"neb-badges\"><span className=\"neb-badge\">Chat</span></div>\n          </div>\n          <div className=\"body\">\n            {chatAdapter !== null && (\n              <ChatPanel root={root} onActions={applyActions} adapter={adapter} />\n            )}\n          </div>\n        </div>\n        <div className=\"neb-panel neb-center\">\n          <div className=\"header\" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n            <div className=\"neb-badges\">\n              <span className=\"neb-badge\">Width {stageWidth}px</span>\n              <span className=\"neb-badge\">{mode === 'edit' ? 'Edit' : 'Preview'}</span>\n            </div>\n            <div className=\"neb-badges\">\n              <span className=\"neb-badge\">Blocks</span>\n            </div>\n          </div>\n          <div className=\"body\">\n            <Canvas\n              root={value ?? root}\n              onSelect={setSelectedId}\n              selectedId={selectedId}\n              onMoveUp={(id) => emit(moveSibling(value ?? root, id, -1))}\n              onMoveDown={(id) => emit(moveSibling(value ?? root, id, +1))}\n              onRemove={(id) => emit(removeNode(value ?? root, id))}\n              mode={mode}\n              factories={factories as any}\n              onInsertAt={(parentId, node, index) => emit(insertNode(value ?? root, parentId, node, index))}\n              onInsertAfter={(id, n) => insertAfter(id, n)}\n            />\n          </div>\n        </div>\n\n        <div className=\"neb-panel neb-inspector\">\n          <div className=\"header\">Inspect</div>\n          <div className=\"body\">\n            <Inspector node={selected} onChange={(patch) => selected && emit(updateNode(value ?? root, selected.id, patch))} />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Editor;\n","import { EmailNode } from '../types';\nimport { uid } from '../core';\nimport { ChatAdapter } from './ChatPanel';\n\nexport type OpenAIConfig = {\n  apiKey: string;\n  model: string;\n  baseURL?: string;\n};\n\ntype Message = { role: 'system' | 'user' | 'assistant'; content: string };\n\nexport function createOpenAIAdapter(cfg: OpenAIConfig, seedSystem?: string): ChatAdapter {\n  const baseURL = cfg.baseURL ?? 'https://api.openai.com/v1';\n  const headers = {\n    'Content-Type': 'application/json',\n    'Authorization': `Bearer ${cfg.apiKey}`,\n  } as const;\n\n  const system = seedSystem ?? `You are an email layout assistant. Input: current email JSON tree and a user request. Output: ONLY a JSON object with an \"actions\" array. Do not include any prose.\n\nSchema:\n{\n  \"actions\": [\n    {\"type\":\"insert\",\"parentId\":\"...\",\"index\":0,\"node\":{\"type\":\"text|image|button|spacer|column|section\",\"id?\":\"string\",\"props\":{},\"children?\":[]}},\n    {\"type\":\"update\",\"id\":\"...\",\"props\":{}},\n    {\"type\":\"remove\",\"id\":\"...\"},\n    {\"type\":\"select\",\"id\":\"...\"},\n    {\"type\":\"replace\",\"root\": {\"type\":\"section\",\"id?\":\"string\",\"props\":{},\"children\":[]}}\n  ]\n}\n\nRules:\n- Use only these block types: section, column, text, image, button, spacer.\n- Provide a single section root for replace.\n- ids are optional; they will be auto-generated.\n- When user asks to create a template from scratch, return a single replace with a full tree.\n- No extra keys, no markdown fences.`;\n\n  async function call(messages: Message[]): Promise<string> {\n    const res = await fetch(`${baseURL}/chat/completions`, {\n      method: 'POST',\n      headers,\n      body: JSON.stringify({\n        model: cfg.model,\n        messages,\n        temperature: 0,\n        response_format: { type: 'json_object' },\n      }),\n    });\n    if (!res.ok) {\n      const text = await res.text();\n      throw new Error(`OpenAI error ${res.status}: ${text}`);\n    }\n    const json = await res.json();\n    const content: string = json.choices?.[0]?.message?.content ?? '{\"actions\":[]}';\n    return content;\n  }\n\n  return {\n    async send({ root, message }) {\n      const prompt = `Current email JSON: ${JSON.stringify(root)}\\nUser request: ${message}\\nReturn ONLY a JSON object with an actions array.`;\n      const reply = await call([\n        { role: 'system', content: system },\n        { role: 'user', content: prompt },\n      ]);\n      // Robust parse: accept object { actions: [...] } or extract JSON from fences\n      const tryParse = (text: string): any => {\n        let t = text.trim();\n        // strip code fences if present\n        const fence = t.match(/```[a-zA-Z]*\\n([\\s\\S]*?)```/);\n        if (fence) t = fence[1].trim();\n        // if it looks like an array, wrap it\n        if (t.startsWith('[')) t = `{\"actions\": ${t}}`;\n        try { return JSON.parse(t); } catch {}\n        // last resort: substring between first { and last }\n        const first = t.indexOf('{');\n        const last = t.lastIndexOf('}');\n        if (first >= 0 && last > first) {\n          try { return JSON.parse(t.slice(first, last + 1)); } catch {}\n        }\n        return null;\n      };\n\n  let parsed = tryParse(reply);\n  let actions = Array.isArray(parsed?.actions) ? parsed.actions : Array.isArray(parsed) ? parsed : [];\n\n      // Sanitize: ensure nodes have ids recursively\n      const ensureIds = (node: any): EmailNode => ({\n        id: node.id ?? uid(),\n        type: node.type,\n        props: node.props ?? {},\n        children: node.children?.map(ensureIds),\n      });\n\n      let clean = (actions as any[]).flatMap((a) => {\n        if (!a || typeof a !== 'object' || typeof a.type !== 'string') return [];\n        if (a.type === 'insert' && a.node) return [{ ...a, node: ensureIds(a.node) }];\n        if (a.type === 'replace' && a.root) return [{ ...a, root: ensureIds(a.root) }];\n        if (a.type === 'update' && a.id) return [a];\n        if (a.type === 'remove' && a.id) return [a];\n        if (a.type === 'select') return [a];\n        return [];\n      });\n\n      // Fallback: if user intent indicates creation and model returned nothing, ask once more with stricter instruction\n  if (clean.length === 0 && /\\b(create|generate|make|build)\\b/i.test(message)) {\n        const stricter = `User requested to CREATE a new marketing email template. Return exactly one replace action with a compelling layout: hero headline, supporting body text, primary CTA, tasteful spacing, and brand-consistent colors. JSON only.\n{\"actions\":[{\"type\":\"replace\",\"root\":{\"type\":\"section\",\"props\":{\"backgroundColor\":\"#ffffff\",\"padding\":\"24px 24px\"},\"children\":[{\"type\":\"column\",\"props\":{\"width\":\"100%\",\"padding\":\"0px\"},\"children\":[{\"type\":\"text\",\"props\":{\"content\":\"Welcome to Our Marketing Email!\",\"align\":\"center\",\"color\":\"#0f172a\",\"fontSize\":\"22px\",\"lineHeight\":\"1.5\"}},{\"type\":\"spacer\",\"props\":{\"height\":\"12px\"}},{\"type\":\"text\",\"props\":{\"content\":\"Discover our latest products and offers.\",\"align\":\"center\",\"color\":\"#475569\",\"fontSize\":\"14px\",\"lineHeight\":\"1.6\"}},{\"type\":\"spacer\",\"props\":{\"height\":\"20px\"}},{\"type\":\"button\",\"props\":{\"label\":\"Shop Now\",\"href\":\"#\",\"backgroundColor\":\"#0f172a\",\"color\":\"#ffffff\",\"padding\":\"12px 18px\",\"borderRadius\":\"6px\"}}]}]}}]}`;\n        const second = await call([\n          { role: 'system', content: system },\n          { role: 'user', content: stricter },\n        ]);\n        parsed = tryParse(second);\n        actions = Array.isArray(parsed?.actions) ? parsed.actions : Array.isArray(parsed) ? parsed : [];\n        clean = (actions as any[]).flatMap((a) => {\n          if (!a || typeof a !== 'object' || typeof a.type !== 'string') return [];\n          if (a.type === 'replace' && a.root) return [{ ...a, root: ensureIds(a.root) }];\n          return [];\n        });\n      }\n\n      const summary = (() => {\n        if (clean.find(a => a.type === 'replace')) return 'Created a complete marketing email template.';\n        const counts = clean.reduce<Record<string, number>>((m: any, a: any) => (m[a.type] = (m[a.type] ?? 0) + 1, m), {});\n        const parts = Object.entries(counts).map(([t, n]) => `${n} ${t}`);\n        return parts.length ? `Applied: ${parts.join(', ')}.` : 'No changes.';\n      })();\n\n      // If we still have no actions and the prompt looks conversational, return a natural reply\n      let replyText: string | undefined = undefined;\n      if (clean.length === 0 && /\\b(hi|hello|hey|who are you|what can you do|help)\\b/i.test(message)) {\n        const conv = await fetch(`${baseURL}/chat/completions`, {\n          method: 'POST', headers, body: JSON.stringify({\n            model: cfg.model,\n            messages: [\n              { role: 'system', content: 'You are a helpful email design assistant. Answer briefly and politely.' },\n              { role: 'user', content: message }\n            ],\n            temperature: 0.5\n          })\n        });\n        if (conv.ok) {\n          const j = await conv.json();\n          replyText = j.choices?.[0]?.message?.content;\n        }\n      }\n\n      return { actions: clean as Array<\n        | { type: 'insert'; parentId: string; index?: number; node: EmailNode }\n        | { type: 'update'; id: string; props: Record<string, unknown> }\n        | { type: 'remove'; id: string }\n        | { type: 'select'; id?: string }\n        | { type: 'replace'; root: EmailNode }\n      >, summary, reply: replyText };\n    },\n  };\n}\n","import React from 'react';\nimport { EmailNode } from '../types';\n\ntype Props = {\n  templates: Array<{ id: string; name: string; make: () => EmailNode }>;\n  onApply: (node: EmailNode) => void;\n};\n\nexport const Sidebar: React.FC<Props> = ({ templates, onApply }) => {\n  return (\n    <div className=\"neb neb-panel neb-sidebar\">\n      <div className=\"header\">Templates</div>\n      <div className=\"body\">\n        {templates.map((t) => (\n          <div key={t.id} className=\"template\" onClick={() => onApply(t.make())}>\n            {t.name}\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n};\n"],"names":["uid","Math","random","toString","slice","createSection","props","children","id","type","backgroundColor","padding","align","createColumn","width","createText","content","color","fontSize","lineHeight","createImage","src","alt","createButton","label","href","borderRadius","createSpacer","height","findNode","root","undefined","child","res","updateNode","patch","map","c","insertNode","parentId","node","index","_a","i","length","max","min","splice","removeNode","filtered","filter","moveNode","newParentId","newIndex","extracted","_remove","n","idx","findIndex","nextChildren","without","findParent","parent","moveSibling","delta","info","to","replaced","write","esc","s","String","replace","renderToHtml","inner","renderNode","join","_b","img","parseStyle","style","out","split","forEach","part","k","rest","key","trim","toLowerCase","val","textOf","el","innerHTML","parseSectionTd","td","getAttribute","section","childNodes","nodeType","tag","tagName","innerTd","querySelector","col","blocks","parseBlocks","push","b","container","hasHeightOnly","includes","_c","textContent","istyle","_d","_e","parseHtmlToTree","html","parser","DOMParser","doc","parseFromString","Error","sections","querySelectorAll","e","PlusIcon","size","_jsx","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","ArrowUpIcon","strokeLinejoin","ArrowDownIcon","TrashIcon","Canvas","onSelect","selectedId","onMoveUp","onMoveDown","onRemove","mode","factories","onInsertAt","onInsertAfter","pickerFor","setPickerFor","useState","hoverId","setHoverId","BlockPicker","onPick","items","t","icon","fontWeight","className","onClick","stopPropagation","it","_jsxs","NodeView","isSelected","onNodeClick","rendered","background","textAlign","Number","display","maxWidth","preventDefault","textDecoration","showPicker","showAdd","onMouseEnter","onMouseLeave","title","p","make","newNode","Field","parsePx","v","m","match","toPx","round","parsePadding","parts","Inspector","onChange","initial","form","setForm","useEffect","wrapRef","useRef","lastFocusRef","onFocusCapture","target","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","current","name","selStart","selectionStart","selEnd","selectionEnd","onInputCapture","useLayoutEffect","active","document","activeElement","contains","lf","CSS","escape","focus","preventScroll","start","value","end","setSelectionRange","setOnly","f","commit","isText","isButton","isImage","isSection","isColumn","isSpacer","set","ref","gap","toUpperCase","_Fragment","rows","onBlur","fontFamily","_f","_g","onPointerUp","_h","toFixed","step","_j","_k","_l","_m","_o","_q","_p","_s","_r","h","_u","_t","_w","_v","_x","_y","_z","_0","_1","_2","pt","pr","pb","pl","_3","_4","_5","borderColor","_6","_7","_8","_9","ChatPanel","onActions","adapter","input","setInput","busy","setBusy","messages","setMessages","listRef","scrollTop","scrollHeight","summarize","actions","types","a","counts","reduce","Object","entries","onSubmit","text","role","send","message","summary","reply","Array","isArray","msgs","fallback","summaryToShow","err","gridTemplateRows","overflow","placeholder","disabled","flex","PencilIcon","EyeIcon","cx","cy","r","PhoneIcon","x","y","rx","TabletIcon","DesktopIcon","ExpandIcon","CollapseIcon","Toolbar","onSetMode","onCopyHtml","onExportHtml","onPreviewWidth","onUndo","onRedo","activeWidth","full","onToggleFull","isActiveWidth","w","Editor","initialHtml","initialJson","chatAdapter","onHtmlChange","onJsonChange","setRoot","setSelectedId","setMode","undoStack","setUndoStack","redoStack","setRedoStack","tree","selected","useMemo","emit","next","pushHistory","undo","prev","redo","insertAfter","targetId","walk","applyActions","image","button","spacer","column","test","stageWidth","setStageWidth","isFull","setIsFull","navigator","clipboard","writeText","blob","Blob","url","URL","createObjectURL","createElement","download","body","appendChild","click","remove","revokeObjectURL","gridTemplateColumns","justifyContent","alignItems","createOpenAIAdapter","cfg","seedSystem","baseURL","headers","apiKey","system","call","fetch","method","JSON","stringify","model","temperature","response_format","ok","status","json","choices","prompt","tryParse","fence","startsWith","parse","first","indexOf","last","lastIndexOf","parsed","ensureIds","clean","flatMap","stricter","second","find","replyText","conv","j","Sidebar","templates","onApply"],"mappings":"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"}