@strapi/plugin-documentation 4.20.4 → 5.0.0-alpha.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 (61) hide show
  1. package/admin/src/hooks/useDocumentation.js +10 -7
  2. package/admin/src/index.js +4 -18
  3. package/admin/src/pages/PluginPage/index.jsx +10 -24
  4. package/admin/src/pages/PluginPage/tests/index.test.jsx +13 -14
  5. package/admin/src/pages/SettingsPage/index.jsx +138 -142
  6. package/admin/src/pages/SettingsPage/tests/index.test.jsx +6 -13
  7. package/dist/_chunks/EditViewPage-xYzUSAwS-NigDiZi1.js +84396 -0
  8. package/dist/_chunks/EditViewPage-xYzUSAwS-NigDiZi1.js.map +1 -0
  9. package/dist/_chunks/EditViewPage-xYzUSAwS-OCSjk-Vt.mjs +84368 -0
  10. package/dist/_chunks/EditViewPage-xYzUSAwS-OCSjk-Vt.mjs.map +1 -0
  11. package/dist/_chunks/ListViewPage-xOVa04T_-JQSQJ0aH.js +1618 -0
  12. package/dist/_chunks/ListViewPage-xOVa04T_-JQSQJ0aH.js.map +1 -0
  13. package/dist/_chunks/ListViewPage-xOVa04T_-MAsyJIvQ.mjs +1595 -0
  14. package/dist/_chunks/ListViewPage-xOVa04T_-MAsyJIvQ.mjs.map +1 -0
  15. package/dist/_chunks/ReviewWorkflowsColumn-FDxVKdto-9EdyIGCi.js +33 -0
  16. package/dist/_chunks/ReviewWorkflowsColumn-FDxVKdto-9EdyIGCi.js.map +1 -0
  17. package/dist/_chunks/ReviewWorkflowsColumn-FDxVKdto-E7QaAVIp.mjs +33 -0
  18. package/dist/_chunks/ReviewWorkflowsColumn-FDxVKdto-E7QaAVIp.mjs.map +1 -0
  19. package/dist/_chunks/constants-WjN6I3sL-1yTyGpl5.mjs +190 -0
  20. package/dist/_chunks/constants-WjN6I3sL-1yTyGpl5.mjs.map +1 -0
  21. package/dist/_chunks/constants-WjN6I3sL-5vTd1Y1g.js +209 -0
  22. package/dist/_chunks/constants-WjN6I3sL-5vTd1Y1g.js.map +1 -0
  23. package/dist/_chunks/index--rtz8bZh.mjs +17798 -0
  24. package/dist/_chunks/index--rtz8bZh.mjs.map +1 -0
  25. package/dist/_chunks/index-FiShd2zI.js +17823 -0
  26. package/dist/_chunks/index-FiShd2zI.js.map +1 -0
  27. package/dist/_chunks/{index-RtHTnuE1.mjs → index-Qt8XLNQZ.mjs} +11 -8
  28. package/dist/_chunks/index-Qt8XLNQZ.mjs.map +1 -0
  29. package/dist/_chunks/{index-xwpmk0Y9.mjs → index-h-OcS50W.mjs} +19 -25
  30. package/dist/_chunks/index-h-OcS50W.mjs.map +1 -0
  31. package/dist/_chunks/{index-PR_fql8f.js → index-m8HLcGmV.js} +15 -12
  32. package/dist/_chunks/index-m8HLcGmV.js.map +1 -0
  33. package/dist/_chunks/{index-ku5QIWHo.js → index-vWzO1snG.js} +21 -27
  34. package/dist/_chunks/index-vWzO1snG.js.map +1 -0
  35. package/dist/_chunks/{useDocumentation-glNqpmZO.mjs → useDocumentation-EsufCjtn.mjs} +12 -9
  36. package/dist/_chunks/useDocumentation-EsufCjtn.mjs.map +1 -0
  37. package/dist/_chunks/{useDocumentation-jpgzaGlD.js → useDocumentation-hOQyphRS.js} +14 -11
  38. package/dist/_chunks/useDocumentation-hOQyphRS.js.map +1 -0
  39. package/dist/_chunks/useSyncRbac-Kt8Li0Yf-f6LRUqJf.js +57 -0
  40. package/dist/_chunks/useSyncRbac-Kt8Li0Yf-f6LRUqJf.js.map +1 -0
  41. package/dist/_chunks/useSyncRbac-Kt8Li0Yf-mDaHJCOQ.mjs +39 -0
  42. package/dist/_chunks/useSyncRbac-Kt8Li0Yf-mDaHJCOQ.mjs.map +1 -0
  43. package/dist/admin/index.js +1 -1
  44. package/dist/admin/index.mjs +1 -1
  45. package/dist/style.css +84 -0
  46. package/package.json +15 -15
  47. package/server/controllers/documentation.js +2 -2
  48. package/server/middlewares/restrict-access.js +1 -1
  49. package/server/services/__mocks__/mock-content-types.js +0 -5
  50. package/server/services/documentation.js +2 -3
  51. package/server/services/override.js +1 -1
  52. package/dist/_chunks/index-990q37Xx.mjs +0 -167
  53. package/dist/_chunks/index-990q37Xx.mjs.map +0 -1
  54. package/dist/_chunks/index-PR_fql8f.js.map +0 -1
  55. package/dist/_chunks/index-RtHTnuE1.mjs.map +0 -1
  56. package/dist/_chunks/index-U4uH9lyg.js +0 -169
  57. package/dist/_chunks/index-U4uH9lyg.js.map +0 -1
  58. package/dist/_chunks/index-ku5QIWHo.js.map +0 -1
  59. package/dist/_chunks/index-xwpmk0Y9.mjs.map +0 -1
  60. package/dist/_chunks/useDocumentation-glNqpmZO.mjs.map +0 -1
  61. package/dist/_chunks/useDocumentation-jpgzaGlD.js.map +0 -1
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const index = require("./index-FiShd2zI.js");
4
+ const jsxRuntime = require("react/jsx-runtime");
5
+ const React = require("react");
6
+ const designSystem = require("@strapi/design-system");
7
+ const reactIntl = require("react-intl");
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule)
10
+ return e;
11
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
12
+ if (e) {
13
+ for (const k in e) {
14
+ if (k !== "default") {
15
+ const d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: () => e[k]
19
+ });
20
+ }
21
+ }
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
27
+ function useReviewWorkflows(params = {}) {
28
+ const { id = "", ...queryParams } = params;
29
+ const { data, isLoading } = index.useGetWorkflowsQuery({
30
+ id,
31
+ populate: "stages",
32
+ ...queryParams
33
+ });
34
+ const [createWorkflow] = index.useCreateWorkflowMutation();
35
+ const [updateWorkflow] = index.useUpdateWorkflowMutation();
36
+ const [deleteWorkflow] = index.useDeleteWorkflowMutation();
37
+ const { workflows, meta } = data ?? {};
38
+ return {
39
+ // meta contains e.g. the total of all workflows. we can not use
40
+ // the pagination object here, because the list is not paginated.
41
+ meta,
42
+ workflows,
43
+ isLoading,
44
+ createWorkflow,
45
+ updateWorkflow,
46
+ deleteWorkflow
47
+ };
48
+ }
49
+ const AssigneeFilter = ({ name }) => {
50
+ const [page, setPage] = React__namespace.useState(1);
51
+ const { formatMessage } = reactIntl.useIntl();
52
+ const { data, isLoading } = index.useAdminUsers({
53
+ page
54
+ });
55
+ const users = data?.users || [];
56
+ const field = index.useField(name);
57
+ const handleChange = (value) => {
58
+ setPage(1);
59
+ field.onChange(name, value);
60
+ };
61
+ return /* @__PURE__ */ jsxRuntime.jsx(
62
+ designSystem.Combobox,
63
+ {
64
+ value: field.value,
65
+ "aria-label": formatMessage({
66
+ id: "content-manager.components.Filters.usersSelect.label",
67
+ defaultMessage: "Search and select an user to filter"
68
+ }),
69
+ onChange: handleChange,
70
+ loading: isLoading,
71
+ onLoadMore: () => setPage((prev) => prev + 1),
72
+ children: users.map((user) => {
73
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ComboboxOption, { value: user.id.toString(), children: index.getDisplayName(user, formatMessage) }, user.id);
74
+ })
75
+ }
76
+ );
77
+ };
78
+ const StageFilter = (props) => {
79
+ const { model } = index.useDoc();
80
+ const { formatMessage } = reactIntl.useIntl();
81
+ const { workflows, isLoading } = useReviewWorkflows({ filters: { contentTypes: model } });
82
+ const field = index.useField(props.name);
83
+ const [workflow] = workflows ?? [];
84
+ return /* @__PURE__ */ jsxRuntime.jsx(
85
+ designSystem.SingleSelect,
86
+ {
87
+ "aria-label": formatMessage({
88
+ id: "content-manager.components.Filters.reviewWorkflows.label",
89
+ defaultMessage: "Search and select an workflow stage to filter"
90
+ }),
91
+ value: field.value,
92
+ onChange: (value) => {
93
+ field.onChange(props.name, value);
94
+ },
95
+ loading: isLoading,
96
+ customizeContent: () => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { as: "span", justifyContent: "space-between", alignItems: "center", width: "100%", children: [
97
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", ellipsis: true, children: field.value }),
98
+ isLoading ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Loader, { small: true, style: { display: "flex" } }) : null
99
+ ] }),
100
+ children: (workflow?.stages ?? []).map(({ id, color, name }) => {
101
+ const { themeColorName } = index.getStageColorByHex(color) ?? {};
102
+ return /* @__PURE__ */ jsxRuntime.jsx(
103
+ designSystem.SingleSelectOption,
104
+ {
105
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(
106
+ designSystem.Flex,
107
+ {
108
+ height: 2,
109
+ background: color,
110
+ borderColor: themeColorName === "neutral0" ? "neutral150" : void 0,
111
+ hasRadius: true,
112
+ shrink: 0,
113
+ width: 2
114
+ }
115
+ ),
116
+ value: name,
117
+ children: name
118
+ },
119
+ id
120
+ );
121
+ })
122
+ }
123
+ );
124
+ };
125
+ const REVIEW_WORKFLOW_COLUMNS_EE = [
126
+ {
127
+ name: index.STAGE_ATTRIBUTE_NAME,
128
+ attribute: {
129
+ type: "relation",
130
+ relation: "oneToMany",
131
+ target: "admin::review-workflow-stage"
132
+ },
133
+ label: {
134
+ id: index.getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),
135
+ defaultMessage: "Review stage"
136
+ },
137
+ searchable: false,
138
+ sortable: true,
139
+ mainField: {
140
+ name: "name",
141
+ type: "string"
142
+ }
143
+ },
144
+ {
145
+ name: index.ASSIGNEE_ATTRIBUTE_NAME,
146
+ attribute: {
147
+ type: "relation",
148
+ target: "admin::user",
149
+ relation: "oneToMany"
150
+ },
151
+ label: {
152
+ id: index.getTranslation(`containers.list.table-headers.reviewWorkflows.assignee`),
153
+ defaultMessage: "Assignee"
154
+ },
155
+ searchable: false,
156
+ sortable: true,
157
+ mainField: {
158
+ name: "firstname",
159
+ type: "string"
160
+ }
161
+ }
162
+ ];
163
+ const REVIEW_WORKFLOW_FILTERS = [
164
+ {
165
+ mainField: {
166
+ name: "name",
167
+ type: "string"
168
+ },
169
+ input: StageFilter,
170
+ label: {
171
+ id: index.getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),
172
+ defaultMessage: "Review stage"
173
+ },
174
+ name: "strapi_stage",
175
+ type: "relation"
176
+ },
177
+ {
178
+ type: "relation",
179
+ mainField: {
180
+ name: "id",
181
+ type: "integer"
182
+ },
183
+ input: AssigneeFilter,
184
+ operators: [
185
+ {
186
+ label: {
187
+ id: "components.FilterOptions.FILTER_TYPES.$eq",
188
+ defaultMessage: "is"
189
+ },
190
+ value: "$eq"
191
+ },
192
+ {
193
+ label: {
194
+ id: "components.FilterOptions.FILTER_TYPES.$ne",
195
+ defaultMessage: "is not"
196
+ },
197
+ value: "$ne"
198
+ }
199
+ ],
200
+ label: {
201
+ id: index.getTranslation(`containers.list.table-headers.reviewWorkflows.assignee.label`),
202
+ defaultMessage: "Assignee"
203
+ },
204
+ name: "strapi_assignee"
205
+ }
206
+ ];
207
+ exports.REVIEW_WORKFLOW_COLUMNS_EE = REVIEW_WORKFLOW_COLUMNS_EE;
208
+ exports.REVIEW_WORKFLOW_FILTERS = REVIEW_WORKFLOW_FILTERS;
209
+ //# sourceMappingURL=constants-WjN6I3sL-5vTd1Y1g.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-WjN6I3sL-5vTd1Y1g.js","sources":["../../../../core/admin/dist/_chunks/useReviewWorkflows-PAvhwNm3.mjs","../../../../core/admin/dist/_chunks/constants-WjN6I3sL.mjs"],"sourcesContent":["import { Q as useGetWorkflowsQuery, V as useCreateWorkflowMutation, W as useUpdateWorkflowMutation, X as useDeleteWorkflowMutation } from \"./index-5ZvCaCyY.mjs\";\nfunction useReviewWorkflows(params = {}) {\n const { id = \"\", ...queryParams } = params;\n const { data, isLoading } = useGetWorkflowsQuery({\n id,\n populate: \"stages\",\n ...queryParams\n });\n const [createWorkflow] = useCreateWorkflowMutation();\n const [updateWorkflow] = useUpdateWorkflowMutation();\n const [deleteWorkflow] = useDeleteWorkflowMutation();\n const { workflows, meta } = data ?? {};\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n workflows,\n isLoading,\n createWorkflow,\n updateWorkflow,\n deleteWorkflow\n };\n}\nexport {\n useReviewWorkflows as u\n};\n//# sourceMappingURL=useReviewWorkflows-PAvhwNm3.mjs.map\n","import { B as useAdminUsers, C as useField, g as getDisplayName, ak as useDoc, ah as getStageColorByHex, bk as STAGE_ATTRIBUTE_NAME, ap as getTranslation, bl as ASSIGNEE_ATTRIBUTE_NAME } from \"./index-5ZvCaCyY.mjs\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { Combobox, ComboboxOption, SingleSelect, Flex, Typography, Loader, SingleSelectOption } from \"@strapi/design-system\";\nimport { useIntl } from \"react-intl\";\nimport { u as useReviewWorkflows } from \"./useReviewWorkflows-PAvhwNm3.mjs\";\nconst AssigneeFilter = ({ name }) => {\n const [page, setPage] = React.useState(1);\n const { formatMessage } = useIntl();\n const { data, isLoading } = useAdminUsers({\n page\n });\n const users = data?.users || [];\n const field = useField(name);\n const handleChange = (value) => {\n setPage(1);\n field.onChange(name, value);\n };\n return /* @__PURE__ */ jsx(\n Combobox,\n {\n value: field.value,\n \"aria-label\": formatMessage({\n id: \"content-manager.components.Filters.usersSelect.label\",\n defaultMessage: \"Search and select an user to filter\"\n }),\n onChange: handleChange,\n loading: isLoading,\n onLoadMore: () => setPage((prev) => prev + 1),\n children: users.map((user) => {\n return /* @__PURE__ */ jsx(ComboboxOption, { value: user.id.toString(), children: getDisplayName(user, formatMessage) }, user.id);\n })\n }\n );\n};\nconst StageFilter = (props) => {\n const { model } = useDoc();\n const { formatMessage } = useIntl();\n const { workflows, isLoading } = useReviewWorkflows({ filters: { contentTypes: model } });\n const field = useField(props.name);\n const [workflow] = workflows ?? [];\n return /* @__PURE__ */ jsx(\n SingleSelect,\n {\n \"aria-label\": formatMessage({\n id: \"content-manager.components.Filters.reviewWorkflows.label\",\n defaultMessage: \"Search and select an workflow stage to filter\"\n }),\n value: field.value,\n onChange: (value) => {\n field.onChange(props.name, value);\n },\n loading: isLoading,\n customizeContent: () => /* @__PURE__ */ jsxs(Flex, { as: \"span\", justifyContent: \"space-between\", alignItems: \"center\", width: \"100%\", children: [\n /* @__PURE__ */ jsx(Typography, { textColor: \"neutral800\", ellipsis: true, children: field.value }),\n isLoading ? /* @__PURE__ */ jsx(Loader, { small: true, style: { display: \"flex\" } }) : null\n ] }),\n children: (workflow?.stages ?? []).map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color) ?? {};\n return /* @__PURE__ */ jsx(\n SingleSelectOption,\n {\n startIcon: /* @__PURE__ */ jsx(\n Flex,\n {\n height: 2,\n background: color,\n borderColor: themeColorName === \"neutral0\" ? \"neutral150\" : void 0,\n hasRadius: true,\n shrink: 0,\n width: 2\n }\n ),\n value: name,\n children: name\n },\n id\n );\n })\n }\n );\n};\nconst REVIEW_WORKFLOW_COLUMNS_EE = [\n {\n name: STAGE_ATTRIBUTE_NAME,\n attribute: {\n type: \"relation\",\n relation: \"oneToMany\",\n target: \"admin::review-workflow-stage\"\n },\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),\n defaultMessage: \"Review stage\"\n },\n searchable: false,\n sortable: true,\n mainField: {\n name: \"name\",\n type: \"string\"\n }\n },\n {\n name: ASSIGNEE_ATTRIBUTE_NAME,\n attribute: {\n type: \"relation\",\n target: \"admin::user\",\n relation: \"oneToMany\"\n },\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.assignee`),\n defaultMessage: \"Assignee\"\n },\n searchable: false,\n sortable: true,\n mainField: {\n name: \"firstname\",\n type: \"string\"\n }\n }\n];\nconst REVIEW_WORKFLOW_FILTERS = [\n {\n mainField: {\n name: \"name\",\n type: \"string\"\n },\n input: StageFilter,\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),\n defaultMessage: \"Review stage\"\n },\n name: \"strapi_stage\",\n type: \"relation\"\n },\n {\n type: \"relation\",\n mainField: {\n name: \"id\",\n type: \"integer\"\n },\n input: AssigneeFilter,\n operators: [\n {\n label: {\n id: \"components.FilterOptions.FILTER_TYPES.$eq\",\n defaultMessage: \"is\"\n },\n value: \"$eq\"\n },\n {\n label: {\n id: \"components.FilterOptions.FILTER_TYPES.$ne\",\n defaultMessage: \"is not\"\n },\n value: \"$ne\"\n }\n ],\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.assignee.label`),\n defaultMessage: \"Assignee\"\n },\n name: \"strapi_assignee\"\n }\n];\nexport {\n REVIEW_WORKFLOW_COLUMNS_EE,\n REVIEW_WORKFLOW_FILTERS\n};\n//# sourceMappingURL=constants-WjN6I3sL.mjs.map\n"],"names":["useGetWorkflowsQuery","useCreateWorkflowMutation","useUpdateWorkflowMutation","useDeleteWorkflowMutation","React","useIntl","useAdminUsers","useField","jsx","Combobox","ComboboxOption","getDisplayName","useDoc","SingleSelect","jsxs","Flex","Typography","Loader","getStageColorByHex","SingleSelectOption","STAGE_ATTRIBUTE_NAME","getTranslation","ASSIGNEE_ATTRIBUTE_NAME"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAAmB,SAAS,IAAI;AACvC,QAAM,EAAE,KAAK,IAAI,GAAG,YAAW,IAAK;AACpC,QAAM,EAAE,MAAM,UAAW,IAAGA,2BAAqB;AAAA,IAC/C;AAAA,IACA,UAAU;AAAA,IACV,GAAG;AAAA,EACP,CAAG;AACD,QAAM,CAAC,cAAc,IAAIC,MAAAA;AACzB,QAAM,CAAC,cAAc,IAAIC,MAAAA;AACzB,QAAM,CAAC,cAAc,IAAIC,MAAAA;AACzB,QAAM,EAAE,WAAW,SAAS,QAAQ,CAAA;AACpC,SAAO;AAAA;AAAA;AAAA,IAGL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AChBA,MAAM,iBAAiB,CAAC,EAAE,WAAW;AACnC,QAAM,CAAC,MAAM,OAAO,IAAIC,iBAAM,SAAS,CAAC;AACxC,QAAM,EAAE,kBAAkBC,UAAAA;AAC1B,QAAM,EAAE,MAAM,UAAW,IAAGC,oBAAc;AAAA,IACxC;AAAA,EACJ,CAAG;AACD,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,QAAQC,eAAS,IAAI;AAC3B,QAAM,eAAe,CAAC,UAAU;AAC9B,YAAQ,CAAC;AACT,UAAM,SAAS,MAAM,KAAK;AAAA,EAC9B;AACE,SAAuBC,2BAAG;AAAA,IACxBC,aAAQ;AAAA,IACR;AAAA,MACE,OAAO,MAAM;AAAA,MACb,cAAc,cAAc;AAAA,QAC1B,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACxB,CAAO;AAAA,MACD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY,MAAM,QAAQ,CAAC,SAAS,OAAO,CAAC;AAAA,MAC5C,UAAU,MAAM,IAAI,CAAC,SAAS;AAC5B,eAAuBD,2BAAAA,IAAIE,aAAAA,gBAAgB,EAAE,OAAO,KAAK,GAAG,SAAQ,GAAI,UAAUC,MAAAA,eAAe,MAAM,aAAa,EAAC,GAAI,KAAK,EAAE;AAAA,MACxI,CAAO;AAAA,IACF;AAAA,EACL;AACA;AACA,MAAM,cAAc,CAAC,UAAU;AAC7B,QAAM,EAAE,UAAUC,MAAAA;AAClB,QAAM,EAAE,kBAAkBP,UAAAA;AAC1B,QAAM,EAAE,WAAW,UAAS,IAAK,mBAAmB,EAAE,SAAS,EAAE,cAAc,MAAO,EAAA,CAAE;AACxF,QAAM,QAAQE,MAAAA,SAAS,MAAM,IAAI;AACjC,QAAM,CAAC,QAAQ,IAAI,aAAa;AAChC,SAAuBC,2BAAG;AAAA,IACxBK,aAAY;AAAA,IACZ;AAAA,MACE,cAAc,cAAc;AAAA,QAC1B,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACxB,CAAO;AAAA,MACD,OAAO,MAAM;AAAA,MACb,UAAU,CAAC,UAAU;AACnB,cAAM,SAAS,MAAM,MAAM,KAAK;AAAA,MACjC;AAAA,MACD,SAAS;AAAA,MACT,kBAAkB,MAAsBC,2BAAI,KAACC,mBAAM,EAAE,IAAI,QAAQ,gBAAgB,iBAAiB,YAAY,UAAU,OAAO,QAAQ,UAAU;AAAA,QAC/HP,+BAAIQ,aAAAA,YAAY,EAAE,WAAW,cAAc,UAAU,MAAM,UAAU,MAAM,OAAO;AAAA,QAClG,YAA4BR,2BAAG,IAACS,qBAAQ,EAAE,OAAO,MAAM,OAAO,EAAE,SAAS,OAAQ,EAAA,CAAE,IAAI;AAAA,MAC/F,GAAS;AAAA,MACH,WAAW,UAAU,UAAU,CAAE,GAAE,IAAI,CAAC,EAAE,IAAI,OAAO,WAAW;AAC9D,cAAM,EAAE,eAAgB,IAAGC,MAAkB,mBAAC,KAAK,KAAK,CAAA;AACxD,eAAuBV,2BAAG;AAAA,UACxBW,aAAkB;AAAA,UAClB;AAAA,YACE,WAA2BX,2BAAG;AAAA,cAC5BO,aAAI;AAAA,cACJ;AAAA,gBACE,QAAQ;AAAA,gBACR,YAAY;AAAA,gBACZ,aAAa,mBAAmB,aAAa,eAAe;AAAA,gBAC5D,WAAW;AAAA,gBACX,QAAQ;AAAA,gBACR,OAAO;AAAA,cACR;AAAA,YACF;AAAA,YACD,OAAO;AAAA,YACP,UAAU;AAAA,UACX;AAAA,UACD;AAAA,QACV;AAAA,MACA,CAAO;AAAA,IACF;AAAA,EACL;AACA;AACK,MAAC,6BAA6B;AAAA,EACjC;AAAA,IACE,MAAMK,MAAoB;AAAA,IAC1B,WAAW;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,IACD,OAAO;AAAA,MACL,IAAIC,MAAAA,eAAe,qDAAqD;AAAA,MACxE,gBAAgB;AAAA,IACjB;AAAA,IACD,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,EACF;AAAA,EACD;AAAA,IACE,MAAMC,MAAuB;AAAA,IAC7B,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACX;AAAA,IACD,OAAO;AAAA,MACL,IAAID,MAAAA,eAAe,wDAAwD;AAAA,MAC3E,gBAAgB;AAAA,IACjB;AAAA,IACD,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,EACF;AACH;AACK,MAAC,0BAA0B;AAAA,EAC9B;AAAA,IACE,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,IACD,OAAO;AAAA,IACP,OAAO;AAAA,MACL,IAAIA,MAAAA,eAAe,qDAAqD;AAAA,MACxE,gBAAgB;AAAA,IACjB;AAAA,IACD,MAAM;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACD;AAAA,IACE,MAAM;AAAA,IACN,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,IACD,OAAO;AAAA,IACP,WAAW;AAAA,MACT;AAAA,QACE,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB;AAAA,QACD,OAAO;AAAA,MACR;AAAA,MACD;AAAA,QACE,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB;AAAA,QACD,OAAO;AAAA,MACR;AAAA,IACF;AAAA,IACD,OAAO;AAAA,MACL,IAAIA,MAAAA,eAAe,8DAA8D;AAAA,MACjF,gBAAgB;AAAA,IACjB;AAAA,IACD,MAAM;AAAA,EACP;AACH;;;"}