{
  "version": 3,
  "sources": ["../../src/utils/getId.ts", "../../src/document/components/utils/defaultComponents.ts", "../../src/document/SandboxRepeaterData.ts", "../../src/utils/isEmptyRichTextValue.ts", "../../src/code-generation/components/cms/getCollectionControlProp.ts", "../../src/code-generation/components/cms/getDatabaseValue.ts", "../../src/code-generation/components/cms/getDatabaseValueDefinition.ts"],
  "sourcesContent": ["/** Get the id from any record that contains an id of type string. */\nexport function getId<T extends { id: string }>(value: T): string {\n\treturn value.id\n}\n", "import type { ModuleIdentifier } from \"@framerjs/shared\"\nimport { isExternalModuleIdentifier, parseModuleIdentifier } from \"@framerjs/shared\"\nimport type { CanvasTree } from \"document/models/CanvasTree/index.ts\"\nimport type { ExternalModuleNode } from \"document/models/CanvasTree/nodes/ExternalModuleNode.ts\"\nimport { ALL_IDENTIFIERS } from \"document/models/CanvasTree/traits/utils/hardCodedCodeComponentIdentifiers.ts\"\nimport { isString } from \"utils/typeChecks.ts\"\n\ntype ModuleCategory = \"asset\" | \"default\"\nconst moduleIdToCategory = new Map<string, ModuleCategory>([\n\t// Production\n\t[\"NRKVbMFYrBaqL0rx532t\", \"default\"], // Audio\n\t[\"haJxYX2rGFhbjDUAEN4C\", \"default\"], // Avatar\n\t[\"9yCP42jHRUKb7D1zVIaf\", \"default\"], // Button\n\t[\"VqaHB3gIRuIUtWjo3LNk\", \"default\"], // Checkbox\n\t[\"WcMbHBks2nbpih8cQpDP\", \"default\"], // Conic\n\t[\"U57NGWyGYuW6bKoiBG3S\", \"default\"], // Cursors\n\t[\"o1PI5S8YtkA5bP5g4dFz\", \"default\"], // Embed\n\t[\"f0DboytQenYh21kfme7W\", \"asset\"], // Feather Icons\n\t[\"LC4heOHJXh5Q0v49H98F\", \"default\"], // Gif\n\t[\"hKjtTuWGYB451ckw6eTN\", \"asset\"], // Hero Icons\n\t[\"BTZy5VRk3psZMmSmB1ao\", \"asset\"], // Humaaans Illustrations\n\t[\"zL9598C4KbEbqUGvSR14\", \"asset\"], // Iconoir Icons\n\t[\"4TG0CA0xFC8r92HZNVLs\", \"default\"], // Input\n\t[\"NQ9LlTfXzHTRhTTi6qMI\", \"default\"], // Loading\n\t[\"YbkSqZ7STzW5WsMb1yan\", \"default\"], // Lottie\n\t[\"6Ldpz1V0DkD45gXvi67I\", \"asset\"], // Material Icons\n\t[\"PLP5SWQpFPuFrn7tLf3t\", \"asset\"], // Memoji\n\t[\"e3x4jPb1EG4euVPWc4mR\", \"default\"], // Notes\n\t[\"tYScH7LTqUtz5KUaUAYP\", \"asset\"], // Phosphor Icons\n\t[\"SP7MubjzgHx9kc6yA6xD\", \"default\"], // Progress\n\t[\"sfcCjzngcJ7d4Dc2JQS7\", \"default\"], // Radio Buttons\n\t[\"pAiDzuVWlJ5Yhal7oozz\", \"default\"], // Rating\n\t[\"fsl9YcyCK6ElCyDYQXkv\", \"default\"], // SegmentedControl\n\t[\"LQULCyu9kgqvukVlEl2a\", \"default\"], // Select\n\t[\"AHY1z1xp5QsxaZBkEL9H\", \"default\"], // Slider\n\t[\"tW1ExjbbJRt9YcZ0Gyxk\", \"default\"], // Spotify\n\t[\"1rQY6iWLBRAy4KOToV43\", \"default\"], // Time\n\t[\"Ln07uZ5gvrAr1e83r1dD\", \"default\"], // Toggle\n\t[\"xwmmLiR3CC4FXXYz8XsN\", \"default\"], // Twemoji\n\t[\"aokp9DDPTWaRLrvhFlr7\", \"default\"], // Video\n\t[\"lRDHiNWNVWmE0lqtoVHP\", \"default\"], // Video (new)\n\t[\"TNnVk4bm8OlKPjdGpgiG\", \"default\"], // Webcam\n\t[\"NEd4VmDdsxM3StIUbddO\", \"default\"], // Youtube\n\t// Development\n\t[\"CeaQS578yFMlLjCgp81P\", \"default\"], // Audio\n\t[\"osErWkQ1i5HsIl97QZcj\", \"default\"], // Avatar\n\t[\"60WYaoGhVqr4nPigAFfG\", \"default\"], // Button\n\t[\"ulCLMmplBQ2YWb2hNT60\", \"default\"], // Checkbox\n\t[\"Cw7pvyae4n9JkoAHsOV7\", \"default\"], // Conic\n\t[\"Iy35IJfZH5AHyPqAJrrT\", \"default\"], // Cursors\n\t[\"rnhCv7PfGXIzJ50WucCB\", \"default\"], // Embed\n\t[\"0MPh2t4aGaavjJm8MCX3\", \"asset\"], // Feather Icons\n\t[\"ExqLoFx5tQ0kYVZIkIuq\", \"default\"], // Gif\n\t[\"En8m0RD0GsDTNqj9UHhB\", \"asset\"], // Hero Icons\n\t[\"2LZP77HL2DIBvtFXtFUa\", \"asset\"], // Humaaans Illustrations\n\t[\"ABMH5mworyDEZnwkDTwc\", \"asset\"], // Iconoir Icons\n\t[\"vD3BuXaa7RicyfeGkiPU\", \"default\"], // Input\n\t[\"ux1hvUReaTrfmfmmrYT0\", \"default\"], // Loading\n\t[\"09CLUEUlOAcLjH8vQNR6\", \"default\"], // Lottie\n\t[\"9yTxfH36inN67B5hIaWf\", \"asset\"], // Material Icons\n\t[\"qC9mEG84ZYqOOwpoeLuU\", \"asset\"], // Memoji\n\t[\"9oT96ZV3unJ5jAECL8ix\", \"default\"], // Notes\n\t[\"Fch2LXnOk9PQ3qJxY2Te\", \"asset\"], // Phosphor Icons\n\t[\"CPkOIwcGesnLpU4v4bk0\", \"default\"], // Progress\n\t[\"rISHPNQAtVgRRKiKFRxW\", \"default\"], // Radio Buttons\n\t[\"0Clc0V2PhF6OFwjlP0CG\", \"default\"], // Rating\n\t[\"qEeD3Y44nXIfZV22Bt7n\", \"default\"], // SegmentedControl\n\t[\"QItGEGdNJnGmEFc0nBOF\", \"default\"], // Select\n\t[\"WpZJCa6G7ok86UReoOTl\", \"default\"], // Slider\n\t[\"GlyJs8T2Yp2qJirHk8u3\", \"default\"], // Spotify\n\t[\"0ZkrOXKMJnYM6gCD9R1s\", \"default\"], // Time\n\t[\"Oicn6BEt9npkotkf2uzC\", \"default\"], // Toggle\n\t[\"cCcIvlf35IT9CxSNUBnj\", \"default\"], // Twemoji\n\t[\"bTyyJQHdimlxHlAtGg1J\", \"default\"], // Video\n\t[\"tMszxO6hPYWRzmKwCEXQ\", \"default\"], // Webcam\n\t[\"Z3lxU3ZSFBXYY09Y9HMc\", \"default\"], // Youtube\n\t// Insert Components\n\t[\"0ZSF8VJcL5AhXebKiUw3\", \"default\"], // Mailchimp\n\t[\"vkHAj2Yk0mTnbM6ZdN5c\", \"default\"], // Formspark\n\t[\"YJeJt5PA2xiIJa1C53eg\", \"default\"], // Button\n\t[\"TFKlw6s64GF9pON522nu\", \"default\"], // Hero Simple\n\t[\"ImqfwEWvNWDaycntUDly\", \"default\"], // Hero Image\n\t[\"haWiuNv5jUiP2u4DzwwS\", \"default\"], // Hero Video\n\t[\"D0nqbO6jRA9uCngz2Sz1\", \"default\"], // Hero App\n\t[\"p8AvmHBkm0zhdoG23RWO\", \"default\"], // Hero App R\n\t[\"wgBIGOxvp74Y7Jq2Y2Xj\", \"default\"], // Hero Image R\n\t[\"9dzjqiNrkF83v1WSw5W9\", \"default\"], // Hero Image L\n\t[\"OiSFHE3YY6ILxDyP0B3l\", \"default\"], // Hero Sign Up\n\t[\"rKLLAIk6raBU0slJoVIF\", \"default\"], // Features 2x2\n\t[\"PIqqaoOZfAtg5HOpfNjZ\", \"default\"], // Features Offset\n\t[\"gpMw5ol3bkpWcskUP9G2\", \"default\"], // Features Simple\n\t[\"IRJD9zlcpQuzSvl2Pr8x\", \"default\"], // Features Color\n\t[\"iaSo3T3pnETm7J5fDuyh\", \"default\"], // Features Checklist\n\t[\"rJ0wwpJ3kwcwX2t4O4gJ\", \"default\"], // Features App R\n\t[\"8qdsWj2mfeItddD09CY7\", \"default\"], // Features App L\n\t[\"lL61I0DyzxitowLWsQlw\", \"default\"], // CTA Simple\n\t[\"dFnAb56vzKXMPV2AEGUC\", \"default\"], // CTA Simple Color\n\t[\"NphzjTpstzMwf7dnVNw2\", \"default\"], // CTA Justified\n\t[\"z5EAV9TPzfX1akZbKQTz\", \"default\"], // CTA Split Image\n\t[\"bRnC9BZ8fPdasCGyntcX\", \"default\"], // Logos Simple\n\t[\"5KMZ9XJ3zZcif8jM59q8\", \"default\"], // Logos Color\n\t[\"snl1oXTp9QrO95o5Viw0\", \"default\"], // Logos Title\n\t[\"ztAt3wynWpOP5MKuGkGp\", \"default\"], // Logos Split\n\t[\"UZyTaraYuEMpFLunqc1u\", \"default\"], // Logos Split Grid\n\t[\"vEQNeVdeOVZnqhbwoguO\", \"default\"], // Top Bar\n\t[\"xNv0lzUzzNm7S6KIFWKX\", \"default\"], // Sidebar\n\t[\"qPsqHIIS0ji32c7PJiYh\", \"default\"], // Footer 1\n\t[\"dyH2QoYP2dDV3axTyexb\", \"default\"], // Footer 2\n\t[\"uGQZtcsxBzvxqsgxQ0Tz\", \"default\"], // Hubspot\n\t[\"UIhUTcd796YH7Ndybys8\", \"default\"], // Intercom\n\t[\"w8hoT2iFHrsyXLAbxzgk\", \"default\"], // Revue\n\t[\"F6IzcnH090BibK8JiJh0\", \"default\"], // Typeform\n\t[\"WIJbzyan03eQVbqqCNqQ\", \"default\"], // Calendly\n\t[\"HGu8PKPDwAHu4uSgLoYR\", \"default\"], // Instagram\n\t[\"H9CvVrwLrFYAbKP9eYKI\", \"default\"], // Facebook\n\t[\"YLAIqVion55BUycOZr6e\", \"default\"], // Twitter\n\t[\"Hbc0lxqGSRzFG6uMT9yO\", \"default\"], // Google Maps\n\t[\"0FGMb16YHyLms7uyPaAH\", \"default\"], // Trustpilot\n\t[\"3aS1B1VhtklZST6WIiVW\", \"default\"], // Tagembed\n\t[\"0sWquksFr1YDkaIgrl9Z\", \"default\"], // Vimeo\n\t[\"rwOL75pJfUm1chf60B4p\", \"default\"], // Apple Podcasts\n\t[\"iH0dC3d1a99tJbx8s2oc\", \"default\"], // SoundCloud\n\t[\"bGK4RIr3q7JjhzLaKVL7\", \"default\"], // Apple Music\n\t[\"q2cL7syGc9ukRT0XBvXQ\", \"default\"], // Simplecast\n\t[\"wRCfuvJUFRQ0wYlJVLju\", \"default\"], // Eventbrite\n\t[\"nrfFErSfrJP9tb4xLKEk\", \"default\"], // The Fork\n\t[\"7GzNx3UWTFiuG1fPp4RN\", \"default\"], // OpenTable\n\t[\"y2X42d2VBQUxqU0AyTRL\", \"default\"], // Gumroad\n\t[\"VFXyvCMGkGn5e23Gqs6f\", \"default\"], // Shopify Item\n\t[\"4omHJNgjPfD87dEppxm8\", \"default\"], // Shopify Cart\n\t[\"MEKg0sNZfA7aytaJmhvg\", \"default\"], // New Shopify Item\n\t[\"tXk0MhgHOCVsN627ReKi\", \"default\"], // New Shopify Cart\n\t[\"3VbLlIQuOMJh9PZyYR3D\", \"default\"], // Product Hunt\n\t[\"3MIOGwJKV64bHhySSJU8\", \"default\"], // Google Optimize\n\t[\"Hj20QU19p80mpYsvesiZ\", \"default\"], // Copy Clipboard\n\t[\"b5mLxlqSJlPmsdIe9p42\", \"default\"], // Notification\n\t[\"IQXqjAGXltPKLdfjcdtf\", \"default\"], // Logo\n\t[\"aokp9DDPTWaRLrvhFlr7\", \"default\"], // Video\n\t[\"0ZSF8VJcL5AhXebKiUw3\", \"default\"], // Mailchimp\n\t[\"vkHAj2Yk0mTnbM6ZdN5c\", \"default\"], // Formspark\n\t[\"tYScH7LTqUtz5KUaUAYP\", \"default\"], // Phosphor\n\t[\"BTZy5VRk3psZMmSmB1ao\", \"default\"], // Humaans\n\t[\"YJeJt5PA2xiIJa1C53eg\", \"default\"], // Button\n\t[\"TFKlw6s64GF9pON522nu\", \"default\"], // Hero Simple\n\t[\"ImqfwEWvNWDaycntUDly\", \"default\"], // Hero Image\n\t[\"haWiuNv5jUiP2u4DzwwS\", \"default\"], // Hero Video\n\t[\"D0nqbO6jRA9uCngz2Sz1\", \"default\"], // Hero App\n\t[\"p8AvmHBkm0zhdoG23RWO\", \"default\"], // Hero App R\n\t[\"wgBIGOxvp74Y7Jq2Y2Xj\", \"default\"], // Hero Image R\n\t[\"9dzjqiNrkF83v1WSw5W9\", \"default\"], // Hero Image L\n\t[\"OiSFHE3YY6ILxDyP0B3l\", \"default\"], // Hero Sign Up\n\t[\"rKLLAIk6raBU0slJoVIF\", \"default\"], // Features 2x2\n\t[\"PIqqaoOZfAtg5HOpfNjZ\", \"default\"], // Features Offset\n\t[\"gpMw5ol3bkpWcskUP9G2\", \"default\"], // Features Simple\n\t[\"IRJD9zlcpQuzSvl2Pr8x\", \"default\"], // Features Color\n\t[\"iaSo3T3pnETm7J5fDuyh\", \"default\"], // Features Checklist\n\t[\"rJ0wwpJ3kwcwX2t4O4gJ\", \"default\"], // Features App R\n\t[\"8qdsWj2mfeItddD09CY7\", \"default\"], // Features App L\n\t[\"lL61I0DyzxitowLWsQlw\", \"default\"], // CTA Simple\n\t[\"dFnAb56vzKXMPV2AEGUC\", \"default\"], // CTA Simple Color\n\t[\"NphzjTpstzMwf7dnVNw2\", \"default\"], // CTA Justified\n\t[\"z5EAV9TPzfX1akZbKQTz\", \"default\"], // CTA Split Image\n\t[\"bRnC9BZ8fPdasCGyntcX\", \"default\"], // Logos Simple\n\t[\"5KMZ9XJ3zZcif8jM59q8\", \"default\"], // Logos Color\n\t[\"snl1oXTp9QrO95o5Viw0\", \"default\"], // Logos Title\n\t[\"ztAt3wynWpOP5MKuGkGp\", \"default\"], // Logos Split\n\t[\"UZyTaraYuEMpFLunqc1u\", \"default\"], // Logos Split Grid\n\t[\"vEQNeVdeOVZnqhbwoguO\", \"default\"], // Top Bar\n\t[\"xNv0lzUzzNm7S6KIFWKX\", \"default\"], // Sidebar\n\t[\"qPsqHIIS0ji32c7PJiYh\", \"default\"], // Footer 1\n\t[\"dyH2QoYP2dDV3axTyexb\", \"default\"], // Footer 2\n\t[\"uGQZtcsxBzvxqsgxQ0Tz\", \"default\"], // Hubspot\n\t[\"UIhUTcd796YH7Ndybys8\", \"default\"], // Intercom\n\t[\"w8hoT2iFHrsyXLAbxzgk\", \"default\"], // Revue\n\t[\"F6IzcnH090BibK8JiJh0\", \"default\"], // Typeform\n\t[\"WIJbzyan03eQVbqqCNqQ\", \"default\"], // Calendly\n\t[\"HGu8PKPDwAHu4uSgLoYR\", \"default\"], // Instagram\n\t[\"H9CvVrwLrFYAbKP9eYKI\", \"default\"], // Facebook\n\t[\"YLAIqVion55BUycOZr6e\", \"default\"], // Twitter\n\t[\"Hbc0lxqGSRzFG6uMT9yO\", \"default\"], // Google Maps\n\t[\"0FGMb16YHyLms7uyPaAH\", \"default\"], // Trustpilot\n\t[\"3aS1B1VhtklZST6WIiVW\", \"default\"], // Tagembed\n\t[\"NEd4VmDdsxM3StIUbddO\", \"default\"], // Youtube\n\t[\"0sWquksFr1YDkaIgrl9Z\", \"default\"], // Vimeo\n\t[\"0d6RiIqVtueAk7OWQSfZ\", \"default\"], // Old Lottie\n\t[\"YbkSqZ7STzW5WsMb1yan\", \"default\"], // Lottie\n\t[\"jfK7C7JmdHGaVBsvt1V7\", \"default\"], // Dot Lottie\n\t[\"LC4heOHJXh5Q0v49H98F\", \"default\"], // Giphy\n\t[\"tW1ExjbbJRt9YcZ0Gyxk\", \"default\"], // Spotify\n\t[\"rwOL75pJfUm1chf60B4p\", \"default\"], // Apple Podcasts\n\t[\"iH0dC3d1a99tJbx8s2oc\", \"default\"], // SoundCloud\n\t[\"bGK4RIr3q7JjhzLaKVL7\", \"default\"], // Apple Music\n\t[\"q2cL7syGc9ukRT0XBvXQ\", \"default\"], // Simplecast\n\t[\"NRKVbMFYrBaqL0rx532t\", \"default\"], // MP3\n\t[\"wRCfuvJUFRQ0wYlJVLju\", \"default\"], // Eventbrite\n\t[\"nrfFErSfrJP9tb4xLKEk\", \"default\"], // The Fork\n\t[\"7GzNx3UWTFiuG1fPp4RN\", \"default\"], // OpenTable\n\t[\"y2X42d2VBQUxqU0AyTRL\", \"default\"], // Gumroad\n\t[\"1mkt2plloPEOvoe16UUK\", \"default\"], // Lemon Squeezy\n\t[\"3VbLlIQuOMJh9PZyYR3D\", \"default\"], // Product Hunt\n\t[\"3MIOGwJKV64bHhySSJU8\", \"default\"], // Google Optimize\n\t[\"Hj20QU19p80mpYsvesiZ\", \"default\"], // Copy Clipboard\n\t[\"b5mLxlqSJlPmsdIe9p42\", \"default\"], // Notification\n\t[\"IQXqjAGXltPKLdfjcdtf\", \"default\"], // Logo\n\t[\"xwmmLiR3CC4FXXYz8XsN\", \"default\"], // Twemoji\n\t[\"nkK6WdmX7EKhu7ixl0O3\", \"default\"], // Old Memoji\n\t[\"PLP5SWQpFPuFrn7tLf3t\", \"default\"], // Memoji\n])\n\nfunction getOfficialModuleCategory(id: string | ModuleIdentifier): ModuleCategory | undefined {\n\tif (typeof id === \"string\") {\n\t\tconst parsedId = parseModuleIdentifier(id)\n\t\tif (parsedId) {\n\t\t\t// It's a module identifier, check that it's external and has a module id.\n\t\t\tif (!isExternalModuleIdentifier(parsedId)) return undefined\n\t\t\treturn moduleIdToCategory.get(parsedId.moduleId)\n\t\t} else {\n\t\t\t// It might be a module id directly.\n\t\t\treturn moduleIdToCategory.get(id)\n\t\t}\n\t}\n\tif (!isExternalModuleIdentifier(id)) return undefined\n\treturn moduleIdToCategory.get(id.moduleId)\n}\n\nfunction isFramerPublishModule(tree: CanvasTree, id: string | ModuleIdentifier): boolean {\n\tconst parsedId = typeof id === \"string\" ? parseModuleIdentifier(id) : id\n\t// It's a module identifier, check that it's external and has a module id.\n\tif (!parsedId || !isExternalModuleIdentifier(parsedId)) return false\n\n\tconst externalModuleNode = tree.getNode<ExternalModuleNode>(parsedId.moduleId)\n\tif (!externalModuleNode) return false\n\n\t// FIXME: We should probably have this id stored in a central place.\n\treturn externalModuleNode.namespaceId === \"b1dc0e2c-9212-4d15-aaf0-73b747e96996\"\n}\n\n/** Returns true if the module id provided is a built-in Framer one. */\nexport function isBuiltInFramerModule(id: string | ModuleIdentifier): boolean {\n\treturn (isString(id) && ALL_IDENTIFIERS.has(id)) || getOfficialModuleCategory(id) !== undefined\n}\n\nexport function isFramerModule(tree: CanvasTree, id: string | ModuleIdentifier): boolean {\n\treturn isFramerPublishModule(tree, id) || isBuiltInFramerModule(id)\n}\n", "import { assert, emptyArray } from \"@framerjs/shared\"\nimport { ControlType } from \"library/render/types/PropertyControls.ts\"\nimport { getId } from \"utils/getId.ts\"\nimport { isShallowEqual } from \"utils/isShallowEqual.ts\"\nimport type { JsonObject } from \"utils/json.ts\"\nimport type { NodeID } from \"./models/CanvasTree/index.ts\"\nimport type { VariableProviderControlMap } from \"./models/CanvasTree/traits/VariableProvider.ts\"\nimport { type RenderId, isPrimaryRenderId } from \"./utils/RenderId.ts\"\n\nexport interface RepeaterDataUpdate {\n\tnodeId: NodeID\n\tdata: SerializableRepeaterData\n}\n\nexport interface RepeaterItemIdsUpdate {\n\trenderId: RenderId\n\titemIds: string[]\n}\n\nexport interface RepeaterUpdates {\n\tdataUpdates: RepeaterDataUpdate[]\n\titemIdsUpdates: RepeaterItemIdsUpdate[]\n}\n\ntype RepeaterItemData = Record<string, unknown>\ntype RepeaterData = readonly RepeaterItemData[]\n\ntype SerializableRepeaterItemData = JsonObject\ntype SerializableRepeaterData = readonly SerializableRepeaterItemData[]\n\n/**\n * SandboxRepeaterData is used to sync the selected repeater data with the editor.\n *\n * Some dynamic values need to be resolved for correct rendering and behavior of\n * the canvas HUD. Since collection data is only known within the sandbox these\n * values need to be send to the editor. Without having the resolved value for\n * visibility, node selection behaves inconsistent. And without the resolved\n * value for rotation the selection box isn't in sync with the rendered layer.\n */\nexport class SandboxRepeaterData {\n\t/** Within the sandbox this can be any render id, outside the sandbox this is only the primary render id. */\n\tprivate readonly dataByRenderId = new Map<RenderId, RepeaterData>()\n\n\tprivate readonly itemIdsByRenderId = new Map<RenderId, readonly string[]>()\n\n\t// Only used within the sandbox, tracking what changed since the last update.\n\tprivate readonly updatedDataByNodeId = new Map<NodeID, SerializableRepeaterData>()\n\tprivate readonly updatedItemIdsByRenderId = new Map<RenderId, string[]>()\n\n\t/** @todo: Remove \"dashboard\", we do not need sandbox data in the dashboard. */\n\tconstructor(private readonly environment: \"sandbox\" | \"editor\" | \"dashboard\") {}\n\n\tset(renderId: RenderId, data: RepeaterData | undefined, controlMap: VariableProviderControlMap) {\n\t\tassert(this.environment === \"sandbox\", \"Setting data is only allowed in the sandbox.\")\n\n\t\tdata ??= emptyArray()\n\n\t\t// We can compare the object itself because the data object is only\n\t\t// updated when the component loader receives a module update.\n\t\tconst currentData = this.dataByRenderId.get(renderId)\n\t\tif (currentData === data) return\n\n\t\tthis.dataByRenderId.set(renderId, data)\n\n\t\tif (isPrimaryRenderId(renderId)) {\n\t\t\tconst serializableRepeaterData = removeNonSerializableData(data, controlMap)\n\t\t\tthis.updatedDataByNodeId.set(renderId, serializableRepeaterData)\n\t\t}\n\n\t\tconst itemIds = data.map(getId)\n\t\tconst previousItemIds = this.itemIdsByRenderId.get(renderId)\n\t\tif (!isShallowEqual(itemIds, previousItemIds)) {\n\t\t\tthis.itemIdsByRenderId.set(renderId, itemIds)\n\t\t\tthis.updatedItemIdsByRenderId.set(renderId, itemIds)\n\t\t}\n\t}\n\n\timport(updates: RepeaterUpdates): Set<RenderId> {\n\t\tassert(this.environment === \"editor\", \"Importing data is only allowed in the editor.\")\n\n\t\tconst { dataUpdates, itemIdsUpdates } = updates\n\n\t\tconst changedRenderIds = new Set<RenderId>()\n\n\t\tfor (const { nodeId, data } of dataUpdates) {\n\t\t\tthis.dataByRenderId.set(nodeId, data as RepeaterData)\n\t\t\tchangedRenderIds.add(nodeId)\n\t\t}\n\n\t\tfor (const { renderId, itemIds } of itemIdsUpdates) {\n\t\t\tthis.itemIdsByRenderId.set(renderId, itemIds)\n\t\t\tchangedRenderIds.add(renderId)\n\t\t}\n\n\t\treturn changedRenderIds\n\t}\n\n\t/**\n\t * Check if all repeater children are currently invisible because of the active filter.\n\t */\n\tisEmpty(repeaterId: NodeID): boolean {\n\t\tconst data = this.dataByRenderId.get(repeaterId)\n\t\treturn !data || data.length === 0\n\t}\n\n\tgetData(nodeId: NodeID): RepeaterData | undefined {\n\t\treturn this.dataByRenderId.get(nodeId)\n\t}\n\n\tgetItemIds(renderId: RenderId): readonly string[] | undefined {\n\t\treturn this.itemIdsByRenderId.get(renderId)\n\t}\n\n\texport(): RepeaterUpdates | undefined {\n\t\tassert(this.environment === \"sandbox\", \"No need to collect and send updates from within the editor.\")\n\n\t\tif (this.updatedDataByNodeId.size === 0 && this.updatedItemIdsByRenderId.size === 0) return\n\n\t\tconst dataUpdates: RepeaterDataUpdate[] = []\n\n\t\tfor (const [nodeId, data] of this.updatedDataByNodeId) {\n\t\t\tdataUpdates.push({ nodeId, data })\n\t\t}\n\n\t\tthis.updatedDataByNodeId.clear()\n\n\t\tconst itemIdsUpdates: RepeaterItemIdsUpdate[] = []\n\n\t\tfor (const [renderId, itemIds] of this.updatedItemIdsByRenderId) {\n\t\t\titemIdsUpdates.push({ renderId, itemIds })\n\t\t}\n\n\t\tthis.updatedItemIdsByRenderId.clear()\n\n\t\treturn { dataUpdates, itemIdsUpdates }\n\t}\n}\n\n/** Strip out invalid values like symbols and class instances. */\nfunction removeNonSerializableData(\n\tdata: RepeaterData,\n\tcontrolMap: VariableProviderControlMap,\n): SerializableRepeaterData {\n\treturn data.map(item => {\n\t\tconst result: RepeaterItemData = {}\n\n\t\tfor (const key in item) {\n\t\t\tconst control = controlMap.get(key)\n\t\t\tif (!control) continue\n\n\t\t\tswitch (control.type) {\n\t\t\t\t// Vector Set Items are React Components, so reporting to the editor is not\n\t\t\t\t// valuable/supported.\n\t\t\t\tcase ControlType.VectorSetItem:\n\t\t\t\t\tresult[key] = undefined\n\t\t\t\t\tcontinue\n\t\t\t\tcase ControlType.RichText:\n\t\t\t\t\t// We can't serialize Rich Text, but we need this data available in the sandbox so that filters and transforms\n\t\t\t\t\t// will be handled correctly. Therefore, if the value is set, we pass a `<p>Content</p>` string to the sandbox\n\t\t\t\t\t// (matches the fallback for Rich Text), and otherwise we store it as `null`.\n\t\t\t\t\tresult[key] = item[key] ? `<p>Content</p>` : null\n\t\t\t\t\tcontinue\n\t\t\t\tcase ControlType.Object:\n\t\t\t\t\tthrow Error(\"Not currently handled in removeNonSerializableData\")\n\t\t\t\tcase ControlType.Slot:\n\t\t\t\t\tthrow Error(\"Should never be part of repeater data\")\n\t\t\t\tdefault:\n\t\t\t\t\tresult[key] = item[key]\n\t\t\t}\n\t\t}\n\n\t\treturn result as SerializableRepeaterItemData\n\t})\n}\n", "import type { RichTextTreeValue } from \"document/models/richText/richTextStorage.ts\"\nimport { isEmptyRichTextDocument } from \"document/models/richText/richTextStorageDocument.ts\"\n\nconst emptyRichTextRegex = /^<(\\w+)[^>]*><br class=\"trailing-break\"><\\/\\1>$/u\n\nexport function isEmptyRichTextValue(value: RichTextTreeValue): boolean {\n\tif (typeof value === \"string\") {\n\t\treturn value === \"\" || emptyRichTextRegex.test(value)\n\t}\n\n\treturn isEmptyRichTextDocument(value)\n}\n", "import type { CollectionItemNode } from \"document/models/CanvasTree/index.ts\"\nimport type { CollectionPropertyControls } from \"document/models/CanvasTree/nodes/CollectionNodeCache.ts\"\nimport type {\n\tVariableDefinition,\n\tVariableID,\n\tVariablesAndDividers,\n} from \"document/models/CanvasTree/traits/WithVariables.ts\"\nimport type { CollectionControlDescription } from \"document/models/controlProps/CollectionControlDescription.ts\"\nimport {\n\ttype CollectionControlProp,\n\tisCollectionControlProp,\n} from \"document/models/controlProps/CollectionControlProp.ts\"\nimport type { RawControlProp } from \"document/models/controlProps/RawControlProp.ts\"\nimport { getControlProp } from \"document/models/controlProps/getControlProps.ts\"\nimport { ControlType } from \"library/render/types/PropertyControls.ts\"\nimport { isNullish, isString, isUndefined } from \"utils/typeChecks.ts\"\n\ntype VariableMap = Map<VariableID, VariableDefinition>\n\nexport function getVariableMap(variables: VariablesAndDividers): VariableMap {\n\tconst result: VariableMap = new Map()\n\n\tfor (const variable of variables) {\n\t\tif (variable.type === \"divider\") continue\n\t\tresult.set(variable.id, variable)\n\t}\n\n\treturn result\n}\n\nfunction getControlPropOverride(\n\tkey: string,\n\tcontrol: CollectionControlDescription,\n\trawControlProp: RawControlProp | undefined,\n\tvariableMap: VariableMap,\n\tpropertyControls: CollectionPropertyControls,\n\tcollectionItemNode: CollectionItemNode,\n): CollectionControlProp | undefined {\n\tif (control.type !== ControlType.String) return\n\tif (isString(rawControlProp?.value)) return\n\n\tconst variable = variableMap.get(key)\n\tif (variable?.type !== ControlType.String) return\n\tif (variable.fallbackValue !== \"associatedVariable\") return\n\n\tconst associatedVariableId = variable.associatedStringVariable\n\tif (isNullish(associatedVariableId)) return\n\n\tconst associatedRawControlProp = collectionItemNode.getControlProp(associatedVariableId)\n\tconst associatedControl = propertyControls[associatedVariableId]\n\tif (isUndefined(associatedControl)) return\n\n\tconst associatedControlProp = getControlProp(associatedControl, associatedRawControlProp)\n\tif (associatedControlProp?.type !== ControlType.String) return\n\n\treturn associatedControlProp\n}\n\nexport function getCollectionControlProp(\n\tkey: string,\n\tcontrol: CollectionControlDescription,\n\tvariableMap: VariableMap,\n\tpropertyControls: CollectionPropertyControls,\n\tcollectionItemNode: CollectionItemNode,\n): CollectionControlProp | undefined {\n\tconst rawControlProp = collectionItemNode.getControlProp(key)\n\n\tconst controlPropOverride = getControlPropOverride(\n\t\tkey,\n\t\tcontrol,\n\t\trawControlProp,\n\t\tvariableMap,\n\t\tpropertyControls,\n\t\tcollectionItemNode,\n\t)\n\n\tconst controlProp = controlPropOverride ?? getControlProp(control, rawControlProp)\n\tif (isCollectionControlProp(controlProp)) return controlProp\n}\n", "import { assert, type ModuleExportIdentifierString, shouldBeNever } from \"@framerjs/shared\"\nimport { isDynamicValue } from \"document/models/CanvasTree/traits/DynamicValue.ts\"\nimport type { ResponsiveImage } from \"document/models/CanvasTree/traits/ResponsiveImage.ts\"\nimport { type Link, getLink, isLinkToURL } from \"document/models/CanvasTree/traits/utils/Link.ts\"\nimport type { LocalizedTextValue, LocalizedValue, LocalizedValues } from \"document/models/LocalizedValue.ts\"\nimport type { CollectionControlDescription } from \"document/models/controlProps/CollectionControlDescription.ts\"\nimport type { CollectionControlProp } from \"document/models/controlProps/CollectionControlProp.ts\"\nimport { withId } from \"document/models/controlProps/ControlProp.ts\"\nimport type { WithControlFocalPoint } from \"document/models/controlProps/WithControlFocalPoint.ts\"\nimport type { RichTextTreeValue } from \"document/models/richText/richTextStorage.ts\"\nimport type { LinkToWebPage } from \"library/modules/LinkToWebPage.ts\"\nimport type { DatabaseValue } from \"library/modules/cms/DatabaseValue.ts\"\nimport type { DatabaseRichTextPointer, DatabaseVectorSetItemPointer } from \"library/modules/cms/types.ts\"\nimport { ControlType } from \"library/render/types/PropertyControls.ts\"\nimport type { Locale } from \"library/router/types.ts\"\nimport { isEmptyRichTextValue } from \"utils/isEmptyRichTextValue.ts\"\nimport { mapObjectProperties } from \"utils/mapObjectProperties.ts\"\nimport { isNull, isString, isUndefined, isValidDate } from \"utils/typeChecks.ts\"\nimport { arrayIdKey } from \"./dataIdKeys.ts\"\n\nexport interface DatabaseValueResolvers {\n\tresolveColor(value: string): string | undefined\n\tresolveFile(identifier: string): string | undefined\n\tresolveImage(identifier: string, focalPoint: WithControlFocalPoint | undefined): ResponsiveImage | undefined\n\tresolveLink(link: Link): LinkToWebPage | string | undefined\n\tresolveRichTextPointer(value: RichTextTreeValue): DatabaseRichTextPointer | undefined\n\tresolveVectorSetItemPointer(identifier: ModuleExportIdentifierString): DatabaseVectorSetItemPointer | undefined\n}\n\ninterface DatabaseValueOptions {\n\tcontrol: CollectionControlDescription\n\tcontrolProp: CollectionControlProp\n\tresolvers: DatabaseValueResolvers\n\tlocale: Locale | undefined\n}\n\nexport function getDatabaseValue({\n\tcontrol,\n\tcontrolProp,\n\tresolvers,\n\tlocale,\n}: DatabaseValueOptions): Exclude<DatabaseValue, null> | undefined {\n\tswitch (controlProp.type) {\n\t\tcase ControlType.Array: {\n\t\t\tassert(control.type === ControlType.Array, \"Invalid control\")\n\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\n\t\t\tconst itemValues = value.map(\n\t\t\t\titemControlProp =>\n\t\t\t\t\tgetDatabaseValue({\n\t\t\t\t\t\tcontrol: control.control,\n\t\t\t\t\t\tcontrolProp: itemControlProp,\n\t\t\t\t\t\tresolvers,\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t}) ?? null,\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Array,\n\t\t\t\tvalue: itemValues,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Boolean: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isNull(value)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Boolean,\n\t\t\t\tvalue,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.CollectionReference: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.String,\n\t\t\t\tvalue,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Color: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isNull(value)) return\n\n\t\t\tconst color = resolvers.resolveColor(value)\n\t\t\tif (isUndefined(color)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Color,\n\t\t\t\tvalue: color,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Date: {\n\t\t\tassert(control.type === ControlType.Date, \"Invalid control\")\n\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\tconst date = new Date(value)\n\t\t\tif (!isValidDate(date)) return\n\n\t\t\tif (!control.displayTime) {\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0)\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Date,\n\t\t\t\tvalue: date.toISOString(),\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Enum: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\t// Collections don't support enums that aren't strings.\n\t\t\tassert(isString(value), \"Enum is not a string\")\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Enum,\n\t\t\t\tvalue,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.File: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\tconst url = resolvers.resolveFile(value)\n\t\t\tif (isUndefined(url)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.File,\n\t\t\t\tvalue: url,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Image: {\n\t\t\tconst localizedValue = getLocalizedValue(control, controlProp.valueLocalized, locale)\n\t\t\tconst localizedImageValue = localizedValue?.value\n\t\t\tconst value = isString(localizedImageValue) ? localizedImageValue : controlProp.value\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\tconst focalPoint = localizedValue?.imageFocalPoint ?? controlProp\n\t\t\tconst image = resolvers.resolveImage(value, focalPoint)\n\t\t\tif (isUndefined(image)) return\n\n\t\t\tconst localizedAlt = getLocalizedValue(control, controlProp.altLocalized, locale)\n\t\t\tconst alt = isString(localizedAlt?.value) ? localizedAlt.value : controlProp.alt\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.ResponsiveImage,\n\t\t\t\tvalue: { ...image, alt } satisfies ResponsiveImage,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Link: {\n\t\t\tlet value = getLink(controlProp.value)\n\n\t\t\t// Only external links can be localized.\n\t\t\tif (isLinkToURL(value)) {\n\t\t\t\tconst localizedValue = getLocalizedValue(control, controlProp.valueLocalized, locale)\n\t\t\t\tif (isString(localizedValue?.value) && localizedValue.value) {\n\t\t\t\t\tvalue = getLink(localizedValue.value)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\tconst link = resolvers.resolveLink(value)\n\t\t\tif (isUndefined(link)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Link,\n\t\t\t\tvalue: link,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.MultiCollectionReference: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isUndefined(value)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Array,\n\t\t\t\tvalue: value.map(id => ({\n\t\t\t\t\ttype: ControlType.String,\n\t\t\t\t\tvalue: id,\n\t\t\t\t})),\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Number: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isNull(value)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Number,\n\t\t\t\tvalue,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Object: {\n\t\t\tassert(control.type === ControlType.Object, \"Invalid control\")\n\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isNull(value)) return\n\n\t\t\tconst propertyValues = mapObjectProperties(control.controls, (key, propertyControl) => {\n\t\t\t\tconst propertyControlProp = value[key]\n\t\t\t\tif (!propertyControlProp) return null\n\n\t\t\t\treturn (\n\t\t\t\t\tgetDatabaseValue({\n\t\t\t\t\t\tcontrol: propertyControl,\n\t\t\t\t\t\tcontrolProp: propertyControlProp,\n\t\t\t\t\t\tresolvers,\n\t\t\t\t\t\tlocale,\n\t\t\t\t\t}) ?? null\n\t\t\t\t)\n\t\t\t})\n\n\t\t\tif (withId(controlProp)) {\n\t\t\t\tpropertyValues[arrayIdKey] = {\n\t\t\t\t\ttype: ControlType.String,\n\t\t\t\t\tvalue: controlProp.id,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.Object,\n\t\t\t\tvalue: propertyValues,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.RichText: {\n\t\t\tconst localizedValue = getLocalizedValue(control, controlProp.valueLocalized, locale)\n\t\t\tconst value = localizedValue?.value ?? controlProp.value\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isEmptyRichTextValue(value)) return\n\n\t\t\tconst pointer = resolvers.resolveRichTextPointer(value)\n\t\t\tif (isUndefined(pointer)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.RichText,\n\t\t\t\tvalue: pointer,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.String: {\n\t\t\tconst localizedValue = getLocalizedValue(control, controlProp.valueLocalized, locale)\n\t\t\tconst value = isString(localizedValue?.value) ? localizedValue.value : controlProp.value\n\t\t\tif (isDynamicValue(value)) return\n\t\t\tif (isNull(value)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.String,\n\t\t\t\tvalue,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.VectorSetItem: {\n\t\t\tconst { value } = controlProp\n\t\t\tif (isDynamicValue(value) || isUndefined(value)) return\n\n\t\t\tconst pointer = resolvers.resolveVectorSetItemPointer(value)\n\t\t\tif (isUndefined(pointer)) return\n\n\t\t\treturn {\n\t\t\t\ttype: ControlType.VectorSetItem,\n\t\t\t\tvalue: pointer,\n\t\t\t}\n\t\t}\n\n\t\tdefault:\n\t\t\tshouldBeNever(controlProp)\n\t}\n}\n\n/**\n * Get the localized value for a given locale. This will traverse the fallback chain of the locale\n * until it finds a localized value.\n */\nfunction getLocalizedValue(\n\tcontrol: CollectionControlDescription,\n\tvalueLocalized: LocalizedValues<LocalizedTextValue> | undefined,\n\tlocale: Locale | undefined,\n): LocalizedValue<LocalizedTextValue> | undefined {\n\tif (!valueLocalized) return\n\tif (!locale) return\n\n\tconst preventLocalization = getPreventLocalization(control)\n\tif (preventLocalization) return\n\n\twhile (locale) {\n\t\tconst localizedValue = valueLocalized[locale.id]\n\t\tif (localizedValue && !isNull(localizedValue.value)) return localizedValue\n\t\tlocale = locale.fallback\n\t}\n}\n\nfunction getPreventLocalization(control: CollectionControlDescription) {\n\tif (\"preventLocalization\" in control) {\n\t\treturn control.preventLocalization ?? false\n\t}\n\n\treturn false\n}\n", "import { shouldBeNever } from \"@framerjs/shared\"\nimport type { CollectionControlDescription } from \"document/models/controlProps/CollectionControlDescription.ts\"\nimport type {\n\tDatabaseObjectValueDefinition,\n\tDatabaseValueDefinition,\n} from \"library/modules/cms/DatabaseValueDefinition.ts\"\nimport { ControlType } from \"library/render/types/PropertyControls.ts\"\nimport { arrayIdKey } from \"./dataIdKeys.ts\"\n\nexport function getDatabaseValueDefinition(\n\tcontrol: CollectionControlDescription,\n\tgetControlType = <Type extends ControlType>(type: Type) => type,\n): DatabaseValueDefinition | undefined {\n\tswitch (control.type) {\n\t\tcase ControlType.Array: {\n\t\t\tconst itemDefinition = getDatabaseValueDefinition(\n\t\t\t\tcontrol.control,\n\t\t\t\tgetControlType,\n\t\t\t) as DatabaseObjectValueDefinition\n\n\t\t\titemDefinition.definitions[arrayIdKey] = {\n\t\t\t\ttype: getControlType(ControlType.String),\n\t\t\t\tisNullable: false,\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: getControlType(ControlType.Array),\n\t\t\t\tisNullable: true,\n\t\t\t\tdefinition: itemDefinition,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Boolean:\n\t\tcase ControlType.Color:\n\t\tcase ControlType.Date:\n\t\tcase ControlType.Enum:\n\t\tcase ControlType.File:\n\t\tcase ControlType.Link:\n\t\tcase ControlType.Number:\n\t\tcase ControlType.RichText:\n\t\tcase ControlType.String: {\n\t\t\treturn {\n\t\t\t\ttype: getControlType(control.type),\n\t\t\t\tisNullable: true,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.CollectionReference: {\n\t\t\treturn {\n\t\t\t\ttype: getControlType(ControlType.String),\n\t\t\t\tisNullable: true,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Image:\n\t\tcase ControlType.ResponsiveImage: {\n\t\t\treturn {\n\t\t\t\ttype: getControlType(ControlType.ResponsiveImage),\n\t\t\t\tisNullable: true,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.MultiCollectionReference: {\n\t\t\treturn {\n\t\t\t\ttype: getControlType(ControlType.Array),\n\t\t\t\tisNullable: true,\n\t\t\t\tdefinition: {\n\t\t\t\t\ttype: getControlType(ControlType.String),\n\t\t\t\t\tisNullable: true,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.Object: {\n\t\t\tconst propertyControlEntries = Object.entries(control.controls)\n\t\t\tconst propertyDefinitions: Record<string, DatabaseValueDefinition> = {}\n\n\t\t\tfor (const [key, propertyControl] of propertyControlEntries) {\n\t\t\t\tconst definition = getDatabaseValueDefinition(propertyControl, getControlType)\n\t\t\t\tif (!definition) continue\n\n\t\t\t\tpropertyDefinitions[key] = definition\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: getControlType(ControlType.Object),\n\t\t\t\tisNullable: true,\n\t\t\t\tdefinitions: propertyDefinitions,\n\t\t\t}\n\t\t}\n\n\t\tcase ControlType.VectorSetItem: {\n\t\t\treturn {\n\t\t\t\ttype: getControlType(ControlType.VectorSetItem),\n\t\t\t\tisNullable: true,\n\t\t\t}\n\t\t}\n\n\t\tdefault:\n\t\t\tshouldBeNever(control)\n\t}\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAgC,OAAkB;AACjE,SAAO,MAAM;AACd;;;ACKA,IAAM,qBAAqB,oBAAI,IAA4B;AAAA;AAAA,EAE1D,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA;AAAA,EAElC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,OAAO;AAAA;AAAA,EAChC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA;AAAA,EAElC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS;AAAA;AAAA,EAClC,CAAC,wBAAwB,SAAS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",
  "names": []
}
