@endora-commerce/mod-megamenu 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/admin/api/megamenu-client.d.ts +28 -0
  4. package/dist/admin/api/megamenu-client.d.ts.map +1 -0
  5. package/dist/admin/api/megamenu-client.js +43 -0
  6. package/dist/admin/api/megamenu-client.js.map +1 -0
  7. package/dist/admin/components/BindingsPanel.d.ts +10 -0
  8. package/dist/admin/components/BindingsPanel.d.ts.map +1 -0
  9. package/dist/admin/components/BindingsPanel.js +120 -0
  10. package/dist/admin/components/BindingsPanel.js.map +1 -0
  11. package/dist/admin/components/MenuItemConfigPanel.d.ts +22 -0
  12. package/dist/admin/components/MenuItemConfigPanel.d.ts.map +1 -0
  13. package/dist/admin/components/MenuItemConfigPanel.js +77 -0
  14. package/dist/admin/components/MenuItemConfigPanel.js.map +1 -0
  15. package/dist/admin/components/MenuItemTree.d.ts +13 -0
  16. package/dist/admin/components/MenuItemTree.d.ts.map +1 -0
  17. package/dist/admin/components/MenuItemTree.js +46 -0
  18. package/dist/admin/components/MenuItemTree.js.map +1 -0
  19. package/dist/admin/index.d.ts +31 -0
  20. package/dist/admin/index.d.ts.map +1 -0
  21. package/dist/admin/index.js +47 -0
  22. package/dist/admin/index.js.map +1 -0
  23. package/dist/admin/pages/MegamenuEditor.d.ts +4 -0
  24. package/dist/admin/pages/MegamenuEditor.d.ts.map +1 -0
  25. package/dist/admin/pages/MegamenuEditor.js +151 -0
  26. package/dist/admin/pages/MegamenuEditor.js.map +1 -0
  27. package/dist/admin/pages/MegamenuListPage.d.ts +4 -0
  28. package/dist/admin/pages/MegamenuListPage.d.ts.map +1 -0
  29. package/dist/admin/pages/MegamenuListPage.js +51 -0
  30. package/dist/admin/pages/MegamenuListPage.js.map +1 -0
  31. package/dist/backend/entities/megamenu-binding.entity.d.ts +18 -0
  32. package/dist/backend/entities/megamenu-binding.entity.d.ts.map +1 -0
  33. package/dist/backend/entities/megamenu-binding.entity.js +61 -0
  34. package/dist/backend/entities/megamenu-binding.entity.js.map +1 -0
  35. package/dist/backend/entities/megamenu-item.entity.d.ts +27 -0
  36. package/dist/backend/entities/megamenu-item.entity.d.ts.map +1 -0
  37. package/dist/backend/entities/megamenu-item.entity.js +83 -0
  38. package/dist/backend/entities/megamenu-item.entity.js.map +1 -0
  39. package/dist/backend/entities/megamenu.entity.d.ts +17 -0
  40. package/dist/backend/entities/megamenu.entity.d.ts.map +1 -0
  41. package/dist/backend/entities/megamenu.entity.js +57 -0
  42. package/dist/backend/entities/megamenu.entity.js.map +1 -0
  43. package/dist/backend/index.d.ts +116 -0
  44. package/dist/backend/index.d.ts.map +1 -0
  45. package/dist/backend/index.js +147 -0
  46. package/dist/backend/index.js.map +1 -0
  47. package/dist/backend/routes.admin.d.ts +10 -0
  48. package/dist/backend/routes.admin.d.ts.map +1 -0
  49. package/dist/backend/routes.admin.js +50 -0
  50. package/dist/backend/routes.admin.js.map +1 -0
  51. package/dist/backend/routes.storefront.d.ts +6 -0
  52. package/dist/backend/routes.storefront.d.ts.map +1 -0
  53. package/dist/backend/routes.storefront.js +26 -0
  54. package/dist/backend/routes.storefront.js.map +1 -0
  55. package/dist/backend/services/asset-references.d.ts +4 -0
  56. package/dist/backend/services/asset-references.d.ts.map +1 -0
  57. package/dist/backend/services/asset-references.js +36 -0
  58. package/dist/backend/services/asset-references.js.map +1 -0
  59. package/dist/backend/services/cms-references.d.ts +6 -0
  60. package/dist/backend/services/cms-references.d.ts.map +1 -0
  61. package/dist/backend/services/cms-references.js +39 -0
  62. package/dist/backend/services/cms-references.js.map +1 -0
  63. package/dist/backend/services/cross-module-ports.d.ts +112 -0
  64. package/dist/backend/services/cross-module-ports.d.ts.map +1 -0
  65. package/dist/backend/services/cross-module-ports.js +88 -0
  66. package/dist/backend/services/cross-module-ports.js.map +1 -0
  67. package/dist/backend/services/megamenu-cache.d.ts +36 -0
  68. package/dist/backend/services/megamenu-cache.d.ts.map +1 -0
  69. package/dist/backend/services/megamenu-cache.js +70 -0
  70. package/dist/backend/services/megamenu-cache.js.map +1 -0
  71. package/dist/backend/services/megamenu-item-service.d.ts +39 -0
  72. package/dist/backend/services/megamenu-item-service.d.ts.map +1 -0
  73. package/dist/backend/services/megamenu-item-service.js +151 -0
  74. package/dist/backend/services/megamenu-item-service.js.map +1 -0
  75. package/dist/backend/services/megamenu-language-reference.d.ts +12 -0
  76. package/dist/backend/services/megamenu-language-reference.d.ts.map +1 -0
  77. package/dist/backend/services/megamenu-language-reference.js +24 -0
  78. package/dist/backend/services/megamenu-language-reference.js.map +1 -0
  79. package/dist/backend/services/megamenu-reference-registry.d.ts +24 -0
  80. package/dist/backend/services/megamenu-reference-registry.d.ts.map +1 -0
  81. package/dist/backend/services/megamenu-reference-registry.js +69 -0
  82. package/dist/backend/services/megamenu-reference-registry.js.map +1 -0
  83. package/dist/backend/services/megamenu-service.d.ts +70 -0
  84. package/dist/backend/services/megamenu-service.d.ts.map +1 -0
  85. package/dist/backend/services/megamenu-service.js +299 -0
  86. package/dist/backend/services/megamenu-service.js.map +1 -0
  87. package/dist/backend/services/storefront-resolver.d.ts +46 -0
  88. package/dist/backend/services/storefront-resolver.d.ts.map +1 -0
  89. package/dist/backend/services/storefront-resolver.js +162 -0
  90. package/dist/backend/services/storefront-resolver.js.map +1 -0
  91. package/dist/backend/services/target-validator.d.ts +24 -0
  92. package/dist/backend/services/target-validator.d.ts.map +1 -0
  93. package/dist/backend/services/target-validator.js +105 -0
  94. package/dist/backend/services/target-validator.js.map +1 -0
  95. package/dist/manifest.d.ts +167 -0
  96. package/dist/manifest.d.ts.map +1 -0
  97. package/dist/manifest.js +170 -0
  98. package/dist/manifest.js.map +1 -0
  99. package/dist/migrations/20260505T193836_megamenu_init.d.ts +23 -0
  100. package/dist/migrations/20260505T193836_megamenu_init.d.ts.map +1 -0
  101. package/dist/migrations/20260505T193836_megamenu_init.js +91 -0
  102. package/dist/migrations/20260505T193836_megamenu_init.js.map +1 -0
  103. package/dist/migrations/index.d.ts +27 -0
  104. package/dist/migrations/index.d.ts.map +1 -0
  105. package/dist/migrations/index.js +29 -0
  106. package/dist/migrations/index.js.map +1 -0
  107. package/docs/megamenu/index.md +159 -0
  108. package/i18n/en.json +96 -0
  109. package/i18n/pl.json +96 -0
  110. package/package.json +99 -0
  111. package/tailwind.css +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegamenuEditor.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/MegamenuEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAqDlF,wBAAgB,cAAc,IAAI,SAAS,CAwM1C;AACD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import { Link, useParams } from 'react-router-dom';
4
+ import { randomUUID } from '@endora-commerce/admin-kit/lib';
5
+ import { Alert, AlertDescription, Button, Card, CardContent, CardHeader, CardTitle, Input, Label, PageHeader, Textarea } from '@endora-commerce/admin-kit/ui';
6
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
7
+ import { BindingsPanel } from '../components/BindingsPanel.js';
8
+ import { defaultTargetFor, MenuItemConfigPanel, } from '../components/MenuItemConfigPanel.js';
9
+ import { MenuItemTree } from '../components/MenuItemTree.js';
10
+ import { megamenuClient } from '../api/megamenu-client.js';
11
+ function indexItems(items) {
12
+ return items
13
+ .filter((item) => typeof item.id === 'string')
14
+ .map((item) => ({ ...item, parentId: item.parentId ?? null }));
15
+ }
16
+ function move(items, itemId, direction) {
17
+ const target = items.find((i) => i.id === itemId);
18
+ if (!target)
19
+ return items;
20
+ const siblings = items
21
+ .filter((i) => i.parentId === target.parentId)
22
+ .sort((a, b) => a.position - b.position);
23
+ const index = siblings.findIndex((i) => i.id === itemId);
24
+ const swapWith = direction === 'up' ? index - 1 : index + 1;
25
+ if (swapWith < 0 || swapWith >= siblings.length)
26
+ return items;
27
+ const a = siblings[index];
28
+ const b = siblings[swapWith];
29
+ return items.map((i) => {
30
+ if (i.id === a.id)
31
+ return { ...i, position: b.position };
32
+ if (i.id === b.id)
33
+ return { ...i, position: a.position };
34
+ return i;
35
+ });
36
+ }
37
+ function deleteSubtree(items, itemId) {
38
+ const toDelete = new Set();
39
+ const queue = [itemId];
40
+ while (queue.length > 0) {
41
+ const next = queue.shift();
42
+ toDelete.add(next);
43
+ for (const child of items.filter((i) => i.parentId === next)) {
44
+ queue.push(child.id);
45
+ }
46
+ }
47
+ return items.filter((i) => !toDelete.has(i.id));
48
+ }
49
+ export function MegamenuEditor() {
50
+ const t = useTranslation('megamenu');
51
+ const { id } = useParams();
52
+ const [menu, setMenu] = useState(null);
53
+ const [name, setName] = useState('');
54
+ const [description, setDescription] = useState('');
55
+ const [items, setItems] = useState([]);
56
+ const [selectedItemId, setSelectedItemId] = useState(null);
57
+ const [error, setError] = useState(null);
58
+ const [warnings, setWarnings] = useState([]);
59
+ const [saving, setSaving] = useState(false);
60
+ const load = useCallback(async () => {
61
+ if (!id)
62
+ return;
63
+ setError(null);
64
+ try {
65
+ const loaded = await megamenuClient.getMenu(id);
66
+ setMenu(loaded);
67
+ setName(loaded.name);
68
+ setDescription(loaded.description ?? '');
69
+ setItems(indexItems(loaded.items));
70
+ }
71
+ catch (err) {
72
+ setError(err instanceof Error ? err.message : String(err));
73
+ }
74
+ }, [id]);
75
+ useEffect(() => {
76
+ void load();
77
+ }, [load]);
78
+ const languages = useMemo(() => {
79
+ const set = new Set();
80
+ for (const binding of menu?.bindings ?? [])
81
+ set.add(binding.language);
82
+ return Array.from(set).sort();
83
+ }, [menu?.bindings]);
84
+ const selectedItem = useMemo(() => items.find((i) => i.id === selectedItemId) ?? null, [items, selectedItemId]);
85
+ const addChild = (parentId) => {
86
+ const id = randomUUID();
87
+ const kind = 'external-link';
88
+ const next = {
89
+ id,
90
+ parentId,
91
+ position: items.filter((i) => i.parentId === parentId).length,
92
+ kind,
93
+ labels: { 'en-US': t('editor.newItemLabel') },
94
+ target: defaultTargetFor(kind),
95
+ };
96
+ setItems([...items, next]);
97
+ setSelectedItemId(id);
98
+ };
99
+ const updateItem = (next) => {
100
+ setItems((prev) => prev.map((i) => (i.id === next.id ? next : i)));
101
+ };
102
+ const saveMetadata = async () => {
103
+ if (!menu)
104
+ return;
105
+ setSaving(true);
106
+ setError(null);
107
+ try {
108
+ const updated = await megamenuClient.patchMenu(menu.id, {
109
+ name,
110
+ description: description || null,
111
+ version: menu.version,
112
+ });
113
+ setMenu(updated);
114
+ }
115
+ catch (err) {
116
+ setError(err instanceof Error ? err.message : String(err));
117
+ }
118
+ finally {
119
+ setSaving(false);
120
+ }
121
+ };
122
+ const saveTree = async () => {
123
+ if (!menu)
124
+ return;
125
+ setSaving(true);
126
+ setError(null);
127
+ setWarnings([]);
128
+ try {
129
+ const out = await megamenuClient.putItems(menu.id, {
130
+ items: items.map((i) => ({ ...i })),
131
+ version: menu.version,
132
+ });
133
+ setMenu(out.data);
134
+ setItems(indexItems(out.data.items));
135
+ if (out.meta?.warnings)
136
+ setWarnings(out.meta.warnings);
137
+ }
138
+ catch (err) {
139
+ setError(err instanceof Error ? err.message : String(err));
140
+ }
141
+ finally {
142
+ setSaving(false);
143
+ }
144
+ };
145
+ if (!menu) {
146
+ return _jsx("p", { className: "px-2 py-6 text-sm text-muted-foreground", children: t('common.loading') });
147
+ }
148
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx(PageHeader, { title: menu.name || t('editor.fallbackTitle'), description: t('editor.description'), actions: _jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { to: "/megamenu", children: t('common.back') }) }) }), error ? (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) })) : null, warnings.map((warning) => (_jsx(Alert, { variant: "default", children: _jsx(AlertDescription, { children: warning.message }) }, warning.code))), _jsxs("div", { className: "grid grid-cols-12 gap-4", children: [_jsxs("div", { className: "col-span-4 space-y-4", children: [_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { className: "text-base", children: t('sections.metadata') }) }), _jsxs(CardContent, { className: "space-y-3", children: [_jsxs("div", { className: "space-y-1", children: [_jsx(Label, { children: t('fields.name') }), _jsx(Input, { value: name, onChange: (event) => setName(event.target.value) })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { children: t('fields.description') }), _jsx(Textarea, { value: description, onChange: (event) => setDescription(event.target.value) })] }), _jsx("div", { className: "text-right", children: _jsx(Button, { onClick: () => void saveMetadata(), disabled: saving, children: t('common.saveMetadata') }) })] })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { className: "text-base", children: t('sections.bindings') }) }), _jsx(CardContent, { children: _jsx(BindingsPanel, { menuId: menu.id, bindings: menu.bindings, onChanged: () => void load() }) })] })] }), _jsx("div", { className: "col-span-4", children: _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { className: "text-base", children: t('sections.items') }) }), _jsxs(CardContent, { className: "space-y-3", children: [_jsx(MenuItemTree, { items: items, selectedItemId: selectedItemId, onSelect: setSelectedItemId, onMove: (itemId, direction) => setItems((prev) => move(prev, itemId, direction)), onDelete: (itemId) => setItems((prev) => deleteSubtree(prev, itemId)), onAddChild: addChild }), _jsx("div", { className: "text-right", children: _jsx(Button, { onClick: () => void saveTree(), disabled: saving, children: t('common.saveTree') }) })] })] }) }), _jsx("div", { className: "col-span-4", children: _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { className: "text-base", children: t('sections.item') }) }), _jsx(CardContent, { children: _jsx(MenuItemConfigPanel, { item: selectedItem, languages: languages, onChange: updateItem }) })] }) })] })] }));
149
+ }
150
+ export default MegamenuEditor;
151
+ //# sourceMappingURL=MegamenuEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegamenuEditor.js","sourceRoot":"","sources":["../../../src/admin/pages/MegamenuEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ReactNode } from 'react';
2
+ export declare function MegamenuListPage(): ReactNode;
3
+ export default MegamenuListPage;
4
+ //# sourceMappingURL=MegamenuListPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegamenuListPage.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/MegamenuListPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzE,wBAAgB,gBAAgB,IAAI,SAAS,CA+G5C;AACD,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { Link, useNavigate } from 'react-router-dom';
4
+ import { Alert, AlertDescription, Badge, Button, Card, CardContent, CardHeader, CardTitle, Input, PageHeader, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@endora-commerce/admin-kit/ui';
5
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
6
+ import { megamenuClient } from '../api/megamenu-client.js';
7
+ export function MegamenuListPage() {
8
+ const t = useTranslation('megamenu');
9
+ const navigate = useNavigate();
10
+ const [rows, setRows] = useState([]);
11
+ const [loading, setLoading] = useState(true);
12
+ const [error, setError] = useState(null);
13
+ const [creating, setCreating] = useState(false);
14
+ const [name, setName] = useState('');
15
+ const load = useCallback(async () => {
16
+ setLoading(true);
17
+ setError(null);
18
+ try {
19
+ const out = await megamenuClient.listMenus();
20
+ setRows(out.data);
21
+ }
22
+ catch (err) {
23
+ setError(err instanceof Error ? err.message : String(err));
24
+ }
25
+ finally {
26
+ setLoading(false);
27
+ }
28
+ }, []);
29
+ useEffect(() => {
30
+ void load();
31
+ }, [load]);
32
+ const create = async () => {
33
+ if (!name.trim())
34
+ return;
35
+ setCreating(true);
36
+ setError(null);
37
+ try {
38
+ const created = await megamenuClient.createMenu({ name: name.trim() });
39
+ navigate(`/megamenu/${created.id}`);
40
+ }
41
+ catch (err) {
42
+ setError(err instanceof Error ? err.message : String(err));
43
+ }
44
+ finally {
45
+ setCreating(false);
46
+ }
47
+ };
48
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx(PageHeader, { title: t('list.title'), description: t('list.description'), actions: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { value: name, onChange: (event) => setName(event.target.value), placeholder: t('list.newNamePlaceholder'), className: "w-72" }), _jsx(Button, { onClick: () => void create(), disabled: creating || !name.trim(), children: t('common.create') })] }) }), error ? (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) })) : null, _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { className: "text-base", children: t('list.cardTitle') }) }), _jsx(CardContent, { children: loading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('common.loading') })) : rows.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('list.empty') })) : (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t('columns.name') }), _jsx(TableHead, { children: t('columns.bindings') }), _jsx(TableHead, { children: t('columns.active') }), _jsx(TableHead, { className: "text-right", children: t('columns.version') })] }) }), _jsx(TableBody, { children: rows.map((row) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: _jsx(Link, { to: `/megamenu/${row.id}`, className: "font-medium text-primary hover:underline", children: row.name }) }), _jsx(TableCell, { className: "text-xs text-muted-foreground", children: row.bindings.length }), _jsx(TableCell, { children: row.activeIn > 0 ? (_jsx(Badge, { children: t('list.activeScopes', { count: row.activeIn }) })) : (_jsx(Badge, { variant: "outline", children: t('state.staged') })) }), _jsxs(TableCell, { className: "text-right text-xs text-muted-foreground", children: ["v", row.version] })] }, row.id))) })] })) })] })] }));
49
+ }
50
+ export default MegamenuListPage;
51
+ //# sourceMappingURL=MegamenuListPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegamenuListPage.js","sourceRoot":"","sources":["../../../src/admin/pages/MegamenuListPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * MegamenuBinding — composite-key entity (megamenuId, salesChannelId,
4
+ * language). `active` is the flag the partial unique index
5
+ * `idx_megamenu_bindings_active_uniq` enforces — exactly one active
6
+ * binding per (sales_channel_id, language) pair (FR-008 / R3).
7
+ */
8
+ export declare class MegamenuBinding {
9
+ [OptionalProps]?: 'createdAt' | 'updatedAt' | 'active' | 'version';
10
+ megamenuId: string;
11
+ salesChannelId: string;
12
+ language: string;
13
+ active: boolean;
14
+ version: number;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
18
+ //# sourceMappingURL=megamenu-binding.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megamenu-binding.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/megamenu-binding.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAG9E;;;;;GAKG;AACH,qBAEa,eAAe;IAC1B,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAGnE,UAAU,EAAG,MAAM,CAAC;IAGpB,cAAc,EAAG,MAAM,CAAC;IAGxB,QAAQ,EAAG,MAAM,CAAC;IAGlB,MAAM,EAAE,OAAO,CAAS;IAGxB,OAAO,EAAE,MAAM,CAAK;IAGpB,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,61 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ /**
13
+ * MegamenuBinding — composite-key entity (megamenuId, salesChannelId,
14
+ * language). `active` is the flag the partial unique index
15
+ * `idx_megamenu_bindings_active_uniq` enforces — exactly one active
16
+ * binding per (sales_channel_id, language) pair (FR-008 / R3).
17
+ */
18
+ let MegamenuBinding = class MegamenuBinding {
19
+ [OptionalProps];
20
+ megamenuId;
21
+ salesChannelId;
22
+ language;
23
+ active = false;
24
+ version = 1;
25
+ createdAt = new Date();
26
+ updatedAt = new Date();
27
+ };
28
+ __decorate([
29
+ PrimaryKey({ type: 'uuid', fieldName: 'megamenu_id' }),
30
+ __metadata("design:type", String)
31
+ ], MegamenuBinding.prototype, "megamenuId", void 0);
32
+ __decorate([
33
+ PrimaryKey({ type: 'uuid', fieldName: 'sales_channel_id' }),
34
+ __metadata("design:type", String)
35
+ ], MegamenuBinding.prototype, "salesChannelId", void 0);
36
+ __decorate([
37
+ PrimaryKey({ type: 'string', length: 8 }),
38
+ __metadata("design:type", String)
39
+ ], MegamenuBinding.prototype, "language", void 0);
40
+ __decorate([
41
+ Property({ type: 'boolean' }),
42
+ __metadata("design:type", Boolean)
43
+ ], MegamenuBinding.prototype, "active", void 0);
44
+ __decorate([
45
+ Property({ type: 'integer' }),
46
+ __metadata("design:type", Number)
47
+ ], MegamenuBinding.prototype, "version", void 0);
48
+ __decorate([
49
+ Property({ type: 'datetime', onCreate: () => new Date() }),
50
+ __metadata("design:type", Date)
51
+ ], MegamenuBinding.prototype, "createdAt", void 0);
52
+ __decorate([
53
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
54
+ __metadata("design:type", Date)
55
+ ], MegamenuBinding.prototype, "updatedAt", void 0);
56
+ MegamenuBinding = __decorate([
57
+ GlobalEntity(),
58
+ Entity({ tableName: 'megamenu_bindings' })
59
+ ], MegamenuBinding);
60
+ export { MegamenuBinding };
61
+ //# sourceMappingURL=megamenu-binding.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megamenu-binding.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/megamenu-binding.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE;;;;;GAKG;AAGI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,CAAC,aAAa,CAAC,CAAoD;IAGnE,UAAU,CAAU;IAGpB,cAAc,CAAU;IAGxB,QAAQ,CAAU;IAGlB,MAAM,GAAY,KAAK,CAAC;IAGxB,OAAO,GAAW,CAAC,CAAC;IAGpB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAnBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;;mDACnC;AAGpB;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;;uDACpC;AAGxB;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;iDACxB;AAGlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;+CACN;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDACV;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;kDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;kDAAc;AAtBlB,eAAe;IAF3B,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;GAC9B,eAAe,CAuB3B"}
@@ -0,0 +1,27 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ export type MegamenuItemKind = 'category-link' | 'cms-page-link' | 'external-link' | 'button' | 'asset' | 'cms-block-embed';
3
+ /**
4
+ * MegamenuItem — adjacency-list tree node. The `target` property is
5
+ * typed `Record<string, unknown>` at the entity layer; the discriminated
6
+ * union enforced at the Zod boundary lives in
7
+ * `packages/contracts/src/megamenu.ts`.
8
+ *
9
+ * `parent_id` is a self-FK; `position` is the 0..N-1 sort key per
10
+ * `(megamenu_id, parent_id)`. A GIN index on `target` (jsonb_path_ops)
11
+ * powers the cross-module reference scans documented in
12
+ * `contracts/megamenu-reference-scan.contract.md`.
13
+ */
14
+ export declare class MegamenuItem {
15
+ [OptionalProps]?: 'id' | 'createdAt' | 'updatedAt' | 'parentId' | 'position' | 'labels' | 'descriptions' | 'target';
16
+ id: string;
17
+ megamenuId: string;
18
+ parentId?: string | null;
19
+ position: number;
20
+ kind: MegamenuItemKind;
21
+ labels: Record<string, string>;
22
+ descriptions?: Record<string, string> | null;
23
+ target: Record<string, unknown>;
24
+ createdAt: Date;
25
+ updatedAt: Date;
26
+ }
27
+ //# sourceMappingURL=megamenu-item.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megamenu-item.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/megamenu-item.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAIrF,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,eAAe,GACf,eAAe,GACf,QAAQ,GACR,OAAO,GACP,iBAAiB,CAAC;AAEtB;;;;;;;;;;GAUG;AACH,qBAGa,YAAY;IACvB,CAAC,aAAa,CAAC,CAAC,EACZ,IAAI,GACJ,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,cAAc,GACd,QAAQ,CAAC;IAGb,EAAE,EAAE,MAAM,CAAgB;IAG1B,UAAU,EAAG,MAAM,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGzB,QAAQ,EAAE,MAAM,CAAK;IAGrB,IAAI,EAAG,gBAAgB,CAAC;IAGxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAGpC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAG7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAGrC,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,83 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Index, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * MegamenuItem — adjacency-list tree node. The `target` property is
15
+ * typed `Record<string, unknown>` at the entity layer; the discriminated
16
+ * union enforced at the Zod boundary lives in
17
+ * `packages/contracts/src/megamenu.ts`.
18
+ *
19
+ * `parent_id` is a self-FK; `position` is the 0..N-1 sort key per
20
+ * `(megamenu_id, parent_id)`. A GIN index on `target` (jsonb_path_ops)
21
+ * powers the cross-module reference scans documented in
22
+ * `contracts/megamenu-reference-scan.contract.md`.
23
+ */
24
+ let MegamenuItem = class MegamenuItem {
25
+ [OptionalProps];
26
+ id = randomUUID();
27
+ megamenuId;
28
+ parentId;
29
+ position = 0;
30
+ kind;
31
+ labels = {};
32
+ descriptions;
33
+ target = {};
34
+ createdAt = new Date();
35
+ updatedAt = new Date();
36
+ };
37
+ __decorate([
38
+ PrimaryKey({ type: 'uuid' }),
39
+ __metadata("design:type", String)
40
+ ], MegamenuItem.prototype, "id", void 0);
41
+ __decorate([
42
+ Property({ type: 'uuid', fieldName: 'megamenu_id' }),
43
+ __metadata("design:type", String)
44
+ ], MegamenuItem.prototype, "megamenuId", void 0);
45
+ __decorate([
46
+ Property({ type: 'uuid', fieldName: 'parent_id', nullable: true }),
47
+ __metadata("design:type", Object)
48
+ ], MegamenuItem.prototype, "parentId", void 0);
49
+ __decorate([
50
+ Property({ type: 'integer' }),
51
+ __metadata("design:type", Number)
52
+ ], MegamenuItem.prototype, "position", void 0);
53
+ __decorate([
54
+ Property({ type: 'string', length: 32 }),
55
+ __metadata("design:type", String)
56
+ ], MegamenuItem.prototype, "kind", void 0);
57
+ __decorate([
58
+ Property({ type: 'json' }),
59
+ __metadata("design:type", Object)
60
+ ], MegamenuItem.prototype, "labels", void 0);
61
+ __decorate([
62
+ Property({ type: 'json', nullable: true }),
63
+ __metadata("design:type", Object)
64
+ ], MegamenuItem.prototype, "descriptions", void 0);
65
+ __decorate([
66
+ Property({ type: 'json' }),
67
+ __metadata("design:type", Object)
68
+ ], MegamenuItem.prototype, "target", void 0);
69
+ __decorate([
70
+ Property({ type: 'datetime', onCreate: () => new Date() }),
71
+ __metadata("design:type", Date)
72
+ ], MegamenuItem.prototype, "createdAt", void 0);
73
+ __decorate([
74
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
75
+ __metadata("design:type", Date)
76
+ ], MegamenuItem.prototype, "updatedAt", void 0);
77
+ MegamenuItem = __decorate([
78
+ GlobalEntity(),
79
+ Entity({ tableName: 'megamenu_items' }),
80
+ Index({ name: 'idx_megamenu_items_tree', properties: ['megamenuId', 'parentId', 'position'] })
81
+ ], MegamenuItem);
82
+ export { MegamenuItem };
83
+ //# sourceMappingURL=megamenu-item.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megamenu-item.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/megamenu-item.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAUpC;;;;;;;;;;GAUG;AAII,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,CAAC,aAAa,CAAC,CAQF;IAGb,EAAE,GAAW,UAAU,EAAE,CAAC;IAG1B,UAAU,CAAU;IAGpB,QAAQ,CAAiB;IAGzB,QAAQ,GAAW,CAAC,CAAC;IAGrB,IAAI,CAAoB;IAGxB,MAAM,GAA2B,EAAE,CAAC;IAGpC,YAAY,CAAiC;IAG7C,MAAM,GAA4B,EAAE,CAAC;IAGrC,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AA5BC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wCACH;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;;gDACjC;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC1C;AAGzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CACT;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;0CACjB;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACS;AAGpC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACE;AAG7C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACU;AAGrC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAvClB,YAAY;IAHxB,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;GAClF,YAAY,CAwCxB"}
@@ -0,0 +1,17 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * Megamenu — a named navigation configuration. Per `data-model.md`, the
4
+ * configuration row carries no `active` column; activation lives on the
5
+ * binding rows so a megamenu can be staged in many scopes and made
6
+ * active in some without an inconsistent flag pair.
7
+ */
8
+ export declare class Megamenu {
9
+ [OptionalProps]?: 'id' | 'createdAt' | 'updatedAt' | 'description' | 'version';
10
+ id: string;
11
+ name: string;
12
+ description?: string | null;
13
+ version: number;
14
+ createdAt: Date;
15
+ updatedAt: Date;
16
+ }
17
+ //# sourceMappingURL=megamenu.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megamenu.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/megamenu.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAI9E;;;;;GAKG;AACH,qBAEa,QAAQ;IACnB,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAG/E,EAAE,EAAE,MAAM,CAAgB;IAG1B,IAAI,EAAG,MAAM,CAAC;IAGd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,OAAO,EAAE,MAAM,CAAK;IAGpB,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,57 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * Megamenu — a named navigation configuration. Per `data-model.md`, the
15
+ * configuration row carries no `active` column; activation lives on the
16
+ * binding rows so a megamenu can be staged in many scopes and made
17
+ * active in some without an inconsistent flag pair.
18
+ */
19
+ let Megamenu = class Megamenu {
20
+ [OptionalProps];
21
+ id = randomUUID();
22
+ name;
23
+ description;
24
+ version = 1;
25
+ createdAt = new Date();
26
+ updatedAt = new Date();
27
+ };
28
+ __decorate([
29
+ PrimaryKey({ type: 'uuid' }),
30
+ __metadata("design:type", String)
31
+ ], Megamenu.prototype, "id", void 0);
32
+ __decorate([
33
+ Property({ type: 'string', length: 200 }),
34
+ __metadata("design:type", String)
35
+ ], Megamenu.prototype, "name", void 0);
36
+ __decorate([
37
+ Property({ type: 'text', nullable: true }),
38
+ __metadata("design:type", Object)
39
+ ], Megamenu.prototype, "description", void 0);
40
+ __decorate([
41
+ Property({ type: 'integer' }),
42
+ __metadata("design:type", Number)
43
+ ], Megamenu.prototype, "version", void 0);
44
+ __decorate([
45
+ Property({ type: 'datetime', onCreate: () => new Date() }),
46
+ __metadata("design:type", Date)
47
+ ], Megamenu.prototype, "createdAt", void 0);
48
+ __decorate([
49
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
50
+ __metadata("design:type", Date)
51
+ ], Megamenu.prototype, "updatedAt", void 0);
52
+ Megamenu = __decorate([
53
+ GlobalEntity(),
54
+ Entity({ tableName: 'megamenus' })
55
+ ], Megamenu);
56
+ export { Megamenu };
57
+ //# sourceMappingURL=megamenu.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megamenu.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/megamenu.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;GAKG;AAGI,IAAM,QAAQ,GAAd,MAAM,QAAQ;IACnB,CAAC,aAAa,CAAC,CAAgE;IAG/E,EAAE,GAAW,UAAU,EAAE,CAAC;IAG1B,IAAI,CAAU;IAGd,WAAW,CAAiB;IAG5B,OAAO,GAAW,CAAC,CAAC;IAGpB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAhBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oCACH;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;sCAC5B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACf;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;yCACV;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;2CAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;2CAAc;AAnBlB,QAAQ;IAFpB,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;GACtB,QAAQ,CAoBpB"}