@primershop/strapi-plugin-status-manager 0.0.14 → 0.0.16

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 (127) hide show
  1. package/dist/admin/{components/StatusManager.js → HomePage-Bez9ZXv-.js} +49 -4
  2. package/dist/admin/{components/StatusManager.mjs → HomePage-Dx9N0awm.mjs} +49 -4
  3. package/dist/admin/index-BVybZ6IA.mjs +280 -0
  4. package/dist/admin/index-mATo7IeG.js +283 -0
  5. package/dist/admin/index.js +8 -45
  6. package/dist/admin/index.mjs +6 -47
  7. package/dist/server/index.js +747 -18
  8. package/dist/server/index.mjs +747 -18
  9. package/package.json +3 -3
  10. package/dist/admin/components/Initializer.js +0 -17
  11. package/dist/admin/components/Initializer.js.map +0 -1
  12. package/dist/admin/components/Initializer.mjs +0 -15
  13. package/dist/admin/components/Initializer.mjs.map +0 -1
  14. package/dist/admin/components/PluginIcon.js +0 -9
  15. package/dist/admin/components/PluginIcon.js.map +0 -1
  16. package/dist/admin/components/PluginIcon.mjs +0 -7
  17. package/dist/admin/components/PluginIcon.mjs.map +0 -1
  18. package/dist/admin/components/ProductStatusField.js +0 -104
  19. package/dist/admin/components/ProductStatusField.js.map +0 -1
  20. package/dist/admin/components/ProductStatusField.mjs +0 -102
  21. package/dist/admin/components/ProductStatusField.mjs.map +0 -1
  22. package/dist/admin/components/StatusManager.js.map +0 -1
  23. package/dist/admin/components/StatusManager.mjs.map +0 -1
  24. package/dist/admin/index.js.map +0 -1
  25. package/dist/admin/index.mjs.map +0 -1
  26. package/dist/admin/listView/StatusFilter.js +0 -76
  27. package/dist/admin/listView/StatusFilter.js.map +0 -1
  28. package/dist/admin/listView/StatusFilter.mjs +0 -74
  29. package/dist/admin/listView/StatusFilter.mjs.map +0 -1
  30. package/dist/admin/listView/add-status-column-hook.js +0 -34
  31. package/dist/admin/listView/add-status-column-hook.js.map +0 -1
  32. package/dist/admin/listView/add-status-column-hook.mjs +0 -32
  33. package/dist/admin/listView/add-status-column-hook.mjs.map +0 -1
  34. package/dist/admin/listView/status-cell.js +0 -28
  35. package/dist/admin/listView/status-cell.js.map +0 -1
  36. package/dist/admin/listView/status-cell.mjs +0 -26
  37. package/dist/admin/listView/status-cell.mjs.map +0 -1
  38. package/dist/admin/pages/HomePage.js +0 -55
  39. package/dist/admin/pages/HomePage.js.map +0 -1
  40. package/dist/admin/pages/HomePage.mjs +0 -53
  41. package/dist/admin/pages/HomePage.mjs.map +0 -1
  42. package/dist/admin/permissions.js +0 -16
  43. package/dist/admin/permissions.js.map +0 -1
  44. package/dist/admin/permissions.mjs +0 -14
  45. package/dist/admin/permissions.mjs.map +0 -1
  46. package/dist/admin/pluginId.js +0 -6
  47. package/dist/admin/pluginId.js.map +0 -1
  48. package/dist/admin/pluginId.mjs +0 -4
  49. package/dist/admin/pluginId.mjs.map +0 -1
  50. package/dist/server/bootstrap.js +0 -35
  51. package/dist/server/bootstrap.js.map +0 -1
  52. package/dist/server/bootstrap.mjs +0 -33
  53. package/dist/server/bootstrap.mjs.map +0 -1
  54. package/dist/server/content-types/index.js +0 -16
  55. package/dist/server/content-types/index.js.map +0 -1
  56. package/dist/server/content-types/index.mjs +0 -14
  57. package/dist/server/content-types/index.mjs.map +0 -1
  58. package/dist/server/content-types/status-link.js +0 -43
  59. package/dist/server/content-types/status-link.js.map +0 -1
  60. package/dist/server/content-types/status-link.mjs +0 -41
  61. package/dist/server/content-types/status-link.mjs.map +0 -1
  62. package/dist/server/content-types/status.js +0 -50
  63. package/dist/server/content-types/status.js.map +0 -1
  64. package/dist/server/content-types/status.mjs +0 -48
  65. package/dist/server/content-types/status.mjs.map +0 -1
  66. package/dist/server/controllers/content.js +0 -33
  67. package/dist/server/controllers/content.js.map +0 -1
  68. package/dist/server/controllers/content.mjs +0 -31
  69. package/dist/server/controllers/content.mjs.map +0 -1
  70. package/dist/server/controllers/index.js +0 -12
  71. package/dist/server/controllers/index.js.map +0 -1
  72. package/dist/server/controllers/index.mjs +0 -10
  73. package/dist/server/controllers/index.mjs.map +0 -1
  74. package/dist/server/controllers/status.js +0 -106
  75. package/dist/server/controllers/status.js.map +0 -1
  76. package/dist/server/controllers/status.mjs +0 -104
  77. package/dist/server/controllers/status.mjs.map +0 -1
  78. package/dist/server/index.js.map +0 -1
  79. package/dist/server/index.mjs.map +0 -1
  80. package/dist/server/middlewares/add-status-field.js +0 -48
  81. package/dist/server/middlewares/add-status-field.js.map +0 -1
  82. package/dist/server/middlewares/add-status-field.mjs +0 -46
  83. package/dist/server/middlewares/add-status-field.mjs.map +0 -1
  84. package/dist/server/middlewares/filter-by-status.js +0 -42
  85. package/dist/server/middlewares/filter-by-status.js.map +0 -1
  86. package/dist/server/middlewares/filter-by-status.mjs +0 -40
  87. package/dist/server/middlewares/filter-by-status.mjs.map +0 -1
  88. package/dist/server/middlewares/filter-published.js +0 -35
  89. package/dist/server/middlewares/filter-published.js.map +0 -1
  90. package/dist/server/middlewares/filter-published.mjs +0 -33
  91. package/dist/server/middlewares/filter-published.mjs.map +0 -1
  92. package/dist/server/permissions.js +0 -51
  93. package/dist/server/permissions.js.map +0 -1
  94. package/dist/server/permissions.mjs +0 -49
  95. package/dist/server/permissions.mjs.map +0 -1
  96. package/dist/server/pluginId.js +0 -6
  97. package/dist/server/pluginId.js.map +0 -1
  98. package/dist/server/pluginId.mjs +0 -4
  99. package/dist/server/pluginId.mjs.map +0 -1
  100. package/dist/server/register.js +0 -20
  101. package/dist/server/register.js.map +0 -1
  102. package/dist/server/register.mjs +0 -18
  103. package/dist/server/register.mjs.map +0 -1
  104. package/dist/server/routes/content-management.js +0 -41
  105. package/dist/server/routes/content-management.js.map +0 -1
  106. package/dist/server/routes/content-management.mjs +0 -39
  107. package/dist/server/routes/content-management.mjs.map +0 -1
  108. package/dist/server/routes/index.js +0 -17
  109. package/dist/server/routes/index.js.map +0 -1
  110. package/dist/server/routes/index.mjs +0 -15
  111. package/dist/server/routes/index.mjs.map +0 -1
  112. package/dist/server/routes/status-management.js +0 -122
  113. package/dist/server/routes/status-management.js.map +0 -1
  114. package/dist/server/routes/status-management.mjs +0 -120
  115. package/dist/server/routes/status-management.mjs.map +0 -1
  116. package/dist/server/services/index.js +0 -12
  117. package/dist/server/services/index.js.map +0 -1
  118. package/dist/server/services/index.mjs +0 -10
  119. package/dist/server/services/index.mjs.map +0 -1
  120. package/dist/server/services/status-link.js +0 -38
  121. package/dist/server/services/status-link.js.map +0 -1
  122. package/dist/server/services/status-link.mjs +0 -36
  123. package/dist/server/services/status-link.mjs.map +0 -1
  124. package/dist/server/services/status.js +0 -110
  125. package/dist/server/services/status.js.map +0 -1
  126. package/dist/server/services/status.mjs +0 -108
  127. package/dist/server/services/status.mjs.map +0 -1
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
+ var designSystem = require('@strapi/design-system');
5
+ var admin = require('@strapi/strapi/admin');
4
6
  var React = require('react');
5
7
  var combine = require('@atlaskit/pragmatic-drag-and-drop/combine');
6
8
  var adapter = require('@atlaskit/pragmatic-drag-and-drop/element/adapter');
@@ -8,9 +10,8 @@ var pointerOutsideOfPreview = require('@atlaskit/pragmatic-drag-and-drop/element
8
10
  var setCustomNativeDragPreview = require('@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview');
9
11
  var reorder = require('@atlaskit/pragmatic-drag-and-drop/reorder');
10
12
  var closestEdge = require('@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge');
11
- var designSystem = require('@strapi/design-system');
12
13
  var icons = require('@strapi/icons');
13
- var admin = require('@strapi/strapi/admin');
14
+ var index = require('./index-mATo7IeG.js');
14
15
 
15
16
  const StatusManager = ()=>{
16
17
  const [statuses, setStatuses] = React.useState([]);
@@ -363,5 +364,49 @@ const StatusManager = ()=>{
363
364
  });
364
365
  };
365
366
 
366
- exports.StatusManager = StatusManager;
367
- //# sourceMappingURL=StatusManager.js.map
367
+ const HomePage = ()=>{
368
+ return /*#__PURE__*/ jsxRuntime.jsxs(admin.Layouts.Root, {
369
+ children: [
370
+ /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Title, {
371
+ children: "Status Manager"
372
+ }),
373
+ /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Main, {
374
+ children: /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Protect, {
375
+ permissions: index.pluginPermissions.accessStatusManager,
376
+ children: /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Content, {
377
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
378
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
379
+ padding: 10,
380
+ gap: {
381
+ initial: 1,
382
+ medium: 4,
383
+ large: 8
384
+ },
385
+ direction: {
386
+ initial: "column",
387
+ medium: "row"
388
+ },
389
+ alignItems: {
390
+ initial: "center",
391
+ medium: "flex-start"
392
+ },
393
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
394
+ padding: 1,
395
+ children: [
396
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
397
+ variant: "alpha",
398
+ children: "Status manager"
399
+ }),
400
+ /*#__PURE__*/ jsxRuntime.jsx(StatusManager, {})
401
+ ]
402
+ })
403
+ })
404
+ })
405
+ })
406
+ })
407
+ })
408
+ ]
409
+ });
410
+ };
411
+
412
+ exports.HomePage = HomePage;
@@ -1,4 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Box, Typography, Flex, TextInput, Button, Dialog, SingleSelect, SingleSelectOption } from '@strapi/design-system';
3
+ import { useFetchClient, Layouts, Page } from '@strapi/strapi/admin';
2
4
  import { useState, useEffect, useCallback } from 'react';
3
5
  import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
4
6
  import { draggable, dropTargetForElements, monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
@@ -6,9 +8,8 @@ import { pointerOutsideOfPreview } from '@atlaskit/pragmatic-drag-and-drop/eleme
6
8
  import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';
7
9
  import { reorder } from '@atlaskit/pragmatic-drag-and-drop/reorder';
8
10
  import { extractClosestEdge, attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
9
- import { Box, Typography, Flex, TextInput, Button, Dialog, SingleSelect, SingleSelectOption } from '@strapi/design-system';
10
11
  import { Plus, Drag, Trash } from '@strapi/icons';
11
- import { useFetchClient } from '@strapi/strapi/admin';
12
+ import { p as pluginPermissions } from './index-BVybZ6IA.mjs';
12
13
 
13
14
  const StatusManager = ()=>{
14
15
  const [statuses, setStatuses] = useState([]);
@@ -361,5 +362,49 @@ const StatusManager = ()=>{
361
362
  });
362
363
  };
363
364
 
364
- export { StatusManager };
365
- //# sourceMappingURL=StatusManager.mjs.map
365
+ const HomePage = ()=>{
366
+ return /*#__PURE__*/ jsxs(Layouts.Root, {
367
+ children: [
368
+ /*#__PURE__*/ jsx(Page.Title, {
369
+ children: "Status Manager"
370
+ }),
371
+ /*#__PURE__*/ jsx(Page.Main, {
372
+ children: /*#__PURE__*/ jsx(Page.Protect, {
373
+ permissions: pluginPermissions.accessStatusManager,
374
+ children: /*#__PURE__*/ jsx(Layouts.Content, {
375
+ children: /*#__PURE__*/ jsx(Box, {
376
+ children: /*#__PURE__*/ jsx(Flex, {
377
+ padding: 10,
378
+ gap: {
379
+ initial: 1,
380
+ medium: 4,
381
+ large: 8
382
+ },
383
+ direction: {
384
+ initial: "column",
385
+ medium: "row"
386
+ },
387
+ alignItems: {
388
+ initial: "center",
389
+ medium: "flex-start"
390
+ },
391
+ children: /*#__PURE__*/ jsxs(Box, {
392
+ padding: 1,
393
+ children: [
394
+ /*#__PURE__*/ jsx(Typography, {
395
+ variant: "alpha",
396
+ children: "Status manager"
397
+ }),
398
+ /*#__PURE__*/ jsx(StatusManager, {})
399
+ ]
400
+ })
401
+ })
402
+ })
403
+ })
404
+ })
405
+ })
406
+ ]
407
+ });
408
+ };
409
+
410
+ export { HomePage };
@@ -0,0 +1,280 @@
1
+ import React, { useRef, useEffect, useState, useCallback } from 'react';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { CheckCircle } from '@strapi/icons';
4
+ import { Flex, Box, Typography, SingleSelect, SingleSelectOption } from '@strapi/design-system';
5
+ import { unstable_useContentManagerContext, useFetchClient, useQueryParams } from '@strapi/strapi/admin';
6
+
7
+ const PLUGIN_ID = "primershop-status-manager";
8
+
9
+ /**
10
+ * @type {import('react').FC<{ setPlugin: (id: string) => void }>}
11
+ */ const Initializer = ({ setPlugin })=>{
12
+ const ref = useRef(setPlugin);
13
+ useEffect(()=>{
14
+ ref.current(PLUGIN_ID);
15
+ }, []);
16
+ return null;
17
+ };
18
+
19
+ const PluginIcon = ()=>/*#__PURE__*/ jsx(CheckCircle, {});
20
+
21
+ const ProductStatusField = ()=>{
22
+ const { contentType, id } = unstable_useContentManagerContext();
23
+ const [statuses, setStatuses] = useState([]);
24
+ const [currentStatus, setCurrentStatus] = useState("");
25
+ const [message, setMessage] = useState("");
26
+ const { get, put } = useFetchClient();
27
+ const handleStatusChange = useCallback(async (newStatus)=>{
28
+ if (!id) {
29
+ setMessage("Save the product first and then change the status");
30
+ return;
31
+ }
32
+ try {
33
+ await put(`primershop-status-manager/content-status`, {
34
+ contentTypeUid: "api::product.product",
35
+ contentDocumentId: id,
36
+ statusId: statuses.find((status)=>status.name === newStatus)?.documentId
37
+ });
38
+ setMessage(`Status updated ${currentStatus ? `from ${currentStatus}` : ""} to ${newStatus}`);
39
+ setCurrentStatus(newStatus || "");
40
+ } catch (error) {
41
+ setMessage("Error updating status");
42
+ console.error("Error updating status:", error);
43
+ }
44
+ }, [
45
+ id,
46
+ statuses,
47
+ currentStatus,
48
+ put
49
+ ]);
50
+ useEffect(()=>{
51
+ async function fetchCurrentStatus() {
52
+ try {
53
+ const { data: productData } = await get(`primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`);
54
+ const status = productData?.status;
55
+ if (status && status.name) return setCurrentStatus(status.name);
56
+ if (statuses.length) return handleStatusChange(statuses[0].name);
57
+ } catch (error) {
58
+ console.error("Error fetching product status:", error);
59
+ }
60
+ }
61
+ if (id && !currentStatus.length) fetchCurrentStatus();
62
+ if (!id && statuses.length) setCurrentStatus(statuses[0].name);
63
+ }, [
64
+ id,
65
+ statuses,
66
+ get
67
+ ]);
68
+ useEffect(()=>{
69
+ async function fetchStatuses() {
70
+ try {
71
+ const { data } = await get("primershop-status-manager/statuses");
72
+ setStatuses(data);
73
+ } catch (error) {
74
+ console.error("Error fetching statuses:", error);
75
+ }
76
+ }
77
+ fetchStatuses();
78
+ }, [
79
+ get
80
+ ]);
81
+ return /*#__PURE__*/ jsxs(Flex, {
82
+ direction: "column",
83
+ justifyContent: "center",
84
+ alignItems: "stretch",
85
+ width: "100%",
86
+ children: [
87
+ /*#__PURE__*/ jsx(Box, {
88
+ padding: 2,
89
+ children: /*#__PURE__*/ jsxs(Typography, {
90
+ variant: "sigma",
91
+ children: [
92
+ contentType?.info.displayName,
93
+ " status"
94
+ ]
95
+ })
96
+ }),
97
+ /*#__PURE__*/ jsx(SingleSelect, {
98
+ placeholder: currentStatus,
99
+ onChange: handleStatusChange,
100
+ children: statuses.map((status)=>/*#__PURE__*/ jsx(SingleSelectOption, {
101
+ value: status.name,
102
+ children: status.name
103
+ }, status.documentId))
104
+ }),
105
+ /*#__PURE__*/ jsx(Box, {
106
+ padding: 2,
107
+ children: /*#__PURE__*/ jsx(Typography, {
108
+ variant: "sigma",
109
+ children: message
110
+ })
111
+ })
112
+ ]
113
+ });
114
+ };
115
+
116
+ const StatusCell = ({ row })=>{
117
+ const [status, setStatus] = useState(null);
118
+ useEffect(()=>{
119
+ setStatus(row.statusField);
120
+ }, [
121
+ row
122
+ ]);
123
+ if (!status) return null;
124
+ return /*#__PURE__*/ jsx("span", {
125
+ style: {
126
+ padding: "4px 8px",
127
+ borderRadius: 4,
128
+ background: status.published ? "#eafbe7" : "#f0f0ff",
129
+ color: status.published ? "#2f6846" : "#271fe0",
130
+ border: `1px solid ${status.published ? "#2f6846" : "#271fe0"}`,
131
+ fontSize: 14
132
+ },
133
+ children: status.name
134
+ });
135
+ };
136
+
137
+ const addStatusColumnHook = ({ displayedHeaders, layout })=>{
138
+ const statusHeader = {
139
+ attribute: {
140
+ type: "custom"
141
+ },
142
+ name: "statusLabel",
143
+ label: {
144
+ id: "primershop-status-manager.status",
145
+ defaultMessage: "Status"
146
+ },
147
+ searchable: false,
148
+ sortable: false,
149
+ cellFormatter: (row)=>{
150
+ return React.createElement(StatusCell, {
151
+ row
152
+ });
153
+ }
154
+ };
155
+ return {
156
+ displayedHeaders: [
157
+ ...displayedHeaders,
158
+ statusHeader
159
+ ],
160
+ layout
161
+ };
162
+ };
163
+
164
+ /**
165
+ * Admin permission actions for use in addMenuLink, Page.Protect, and useRBAC.
166
+ * Action IDs must match uids registered in server bootstrap (registerMany).
167
+ */ const pluginPermissions = {
168
+ accessStatusManager: [
169
+ {
170
+ action: "plugin::primershop-status-manager.main",
171
+ subject: null
172
+ }
173
+ ]
174
+ };
175
+
176
+ const StatusFilter = ()=>{
177
+ const { contentType } = unstable_useContentManagerContext();
178
+ const [statuses, setStatuses] = useState([]);
179
+ const [selected, setSelected] = useState("");
180
+ const { get } = useFetchClient();
181
+ const [{ query }, setQuery] = useQueryParams();
182
+ const handleStatusChange = useCallback((name)=>{
183
+ setQuery({
184
+ page: 1,
185
+ plugins: {
186
+ ...query.plugins,
187
+ "primershop-status-manager": {
188
+ statusName: name.toLowerCase()
189
+ }
190
+ }
191
+ }, "push", true);
192
+ }, [
193
+ query.plugins,
194
+ setQuery
195
+ ]);
196
+ useEffect(()=>{
197
+ const selectedStatusName = query.plugins?.["primershop-status-manager"]?.statusName;
198
+ if (!selectedStatusName) return;
199
+ const status = statuses.find((status)=>status.name.toLowerCase() === selectedStatusName);
200
+ if (status) {
201
+ setSelected(status.name);
202
+ }
203
+ }, [
204
+ query,
205
+ statuses
206
+ ]);
207
+ useEffect(()=>{
208
+ async function fetchStatuses() {
209
+ try {
210
+ const { data } = await get("primershop-status-manager/statuses");
211
+ const allStatusesObject = {
212
+ documentId: "all",
213
+ name: "All"
214
+ };
215
+ setStatuses([
216
+ allStatusesObject,
217
+ ...data
218
+ ]);
219
+ } catch (error) {
220
+ console.error("Error fetching statuses:", error);
221
+ }
222
+ }
223
+ fetchStatuses();
224
+ }, [
225
+ get
226
+ ]);
227
+ return /*#__PURE__*/ jsx(Flex, {
228
+ direction: "column",
229
+ justifyContent: "center",
230
+ children: /*#__PURE__*/ jsx(SingleSelect, {
231
+ size: "S",
232
+ placeholder: `${contentType?.info.displayName} status`,
233
+ value: selected,
234
+ onChange: handleStatusChange,
235
+ children: statuses.map((status)=>/*#__PURE__*/ jsx(SingleSelectOption, {
236
+ value: status.name,
237
+ children: status.name
238
+ }, status.documentId))
239
+ })
240
+ });
241
+ };
242
+
243
+ const plugin = {
244
+ register (app) {
245
+ app.registerPlugin({
246
+ id: PLUGIN_ID,
247
+ initializer: Initializer,
248
+ isReady: true,
249
+ name: PLUGIN_ID
250
+ });
251
+ app.addMenuLink({
252
+ to: `plugins/${PLUGIN_ID}`,
253
+ icon: PluginIcon,
254
+ intlLabel: {
255
+ id: `${PLUGIN_ID}.plugin.name`,
256
+ defaultMessage: "Status manager"
257
+ },
258
+ permissions: [
259
+ pluginPermissions.accessStatusManager[0]
260
+ ],
261
+ Component: ()=>import('./HomePage-Dx9N0awm.mjs').then((module)=>({
262
+ default: module.HomePage
263
+ }))
264
+ });
265
+ },
266
+ bootstrap (app) {
267
+ app.getPlugin("content-manager").injectComponent("editView", "right-links", {
268
+ name: "Status",
269
+ Component: ProductStatusField
270
+ });
271
+ app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addStatusColumnHook);
272
+ const contentManager = app.getPlugin('content-manager');
273
+ contentManager.injectComponent('listView', 'actions', {
274
+ name: 'status-filter',
275
+ Component: StatusFilter
276
+ });
277
+ }
278
+ };
279
+
280
+ export { plugin as a, pluginPermissions as p };