[{"data":1,"prerenderedAt":1543},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection":342,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection-surround":1538},[4,14,36,69,140,325],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,178,203,207,279,304,308],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181,"children":182,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[183,187,191,195,199],{"title":184,"path":185,"stem":186},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":188,"path":189,"stem":190},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":192,"path":193,"stem":194},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":196,"path":197,"stem":198},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":200,"path":201,"stem":202},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":204,"path":205,"stem":206},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":208,"path":209,"stem":210,"children":211,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[212,245,262],{"title":213,"path":214,"stem":215,"children":216,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[217,221,225,229,233,237,241],{"title":218,"path":219,"stem":220},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":222,"path":223,"stem":224},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":226,"path":227,"stem":228},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":230,"path":231,"stem":232},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":234,"path":235,"stem":236},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":238,"path":239,"stem":240},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":242,"path":243,"stem":244},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":246,"path":247,"stem":248,"children":249,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[250,254,258],{"title":251,"path":252,"stem":253},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":255,"path":256,"stem":257},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":259,"path":260,"stem":261},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":263,"path":264,"stem":265,"children":266,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[267,271,275],{"title":268,"path":269,"stem":270},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":272,"path":273,"stem":274},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":276,"path":277,"stem":278},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":280,"path":281,"stem":282,"children":283,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[284,288,292,296,300],{"title":285,"path":286,"stem":287},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":289,"path":290,"stem":291},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":293,"path":294,"stem":295},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":297,"path":298,"stem":299},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":301,"path":302,"stem":303},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":305,"path":306,"stem":307},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":309,"path":310,"stem":311,"children":312,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[313,317,321],{"title":314,"path":315,"stem":316},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":318,"path":319,"stem":320},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":322,"path":323,"stem":324},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":326,"path":327,"stem":328,"children":329,"page":35},"Deployment","\u002Fdeployment","6.deployment",[330,334,338],{"title":331,"path":332,"stem":333},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":335,"path":336,"stem":337},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":339,"path":340,"stem":341},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":343,"title":344,"badge":345,"body":346,"description":1532,"extension":1533,"links":345,"meta":1534,"navigation":1535,"path":243,"seo":1536,"stem":244,"__hash__":1537},"docs\u002F5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection.md","useCwaFormCollection",null,{"type":347,"value":348,"toc":1522},"minimark",[349,384,457,462,521,525,618,622,677,681,686,1011,1265,1269,1290,1470,1474,1518],[350,351,352,355,356,365,366,369,370,373,374,377,378,383],"p",{},[353,354,344],"code",{}," manages a Symfony ",[357,358,362],"a",{"href":359,"rel":360},"https:\u002F\u002Fsymfony.com\u002Fdoc\u002Fcurrent\u002Freference\u002Fforms\u002Ftypes\u002Fcollection.html",[361],"nofollow",[353,363,364],{},"CollectionType"," field. It clones the ",[353,367,368],{},"prototype"," from the API response each time ",[353,371,372],{},"addEntry()"," is called, assigns a monotonic index, and tracks the list of active entry ",[353,375,376],{},"full_name"," strings. Child components then call ",[357,379,380],{"href":235},[353,381,382],{},"useCwaFormInput"," for each sub-field; their lifecycle hooks handle registration\u002Funregistration automatically.",[385,386,391],"pre",{"className":387,"code":388,"language":389,"meta":390,"style":390},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const { entries, addEntry, removeEntry, vars } = useCwaFormCollection(iri, 'form_name[fieldName]')\n","ts","",[353,392,393],{"__ignoreMap":390},[394,395,398,402,406,410,413,416,418,421,423,426,429,433,437,441,443,447,451,454],"span",{"class":396,"line":397},"line",1,[394,399,401],{"class":400},"swB56","const",[394,403,405],{"class":404},"sOvfz"," {",[394,407,409],{"class":408},"sc2zw"," entries",[394,411,412],{"class":404},",",[394,414,415],{"class":408}," addEntry",[394,417,412],{"class":404},[394,419,420],{"class":408}," removeEntry",[394,422,412],{"class":404},[394,424,425],{"class":408}," vars",[394,427,428],{"class":404}," }",[394,430,432],{"class":431},"sVlFx"," =",[394,434,436],{"class":435},"sKpYG"," useCwaFormCollection",[394,438,440],{"class":439},"sPB8G","(iri",[394,442,412],{"class":404},[394,444,446],{"class":445},"seSrl"," '",[394,448,450],{"class":449},"sLL54","form_name[fieldName]",[394,452,453],{"class":445},"'",[394,455,456],{"class":439},")\n",[458,459,461],"h2",{"id":460},"parameters","Parameters",[463,464,465,481],"table",{},[466,467,468],"thead",{},[469,470,471,475,478],"tr",{},[472,473,474],"th",{},"Parameter",[472,476,477],{},"Type",[472,479,480],{},"Description",[482,483,484,500],"tbody",{},[469,485,486,492,497],{},[487,488,489],"td",{},[353,490,491],{},"iri",[487,493,494],{},[353,495,496],{},"Ref\u003Cstring | undefined>",[487,498,499],{},"IRI of the Form component resource",[469,501,502,507,512],{},[487,503,504],{},[353,505,506],{},"collectionFullName",[487,508,509],{},[353,510,511],{},"string",[487,513,514,516,517,520],{},[353,515,376],{}," of the CollectionType field (e.g. ",[353,518,519],{},"registration[tags]",")",[458,522,524],{"id":523},"return-value","Return value",[463,526,527,538],{},[466,528,529],{},[469,530,531,534,536],{},[472,532,533],{},"Property",[472,535,477],{},[472,537,480],{},[482,539,540,558,573,590],{},[469,541,542,547,552],{},[487,543,544],{},[353,545,546],{},"entries",[487,548,549],{},[353,550,551],{},"ComputedRef\u003Cstring[]>",[487,553,554,555,557],{},"Ordered list of active entry ",[353,556,376],{}," strings",[469,559,560,565,570],{},[487,561,562],{},[353,563,564],{},"addEntry",[487,566,567],{},[353,568,569],{},"() => void",[487,571,572],{},"Clone the prototype and append a new entry",[469,574,575,580,585],{},[487,576,577],{},[353,578,579],{},"removeEntry",[487,581,582],{},[353,583,584],{},"(fullName: string) => void",[487,586,587,588],{},"Remove an entry by its ",[353,589,376],{},[469,591,592,597,602],{},[487,593,594],{},[353,595,596],{},"vars",[487,598,599],{},[353,600,601],{},"ComputedRef",[487,603,604,605,608,609,608,611,608,614,617],{},"Collection field vars from the API (",[353,606,607],{},"label",", ",[353,610,368],{},[353,612,613],{},"allow_add",[353,615,616],{},"allow_delete",", errors, etc.)",[458,619,621],{"id":620},"how-it-works","How it works",[623,624,625,644,651,654],"ul",{},[626,627,628,630,631,634,635,638,639,641,642],"li",{},[353,629,372],{}," deep-clones ",[353,632,633],{},"vars.prototype",", replaces every ",[353,636,637],{},"__name__"," placeholder (recursively through nested children) with a monotonic counter, then pushes the resolved ",[353,640,376],{}," onto ",[353,643,546],{},[626,645,646,647,650],{},"Indices are never reused after removal, so Vue ",[353,648,649],{},"v-for"," keys remain stable",[626,652,653],{},"The prototype is never mutated",[626,655,656,657,660,661,664,665,668,669,672,673,676],{},"Child components must call ",[353,658,659],{},"useCwaFormInput(iriRef, entryFullName)"," (or ",[353,662,663],{},"useCwaFormInput(iriRef, \\","${entryFullName}",[394,666,667],{},"subField","`)",[353,670,671],{},"for compound types) — their","onMounted",[353,674,675],{},"\u002F","onUnmounted` hooks handle registration\u002Fderegistration with the form store",[458,678,680],{"id":679},"example","Example",[682,683,685],"h3",{"id":684},"simple-collection-texttype-entries","Simple collection (TextType entries)",[385,687,691],{"className":688,"code":689,"language":690,"meta":390,"style":390},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003C!-- parent component -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string }>()\nconst iriRef = toRef(props, 'iri')\nconst tags = useCwaFormCollection(iriRef, 'example_form[tags]')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CTagEntry\n      v-for=\"entry in tags.entries.value\"\n      :key=\"entry\"\n      :iri=\"props.iri\"\n      :entry-full-name=\"entry\"\n      @remove=\"tags.removeEntry(entry)\"\n    \u002F>\n    \u003Cbutton v-if=\"tags.vars.value?.allow_add\" @click.prevent=\"tags.addEntry()\">\n      Add Tag\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue",[353,692,693,699,729,762,788,814,824,831,841,852,861,877,892,907,921,936,942,976,982,992,1002],{"__ignoreMap":390},[394,694,695],{"class":396,"line":397},[394,696,698],{"class":697},"sTBSN","\u003C!-- parent component -->\n",[394,700,702,705,709,713,716,719,722,724,726],{"class":396,"line":701},2,[394,703,704],{"class":404},"\u003C",[394,706,708],{"class":707},"s-h7I","script",[394,710,712],{"class":711},"sGtlX"," setup",[394,714,715],{"class":711}," lang",[394,717,718],{"class":404},"=",[394,720,721],{"class":445},"\"",[394,723,389],{"class":449},[394,725,721],{"class":445},[394,727,728],{"class":404},">\n",[394,730,732,734,737,739,742,745,749,752,756,759],{"class":396,"line":731},3,[394,733,401],{"class":400},[394,735,736],{"class":408}," props",[394,738,432],{"class":431},[394,740,741],{"class":435}," defineProps",[394,743,744],{"class":404},"\u003C{",[394,746,748],{"class":747},"ssFBz"," iri",[394,750,751],{"class":431},":",[394,753,755],{"class":754},"sbW4m"," string",[394,757,758],{"class":404}," }>",[394,760,761],{"class":439},"()\n",[394,763,765,767,770,772,775,778,780,782,784,786],{"class":396,"line":764},4,[394,766,401],{"class":400},[394,768,769],{"class":408}," iriRef",[394,771,432],{"class":431},[394,773,774],{"class":435}," toRef",[394,776,777],{"class":439},"(props",[394,779,412],{"class":404},[394,781,446],{"class":445},[394,783,491],{"class":449},[394,785,453],{"class":445},[394,787,456],{"class":439},[394,789,791,793,796,798,800,803,805,807,810,812],{"class":396,"line":790},5,[394,792,401],{"class":400},[394,794,795],{"class":408}," tags",[394,797,432],{"class":431},[394,799,436],{"class":435},[394,801,802],{"class":439},"(iriRef",[394,804,412],{"class":404},[394,806,446],{"class":445},[394,808,809],{"class":449},"example_form[tags]",[394,811,453],{"class":445},[394,813,456],{"class":439},[394,815,817,820,822],{"class":396,"line":816},6,[394,818,819],{"class":404},"\u003C\u002F",[394,821,708],{"class":707},[394,823,728],{"class":404},[394,825,827],{"class":396,"line":826},7,[394,828,830],{"emptyLinePlaceholder":829},true,"\n",[394,832,834,836,839],{"class":396,"line":833},8,[394,835,704],{"class":404},[394,837,838],{"class":707},"template",[394,840,728],{"class":404},[394,842,844,847,850],{"class":396,"line":843},9,[394,845,846],{"class":404},"  \u003C",[394,848,849],{"class":707},"div",[394,851,728],{"class":404},[394,853,855,858],{"class":396,"line":854},10,[394,856,857],{"class":404},"    \u003C",[394,859,860],{"class":707},"TagEntry\n",[394,862,864,867,869,871,874],{"class":396,"line":863},11,[394,865,866],{"class":711},"      v-for",[394,868,718],{"class":404},[394,870,721],{"class":445},[394,872,873],{"class":449},"entry in tags.entries.value",[394,875,876],{"class":445},"\"\n",[394,878,880,883,885,887,890],{"class":396,"line":879},12,[394,881,882],{"class":711},"      :key",[394,884,718],{"class":404},[394,886,721],{"class":445},[394,888,889],{"class":449},"entry",[394,891,876],{"class":445},[394,893,895,898,900,902,905],{"class":396,"line":894},13,[394,896,897],{"class":711},"      :iri",[394,899,718],{"class":404},[394,901,721],{"class":445},[394,903,904],{"class":449},"props.iri",[394,906,876],{"class":445},[394,908,910,913,915,917,919],{"class":396,"line":909},14,[394,911,912],{"class":711},"      :entry-full-name",[394,914,718],{"class":404},[394,916,721],{"class":445},[394,918,889],{"class":449},[394,920,876],{"class":445},[394,922,924,927,929,931,934],{"class":396,"line":923},15,[394,925,926],{"class":711},"      @remove",[394,928,718],{"class":404},[394,930,721],{"class":445},[394,932,933],{"class":449},"tags.removeEntry(entry)",[394,935,876],{"class":445},[394,937,939],{"class":396,"line":938},16,[394,940,941],{"class":404},"    \u002F>\n",[394,943,945,947,950,953,955,957,960,962,965,967,969,972,974],{"class":396,"line":944},17,[394,946,857],{"class":404},[394,948,949],{"class":707},"button",[394,951,952],{"class":711}," v-if",[394,954,718],{"class":404},[394,956,721],{"class":445},[394,958,959],{"class":449},"tags.vars.value?.allow_add",[394,961,721],{"class":445},[394,963,964],{"class":711}," @click.prevent",[394,966,718],{"class":404},[394,968,721],{"class":445},[394,970,971],{"class":449},"tags.addEntry()",[394,973,721],{"class":445},[394,975,728],{"class":404},[394,977,979],{"class":396,"line":978},18,[394,980,981],{"class":439},"      Add Tag\n",[394,983,985,988,990],{"class":396,"line":984},19,[394,986,987],{"class":404},"    \u003C\u002F",[394,989,949],{"class":707},[394,991,728],{"class":404},[394,993,995,998,1000],{"class":396,"line":994},20,[394,996,997],{"class":404},"  \u003C\u002F",[394,999,849],{"class":707},[394,1001,728],{"class":404},[394,1003,1005,1007,1009],{"class":396,"line":1004},21,[394,1006,819],{"class":404},[394,1008,838],{"class":707},[394,1010,728],{"class":404},[385,1012,1014],{"className":688,"code":1013,"language":690,"meta":390,"style":390},"\u003C!-- TagEntry.vue — child component -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string | undefined, entryFullName: string }>()\ndefineEmits\u003C{ remove: [] }>()\nconst iriRef = toRef(props, 'iri')\nconst field = useCwaFormInput(iriRef, props.entryFullName)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CUInput v-model=\"field.value.value\" @blur=\"field.onBlur\" @input=\"field.onInput\" \u002F>\n    \u003CUButton @click=\"$emit('remove')\">Remove\u003C\u002FUButton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[353,1015,1016,1021,1041,1078,1098,1120,1144,1152,1156,1164,1172,1218,1249,1257],{"__ignoreMap":390},[394,1017,1018],{"class":396,"line":397},[394,1019,1020],{"class":697},"\u003C!-- TagEntry.vue — child component -->\n",[394,1022,1023,1025,1027,1029,1031,1033,1035,1037,1039],{"class":396,"line":701},[394,1024,704],{"class":404},[394,1026,708],{"class":707},[394,1028,712],{"class":711},[394,1030,715],{"class":711},[394,1032,718],{"class":404},[394,1034,721],{"class":445},[394,1036,389],{"class":449},[394,1038,721],{"class":445},[394,1040,728],{"class":404},[394,1042,1043,1045,1047,1049,1051,1053,1055,1057,1059,1062,1065,1067,1070,1072,1074,1076],{"class":396,"line":731},[394,1044,401],{"class":400},[394,1046,736],{"class":408},[394,1048,432],{"class":431},[394,1050,741],{"class":435},[394,1052,744],{"class":404},[394,1054,748],{"class":747},[394,1056,751],{"class":431},[394,1058,755],{"class":754},[394,1060,1061],{"class":431}," |",[394,1063,1064],{"class":754}," undefined",[394,1066,412],{"class":404},[394,1068,1069],{"class":747}," entryFullName",[394,1071,751],{"class":431},[394,1073,755],{"class":754},[394,1075,758],{"class":404},[394,1077,761],{"class":439},[394,1079,1080,1083,1085,1088,1090,1093,1096],{"class":396,"line":764},[394,1081,1082],{"class":435},"defineEmits",[394,1084,744],{"class":404},[394,1086,1087],{"class":747}," remove",[394,1089,751],{"class":431},[394,1091,1092],{"class":439}," [] ",[394,1094,1095],{"class":404},"}>",[394,1097,761],{"class":439},[394,1099,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118],{"class":396,"line":790},[394,1101,401],{"class":400},[394,1103,769],{"class":408},[394,1105,432],{"class":431},[394,1107,774],{"class":435},[394,1109,777],{"class":439},[394,1111,412],{"class":404},[394,1113,446],{"class":445},[394,1115,491],{"class":449},[394,1117,453],{"class":445},[394,1119,456],{"class":439},[394,1121,1122,1124,1127,1129,1132,1134,1136,1138,1141],{"class":396,"line":816},[394,1123,401],{"class":400},[394,1125,1126],{"class":408}," field",[394,1128,432],{"class":431},[394,1130,1131],{"class":435}," useCwaFormInput",[394,1133,802],{"class":439},[394,1135,412],{"class":404},[394,1137,736],{"class":439},[394,1139,1140],{"class":404},".",[394,1142,1143],{"class":439},"entryFullName)\n",[394,1145,1146,1148,1150],{"class":396,"line":826},[394,1147,819],{"class":404},[394,1149,708],{"class":707},[394,1151,728],{"class":404},[394,1153,1154],{"class":396,"line":833},[394,1155,830],{"emptyLinePlaceholder":829},[394,1157,1158,1160,1162],{"class":396,"line":843},[394,1159,704],{"class":404},[394,1161,838],{"class":707},[394,1163,728],{"class":404},[394,1165,1166,1168,1170],{"class":396,"line":854},[394,1167,846],{"class":404},[394,1169,849],{"class":707},[394,1171,728],{"class":404},[394,1173,1174,1176,1179,1182,1184,1186,1189,1191,1194,1196,1198,1201,1203,1206,1208,1210,1213,1215],{"class":396,"line":863},[394,1175,857],{"class":404},[394,1177,1178],{"class":707},"UInput",[394,1180,1181],{"class":711}," v-model",[394,1183,718],{"class":404},[394,1185,721],{"class":445},[394,1187,1188],{"class":449},"field.value.value",[394,1190,721],{"class":445},[394,1192,1193],{"class":711}," @blur",[394,1195,718],{"class":404},[394,1197,721],{"class":445},[394,1199,1200],{"class":449},"field.onBlur",[394,1202,721],{"class":445},[394,1204,1205],{"class":711}," @input",[394,1207,718],{"class":404},[394,1209,721],{"class":445},[394,1211,1212],{"class":449},"field.onInput",[394,1214,721],{"class":445},[394,1216,1217],{"class":404}," \u002F>\n",[394,1219,1220,1222,1225,1228,1230,1232,1235,1237,1240,1243,1245,1247],{"class":396,"line":879},[394,1221,857],{"class":404},[394,1223,1224],{"class":707},"UButton",[394,1226,1227],{"class":711}," @click",[394,1229,718],{"class":404},[394,1231,721],{"class":445},[394,1233,1234],{"class":449},"$emit('remove')",[394,1236,721],{"class":445},[394,1238,1239],{"class":404},">",[394,1241,1242],{"class":439},"Remove",[394,1244,819],{"class":404},[394,1246,1224],{"class":707},[394,1248,728],{"class":404},[394,1250,1251,1253,1255],{"class":396,"line":894},[394,1252,997],{"class":404},[394,1254,849],{"class":707},[394,1256,728],{"class":404},[394,1258,1259,1261,1263],{"class":396,"line":909},[394,1260,819],{"class":404},[394,1262,838],{"class":707},[394,1264,728],{"class":404},[682,1266,1268],{"id":1267},"compound-collection-sub-fields-per-entry","Compound collection (sub-fields per entry)",[350,1270,1271,1272,1274,1275,1278,1279,1282,1283,1286,1287,1289],{},"For a ",[353,1273,364],{}," where each entry is a compound type (e.g. a ",[353,1276,1277],{},"ChildType"," with ",[353,1280,1281],{},"name"," and ",[353,1284,1285],{},"age"," sub-fields), the child component calls ",[353,1288,382],{}," for each sub-field:",[385,1291,1293],{"className":688,"code":1292,"language":690,"meta":390,"style":390},"\u003C!-- ChildEntry.vue -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string | undefined, entryFullName: string }>()\ndefineEmits\u003C{ remove: [] }>()\nconst iriRef = toRef(props, 'iri')\nconst name = useCwaFormInput(iriRef, `${props.entryFullName}[name]`)\nconst age  = useCwaFormInput(iriRef, `${props.entryFullName}[age]`)\n\u003C\u002Fscript>\n",[353,1294,1295,1300,1320,1354,1370,1392,1429,1462],{"__ignoreMap":390},[394,1296,1297],{"class":396,"line":397},[394,1298,1299],{"class":697},"\u003C!-- ChildEntry.vue -->\n",[394,1301,1302,1304,1306,1308,1310,1312,1314,1316,1318],{"class":396,"line":701},[394,1303,704],{"class":404},[394,1305,708],{"class":707},[394,1307,712],{"class":711},[394,1309,715],{"class":711},[394,1311,718],{"class":404},[394,1313,721],{"class":445},[394,1315,389],{"class":449},[394,1317,721],{"class":445},[394,1319,728],{"class":404},[394,1321,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352],{"class":396,"line":731},[394,1323,401],{"class":400},[394,1325,736],{"class":408},[394,1327,432],{"class":431},[394,1329,741],{"class":435},[394,1331,744],{"class":404},[394,1333,748],{"class":747},[394,1335,751],{"class":431},[394,1337,755],{"class":754},[394,1339,1061],{"class":431},[394,1341,1064],{"class":754},[394,1343,412],{"class":404},[394,1345,1069],{"class":747},[394,1347,751],{"class":431},[394,1349,755],{"class":754},[394,1351,758],{"class":404},[394,1353,761],{"class":439},[394,1355,1356,1358,1360,1362,1364,1366,1368],{"class":396,"line":764},[394,1357,1082],{"class":435},[394,1359,744],{"class":404},[394,1361,1087],{"class":747},[394,1363,751],{"class":431},[394,1365,1092],{"class":439},[394,1367,1095],{"class":404},[394,1369,761],{"class":439},[394,1371,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390],{"class":396,"line":790},[394,1373,401],{"class":400},[394,1375,769],{"class":408},[394,1377,432],{"class":431},[394,1379,774],{"class":435},[394,1381,777],{"class":439},[394,1383,412],{"class":404},[394,1385,446],{"class":445},[394,1387,491],{"class":449},[394,1389,453],{"class":445},[394,1391,456],{"class":439},[394,1393,1394,1396,1399,1401,1403,1405,1407,1410,1413,1415,1418,1421,1424,1427],{"class":396,"line":816},[394,1395,401],{"class":400},[394,1397,1398],{"class":408}," name",[394,1400,432],{"class":431},[394,1402,1131],{"class":435},[394,1404,802],{"class":439},[394,1406,412],{"class":404},[394,1408,1409],{"class":445}," `${",[394,1411,1412],{"class":439},"props",[394,1414,1140],{"class":445},[394,1416,1417],{"class":439},"entryFullName",[394,1419,1420],{"class":445},"}",[394,1422,1423],{"class":449},"[name]",[394,1425,1426],{"class":445},"`",[394,1428,456],{"class":439},[394,1430,1431,1433,1436,1439,1441,1443,1445,1447,1449,1451,1453,1455,1458,1460],{"class":396,"line":826},[394,1432,401],{"class":400},[394,1434,1435],{"class":408}," age",[394,1437,1438],{"class":431},"  =",[394,1440,1131],{"class":435},[394,1442,802],{"class":439},[394,1444,412],{"class":404},[394,1446,1409],{"class":445},[394,1448,1412],{"class":439},[394,1450,1140],{"class":445},[394,1452,1417],{"class":439},[394,1454,1420],{"class":445},[394,1456,1457],{"class":449},"[age]",[394,1459,1426],{"class":445},[394,1461,456],{"class":439},[394,1463,1464,1466,1468],{"class":396,"line":833},[394,1465,819],{"class":404},[394,1467,708],{"class":707},[394,1469,728],{"class":404},[458,1471,1473],{"id":1472},"notes","Notes",[623,1475,1476,1487,1494,1511],{},[626,1477,1478,1479,1482,1483,1486],{},"Use ",[353,1480,1481],{},"vars.value?.allow_add"," \u002F ",[353,1484,1485],{},"vars.value?.allow_delete"," (from the API response) to conditionally show add\u002Fremove controls",[626,1488,1489,1490,1493],{},"Collection-level errors (e.g. min\u002Fmax count violations) are in ",[353,1491,1492],{},"vars.value?.errors"," — render them separately from individual entry errors",[626,1495,1496,1497,1500,1501,1503,1504,1506,1507,1510],{},"Entries removed via ",[353,1498,1499],{},"removeEntry()"," are immediately dropped from ",[353,1502,546],{},"; the child component unmounts and ",[353,1505,382],{}," unregisters the field values, so they are excluded from the next ",[353,1508,1509],{},"submit()"," payload automatically",[626,1512,1513,1514,1517],{},"See the ",[357,1515,1516],{"href":302},"Forms guide"," for full field-type examples",[1519,1520,1521],"style",{},"html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s-h7I, html code.shiki .s-h7I{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sGtlX, html code.shiki .sGtlX{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .ssFBz, html code.shiki .ssFBz{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}",{"title":390,"searchDepth":701,"depth":701,"links":1523},[1524,1525,1526,1527,1531],{"id":460,"depth":701,"text":461},{"id":523,"depth":701,"text":524},{"id":620,"depth":701,"text":621},{"id":679,"depth":701,"text":680,"children":1528},[1529,1530],{"id":684,"depth":731,"text":685},{"id":1267,"depth":731,"text":1268},{"id":1472,"depth":701,"text":1473},"Manage a Symfony CollectionType field — dynamically add and remove entries at runtime.","md",{},{"title":242},{"title":344,"description":1532},"q9fIAotAKC1V5D7fcWW1gmhkjUqTY1iHRUqStdZ0spM",[1539,1541],{"title":238,"path":239,"stem":240,"description":1540,"children":-1},"Bind a Symfony RepeatedType field (e.g. new password + confirmation) with cross-field validation.",{"title":251,"path":252,"stem":253,"description":1542,"children":-1},"Register a Vue file as a tab in the admin manager panel and get the IRI of the currently selected component.",1782241284041]