{
  "version": 3,
  "sources": ["../../src/web/lib/images/image.ts", "../../src/web/pages/project/lib/svg.ts", "../../src/document/models/CanvasTree/nodes/utils/updateReplicaOverrides.ts", "../../src/document/models/CanvasTree/traits/utils/reducePosition.ts", "../../src/document/utils/LayoutDefaults.ts", "../../src/document/utils/layoutHelpers.ts", "../../src/document/components/chrome/insertSidebar/dataSources/icons/AgentVectorSetIcons.tsx", "../../src/document/components/chrome/insertSidebar/dataSources/items/vectorSetItems.ts", "../../src/web/lib/videos/measureVideo.ts", "../../src/web/pages/project/lib/createService.ts", "../../src/web/pages/project/lib/UploadService.ts"],
  "sourcesContent": ["// We don't deal in regular widths and heights because:\n//\n// 1. They're equal to their natural counterparts when not in the document.\n//\n// 2. They aren't always equal to `naturalX / devicePixelRatio`. If it's in the\n//    document and made, say, to fit the width of its container, it'll be the\n//    width of that container. That's useful mostly in cases where you want to\n//    \"react\" to the layout, not \"dictate\" it, like we usually do.\n//\n// 3. Fewer options reduce confusion, and natural dimensions are just much\n//    easier to reason about, beyond being the only reliable option.\n//\n// Using `natural` prefix as to be consistent with Web API terminology, and\n// highlight the fact that this is neither physical nor CSS pixels, both of\n// which are layout-dependent, while this is just raw dimensions.\n//\n// https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/width\n// https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalWidth\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio\nexport interface ImageSize {\n\t/**\n\t * Same as [HTMLImageElement.naturalWidth](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalWidth).\n\t *\n\t * **Warning**: May be zero! Use {@link imageSizeToNonZero} if a problem.\n\t */\n\tnaturalWidth: number\n\t/**\n\t * Same as [HTMLImageElement.naturalHeight](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalHeight).\n\t *\n\t * **Warning**: May be zero! Use {@link imageSizeToNonZero} if a problem.\n\t */\n\tnaturalHeight: number\n}\n\n// Separate from ImageSize as to reduce the chance of accidental misuse\ninterface NonZeroImageSize {\n\tnonZeroNaturalWidth: number\n\tnonZeroNaturalHeight: number\n}\n\n// Chromium's defaults for SVGs without width/height\nexport const DEFAULT_WIDTH = 300\nexport const DEFAULT_HEIGHT = 150\n\nexport const imageSizeToNonZero = ({ naturalWidth, naturalHeight }: ImageSize): NonZeroImageSize => ({\n\tnonZeroNaturalWidth: naturalWidth === 0 ? DEFAULT_WIDTH : naturalWidth,\n\tnonZeroNaturalHeight: naturalHeight === 0 ? DEFAULT_HEIGHT : naturalHeight,\n})\n", "import { openNewTab } from \"@framerjs/app-shared\"\nimport { assert } from \"@framerjs/shared\"\nimport { domParser } from \"library/render/utils/dom.ts\"\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH } from \"web/lib/images/image.ts\"\nimport { toast } from \"web/lib/toaster.ts\"\n\ntype SVGDocument = Document & {\n\trootElement: SVGSVGElement\n}\n\n// Absolute units converted to px according to the CSS3 specification:\n// https://www.w3.org/TR/css-values-3/#absolute-lengths\n// (1 inch is 2.54 centimeters is 96 pixels)\nconst unitsToPixels: { [unit: string]: number } = {\n\tcm: 96 / 2.54,\n\tmm: 96 / 2.54 / 10,\n\tQ: 96 / 2.54 / 40,\n\tin: 96,\n\tpc: 96 / 6,\n\tpt: 96 / 72,\n\tpx: 1,\n\n\t// A few assumptions about relative units.\n\tem: 16,\n\tex: 8,\n\tch: 8,\n\trem: 16,\n}\n\n/** Parses values like 10cm for `<svg ... width=\"10cm\" ...>` turning them into pixel sizes. Ignoring\n * percentage values, negative or zero values, or unparsable values. Should at least parse anything browsers\n * parse. */\nfunction parseLength(value: string | null | undefined): number | null {\n\tif (!value) return null\n\n\tconst m = /(-?[\\d.]+)([a-z%]*)/u.exec(value)\n\tif (!m) return null\n\tconst [_, numericValue, unit] = m\n\tif (numericValue === undefined) return null // appease TS\n\tif (unit?.startsWith(\"%\")) return null\n\n\tconst pixels = Math.round(parseFloat(numericValue) * (unit ? unitsToPixels[unit] || 1 : 1))\n\tif (pixels <= 0) return 0\n\treturn pixels\n}\n\n/** Returns the size of an svg, or a default of 300x150, trying to match what Chromium does. */\nexport function calculateSizeOfSVG(svg: string): { width: number; height: number } {\n\tconst node = parseSVG(svg)\n\tif (!node) throw Error(\"Invalid SVG\")\n\n\t// If the width height are fully defined, we use it.\n\tconst width = parseLength(node.getAttribute(\"width\"))\n\tconst height = parseLength(node.getAttribute(\"height\"))\n\tif (width !== null && height !== null) return { width, height }\n\n\t// Otherwise we use the viewBox.\n\tconst viewBox = node.getAttribute(\"viewBox\")\n\tif (viewBox) {\n\t\tconst bounds = viewBox.split(\" \")\n\t\tconst boxWidth = parseLength(bounds[2])\n\t\tconst boxHeight = parseLength(bounds[3])\n\t\tif (boxWidth !== null && boxHeight !== null) {\n\t\t\t// If given a partial width, using the viewbox as the aspect ratio.\n\t\t\tconst ratio = boxHeight !== 0 ? boxWidth / boxHeight : 2\n\t\t\tif (width !== null && height === null) {\n\t\t\t\treturn { width: width, height: width / ratio }\n\t\t\t} else if (height !== null && width === null) {\n\t\t\t\treturn { width: height * ratio, height: height }\n\t\t\t}\n\n\t\t\t// Otherwise use the viewBox itself.\n\t\t\treturn { width: boxWidth, height: boxHeight }\n\t\t}\n\t}\n\n\t// Otherwise assume a default width and height as 300x150 just like Chromium will.\n\treturn { width: width ?? DEFAULT_WIDTH, height: height ?? DEFAULT_HEIGHT }\n}\n\nexport function parseSVG(text: string): SVGSVGElement | undefined {\n\tconst document = domParser(text, \"image/svg+xml\") as SVGDocument\n\tconst rootNode = document.rootElement || document.childNodes[0]\n\tif (!rootNode || rootNode.nodeName.toUpperCase() !== \"SVG\") return undefined\n\treturn rootNode\n}\n\n/**\n * @description In order to provide cross-platform accessibility support,\n * it's necessary to pass the SVG's aria-labelledby=\"[title-ID, description-ID]\"\n * to the title/ description in form of an id attribute.\n */\ninterface SVGA11yOptions {\n\treadonly text?: string\n\treadonly id: string\n}\n\nexport function insertSVGTitle(svg: SVGSVGElement, options: SVGA11yOptions): SVGSVGElement {\n\tif (!options.text) return svg\n\tconst presentTitle = svg.querySelector(\"title\")\n\n\tif (presentTitle) {\n\t\tpresentTitle.textContent = options.text\n\t\tpresentTitle.id = options.id\n\n\t\treturn svg\n\t}\n\n\tconst title = document.createElement(\"title\")\n\ttitle.textContent = options.text\n\ttitle.id = options.id\n\tsvg.insertBefore(title, svg.firstElementChild)\n\n\treturn svg\n}\n\nexport function insertSVGDesc(svg: SVGSVGElement, options: SVGA11yOptions): SVGSVGElement {\n\tif (!options.text) return svg\n\tconst presentDesc = svg.querySelector(\"desc\")\n\n\tif (presentDesc) {\n\t\tpresentDesc.textContent = options.text\n\t\tpresentDesc.id = options.id\n\n\t\treturn svg\n\t}\n\n\tconst title = svg.querySelector(\"title\")\n\tconst desc = document.createElement(\"desc\")\n\tdesc.textContent = options.text\n\tdesc.id = options.id\n\n\tif (!title) {\n\t\tsvg.insertBefore(desc, svg.firstElementChild)\n\t} else {\n\t\ttitle.insertAdjacentElement(\"afterend\", desc)\n\t}\n\n\treturn svg\n}\n\ninterface SVGAriaLabelOptions {\n\treadonly titleId?: string\n\treadonly descId?: string\n}\n\nexport function setSVGAriaLabelBy(svg: SVGSVGElement, options: SVGAriaLabelOptions): SVGSVGElement {\n\tsvg.setAttribute(\"role\", \"img\")\n\tif (!options.titleId && !options.descId) return svg\n\n\tconst titleId = options.titleId ?? \"\"\n\tconst descId = options.descId ?? \"\"\n\tconst separator = titleId.length > 0 && descId.length > 0 ? \" \" : \"\"\n\n\tconst labelledby = titleId + separator + descId\n\n\tsvg.setAttribute(\"aria-labelledby\", labelledby)\n\n\treturn svg\n}\n\nconst MAX_INLINE_SVG_SIZE = 50_000\nconst SVG_IMAGE_SUBSTRING = 'xlink:href=\"data:image/'\nconst SVG_RASTER_IMAGE_REGEX = /xlink:href=['\"]data:image\\/[^;]+;base64,([A-Za-z\\d+=/]+)/gu\n\nexport function shouldUploadSvgAsImageFill(svgText: string) {\n\treturn svgText.length > MAX_INLINE_SVG_SIZE || svgText.includes(SVG_IMAGE_SUBSTRING)\n}\n\nexport function svgHasTooLargeRasterImages(svgText: string) {\n\tlet totalRasterDataSize = 0\n\n\tlet match: RegExpExecArray | null\n\t// eslint-disable-next-line framer-studio/no-global-regex-in-test-exec -- lastIndex is reset below.\n\twhile ((match = SVG_RASTER_IMAGE_REGEX.exec(svgText))) {\n\t\tconst [, imageBase64Encoded] = match\n\t\tassert(imageBase64Encoded, \"The image regex must have a capture group for the image base64 data\")\n\t\ttotalRasterDataSize += imageBase64Encoded.length\n\t}\n\tSVG_RASTER_IMAGE_REGEX.lastIndex = 0\n\n\tif (totalRasterDataSize < 50 * 1024) return false\n\n\ttoast({\n\t\tkey: \"svg-large-raster-image\",\n\t\ttype: \"add\",\n\t\tvariant: \"error\",\n\t\tprimaryText: \"SVGs with raster images\",\n\t\tsecondaryText: \"are not supported.\",\n\t\tduration: 5_000,\n\t\textraAction: {\n\t\t\ttitle: \"Learn more\",\n\t\t\tonClick() {\n\t\t\t\topenNewTab(\n\t\t\t\t\t\"https://www.framer.com/help/articles/understanding-and-fixing-the-svgs-with-large-images-inside-are-not-supported-error/\",\n\t\t\t\t)\n\t\t\t},\n\t\t},\n\t})\n\n\treturn true\n}\n", "import type { CanvasTree } from \"../../index.ts\"\nimport type { IsReplica, ReplicaNodeOverrides, ReplicaOverrides } from \"../../traits/WithTemplate.ts\"\nimport type { CanvasNode } from \"../CanvasNode.ts\"\nimport type { NodeID } from \"../NodeID.ts\"\n\n// @TODO: we can probably just merge these two helpers.\ntype NonDeletedReplicaNodeOverrides = Exclude<ReplicaNodeOverrides, \"_deleted\"> & { _deleted?: never }\nexport function updateReplicaNodeOverrides(\n\ttree: CanvasTree,\n\treplica: CanvasNode & IsReplica,\n\toriginalId: NodeID,\n\tnewOverrides: NonDeletedReplicaNodeOverrides,\n) {\n\tconst replicaInfo = { ...replica.draftOrCurrent().replicaInfo }\n\tconst overrides = { ...replicaInfo.overrides }\n\treplicaInfo.overrides = overrides\n\t// @TODO: also merge _deleted from the new overrides\n\toverrides[originalId] = {\n\t\t...overrides[originalId],\n\t\t...newOverrides,\n\t}\n\n\treplica.set({ replicaInfo }, tree)\n}\n\n// Zip the new overrides with the existing ones.\nexport function updateReplicaOverrides(\n\ttree: CanvasTree,\n\treplica: CanvasNode & IsReplica,\n\tnewOverrides: ReplicaOverrides,\n) {\n\tconst replicaInfo = { ...replica.draftOrCurrent().replicaInfo }\n\tconst overrides = { ...replicaInfo.overrides }\n\treplicaInfo.overrides = overrides\n\n\tfor (const originalId in newOverrides) {\n\t\toverrides[originalId] = {\n\t\t\t...overrides[originalId],\n\t\t\t...newOverrides[originalId],\n\t\t}\n\t}\n\n\treplica.set({ replicaInfo }, tree)\n}\n", "import { Mixed, isMixed } from \"@framerjs/shared\"\nimport type { CanvasNode, CanvasTree } from \"document/models/CanvasTree/index.ts\"\nimport { isVectorNode } from \"document/models/CanvasTree/index.ts\"\nimport { Rect } from \"library/render/types/Rect.ts\"\nimport { roundedNumber } from \"library/render/utils/roundedNumber.ts\"\nimport { isSlotPropertyNode } from \"../../nodes/utils/nodeCheck.ts\"\nimport { isPinnable } from \"../WithPins.ts\"\nimport type { Reduced } from \"./Reduced.ts\"\nimport { isNotFound } from \"./Reduced.ts\"\n\nexport interface ReducedPosition {\n\tx: Reduced<number>\n\ty: Reduced<number>\n\tright: Reduced<number>\n\tbottom: Reduced<number>\n}\n\nexport function reducePosition(\n\ttree: CanvasTree,\n\tnode: CanvasNode,\n\trect: Rect,\n\tparent: CanvasNode | null,\n\tresult: ReducedPosition,\n) {\n\tif (isSlotPropertyNode(parent)) return\n\n\tconst roundPrecision = isVectorNode(node) ? 2 : 0\n\tconst x = roundedNumber(rect.x, roundPrecision)\n\tconst y = roundedNumber(rect.y, roundPrecision)\n\n\tif (isNotFound(result.x)) {\n\t\tresult.x = x\n\t\tresult.y = y\n\t} else {\n\t\tif (!isMixed(result.x) && result.x !== x) result.x = Mixed\n\t\tif (!isMixed(result.y) && result.y !== y) result.y = Mixed\n\t}\n\n\tif (!isPinnable(node) || !parent) return\n\n\tconst parentSizeInfo = tree.getParentSizeInfo(node)\n\tif (!parentSizeInfo?.positioning) return\n\tconst parentSize = parentSizeInfo.positioning\n\n\tconst right = roundedNumber(parentSize.width - Rect.maxX(rect), roundPrecision)\n\tconst bottom = roundedNumber(parentSize.height - Rect.maxY(rect), roundPrecision)\n\n\tif (isNotFound(result.right)) {\n\t\tresult.right = right\n\t\tresult.bottom = bottom\n\t} else {\n\t\tif (!isMixed(result.right) && result.right !== right) result.right = Mixed\n\t\tif (!isMixed(result.bottom) && result.bottom !== bottom) result.bottom = Mixed\n\t}\n}\n", "export const layoutDefaults = {\n\tpadding: 0,\n\tgridRowCount: 2,\n\tgridColumnCount: 2,\n\tgridRowHeight: 200,\n\tgridColumnWidth: 200,\n\tgridColumnMinWidth: 50,\n}\nObject.freeze(layoutDefaults)\n", "import { isNumber } from \"@framerjs/assets/src/utils.ts\"\nimport type { AnyComponentLoader } from \"@framerjs/framer-runtime\"\nimport { supportsAutoSizing, supportsFixedSizing } from \"@framerjs/framer-runtime/crossorigin\"\nimport { assert } from \"@framerjs/shared\"\nimport { experiments } from \"app/experiments.ts\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport { mobileBreakpointVariantDefault } from \"document/components/utils/breakpointVariantDefaults.ts\"\nimport type { CanvasNode, CanvasTree, NodeID } from \"document/models/CanvasTree/index.ts\"\nimport type { GridComponentNode, StackComponentNode } from \"document/models/CanvasTree/nodes/FrameNode.ts\"\nimport FrameNode from \"document/models/CanvasTree/nodes/FrameNode.ts\"\nimport {\n\tisCodeComponentNode,\n\tisFrameNode,\n\tisGridComponent,\n\tisLayoutTemplateNode,\n\tisRichTextNode,\n\tisSlotPropertyNode,\n\tisStackComponent,\n\tisStackOrGridComponent,\n\tisTextNode,\n\tisWebPageNode,\n} from \"document/models/CanvasTree/nodes/utils/nodeCheck.ts\"\nimport { updateReplicaOverrides } from \"document/models/CanvasTree/nodes/utils/updateReplicaOverrides.ts\"\nimport type { DynamicValue, NonDynamicValueRecord } from \"document/models/CanvasTree/traits/DynamicValue.ts\"\nimport { withAutoSize } from \"document/models/CanvasTree/traits/WithAutoSize.ts\"\nimport { hasImageFill } from \"document/models/CanvasTree/traits/WithFill.ts\"\nimport { hasFloatingPosition } from \"document/models/CanvasTree/traits/WithFloatingPosition.ts\"\nimport type { WithGridItemLayout } from \"document/models/CanvasTree/traits/WithGridItemLayout.ts\"\nimport type { WithGridItemSize } from \"document/models/CanvasTree/traits/WithGridItemSize.ts\"\nimport type { HasGridLayout, HasStackLayout, WithLayout } from \"document/models/CanvasTree/traits/WithLayout.ts\"\nimport { columnMasonryGridType, hasStackLayout, withLayout } from \"document/models/CanvasTree/traits/WithLayout.ts\"\nimport { isBreakpointWithLayoutTemplate } from \"document/models/CanvasTree/traits/WithLayoutTemplate.ts\"\nimport type { WithPadding } from \"document/models/CanvasTree/traits/WithPadding.ts\"\nimport { isPinnable } from \"document/models/CanvasTree/traits/WithPins.ts\"\nimport { withSize } from \"document/models/CanvasTree/traits/WithSize.ts\"\nimport { supportsSizeConstraints } from \"document/models/CanvasTree/traits/WithSizeConstraints.ts\"\nimport { withSizeDimensionType } from \"document/models/CanvasTree/traits/WithSizeDimensionType.ts\"\nimport type { ReplicaOverrides } from \"document/models/CanvasTree/traits/WithTemplate.ts\"\nimport { isReplica, isReplicaChild } from \"document/models/CanvasTree/traits/WithTemplate.ts\"\nimport { withTextFit } from \"document/models/CanvasTree/traits/WithTextFit.ts\"\nimport {\n\tisBreakpointVariant,\n\tisPrimaryVariant,\n\tisReplicaVariantOrReplicaVariantChild,\n} from \"document/models/CanvasTree/traits/WithVariant.ts\"\nimport { withFormInput } from \"document/models/CanvasTree/traits/forms/WithFormInput.ts\"\nimport { NotFound } from \"document/models/CanvasTree/traits/utils/Reduced.ts\"\nimport { isPositionRelative } from \"document/models/CanvasTree/traits/utils/positionTypeHelpers.ts\"\nimport type { ReducedPosition } from \"document/models/CanvasTree/traits/utils/reducePosition.ts\"\nimport { reducePosition } from \"document/models/CanvasTree/traits/utils/reducePosition.ts\"\nimport { supportsViewportSizing } from \"document/models/CanvasTree/traits/utils/viewportHelpers.ts\"\nimport { Tools } from \"document/stores/ToolEnum.ts\"\nimport type { Rect, Size } from \"library/index.ts\"\nimport { DimensionType } from \"library/index.ts\"\nimport { isAutoDimensionType } from \"library/render/types/Constraints.ts\"\nimport { isObject, isString, isUndefined } from \"utils/typeChecks.ts\"\nimport { record } from \"web/lib/tracker.ts\"\nimport { layoutDefaults } from \"./LayoutDefaults.ts\"\n\nenum DefaultLayout {\n\tRows,\n\tColumns,\n\tGrid,\n\tGridRow,\n\tGridSpan,\n\tStack,\n}\n\nexport function toolToDefaultLayout(\n\ttool:\n\t\t| Tools.CreateRows\n\t\t| Tools.CreateColumns\n\t\t| Tools.CreateGrid\n\t\t| Tools.CreateMasonry\n\t\t| Tools.CreateGridSpan\n\t\t| Tools.CreateGridRow\n\t\t| Tools.CreateStack,\n): DefaultLayout {\n\tswitch (tool) {\n\t\tcase Tools.CreateRows:\n\t\t\treturn DefaultLayout.Rows\n\t\tcase Tools.CreateColumns:\n\t\t\treturn DefaultLayout.Columns\n\t\tcase Tools.CreateGridSpan:\n\t\t\treturn DefaultLayout.GridSpan\n\t\tcase Tools.CreateGridRow:\n\t\t\treturn DefaultLayout.GridRow\n\t\tcase Tools.CreateGrid:\n\t\tcase Tools.CreateMasonry:\n\t\t\treturn DefaultLayout.Grid\n\t\tcase Tools.CreateStack:\n\t\t\treturn DefaultLayout.Stack\n\t}\n}\n\nconst defaultGap = 10\nexport const getStackLayoutPreset = (\n\tdirection: \"horizontal\" | \"vertical\" = \"horizontal\",\n\twithPadding: boolean = true,\n\tengine?: VekterEngine,\n): HasStackLayout & WithPadding => {\n\tconst gap = engine?.stores.persistedUserDefaults.layoutGap ?? defaultGap\n\treturn {\n\t\tlayout: \"stack\",\n\t\tstackDirection: direction,\n\t\tstackDistribution: \"start\",\n\t\tstackAlignment: \"center\",\n\t\tgap,\n\t\tstackWrapEnabled: false,\n\t\tpaddingPerSide: false,\n\t\tpadding: withPadding ? gap : layoutDefaults.padding,\n\t\tpaddingTop: layoutDefaults.padding,\n\t\tpaddingBottom: layoutDefaults.padding,\n\t\tpaddingLeft: layoutDefaults.padding,\n\t\tpaddingRight: layoutDefaults.padding,\n\t}\n}\n\nconst gridCellLayout: WithGridItemLayout & WithGridItemSize = {\n\tgridItemFillCellWidth: true,\n\tgridItemFillCellHeight: true,\n\tgridItemHorizontalAlignment: \"center\",\n\tgridItemVerticalAlignment: \"center\",\n\tgridItemColumnSpan: 1,\n\tgridItemRowSpan: 1,\n}\n\nconst getGridLayoutPreset = (engine?: VekterEngine): HasGridLayout & WithPadding => {\n\treturn {\n\t\tlayout: \"grid\",\n\t\tgridColumnCount: layoutDefaults.gridColumnCount,\n\t\tgridAlignment: \"center\",\n\t\tgridColumnWidthType: \"minmax\",\n\t\tgridColumnWidth: layoutDefaults.gridColumnWidth,\n\t\tgridColumnMinWidth: 50,\n\t\tgridRowHeightType: \"auto\",\n\t\tgridRowCount: layoutDefaults.gridRowCount,\n\t\tgridRowHeight: layoutDefaults.gridRowHeight,\n\t\tgridType: undefined,\n\t\tgap: engine?.stores.persistedUserDefaults.layoutGap ?? defaultGap,\n\t\tpaddingPerSide: false,\n\t\tpadding: layoutDefaults.padding,\n\t\tpaddingTop: layoutDefaults.padding,\n\t\tpaddingBottom: layoutDefaults.padding,\n\t\tpaddingLeft: layoutDefaults.padding,\n\t\tpaddingRight: layoutDefaults.padding,\n\t}\n}\n\nconst allPlaceholderFrameColors = new Set([\"#BDF\", \"#CEF\", \"#9DF\"])\nconst agentDefaultLayoutPlaceholderColor = \"#BDF\"\n\nfunction getFirstTwoUniquePlaceholderColors(parentColor: string | undefined | null): string[] {\n\tconst result = Array.from(allPlaceholderFrameColors).filter(color => color !== parentColor)\n\tresult.length = 2\n\treturn result\n}\n\nconst createPlaceholderFrame = (\n\tstackOrGridParent: StackComponentNode | GridComponentNode,\n\tproperties: Partial<FrameNode> = {},\n\toptions: {\n\t\tindex?: number\n\t\tlastColor?: string | DynamicValue\n\t\tparentColor?: string | null\n\t\tsource?: \"canvas_grid_plus\" | \"canvas_stack_plus\"\n\t} = {},\n) => {\n\tconst { index = 0, lastColor, parentColor, source } = options\n\n\tlet fillColor = agentDefaultLayoutPlaceholderColor\n\tif (experiments.isOn(\"agent\")) {\n\t\treturn createPlaceholderFrameNode(stackOrGridParent, properties, fillColor, source)\n\t}\n\n\tconst uniqueFillColors = getFirstTwoUniquePlaceholderColors(parentColor)\n\tconst uniqueFillColorCount = uniqueFillColors.length\n\tfillColor = uniqueFillColors[0] ?? fillColor\n\n\tif (index > 0) {\n\t\t// Each row in our presets has two columns, and we alternate the colors on\n\t\t// even/odd rows (specifically for stack wrap & grids).\n\t\tfillColor = uniqueFillColors[Math.ceil(index / uniqueFillColorCount) % uniqueFillColorCount] ?? fillColor\n\t} else if (isString(lastColor)) {\n\t\tif (allPlaceholderFrameColors.has(lastColor)) {\n\t\t\t// If we are adding to a stack with placeholders, alternate the fill\n\t\t\t// colors to differentiate cells.\n\t\t\tconst nextIndex = (uniqueFillColors.indexOf(lastColor) + 1) % uniqueFillColorCount\n\t\t\tfillColor = uniqueFillColors[nextIndex] ?? fillColor\n\t\t} else {\n\t\t\tfillColor = lastColor\n\t\t}\n\t}\n\n\treturn createPlaceholderFrameNode(stackOrGridParent, properties, fillColor, source)\n}\n\nfunction createPlaceholderFrameNode(\n\tstackOrGridParent: StackComponentNode | GridComponentNode,\n\tproperties: Partial<FrameNode>,\n\tfillColor: string | DynamicValue,\n\tsource?: \"canvas_grid_plus\" | \"canvas_stack_plus\",\n) {\n\tif (source) record(\"layout_frame\", { source })\n\n\tconst frameOptions: Partial<FrameNode> = {\n\t\tfillEnabled: true,\n\t\tfillColor,\n\t}\n\n\tif (isStackComponent(stackOrGridParent) && !stackOrGridParent.stackWrapEnabled) {\n\t\tif (stackOrGridParent.widthType !== DimensionType.Auto) {\n\t\t\tframeOptions.width = 1\n\t\t\tframeOptions.widthType = DimensionType.FractionOfFreeSpace\n\t\t}\n\t\tif (stackOrGridParent.heightType !== DimensionType.Auto) {\n\t\t\tframeOptions.height = 1\n\t\t\tframeOptions.heightType = DimensionType.FractionOfFreeSpace\n\t\t}\n\t}\n\n\tObject.assign(frameOptions, properties)\n\n\treturn new FrameNode(frameOptions)\n}\n\nexport const collectDefaultLayoutProperties = (\n\tlayout: DefaultLayout,\n\tproperties: Partial<NonDynamicValueRecord<FrameNode>>,\n) => {\n\tswitch (layout) {\n\t\tcase DefaultLayout.Rows:\n\t\tcase DefaultLayout.Columns: {\n\t\t\tproperties.layout = \"stack\"\n\t\t\tproperties.stackDirection = layout === DefaultLayout.Rows ? \"vertical\" : \"horizontal\"\n\t\t\tbreak\n\t\t}\n\t\tcase DefaultLayout.Grid:\n\t\tcase DefaultLayout.GridRow:\n\t\tcase DefaultLayout.GridSpan:\n\t\t\tproperties.overflow = \"clip\"\n\t\t\tbreak\n\t}\n}\n\nconst createStackWithPlaceholderFrames = (\n\tengine: VekterEngine,\n\tproperties: Partial<FrameNode>,\n\tdirection: \"horizontal\" | \"vertical\",\n\tframeCount: number,\n\twithPadding?: boolean,\n\tfixedSize?: Size,\n) => {\n\tconst stack = new FrameNode({\n\t\t...getStackLayoutPreset(direction, withPadding, engine),\n\t\tfillEnabled: false,\n\t\t...properties,\n\t})\n\tassert(isStackComponent(stack))\n\tconst frameProperties = fixedSize\n\t\t? {\n\t\t\t\twidthType: DimensionType.FixedNumber,\n\t\t\t\twidth: fixedSize.width,\n\t\t\t\theightType: DimensionType.FixedNumber,\n\t\t\t\theight: fixedSize.height,\n\t\t\t}\n\t\t: undefined\n\tfor (let i = 0; i < frameCount; i++) {\n\t\tconst frame = createPlaceholderFrame(stack, frameProperties, { index: i })\n\t\tstack.addChild(frame)\n\t}\n\n\treturn stack\n}\n\nconst getMasonryChildHeights = (\n\tisMasonry: boolean,\n\tparentHeight: number | undefined,\n\tgap: number | undefined,\n): { smallHeight: number; tallHeight: number } | undefined => {\n\tif (!isMasonry || !isNumber(parentHeight)) return undefined\n\tconst parentGap = isNumber(gap) ? gap : 0\n\tconst usableHeight = parentHeight - parentGap\n\tconst smallHeight = Math.floor(usableHeight / 3)\n\tconst tallHeight = parentHeight - parentGap - smallHeight\n\treturn { smallHeight, tallHeight }\n}\n\nconst createGridWithPlaceholderFrames = (\n\tengine: VekterEngine,\n\tproperties: Partial<FrameNode>,\n\tframeCount: number,\n\tlayout?: DefaultLayout.GridRow | DefaultLayout.GridSpan,\n) => {\n\tconst grid = new FrameNode({\n\t\t...getGridLayoutPreset(engine),\n\t\tfillEnabled: false,\n\t\t...properties,\n\t})\n\tassert(isGridComponent(grid))\n\n\t// Masonry grids generally prefer auto height for masonry grid parents, so that it can grow with children.\n\t// We can calculate the appropriate child heights based on the initially drawn rectangle.\n\tconst isMasonry = properties.gridType === columnMasonryGridType\n\tconst masonryHeights = getMasonryChildHeights(\n\t\tisMasonry,\n\t\tisNumber(properties.height) ? properties.height : undefined,\n\t\tisNumber(grid.gap) ? grid.gap : undefined,\n\t)\n\n\tfor (let i = 0; i < frameCount; i++) {\n\t\tconst additionalCellProperties: Partial<WithGridItemLayout> = {}\n\n\t\tif (masonryHeights) {\n\t\t\tconst isTall = i === 0 || i === frameCount - 1\n\t\t\tconst heightToUse = isTall ? masonryHeights.tallHeight : masonryHeights.smallHeight\n\t\t\t// TODO: Also clean/prepare width related grid item properties when moving into a masonry grid\n\t\t\tObject.assign(additionalCellProperties, {\n\t\t\t\theightType: DimensionType.FixedNumber,\n\t\t\t\theight: heightToUse,\n\t\t\t\tgridItemFillCellHeight: undefined,\n\t\t\t})\n\t\t} else {\n\t\t\tswitch (layout) {\n\t\t\t\tcase DefaultLayout.GridRow:\n\t\t\t\t\tif (i === 0) additionalCellProperties.gridItemRowSpan = 2\n\t\t\t\t\tbreak\n\t\t\t\tcase DefaultLayout.GridSpan:\n\t\t\t\t\tif (i + 1 === frameCount) additionalCellProperties.gridItemColumnSpan = 2\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tconst frame = createPlaceholderFrame(grid, { ...gridCellLayout, ...additionalCellProperties }, { index: i })\n\t\tgrid.addChild(frame)\n\t}\n\n\t// When masonry, set parent height to auto so that it can grow with children\n\tif (isMasonry) grid.heightType = DimensionType.Auto\n\n\treturn grid\n}\n\nexport const createLayoutWithPlaceHolderFrames = (\n\tengine: VekterEngine,\n\tlayout: DefaultLayout,\n\tproperties: Partial<NonDynamicValueRecord<FrameNode>>,\n\tskipPlaceholders: boolean = false,\n) => {\n\tif (layout === DefaultLayout.Grid) {\n\t\treturn createGridWithPlaceholderFrames(engine, properties, skipPlaceholders ? 0 : 4)\n\t} else if (layout === DefaultLayout.GridRow || layout === DefaultLayout.GridSpan) {\n\t\treturn createGridWithPlaceholderFrames(engine, properties, skipPlaceholders ? 0 : 3, layout)\n\t}\n\n\t// todo rows cols\n\tconst frameCount = skipPlaceholders ? 0 : 2\n\treturn createStackWithPlaceholderFrames(\n\t\tengine,\n\t\tproperties,\n\t\tproperties.stackDirection ?? \"horizontal\",\n\t\tframeCount,\n\t\tfalse,\n\t)\n}\n\nconst mobileBreakpointWidth = mobileBreakpointVariantDefault.width\n\nconst collectResponsivePinningUpdates = (\n\ttree: CanvasTree,\n\tnode: CanvasNode,\n\trect: Rect,\n\tcurrentBreakpoint: CanvasNode,\n\tnewBreakpointWidth: number,\n\tupdates: Partial<FrameNode>,\n) => {\n\t// We try to see if the original node size applied on the replica\n\t// breakpoint would result in a reasonable width for the node, if no,\n\t// pin it to the edges.\n\tconst reducedPosition: ReducedPosition = { x: NotFound, y: NotFound, right: NotFound, bottom: NotFound }\n\treducePosition(tree, node, rect, currentBreakpoint, reducedPosition)\n\n\tif (\n\t\tisNumber(reducedPosition.x) &&\n\t\tisNumber(reducedPosition.right) &&\n\t\tnewBreakpointWidth - reducedPosition.x - reducedPosition.right < 200\n\t) {\n\t\tupdates.left = 0\n\t\tupdates.right = 0\n\t}\n}\n\nconst collectResponsiveStackUpdates = (stack: CanvasNode & WithLayout, updates: Partial<FrameNode>) => {\n\tif (stack.stackDirection === \"horizontal\" && !stack.stackWrapEnabled) {\n\t\tupdates.stackDirection = \"vertical\"\n\t}\n\n\tif (stack.stackWrapEnabled && stack.stackDistribution === \"start\") {\n\t\tupdates.stackDistribution = \"center\"\n\t}\n}\n\nconst getWrapItemsUpdates = (stack: CanvasNode & WithLayout): Record<NodeID, Partial<FrameNode>> => {\n\tconst result: Record<NodeID, Partial<FrameNode>> = {}\n\tstack.children?.forEach(child => {\n\t\tif (!supportsSizeConstraints(child)) return\n\t\tconst id = child.getPrimaryId()\n\t\tresult[id] = { maxWidth: \"100%\" }\n\t})\n\treturn result\n}\n\nconst collectResponsiveGridUpdates = (grid: CanvasNode & WithLayout, updates: Partial<FrameNode>) => {\n\tif (isNumber(grid.gridColumnCount)) {\n\t\tupdates.gridColumnCount = 1\n\t}\n}\n\nconst collectResponsiveLayoutUpdates = (\n\ttree: CanvasTree,\n\tnode: CanvasNode & WithLayout,\n\trect: Rect,\n\tcurrentBreakpoint: CanvasNode,\n\tnewBreakpointWidth: number,\n\tupdates: Partial<FrameNode>,\n) => {\n\tcollectResponsivePinningUpdates(tree, node, rect, currentBreakpoint, newBreakpointWidth, updates)\n\n\tif (newBreakpointWidth > mobileBreakpointWidth) return\n\n\tif (isStackComponent(node)) {\n\t\tcollectResponsiveStackUpdates(node, updates)\n\t}\n\n\tif (isGridComponent(node)) {\n\t\tcollectResponsiveGridUpdates(node, updates)\n\t}\n}\n\nexport const collectResponsiveOverrides = (\n\ttree: CanvasTree,\n\tstackOrGrid: CanvasNode & WithLayout,\n\trect: Rect,\n\tcurrentBreakpoint: CanvasNode,\n\tnewBreakpointWidth: number,\n\toverrides: ReplicaOverrides,\n) => {\n\tconst originalStackOrGridId = stackOrGrid.getPrimaryId()\n\tconst updates = {}\n\tcollectResponsiveLayoutUpdates(tree, stackOrGrid, rect, currentBreakpoint, newBreakpointWidth, updates)\n\toverrides[originalStackOrGridId] = updates\n\n\tconst isWrapStack = hasStackLayout(stackOrGrid) && stackOrGrid.stackWrapEnabled\n\tif (isWrapStack && newBreakpointWidth <= mobileBreakpointWidth) {\n\t\tconst wrapItemsUpdates = getWrapItemsUpdates(stackOrGrid)\n\t\tfor (const nodeId in wrapItemsUpdates) {\n\t\t\toverrides[nodeId] = { ...overrides[nodeId], ...wrapItemsUpdates[nodeId] }\n\t\t}\n\t}\n}\n\n// When creating a new stack/grid in a primary breakpoint, guess the responsive\n// layout overrides for the stack/grid in replica breakpoints.\nexport function guessStackOrGridResponsiveLayout(\n\tengine: VekterEngine,\n\toriginalStackOrGridId: NodeID,\n\tcurrentBreakpointId: NodeID,\n) {\n\tconst originalStackOrGrid = engine.tree.getNode(originalStackOrGridId)\n\tif (!originalStackOrGrid || !isStackOrGridComponent(originalStackOrGrid)) return\n\n\t// Only convert the stack when drawing in a primary breakpoint\n\tconst currentBreakpoint = engine.tree.getNode(currentBreakpointId)\n\tif (!currentBreakpoint || !isPrimaryVariant(currentBreakpoint) || !isBreakpointVariant(currentBreakpoint)) return\n\n\tconst webpage = engine.tree.getScopeNodeFor(currentBreakpoint)\n\tif (!webpage || !isWebPageNode(webpage)) return\n\n\tconst rect = engine.tree.getRect(originalStackOrGrid)\n\tconst breakpoints = webpage.getBreakpointValues()\n\n\tfor (const breakpointId in breakpoints) {\n\t\tif (breakpointId === currentBreakpointId) continue\n\t\tconst replicaBreakpoint = engine.tree.getNode(breakpointId)\n\t\tif (!replicaBreakpoint || !isReplica(replicaBreakpoint)) continue\n\t\tif (!withSize(replicaBreakpoint)) continue\n\t\tconst overrides = {}\n\t\tcollectResponsiveOverrides(\n\t\t\tengine.tree,\n\t\t\toriginalStackOrGrid,\n\t\t\trect,\n\t\t\tcurrentBreakpoint,\n\t\t\treplicaBreakpoint.width,\n\t\t\toverrides,\n\t\t)\n\n\t\tupdateReplicaOverrides(engine.tree, replicaBreakpoint, overrides)\n\t}\n}\n\ntype DimensionTypesEnabled = Record<DimensionType, boolean>\n\ninterface DimensionTypesEnabledByDimension {\n\twidth: DimensionTypesEnabled\n\theight: DimensionTypesEnabled\n}\n\nexport function checkDimensionEnabled(\n\ttree: CanvasTree,\n\tcomponentLoader: AnyComponentLoader,\n\tnode: CanvasNode,\n\tparent: CanvasNode | null = tree.getParent(node.id),\n) {\n\tconst result: DimensionTypesEnabledByDimension = {\n\t\twidth: {\n\t\t\t[DimensionType.Auto]: true,\n\t\t\t[DimensionType.FixedNumber]: true,\n\t\t\t[DimensionType.FractionOfFreeSpace]: true,\n\t\t\t[DimensionType.Percentage]: true,\n\t\t\t[DimensionType.Viewport]: true,\n\t\t\t[DimensionType.FitImage]: true,\n\t\t},\n\t\theight: {\n\t\t\t[DimensionType.Auto]: true,\n\t\t\t[DimensionType.FixedNumber]: true,\n\t\t\t[DimensionType.FractionOfFreeSpace]: true,\n\t\t\t[DimensionType.Percentage]: true,\n\t\t\t[DimensionType.Viewport]: true,\n\t\t\t[DimensionType.FitImage]: true,\n\t\t},\n\t}\n\n\tif (!parent || !isPinnable(node) || (withAutoSize(node) && node.autoSize === true) || hasFloatingPosition(node)) {\n\t\tresult.width[DimensionType.Percentage] = false\n\t\tresult.height[DimensionType.Percentage] = false\n\t\tresult.width[DimensionType.FractionOfFreeSpace] = false\n\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\t// We do not support viewport on the ground node yet.\n\t\tresult.width[DimensionType.Viewport] = false\n\t\tresult.height[DimensionType.Viewport] = false\n\t} else if (isGridComponent(parent)) {\n\t\tif (!isPositionRelative(node, parent)) {\n\t\t\tresult.width[DimensionType.FractionOfFreeSpace] = false\n\t\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\t} else {\n\t\t\tresult.width[DimensionType.FractionOfFreeSpace] = true\n\t\t\t// Determines if Height: Fill can be selected for grid items\n\t\t\tresult.height[DimensionType.FractionOfFreeSpace] =\n\t\t\t\t(experiments.isOn(\"gridBentoFit\") || parent.gridRowHeightType !== \"fit\") &&\n\t\t\t\tparent.gridType !== columnMasonryGridType\n\t\t}\n\t} else if (isStackComponent(parent)) {\n\t\tif (!isPositionRelative(node, parent)) {\n\t\t\tresult.width[DimensionType.FractionOfFreeSpace] = false\n\t\t}\n\t\tif (!isPositionRelative(node, parent)) {\n\t\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\t}\n\t} else {\n\t\tresult.width[DimensionType.FractionOfFreeSpace] = false\n\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t}\n\n\tif (withTextFit(node) && isObject(node.textFitViewBoxSize)) {\n\t\tresult.height[DimensionType.Auto] = true\n\t\tresult.width[DimensionType.Auto] = false\n\t\tresult.height[DimensionType.FixedNumber] = false\n\t\tresult.height[DimensionType.Percentage] = false\n\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\tresult.height[DimensionType.Viewport] = false\n\t}\n\n\tif (!hasImageFill(node) || isBreakpointVariant(node)) {\n\t\tresult.width[DimensionType.FitImage] = false\n\t\tresult.height[DimensionType.FitImage] = false\n\t}\n\n\tconst isCodeComponent = isCodeComponentNode(node)\n\n\tif (isCodeComponent) {\n\t\tconst supportedLayout = node.getSupportedLayout(componentLoader)\n\t\tif (!supportsAutoSizing(supportedLayout.width)) {\n\t\t\tresult.width[DimensionType.Auto] = false\n\t\t}\n\t\tif (!supportsAutoSizing(supportedLayout.height)) {\n\t\t\tresult.height[DimensionType.Auto] = false\n\t\t}\n\t\tif (!supportsFixedSizing(supportedLayout.width)) {\n\t\t\tresult.width[DimensionType.FixedNumber] = false\n\t\t\tresult.width[DimensionType.Percentage] = false\n\t\t\tresult.width[DimensionType.FractionOfFreeSpace] = false\n\t\t\tresult.width[DimensionType.Viewport] = false\n\t\t}\n\t\tif (!supportsFixedSizing(supportedLayout.height)) {\n\t\t\tresult.height[DimensionType.FixedNumber] = false\n\t\t\tresult.height[DimensionType.Percentage] = false\n\t\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\t\tresult.height[DimensionType.Viewport] = false\n\t\t}\n\t} else if (isFrameNode(node)) {\n\t\tif (isBreakpointVariant(node)) {\n\t\t\tresult.width[DimensionType.Auto] = false\n\n\t\t\t// Web Page breakpoints with Layout Templates can only be auto height.\n\t\t\tif (isBreakpointWithLayoutTemplate(node)) {\n\t\t\t\tresult.height[DimensionType.FixedNumber] = false\n\t\t\t\tresult.height[DimensionType.Percentage] = false\n\t\t\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\t\t\tresult.height[DimensionType.Viewport] = false\n\t\t\t}\n\n\t\t\t// tree.getParent returns null if the parent is a scope node.\n\t\t\tconst scope = tree.get(node.parentid)\n\t\t\tif (isLayoutTemplateNode(scope)) {\n\t\t\t\tresult.height[DimensionType.Auto] = false\n\t\t\t}\n\t\t}\n\n\t\tif (node.children.length === 0) {\n\t\t\tresult.width[DimensionType.Auto] = false\n\t\t\tresult.height[DimensionType.Auto] = false\n\t\t}\n\t} else if (!(isFrameNode(node) || isTextNode(node) || isRichTextNode(node))) {\n\t\tresult.width[DimensionType.Auto] = false\n\n\t\tif (!withFormInput(node)) {\n\t\t\tresult.height[DimensionType.Auto] = false\n\t\t}\n\t}\n\n\tif (\n\t\twithLayout(node) &&\n\t\tisUndefined(node.layout) &&\n\t\tisReplicaChild(node) &&\n\t\t!isReplicaVariantOrReplicaVariantChild(node)\n\t) {\n\t\tresult.width[DimensionType.Auto] = false\n\t\tresult.height[DimensionType.Auto] = false\n\t}\n\n\tif (!supportsViewportSizing(tree, node)) {\n\t\tresult.width[DimensionType.Viewport] = false\n\t\tresult.height[DimensionType.Viewport] = false\n\t}\n\n\tif (\n\t\t(isBreakpointVariant(parent) && withSizeDimensionType(parent) && isAutoDimensionType(parent.heightType)) ||\n\t\tisBreakpointWithLayoutTemplate(parent)\n\t) {\n\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\tresult.height[DimensionType.Percentage] = false\n\t}\n\n\tif (isSlotPropertyNode(parent)) {\n\t\tresult.width[DimensionType.FractionOfFreeSpace] = false\n\t\tresult.width[DimensionType.Percentage] = false\n\t\tresult.height[DimensionType.FractionOfFreeSpace] = false\n\t\tresult.height[DimensionType.Percentage] = false\n\t}\n\n\treturn result\n}\n", "export function AgentIconicIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n\t\t\t\t<path\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\td=\"M13.5 5.5h13a8 8 0 0 1 8 8v13a8 8 0 0 1-8 8h-13a8 8 0 0 1-8-8v-13a8 8 0 0 1 8-8\"\n\t\t\t\t/>\n\t\t\t\t<path strokeWidth=\"3\" d=\"M11.5 21.5s2.5 5 8.5 5 8.5-5 8.5-5\" />\n\t\t\t\t<path strokeWidth=\"2\" d=\"M17 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0M25 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0\" />\n\t\t\t</g>\n\t\t</svg>\n\t)\n}\n\nexport function AgentPhosphorIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\td=\"M11.686 10.605a1.25 1.25 0 0 0-2.372 0l-6.25 18.75A1.25 1.25 0 0 0 4.25 31h12.5a1.25 1.25 0 0 0 1.186-1.645ZM5.984 28.5 10.5 14.953 15.016 28.5ZM33 12.875A8.125 8.125 0 1 0 24.875 21 8.134 8.134 0 0 0 33 12.875m-13.75 0a5.624 5.624 0 1 1 11.25 0 5.624 5.624 0 1 1-11.25 0M35.269 23.5H21.731c-.68 0-1.231.572-1.231 1.278v8.944c0 .706.551 1.278 1.231 1.278h13.538c.68 0 1.231-.572 1.231-1.278v-8.944c0-.706-.551-1.278-1.231-1.278m-1.23 8.944H22.962v-6.388h11.077Z\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentHeroIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\td=\"M27.5 20a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0m0 0c0 2.762 1.678 5 3.75 5S35 22.762 35 20a15 15 0 1 0-4.393 10.607M27.5 20v-6.25\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentFeatherIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\td=\"M 32.362 20.366 C 35.879 16.851 35.879 11.152 32.362 7.636 C 28.845 4.121 23.143 4.121 19.626 7.636 L 9.5 17.757 L 9.5 30.502 L 22.251 30.502 Z M 26.002 14.009 L 5 35 M 28.252 24.504 L 15.501 24.504\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentMeteorIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2.5\">\n\t\t\t\t<path d=\"M6 20.25h28M20 5.75c-7.385 8.256-7.385 20.744 0 29 7.385-8.256 7.385-20.744 0-29\" />\n\t\t\t\t<path d=\"M5.5 20.25c0-8.008 6.492-14.5 14.5-14.5s14.5 6.492 14.5 14.5-6.492 14.5-14.5 14.5-14.5-6.492-14.5-14.5\" />\n\t\t\t</g>\n\t\t</svg>\n\t)\n}\n\nexport function AgentMaterialIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\td=\"M20 4C11.166 4 4 11.166 4 20s7.166 16 16 16 16-7.166 16-16S28.834 4 20 4m0 28.794c-7.054 0-12.794-5.74-12.794-12.794S12.946 7.206 20 7.206 32.794 12.946 32.794 20 27.054 32.794 20 32.794m1.202-24.016-7.214 13.627h5.034v8.817l6.99-13.627h-4.81Z\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentBasiconsIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\td=\"M30.359 10.548c4.014-1.443 6.862-1.762 7.506-.607 1.208 2.167-5.811 8.707-15.676 14.605-9.867 5.899-18.845 8.924-20.054 6.757-.641-1.151 1.038-3.535 4.229-6.4M19.616 34.5c-7.734 0-14.003-6.492-14.003-14.5S11.882 5.5 19.616 5.5c7.733 0 14.002 6.492 14.002 14.5s-6.269 14.5-14.002 14.5\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentFlowbiteIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\td=\"M12 12v16m0-16a4 4 0 1 0 0-8 4 4 0 0 0 0 8m0 16a4 4 0 1 0 0 8 4 4 0 0 0 0-8m12-4a4 4 0 1 1 8 0 4 4 0 0 1-8 0m0 0h-2c-5.523 0-10-4.477-10-10v-1\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentNoniconsIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\td=\"M18.226 1.67a1.592 1.592 0 0 1 0 2.266c-1.717 1.707-2.866 5.158-3.234 8.87-.179 1.805-.159 3.566.032 5.046q.082.63.196 1.151l10.705-10.63a1.62 1.62 0 0 1 2.281 0 1.59 1.59 0 0 1 0 2.266l-12.448 12.36a1.62 1.62 0 0 1-2.474-.228c-.797-1.158-1.24-2.808-1.459-4.512a25.8 25.8 0 0 1-.043-5.767q.072-.745.189-1.506a26 26 0 0 0-2.031 3.279c-1.023 2.005-1.593 3.972-1.507 5.821.084 1.796.79 3.613 2.565 5.375a1.59 1.59 0 0 1 .394 1.622l-.839 2.595 2.612-.834a1.61 1.61 0 0 1 1.636.391c1.9 1.889 3.787 2.638 5.594 2.746 1.851.107 3.792-.448 5.765-1.472 1.16-.602 2.29-1.345 3.374-2.156q-.833.132-1.672.215a25.4 25.4 0 0 1-5.795-.058c-1.73-.237-3.397-.704-4.592-1.526a1.598 1.598 0 0 1-.224-2.448L29.73 12.15a1.62 1.62 0 0 1 2.281 0 1.59 1.59 0 0 1 0 2.263L21.243 25.108q.569.135 1.263.23c1.485.203 3.239.224 5.035.045 3.68-.365 7.132-1.532 8.903-3.288l.002-.004a1.62 1.62 0 0 1 2.281 0 1.59 1.59 0 0 1 0 2.266l-.439.439c-2.548 2.537-6.363 6.337-10.63 8.553-2.288 1.188-4.82 1.987-7.452 1.832-2.406-.142-4.76-1.076-6.955-2.996l-4.699 1.502a1.62 1.62 0 0 1-1.636-.393 1.6 1.6 0 0 1-.396-1.623l1.513-4.669c-1.844-2.109-2.713-4.409-2.821-6.77-.12-2.587.676-5.115 1.848-7.413 2.329-4.56 6.363-8.644 8.883-11.144V1.67a1.62 1.62 0 0 1 2.283 0\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentSargamIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\td=\"M 14 21.5 L 18.5 26 L 26 15.5 M 35 20 C 35 28.284 28.285 35 20 35 C 11.715 35 5 28.284 5 20 C 5 11.716 11.715 5 20 5 C 28.285 5 35 11.716 35 20\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n\nexport function AgentLucideIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"3\">\n\t\t\t\t<path d=\"M15 20a5 5 0 1 1 10.001.001A5 5 0 0 1 15 20\" />\n\t\t\t\t<path d=\"M20 27.5a7.5 7.5 0 1 1-7.5-7.5 7.5 7.5 0 1 1 7.5-7.5 7.5 7.5 0 1 1 7.5 7.5 7.5 7.5 0 1 1-7.5 7.5M20 12.5V15M12.5 20H15M27.5 20H25M20 27.5V25M13.333 13.333l3.134 3.134M23.533 16.467l3.134-3.134M13.333 26.667l3.134-3.134M23.533 23.533l3.134 3.134\" />\n\t\t\t</g>\n\t\t</svg>\n\t)\n}\n\nexport function AgentMageIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" fill=\"none\" aria-hidden role=\"presentation\">\n\t\t\t<path\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeMiterlimit=\"10\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\td=\"M14.73 35A9.73 9.73 0 0 1 5 25.27V14.73A9.73 9.73 0 0 1 14.73 5h10.54A9.73 9.73 0 0 1 35 14.73v10.54A9.73 9.73 0 0 1 25.27 35Z\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\td=\"m19.522 10.381-1.034 3.079a7.87 7.87 0 0 1-5.013 5.018l-3.115 1.035a.524.524 0 0 0 0 .995l3.115 1.035a7.85 7.85 0 0 1 4.974 4.979l1.034 3.118a.524.524 0 0 0 .995 0l1.073-3.079a7.85 7.85 0 0 1 4.974-4.978l3.115-1.035a.525.525 0 0 0 0-.996l-3.076-1.074a7.857 7.857 0 0 1-5.013-5.018l-1.034-3.118a.523.523 0 0 0-.995.039\"\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n", "import type { VectorsDataSourceItem } from \"../../types.ts\"\nimport BasiconsSVG from \"../images/icon-basicons.svg\"\nimport FeatherSVG from \"../images/icon-feather.svg\"\nimport FlowbiteSVG from \"../images/icon-flowbite.svg\"\nimport HeroSVG from \"../images/icon-hero.svg\"\nimport IconicSVG from \"../images/icon-iconic.svg\"\nimport LucideSVG from \"../images/icon-lucide.svg\"\nimport MageSVG from \"../images/icon-mage.svg\"\nimport MaterialSVG from \"../images/icon-material.svg\"\nimport MeteorSVG from \"../images/icon-meteor.svg\"\nimport NoniconsSVG from \"../images/icon-nonicons.svg\"\nimport PhosphorSVG from \"../images/icon-phosphor.svg\"\nimport SargamSVG from \"../images/icon-sargam.svg\"\nimport {\n\tAgentBasiconsIcon,\n\tAgentFeatherIcon,\n\tAgentFlowbiteIcon,\n\tAgentHeroIcon,\n\tAgentIconicIcon,\n\tAgentLucideIcon,\n\tAgentMageIcon,\n\tAgentMaterialIcon,\n\tAgentMeteorIcon,\n\tAgentNoniconsIcon,\n\tAgentPhosphorIcon,\n\tAgentSargamIcon,\n} from \"../icons/AgentVectorSetIcons.tsx\"\n\n// https://framer.com/projects/Icon-Sets--HeQNUPePOfVkO8j1a1To-iH67q?node=VMFCKjz95\nexport const vectorSetItems: VectorsDataSourceItem[] = [\n\t{\n\t\tkey: \"iconic\",\n\t\ttitle: \"Iconic\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: IconicSVG,\n\t\tagentPreviewIcon: AgentIconicIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/CtFWk0FfR3wRolzSJScG/jFr40RIjV9mGUmllmPRR/hZfMiaEeJ.js\",\n\t\tmoduleVersion: \"0.0.4\",\n\t\tvectorSetModuleId: \"EqX8thWQjdZcOB1c6p5N\",\n\t},\n\t{\n\t\tkey: \"phosphor\",\n\t\ttitle: \"Phosphor\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: PhosphorSVG,\n\t\tagentPreviewIcon: AgentPhosphorIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/SUBEdtCFaOJwrjN2Inhk/bznEUerLEqVVXGfsDOYE/pKERsxd4H.js\",\n\t\tmoduleVersion: \"0.0.4\",\n\t\tvectorSetModuleId: \"omX0gWFPqDwhaiWwf6ab\",\n\t},\n\t{\n\t\tkey: \"hero\",\n\t\ttitle: \"Hero\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: HeroSVG,\n\t\tagentPreviewIcon: AgentHeroIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/1lUk1TfvZjRdlJsRNotP/lJ1jENdzoDPrUDxt7YZz/ch_nII7Pe.js\",\n\t\tmoduleVersion: \"0.0.4\",\n\t\tvectorSetModuleId: \"DyJDRQD0f0RPOu0ZYoEG\",\n\t},\n\n\t{\n\t\tkey: \"feather\",\n\t\ttitle: \"Feather\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: FeatherSVG,\n\t\tagentPreviewIcon: AgentFeatherIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/407RSC1iN7xY9tZK0Q8x/uOxystmK67s4TBrM8cle/mAKyPWQFl.js\",\n\t\tmoduleVersion: \"0.0.4\",\n\t\tvectorSetModuleId: \"fiHEoJwBMFnT6QLOcpPz\",\n\t},\n\t{\n\t\tkey: \"meteor\",\n\t\ttitle: \"Meteor\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: MeteorSVG,\n\t\tagentPreviewIcon: AgentMeteorIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/PTZn3F6qMGq1gLpnYF73/kXohQqjft4vwxHI4d595/tMBpPBLJ8.js\",\n\t\tmoduleVersion: \"0.0.4\",\n\t\tvectorSetModuleId: \"eO37kitVCMcNEgHMGd3K\",\n\t},\n\t{\n\t\tkey: \"material\",\n\t\ttitle: \"Material\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: MaterialSVG,\n\t\tagentPreviewIcon: AgentMaterialIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/bOUoSNqXFQmwloaOl82C/9FFxpf8Hoxpy4WgOwfEA/UrtoEbpy0.js\",\n\t\tmoduleVersion: \"0.0.4\",\n\t\tvectorSetModuleId: \"JIScivAkNLgXrcOUxHXD\",\n\t},\n\t{\n\t\tkey: \"basicons\",\n\t\ttitle: \"Basicons\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: BasiconsSVG,\n\t\tagentPreviewIcon: AgentBasiconsIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/M1Vyz8LQQbeAEeHn0kBB/XhvlFfYEqbStAln2exEK/B64nrkXwt.js\",\n\t\tmoduleVersion: \"0.2.0\",\n\t\tvectorSetModuleId: \"E1vFg1A6wcWAGuFi9Hz1\",\n\t},\n\t{\n\t\tkey: \"flowbite\",\n\t\ttitle: \"Flowbite\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: FlowbiteSVG,\n\t\tagentPreviewIcon: AgentFlowbiteIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/KVpOUuAvazdv8lnz0rrn/v1KB2BJq9LfJI6cJIRcA/W5b7yIm6g.js\",\n\t\tmoduleVersion: \"0.3.0\",\n\t\tvectorSetModuleId: \"2BtL64EofggzGo2O20Ku\",\n\t},\n\t{\n\t\tkey: \"nonicons\",\n\t\ttitle: \"Nonicons\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: NoniconsSVG,\n\t\tagentPreviewIcon: AgentNoniconsIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/eSc4OG7Kvs0gQafkVE7g/1DM4G98eSOxtxaIlZYJ2/EYdzC9PpF.js\",\n\t\tmoduleVersion: \"0.1.0\",\n\t\tvectorSetModuleId: \"5EupTCi3bb5mAT1SnBTQ\",\n\t},\n\t{\n\t\tkey: \"sargam\",\n\t\ttitle: \"Sargam\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: SargamSVG,\n\t\tagentPreviewIcon: AgentSargamIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/eY2ls7sB6tzJXWNgV4Dq/kM9Fxq8Qi6Ytf7ubITFe/yiTrVeQCl.js\",\n\t\tmoduleVersion: \"0.2.0\",\n\t\tvectorSetModuleId: \"mbMVkRB5lkkRzWT95l5L\",\n\t},\n\t{\n\t\tkey: \"lucide\",\n\t\ttitle: \"Lucide\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: LucideSVG,\n\t\tagentPreviewIcon: AgentLucideIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/UE8WWbLIUmyibNWAKTzx/zNv6U8II9zcgtQVzuGUU/WQgmZvDvc.js\",\n\t\tmoduleVersion: \"0.2.0\",\n\t\tvectorSetModuleId: \"Y7SpbVH16cWqMhj75z1M\",\n\t},\n\t{\n\t\tkey: \"mage\",\n\t\ttitle: \"Mage\",\n\t\tkeywords: \"icons vectors\",\n\t\timage: MageSVG,\n\t\tagentPreviewIcon: AgentMageIcon,\n\t\ttint: \"rgb(0, 153, 255)\",\n\t\tbackgroundLight: \"rgba(0, 153, 255, 0.08)\",\n\t\tbackgroundDark: \"rgba(0, 153, 255, 0.08)\",\n\t\tintrinsicWidth: 24,\n\t\tintrinsicHeight: 24,\n\t\tmoduleURL: \"https://framerusercontent.com/modules/667CNKf7L3dTfLshmeXN/adCFtU4d39WrmmnKjMjg/J6INbW6Ms.js\",\n\t\tmoduleVersion: \"0.1.0\",\n\t\tvectorSetModuleId: \"NCiKiaU9qhVJumKU6JAo\",\n\t},\n]\n\nexport const insertVectorSetModuleIds = new Set(vectorSetItems.map(item => item.vectorSetModuleId))\n", "import { toast } from \"web/lib/toaster.ts\"\n\nexport async function measureVideo(inputFile: File) {\n\ttry {\n\t\tconst video = document.createElement(\"video\")\n\t\tvideo.src = URL.createObjectURL(inputFile)\n\t\tawait new Promise<void>(resolve => {\n\t\t\tvideo.addEventListener(\"loadedmetadata\", () => {\n\t\t\t\tresolve()\n\t\t\t})\n\t\t})\n\t\tconst { videoWidth: width, videoHeight: height } = video\n\t\treturn { width, height }\n\t} catch (error) {\n\t\ttoast({\n\t\t\tvariant: \"warning\",\n\t\t\ticon: \"warning\",\n\t\t\tduration: 5000,\n\t\t\tprimaryText: \"Couldn\u2019t get video size.\",\n\t\t\tsecondaryText: \"Using defaults.\",\n\t\t\ttype: \"add\",\n\t\t})\n\t\treturn { width: 300, height: 300 }\n\t}\n}\n", "import { getLogger } from \"@framerjs/shared\"\n\nconst log = getLogger(\"createService\")\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Type that rewrites all types of an object to be functions that return promises.\ntype Promisify<T> = {\n\t[P in keyof T]: T[P] extends (...a: any) => Promise<any> // If it\u2019s a function that returns a promise\u2026\n\t\t? T[P] // Then keep as-is\n\t\t: T[P] extends (...a: any) => any // If it\u2019s a normal function\u2026\n\t\t\t? (...a: Parameters<T[P]>) => Promise<ReturnType<T[P]>> // Then turn the result into a promise\n\t\t\t: () => Promise<T[P]> // Else (properties), turn into a function that returns a promise\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper method to create a singleton service that can be initialized later.\n *\n * @param timeout amount of seconds it will wait to throw if the service is\n *                not initialized. `undefined` means it will wait forever.\n *\n * @returns an object with two values:\n * - `service`: a service that\u2019s immediately usable, but under the hood will wait until it\u2019s resolved\n * - `resolve`: a function that must be used to pass the initialized service, must be called once\n */\nexport function createService<T>(timeout?: number): { service: Promisify<T>; resolve: (_: T) => void } {\n\tlet resolveService: (_: T) => void = _ => {\n\t\t// Should never happen, but initializing `resolve` makes TypeScript happy\n\t\tthrow Error(\"createService Promise not set up\")\n\t}\n\n\t// Promise to capture an initialized service\n\tconst promise = new Promise<T>(resolve => {\n\t\tresolveService = (service: T) => {\n\t\t\tresolve(service)\n\t\t\tresolveService = _ => {\n\t\t\t\tlog.warn(\n\t\t\t\t\t\"Services must only be initialized once, but createService resolve was called twice for promise\",\n\t\t\t\t\tpromise,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t})\n\n\t// Proxy that will first make sure the service is resolved\n\tconst service = new Proxy<Promisify<T>>({} as Promisify<T>, {\n\t\tget: (_: Promisify<T>, prop: string | symbol) => {\n\t\t\t// Create a (potential) error outside of promise and timeout, so we\n\t\t\t// get a nicer stack trace\n\t\t\tconst timeoutError = new Error(\"Waiting for service timed out\")\n\t\t\treturn (...args: unknown[]) => {\n\t\t\t\tlet timer: number\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (timeout !== undefined) {\n\t\t\t\t\t\ttimer = window.setTimeout(() => {\n\t\t\t\t\t\t\treject(timeoutError)\n\t\t\t\t\t\t}, timeout * 1000)\n\t\t\t\t\t}\n\t\t\t\t\tpromise\n\t\t\t\t\t\t.then(resolvedService => {\n\t\t\t\t\t\t\twindow.clearTimeout(timer)\n\t\t\t\t\t\t\tif (typeof resolvedService[prop] === \"function\") {\n\t\t\t\t\t\t\t\tresolve(resolvedService[prop](...args))\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresolve(resolvedService[prop])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(reject)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t})\n\n\treturn { service, resolve: resolveService }\n}\n", "import type { Asset, AssetService, AssetSize } from \"@framerjs/assets\"\nimport { createAbsoluteAssetURLFromAsset, extractAssetMetaFromAbsoluteURL, getAssetFilename } from \"@framerjs/assets\"\nimport type { UnsafeJSON } from \"@framerjs/framer-services\"\nimport { assert, getLogger, unhandledError } from \"@framerjs/shared\"\nimport { noop } from \"@framerjs/shared/src/noop.ts\"\nimport type { ImageSize } from \"web/lib/images/image.ts\"\nimport * as supportedImages from \"web/lib/images/supportedFormats.ts\"\nimport { toast } from \"web/lib/toaster.ts\"\nimport { measureVideo } from \"web/lib/videos/measureVideo.ts\"\nimport { fileFromURL } from \"../../../lib/fileFromURL.ts\"\nimport { createService } from \"./createService.ts\"\nimport { svgHasTooLargeRasterImages } from \"./svg.ts\"\nimport type { API } from \"./useAPI.ts\"\n\nconst log = getLogger(\"ChooseFileService\")\n\nexport type FontInfo = Readonly<{\n\tfilename: string\n\toriginalFontName: string\n\tproperties: FontInfoProperties\n}>\n\ntype FontInfoProperties = Readonly<{\n\tfontFamily: string\n\tfontSubFamily: string\n\tvariationAxes?: UnsafeJSON\n}>\n\nexport type FontData = Readonly<{\n\tcontent: string\n\toriginalFilename: string\n}>\n\ninterface CommonUploadResult {\n\ttype: string\n\treadonly asset: Asset\n\treadonly filename: string\n\treadonly originalFilename: string\n\treadonly url: string\n}\n\nexport interface FileUploadResult extends CommonUploadResult {\n\ttype: \"file\"\n}\n\nexport interface ImageUploadResult extends CommonUploadResult {\n\ttype: \"image\"\n\timageSize: ImageSize\n}\n\nexport type ImageUploadResultWithOptionalAssetSize = ImageUploadResult & Partial<{ preferredSize: AssetSize }>\n\nexport interface VideoUploadResult extends CommonUploadResult {\n\ttype: \"video\"\n\tdimensions: { width: number; height: number }\n}\n\nexport type AssetUploadResult = FileUploadResult | ImageUploadResult | VideoUploadResult\n\ntype ImageURL = Readonly<{\n\turl: string\n\toriginalFilename: string\n\twidth: number\n\theight: number\n}>\n\ninterface WithSilent {\n\tsilent?: boolean\n}\n\ninterface WithRefreshAssetService {\n\trefreshAssetService?: boolean\n}\n\nexport interface UploadOptions extends WithSilent, WithRefreshAssetService {\n\tmaxFileSize?: number\n\tonExceedsCustomMaxSize?: (size: number) => void\n}\n\n/**\n * Upload surface used by `BatchAssetUploader` so callers can target project assets vs user-owned assets.\n */\nexport interface AssetBatchUploadService {\n\tuploadImage(file: File, options?: UploadOptions): Promise<ImageUploadResult | undefined>\n\tuploadVideo(file: File, options?: UploadOptions): Promise<VideoUploadResult | undefined>\n\tuploadFile(file: File, options?: UploadOptions): Promise<FileUploadResult | undefined>\n\tuploadAssetByURL(url: string, options?: UploadOptions): Promise<AssetUploadResult>\n}\n\nexport function isImageUploadResult(upload: AssetUploadResult): upload is ImageUploadResult {\n\treturn upload.type === \"image\"\n}\n\nexport function isVideoUploadResult(upload: AssetUploadResult): upload is VideoUploadResult {\n\treturn upload.type === \"video\"\n}\n\nfunction imageAssetToImageSize(asset: Asset): ImageSize {\n\tconst naturalWidth = asset.properties?.image?.width\n\tconst naturalHeight = asset.properties?.image?.height\n\n\t// All existing assets are backfilled and the API is supposed to error if it\n\t// can't measure an image. Even though we error on 0x0 images now, it wasn't\n\t// always the case, so some of the backfilled assets might have zero as\n\t// their width and/or height.\n\tassert(naturalWidth !== undefined && naturalHeight !== undefined, \"Image asset missing width/height\")\n\n\treturn { naturalWidth, naturalHeight }\n}\n\n/**\n * Service for uploading and deleting assets from the WebAssetsService.\n */\nclass UploadService implements AssetBatchUploadService {\n\tconstructor(\n\t\tprivate api: API,\n\t\tprivate assetService: AssetService,\n\t) {}\n\n\t/**\n\t * Deletes one or more assets from the project by key.\n\t * The deletion is idempotent, any keys not found (e.g. already deleted) will be silently ignored.\n\t * @param keys - The keys of the assets to delete.\n\t */\n\tasync deleteAssets({ keys }: { keys: string[] }): Promise<void> {\n\t\tawait this.api.deleteAssets(keys)\n\t\tthis.assetService.deleteProjectAssets(keys)\n\t}\n\n\tasync uploadImage(\n\t\tfile: File,\n\t\t{ silent = false, maxFileSize, onExceedsCustomMaxSize, refreshAssetService = true }: UploadOptions = {},\n\t): Promise<ImageUploadResult | undefined> {\n\t\ttry {\n\t\t\tconst showToast: typeof toast = silent ? noop : value => toast(value)\n\n\t\t\tif (!supportedImages.mimeTypes.includes(file.type)) {\n\t\t\t\tshowToast({\n\t\t\t\t\tvariant: \"error\",\n\t\t\t\t\ticon: \"error\",\n\t\t\t\t\tduration: Infinity,\n\t\t\t\t\tprimaryText: \"Unsupported image type.\",\n\t\t\t\t\tsecondaryText: \"Try png or jpg.\",\n\t\t\t\t\ttype: \"add\",\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (file.type === \"image/svg+xml\") {\n\t\t\t\tconst svgText = await file.text()\n\t\t\t\tif (svgHasTooLargeRasterImages(svgText)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst asset = await this.api.uploadAsset(file, {\n\t\t\t\tmaxFileSize,\n\t\t\t\tonExceedsCustomMaxSize,\n\t\t\t\tonToast: showToast,\n\t\t\t})\n\n\t\t\tif (!asset) return\n\t\t\tif (refreshAssetService) await this.assetService.refresh().catch(unhandledError)\n\n\t\t\treturn {\n\t\t\t\ttype: \"image\",\n\t\t\t\tasset,\n\t\t\t\tfilename: getAssetFilename(asset),\n\t\t\t\toriginalFilename: asset.name,\n\t\t\t\turl: createAbsoluteAssetURLFromAsset(asset),\n\t\t\t\timageSize: imageAssetToImageSize(asset),\n\t\t\t}\n\t\t} catch (err: unknown) {\n\t\t\tif (silent) {\n\t\t\t\tthrow err\n\t\t\t} else {\n\t\t\t\ttoast({\n\t\t\t\t\tvariant: \"error\",\n\t\t\t\t\ticon: \"error\",\n\t\t\t\t\tduration: Infinity,\n\t\t\t\t\tprimaryText: \"Couldn\u2019t add image.\",\n\t\t\t\t\tsecondaryText: \"It may be too large.\",\n\t\t\t\t\ttype: \"add\",\n\t\t\t\t})\n\t\t\t\tlog.reportError(err, {\n\t\t\t\t\tfileName: file.name,\n\t\t\t\t\tfileSize: file.size,\n\t\t\t\t\tfileType: file.type,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tasync uploadVideo(\n\t\tfile: File,\n\t\t{ silent = false, maxFileSize, onExceedsCustomMaxSize, refreshAssetService = true }: UploadOptions = {},\n\t): Promise<VideoUploadResult | undefined> {\n\t\ttry {\n\t\t\tconst showToast: typeof toast = silent ? noop : value => toast(value)\n\n\t\t\tconst result = await Promise.all([\n\t\t\t\t// Measuring the video should take a few dozens of ms at most. If it takes ten seconds,\n\t\t\t\t// it\u2019s likely we broke something, and `measureVideo()` is stuck and will never resolve.\n\t\t\t\t// In that case, instead of showing an infinite \u201CUploading\u2026\u201D toast, it\u2019s better to interrupt\n\t\t\t\t// the upload and show an error, so we can get alerted and fix the issue.\n\t\t\t\twithTimeout(measureVideo(file), 10_000, \"Measuring the video took more than 10 seconds\"),\n\t\t\t\tthis.api.uploadAsset(file, { maxFileSize, onExceedsCustomMaxSize, onToast: showToast }),\n\t\t\t])\n\t\t\tif (!result) return\n\n\t\t\tconst [videoDimensions, asset] = result\n\t\t\tif (!asset) return\n\n\t\t\tif (refreshAssetService) await this.assetService.refresh().catch(unhandledError)\n\t\t\treturn {\n\t\t\t\ttype: \"video\",\n\t\t\t\tasset,\n\t\t\t\tfilename: getAssetFilename(asset),\n\t\t\t\tdimensions: videoDimensions,\n\t\t\t\toriginalFilename: asset.name,\n\t\t\t\turl: createAbsoluteAssetURLFromAsset(asset),\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tif (silent) {\n\t\t\t\tthrow err\n\t\t\t} else {\n\t\t\t\ttoast({\n\t\t\t\t\tvariant: \"error\",\n\t\t\t\t\ticon: \"error\",\n\t\t\t\t\tduration: Infinity,\n\t\t\t\t\tprimaryText: \"Couldn\u2019t add video.\",\n\t\t\t\t\tsecondaryText: \"Please retry.\",\n\t\t\t\t\ttype: \"add\",\n\t\t\t\t})\n\t\t\t\tlog.reportError(err, {\n\t\t\t\t\tfileName: file.name,\n\t\t\t\t\tfileSize: file.size,\n\t\t\t\t\tfileType: file.type,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Skips the upload if it's our own external URL and the asset is available\n\t * in this project.\n\t */\n\tasync uploadAssetByURL(\n\t\turl: string,\n\t\t{ silent = false, refreshAssetService = true }: UploadOptions = {},\n\t): Promise<AssetUploadResult> {\n\t\t// Absolute URLs also have `asset` and `image` in them, but they all\n\t\t// have unique filenames (as they're derived from their hash).\n\t\tconst assetMeta = extractAssetMetaFromAbsoluteURL(url)\n\t\tconst existingAsset = assetMeta && this.assetService.getAssetByFilename(assetMeta.filename)\n\t\tconst asset = existingAsset ?? (await this.api.uploadAssetByURL(url, silent ? undefined : toast))\n\n\t\tconst result = {\n\t\t\tasset,\n\t\t\tfilename: getAssetFilename(asset),\n\t\t\toriginalFilename: asset.name,\n\t\t\turl: createAbsoluteAssetURLFromAsset(asset),\n\t\t}\n\n\t\tif (refreshAssetService) await this.assetService.refresh().catch(unhandledError)\n\n\t\tif (!asset.mimeType.startsWith(\"image/\")) return { ...result, type: \"file\" }\n\n\t\treturn { ...result, type: \"image\", imageSize: imageAssetToImageSize(asset) }\n\t}\n\n\tasync uploadFile(\n\t\tfile: File,\n\t\t{ silent = false, maxFileSize, onExceedsCustomMaxSize, refreshAssetService = true }: UploadOptions = {},\n\t): Promise<FileUploadResult | undefined> {\n\t\tconst asset = await this.api.uploadAsset(file, {\n\t\t\tmaxFileSize: maxFileSize,\n\t\t\tonExceedsCustomMaxSize: onExceedsCustomMaxSize,\n\t\t\tonToast: silent ? undefined : value => toast(value),\n\t\t})\n\t\tif (!asset) return\n\t\tif (refreshAssetService) await this.assetService.refresh().catch(unhandledError)\n\t\treturn {\n\t\t\ttype: \"file\",\n\t\t\tasset,\n\t\t\tfilename: getAssetFilename(asset),\n\t\t\toriginalFilename: asset.name,\n\t\t\turl: createAbsoluteAssetURLFromAsset(asset),\n\t\t}\n\t}\n\n\tasync uploadFonts(\n\t\tfontsData?: FontData[],\n\t\t{ refreshAssetService = true }: WithRefreshAssetService = {},\n\t): Promise<FontInfo[]> {\n\t\tconst result: FontInfo[] = []\n\t\tif (!fontsData) {\n\t\t\treturn result\n\t\t}\n\t\ttry {\n\t\t\t// TODO: Parallel.\n\t\t\tfor (const font of fontsData) {\n\t\t\t\tconst file = await fileFromURL(font.content, font.originalFilename)\n\t\t\t\tconst info = await this.api.uploadAsset(file)\n\n\t\t\t\tif (!info || !info.properties) continue\n\t\t\t\tresult.push({\n\t\t\t\t\tfilename: getAssetFilename(info),\n\t\t\t\t\toriginalFontName: info.name,\n\t\t\t\t\tproperties: info.properties.font,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (refreshAssetService) await this.assetService.refresh().catch(unhandledError)\n\t\t} catch (e) {\n\t\t\tlog.warn(\"Failed to add font:\", e)\n\t\t}\n\t\treturn result\n\t}\n\n\tasync uploadImageByURL(\n\t\timage?: ImageURL,\n\t\t{ refreshAssetService = true }: WithRefreshAssetService = {},\n\t): Promise<ImageUploadResult[]> {\n\t\tconst result: ImageUploadResult[] = []\n\t\tif (!image) return result\n\n\t\ttry {\n\t\t\tconst imageUploadResult = await this.uploadAssetByURL(image.url, { refreshAssetService })\n\t\t\tassert(isImageUploadResult(imageUploadResult))\n\t\t\tresult.push(imageUploadResult)\n\t\t} catch (e) {\n\t\t\tlog.warn(\"Failed to add image by URL:\", e)\n\t\t}\n\n\t\treturn result\n\t}\n}\n\nconst { service: uploadService, resolve: resolveUploadService } = createService<UploadService>()\nexport { uploadService }\n\nexport function initUploadService(api: API, assetService: AssetService): void {\n\tresolveUploadService(new UploadService(api, assetService))\n}\n\nfunction withTimeout<T>(promise: PromiseLike<T>, ms: number, error = \"timed out\"): PromiseLike<T> {\n\treturn new Promise((resolve, reject) => {\n\t\tsetTimeout(() => {\n\t\t\treject(Error(error))\n\t\t}, ms)\n\t\tpromise.then(resolve, reject)\n\t})\n}\n"],
  "mappings": "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",
  "names": ["document", "service", "log"]
}
