[{"data":1,"prerenderedAt":4545},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-auto/auto-admin/m2m-relationships-en":444,"/docs/nuxt-auto/auto-admin/m2m-relationships-surround-en":4540},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"page":445,"fallbackPage":4536},{"id":446,"title":327,"body":447,"description":457,"extension":4535,"links":4536,"meta":4537,"navigation":4536,"ogImage":4536,"path":328,"seo":4538,"stem":329,"__hash__":4539},"nuxt_auto/0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships.md",{"type":448,"value":449,"toc":4488},"minimark",[450,454,458,462,465,480,483,486,491,968,972,1134,1138,1141,1160,1162,1166,1173,1177,1713,1717,1720,1731,1734,1738,1741,1889,1895,1897,1901,1905,1908,2039,2044,2077,2082,2235,2239,2242,2307,2313,2324,2330,2341,2343,2347,2351,2354,2381,2384,2387,2648,2656,2658,2662,2666,2669,2677,2681,2684,2690,2692,2695,2698,2775,2778,2793,2795,2798,2802,2805,2871,2875,2878,3055,3058,3180,3182,3186,3189,3476,3479,3490,3492,3496,3500,3708,3712,3772,3776,3822,3826,3829,3837,3839,3843,3847,3853,3858,3875,3879,3884,3888,3905,3909,3914,3920,4008,4010,4014,4018,4235,4239,4453,4455,4459,4484],[451,452,327],"h1",{"id":453},"m2m-relationships",[455,456,457],"p",{},"This guide covers how M2M relationships work in the auto-admin interface.",[459,460,5],"h2",{"id":461},"overview",[455,463,464],{},"The admin module automatically displays M2M relationships from your Drizzle schema. Relations appear as multi-select fields in edit forms with zero or minimal configuration.",[466,467,468],"blockquote",{},[455,469,470,474,475,479],{},[471,472,473],"strong",{},"📝 Note:"," M2M relations are auto-detected from Drizzle FK references. See the ",[476,477,478],"a",{"href":220},"API M2M Guide"," for how auto-detection works.",[481,482],"hr",{},[459,484,198],{"id":485},"quick-start",[487,488,490],"h3",{"id":489},"_1-define-drizzle-schema","1. Define Drizzle Schema",[492,493,498],"pre",{"className":494,"code":495,"language":496,"meta":497,"style":497},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// modules/blog/schema.ts\nimport { relations } from 'drizzle-orm'\n\nexport const articleCategories = sqliteTable('article_categories', {\n  articleId: integer('article_id')\n    .references(() => articles.id, { onDelete: 'cascade' }),\n  categoryId: integer('category_id')\n    .references(() => categories.id, { onDelete: 'cascade' }),\n}, (table) => ({\n  pk: primaryKey({ columns: [table.articleId, table.categoryId] })\n}))\n\n// Define relations\nexport const articleCategoriesRelations = relations(articleCategories, ({ one }) => ({\n  article: one(articles, {\n    fields: [articleCategories.articleId],\n    references: [articles.id],\n  }),\n  category: one(categories, {\n    fields: [articleCategories.categoryId],\n    references: [categories.id],\n  }),\n}))\n","typescript","",[499,500,501,510,541,548,585,610,660,681,721,743,787,795,800,806,840,857,875,893,903,920,936,952,961],"code",{"__ignoreMap":497},[502,503,506],"span",{"class":504,"line":505},"line",1,[502,507,509],{"class":508},"sHwdD","// modules/blog/schema.ts\n",[502,511,513,517,521,525,528,531,534,538],{"class":504,"line":512},2,[502,514,516],{"class":515},"s7zQu","import",[502,518,520],{"class":519},"sMK4o"," {",[502,522,524],{"class":523},"sTEyZ"," relations",[502,526,527],{"class":519}," }",[502,529,530],{"class":515}," from",[502,532,533],{"class":519}," '",[502,535,537],{"class":536},"sfazB","drizzle-orm",[502,539,540],{"class":519},"'\n",[502,542,544],{"class":504,"line":543},3,[502,545,547],{"emptyLinePlaceholder":546},true,"\n",[502,549,551,554,558,561,564,568,571,574,577,579,582],{"class":504,"line":550},4,[502,552,553],{"class":515},"export",[502,555,557],{"class":556},"spNyl"," const",[502,559,560],{"class":523}," articleCategories ",[502,562,563],{"class":519},"=",[502,565,567],{"class":566},"s2Zo4"," sqliteTable",[502,569,570],{"class":523},"(",[502,572,573],{"class":519},"'",[502,575,576],{"class":536},"article_categories",[502,578,573],{"class":519},[502,580,581],{"class":519},",",[502,583,584],{"class":519}," {\n",[502,586,588,592,595,598,600,602,605,607],{"class":504,"line":587},5,[502,589,591],{"class":590},"swJcz","  articleId",[502,593,594],{"class":519},":",[502,596,597],{"class":566}," integer",[502,599,570],{"class":523},[502,601,573],{"class":519},[502,603,604],{"class":536},"article_id",[502,606,573],{"class":519},[502,608,609],{"class":523},")\n",[502,611,613,616,619,621,624,627,630,633,636,638,640,643,645,647,650,652,654,657],{"class":504,"line":612},6,[502,614,615],{"class":519},"    .",[502,617,618],{"class":566},"references",[502,620,570],{"class":523},[502,622,623],{"class":519},"()",[502,625,626],{"class":556}," =>",[502,628,629],{"class":523}," articles",[502,631,632],{"class":519},".",[502,634,635],{"class":523},"id",[502,637,581],{"class":519},[502,639,520],{"class":519},[502,641,642],{"class":590}," onDelete",[502,644,594],{"class":519},[502,646,533],{"class":519},[502,648,649],{"class":536},"cascade",[502,651,573],{"class":519},[502,653,527],{"class":519},[502,655,656],{"class":523},")",[502,658,659],{"class":519},",\n",[502,661,663,666,668,670,672,674,677,679],{"class":504,"line":662},7,[502,664,665],{"class":590},"  categoryId",[502,667,594],{"class":519},[502,669,597],{"class":566},[502,671,570],{"class":523},[502,673,573],{"class":519},[502,675,676],{"class":536},"category_id",[502,678,573],{"class":519},[502,680,609],{"class":523},[502,682,684,686,688,690,692,694,697,699,701,703,705,707,709,711,713,715,717,719],{"class":504,"line":683},8,[502,685,615],{"class":519},[502,687,618],{"class":566},[502,689,570],{"class":523},[502,691,623],{"class":519},[502,693,626],{"class":556},[502,695,696],{"class":523}," categories",[502,698,632],{"class":519},[502,700,635],{"class":523},[502,702,581],{"class":519},[502,704,520],{"class":519},[502,706,642],{"class":590},[502,708,594],{"class":519},[502,710,533],{"class":519},[502,712,649],{"class":536},[502,714,573],{"class":519},[502,716,527],{"class":519},[502,718,656],{"class":523},[502,720,659],{"class":519},[502,722,724,727,730,734,736,738,740],{"class":504,"line":723},9,[502,725,726],{"class":519},"},",[502,728,729],{"class":519}," (",[502,731,733],{"class":732},"sHdIc","table",[502,735,656],{"class":519},[502,737,626],{"class":556},[502,739,729],{"class":523},[502,741,742],{"class":519},"{\n",[502,744,746,749,751,754,756,759,762,764,767,769,772,774,777,779,782,785],{"class":504,"line":745},10,[502,747,748],{"class":590},"  pk",[502,750,594],{"class":519},[502,752,753],{"class":566}," primaryKey",[502,755,570],{"class":523},[502,757,758],{"class":519},"{",[502,760,761],{"class":590}," columns",[502,763,594],{"class":519},[502,765,766],{"class":523}," [table",[502,768,632],{"class":519},[502,770,771],{"class":523},"articleId",[502,773,581],{"class":519},[502,775,776],{"class":523}," table",[502,778,632],{"class":519},[502,780,781],{"class":523},"categoryId] ",[502,783,784],{"class":519},"}",[502,786,609],{"class":523},[502,788,790,792],{"class":504,"line":789},11,[502,791,784],{"class":519},[502,793,794],{"class":523},"))\n",[502,796,798],{"class":504,"line":797},12,[502,799,547],{"emptyLinePlaceholder":546},[502,801,803],{"class":504,"line":802},13,[502,804,805],{"class":508},"// Define relations\n",[502,807,809,811,813,816,818,820,823,825,828,831,834,836,838],{"class":504,"line":808},14,[502,810,553],{"class":515},[502,812,557],{"class":556},[502,814,815],{"class":523}," articleCategoriesRelations ",[502,817,563],{"class":519},[502,819,524],{"class":566},[502,821,822],{"class":523},"(articleCategories",[502,824,581],{"class":519},[502,826,827],{"class":519}," ({",[502,829,830],{"class":732}," one",[502,832,833],{"class":519}," })",[502,835,626],{"class":556},[502,837,729],{"class":523},[502,839,742],{"class":519},[502,841,843,846,848,850,853,855],{"class":504,"line":842},15,[502,844,845],{"class":590},"  article",[502,847,594],{"class":519},[502,849,830],{"class":566},[502,851,852],{"class":523},"(articles",[502,854,581],{"class":519},[502,856,584],{"class":519},[502,858,860,863,865,868,870,873],{"class":504,"line":859},16,[502,861,862],{"class":590},"    fields",[502,864,594],{"class":519},[502,866,867],{"class":523}," [articleCategories",[502,869,632],{"class":519},[502,871,872],{"class":523},"articleId]",[502,874,659],{"class":519},[502,876,878,881,883,886,888,891],{"class":504,"line":877},17,[502,879,880],{"class":590},"    references",[502,882,594],{"class":519},[502,884,885],{"class":523}," [articles",[502,887,632],{"class":519},[502,889,890],{"class":523},"id]",[502,892,659],{"class":519},[502,894,896,899,901],{"class":504,"line":895},18,[502,897,898],{"class":519},"  }",[502,900,656],{"class":523},[502,902,659],{"class":519},[502,904,906,909,911,913,916,918],{"class":504,"line":905},19,[502,907,908],{"class":590},"  category",[502,910,594],{"class":519},[502,912,830],{"class":566},[502,914,915],{"class":523},"(categories",[502,917,581],{"class":519},[502,919,584],{"class":519},[502,921,923,925,927,929,931,934],{"class":504,"line":922},20,[502,924,862],{"class":590},[502,926,594],{"class":519},[502,928,867],{"class":523},[502,930,632],{"class":519},[502,932,933],{"class":523},"categoryId]",[502,935,659],{"class":519},[502,937,939,941,943,946,948,950],{"class":504,"line":938},21,[502,940,880],{"class":590},[502,942,594],{"class":519},[502,944,945],{"class":523}," [categories",[502,947,632],{"class":519},[502,949,890],{"class":523},[502,951,659],{"class":519},[502,953,955,957,959],{"class":504,"line":954},22,[502,956,898],{"class":519},[502,958,656],{"class":523},[502,960,659],{"class":519},[502,962,964,966],{"class":504,"line":963},23,[502,965,784],{"class":519},[502,967,794],{"class":523},[487,969,971],{"id":970},"_2-optional-customize-labels","2. Optional: Customize Labels",[492,973,975],{"className":494,"code":974,"language":496,"meta":497,"style":497},"// nuxt.config.ts\nexport default defineNuxtConfig({\n  autoApi: {\n    m2m: {\n      // Auto-detection enabled by default\n      relations: {\n        articles: {\n          categories: {\n            label: 'Categories',  // ← Custom label for admin UI\n            help: 'Select categories for this article',  // ← Help text\n            displayField: 'name',  // ← Field shown in dropdown\n          }\n        }\n      }\n    }\n  }\n})\n",[499,976,977,982,996,1005,1014,1019,1028,1037,1046,1065,1084,1103,1108,1113,1118,1123,1128],{"__ignoreMap":497},[502,978,979],{"class":504,"line":505},[502,980,981],{"class":508},"// nuxt.config.ts\n",[502,983,984,986,989,992,994],{"class":504,"line":512},[502,985,553],{"class":515},[502,987,988],{"class":515}," default",[502,990,991],{"class":566}," defineNuxtConfig",[502,993,570],{"class":523},[502,995,742],{"class":519},[502,997,998,1001,1003],{"class":504,"line":543},[502,999,1000],{"class":590},"  autoApi",[502,1002,594],{"class":519},[502,1004,584],{"class":519},[502,1006,1007,1010,1012],{"class":504,"line":550},[502,1008,1009],{"class":590},"    m2m",[502,1011,594],{"class":519},[502,1013,584],{"class":519},[502,1015,1016],{"class":504,"line":587},[502,1017,1018],{"class":508},"      // Auto-detection enabled by default\n",[502,1020,1021,1024,1026],{"class":504,"line":612},[502,1022,1023],{"class":590},"      relations",[502,1025,594],{"class":519},[502,1027,584],{"class":519},[502,1029,1030,1033,1035],{"class":504,"line":662},[502,1031,1032],{"class":590},"        articles",[502,1034,594],{"class":519},[502,1036,584],{"class":519},[502,1038,1039,1042,1044],{"class":504,"line":683},[502,1040,1041],{"class":590},"          categories",[502,1043,594],{"class":519},[502,1045,584],{"class":519},[502,1047,1048,1051,1053,1055,1058,1060,1062],{"class":504,"line":723},[502,1049,1050],{"class":590},"            label",[502,1052,594],{"class":519},[502,1054,533],{"class":519},[502,1056,1057],{"class":536},"Categories",[502,1059,573],{"class":519},[502,1061,581],{"class":519},[502,1063,1064],{"class":508},"  // ← Custom label for admin UI\n",[502,1066,1067,1070,1072,1074,1077,1079,1081],{"class":504,"line":745},[502,1068,1069],{"class":590},"            help",[502,1071,594],{"class":519},[502,1073,533],{"class":519},[502,1075,1076],{"class":536},"Select categories for this article",[502,1078,573],{"class":519},[502,1080,581],{"class":519},[502,1082,1083],{"class":508},"  // ← Help text\n",[502,1085,1086,1089,1091,1093,1096,1098,1100],{"class":504,"line":789},[502,1087,1088],{"class":590},"            displayField",[502,1090,594],{"class":519},[502,1092,533],{"class":519},[502,1094,1095],{"class":536},"name",[502,1097,573],{"class":519},[502,1099,581],{"class":519},[502,1101,1102],{"class":508},"  // ← Field shown in dropdown\n",[502,1104,1105],{"class":504,"line":797},[502,1106,1107],{"class":519},"          }\n",[502,1109,1110],{"class":504,"line":802},[502,1111,1112],{"class":519},"        }\n",[502,1114,1115],{"class":504,"line":808},[502,1116,1117],{"class":519},"      }\n",[502,1119,1120],{"class":504,"line":842},[502,1121,1122],{"class":519},"    }\n",[502,1124,1125],{"class":504,"line":859},[502,1126,1127],{"class":519},"  }\n",[502,1129,1130,1132],{"class":504,"line":877},[502,1131,784],{"class":519},[502,1133,609],{"class":523},[487,1135,1137],{"id":1136},"_3-thats-it","3. That's It!",[455,1139,1140],{},"The admin UI automatically:",[1142,1143,1144,1148,1151,1154,1157],"ul",{},[1145,1146,1147],"li",{},"✅ Detects M2M relations from Drizzle schema",[1145,1149,1150],{},"✅ Displays them as multi-select fields",[1145,1152,1153],{},"✅ Shows them in both modal and page edit forms",[1145,1155,1156],{},"✅ Handles sync operations",[1145,1158,1159],{},"✅ Updates when you add new relations",[481,1161],{},[459,1163,1165],{"id":1164},"naming-convention-support","Naming Convention Support",[455,1167,1168,1169,1172],{},"The M2M auto-detection system supports ",[471,1170,1171],{},"both camelCase and snake_case"," naming conventions. Your junction tables will be auto-detected regardless of naming style.",[487,1174,1176],{"id":1175},"supported-patterns","Supported Patterns",[492,1178,1180],{"className":494,"code":1179,"language":496,"meta":497,"style":497},"// ✅ snake_case (works automatically)\nexport const articleCategories = sqliteTable('article_categories', {\n  articleId: integer('article_id')\n    .references(() => articles.id, { onDelete: 'cascade' }),\n  categoryId: integer('category_id')\n    .references(() => categories.id, { onDelete: 'cascade' }),\n}, (table) => ({\n  pk: primaryKey({ columns: [table.articleId, table.categoryId] })\n}))\n\n// ✅ camelCase (works automatically)\nexport const articleCategories = sqliteTable('articleCategories', {\n  articleId: integer('articleId')\n    .references(() => articles.id, { onDelete: 'cascade' }),\n  categoryId: integer('categoryId')\n    .references(() => categories.id, { onDelete: 'cascade' }),\n}, (table) => ({\n  pk: primaryKey({ columns: [table.articleId, table.categoryId] })\n}))\n\n// ✅ Plural forms (works automatically)\nexport const articleCategories = sqliteTable('articles_categories', { ... })\n\n// ✅ Mixed conventions (works automatically)\nexport const articleCategories = sqliteTable('article_categories', {\n  articleId: integer('articleId'),  // camelCase column\n  categoryId: integer('category_id'),  // snake_case column\n})\n",[499,1181,1182,1187,1211,1229,1267,1285,1323,1339,1373,1379,1383,1388,1413,1431,1469,1488,1526,1542,1576,1582,1586,1591,1623,1627,1633,1658,1682,1706],{"__ignoreMap":497},[502,1183,1184],{"class":504,"line":505},[502,1185,1186],{"class":508},"// ✅ snake_case (works automatically)\n",[502,1188,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209],{"class":504,"line":512},[502,1190,553],{"class":515},[502,1192,557],{"class":556},[502,1194,560],{"class":523},[502,1196,563],{"class":519},[502,1198,567],{"class":566},[502,1200,570],{"class":523},[502,1202,573],{"class":519},[502,1204,576],{"class":536},[502,1206,573],{"class":519},[502,1208,581],{"class":519},[502,1210,584],{"class":519},[502,1212,1213,1215,1217,1219,1221,1223,1225,1227],{"class":504,"line":543},[502,1214,591],{"class":590},[502,1216,594],{"class":519},[502,1218,597],{"class":566},[502,1220,570],{"class":523},[502,1222,573],{"class":519},[502,1224,604],{"class":536},[502,1226,573],{"class":519},[502,1228,609],{"class":523},[502,1230,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265],{"class":504,"line":550},[502,1232,615],{"class":519},[502,1234,618],{"class":566},[502,1236,570],{"class":523},[502,1238,623],{"class":519},[502,1240,626],{"class":556},[502,1242,629],{"class":523},[502,1244,632],{"class":519},[502,1246,635],{"class":523},[502,1248,581],{"class":519},[502,1250,520],{"class":519},[502,1252,642],{"class":590},[502,1254,594],{"class":519},[502,1256,533],{"class":519},[502,1258,649],{"class":536},[502,1260,573],{"class":519},[502,1262,527],{"class":519},[502,1264,656],{"class":523},[502,1266,659],{"class":519},[502,1268,1269,1271,1273,1275,1277,1279,1281,1283],{"class":504,"line":587},[502,1270,665],{"class":590},[502,1272,594],{"class":519},[502,1274,597],{"class":566},[502,1276,570],{"class":523},[502,1278,573],{"class":519},[502,1280,676],{"class":536},[502,1282,573],{"class":519},[502,1284,609],{"class":523},[502,1286,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321],{"class":504,"line":612},[502,1288,615],{"class":519},[502,1290,618],{"class":566},[502,1292,570],{"class":523},[502,1294,623],{"class":519},[502,1296,626],{"class":556},[502,1298,696],{"class":523},[502,1300,632],{"class":519},[502,1302,635],{"class":523},[502,1304,581],{"class":519},[502,1306,520],{"class":519},[502,1308,642],{"class":590},[502,1310,594],{"class":519},[502,1312,533],{"class":519},[502,1314,649],{"class":536},[502,1316,573],{"class":519},[502,1318,527],{"class":519},[502,1320,656],{"class":523},[502,1322,659],{"class":519},[502,1324,1325,1327,1329,1331,1333,1335,1337],{"class":504,"line":662},[502,1326,726],{"class":519},[502,1328,729],{"class":519},[502,1330,733],{"class":732},[502,1332,656],{"class":519},[502,1334,626],{"class":556},[502,1336,729],{"class":523},[502,1338,742],{"class":519},[502,1340,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371],{"class":504,"line":683},[502,1342,748],{"class":590},[502,1344,594],{"class":519},[502,1346,753],{"class":566},[502,1348,570],{"class":523},[502,1350,758],{"class":519},[502,1352,761],{"class":590},[502,1354,594],{"class":519},[502,1356,766],{"class":523},[502,1358,632],{"class":519},[502,1360,771],{"class":523},[502,1362,581],{"class":519},[502,1364,776],{"class":523},[502,1366,632],{"class":519},[502,1368,781],{"class":523},[502,1370,784],{"class":519},[502,1372,609],{"class":523},[502,1374,1375,1377],{"class":504,"line":723},[502,1376,784],{"class":519},[502,1378,794],{"class":523},[502,1380,1381],{"class":504,"line":745},[502,1382,547],{"emptyLinePlaceholder":546},[502,1384,1385],{"class":504,"line":789},[502,1386,1387],{"class":508},"// ✅ camelCase (works automatically)\n",[502,1389,1390,1392,1394,1396,1398,1400,1402,1404,1407,1409,1411],{"class":504,"line":797},[502,1391,553],{"class":515},[502,1393,557],{"class":556},[502,1395,560],{"class":523},[502,1397,563],{"class":519},[502,1399,567],{"class":566},[502,1401,570],{"class":523},[502,1403,573],{"class":519},[502,1405,1406],{"class":536},"articleCategories",[502,1408,573],{"class":519},[502,1410,581],{"class":519},[502,1412,584],{"class":519},[502,1414,1415,1417,1419,1421,1423,1425,1427,1429],{"class":504,"line":802},[502,1416,591],{"class":590},[502,1418,594],{"class":519},[502,1420,597],{"class":566},[502,1422,570],{"class":523},[502,1424,573],{"class":519},[502,1426,771],{"class":536},[502,1428,573],{"class":519},[502,1430,609],{"class":523},[502,1432,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467],{"class":504,"line":808},[502,1434,615],{"class":519},[502,1436,618],{"class":566},[502,1438,570],{"class":523},[502,1440,623],{"class":519},[502,1442,626],{"class":556},[502,1444,629],{"class":523},[502,1446,632],{"class":519},[502,1448,635],{"class":523},[502,1450,581],{"class":519},[502,1452,520],{"class":519},[502,1454,642],{"class":590},[502,1456,594],{"class":519},[502,1458,533],{"class":519},[502,1460,649],{"class":536},[502,1462,573],{"class":519},[502,1464,527],{"class":519},[502,1466,656],{"class":523},[502,1468,659],{"class":519},[502,1470,1471,1473,1475,1477,1479,1481,1484,1486],{"class":504,"line":842},[502,1472,665],{"class":590},[502,1474,594],{"class":519},[502,1476,597],{"class":566},[502,1478,570],{"class":523},[502,1480,573],{"class":519},[502,1482,1483],{"class":536},"categoryId",[502,1485,573],{"class":519},[502,1487,609],{"class":523},[502,1489,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1522,1524],{"class":504,"line":859},[502,1491,615],{"class":519},[502,1493,618],{"class":566},[502,1495,570],{"class":523},[502,1497,623],{"class":519},[502,1499,626],{"class":556},[502,1501,696],{"class":523},[502,1503,632],{"class":519},[502,1505,635],{"class":523},[502,1507,581],{"class":519},[502,1509,520],{"class":519},[502,1511,642],{"class":590},[502,1513,594],{"class":519},[502,1515,533],{"class":519},[502,1517,649],{"class":536},[502,1519,573],{"class":519},[502,1521,527],{"class":519},[502,1523,656],{"class":523},[502,1525,659],{"class":519},[502,1527,1528,1530,1532,1534,1536,1538,1540],{"class":504,"line":877},[502,1529,726],{"class":519},[502,1531,729],{"class":519},[502,1533,733],{"class":732},[502,1535,656],{"class":519},[502,1537,626],{"class":556},[502,1539,729],{"class":523},[502,1541,742],{"class":519},[502,1543,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574],{"class":504,"line":895},[502,1545,748],{"class":590},[502,1547,594],{"class":519},[502,1549,753],{"class":566},[502,1551,570],{"class":523},[502,1553,758],{"class":519},[502,1555,761],{"class":590},[502,1557,594],{"class":519},[502,1559,766],{"class":523},[502,1561,632],{"class":519},[502,1563,771],{"class":523},[502,1565,581],{"class":519},[502,1567,776],{"class":523},[502,1569,632],{"class":519},[502,1571,781],{"class":523},[502,1573,784],{"class":519},[502,1575,609],{"class":523},[502,1577,1578,1580],{"class":504,"line":905},[502,1579,784],{"class":519},[502,1581,794],{"class":523},[502,1583,1584],{"class":504,"line":922},[502,1585,547],{"emptyLinePlaceholder":546},[502,1587,1588],{"class":504,"line":938},[502,1589,1590],{"class":508},"// ✅ Plural forms (works automatically)\n",[502,1592,1593,1595,1597,1599,1601,1603,1605,1607,1610,1612,1614,1616,1619,1621],{"class":504,"line":954},[502,1594,553],{"class":515},[502,1596,557],{"class":556},[502,1598,560],{"class":523},[502,1600,563],{"class":519},[502,1602,567],{"class":566},[502,1604,570],{"class":523},[502,1606,573],{"class":519},[502,1608,1609],{"class":536},"articles_categories",[502,1611,573],{"class":519},[502,1613,581],{"class":519},[502,1615,520],{"class":519},[502,1617,1618],{"class":519}," ...",[502,1620,527],{"class":519},[502,1622,609],{"class":523},[502,1624,1625],{"class":504,"line":963},[502,1626,547],{"emptyLinePlaceholder":546},[502,1628,1630],{"class":504,"line":1629},24,[502,1631,1632],{"class":508},"// ✅ Mixed conventions (works automatically)\n",[502,1634,1636,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656],{"class":504,"line":1635},25,[502,1637,553],{"class":515},[502,1639,557],{"class":556},[502,1641,560],{"class":523},[502,1643,563],{"class":519},[502,1645,567],{"class":566},[502,1647,570],{"class":523},[502,1649,573],{"class":519},[502,1651,576],{"class":536},[502,1653,573],{"class":519},[502,1655,581],{"class":519},[502,1657,584],{"class":519},[502,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679],{"class":504,"line":1660},26,[502,1662,591],{"class":590},[502,1664,594],{"class":519},[502,1666,597],{"class":566},[502,1668,570],{"class":523},[502,1670,573],{"class":519},[502,1672,771],{"class":536},[502,1674,573],{"class":519},[502,1676,656],{"class":523},[502,1678,581],{"class":519},[502,1680,1681],{"class":508},"  // camelCase column\n",[502,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703],{"class":504,"line":1684},27,[502,1686,665],{"class":590},[502,1688,594],{"class":519},[502,1690,597],{"class":566},[502,1692,570],{"class":523},[502,1694,573],{"class":519},[502,1696,676],{"class":536},[502,1698,573],{"class":519},[502,1700,656],{"class":523},[502,1702,581],{"class":519},[502,1704,1705],{"class":508},"  // snake_case column\n",[502,1707,1709,1711],{"class":504,"line":1708},28,[502,1710,784],{"class":519},[502,1712,609],{"class":523},[487,1714,1716],{"id":1715},"junction-table-hiding","Junction Table Hiding",[455,1718,1719],{},"Auto-detected junction tables are automatically:",[1142,1721,1722,1725,1728],{},[1145,1723,1724],{},"✅ Hidden from admin sidebar",[1145,1726,1727],{},"✅ Excluded from resource list",[1145,1729,1730],{},"✅ Shown as M2M fields in edit forms",[455,1732,1733],{},"No configuration needed!",[487,1735,1737],{"id":1736},"manual-override","Manual Override",[455,1739,1740],{},"If you need to control detection for a specific table:",[492,1742,1744],{"className":494,"code":1743,"language":496,"meta":497,"style":497},"// Force junction table hidden\nautoAdmin: {\n  resources: {\n    customJunction: {\n      type: 'junction'  // Force hide from sidebar\n    }\n  }\n}\n\n// Force regular resource visible (despite junction pattern)\nautoAdmin: {\n  resources: {\n    orderItems: {\n      type: 'resource',  // Show in sidebar\n      displayName: 'Order Items',\n    }\n  }\n}\n",[499,1745,1746,1751,1761,1770,1779,1796,1800,1804,1809,1813,1818,1826,1834,1843,1861,1877,1881,1885],{"__ignoreMap":497},[502,1747,1748],{"class":504,"line":505},[502,1749,1750],{"class":508},"// Force junction table hidden\n",[502,1752,1753,1757,1759],{"class":504,"line":512},[502,1754,1756],{"class":1755},"sBMFI","autoAdmin",[502,1758,594],{"class":519},[502,1760,584],{"class":519},[502,1762,1763,1766,1768],{"class":504,"line":543},[502,1764,1765],{"class":1755},"  resources",[502,1767,594],{"class":519},[502,1769,584],{"class":519},[502,1771,1772,1775,1777],{"class":504,"line":550},[502,1773,1774],{"class":1755},"    customJunction",[502,1776,594],{"class":519},[502,1778,584],{"class":519},[502,1780,1781,1784,1786,1788,1791,1793],{"class":504,"line":587},[502,1782,1783],{"class":1755},"      type",[502,1785,594],{"class":519},[502,1787,533],{"class":519},[502,1789,1790],{"class":536},"junction",[502,1792,573],{"class":519},[502,1794,1795],{"class":508},"  // Force hide from sidebar\n",[502,1797,1798],{"class":504,"line":612},[502,1799,1122],{"class":519},[502,1801,1802],{"class":504,"line":662},[502,1803,1127],{"class":519},[502,1805,1806],{"class":504,"line":683},[502,1807,1808],{"class":519},"}\n",[502,1810,1811],{"class":504,"line":723},[502,1812,547],{"emptyLinePlaceholder":546},[502,1814,1815],{"class":504,"line":745},[502,1816,1817],{"class":508},"// Force regular resource visible (despite junction pattern)\n",[502,1819,1820,1822,1824],{"class":504,"line":789},[502,1821,1756],{"class":1755},[502,1823,594],{"class":519},[502,1825,584],{"class":519},[502,1827,1828,1830,1832],{"class":504,"line":797},[502,1829,1765],{"class":1755},[502,1831,594],{"class":519},[502,1833,584],{"class":519},[502,1835,1836,1839,1841],{"class":504,"line":802},[502,1837,1838],{"class":1755},"    orderItems",[502,1840,594],{"class":519},[502,1842,584],{"class":519},[502,1844,1845,1847,1849,1851,1854,1856,1858],{"class":504,"line":808},[502,1846,1783],{"class":1755},[502,1848,594],{"class":519},[502,1850,533],{"class":519},[502,1852,1853],{"class":536},"resource",[502,1855,573],{"class":519},[502,1857,581],{"class":519},[502,1859,1860],{"class":508},"  // Show in sidebar\n",[502,1862,1863,1866,1868,1870,1873,1875],{"class":504,"line":842},[502,1864,1865],{"class":1755},"      displayName",[502,1867,594],{"class":519},[502,1869,533],{"class":519},[502,1871,1872],{"class":536},"Order Items",[502,1874,573],{"class":519},[502,1876,659],{"class":519},[502,1878,1879],{"class":504,"line":859},[502,1880,1122],{"class":519},[502,1882,1883],{"class":504,"line":877},[502,1884,1127],{"class":519},[502,1886,1887],{"class":504,"line":895},[502,1888,1808],{"class":519},[455,1890,1891,1892,632],{},"For more details on auto-detection, see the ",[476,1893,478],{"href":1894},"/docs/nuxt-auto/auto-api/m2m-relationships#naming-convention-support",[481,1896],{},[459,1898,1900],{"id":1899},"configuration","Configuration",[487,1902,1904],{"id":1903},"labels-help-text-and-display-field","Labels, Help Text, and Display Field",[455,1906,1907],{},"Configure how M2M relations appear in the admin UI:",[492,1909,1911],{"className":494,"code":1910,"language":496,"meta":497,"style":497},"autoApi: {\n  m2m: {\n    relations: {\n      articles: {\n        categories: {\n          // ... junction config\n          label: 'Article Categories',        // Field label in form\n          help: 'Select categories to organize this article',  // Help text below field\n          displayField: 'name',              // What shows in dropdown options\n        }\n      }\n    }\n  }\n}\n",[499,1912,1913,1922,1931,1940,1949,1958,1963,1982,2001,2019,2023,2027,2031,2035],{"__ignoreMap":497},[502,1914,1915,1918,1920],{"class":504,"line":505},[502,1916,1917],{"class":1755},"autoApi",[502,1919,594],{"class":519},[502,1921,584],{"class":519},[502,1923,1924,1927,1929],{"class":504,"line":512},[502,1925,1926],{"class":1755},"  m2m",[502,1928,594],{"class":519},[502,1930,584],{"class":519},[502,1932,1933,1936,1938],{"class":504,"line":543},[502,1934,1935],{"class":1755},"    relations",[502,1937,594],{"class":519},[502,1939,584],{"class":519},[502,1941,1942,1945,1947],{"class":504,"line":550},[502,1943,1944],{"class":1755},"      articles",[502,1946,594],{"class":519},[502,1948,584],{"class":519},[502,1950,1951,1954,1956],{"class":504,"line":587},[502,1952,1953],{"class":1755},"        categories",[502,1955,594],{"class":519},[502,1957,584],{"class":519},[502,1959,1960],{"class":504,"line":612},[502,1961,1962],{"class":508},"          // ... junction config\n",[502,1964,1965,1968,1970,1972,1975,1977,1979],{"class":504,"line":662},[502,1966,1967],{"class":1755},"          label",[502,1969,594],{"class":519},[502,1971,533],{"class":519},[502,1973,1974],{"class":536},"Article Categories",[502,1976,573],{"class":519},[502,1978,581],{"class":519},[502,1980,1981],{"class":508},"        // Field label in form\n",[502,1983,1984,1987,1989,1991,1994,1996,1998],{"class":504,"line":683},[502,1985,1986],{"class":1755},"          help",[502,1988,594],{"class":519},[502,1990,533],{"class":519},[502,1992,1993],{"class":536},"Select categories to organize this article",[502,1995,573],{"class":519},[502,1997,581],{"class":519},[502,1999,2000],{"class":508},"  // Help text below field\n",[502,2002,2003,2006,2008,2010,2012,2014,2016],{"class":504,"line":723},[502,2004,2005],{"class":1755},"          displayField",[502,2007,594],{"class":519},[502,2009,533],{"class":519},[502,2011,1095],{"class":536},[502,2013,573],{"class":519},[502,2015,581],{"class":519},[502,2017,2018],{"class":508},"              // What shows in dropdown options\n",[502,2020,2021],{"class":504,"line":745},[502,2022,1112],{"class":519},[502,2024,2025],{"class":504,"line":789},[502,2026,1117],{"class":519},[502,2028,2029],{"class":504,"line":797},[502,2030,1122],{"class":519},[502,2032,2033],{"class":504,"line":802},[502,2034,1127],{"class":519},[502,2036,2037],{"class":504,"line":808},[502,2038,1808],{"class":519},[455,2040,2041],{},[471,2042,2043],{},"If not provided:",[1142,2045,2046,2052,2058],{},[1145,2047,2048,2051],{},[499,2049,2050],{},"label"," - Defaults to capitalized relation name (\"Categories\")",[1145,2053,2054,2057],{},[499,2055,2056],{},"help"," - Not shown",[1145,2059,2060,2063,2064,2067,2068,2067,2071,2067,2074],{},[499,2061,2062],{},"displayField"," - Tries common fields automatically: ",[499,2065,2066],{},"'name'",", ",[499,2069,2070],{},"'title'",[499,2072,2073],{},"'label'",[499,2075,2076],{},"'email'",[455,2078,2079],{},[471,2080,2081],{},"Display Field Examples:",[492,2083,2085],{"className":494,"code":2084,"language":496,"meta":497,"style":497},"// For categories (has 'name' field)\ncategories: {\n  displayField: 'name'  // Shows: \"Technology\", \"Business\", etc.\n}\n\n// For users (has 'email' and 'name')\nusers: {\n  displayField: 'email'  // Shows: \"user@example.com\"\n}\n\n// For articles (has 'title')\nrelatedArticles: {\n  displayField: 'title'  // Shows: \"How to Build...\"\n}\n\n// Custom format (if needed)\nproducts: {\n  displayField: 'sku'  // Shows: \"PROD-12345\"\n}\n",[499,2086,2087,2092,2101,2117,2121,2125,2130,2139,2155,2159,2163,2168,2177,2193,2197,2201,2206,2215,2231],{"__ignoreMap":497},[502,2088,2089],{"class":504,"line":505},[502,2090,2091],{"class":508},"// For categories (has 'name' field)\n",[502,2093,2094,2097,2099],{"class":504,"line":512},[502,2095,2096],{"class":1755},"categories",[502,2098,594],{"class":519},[502,2100,584],{"class":519},[502,2102,2103,2106,2108,2110,2112,2114],{"class":504,"line":543},[502,2104,2105],{"class":1755},"  displayField",[502,2107,594],{"class":519},[502,2109,533],{"class":519},[502,2111,1095],{"class":536},[502,2113,573],{"class":519},[502,2115,2116],{"class":508},"  // Shows: \"Technology\", \"Business\", etc.\n",[502,2118,2119],{"class":504,"line":550},[502,2120,1808],{"class":519},[502,2122,2123],{"class":504,"line":587},[502,2124,547],{"emptyLinePlaceholder":546},[502,2126,2127],{"class":504,"line":612},[502,2128,2129],{"class":508},"// For users (has 'email' and 'name')\n",[502,2131,2132,2135,2137],{"class":504,"line":662},[502,2133,2134],{"class":1755},"users",[502,2136,594],{"class":519},[502,2138,584],{"class":519},[502,2140,2141,2143,2145,2147,2150,2152],{"class":504,"line":683},[502,2142,2105],{"class":1755},[502,2144,594],{"class":519},[502,2146,533],{"class":519},[502,2148,2149],{"class":536},"email",[502,2151,573],{"class":519},[502,2153,2154],{"class":508},"  // Shows: \"user@example.com\"\n",[502,2156,2157],{"class":504,"line":723},[502,2158,1808],{"class":519},[502,2160,2161],{"class":504,"line":745},[502,2162,547],{"emptyLinePlaceholder":546},[502,2164,2165],{"class":504,"line":789},[502,2166,2167],{"class":508},"// For articles (has 'title')\n",[502,2169,2170,2173,2175],{"class":504,"line":797},[502,2171,2172],{"class":1755},"relatedArticles",[502,2174,594],{"class":519},[502,2176,584],{"class":519},[502,2178,2179,2181,2183,2185,2188,2190],{"class":504,"line":802},[502,2180,2105],{"class":1755},[502,2182,594],{"class":519},[502,2184,533],{"class":519},[502,2186,2187],{"class":536},"title",[502,2189,573],{"class":519},[502,2191,2192],{"class":508},"  // Shows: \"How to Build...\"\n",[502,2194,2195],{"class":504,"line":808},[502,2196,1808],{"class":519},[502,2198,2199],{"class":504,"line":842},[502,2200,547],{"emptyLinePlaceholder":546},[502,2202,2203],{"class":504,"line":859},[502,2204,2205],{"class":508},"// Custom format (if needed)\n",[502,2207,2208,2211,2213],{"class":504,"line":877},[502,2209,2210],{"class":1755},"products",[502,2212,594],{"class":519},[502,2214,584],{"class":519},[502,2216,2217,2219,2221,2223,2226,2228],{"class":504,"line":895},[502,2218,2105],{"class":1755},[502,2220,594],{"class":519},[502,2222,533],{"class":519},[502,2224,2225],{"class":536},"sku",[502,2227,573],{"class":519},[502,2229,2230],{"class":508},"  // Shows: \"PROD-12345\"\n",[502,2232,2233],{"class":504,"line":905},[502,2234,1808],{"class":519},[487,2236,2238],{"id":2237},"display-modes","Display Modes",[455,2240,2241],{},"Control how edit/view forms open:",[492,2243,2245],{"className":494,"code":2244,"language":496,"meta":497,"style":497},"autoAdmin: {\n  ui: {\n    editMode: 'page',  // 'modal' | 'page'\n    viewMode: 'modal'  // 'modal' | 'page'\n  }\n}\n",[499,2246,2247,2255,2264,2283,2299,2303],{"__ignoreMap":497},[502,2248,2249,2251,2253],{"class":504,"line":505},[502,2250,1756],{"class":1755},[502,2252,594],{"class":519},[502,2254,584],{"class":519},[502,2256,2257,2260,2262],{"class":504,"line":512},[502,2258,2259],{"class":1755},"  ui",[502,2261,594],{"class":519},[502,2263,584],{"class":519},[502,2265,2266,2269,2271,2273,2276,2278,2280],{"class":504,"line":543},[502,2267,2268],{"class":1755},"    editMode",[502,2270,594],{"class":519},[502,2272,533],{"class":519},[502,2274,2275],{"class":536},"page",[502,2277,573],{"class":519},[502,2279,581],{"class":519},[502,2281,2282],{"class":508},"  // 'modal' | 'page'\n",[502,2284,2285,2288,2290,2292,2295,2297],{"class":504,"line":550},[502,2286,2287],{"class":1755},"    viewMode",[502,2289,594],{"class":519},[502,2291,533],{"class":519},[502,2293,2294],{"class":536},"modal",[502,2296,573],{"class":519},[502,2298,2282],{"class":508},[502,2300,2301],{"class":504,"line":587},[502,2302,1127],{"class":519},[502,2304,2305],{"class":504,"line":612},[502,2306,1808],{"class":519},[455,2308,2309,2312],{},[471,2310,2311],{},"Modal Mode"," (default):",[1142,2314,2315,2318,2321],{},[1145,2316,2317],{},"Quick edits",[1145,2319,2320],{},"Compact view",[1145,2322,2323],{},"Good for simple forms",[455,2325,2326,2329],{},[471,2327,2328],{},"Page Mode"," (recommended for M2M):",[1142,2331,2332,2335,2338],{},[1145,2333,2334],{},"Full-page layout",[1145,2336,2337],{},"Better for complex forms with M2M relations",[1145,2339,2340],{},"More space for multiple relation fields",[481,2342],{},[459,2344,2346],{"id":2345},"how-it-works","How It Works",[487,2348,2350],{"id":2349},"automatic-detection","Automatic Detection",[455,2352,2353],{},"When you open an edit form, the admin automatically:",[2355,2356,2357,2363,2369,2375],"ol",{},[1145,2358,2359,2362],{},[471,2360,2361],{},"Fetches M2M config"," from the API module",[1145,2364,2365,2368],{},[471,2366,2367],{},"Loads current relations"," for the record",[1145,2370,2371,2374],{},[471,2372,2373],{},"Displays multi-select"," for each relation",[1145,2376,2377,2380],{},[471,2378,2379],{},"Syncs changes"," when you save",[487,2382,1737],{"id":2383},"manual-override-1",[455,2385,2386],{},"You can manually configure M2M fields in admin config (not recommended):",[492,2388,2390],{"className":494,"code":2389,"language":496,"meta":497,"style":497},"autoAdmin: {\n  resources: {\n    articles: {\n      formFields: {\n        edit: [\n          // Regular fields\n          { name: 'title', widget: 'TextInput' },\n          \n          // Manual M2M field (not recommended - use API config instead)\n          {\n            name: 'categories',\n            widget: 'MultiRelationSelect',\n            label: 'Categories',\n            options: {\n              resource: 'categories',\n              displayField: 'name',\n              junctionTable: 'articleCategories',\n              junctionLeftKey: 'articleId',\n              junctionRightKey: 'categoryId',\n            }\n          }\n        ]\n      }\n    }\n  }\n}\n",[499,2391,2392,2400,2408,2417,2426,2436,2441,2474,2479,2484,2489,2504,2520,2534,2543,2558,2573,2588,2603,2618,2623,2627,2632,2636,2640,2644],{"__ignoreMap":497},[502,2393,2394,2396,2398],{"class":504,"line":505},[502,2395,1756],{"class":1755},[502,2397,594],{"class":519},[502,2399,584],{"class":519},[502,2401,2402,2404,2406],{"class":504,"line":512},[502,2403,1765],{"class":1755},[502,2405,594],{"class":519},[502,2407,584],{"class":519},[502,2409,2410,2413,2415],{"class":504,"line":543},[502,2411,2412],{"class":1755},"    articles",[502,2414,594],{"class":519},[502,2416,584],{"class":519},[502,2418,2419,2422,2424],{"class":504,"line":550},[502,2420,2421],{"class":1755},"      formFields",[502,2423,594],{"class":519},[502,2425,584],{"class":519},[502,2427,2428,2431,2433],{"class":504,"line":587},[502,2429,2430],{"class":1755},"        edit",[502,2432,594],{"class":519},[502,2434,2435],{"class":590}," [\n",[502,2437,2438],{"class":504,"line":612},[502,2439,2440],{"class":508},"          // Regular fields\n",[502,2442,2443,2446,2449,2451,2453,2455,2457,2459,2462,2464,2466,2469,2471],{"class":504,"line":662},[502,2444,2445],{"class":519},"          {",[502,2447,2448],{"class":590}," name",[502,2450,594],{"class":519},[502,2452,533],{"class":519},[502,2454,2187],{"class":536},[502,2456,573],{"class":519},[502,2458,581],{"class":519},[502,2460,2461],{"class":590}," widget",[502,2463,594],{"class":519},[502,2465,533],{"class":519},[502,2467,2468],{"class":536},"TextInput",[502,2470,573],{"class":519},[502,2472,2473],{"class":519}," },\n",[502,2475,2476],{"class":504,"line":683},[502,2477,2478],{"class":590},"          \n",[502,2480,2481],{"class":504,"line":723},[502,2482,2483],{"class":508},"          // Manual M2M field (not recommended - use API config instead)\n",[502,2485,2486],{"class":504,"line":745},[502,2487,2488],{"class":519},"          {\n",[502,2490,2491,2494,2496,2498,2500,2502],{"class":504,"line":789},[502,2492,2493],{"class":590},"            name",[502,2495,594],{"class":519},[502,2497,533],{"class":519},[502,2499,2096],{"class":536},[502,2501,573],{"class":519},[502,2503,659],{"class":519},[502,2505,2506,2509,2511,2513,2516,2518],{"class":504,"line":797},[502,2507,2508],{"class":590},"            widget",[502,2510,594],{"class":519},[502,2512,533],{"class":519},[502,2514,2515],{"class":536},"MultiRelationSelect",[502,2517,573],{"class":519},[502,2519,659],{"class":519},[502,2521,2522,2524,2526,2528,2530,2532],{"class":504,"line":802},[502,2523,1050],{"class":590},[502,2525,594],{"class":519},[502,2527,533],{"class":519},[502,2529,1057],{"class":536},[502,2531,573],{"class":519},[502,2533,659],{"class":519},[502,2535,2536,2539,2541],{"class":504,"line":808},[502,2537,2538],{"class":590},"            options",[502,2540,594],{"class":519},[502,2542,584],{"class":519},[502,2544,2545,2548,2550,2552,2554,2556],{"class":504,"line":842},[502,2546,2547],{"class":590},"              resource",[502,2549,594],{"class":519},[502,2551,533],{"class":519},[502,2553,2096],{"class":536},[502,2555,573],{"class":519},[502,2557,659],{"class":519},[502,2559,2560,2563,2565,2567,2569,2571],{"class":504,"line":859},[502,2561,2562],{"class":590},"              displayField",[502,2564,594],{"class":519},[502,2566,533],{"class":519},[502,2568,1095],{"class":536},[502,2570,573],{"class":519},[502,2572,659],{"class":519},[502,2574,2575,2578,2580,2582,2584,2586],{"class":504,"line":877},[502,2576,2577],{"class":590},"              junctionTable",[502,2579,594],{"class":519},[502,2581,533],{"class":519},[502,2583,1406],{"class":536},[502,2585,573],{"class":519},[502,2587,659],{"class":519},[502,2589,2590,2593,2595,2597,2599,2601],{"class":504,"line":895},[502,2591,2592],{"class":590},"              junctionLeftKey",[502,2594,594],{"class":519},[502,2596,533],{"class":519},[502,2598,771],{"class":536},[502,2600,573],{"class":519},[502,2602,659],{"class":519},[502,2604,2605,2608,2610,2612,2614,2616],{"class":504,"line":905},[502,2606,2607],{"class":590},"              junctionRightKey",[502,2609,594],{"class":519},[502,2611,533],{"class":519},[502,2613,1483],{"class":536},[502,2615,573],{"class":519},[502,2617,659],{"class":519},[502,2619,2620],{"class":504,"line":922},[502,2621,2622],{"class":519},"            }\n",[502,2624,2625],{"class":504,"line":938},[502,2626,1107],{"class":519},[502,2628,2629],{"class":504,"line":954},[502,2630,2631],{"class":590},"        ]\n",[502,2633,2634],{"class":504,"line":963},[502,2635,1117],{"class":519},[502,2637,2638],{"class":504,"line":1629},[502,2639,1122],{"class":519},[502,2641,2642],{"class":504,"line":1635},[502,2643,1127],{"class":519},[502,2645,2646],{"class":504,"line":1660},[502,2647,1808],{"class":519},[466,2649,2650],{},[455,2651,2652,2655],{},[471,2653,2654],{},"⚠️ Not Recommended:"," Manual admin config is verbose and duplicates API config. Use API module config instead!",[481,2657],{},[459,2659,2661],{"id":2660},"ui-behavior","UI Behavior",[487,2663,2665],{"id":2664},"edit-form","Edit Form",[455,2667,2668],{},"M2M relations appear as cards below the main form:",[492,2670,2675],{"className":2671,"code":2673,"language":2674},[2672],"language-text","┌─────────────────────────────┐\n│ Title: [..................] │\n│ Content: [................] │\n│ [Save] [Cancel]             │\n└─────────────────────────────┘\n\n┌─────────────────────────────┐\n│ Categories                   │\n│ Select categories for...     │\n│                              │\n│ [Multi-select dropdown]     │\n│ [Save Categories] [Reset]   │\n└─────────────────────────────┘\n\n┌─────────────────────────────┐\n│ Tags                         │\n│                              │\n│ [Multi-select dropdown]     │\n│ [Save Tags] [Reset]          │\n└─────────────────────────────┘\n","text",[499,2676,2673],{"__ignoreMap":497},[487,2678,2680],{"id":2679},"view-modal","View Modal",[455,2682,2683],{},"M2M relations shown as read-only chips:",[492,2685,2688],{"className":2686,"code":2687,"language":2674},[2672],"┌─────────────────────────────┐\n│ Article Title                │\n│ by John Doe                  │\n│                              │\n│ Categories                   │\n│ [Technology] [Business]      │\n│                              │\n│ Tags                         │\n│ [JavaScript] [Vue] [Nuxt]    │\n└─────────────────────────────┘\n",[499,2689,2687],{"__ignoreMap":497},[481,2691],{},[459,2693,319],{"id":2694},"permissions",[455,2696,2697],{},"M2M fields respect resource permissions:",[492,2699,2701],{"className":494,"code":2700,"language":496,"meta":497,"style":497},"// modules/blog/auth.ts\nexport const articlesAuth = {\n  async canUpdate(user) {\n    // Controls both form fields AND M2M relations\n    return user?.role === 'editor'\n  }\n}\n",[499,2702,2703,2708,2721,2738,2743,2767,2771],{"__ignoreMap":497},[502,2704,2705],{"class":504,"line":505},[502,2706,2707],{"class":508},"// modules/blog/auth.ts\n",[502,2709,2710,2712,2714,2717,2719],{"class":504,"line":512},[502,2711,553],{"class":515},[502,2713,557],{"class":556},[502,2715,2716],{"class":523}," articlesAuth ",[502,2718,563],{"class":519},[502,2720,584],{"class":519},[502,2722,2723,2726,2729,2731,2734,2736],{"class":504,"line":543},[502,2724,2725],{"class":556},"  async",[502,2727,2728],{"class":590}," canUpdate",[502,2730,570],{"class":519},[502,2732,2733],{"class":732},"user",[502,2735,656],{"class":519},[502,2737,584],{"class":519},[502,2739,2740],{"class":504,"line":550},[502,2741,2742],{"class":508},"    // Controls both form fields AND M2M relations\n",[502,2744,2745,2748,2751,2754,2757,2760,2762,2765],{"class":504,"line":587},[502,2746,2747],{"class":515},"    return",[502,2749,2750],{"class":523}," user",[502,2752,2753],{"class":519},"?.",[502,2755,2756],{"class":523},"role",[502,2758,2759],{"class":519}," ===",[502,2761,533],{"class":519},[502,2763,2764],{"class":536},"editor",[502,2766,540],{"class":519},[502,2768,2769],{"class":504,"line":612},[502,2770,1127],{"class":519},[502,2772,2773],{"class":504,"line":662},[502,2774,1808],{"class":519},[455,2776,2777],{},"If user lacks update permission:",[1142,2779,2780,2783,2786],{},[1145,2781,2782],{},"M2M fields shown but disabled",[1145,2784,2785],{},"Save buttons are disabled",[1145,2787,2788,2789,2792],{},"Or hidden based on ",[499,2790,2791],{},"unauthorizedButtons"," config",[481,2794],{},[459,2796,426],{"id":2797},"advanced",[487,2799,2801],{"id":2800},"hiding-relations","Hiding Relations",[455,2803,2804],{},"Hide specific relations from admin UI:",[492,2806,2808],{"className":494,"code":2807,"language":496,"meta":497,"style":497},"autoAdmin: {\n  resources: {\n    articles: {\n      hiddenFields: ['internalCategoryId'],  // Won't show in any form\n    }\n  }\n}\n",[499,2809,2810,2818,2826,2834,2859,2863,2867],{"__ignoreMap":497},[502,2811,2812,2814,2816],{"class":504,"line":505},[502,2813,1756],{"class":1755},[502,2815,594],{"class":519},[502,2817,584],{"class":519},[502,2819,2820,2822,2824],{"class":504,"line":512},[502,2821,1765],{"class":1755},[502,2823,594],{"class":519},[502,2825,584],{"class":519},[502,2827,2828,2830,2832],{"class":504,"line":543},[502,2829,2412],{"class":1755},[502,2831,594],{"class":519},[502,2833,584],{"class":519},[502,2835,2836,2839,2841,2844,2846,2849,2851,2854,2856],{"class":504,"line":550},[502,2837,2838],{"class":1755},"      hiddenFields",[502,2840,594],{"class":519},[502,2842,2843],{"class":590}," [",[502,2845,573],{"class":519},[502,2847,2848],{"class":536},"internalCategoryId",[502,2850,573],{"class":519},[502,2852,2853],{"class":590},"]",[502,2855,581],{"class":519},[502,2857,2858],{"class":508},"  // Won't show in any form\n",[502,2860,2861],{"class":504,"line":587},[502,2862,1122],{"class":519},[502,2864,2865],{"class":504,"line":612},[502,2866,1127],{"class":519},[502,2868,2869],{"class":504,"line":662},[502,2870,1808],{"class":519},[487,2872,2874],{"id":2873},"custom-relation-widget","Custom Relation Widget",[455,2876,2877],{},"Create custom widget for special cases:",[492,2879,2883],{"className":2880,"code":2881,"language":2882,"meta":497,"style":497},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- components/admin/CustomRelationWidget.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- Your custom multi-select UI -->\n  \u003C/div>\n\u003C/template>\n\n\u003Cscript setup>\nconst props = defineProps\u003C{\n  modelValue: number[]\n  options: any[]\n}>()\n\nconst emit = defineEmits\u003C{\n  'update:modelValue': [value: number[]]\n}>()\n\u003C/script>\n","vue",[499,2884,2885,2890,2901,2911,2916,2925,2934,2938,2950,2966,2979,2991,2999,3003,3017,3041,3047],{"__ignoreMap":497},[502,2886,2887],{"class":504,"line":505},[502,2888,2889],{"class":508},"\u003C!-- components/admin/CustomRelationWidget.vue -->\n",[502,2891,2892,2895,2898],{"class":504,"line":512},[502,2893,2894],{"class":519},"\u003C",[502,2896,2897],{"class":590},"template",[502,2899,2900],{"class":519},">\n",[502,2902,2903,2906,2909],{"class":504,"line":543},[502,2904,2905],{"class":519},"  \u003C",[502,2907,2908],{"class":590},"div",[502,2910,2900],{"class":519},[502,2912,2913],{"class":504,"line":550},[502,2914,2915],{"class":508},"    \u003C!-- Your custom multi-select UI -->\n",[502,2917,2918,2921,2923],{"class":504,"line":587},[502,2919,2920],{"class":519},"  \u003C/",[502,2922,2908],{"class":590},[502,2924,2900],{"class":519},[502,2926,2927,2930,2932],{"class":504,"line":612},[502,2928,2929],{"class":519},"\u003C/",[502,2931,2897],{"class":590},[502,2933,2900],{"class":519},[502,2935,2936],{"class":504,"line":662},[502,2937,547],{"emptyLinePlaceholder":546},[502,2939,2940,2942,2945,2948],{"class":504,"line":683},[502,2941,2894],{"class":519},[502,2943,2944],{"class":590},"script",[502,2946,2947],{"class":556}," setup",[502,2949,2900],{"class":519},[502,2951,2952,2955,2958,2960,2963],{"class":504,"line":723},[502,2953,2954],{"class":556},"const",[502,2956,2957],{"class":523}," props ",[502,2959,563],{"class":519},[502,2961,2962],{"class":566}," defineProps",[502,2964,2965],{"class":519},"\u003C{\n",[502,2967,2968,2971,2973,2976],{"class":504,"line":745},[502,2969,2970],{"class":590},"  modelValue",[502,2972,594],{"class":519},[502,2974,2975],{"class":1755}," number",[502,2977,2978],{"class":523},"[]\n",[502,2980,2981,2984,2986,2989],{"class":504,"line":789},[502,2982,2983],{"class":590},"  options",[502,2985,594],{"class":519},[502,2987,2988],{"class":1755}," any",[502,2990,2978],{"class":523},[502,2992,2993,2996],{"class":504,"line":797},[502,2994,2995],{"class":519},"}>",[502,2997,2998],{"class":523},"()\n",[502,3000,3001],{"class":504,"line":802},[502,3002,547],{"emptyLinePlaceholder":546},[502,3004,3005,3007,3010,3012,3015],{"class":504,"line":808},[502,3006,2954],{"class":556},[502,3008,3009],{"class":523}," emit ",[502,3011,563],{"class":519},[502,3013,3014],{"class":566}," defineEmits",[502,3016,2965],{"class":519},[502,3018,3019,3022,3025,3027,3029,3031,3034,3036,3038],{"class":504,"line":842},[502,3020,3021],{"class":519},"  '",[502,3023,3024],{"class":536},"update:modelValue",[502,3026,573],{"class":519},[502,3028,594],{"class":519},[502,3030,2843],{"class":523},[502,3032,3033],{"class":1755},"value",[502,3035,594],{"class":519},[502,3037,2975],{"class":1755},[502,3039,3040],{"class":523},"[]]\n",[502,3042,3043,3045],{"class":504,"line":859},[502,3044,2995],{"class":519},[502,3046,2998],{"class":523},[502,3048,3049,3051,3053],{"class":504,"line":877},[502,3050,2929],{"class":519},[502,3052,2944],{"class":590},[502,3054,2900],{"class":519},[455,3056,3057],{},"Register in admin config:",[492,3059,3061],{"className":494,"code":3060,"language":496,"meta":497,"style":497},"autoAdmin: {\n  resources: {\n    articles: {\n      formFields: {\n        edit: [\n          {\n            name: 'categories',\n            widget: 'CustomRelationWidget',  // Your widget\n            options: {\n              // Custom options\n            }\n          }\n        ]\n      }\n    }\n  }\n}\n",[499,3062,3063,3071,3079,3087,3095,3103,3107,3121,3139,3147,3152,3156,3160,3164,3168,3172,3176],{"__ignoreMap":497},[502,3064,3065,3067,3069],{"class":504,"line":505},[502,3066,1756],{"class":1755},[502,3068,594],{"class":519},[502,3070,584],{"class":519},[502,3072,3073,3075,3077],{"class":504,"line":512},[502,3074,1765],{"class":1755},[502,3076,594],{"class":519},[502,3078,584],{"class":519},[502,3080,3081,3083,3085],{"class":504,"line":543},[502,3082,2412],{"class":1755},[502,3084,594],{"class":519},[502,3086,584],{"class":519},[502,3088,3089,3091,3093],{"class":504,"line":550},[502,3090,2421],{"class":1755},[502,3092,594],{"class":519},[502,3094,584],{"class":519},[502,3096,3097,3099,3101],{"class":504,"line":587},[502,3098,2430],{"class":1755},[502,3100,594],{"class":519},[502,3102,2435],{"class":590},[502,3104,3105],{"class":504,"line":612},[502,3106,2488],{"class":519},[502,3108,3109,3111,3113,3115,3117,3119],{"class":504,"line":662},[502,3110,2493],{"class":590},[502,3112,594],{"class":519},[502,3114,533],{"class":519},[502,3116,2096],{"class":536},[502,3118,573],{"class":519},[502,3120,659],{"class":519},[502,3122,3123,3125,3127,3129,3132,3134,3136],{"class":504,"line":683},[502,3124,2508],{"class":590},[502,3126,594],{"class":519},[502,3128,533],{"class":519},[502,3130,3131],{"class":536},"CustomRelationWidget",[502,3133,573],{"class":519},[502,3135,581],{"class":519},[502,3137,3138],{"class":508},"  // Your widget\n",[502,3140,3141,3143,3145],{"class":504,"line":723},[502,3142,2538],{"class":590},[502,3144,594],{"class":519},[502,3146,584],{"class":519},[502,3148,3149],{"class":504,"line":745},[502,3150,3151],{"class":508},"              // Custom options\n",[502,3153,3154],{"class":504,"line":789},[502,3155,2622],{"class":519},[502,3157,3158],{"class":504,"line":797},[502,3159,1107],{"class":519},[502,3161,3162],{"class":504,"line":802},[502,3163,2631],{"class":590},[502,3165,3166],{"class":504,"line":808},[502,3167,1117],{"class":519},[502,3169,3170],{"class":504,"line":842},[502,3171,1122],{"class":519},[502,3173,3174],{"class":504,"line":859},[502,3175,1127],{"class":519},[502,3177,3178],{"class":504,"line":877},[502,3179,1808],{"class":519},[481,3181],{},[459,3183,3185],{"id":3184},"metadata-support","Metadata Support",[455,3187,3188],{},"Junction tables with metadata columns:",[492,3190,3192],{"className":494,"code":3191,"language":496,"meta":497,"style":497},"// Schema\nexport const articleCategories = sqliteTable('article_categories', {\n  articleId: integer('article_id')...\n  categoryId: integer('category_id')...\n  sortOrder: integer('sort_order'),  // Metadata\n  isPrimary: integer('is_primary', { mode: 'boolean' }),\n})\n\n// Config\nautoApi: {\n  m2m: {\n    relations: {\n      articles: {\n        categories: {\n          junctionTable: 'articleCategories',\n          leftKey: 'articleId',\n          rightKey: 'categoryId',\n          metadataColumns: ['sortOrder', 'isPrimary'],\n        }\n      }\n    }\n  }\n}\n",[499,3193,3194,3199,3223,3244,3264,3287,3327,3333,3337,3342,3350,3358,3366,3374,3382,3397,3412,3427,3456,3460,3464,3468,3472],{"__ignoreMap":497},[502,3195,3196],{"class":504,"line":505},[502,3197,3198],{"class":508},"// Schema\n",[502,3200,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221],{"class":504,"line":512},[502,3202,553],{"class":515},[502,3204,557],{"class":556},[502,3206,560],{"class":523},[502,3208,563],{"class":519},[502,3210,567],{"class":566},[502,3212,570],{"class":523},[502,3214,573],{"class":519},[502,3216,576],{"class":536},[502,3218,573],{"class":519},[502,3220,581],{"class":519},[502,3222,584],{"class":519},[502,3224,3225,3227,3229,3231,3233,3235,3237,3239,3241],{"class":504,"line":543},[502,3226,591],{"class":590},[502,3228,594],{"class":519},[502,3230,597],{"class":566},[502,3232,570],{"class":523},[502,3234,573],{"class":519},[502,3236,604],{"class":536},[502,3238,573],{"class":519},[502,3240,656],{"class":523},[502,3242,3243],{"class":519},"...\n",[502,3245,3246,3249,3252,3254,3256,3258,3260,3262],{"class":504,"line":550},[502,3247,3248],{"class":523},"  categoryId: ",[502,3250,3251],{"class":566},"integer",[502,3253,570],{"class":523},[502,3255,573],{"class":519},[502,3257,676],{"class":536},[502,3259,573],{"class":519},[502,3261,656],{"class":523},[502,3263,3243],{"class":519},[502,3265,3266,3269,3271,3273,3275,3278,3280,3282,3284],{"class":504,"line":587},[502,3267,3268],{"class":523},"  sortOrder: ",[502,3270,3251],{"class":566},[502,3272,570],{"class":523},[502,3274,573],{"class":519},[502,3276,3277],{"class":536},"sort_order",[502,3279,573],{"class":519},[502,3281,656],{"class":523},[502,3283,581],{"class":519},[502,3285,3286],{"class":508},"  // Metadata\n",[502,3288,3289,3292,3294,3296,3298,3300,3303,3305,3307,3309,3312,3314,3316,3319,3321,3323,3325],{"class":504,"line":612},[502,3290,3291],{"class":590},"  isPrimary",[502,3293,594],{"class":519},[502,3295,597],{"class":566},[502,3297,570],{"class":523},[502,3299,573],{"class":519},[502,3301,3302],{"class":536},"is_primary",[502,3304,573],{"class":519},[502,3306,581],{"class":519},[502,3308,520],{"class":519},[502,3310,3311],{"class":590}," mode",[502,3313,594],{"class":519},[502,3315,533],{"class":519},[502,3317,3318],{"class":536},"boolean",[502,3320,573],{"class":519},[502,3322,527],{"class":519},[502,3324,656],{"class":523},[502,3326,659],{"class":519},[502,3328,3329,3331],{"class":504,"line":662},[502,3330,784],{"class":519},[502,3332,609],{"class":523},[502,3334,3335],{"class":504,"line":683},[502,3336,547],{"emptyLinePlaceholder":546},[502,3338,3339],{"class":504,"line":723},[502,3340,3341],{"class":508},"// Config\n",[502,3343,3344,3346,3348],{"class":504,"line":745},[502,3345,1917],{"class":1755},[502,3347,594],{"class":519},[502,3349,584],{"class":519},[502,3351,3352,3354,3356],{"class":504,"line":789},[502,3353,1926],{"class":1755},[502,3355,594],{"class":519},[502,3357,584],{"class":519},[502,3359,3360,3362,3364],{"class":504,"line":797},[502,3361,1935],{"class":1755},[502,3363,594],{"class":519},[502,3365,584],{"class":519},[502,3367,3368,3370,3372],{"class":504,"line":802},[502,3369,1944],{"class":1755},[502,3371,594],{"class":519},[502,3373,584],{"class":519},[502,3375,3376,3378,3380],{"class":504,"line":808},[502,3377,1953],{"class":1755},[502,3379,594],{"class":519},[502,3381,584],{"class":519},[502,3383,3384,3387,3389,3391,3393,3395],{"class":504,"line":842},[502,3385,3386],{"class":1755},"          junctionTable",[502,3388,594],{"class":519},[502,3390,533],{"class":519},[502,3392,1406],{"class":536},[502,3394,573],{"class":519},[502,3396,659],{"class":519},[502,3398,3399,3402,3404,3406,3408,3410],{"class":504,"line":859},[502,3400,3401],{"class":1755},"          leftKey",[502,3403,594],{"class":519},[502,3405,533],{"class":519},[502,3407,771],{"class":536},[502,3409,573],{"class":519},[502,3411,659],{"class":519},[502,3413,3414,3417,3419,3421,3423,3425],{"class":504,"line":877},[502,3415,3416],{"class":1755},"          rightKey",[502,3418,594],{"class":519},[502,3420,533],{"class":519},[502,3422,1483],{"class":536},[502,3424,573],{"class":519},[502,3426,659],{"class":519},[502,3428,3429,3432,3434,3436,3438,3441,3443,3445,3447,3450,3452,3454],{"class":504,"line":895},[502,3430,3431],{"class":1755},"          metadataColumns",[502,3433,594],{"class":519},[502,3435,2843],{"class":590},[502,3437,573],{"class":519},[502,3439,3440],{"class":536},"sortOrder",[502,3442,573],{"class":519},[502,3444,581],{"class":519},[502,3446,533],{"class":519},[502,3448,3449],{"class":536},"isPrimary",[502,3451,573],{"class":519},[502,3453,2853],{"class":590},[502,3455,659],{"class":519},[502,3457,3458],{"class":504,"line":905},[502,3459,1112],{"class":519},[502,3461,3462],{"class":504,"line":922},[502,3463,1117],{"class":519},[502,3465,3466],{"class":504,"line":938},[502,3467,1122],{"class":519},[502,3469,3470],{"class":504,"line":954},[502,3471,1127],{"class":519},[502,3473,3474],{"class":504,"line":963},[502,3475,1808],{"class":519},[455,3477,3478],{},"The admin UI will:",[1142,3480,3481,3484,3487],{},[1145,3482,3483],{},"Show basic multi-select (no metadata editing by default)",[1145,3485,3486],{},"Metadata preserved on save",[1145,3488,3489],{},"Custom widget needed for editing metadata",[481,3491],{},[459,3493,3495],{"id":3494},"best-practices","Best Practices",[487,3497,3499],{"id":3498},"_1-configure-in-api-module","1. Configure in API Module",[492,3501,3503],{"className":494,"code":3502,"language":496,"meta":497,"style":497},"// ✅ GOOD: Single source of truth\nautoApi: {\n  m2m: {\n    relations: {\n      articles: {\n        categories: {\n          junctionTable: 'articleCategories',\n          leftKey: 'articleId',\n          rightKey: 'categoryId',\n          label: 'Categories',  // For admin\n        }\n      }\n    }\n  }\n}\n\n// ❌ BAD: Duplicating config in admin module\nautoAdmin: {\n  resources: {\n    articles: {\n      formFields: {\n        edit: [\n          { /* manual M2M config */ }\n        ]\n      }\n    }\n  }\n}\n",[499,3504,3505,3510,3518,3526,3534,3542,3550,3564,3578,3592,3609,3613,3617,3621,3625,3629,3633,3638,3646,3654,3662,3670,3678,3688,3692,3696,3700,3704],{"__ignoreMap":497},[502,3506,3507],{"class":504,"line":505},[502,3508,3509],{"class":508},"// ✅ GOOD: Single source of truth\n",[502,3511,3512,3514,3516],{"class":504,"line":512},[502,3513,1917],{"class":1755},[502,3515,594],{"class":519},[502,3517,584],{"class":519},[502,3519,3520,3522,3524],{"class":504,"line":543},[502,3521,1926],{"class":1755},[502,3523,594],{"class":519},[502,3525,584],{"class":519},[502,3527,3528,3530,3532],{"class":504,"line":550},[502,3529,1935],{"class":1755},[502,3531,594],{"class":519},[502,3533,584],{"class":519},[502,3535,3536,3538,3540],{"class":504,"line":587},[502,3537,1944],{"class":1755},[502,3539,594],{"class":519},[502,3541,584],{"class":519},[502,3543,3544,3546,3548],{"class":504,"line":612},[502,3545,1953],{"class":1755},[502,3547,594],{"class":519},[502,3549,584],{"class":519},[502,3551,3552,3554,3556,3558,3560,3562],{"class":504,"line":662},[502,3553,3386],{"class":1755},[502,3555,594],{"class":519},[502,3557,533],{"class":519},[502,3559,1406],{"class":536},[502,3561,573],{"class":519},[502,3563,659],{"class":519},[502,3565,3566,3568,3570,3572,3574,3576],{"class":504,"line":683},[502,3567,3401],{"class":1755},[502,3569,594],{"class":519},[502,3571,533],{"class":519},[502,3573,771],{"class":536},[502,3575,573],{"class":519},[502,3577,659],{"class":519},[502,3579,3580,3582,3584,3586,3588,3590],{"class":504,"line":723},[502,3581,3416],{"class":1755},[502,3583,594],{"class":519},[502,3585,533],{"class":519},[502,3587,1483],{"class":536},[502,3589,573],{"class":519},[502,3591,659],{"class":519},[502,3593,3594,3596,3598,3600,3602,3604,3606],{"class":504,"line":745},[502,3595,1967],{"class":1755},[502,3597,594],{"class":519},[502,3599,533],{"class":519},[502,3601,1057],{"class":536},[502,3603,573],{"class":519},[502,3605,581],{"class":519},[502,3607,3608],{"class":508},"  // For admin\n",[502,3610,3611],{"class":504,"line":789},[502,3612,1112],{"class":519},[502,3614,3615],{"class":504,"line":797},[502,3616,1117],{"class":519},[502,3618,3619],{"class":504,"line":802},[502,3620,1122],{"class":519},[502,3622,3623],{"class":504,"line":808},[502,3624,1127],{"class":519},[502,3626,3627],{"class":504,"line":842},[502,3628,1808],{"class":519},[502,3630,3631],{"class":504,"line":859},[502,3632,547],{"emptyLinePlaceholder":546},[502,3634,3635],{"class":504,"line":877},[502,3636,3637],{"class":508},"// ❌ BAD: Duplicating config in admin module\n",[502,3639,3640,3642,3644],{"class":504,"line":895},[502,3641,1756],{"class":1755},[502,3643,594],{"class":519},[502,3645,584],{"class":519},[502,3647,3648,3650,3652],{"class":504,"line":905},[502,3649,1765],{"class":1755},[502,3651,594],{"class":519},[502,3653,584],{"class":519},[502,3655,3656,3658,3660],{"class":504,"line":922},[502,3657,2412],{"class":1755},[502,3659,594],{"class":519},[502,3661,584],{"class":519},[502,3663,3664,3666,3668],{"class":504,"line":938},[502,3665,2421],{"class":1755},[502,3667,594],{"class":519},[502,3669,584],{"class":519},[502,3671,3672,3674,3676],{"class":504,"line":954},[502,3673,2430],{"class":1755},[502,3675,594],{"class":519},[502,3677,2435],{"class":590},[502,3679,3680,3682,3685],{"class":504,"line":963},[502,3681,2445],{"class":519},[502,3683,3684],{"class":508}," /* manual M2M config */",[502,3686,3687],{"class":519}," }\n",[502,3689,3690],{"class":504,"line":1629},[502,3691,2631],{"class":590},[502,3693,3694],{"class":504,"line":1635},[502,3695,1117],{"class":519},[502,3697,3698],{"class":504,"line":1660},[502,3699,1122],{"class":519},[502,3701,3702],{"class":504,"line":1684},[502,3703,1127],{"class":519},[502,3705,3706],{"class":504,"line":1708},[502,3707,1808],{"class":519},[487,3709,3711],{"id":3710},"_2-use-descriptive-labels","2. Use Descriptive Labels",[492,3713,3715],{"className":494,"code":3714,"language":496,"meta":497,"style":497},"label: 'Article Categories',  // ✅ Clear\nhelp: 'Organize this article by selecting relevant categories'  // ✅ Helpful\n\nlabel: 'cats',  // ❌ Unclear\n",[499,3716,3717,3734,3750,3754],{"__ignoreMap":497},[502,3718,3719,3721,3723,3725,3727,3729,3731],{"class":504,"line":505},[502,3720,2050],{"class":1755},[502,3722,594],{"class":519},[502,3724,533],{"class":519},[502,3726,1974],{"class":536},[502,3728,573],{"class":519},[502,3730,581],{"class":519},[502,3732,3733],{"class":508},"  // ✅ Clear\n",[502,3735,3736,3738,3740,3742,3745,3747],{"class":504,"line":512},[502,3737,2056],{"class":1755},[502,3739,594],{"class":519},[502,3741,533],{"class":519},[502,3743,3744],{"class":536},"Organize this article by selecting relevant categories",[502,3746,573],{"class":519},[502,3748,3749],{"class":508},"  // ✅ Helpful\n",[502,3751,3752],{"class":504,"line":543},[502,3753,547],{"emptyLinePlaceholder":546},[502,3755,3756,3758,3760,3762,3765,3767,3769],{"class":504,"line":550},[502,3757,2050],{"class":1755},[502,3759,594],{"class":519},[502,3761,533],{"class":519},[502,3763,3764],{"class":536},"cats",[502,3766,573],{"class":519},[502,3768,581],{"class":519},[502,3770,3771],{"class":508},"  // ❌ Unclear\n",[487,3773,3775],{"id":3774},"_3-use-page-mode-for-complex-forms","3. Use Page Mode for Complex Forms",[492,3777,3779],{"className":494,"code":3778,"language":496,"meta":497,"style":497},"autoAdmin: {\n  ui: {\n    editMode: 'page',  // ✅ Better for M2M\n  }\n}\n",[499,3780,3781,3789,3797,3814,3818],{"__ignoreMap":497},[502,3782,3783,3785,3787],{"class":504,"line":505},[502,3784,1756],{"class":1755},[502,3786,594],{"class":519},[502,3788,584],{"class":519},[502,3790,3791,3793,3795],{"class":504,"line":512},[502,3792,2259],{"class":1755},[502,3794,594],{"class":519},[502,3796,584],{"class":519},[502,3798,3799,3801,3803,3805,3807,3809,3811],{"class":504,"line":543},[502,3800,2268],{"class":1755},[502,3802,594],{"class":519},[502,3804,533],{"class":519},[502,3806,2275],{"class":536},[502,3808,573],{"class":519},[502,3810,581],{"class":519},[502,3812,3813],{"class":508},"  // ✅ Better for M2M\n",[502,3815,3816],{"class":504,"line":550},[502,3817,1127],{"class":519},[502,3819,3820],{"class":504,"line":587},[502,3821,1808],{"class":519},[487,3823,3825],{"id":3824},"_4-test-permissions","4. Test Permissions",[455,3827,3828],{},"Verify M2M fields respect permissions:",[1142,3830,3831,3834],{},[1145,3832,3833],{},"Disabled when no update permission",[1145,3835,3836],{},"Hidden/shown based on config",[481,3838],{},[459,3840,3842],{"id":3841},"troubleshooting","Troubleshooting",[487,3844,3846],{"id":3845},"relations-not-showing","Relations Not Showing",[455,3848,3849,3852],{},[471,3850,3851],{},"Problem:"," M2M fields don't appear in edit form",[455,3854,3855],{},[471,3856,3857],{},"Solutions:",[2355,3859,3860,3863,3866,3869],{},[1145,3861,3862],{},"Check API module config is correct",[1145,3864,3865],{},"Verify junction table is registered",[1145,3867,3868],{},"Check browser console for errors",[1145,3870,3871,3872],{},"Test M2M endpoint directly: ",[499,3873,3874],{},"GET /api/articles/10/relations/categories",[487,3876,3878],{"id":3877},"cant-save-relations","Can't Save Relations",[455,3880,3881,3883],{},[471,3882,3851],{}," Save button doesn't work or shows errors",[455,3885,3886],{},[471,3887,3857],{},[2355,3889,3890,3896,3899,3902],{},[1145,3891,3892,3893,656],{},"Check permissions (need ",[499,3894,3895],{},"canUpdate",[1145,3897,3898],{},"Verify related records exist",[1145,3900,3901],{},"Check browser network tab for API errors",[1145,3903,3904],{},"Ensure junction table has proper foreign keys",[487,3906,3908],{"id":3907},"wrong-labels","Wrong Labels",[455,3910,3911,3913],{},[471,3912,3851],{}," Relation shows wrong label",[455,3915,3916,3919],{},[471,3917,3918],{},"Solution:"," Update label in API config:",[492,3921,3923],{"className":494,"code":3922,"language":496,"meta":497,"style":497},"autoApi: {\n  m2m: {\n    relations: {\n      articles: {\n        categories: {\n          // ...\n          label: 'Correct Label Here',  // ← Update this\n        }\n      }\n    }\n  }\n}\n",[499,3924,3925,3933,3941,3949,3957,3965,3970,3988,3992,3996,4000,4004],{"__ignoreMap":497},[502,3926,3927,3929,3931],{"class":504,"line":505},[502,3928,1917],{"class":1755},[502,3930,594],{"class":519},[502,3932,584],{"class":519},[502,3934,3935,3937,3939],{"class":504,"line":512},[502,3936,1926],{"class":1755},[502,3938,594],{"class":519},[502,3940,584],{"class":519},[502,3942,3943,3945,3947],{"class":504,"line":543},[502,3944,1935],{"class":1755},[502,3946,594],{"class":519},[502,3948,584],{"class":519},[502,3950,3951,3953,3955],{"class":504,"line":550},[502,3952,1944],{"class":1755},[502,3954,594],{"class":519},[502,3956,584],{"class":519},[502,3958,3959,3961,3963],{"class":504,"line":587},[502,3960,1953],{"class":1755},[502,3962,594],{"class":519},[502,3964,584],{"class":519},[502,3966,3967],{"class":504,"line":612},[502,3968,3969],{"class":508},"          // ...\n",[502,3971,3972,3974,3976,3978,3981,3983,3985],{"class":504,"line":662},[502,3973,1967],{"class":1755},[502,3975,594],{"class":519},[502,3977,533],{"class":519},[502,3979,3980],{"class":536},"Correct Label Here",[502,3982,573],{"class":519},[502,3984,581],{"class":519},[502,3986,3987],{"class":508},"  // ← Update this\n",[502,3989,3990],{"class":504,"line":683},[502,3991,1112],{"class":519},[502,3993,3994],{"class":504,"line":723},[502,3995,1117],{"class":519},[502,3997,3998],{"class":504,"line":745},[502,3999,1122],{"class":519},[502,4001,4002],{"class":504,"line":789},[502,4003,1127],{"class":519},[502,4005,4006],{"class":504,"line":797},[502,4007,1808],{"class":519},[481,4009],{},[459,4011,4013],{"id":4012},"examples","Examples",[487,4015,4017],{"id":4016},"basic-setup","Basic Setup",[492,4019,4021],{"className":494,"code":4020,"language":496,"meta":497,"style":497},"// nuxt.config.ts\nexport default defineNuxtConfig({\n  autoApi: {\n    m2m: {\n      // Auto-detection enabled by default\n      // Only customize labels if needed\n      relations: {\n        articles: {\n          categories: {\n            label: 'Categories',\n            displayField: 'name',\n          },\n          tags: {\n            label: 'Tags',\n            help: 'Add relevant tags',\n          }\n        }\n      }\n    }\n  },\n\n  autoAdmin: {\n    ui: {\n      editMode: 'page',  // Use page mode for M2M\n    }\n  }\n})\n",[499,4022,4023,4027,4039,4047,4055,4059,4064,4072,4080,4088,4102,4116,4121,4130,4145,4160,4164,4168,4172,4176,4181,4185,4194,4203,4221,4225,4229],{"__ignoreMap":497},[502,4024,4025],{"class":504,"line":505},[502,4026,981],{"class":508},[502,4028,4029,4031,4033,4035,4037],{"class":504,"line":512},[502,4030,553],{"class":515},[502,4032,988],{"class":515},[502,4034,991],{"class":566},[502,4036,570],{"class":523},[502,4038,742],{"class":519},[502,4040,4041,4043,4045],{"class":504,"line":543},[502,4042,1000],{"class":590},[502,4044,594],{"class":519},[502,4046,584],{"class":519},[502,4048,4049,4051,4053],{"class":504,"line":550},[502,4050,1009],{"class":590},[502,4052,594],{"class":519},[502,4054,584],{"class":519},[502,4056,4057],{"class":504,"line":587},[502,4058,1018],{"class":508},[502,4060,4061],{"class":504,"line":612},[502,4062,4063],{"class":508},"      // Only customize labels if needed\n",[502,4065,4066,4068,4070],{"class":504,"line":662},[502,4067,1023],{"class":590},[502,4069,594],{"class":519},[502,4071,584],{"class":519},[502,4073,4074,4076,4078],{"class":504,"line":683},[502,4075,1032],{"class":590},[502,4077,594],{"class":519},[502,4079,584],{"class":519},[502,4081,4082,4084,4086],{"class":504,"line":723},[502,4083,1041],{"class":590},[502,4085,594],{"class":519},[502,4087,584],{"class":519},[502,4089,4090,4092,4094,4096,4098,4100],{"class":504,"line":745},[502,4091,1050],{"class":590},[502,4093,594],{"class":519},[502,4095,533],{"class":519},[502,4097,1057],{"class":536},[502,4099,573],{"class":519},[502,4101,659],{"class":519},[502,4103,4104,4106,4108,4110,4112,4114],{"class":504,"line":789},[502,4105,1088],{"class":590},[502,4107,594],{"class":519},[502,4109,533],{"class":519},[502,4111,1095],{"class":536},[502,4113,573],{"class":519},[502,4115,659],{"class":519},[502,4117,4118],{"class":504,"line":797},[502,4119,4120],{"class":519},"          },\n",[502,4122,4123,4126,4128],{"class":504,"line":802},[502,4124,4125],{"class":590},"          tags",[502,4127,594],{"class":519},[502,4129,584],{"class":519},[502,4131,4132,4134,4136,4138,4141,4143],{"class":504,"line":808},[502,4133,1050],{"class":590},[502,4135,594],{"class":519},[502,4137,533],{"class":519},[502,4139,4140],{"class":536},"Tags",[502,4142,573],{"class":519},[502,4144,659],{"class":519},[502,4146,4147,4149,4151,4153,4156,4158],{"class":504,"line":842},[502,4148,1069],{"class":590},[502,4150,594],{"class":519},[502,4152,533],{"class":519},[502,4154,4155],{"class":536},"Add relevant tags",[502,4157,573],{"class":519},[502,4159,659],{"class":519},[502,4161,4162],{"class":504,"line":859},[502,4163,1107],{"class":519},[502,4165,4166],{"class":504,"line":877},[502,4167,1112],{"class":519},[502,4169,4170],{"class":504,"line":895},[502,4171,1117],{"class":519},[502,4173,4174],{"class":504,"line":905},[502,4175,1122],{"class":519},[502,4177,4178],{"class":504,"line":922},[502,4179,4180],{"class":519},"  },\n",[502,4182,4183],{"class":504,"line":938},[502,4184,547],{"emptyLinePlaceholder":546},[502,4186,4187,4190,4192],{"class":504,"line":954},[502,4188,4189],{"class":590},"  autoAdmin",[502,4191,594],{"class":519},[502,4193,584],{"class":519},[502,4195,4196,4199,4201],{"class":504,"line":963},[502,4197,4198],{"class":590},"    ui",[502,4200,594],{"class":519},[502,4202,584],{"class":519},[502,4204,4205,4208,4210,4212,4214,4216,4218],{"class":504,"line":1629},[502,4206,4207],{"class":590},"      editMode",[502,4209,594],{"class":519},[502,4211,533],{"class":519},[502,4213,2275],{"class":536},[502,4215,573],{"class":519},[502,4217,581],{"class":519},[502,4219,4220],{"class":508},"  // Use page mode for M2M\n",[502,4222,4223],{"class":504,"line":1635},[502,4224,1122],{"class":519},[502,4226,4227],{"class":504,"line":1660},[502,4228,1127],{"class":519},[502,4230,4231,4233],{"class":504,"line":1684},[502,4232,784],{"class":519},[502,4234,609],{"class":523},[487,4236,4238],{"id":4237},"multiple-resources","Multiple Resources",[492,4240,4242],{"className":494,"code":4241,"language":496,"meta":497,"style":497},"autoApi: {\n  m2m: {\n    // Auto-detection finds all junction tables\n    // Only customize labels/help as needed\n    relations: {\n      articles: {\n        categories: {\n          label: 'Categories',\n        },\n        tags: {\n          label: 'Tags',\n        },\n      },\n      users: {\n        roles: {\n          label: 'User Roles',\n          help: 'Assign roles to control permissions',\n        }\n      },\n      products: {\n        categories: {\n          label: 'Product Categories',\n        }\n      }\n    }\n  }\n}\n",[499,4243,4244,4252,4260,4265,4270,4278,4286,4294,4308,4313,4322,4336,4340,4345,4354,4363,4378,4393,4397,4401,4410,4418,4433,4437,4441,4445,4449],{"__ignoreMap":497},[502,4245,4246,4248,4250],{"class":504,"line":505},[502,4247,1917],{"class":1755},[502,4249,594],{"class":519},[502,4251,584],{"class":519},[502,4253,4254,4256,4258],{"class":504,"line":512},[502,4255,1926],{"class":1755},[502,4257,594],{"class":519},[502,4259,584],{"class":519},[502,4261,4262],{"class":504,"line":543},[502,4263,4264],{"class":508},"    // Auto-detection finds all junction tables\n",[502,4266,4267],{"class":504,"line":550},[502,4268,4269],{"class":508},"    // Only customize labels/help as needed\n",[502,4271,4272,4274,4276],{"class":504,"line":587},[502,4273,1935],{"class":1755},[502,4275,594],{"class":519},[502,4277,584],{"class":519},[502,4279,4280,4282,4284],{"class":504,"line":612},[502,4281,1944],{"class":1755},[502,4283,594],{"class":519},[502,4285,584],{"class":519},[502,4287,4288,4290,4292],{"class":504,"line":662},[502,4289,1953],{"class":1755},[502,4291,594],{"class":519},[502,4293,584],{"class":519},[502,4295,4296,4298,4300,4302,4304,4306],{"class":504,"line":683},[502,4297,1967],{"class":1755},[502,4299,594],{"class":519},[502,4301,533],{"class":519},[502,4303,1057],{"class":536},[502,4305,573],{"class":519},[502,4307,659],{"class":519},[502,4309,4310],{"class":504,"line":723},[502,4311,4312],{"class":519},"        },\n",[502,4314,4315,4318,4320],{"class":504,"line":745},[502,4316,4317],{"class":1755},"        tags",[502,4319,594],{"class":519},[502,4321,584],{"class":519},[502,4323,4324,4326,4328,4330,4332,4334],{"class":504,"line":789},[502,4325,1967],{"class":1755},[502,4327,594],{"class":519},[502,4329,533],{"class":519},[502,4331,4140],{"class":536},[502,4333,573],{"class":519},[502,4335,659],{"class":519},[502,4337,4338],{"class":504,"line":797},[502,4339,4312],{"class":519},[502,4341,4342],{"class":504,"line":802},[502,4343,4344],{"class":519},"      },\n",[502,4346,4347,4350,4352],{"class":504,"line":808},[502,4348,4349],{"class":1755},"      users",[502,4351,594],{"class":519},[502,4353,584],{"class":519},[502,4355,4356,4359,4361],{"class":504,"line":842},[502,4357,4358],{"class":1755},"        roles",[502,4360,594],{"class":519},[502,4362,584],{"class":519},[502,4364,4365,4367,4369,4371,4374,4376],{"class":504,"line":859},[502,4366,1967],{"class":1755},[502,4368,594],{"class":519},[502,4370,533],{"class":519},[502,4372,4373],{"class":536},"User Roles",[502,4375,573],{"class":519},[502,4377,659],{"class":519},[502,4379,4380,4382,4384,4386,4389,4391],{"class":504,"line":877},[502,4381,1986],{"class":1755},[502,4383,594],{"class":519},[502,4385,533],{"class":519},[502,4387,4388],{"class":536},"Assign roles to control permissions",[502,4390,573],{"class":519},[502,4392,659],{"class":519},[502,4394,4395],{"class":504,"line":895},[502,4396,1112],{"class":519},[502,4398,4399],{"class":504,"line":905},[502,4400,4344],{"class":519},[502,4402,4403,4406,4408],{"class":504,"line":922},[502,4404,4405],{"class":1755},"      products",[502,4407,594],{"class":519},[502,4409,584],{"class":519},[502,4411,4412,4414,4416],{"class":504,"line":938},[502,4413,1953],{"class":1755},[502,4415,594],{"class":519},[502,4417,584],{"class":519},[502,4419,4420,4422,4424,4426,4429,4431],{"class":504,"line":954},[502,4421,1967],{"class":1755},[502,4423,594],{"class":519},[502,4425,533],{"class":519},[502,4427,4428],{"class":536},"Product Categories",[502,4430,573],{"class":519},[502,4432,659],{"class":519},[502,4434,4435],{"class":504,"line":963},[502,4436,1112],{"class":519},[502,4438,4439],{"class":504,"line":1629},[502,4440,1117],{"class":519},[502,4442,4443],{"class":504,"line":1635},[502,4444,1122],{"class":519},[502,4446,4447],{"class":504,"line":1660},[502,4448,1127],{"class":519},[502,4450,4451],{"class":504,"line":1684},[502,4452,1808],{"class":519},[481,4454],{},[459,4456,4458],{"id":4457},"see-also","See Also",[1142,4460,4461,4467,4473,4478],{},[1145,4462,4463,4466],{},[476,4464,4465],{"href":220},"API M2M Configuration"," - How to configure M2M relations",[1145,4468,4469,4472],{},[476,4470,4471],{"href":316},"Form Fields"," - Customizing form fields",[1145,4474,4475,4477],{},[476,4476,319],{"href":320}," - Controlling access",[1145,4479,4480,4483],{},[476,4481,4482],{"href":308},"UI Configuration"," - Modal vs page mode",[4485,4486,4487],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":497,"searchDepth":512,"depth":512,"links":4489},[4490,4491,4496,4501,4505,4509,4513,4514,4518,4519,4525,4530,4534],{"id":461,"depth":512,"text":5},{"id":485,"depth":512,"text":198,"children":4492},[4493,4494,4495],{"id":489,"depth":543,"text":490},{"id":970,"depth":543,"text":971},{"id":1136,"depth":543,"text":1137},{"id":1164,"depth":512,"text":1165,"children":4497},[4498,4499,4500],{"id":1175,"depth":543,"text":1176},{"id":1715,"depth":543,"text":1716},{"id":1736,"depth":543,"text":1737},{"id":1899,"depth":512,"text":1900,"children":4502},[4503,4504],{"id":1903,"depth":543,"text":1904},{"id":2237,"depth":543,"text":2238},{"id":2345,"depth":512,"text":2346,"children":4506},[4507,4508],{"id":2349,"depth":543,"text":2350},{"id":2383,"depth":543,"text":1737},{"id":2660,"depth":512,"text":2661,"children":4510},[4511,4512],{"id":2664,"depth":543,"text":2665},{"id":2679,"depth":543,"text":2680},{"id":2694,"depth":512,"text":319},{"id":2797,"depth":512,"text":426,"children":4515},[4516,4517],{"id":2800,"depth":543,"text":2801},{"id":2873,"depth":543,"text":2874},{"id":3184,"depth":512,"text":3185},{"id":3494,"depth":512,"text":3495,"children":4520},[4521,4522,4523,4524],{"id":3498,"depth":543,"text":3499},{"id":3710,"depth":543,"text":3711},{"id":3774,"depth":543,"text":3775},{"id":3824,"depth":543,"text":3825},{"id":3841,"depth":512,"text":3842,"children":4526},[4527,4528,4529],{"id":3845,"depth":543,"text":3846},{"id":3877,"depth":543,"text":3878},{"id":3907,"depth":543,"text":3908},{"id":4012,"depth":512,"text":4013,"children":4531},[4532,4533],{"id":4016,"depth":543,"text":4017},{"id":4237,"depth":543,"text":4238},{"id":4457,"depth":512,"text":4458},"md",null,{},{"title":327,"description":457},"z_Oev5kqY85Z-bVbHDZfpkS0ScAXvGXtMpKMZCJHK94",[4541,4543],{"title":323,"path":324,"stem":325,"description":4542,"children":-1},"Add custom pages to your admin panel for features beyond standard CRUD operations.",{"title":331,"path":332,"stem":333,"description":4544,"children":-1},"Add custom actions to resources beyond standard CRUD operations.",1772977479848]