@activecollab/components 2.0.398 → 2.0.399

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.
Files changed (61) hide show
  1. package/dist/cjs/presentation/whiteboard/bottomDock.js +194 -0
  2. package/dist/cjs/presentation/whiteboard/bottomDock.js.map +1 -0
  3. package/dist/cjs/presentation/whiteboard/canvasElements.js +877 -0
  4. package/dist/cjs/presentation/whiteboard/canvasElements.js.map +1 -0
  5. package/dist/cjs/presentation/whiteboard/elements.js +816 -0
  6. package/dist/cjs/presentation/whiteboard/elements.js.map +1 -0
  7. package/dist/cjs/presentation/whiteboard/fileElement.js +457 -0
  8. package/dist/cjs/presentation/whiteboard/fileElement.js.map +1 -0
  9. package/dist/cjs/presentation/whiteboard/glyphs.js +67 -0
  10. package/dist/cjs/presentation/whiteboard/glyphs.js.map +1 -0
  11. package/dist/cjs/presentation/whiteboard/inspector.js +884 -0
  12. package/dist/cjs/presentation/whiteboard/inspector.js.map +1 -0
  13. package/dist/cjs/presentation/whiteboard/linkElement.js +357 -0
  14. package/dist/cjs/presentation/whiteboard/linkElement.js.map +1 -0
  15. package/dist/cjs/presentation/whiteboard/outline.js +966 -0
  16. package/dist/cjs/presentation/whiteboard/outline.js.map +1 -0
  17. package/dist/cjs/presentation/whiteboard/peopleMenu.js +516 -0
  18. package/dist/cjs/presentation/whiteboard/peopleMenu.js.map +1 -0
  19. package/dist/cjs/presentation/whiteboard/settingsMenu.js +177 -0
  20. package/dist/cjs/presentation/whiteboard/settingsMenu.js.map +1 -0
  21. package/dist/esm/presentation/whiteboard/bottomDock.d.ts +51 -0
  22. package/dist/esm/presentation/whiteboard/bottomDock.d.ts.map +1 -0
  23. package/dist/esm/presentation/whiteboard/bottomDock.js +162 -0
  24. package/dist/esm/presentation/whiteboard/bottomDock.js.map +1 -0
  25. package/dist/esm/presentation/whiteboard/canvasElements.d.ts +61 -0
  26. package/dist/esm/presentation/whiteboard/canvasElements.d.ts.map +1 -0
  27. package/dist/esm/presentation/whiteboard/canvasElements.js +746 -0
  28. package/dist/esm/presentation/whiteboard/canvasElements.js.map +1 -0
  29. package/dist/esm/presentation/whiteboard/elements.d.ts +180 -0
  30. package/dist/esm/presentation/whiteboard/elements.d.ts.map +1 -0
  31. package/dist/esm/presentation/whiteboard/elements.js +736 -0
  32. package/dist/esm/presentation/whiteboard/elements.js.map +1 -0
  33. package/dist/esm/presentation/whiteboard/fileElement.d.ts +113 -0
  34. package/dist/esm/presentation/whiteboard/fileElement.d.ts.map +1 -0
  35. package/dist/esm/presentation/whiteboard/fileElement.js +430 -0
  36. package/dist/esm/presentation/whiteboard/fileElement.js.map +1 -0
  37. package/dist/esm/presentation/whiteboard/glyphs.d.ts +32 -0
  38. package/dist/esm/presentation/whiteboard/glyphs.d.ts.map +1 -0
  39. package/dist/esm/presentation/whiteboard/glyphs.js +50 -0
  40. package/dist/esm/presentation/whiteboard/glyphs.js.map +1 -0
  41. package/dist/esm/presentation/whiteboard/inspector.d.ts +100 -0
  42. package/dist/esm/presentation/whiteboard/inspector.d.ts.map +1 -0
  43. package/dist/esm/presentation/whiteboard/inspector.js +753 -0
  44. package/dist/esm/presentation/whiteboard/inspector.js.map +1 -0
  45. package/dist/esm/presentation/whiteboard/linkElement.d.ts +97 -0
  46. package/dist/esm/presentation/whiteboard/linkElement.d.ts.map +1 -0
  47. package/dist/esm/presentation/whiteboard/linkElement.js +327 -0
  48. package/dist/esm/presentation/whiteboard/linkElement.js.map +1 -0
  49. package/dist/esm/presentation/whiteboard/outline.d.ts +89 -0
  50. package/dist/esm/presentation/whiteboard/outline.d.ts.map +1 -0
  51. package/dist/esm/presentation/whiteboard/outline.js +870 -0
  52. package/dist/esm/presentation/whiteboard/outline.js.map +1 -0
  53. package/dist/esm/presentation/whiteboard/peopleMenu.d.ts +44 -0
  54. package/dist/esm/presentation/whiteboard/peopleMenu.d.ts.map +1 -0
  55. package/dist/esm/presentation/whiteboard/peopleMenu.js +440 -0
  56. package/dist/esm/presentation/whiteboard/peopleMenu.js.map +1 -0
  57. package/dist/esm/presentation/whiteboard/settingsMenu.d.ts +13 -0
  58. package/dist/esm/presentation/whiteboard/settingsMenu.d.ts.map +1 -0
  59. package/dist/esm/presentation/whiteboard/settingsMenu.js +155 -0
  60. package/dist/esm/presentation/whiteboard/settingsMenu.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_elements","_fileElement","_outline","_Checkbox","_ChooseV","_Dot","_EditableText","_IconButton","_Icons","_Input","_Label","_Select","_SelectTrigger","_Tooltip","_Typography","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","elementTraits","exports","def","kind","geometry","fill","fillTransparent","stroke","text","autoHeight","TYPE_LABEL","rectangle","roundedRectangle","circle","triangle","sameColor","b","toLowerCase","StyledInspectorSidebar","styled","aside","withConfig","displayName","componentId","StyledInspectorResizer","div","StyledInspectorBody","StyledPropGroups","StyledInspectorHeader","StyledInspectorEmpty","StyledPropGroup","StyledPropRow","StyledFieldGrid","StyledControl","StyledCheckboxRow","StyledBody","StyledAutoField","StyledSegmented","NumberField","_ref","label","min","unit","onCommit","createElement","Label","size","weight","InputNumber","className","decimalLength","update","endAdornment","InputAdornment","disablePointerEvents","Caption1","color","undefined","onChange","isNaN","Math","round","AutoField","_ref2","OptionSelect","_ref3","options","triggerLabel","Select","type","disableSearch","forceCloseMenu","selected","target","SelectTrigger","TRANSPARENT_OPTION","id","textColor","colorName","hex","match","COLOR_OPTIONS","find","option","ColorPickerField","_ref4","disabled","includeTransparent","onSelect","isTransparent","CircleSlashIcon","width","height","Dot","RightInspector","_ref5","_sizes$def$id","_positions$def$id","_rotations$def$id","_names$def$id","_shape$align","_BORDER_STYLE_OPTIONS","_BORDER_STYLE_OPTIONS2","selectedId","positions","setPositions","sizes","setSizes","rotations","setRotations","shapes","setShapes","stickyStyle","setStickyStyle","links","setLinks","files","setFiles","createdShapes","locks","setLocks","_useState","useState","OUTLINE_WIDTH","_useState2","setWidth","_useState3","_useState4","resizing","setResizing","_useState5","_useState6","names","setNames","_useState7","_useState8","tab","setTab","startResize","useCallback","event","_event$currentTarget$","_event$currentTarget$2","preventDefault","startX","clientX","startWidth","currentTarget","parentElement","offsetWidth","previousUserSelect","document","body","style","userSelect","cursor","handleMove","moveEvent","OUTLINE_MAX_WIDTH","max","OUTLINE_MIN_WIDTH","handleUp","window","removeEventListener","addEventListener","CANVAS_ELEMENTS","element","linkDef","link","fileDef","file","shell","content","onMouseDown","role","renderBody","_ELEMENT_BODIES$id","html","ELEMENT_BODIES","dangerouslySetInnerHTML","__html","renderLocked","_locks$id","Checkbox","concat","checked","current","_current$id","htmlFor","renderCardGeometry","cardWidth","onWidth","_positions$id","cardPosition","x","y","Body2","_current$id2","_current$id3","renderInspectorBody","icon","headerName","groups","EditableText","variant","onSave","inputProps","maxLength","StyledChooseRow","StyledPanelChooseSlot","ChooseV2","required","_names$linkDef$id","_linkDef$url","InsertLinkIcon","url","Fragment","Input","placeholder","map","_names$fileDef$id","AttachmentIcon","base","extension","formatFileSize","traits","shape","position","rotation","typeLabel","updateShape","partial","currentFill","currentFillOpacity","fillOpacity","setFill","setFillOpacity","currentFontSize","fontSize","currentAlign","align","setFontSize","setAlign","styleFlags","toggleStyle","key","SHAPE_TYPE_ICON","NoteIcon","shapeType","autoWidth","_current$def$id$heigh","_current$def$id","_current$def$id$width","_current$def$id2","OPACITY_OPTIONS","opacity","BORDER_STYLE_OPTIONS","strokeDash","_BORDER_STYLE_OPTIONS3","THICKNESS_OPTIONS","thickness","strokeWidth","RADIUS_OPTIONS","radius","borderRadius","strokeOpacity","STYLE_OPTIONS","Tooltip","title","IconButton","active","onClick","FONT_SIZE_OPTIONS","ALIGN_OPTIONS"],"sources":["../../../../src/presentation/whiteboard/inspector.tsx"],"sourcesContent":["import React, { ReactElement, ReactNode, useCallback, useState } from \"react\";\n\nimport styled from \"styled-components\";\n\nimport {\n BORDER_STYLE_OPTIONS,\n CANVAS_ELEMENTS,\n COLOR_OPTIONS,\n CanvasElementDef,\n ELEMENT_BODIES,\n FONT_SIZE_OPTIONS,\n OPACITY_OPTIONS,\n RADIUS_OPTIONS,\n SHAPE_TYPE_ICON,\n ShapeElementState,\n ShapeType,\n StickyTextStyle,\n THICKNESS_OPTIONS,\n TextAlign,\n ALIGN_OPTIONS,\n STYLE_OPTIONS,\n TextStyleKey,\n} from \"./elements\";\nimport { FileElementDef, formatFileSize } from \"./fileElement\";\nimport { LinkElementDef } from \"./linkElement\";\nimport {\n OUTLINE_MAX_WIDTH,\n OUTLINE_MIN_WIDTH,\n OUTLINE_WIDTH,\n StyledChooseRow,\n StyledPanelChooseSlot,\n} from \"./outline\";\nimport { Checkbox } from \"../../components/Checkbox\";\nimport { ChooseV2 } from \"../../components/ChooseV2\";\nimport { Dot } from \"../../components/Dot\";\nimport { EditableText } from \"../../components/EditableText\";\nimport { IconButton } from \"../../components/IconButton\";\nimport {\n AttachmentIcon,\n CircleSlashIcon,\n InsertLinkIcon,\n NoteIcon,\n} from \"../../components/Icons\";\nimport { Input, InputAdornment, InputNumber } from \"../../components/Input\";\nimport { Label } from \"../../components/Label\";\nimport { Select } from \"../../components/Select\";\nimport { SelectTrigger } from \"../../components/SelectTrigger\";\nimport { Tooltip } from \"../../components/Tooltip\";\nimport { Body2, Caption1 } from \"../../components/Typography\";\n\n/* ------------------------------------------------------------------ */\n/* Right Inspector — selected-element properties panel */\n/* ------------------------------------------------------------------ */\n\n/* Which right-docked panel is open. Only \"inspector\" is built here; \"comments\"\n is reserved for the next iteration. */\nexport type RightPanel = \"inspector\" | \"comments\" | null;\n\n/* ── Inspector capability traits ──────────────────────────────────────────\n The Inspector is TRAIT-DRIVEN: a selected element declares which property\n groups it supports, and only those groups render. This is the \"interface\n with implementation traits\" model — the interface is the full set of groups,\n and each element kind overrides the flags it does not support (a sticky has\n no stroke, and its height is auto because the note grows with its content).\n New element kinds slot in by returning their own trait set. */\nexport interface ElementTraits {\n geometry: boolean;\n fill: boolean;\n /* Whether this element's fill may be Transparent. Distinct from `fill`: a\n sticky HAS a fill group but must not be transparent (its colour is its\n defining property), whereas an outline-only shape is valid. Mirrors the\n app's `fillTransparent` trait. */\n fillTransparent?: boolean;\n stroke: boolean;\n text: boolean;\n autoWidth?: boolean;\n autoHeight?: boolean;\n}\n\nexport const elementTraits = (def: CanvasElementDef): ElementTraits =>\n def.kind === \"sticky\"\n ? {\n geometry: true,\n fill: true,\n fillTransparent: false,\n stroke: false,\n text: true,\n autoHeight: true,\n }\n : {\n geometry: true,\n fill: true,\n fillTransparent: true,\n stroke: true,\n text: true,\n };\n\nexport const TYPE_LABEL: Record<ShapeType, string> = {\n rectangle: \"Rectangle\",\n roundedRectangle: \"Rounded Rectangle\",\n circle: \"Circle\",\n triangle: \"Triangle\",\n};\n\nexport const sameColor = (a: string | undefined, b: string): boolean =>\n (a ?? \"\").toLowerCase() === b.toLowerCase();\n\n/* Right dock — mirrors StyledOutlineSidebar but docked on the RIGHT: border on\n the left edge, resizer on the left edge. Same 260–780 width band. */\nexport const StyledInspectorSidebar = styled.aside`\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n border-left: 1px solid var(--selectable);\n background-color: var(--page-paper-main);\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", \"Helvetica Neue\",\n Arial, sans-serif;\n`;\n\n/* Grab strip on the LEFT edge, because the panel is docked right — dragging it\n left widens. Same token pair as the outline resizer: selectable grey at\n rest, the hover token while grabbed. */\nexport const StyledInspectorResizer = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n left: -2px;\n width: 5px;\n cursor: col-resize;\n z-index: 2;\n\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 2px;\n width: 1px;\n background-color: var(--selectable-active);\n opacity: 0;\n transition: opacity 150ms ease;\n }\n\n &:hover::after,\n &.resizing::after {\n opacity: 1;\n }\n`;\n\nexport const StyledInspectorBody = styled.div`\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n`;\n\n/* Wraps the property groups. The Properties/Comments switch above does the\n separating, so the first group drops its top hairline — no divider directly\n under the header, matching the left sidebar. Inner groups keep separators. */\nexport const StyledPropGroups = styled.div`\n display: flex;\n flex-direction: column;\n\n > div:first-child {\n border-top: none;\n }\n`;\n\nexport const StyledInspectorHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n height: 56px;\n padding: 0 16px;\n box-sizing: border-box;\n flex-shrink: 0;\n\n /* Icon in a fixed, centred box (like the outline's type icon and the sidebar\n header) so it lines up with the live EditableText's text rather than the\n taller input box. */\n .inspector-type-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n color: var(--color-theme-700);\n }\n\n .inspector-type-icon svg {\n width: 20px;\n height: 20px;\n }\n\n .inspector-name {\n flex: 1;\n min-width: 0;\n }\n`;\n\n/* Empty state — same muted treatment the outline uses for unnamed rows. */\nexport const StyledInspectorEmpty = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n text-align: center;\n color: var(--color-theme-600);\n`;\n\n/* Non-collapsible section: bold title, no chevron / drag handle, separated from\n the section above by a hairline. */\nexport const StyledPropGroup = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px;\n border-top: 1px solid var(--border-primary);\n\n .group-title {\n color: var(--color-theme-800);\n }\n`;\n\nexport const StyledPropRow = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nexport const StyledFieldGrid = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n`;\n\n/* InputNumber's wrapper is a fixed 360px and SelectTrigger a fixed 300px — both\n overflow the narrow dock, so force every inspector control to fill its cell. */\nexport const StyledControl = styled.div`\n width: 100%;\n\n &.disabled {\n opacity: 0.4;\n pointer-events: none;\n }\n\n .c-input-wrapper {\n width: 100%;\n }\n\n .wb-inspector-trigger {\n width: 100%;\n }\n\n .wb-color-value {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* A transparent fill has no colour to show, so it renders the design-system\n CircleSlashIcon (a ring with a 45° slash) instead of an invisible dot. */\n .wb-color-value .wb-transparent-swatch {\n flex: none;\n color: var(--color-theme-500);\n }\n`;\n\n/* Locked checkbox row — the DS Checkbox renders only the box, so it is paired\n with a Label the way the design system expects. */\nexport const StyledCheckboxRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\n/* The element body is HTML (the API's `body` field). The Inspector renders it\n formatted and read-only for now — editing comes later. Raw text needs an\n explicit font-family (no global reset), and the child tags get light prose\n styling. */\nexport const StyledBody = styled.div`\n width: 100%;\n /* Collapsed to a reasonable height; a long body scrolls inside the field. */\n max-height: 140px;\n overflow-y: auto;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", \"Helvetica Neue\",\n Arial, sans-serif;\n font-size: 13px;\n line-height: 1.5;\n color: var(--color-theme-800);\n\n p {\n margin: 0 0 8px;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n\n ul,\n ol {\n margin: 0 0 8px;\n padding-left: 18px;\n }\n\n li {\n margin: 2px 0;\n }\n\n strong {\n font-weight: 600;\n }\n\n em {\n font-style: italic;\n }\n\n a {\n color: var(--color-primary);\n }\n`;\n\n/* Read-only \"Auto\" field for an auto-sized dimension (a sticky's height). */\nexport const StyledAutoField = styled.div`\n height: 32px;\n display: flex;\n align-items: center;\n padding: 0 8px;\n box-sizing: border-box;\n border: 1px solid var(--color-theme-400);\n border-radius: var(--ac-br-8);\n background-color: var(--color-theme-200);\n color: var(--color-theme-600);\n font-size: 13px;\n`;\n\nexport const StyledSegmented = styled.div`\n display: flex;\n gap: 4px;\n\n /* Icon segments (text alignment): size the glyph and center it in the cell so\n each Choose reads as an equal-width icon button. */\n svg {\n display: block;\n width: 16px;\n height: 16px;\n }\n`;\n\nexport interface NumberFieldProps {\n label: string;\n value: number;\n min?: number;\n /* Unit shown as a right adornment inside the field (px, °), the same way\n InputCurrency shows the currency code. */\n unit?: string;\n onCommit: (value: number) => void;\n}\n\nexport const NumberField = ({\n label,\n value,\n min,\n unit,\n onCommit,\n}: NumberFieldProps): ReactElement => (\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n {label}\n </Label>\n <StyledControl>\n <InputNumber\n className=\"wb-inspector-num\"\n value={value}\n decimalLength={0}\n min={min}\n update\n endAdornment={\n unit ? (\n <InputAdornment disablePointerEvents>\n <Caption1 color=\"secondary\">{unit}</Caption1>\n </InputAdornment>\n ) : undefined\n }\n onChange={(next) => {\n if (next !== undefined && !Number.isNaN(next)) {\n onCommit(Math.round(next));\n }\n }}\n />\n </StyledControl>\n </StyledPropRow>\n);\n\nexport const AutoField = ({ label }: { label: string }): ReactElement => (\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n {label}\n </Label>\n <StyledAutoField>Auto</StyledAutoField>\n </StyledPropRow>\n);\n\nexport interface OptionSelectProps {\n options: { id: string | number; name: string }[];\n value: string | number;\n triggerLabel: string;\n onChange: (value: string | number) => void;\n}\n\nexport const OptionSelect = ({\n options,\n value,\n triggerLabel,\n onChange,\n}: OptionSelectProps): ReactElement => (\n <StyledControl>\n <Select\n type=\"single\"\n disableSearch\n forceCloseMenu\n options={options}\n selected={value}\n onChange={(next) => onChange(Array.isArray(next) ? next[0] : next)}\n target={\n <SelectTrigger className=\"wb-inspector-trigger\">\n {triggerLabel}\n </SelectTrigger>\n }\n />\n </StyledControl>\n);\n\nexport const TRANSPARENT_OPTION = {\n id: \"transparent\",\n name: \"Transparent\",\n color: \"transparent\",\n textColor: \"transparent\",\n};\n\n/* The name shown on the color picker's trigger, resolved from the current hex. */\nexport const colorName = (hex: string | undefined): string => {\n if (!hex || sameColor(hex, \"transparent\")) {\n return \"Transparent\";\n }\n\n const match = COLOR_OPTIONS.find((option) => sameColor(hex, option.color));\n return match ? match.name : \"Custom\";\n};\n\nexport interface ColorPickerFieldProps {\n value: string | undefined;\n disabled?: boolean;\n /* Adds \"Transparent\" as the first option, rendered as the DS CircleSlashIcon.\n Driven by the element's `fillTransparent` trait, so only SHAPE fill opts in\n — sticky fill (its colour is the point) and stroke colour never do. */\n includeTransparent?: boolean;\n onSelect: (color: string) => void;\n}\n\n/* The regular design-system named-colour picker (the one in the label dialogs):\n a Select whose trigger is a Dot + colour name, and whose menu is the standard\n dot-and-radio list. Custom colours are deferred. */\nexport const ColorPickerField = ({\n value,\n disabled,\n includeTransparent,\n onSelect,\n}: ColorPickerFieldProps): ReactElement => {\n const options = includeTransparent\n ? [TRANSPARENT_OPTION, ...COLOR_OPTIONS]\n : COLOR_OPTIONS;\n const isTransparent = !value || sameColor(value, \"transparent\");\n\n return (\n <StyledControl className={disabled ? \"disabled\" : undefined}>\n <Select\n type=\"single\"\n disableSearch\n forceCloseMenu\n options={options}\n selected={isTransparent ? \"transparent\" : value}\n onChange={(next) =>\n onSelect(String(Array.isArray(next) ? next[0] : next))\n }\n target={\n <SelectTrigger className=\"wb-inspector-trigger\">\n <span className=\"wb-color-value\">\n {isTransparent ? (\n <CircleSlashIcon\n width={14}\n height={14}\n fill=\"currentColor\"\n className=\"wb-transparent-swatch\"\n />\n ) : (\n <Dot color={value} size={14} />\n )}\n {colorName(value)}\n </span>\n </SelectTrigger>\n }\n />\n </StyledControl>\n );\n};\n\nexport interface RightInspectorProps {\n selectedId: string | null;\n positions: Record<string, { x: number; y: number }>;\n setPositions: React.Dispatch<\n React.SetStateAction<Record<string, { x: number; y: number }>>\n >;\n sizes: Record<string, { width: number; height: number }>;\n setSizes: React.Dispatch<\n React.SetStateAction<Record<string, { width: number; height: number }>>\n >;\n rotations: Record<string, number>;\n setRotations: React.Dispatch<React.SetStateAction<Record<string, number>>>;\n shapes: Record<string, ShapeElementState>;\n setShapes: React.Dispatch<\n React.SetStateAction<Record<string, ShapeElementState>>\n >;\n stickyStyle: StickyTextStyle;\n setStickyStyle: React.Dispatch<React.SetStateAction<StickyTextStyle>>;\n links: LinkElementDef[];\n setLinks: React.Dispatch<React.SetStateAction<LinkElementDef[]>>;\n files: FileElementDef[];\n setFiles: React.Dispatch<React.SetStateAction<FileElementDef[]>>;\n createdShapes: CanvasElementDef[];\n locks: Record<string, boolean>;\n setLocks: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;\n}\n\nexport const RightInspector = ({\n selectedId,\n positions,\n setPositions,\n sizes,\n setSizes,\n rotations,\n setRotations,\n shapes,\n setShapes,\n stickyStyle,\n setStickyStyle,\n links,\n setLinks,\n files,\n setFiles,\n createdShapes,\n locks,\n setLocks,\n}: RightInspectorProps): ReactElement => {\n const [width, setWidth] = useState(OUTLINE_WIDTH);\n const [resizing, setResizing] = useState(false);\n /* Mock only — element display names are not persisted anywhere; they default\n to the type label until renamed here. */\n const [names, setNames] = useState<Record<string, string>>({});\n /* Which inspector tab is showing: the property groups we design, or the\n upcoming comments stream (details TBD). */\n const [tab, setTab] = useState<\"properties\" | \"comments\">(\"properties\");\n\n /* Docked right, so the grab strip is on the LEFT edge and dragging left\n widens: the delta is subtracted rather than added (see LeftSidebar). */\n const startResize = useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n const startX = event.clientX;\n const startWidth = event.currentTarget.parentElement?.offsetWidth ?? 0;\n const previousUserSelect = document.body.style.userSelect;\n\n setResizing(true);\n document.body.style.userSelect = \"none\";\n document.body.style.cursor = \"col-resize\";\n\n const handleMove = (moveEvent: MouseEvent): void => {\n const next = startWidth - (moveEvent.clientX - startX);\n setWidth(Math.min(OUTLINE_MAX_WIDTH, Math.max(OUTLINE_MIN_WIDTH, next)));\n };\n\n const handleUp = (): void => {\n setResizing(false);\n document.body.style.userSelect = previousUserSelect;\n document.body.style.cursor = \"\";\n window.removeEventListener(\"mousemove\", handleMove);\n window.removeEventListener(\"mouseup\", handleUp);\n };\n\n window.addEventListener(\"mousemove\", handleMove);\n window.addEventListener(\"mouseup\", handleUp);\n }, []);\n\n const def = selectedId\n ? [...CANVAS_ELEMENTS, ...createdShapes].find(\n (element) => element.id === selectedId\n )\n : undefined;\n const linkDef = selectedId\n ? links.find((link) => link.id === selectedId)\n : undefined;\n const fileDef = selectedId\n ? files.find((file) => file.id === selectedId)\n : undefined;\n\n const shell = (content: ReactNode): ReactElement => (\n <StyledInspectorSidebar style={{ width }}>\n <StyledInspectorResizer\n className={resizing ? \"resizing\" : \"\"}\n onMouseDown={startResize}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize inspector\"\n />\n {content}\n </StyledInspectorSidebar>\n );\n\n /* Description — inline, multi-line editable text, shown first for every\n element kind. */\n /* Read-only formatted body (HTML from the API's `body` field). No label; when\n the body is empty the field is not rendered at all. No edit yet. */\n const renderBody = (id: string): ReactNode => {\n const html = ELEMENT_BODIES[id] ?? \"\";\n if (!html) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger\n return <StyledBody dangerouslySetInnerHTML={{ __html: html }} />;\n };\n\n /* The Locked checkbox — shown for every element kind, toggling a design lock\n flag keyed by element id. */\n const renderLocked = (id: string): ReactElement => (\n <StyledCheckboxRow>\n <Checkbox\n id={`wb-lock-${id}`}\n checked={locks[id] ?? false}\n onChange={() =>\n setLocks((current) => ({ ...current, [id]: !(current[id] ?? false) }))\n }\n />\n <Label htmlFor={`wb-lock-${id}`} size=\"small\" weight=\"regular\">\n Locked\n </Label>\n </StyledCheckboxRow>\n );\n\n /* Geometry for a card (link / file): X/Y from the shared positions map, an\n editable width and an auto height (cards are content-sized). Cards cannot\n be rotated, so there is no Rotation field. */\n const renderCardGeometry = (\n id: string,\n cardWidth: number,\n onWidth: (width: number) => void\n ): ReactElement => {\n const cardPosition = positions[id] ?? { x: 0, y: 0 };\n\n return (\n <StyledPropGroup>\n <Body2 weight=\"bold\" className=\"group-title\">\n Geometry\n </Body2>\n <StyledFieldGrid>\n <NumberField\n label=\"X\"\n unit=\"px\"\n value={cardPosition.x}\n onCommit={(next) =>\n setPositions((current) => ({\n ...current,\n [id]: { ...(current[id] ?? { x: 0, y: 0 }), x: next },\n }))\n }\n />\n <NumberField\n label=\"Y\"\n unit=\"px\"\n value={cardPosition.y}\n onCommit={(next) =>\n setPositions((current) => ({\n ...current,\n [id]: { ...(current[id] ?? { x: 0, y: 0 }), y: next },\n }))\n }\n />\n </StyledFieldGrid>\n <StyledFieldGrid>\n <NumberField\n label=\"Width\"\n unit=\"px\"\n value={cardWidth}\n min={1}\n onCommit={onWidth}\n />\n <AutoField label=\"Height\" />\n </StyledFieldGrid>\n </StyledPropGroup>\n );\n };\n\n /* Header + panel switch + body, shared by every element kind — only the\n groups inside differ. */\n const renderInspectorBody = (\n icon: ReactNode,\n headerName: string,\n id: string,\n groups: ReactNode\n ): ReactElement => (\n <StyledInspectorBody>\n <StyledInspectorHeader>\n <span className=\"inspector-type-icon\">{icon}</span>\n <span className=\"inspector-name\">\n <EditableText\n value={headerName}\n variant=\"Header 3\"\n weight=\"bold\"\n onSave={(event) =>\n setNames((current) => ({ ...current, [id]: event.target.value }))\n }\n inputProps={{ maxLength: 120 }}\n />\n </span>\n </StyledInspectorHeader>\n\n <StyledChooseRow>\n <StyledPanelChooseSlot>\n <ChooseV2\n required\n options={[\n { id: \"properties\", name: \"Properties\" },\n { id: \"comments\", name: \"Comments\" },\n ]}\n selected={[tab]}\n onChange={(selected) =>\n setTab(selected[0] as \"properties\" | \"comments\")\n }\n />\n </StyledPanelChooseSlot>\n </StyledChooseRow>\n\n {tab === \"comments\" ? (\n <StyledInspectorEmpty>\n <Body2>The comments stream is coming soon.</Body2>\n </StyledInspectorEmpty>\n ) : (\n <StyledPropGroups>{groups}</StyledPropGroups>\n )}\n </StyledInspectorBody>\n );\n\n /* Nothing selected. */\n if (!def && !linkDef && !fileDef) {\n return shell(\n <StyledInspectorEmpty>\n <Body2>Select an element to see its properties.</Body2>\n </StyledInspectorEmpty>\n );\n }\n\n /* Link card — its URL plus the shared Locked flag. */\n if (linkDef) {\n return shell(\n renderInspectorBody(\n <InsertLinkIcon />,\n names[linkDef.id] ?? (linkDef.url || \"Link\"),\n linkDef.id,\n <>\n <StyledPropGroup>\n {renderBody(linkDef.id)}\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n URL\n </Label>\n <StyledControl>\n <Input\n value={linkDef.url ?? \"\"}\n placeholder=\"https://…\"\n onChange={(event) =>\n setLinks((current) =>\n current.map((link) =>\n link.id === linkDef.id\n ? { ...link, url: event.target.value }\n : link\n )\n )\n }\n />\n </StyledControl>\n </StyledPropRow>\n {renderLocked(linkDef.id)}\n </StyledPropGroup>\n {renderCardGeometry(linkDef.id, linkDef.width, (width) =>\n setLinks((current) =>\n current.map((link) =>\n link.id === linkDef.id ? { ...link, width } : link\n )\n )\n )}\n </>\n )\n );\n }\n\n /* File card — read-only size plus the shared Locked flag. */\n if (fileDef) {\n return shell(\n renderInspectorBody(\n <AttachmentIcon />,\n names[fileDef.id] ??\n (fileDef.file\n ? `${fileDef.file.base}.${fileDef.file.extension}`\n : \"File\"),\n fileDef.id,\n <>\n <StyledPropGroup>\n {renderBody(fileDef.id)}\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Size\n </Label>\n <StyledAutoField>\n {fileDef.file ? formatFileSize(fileDef.file.size) : \"—\"}\n </StyledAutoField>\n </StyledPropRow>\n {renderLocked(fileDef.id)}\n </StyledPropGroup>\n {renderCardGeometry(fileDef.id, fileDef.width, (width) =>\n setFiles((current) =>\n current.map((file) =>\n file.id === fileDef.id ? { ...file, width } : file\n )\n )\n )}\n </>\n )\n );\n }\n\n /* Shape / sticky from here on. */\n if (!def) {\n return shell(\n <StyledInspectorEmpty>\n <Body2>Select an element to see its properties.</Body2>\n </StyledInspectorEmpty>\n );\n }\n\n const traits = elementTraits(def);\n const shape = def.kind === \"shape\" ? shapes[def.id] : null;\n const size = sizes[def.id] ?? { width: def.width, height: def.height };\n const position = positions[def.id] ?? { x: def.x, y: def.y };\n const rotation = rotations[def.id] ?? 0;\n\n const typeLabel = shape ? TYPE_LABEL[shape.type] : \"Sticky note\";\n const name = names[def.id] ?? typeLabel;\n\n const updateShape = (partial: Partial<ShapeElementState>): void =>\n setShapes((current) => ({\n ...current,\n [def.id]: { ...current[def.id], ...partial },\n }));\n\n /* Fill is unified across kinds: a shape writes shape.fill, a sticky its note\n colour. A transparent colour means no fill. */\n const currentFill = shape ? shape.fill : stickyStyle.color;\n const currentFillOpacity = shape\n ? shape.fillOpacity\n : stickyStyle.fillOpacity;\n\n const setFill = (color: string): void => {\n if (shape) {\n updateShape({ fill: color });\n } else {\n setStickyStyle({ ...stickyStyle, color });\n }\n };\n\n const setFillOpacity = (next: number): void => {\n if (shape) {\n updateShape({ fillOpacity: next });\n } else {\n setStickyStyle({ ...stickyStyle, fillOpacity: next });\n }\n };\n\n const currentFontSize = shape ? shape.fontSize : stickyStyle.fontSize;\n const currentAlign: TextAlign = shape\n ? shape.align ?? \"left\"\n : stickyStyle.align;\n\n const setFontSize = (next: number): void => {\n if (shape) {\n updateShape({ fontSize: next });\n } else {\n setStickyStyle({ ...stickyStyle, fontSize: next });\n }\n };\n\n const setAlign = (next: TextAlign): void => {\n if (shape) {\n updateShape({ align: next });\n } else {\n setStickyStyle({ ...stickyStyle, align: next });\n }\n };\n\n const styleFlags = shape ?? stickyStyle;\n\n const toggleStyle = (key: TextStyleKey): void => {\n if (shape) {\n updateShape({ [key]: !shape[key] });\n } else {\n setStickyStyle({ ...stickyStyle, [key]: !stickyStyle[key] });\n }\n };\n\n return shell(\n renderInspectorBody(\n shape ? SHAPE_TYPE_ICON[shape.type] : <NoteIcon />,\n name,\n def.id,\n <>\n {/* Element-specific properties — no header, sits above Geometry. */}\n <StyledPropGroup>\n {renderBody(def.id)}\n {shape ? (\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Shape\n </Label>\n <OptionSelect\n options={(\n [\n \"rectangle\",\n \"roundedRectangle\",\n \"circle\",\n \"triangle\",\n ] as ShapeType[]\n ).map((shapeType) => ({\n id: shapeType,\n name: TYPE_LABEL[shapeType],\n }))}\n value={shape.type}\n triggerLabel={TYPE_LABEL[shape.type]}\n onChange={(next) => updateShape({ type: next as ShapeType })}\n />\n </StyledPropRow>\n ) : null}\n {renderLocked(def.id)}\n </StyledPropGroup>\n\n {traits.geometry ? (\n <StyledPropGroup>\n <Body2 weight=\"bold\" className=\"group-title\">\n Geometry\n </Body2>\n <StyledFieldGrid>\n <NumberField\n label=\"X\"\n unit=\"px\"\n value={position.x}\n onCommit={(next) =>\n setPositions((current) => ({\n ...current,\n [def.id]: { ...current[def.id], x: next },\n }))\n }\n />\n <NumberField\n label=\"Y\"\n unit=\"px\"\n value={position.y}\n onCommit={(next) =>\n setPositions((current) => ({\n ...current,\n [def.id]: { ...current[def.id], y: next },\n }))\n }\n />\n </StyledFieldGrid>\n <StyledFieldGrid>\n {traits.autoWidth ? (\n <AutoField label=\"Width\" />\n ) : (\n <NumberField\n label=\"Width\"\n unit=\"px\"\n value={size.width}\n min={1}\n onCommit={(next) =>\n setSizes((current) => ({\n ...current,\n [def.id]: {\n width: next,\n height: current[def.id]?.height ?? def.height,\n },\n }))\n }\n />\n )}\n {traits.autoHeight ? (\n <AutoField label=\"Height\" />\n ) : (\n <NumberField\n label=\"Height\"\n unit=\"px\"\n value={size.height}\n min={1}\n onCommit={(next) =>\n setSizes((current) => ({\n ...current,\n [def.id]: {\n width: current[def.id]?.width ?? def.width,\n height: next,\n },\n }))\n }\n />\n )}\n </StyledFieldGrid>\n <StyledFieldGrid>\n <NumberField\n label=\"Rotation\"\n unit=\"°\"\n value={rotation}\n onCommit={(next) =>\n setRotations((current) => ({ ...current, [def.id]: next }))\n }\n />\n </StyledFieldGrid>\n </StyledPropGroup>\n ) : null}\n\n {traits.fill ? (\n <StyledPropGroup>\n <Body2 weight=\"bold\" className=\"group-title\">\n Fill\n </Body2>\n <StyledFieldGrid>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Color\n </Label>\n <ColorPickerField\n includeTransparent={traits.fillTransparent}\n value={currentFill}\n onSelect={setFill}\n />\n </StyledPropRow>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Opacity\n </Label>\n <OptionSelect\n options={OPACITY_OPTIONS.map((opacity) => ({\n id: opacity,\n name: `${opacity}%`,\n }))}\n value={currentFillOpacity}\n triggerLabel={`${currentFillOpacity}%`}\n onChange={(next) => setFillOpacity(Number(next))}\n />\n </StyledPropRow>\n </StyledFieldGrid>\n </StyledPropGroup>\n ) : null}\n\n {traits.stroke && shape ? (\n <StyledPropGroup>\n <Body2 weight=\"bold\" className=\"group-title\">\n Stroke\n </Body2>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Pattern\n </Label>\n <StyledSegmented>\n <ChooseV2\n required\n options={BORDER_STYLE_OPTIONS.map((option) => ({\n id: option.label,\n name: option.label,\n }))}\n selected={[\n BORDER_STYLE_OPTIONS.find(\n (option) => option.value === shape.strokeDash\n )?.label ?? \"Solid\",\n ]}\n onChange={(selected) =>\n updateShape({\n strokeDash: BORDER_STYLE_OPTIONS.find(\n (option) => option.label === selected[0]\n )?.value,\n })\n }\n />\n </StyledSegmented>\n </StyledPropRow>\n <StyledFieldGrid>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Thickness\n </Label>\n <OptionSelect\n options={THICKNESS_OPTIONS.map((thickness) => ({\n id: thickness,\n name: `${thickness} pt`,\n }))}\n value={shape.strokeWidth}\n triggerLabel={`${shape.strokeWidth} pt`}\n onChange={(next) =>\n updateShape({ strokeWidth: Number(next) })\n }\n />\n </StyledPropRow>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Color\n </Label>\n <ColorPickerField\n value={shape.stroke}\n onSelect={(color) => updateShape({ stroke: color })}\n />\n </StyledPropRow>\n </StyledFieldGrid>\n <StyledFieldGrid>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Radius\n </Label>\n <OptionSelect\n options={RADIUS_OPTIONS.map((radius) => ({\n id: radius,\n name: `${radius} px`,\n }))}\n value={shape.borderRadius}\n triggerLabel={`${shape.borderRadius} px`}\n onChange={(next) =>\n updateShape({ borderRadius: Number(next) })\n }\n />\n </StyledPropRow>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Opacity\n </Label>\n <OptionSelect\n options={OPACITY_OPTIONS.map((opacity) => ({\n id: opacity,\n name: `${opacity}%`,\n }))}\n value={shape.strokeOpacity}\n triggerLabel={`${shape.strokeOpacity}%`}\n onChange={(next) =>\n updateShape({ strokeOpacity: Number(next) })\n }\n />\n </StyledPropRow>\n </StyledFieldGrid>\n </StyledPropGroup>\n ) : null}\n\n {traits.text ? (\n <StyledPropGroup>\n <Body2 weight=\"bold\" className=\"group-title\">\n Text\n </Body2>\n <StyledFieldGrid>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Style\n </Label>\n <StyledSegmented>\n {STYLE_OPTIONS.map((option) => (\n <Tooltip key={option.key} title={option.label}>\n <IconButton\n variant=\"text gray\"\n active={styleFlags[option.key]}\n aria-label={option.label}\n onClick={() => toggleStyle(option.key)}\n >\n {option.icon}\n </IconButton>\n </Tooltip>\n ))}\n </StyledSegmented>\n </StyledPropRow>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Size\n </Label>\n <OptionSelect\n options={FONT_SIZE_OPTIONS.map((fontSize) => ({\n id: fontSize,\n name: `${fontSize} pt`,\n }))}\n value={currentFontSize}\n triggerLabel={`${currentFontSize} pt`}\n onChange={(next) => setFontSize(Number(next))}\n />\n </StyledPropRow>\n </StyledFieldGrid>\n <StyledPropRow>\n <Label size=\"small\" weight=\"regular\">\n Alignment\n </Label>\n <StyledSegmented>\n {ALIGN_OPTIONS.map((option) => (\n <Tooltip key={option.value} title={option.label}>\n <IconButton\n variant=\"text gray\"\n active={currentAlign === option.value}\n aria-label={option.label}\n onClick={() => setAlign(option.value)}\n >\n {option.icon}\n </IconButton>\n </Tooltip>\n ))}\n </StyledSegmented>\n </StyledPropRow>\n </StyledPropGroup>\n ) : null}\n </>\n )\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shapePreviewGlyph = exports.resolveMockLink = exports.linkDomain = exports.linkColor = exports.isValidLinkUrl = exports.isUnfurlable = exports.clampCardWidth = exports.StyledShapePreview = exports.StyledLinkInput = exports.StyledLinkHint = exports.StyledLinkEditArea = exports.StyledLinkDraft = exports.StyledLinkCard = exports.PRIVATE_HOST = exports.LinkPreviewCard = exports.LinkFormattingToolbar = exports.LinkElement = exports.LINK_PALETTE = exports.LINK_DISPLAY = exports.LINK_DEFAULT_WIDTH = exports.KNOWN_LINKS = exports.CARD_MIN_WIDTH = exports.CARD_MAX_WIDTH = exports.CARD_DRAW_THRESHOLD = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
+ var _elements = require("./elements");
10
+ var _Icons = require("../../components/Icons");
11
+ var _StackedCard = require("../../components/StackedCard");
12
+ var _Tooltip = require("../../components/Tooltip");
13
+ var _Typography = require("../../components/Typography");
14
+ var _content = require("../stackedCard/content");
15
+ var _useInlineEdit = require("../stackedCard/useInlineEdit");
16
+ var _stackedCardCover = _interopRequireDefault(require("../static/stacked-card-cover.png"));
17
+ var _stackedCardHero = _interopRequireDefault(require("../static/stacked-card-hero.png"));
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
20
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
24
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
25
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
26
+ /* ------------------------------------------------------------------ */
27
+ /* Link element — StackedCard + the URL unfurl lifecycle */
28
+ /* ------------------------------------------------------------------ */
29
+
30
+ /**
31
+ * The only canvas element here built on the shipped design-system
32
+ * `StackedCard`. The shell is hollow, so the board supplies the visual state
33
+ * (`selected`) and the width, and the content comes from `LinkCard` — which
34
+ * renders the unfurl lifecycle, not a static layout.
35
+ *
36
+ * Link cards are AUTO-HEIGHT. The host sets the width; the height follows the
37
+ * content. That is why drawing a box commits only its width, and why resizing
38
+ * is width-only.
39
+ */
40
+
41
+ /* Width bounds shared by every drawn card (link, file). */
42
+ var CARD_MIN_WIDTH = exports.CARD_MIN_WIDTH = 180;
43
+ var CARD_MAX_WIDTH = exports.CARD_MAX_WIDTH = 420;
44
+
45
+ /* Below this the drag reads as a click, not a drawn box. */
46
+ var CARD_DRAW_THRESHOLD = exports.CARD_DRAW_THRESHOLD = 8;
47
+ var clampCardWidth = exports.clampCardWidth = function clampCardWidth(width) {
48
+ return Math.min(CARD_MAX_WIDTH, Math.max(CARD_MIN_WIDTH, Math.round(width)));
49
+ };
50
+ var LINK_DEFAULT_WIDTH = exports.LINK_DEFAULT_WIDTH = 260;
51
+
52
+ /* A shape check, nothing more. The real validation is server-side: the backend
53
+ normalizes the URL, refuses anything but http(s), blocks private address
54
+ space and re-checks every redirect hop. */
55
+ var isValidLinkUrl = exports.isValidLinkUrl = function isValidLinkUrl(value) {
56
+ return /^https?:\/\/[^\s/?#]+\.[^\s]*$/i.test(value.trim());
57
+ };
58
+
59
+ /* https://www.example.com/a?b → example.com */
60
+ var linkDomain = exports.linkDomain = function linkDomain(url) {
61
+ return url.trim().replace(/^https?:\/\//i, "").split(/[/?#]/)[0].replace(/^www\./i, "");
62
+ };
63
+
64
+ /* Stand-in favicon / hero colours. A real unfurl stores the fetched favicon and
65
+ OpenGraph image as attachments; here the colour is derived from the domain so
66
+ every pasted host keeps a stable identity instead of sharing one colour. */
67
+ var LINK_PALETTE = exports.LINK_PALETTE = ["#0F6E56", "#8C5A2B", "#2F5DA8", "#8A3E6B", "#3F6B25", "#A8452F"];
68
+ var linkColor = exports.linkColor = function linkColor(domain, offset) {
69
+ var hash = 0;
70
+ for (var index = 0; index < domain.length; index += 1) {
71
+ hash = (hash * 31 + domain.charCodeAt(index)) % 997;
72
+ }
73
+ return LINK_PALETTE[(hash + offset) % LINK_PALETTE.length];
74
+ };
75
+
76
+ /* Hand-written seeds for the hosts worth demoing. Vimeo resolves to a playable
77
+ video with a real cover image; the history link deliberately resolves without
78
+ one, so the colour-cover fallback (a link whose page carries no OpenGraph
79
+ image) is on the board too. */
80
+ var KNOWN_LINKS = exports.KNOWN_LINKS = [_objectSpread(_objectSpread({}, _content.MOCK_LINKS.vimeo), {}, {
81
+ heroSrc: _stackedCardHero.default
82
+ }), _objectSpread({}, _content.MOCK_LINKS.history)];
83
+
84
+ /**
85
+ * The fake "server" response for a URL — what `GET /link-previews/...` would
86
+ * eventually hold. Known hosts get their seed; anything else resolves to a
87
+ * generic article keyed off its own domain, so pasting an arbitrary link still
88
+ * produces a believable card instead of an empty one.
89
+ */
90
+ var resolveMockLink = exports.resolveMockLink = function resolveMockLink(url) {
91
+ var domain = linkDomain(url);
92
+ var known = KNOWN_LINKS.find(function (link) {
93
+ return linkDomain(link.url) === domain;
94
+ });
95
+ if (known) {
96
+ return _objectSpread(_objectSpread({}, known), {}, {
97
+ url
98
+ });
99
+ }
100
+ return {
101
+ url,
102
+ domain,
103
+ faviconColor: linkColor(domain, 0),
104
+ heroColor: linkColor(domain, 3),
105
+ heroSrc: _stackedCardCover.default,
106
+ title: "".concat(domain, " \u2014 the title a real unfurl reads from og:title"),
107
+ description: "The summary an unfurl takes from og:description, falling back to the page's meta description when the site carries no OpenGraph tags.",
108
+ kind: "Article",
109
+ playable: false
110
+ };
111
+ };
112
+
113
+ /* Private address space — the one class of URL that passes a shape check and
114
+ still can never resolve, because the server refuses to fetch it (and re-checks
115
+ every redirect hop). Pasting one of these is how the error rung of the ladder
116
+ is reachable from the board. */
117
+ var PRIVATE_HOST = exports.PRIVATE_HOST = /^(?:10|127|192\.168|169\.254|172\.(?:1[6-9]|2\d|3[01]))\./;
118
+ var isUnfurlable = exports.isUnfurlable = function isUnfurlable(domain) {
119
+ return !PRIVATE_HOST.test(domain);
120
+ };
121
+
122
+ /** A link element on the board. Position lives in the shared positions map. */
123
+
124
+ /* On the canvas a link is always the expanded card — hero, then the tinted
125
+ footer band with the domain, title and description. Compact is a column-view
126
+ density, so the board pins the level and shows no display switch. */
127
+ var LINK_DISPLAY = exports.LINK_DISPLAY = "expanded";
128
+
129
+ /* The card fills the element box the board drew; the shell's reference 260px
130
+ width gives way to the host. Height stays auto. */
131
+ var StyledLinkCard = exports.StyledLinkCard = (0, _styledComponents.default)(_StackedCard.StackedCard).withConfig({
132
+ displayName: "linkElement__StyledLinkCard",
133
+ componentId: "sc-1e6iu71-0"
134
+ })(["&&{width:100%;}user-select:none;"]);
135
+
136
+ /* The inline URL editor — the placeholder's interactive half. */
137
+ var StyledLinkEditArea = exports.StyledLinkEditArea = _styledComponents.default.div.withConfig({
138
+ displayName: "linkElement__StyledLinkEditArea",
139
+ componentId: "sc-1e6iu71-1"
140
+ })(["display:flex;flex-direction:column;gap:6px;padding:16px 12px;"]);
141
+ var StyledLinkInput = exports.StyledLinkInput = _styledComponents.default.input.withConfig({
142
+ displayName: "linkElement__StyledLinkInput",
143
+ componentId: "sc-1e6iu71-2"
144
+ })(["width:100%;box-sizing:border-box;padding:8px 10px;border:1.5px solid ", ";border-radius:6px;background:var(--page-paper-main);color:var(--color-theme-900);font-family:-apple-system,BlinkMacSystemFont,\"Roboto\",\"Helvetica Neue\",Arial,sans-serif;font-size:13px;text-align:center;outline:none;&::placeholder{color:var(--color-theme-500);}"], function (_ref) {
145
+ var $invalid = _ref.$invalid;
146
+ return $invalid ? "var(--red-alert)" : "var(--sc-selection-ring)";
147
+ });
148
+ var StyledLinkHint = exports.StyledLinkHint = (0, _styledComponents.default)(_Typography.Caption2).withConfig({
149
+ displayName: "linkElement__StyledLinkHint",
150
+ componentId: "sc-1e6iu71-3"
151
+ })(["display:block;text-align:center;color:var(--red-alert);"]);
152
+
153
+ /* The dashed rubber band drawn while the Link tool is armed. The width readout
154
+ is the honest signal: the box sets the card's width, the height is the
155
+ card's own business. */
156
+ /* The outline the app's ShapePreview draws — stroke only, the selection blue,
157
+ at 70% — used both for the shape rubber band and the hover preview. */
158
+ var StyledShapePreview = exports.StyledShapePreview = _styledComponents.default.div.withConfig({
159
+ displayName: "linkElement__StyledShapePreview",
160
+ componentId: "sc-1e6iu71-4"
161
+ })(["position:absolute;box-sizing:border-box;pointer-events:none;svg{display:block;overflow:visible;fill:none;stroke:", ";stroke-width:2;opacity:0.7;}"], _elements.SELECTION_BLUE);
162
+ var shapePreviewGlyph = exports.shapePreviewGlyph = function shapePreviewGlyph(tool, width, height) {
163
+ return /*#__PURE__*/_react.default.createElement("svg", {
164
+ width: "100%",
165
+ height: "100%"
166
+ }, tool === "circle" ? /*#__PURE__*/_react.default.createElement("ellipse", {
167
+ cx: "50%",
168
+ cy: "50%",
169
+ rx: "50%",
170
+ ry: "50%"
171
+ }) : null, tool === "roundedRectangle" ? /*#__PURE__*/_react.default.createElement("rect", {
172
+ x: "0",
173
+ y: "0",
174
+ width: "100%",
175
+ height: "100%",
176
+ rx: 8,
177
+ ry: 8
178
+ }) : null, tool === "triangle" ? /*#__PURE__*/_react.default.createElement("polygon", {
179
+ points: "".concat(width / 2, ",0 ").concat(width, ",").concat(height, " 0,").concat(height)
180
+ }) : null);
181
+ };
182
+ var StyledLinkDraft = exports.StyledLinkDraft = _styledComponents.default.div.withConfig({
183
+ displayName: "linkElement__StyledLinkDraft",
184
+ componentId: "sc-1e6iu71-5"
185
+ })(["position:absolute;box-sizing:border-box;border:1.5px dashed ", ";border-radius:8px;background-color:rgba(59,130,246,0.08);pointer-events:none;.draft-width{position:absolute;top:-22px;left:0;padding:1px 6px;border-radius:4px;background-color:", ";color:#ffffff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;white-space:nowrap;}"], _elements.SELECTION_BLUE, _elements.SELECTION_BLUE);
186
+ /* The link element's floating toolbar. It acts on the ENTITY: go to the page,
187
+ change which page, or bin the card. */
188
+ var LinkFormattingToolbar = exports.LinkFormattingToolbar = function LinkFormattingToolbar(_ref2) {
189
+ var url = _ref2.url,
190
+ onEditUrl = _ref2.onEditUrl,
191
+ onDelete = _ref2.onDelete;
192
+ return /*#__PURE__*/_react.default.createElement(_elements.StyledFormattingToolbar, {
193
+ onMouseDown: _elements.stopClick,
194
+ onClick: _elements.stopClick
195
+ }, /*#__PURE__*/_react.default.createElement(_elements.StyledToolbarLink, {
196
+ href: url,
197
+ target: "_blank",
198
+ rel: "noopener noreferrer"
199
+ }, /*#__PURE__*/_react.default.createElement(_Icons.OpenExpandedIcon, {
200
+ className: "i16"
201
+ }), "Visit"), /*#__PURE__*/_react.default.createElement(_elements.StyledToolbarButton, {
202
+ type: "button",
203
+ onClick: onEditUrl
204
+ }, /*#__PURE__*/_react.default.createElement(_Icons.InsertLinkIcon, {
205
+ className: "i16"
206
+ }), "Edit"), /*#__PURE__*/_react.default.createElement("span", {
207
+ className: "divider"
208
+ }), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
209
+ title: "Move to Trash"
210
+ }, /*#__PURE__*/_react.default.createElement(_elements.StyledToolbarButton, {
211
+ type: "button",
212
+ className: "icon-only",
213
+ onClick: onDelete
214
+ }, /*#__PURE__*/_react.default.createElement(_Icons.TrashIcon, {
215
+ className: "i16"
216
+ }))));
217
+ };
218
+
219
+ /**
220
+ * The card's three resize callbacks, handed down untouched from the board. The
221
+ * grip reports deltas measured from the gesture START and brackets the stream
222
+ * with a start and a commit, so a card is only a conduit — the board resolves
223
+ * what a delta means.
224
+ */
225
+
226
+ /**
227
+ * A link element with a committed URL: the card runs the unfurl lifecycle.
228
+ *
229
+ * One controller per card, and the seed is memoized on the URL so the board's
230
+ * own re-renders (drag, selection, a grid change) never restart the ladder.
231
+ */
232
+ var LinkPreviewCard = exports.LinkPreviewCard = function LinkPreviewCard(_ref3) {
233
+ var _element$url;
234
+ var element = _ref3.element,
235
+ selected = _ref3.selected,
236
+ resize = _ref3.resize,
237
+ onEditUrl = _ref3.onEditUrl,
238
+ onDelete = _ref3.onDelete;
239
+ var url = (_element$url = element.url) !== null && _element$url !== void 0 ? _element$url : "";
240
+ var link = (0, _react.useMemo)(function () {
241
+ return resolveMockLink(url);
242
+ }, [url]);
243
+ var unfurl = (0, _content.useUnfurl)({
244
+ link,
245
+ delayMs: 700,
246
+ shouldFail: !isUnfurlable(link.domain)
247
+ });
248
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledLinkCard, _extends({
249
+ selected: selected,
250
+ resizable: selected,
251
+ resizeAxis: "width",
252
+ resizeLabel: "Resize link card"
253
+ }, resize), /*#__PURE__*/_react.default.createElement(_content.LinkCard, {
254
+ unfurl: unfurl,
255
+ display: LINK_DISPLAY
256
+ })), selected ? /*#__PURE__*/_react.default.createElement(LinkFormattingToolbar, {
257
+ url: url,
258
+ onEditUrl: onEditUrl,
259
+ onDelete: onDelete
260
+ }) : null);
261
+ };
262
+ /**
263
+ * The three phases of a link element:
264
+ *
265
+ * placeholder drawn but empty — an interactive invitation, distinct from the
266
+ * loading skeleton (spec §5)
267
+ * editing the inline URL field, with the shell's `entered` ring and drag
268
+ * switched off
269
+ * preview a URL is committed; the unfurl lifecycle takes over
270
+ */
271
+ var LinkElement = exports.LinkElement = function LinkElement(_ref4) {
272
+ var element = _ref4.element,
273
+ selected = _ref4.selected,
274
+ autoEdit = _ref4.autoEdit,
275
+ onCommitUrl = _ref4.onCommitUrl,
276
+ resize = _ref4.resize,
277
+ onDelete = _ref4.onDelete;
278
+ var edit = (0, _useInlineEdit.useInlineEdit)({
279
+ validate: function validate(value) {
280
+ return isValidLinkUrl(value) ? true : "Enter a valid link, e.g. https://…";
281
+ },
282
+ onCommit: function onCommit(value) {
283
+ return onCommitUrl(value.trim());
284
+ }
285
+ });
286
+ var begin = edit.begin;
287
+
288
+ // A box drawn with the Link tool is a request to add a link, so the editor
289
+ // opens straight away; the placeholder is what a cancelled edit falls back to.
290
+ (0, _react.useEffect)(function () {
291
+ if (autoEdit) {
292
+ begin();
293
+ }
294
+ }, [autoEdit, begin]);
295
+
296
+ /* Editing wins over the preview, so the same editor serves the first fill and
297
+ every later correction: "Edit link" seeds the field with the current URL
298
+ and Esc drops back to the card that was already there. */
299
+ if (edit.editing) {
300
+ return /*#__PURE__*/_react.default.createElement(StyledLinkCard, {
301
+ entered: true,
302
+ draggable: false,
303
+ "aria-label": "Add a link"
304
+ }, /*#__PURE__*/_react.default.createElement(StyledLinkEditArea, null, /*#__PURE__*/_react.default.createElement(StyledLinkInput, _extends({}, edit.bind, {
305
+ type: "text",
306
+ inputMode: "url",
307
+ placeholder: "https://\u2026",
308
+ $invalid: edit.error != null
309
+ })), edit.error ? /*#__PURE__*/_react.default.createElement(StyledLinkHint, {
310
+ role: "alert"
311
+ }, edit.error) : /*#__PURE__*/_react.default.createElement(_Typography.Caption2, {
312
+ color: "tertiary",
313
+ style: {
314
+ textAlign: "center"
315
+ }
316
+ }, "Enter to add \xB7 Esc to cancel")));
317
+ }
318
+ if (element.url != null) {
319
+ return /*#__PURE__*/_react.default.createElement(LinkPreviewCard, {
320
+ element: element,
321
+ selected: selected,
322
+ resize: resize,
323
+ onEditUrl: function onEditUrl() {
324
+ var _element$url2;
325
+ edit.reset((_element$url2 = element.url) !== null && _element$url2 !== void 0 ? _element$url2 : "");
326
+ edit.begin();
327
+ },
328
+ onDelete: onDelete
329
+ });
330
+ }
331
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledLinkCard, {
332
+ selected: selected,
333
+ "aria-label": "Empty link card"
334
+ }, /*#__PURE__*/_react.default.createElement(_content.LinkPlaceholder, {
335
+ "data-drag-through": "",
336
+ onClick: edit.begin
337
+ })), selected ? /*#__PURE__*/_react.default.createElement(_elements.StyledFormattingToolbar, {
338
+ onMouseDown: _elements.stopClick,
339
+ onClick: _elements.stopClick
340
+ }, /*#__PURE__*/_react.default.createElement(_elements.StyledToolbarButton, {
341
+ type: "button",
342
+ onClick: edit.begin
343
+ }, /*#__PURE__*/_react.default.createElement(_Icons.InsertLinkIcon, {
344
+ className: "i16"
345
+ }), "Edit"), /*#__PURE__*/_react.default.createElement("span", {
346
+ className: "divider"
347
+ }), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
348
+ title: "Move to Trash"
349
+ }, /*#__PURE__*/_react.default.createElement(_elements.StyledToolbarButton, {
350
+ type: "button",
351
+ className: "icon-only",
352
+ onClick: onDelete
353
+ }, /*#__PURE__*/_react.default.createElement(_Icons.TrashIcon, {
354
+ className: "i16"
355
+ })))) : null);
356
+ };
357
+ //# sourceMappingURL=linkElement.js.map