@hkyhy/marsun-components-core 0.1.99 → 0.1.101
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.
- package/dist/components/Editor/RichTextEditor/RichTextEditor.js +36 -45
- package/dist/components/Editor/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/components/Editor/msgVarTokenPlugin.js +14 -19
- package/dist/components/Editor/msgVarTokenPlugin.js.map +1 -1
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.d.ts +1 -1
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js +3 -3
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js.map +1 -1
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +209 -146
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -1
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.d.ts +18 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js +324 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js.map +1 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.d.ts +14 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js +183 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js.map +1 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +2 -2
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +52 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js +47 -17
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -1
- package/dist/components/Tools/MessageCenter/index.d.ts +2 -1
- package/dist/components/Tools/MessageCenter/utils/adminGuards.d.ts +14 -0
- package/dist/components/Tools/MessageCenter/utils/adminGuards.js +12 -0
- package/dist/components/Tools/MessageCenter/utils/adminGuards.js.map +1 -0
- package/dist/components/Tools/index.d.ts +2 -2
- package/dist/index.js +229 -227
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +0 -301
- package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +0 -1256
- package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js +0 -2107
- package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +0 -259
- package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +0 -23990
- package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +0 -249
- package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +0 -47
- package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js +0 -100
- package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +0 -31
- package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js +0 -194
- package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js +0 -2042
- package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +0 -9
- package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +0 -167
- package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js +0 -471
- package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +0 -139
- package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +0 -755
- package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +0 -7838
- package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js +0 -422
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js +0 -33
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js +0 -47
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js +0 -156
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +0 -313
- package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +0 -2942
- package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +0 -892
- package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js.map +0 -1
- package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +0 -1047
- package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js.map +0 -1
- package/dist/node_modules/color-parse/node_modules/color-name/index.js +0 -153
- package/dist/node_modules/color-parse/node_modules/color-name/index.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js +0 -7
- package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +0 -7
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js +0 -7
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +0 -16
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +0 -15
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js +0 -30
- package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js +0 -17
- package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js +0 -13
- package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js +0 -17
- package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/clone.js +0 -102
- package/dist/node_modules/es-toolkit/dist/compat/object/clone.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +0 -33
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/get.js +0 -39
- package/dist/node_modules/es-toolkit/dist/compat/object/get.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/has.js +0 -21
- package/dist/node_modules/es-toolkit/dist/compat/object/has.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js +0 -33
- package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js +0 -10
- package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/merge.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/object/merge.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js +0 -53
- package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/property.js +0 -10
- package/dist/node_modules/es-toolkit/dist/compat/object/property.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/set.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/object/set.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js +0 -31
- package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +0 -15
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +0 -81
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +0 -16
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +0 -23
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/eq.js +0 -7
- package/dist/node_modules/es-toolkit/dist/compat/util/eq.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js +0 -19
- package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/times.js +0 -11
- package/dist/node_modules/es-toolkit/dist/compat/util/times.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js +0 -9
- package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js +0 -8
- package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js +0 -37
- package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/compat/util/toString.js +0 -15
- package/dist/node_modules/es-toolkit/dist/compat/util/toString.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/function/after.js +0 -11
- package/dist/node_modules/es-toolkit/dist/function/after.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/function/debounce.js +0 -30
- package/dist/node_modules/es-toolkit/dist/function/debounce.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/function/identity.js +0 -7
- package/dist/node_modules/es-toolkit/dist/function/identity.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/function/noop.js +0 -6
- package/dist/node_modules/es-toolkit/dist/function/noop.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/object/clone.js +0 -27
- package/dist/node_modules/es-toolkit/dist/object/clone.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +0 -8
- package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js +0 -121
- package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/object/mapValues.js +0 -12
- package/dist/node_modules/es-toolkit/dist/object/mapValues.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js +0 -8
- package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js +0 -9
- package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js +0 -110
- package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isLength.js +0 -7
- package/dist/node_modules/es-toolkit/dist/predicate/isLength.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js +0 -9
- package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js +0 -7
- package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +0 -1
- package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js +0 -7
- package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +0 -1
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { jsx as o, jsxs as k } from "react/jsx-runtime";
|
|
2
|
+
import { message as r, Switch as J, Space as O, Button as N, Select as V } from "antd";
|
|
3
|
+
import { useState as y, useCallback as M, useEffect as _, useMemo as w } from "react";
|
|
4
|
+
import { resolveTemplateCodeAfterEventChange as X } from "../../utils/adminGuards.js";
|
|
5
|
+
import Y from "../style.module.scss.js";
|
|
6
|
+
import Z from "../../../../Alert/Alert.js";
|
|
7
|
+
import R from "../../../../Layout/PageSpin/index.js";
|
|
8
|
+
import j from "../../../../Empty/Empty.js";
|
|
9
|
+
import P from "../../../../Table/Table.js";
|
|
10
|
+
import ee from "../../../../FormInfo/FormModal.js";
|
|
11
|
+
import ae from "../../../../FormInfo/FormInfo.js";
|
|
12
|
+
import { Input as le, Select as oe, InputNumber as te } from "../../../../FormInfo/fields.js";
|
|
13
|
+
const C = oe, ne = le, T = te, ke = ({
|
|
14
|
+
crud: f,
|
|
15
|
+
catalog: c,
|
|
16
|
+
templates: u,
|
|
17
|
+
roleOptions: Q,
|
|
18
|
+
fetchPushRules: S,
|
|
19
|
+
savePushRule: K,
|
|
20
|
+
setPushRuleEnabled: m,
|
|
21
|
+
deletePushRule: d,
|
|
22
|
+
createNonce: h = 0
|
|
23
|
+
}) => {
|
|
24
|
+
const v = f.create, s = f.update, L = f.delete, U = f.read, I = (e) => e ? v : s, [g, x] = y([]), [D, F] = y(!1), [E, H] = y(""), [a, p] = y(null), [b, z] = y(!1), i = M(async () => {
|
|
25
|
+
F(!0), H("");
|
|
26
|
+
try {
|
|
27
|
+
const e = await S();
|
|
28
|
+
x(Array.isArray(e) ? e : []);
|
|
29
|
+
} catch (e) {
|
|
30
|
+
H(e instanceof Error ? e.message : String(e)), x([]);
|
|
31
|
+
} finally {
|
|
32
|
+
F(!1);
|
|
33
|
+
}
|
|
34
|
+
}, [S]);
|
|
35
|
+
_(() => {
|
|
36
|
+
i();
|
|
37
|
+
}, [i]), _(() => {
|
|
38
|
+
if (!h || !v) return;
|
|
39
|
+
const e = c[0], l = u.find((t) => t.eventKey === (e == null ? void 0 : e.eventKey));
|
|
40
|
+
z(!0), p({
|
|
41
|
+
label: (e == null ? void 0 : e.label) || "新建推送规则",
|
|
42
|
+
eventKey: (e == null ? void 0 : e.eventKey) || "",
|
|
43
|
+
templateCode: (l == null ? void 0 : l.code) || "",
|
|
44
|
+
levels: ["L2"],
|
|
45
|
+
audienceRoles: [],
|
|
46
|
+
channels: ["in_app"],
|
|
47
|
+
slaHours: 36,
|
|
48
|
+
scanLookbackDays: 7,
|
|
49
|
+
enabled: !0
|
|
50
|
+
});
|
|
51
|
+
}, [h, v, c, u]);
|
|
52
|
+
const $ = M(
|
|
53
|
+
(e) => u.filter((l) => !e || l.eventKey === e).map((l) => ({
|
|
54
|
+
value: String(l.code || ""),
|
|
55
|
+
label: `${l.label || l.code || ""}(${l.code || ""})`
|
|
56
|
+
})).filter((l) => l.value),
|
|
57
|
+
[u]
|
|
58
|
+
), A = w(
|
|
59
|
+
() => ({
|
|
60
|
+
label: a == null ? void 0 : a.label,
|
|
61
|
+
eventKey: a == null ? void 0 : a.eventKey,
|
|
62
|
+
templateCode: a == null ? void 0 : a.templateCode,
|
|
63
|
+
levels: (a == null ? void 0 : a.levels) || [],
|
|
64
|
+
audienceRoles: (a == null ? void 0 : a.audienceRoles) || [],
|
|
65
|
+
slaHours: (a == null ? void 0 : a.slaHours) ?? 0,
|
|
66
|
+
scanLookbackDays: (a == null ? void 0 : a.scanLookbackDays) ?? 0
|
|
67
|
+
}),
|
|
68
|
+
[a]
|
|
69
|
+
), W = w(
|
|
70
|
+
() => ({
|
|
71
|
+
data: A,
|
|
72
|
+
onSubmit: async (e) => {
|
|
73
|
+
if (!I(b) || !a)
|
|
74
|
+
return r.warning("当前为只读"), !1;
|
|
75
|
+
const l = String(a.eventKey || e.eventKey || "").trim(), t = String(e.templateCode || "").trim();
|
|
76
|
+
if (!l)
|
|
77
|
+
return r.warning("请选择事件"), !1;
|
|
78
|
+
if (!t)
|
|
79
|
+
return r.warning("请关联模板编号"), !1;
|
|
80
|
+
try {
|
|
81
|
+
await K({
|
|
82
|
+
...a,
|
|
83
|
+
label: String(e.label || a.label || "").trim() || l,
|
|
84
|
+
eventKey: l,
|
|
85
|
+
templateCode: t,
|
|
86
|
+
levels: e.levels || [],
|
|
87
|
+
audienceRoles: e.audienceRoles || [],
|
|
88
|
+
channels: ["in_app"],
|
|
89
|
+
slaHours: Number(e.slaHours ?? 0),
|
|
90
|
+
scanLookbackDays: Number(e.scanLookbackDays ?? 0),
|
|
91
|
+
enabled: b ? !0 : a.enabled !== !1
|
|
92
|
+
}), r.success("已保存"), p(null), await i();
|
|
93
|
+
} catch (n) {
|
|
94
|
+
return r.error(n instanceof Error ? n.message : String(n)), !1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}),
|
|
98
|
+
[v, s, a, A, b, i, K]
|
|
99
|
+
), q = w(
|
|
100
|
+
() => [
|
|
101
|
+
{ title: "名称", dataIndex: "label", key: "label", ellipsis: !0 },
|
|
102
|
+
{
|
|
103
|
+
title: "事件",
|
|
104
|
+
dataIndex: "eventKey",
|
|
105
|
+
key: "eventKey",
|
|
106
|
+
render: (e) => {
|
|
107
|
+
var l;
|
|
108
|
+
return ((l = c.find((t) => t.eventKey === e)) == null ? void 0 : l.label) || e || "—";
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
{ title: "关联模板", dataIndex: "templateCode", key: "templateCode", width: 140 },
|
|
112
|
+
{
|
|
113
|
+
title: "级别",
|
|
114
|
+
dataIndex: "levels",
|
|
115
|
+
key: "levels",
|
|
116
|
+
width: 100,
|
|
117
|
+
render: (e) => (e || []).join(",") || "—"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: "启用",
|
|
121
|
+
dataIndex: "enabled",
|
|
122
|
+
key: "enabled",
|
|
123
|
+
width: 80,
|
|
124
|
+
render: (e, l) => /* @__PURE__ */ o(
|
|
125
|
+
J,
|
|
126
|
+
{
|
|
127
|
+
size: "small",
|
|
128
|
+
checked: l.enabled !== !1,
|
|
129
|
+
disabled: !s || !m,
|
|
130
|
+
onChange: (t) => {
|
|
131
|
+
(async () => {
|
|
132
|
+
try {
|
|
133
|
+
await (m == null ? void 0 : m(l, t)), r.success(t ? "已启用" : "已停用"), await i();
|
|
134
|
+
} catch (n) {
|
|
135
|
+
r.error(n instanceof Error ? n.message : String(n));
|
|
136
|
+
}
|
|
137
|
+
})();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
)
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
title: "操作",
|
|
144
|
+
key: "actions",
|
|
145
|
+
width: 140,
|
|
146
|
+
render: (e, l) => /* @__PURE__ */ k(O, { size: 4, children: [
|
|
147
|
+
/* @__PURE__ */ o(
|
|
148
|
+
N,
|
|
149
|
+
{
|
|
150
|
+
type: "link",
|
|
151
|
+
size: "small",
|
|
152
|
+
disabled: !s,
|
|
153
|
+
onClick: () => {
|
|
154
|
+
z(!1), p({ ...l });
|
|
155
|
+
},
|
|
156
|
+
children: "编辑"
|
|
157
|
+
}
|
|
158
|
+
),
|
|
159
|
+
/* @__PURE__ */ o(
|
|
160
|
+
N,
|
|
161
|
+
{
|
|
162
|
+
type: "link",
|
|
163
|
+
size: "small",
|
|
164
|
+
danger: !0,
|
|
165
|
+
disabled: !L || !d,
|
|
166
|
+
onClick: () => {
|
|
167
|
+
(async () => {
|
|
168
|
+
try {
|
|
169
|
+
await (d == null ? void 0 : d(l)), r.success("已删除"), await i();
|
|
170
|
+
} catch (t) {
|
|
171
|
+
r.error(t instanceof Error ? t.message : String(t));
|
|
172
|
+
}
|
|
173
|
+
})();
|
|
174
|
+
},
|
|
175
|
+
children: "删除"
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
] })
|
|
179
|
+
}
|
|
180
|
+
],
|
|
181
|
+
[s, L, c, d, i, m]
|
|
182
|
+
);
|
|
183
|
+
return /* @__PURE__ */ k("div", { className: Y.pane, children: [
|
|
184
|
+
E ? /* @__PURE__ */ o(Z, { type: "error", showIcon: !0, message: E, style: { marginBottom: 12 } }) : null,
|
|
185
|
+
/* @__PURE__ */ o(R, { spinning: D, children: U ? g.length === 0 && !D ? /* @__PURE__ */ o(j, { description: "暂无推送规则" }) : /* @__PURE__ */ o(
|
|
186
|
+
P,
|
|
187
|
+
{
|
|
188
|
+
rowKey: (e) => e.id || e.code || `${e.eventKey}-${e.templateCode}`,
|
|
189
|
+
tableName: "msg-center-push-rules",
|
|
190
|
+
columnConfigEnabled: !1,
|
|
191
|
+
columnResizeEnabled: !1,
|
|
192
|
+
columns: q,
|
|
193
|
+
dataSource: g,
|
|
194
|
+
pagination: !1,
|
|
195
|
+
size: "small"
|
|
196
|
+
}
|
|
197
|
+
) : /* @__PURE__ */ o(j, { description: "无推送规则读取权限" }) }),
|
|
198
|
+
/* @__PURE__ */ k(
|
|
199
|
+
ee,
|
|
200
|
+
{
|
|
201
|
+
title: b ? "新建推送规则" : "编辑推送规则",
|
|
202
|
+
open: !!a,
|
|
203
|
+
onCancel: () => p(null),
|
|
204
|
+
width: 560,
|
|
205
|
+
okText: "保存",
|
|
206
|
+
autoClose: !1,
|
|
207
|
+
formProps: W,
|
|
208
|
+
children: [
|
|
209
|
+
/* @__PURE__ */ k("div", { style: { marginBottom: 16 }, children: [
|
|
210
|
+
/* @__PURE__ */ o("div", { style: { marginBottom: 8 }, children: "事件" }),
|
|
211
|
+
/* @__PURE__ */ o(
|
|
212
|
+
V,
|
|
213
|
+
{
|
|
214
|
+
style: { width: "100%" },
|
|
215
|
+
disabled: !s,
|
|
216
|
+
value: (a == null ? void 0 : a.eventKey) || void 0,
|
|
217
|
+
options: c.map((e) => ({
|
|
218
|
+
value: e.eventKey,
|
|
219
|
+
label: e.label || e.eventKey
|
|
220
|
+
})),
|
|
221
|
+
onChange: (e) => {
|
|
222
|
+
const l = String(e || ""), t = $(l);
|
|
223
|
+
p(
|
|
224
|
+
(n) => {
|
|
225
|
+
var B;
|
|
226
|
+
return n && {
|
|
227
|
+
...n,
|
|
228
|
+
eventKey: l,
|
|
229
|
+
templateCode: X(n.templateCode, t),
|
|
230
|
+
label: ((B = c.find((G) => G.eventKey === l)) == null ? void 0 : B.label) || n.label
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
},
|
|
235
|
+
showSearch: !0,
|
|
236
|
+
optionFilterProp: "label"
|
|
237
|
+
}
|
|
238
|
+
)
|
|
239
|
+
] }),
|
|
240
|
+
/* @__PURE__ */ o(
|
|
241
|
+
ae,
|
|
242
|
+
{
|
|
243
|
+
column: 1,
|
|
244
|
+
list: [
|
|
245
|
+
/* @__PURE__ */ o(
|
|
246
|
+
ne,
|
|
247
|
+
{
|
|
248
|
+
name: "label",
|
|
249
|
+
label: "名称",
|
|
250
|
+
rule: "REQ",
|
|
251
|
+
disabled: !I(b)
|
|
252
|
+
},
|
|
253
|
+
"label"
|
|
254
|
+
),
|
|
255
|
+
/* @__PURE__ */ o(
|
|
256
|
+
C,
|
|
257
|
+
{
|
|
258
|
+
name: "templateCode",
|
|
259
|
+
label: "关联模板",
|
|
260
|
+
rule: "REQ",
|
|
261
|
+
disabled: !s,
|
|
262
|
+
options: $(a == null ? void 0 : a.eventKey),
|
|
263
|
+
showSearch: !0,
|
|
264
|
+
optionFilterProp: "label"
|
|
265
|
+
},
|
|
266
|
+
`tpl-${(a == null ? void 0 : a.eventKey) || ""}`
|
|
267
|
+
),
|
|
268
|
+
/* @__PURE__ */ o(
|
|
269
|
+
C,
|
|
270
|
+
{
|
|
271
|
+
name: "levels",
|
|
272
|
+
label: "级别",
|
|
273
|
+
mode: "multiple",
|
|
274
|
+
disabled: !s,
|
|
275
|
+
options: ["L1", "L2", "L3"].map((e) => ({ value: e, label: e }))
|
|
276
|
+
},
|
|
277
|
+
"levels"
|
|
278
|
+
),
|
|
279
|
+
/* @__PURE__ */ o(
|
|
280
|
+
C,
|
|
281
|
+
{
|
|
282
|
+
name: "audienceRoles",
|
|
283
|
+
label: "受众角色",
|
|
284
|
+
mode: "multiple",
|
|
285
|
+
disabled: !s,
|
|
286
|
+
options: Q.map((e) => ({ value: e.code, label: e.name || e.code })),
|
|
287
|
+
optionFilterProp: "label"
|
|
288
|
+
},
|
|
289
|
+
"audienceRoles"
|
|
290
|
+
),
|
|
291
|
+
/* @__PURE__ */ o(
|
|
292
|
+
T,
|
|
293
|
+
{
|
|
294
|
+
name: "slaHours",
|
|
295
|
+
label: "SLA(小时)",
|
|
296
|
+
disabled: !s,
|
|
297
|
+
min: 0,
|
|
298
|
+
style: { width: "100%" }
|
|
299
|
+
},
|
|
300
|
+
"slaHours"
|
|
301
|
+
),
|
|
302
|
+
/* @__PURE__ */ o(
|
|
303
|
+
T,
|
|
304
|
+
{
|
|
305
|
+
name: "scanLookbackDays",
|
|
306
|
+
label: "回看(天)",
|
|
307
|
+
disabled: !s,
|
|
308
|
+
min: 0,
|
|
309
|
+
style: { width: "100%" }
|
|
310
|
+
},
|
|
311
|
+
"scanLookbackDays"
|
|
312
|
+
)
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
)
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
)
|
|
319
|
+
] });
|
|
320
|
+
};
|
|
321
|
+
export {
|
|
322
|
+
ke as PushRulesPanel
|
|
323
|
+
};
|
|
324
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.tsx"],"sourcesContent":["import { FormInfo, FormModal, Input, InputNumber, Select } from '@/components/FormInfo';\nimport { Alert } from '@/components/Alert';\nimport { Empty } from '@/components/Empty';\nimport { PageSpin } from '@/components/Layout';\nimport { Table } from '@/components/Table';\nimport { Button, Select as AntSelect, Space, Switch, message } from 'antd';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport type {\n MessageAudienceRoleOption,\n MessageCrudFlags,\n MessageEventCatalogItem,\n MessageTemplateAdminItem,\n PushRuleAdminItem,\n} from '../types';\nimport { resolveTemplateCodeAfterEventChange } from '../../utils/adminGuards';\nimport styles from '../style.module.scss';\n\n/** CI tsc:kne Select 重载与 FieldProps 交叉时误匹配 FormItem children;宽化为任意 props */\nconst FiSelect = Select as unknown as React.ComponentType<Record<string, unknown>>;\nconst FiInput = Input as unknown as React.ComponentType<Record<string, unknown>>;\nconst FiInputNumber = InputNumber as unknown as React.ComponentType<Record<string, unknown>>;\n\nexport type PushRulesPanelProps = {\n crud: MessageCrudFlags;\n catalog: MessageEventCatalogItem[];\n templates: MessageTemplateAdminItem[];\n roleOptions: MessageAudienceRoleOption[];\n fetchPushRules: () => Promise<PushRuleAdminItem[]>;\n savePushRule: (item: PushRuleAdminItem) => Promise<void>;\n setPushRuleEnabled?: (item: PushRuleAdminItem, enabled: boolean) => Promise<void>;\n deletePushRule?: (item: PushRuleAdminItem) => Promise<void>;\n createNonce?: number;\n};\n\ntype FormShape = {\n label?: string;\n eventKey?: string;\n templateCode?: string;\n levels?: string[];\n audienceRoles?: string[];\n slaHours?: number;\n scanLookbackDays?: number;\n};\n\n/**\n * 推送规则 CRUD:必含 eventKey + templateCode;channels 默认 in_app。\n */\nexport const PushRulesPanel: React.FC<PushRulesPanelProps> = ({\n crud,\n catalog,\n templates,\n roleOptions,\n fetchPushRules,\n savePushRule,\n setPushRuleEnabled,\n deletePushRule,\n createNonce = 0,\n}) => {\n const canCreate = crud.create;\n const canUpdate = crud.update;\n const canDelete = crud.delete;\n const canRead = crud.read;\n const formWritable = (creating: boolean) => (creating ? canCreate : canUpdate);\n\n const [rows, setRows] = useState<PushRuleAdminItem[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [editing, setEditing] = useState<PushRuleAdminItem | null>(null);\n const [isCreate, setIsCreate] = useState(false);\n\n const reload = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const list = await fetchPushRules();\n setRows(Array.isArray(list) ? list : []);\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n setRows([]);\n } finally {\n setLoading(false);\n }\n }, [fetchPushRules]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n useEffect(() => {\n if (!createNonce || !canCreate) return;\n const first = catalog[0];\n const tplForEvent = templates.find((t) => t.eventKey === first?.eventKey);\n setIsCreate(true);\n setEditing({\n label: first?.label || '新建推送规则',\n eventKey: first?.eventKey || '',\n templateCode: tplForEvent?.code || '',\n levels: ['L2'],\n audienceRoles: [],\n channels: ['in_app'],\n slaHours: 36,\n scanLookbackDays: 7,\n enabled: true,\n });\n }, [createNonce, canCreate, catalog, templates]);\n\n const templatesForEvent = useCallback(\n (eventKey?: string) =>\n templates\n .filter((t) => !eventKey || t.eventKey === eventKey)\n .map((t) => ({\n value: String(t.code || ''),\n label: `${t.label || t.code || ''}(${t.code || ''})`,\n }))\n .filter((o) => o.value),\n [templates],\n );\n\n const formData = useMemo(\n () => ({\n label: editing?.label,\n eventKey: editing?.eventKey,\n templateCode: editing?.templateCode,\n levels: editing?.levels || [],\n audienceRoles: editing?.audienceRoles || [],\n slaHours: editing?.slaHours ?? 0,\n scanLookbackDays: editing?.scanLookbackDays ?? 0,\n }),\n [editing],\n );\n\n const formProps = useMemo(\n () => ({\n data: formData,\n onSubmit: async (data: FormShape) => {\n if (!formWritable(isCreate) || !editing) {\n message.warning('当前为只读');\n return false;\n }\n const eventKey = String(editing.eventKey || data.eventKey || '').trim();\n const templateCode = String(data.templateCode || '').trim();\n if (!eventKey) {\n message.warning('请选择事件');\n return false;\n }\n if (!templateCode) {\n message.warning('请关联模板编号');\n return false;\n }\n try {\n await savePushRule({\n ...editing,\n label: String(data.label || editing.label || '').trim() || eventKey,\n eventKey,\n templateCode,\n levels: data.levels || [],\n audienceRoles: data.audienceRoles || [],\n channels: ['in_app'],\n slaHours: Number(data.slaHours ?? 0),\n scanLookbackDays: Number(data.scanLookbackDays ?? 0),\n enabled: isCreate ? true : editing.enabled !== false,\n });\n message.success('已保存');\n setEditing(null);\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n return false;\n }\n },\n }),\n [canCreate, canUpdate, editing, formData, isCreate, reload, savePushRule],\n );\n\n const columns = useMemo(\n () => [\n { title: '名称', dataIndex: 'label', key: 'label', ellipsis: true },\n {\n title: '事件',\n dataIndex: 'eventKey',\n key: 'eventKey',\n render: (v: string) => catalog.find((c) => c.eventKey === v)?.label || v || '—',\n },\n { title: '关联模板', dataIndex: 'templateCode', key: 'templateCode', width: 140 },\n {\n title: '级别',\n dataIndex: 'levels',\n key: 'levels',\n width: 100,\n render: (lv: string[] | undefined) => (lv || []).join(',') || '—',\n },\n {\n title: '启用',\n dataIndex: 'enabled',\n key: 'enabled',\n width: 80,\n render: (_: unknown, r: PushRuleAdminItem) => (\n <Switch\n size=\"small\"\n checked={r.enabled !== false}\n disabled={!canUpdate || !setPushRuleEnabled}\n onChange={(checked) => {\n void (async () => {\n try {\n await setPushRuleEnabled?.(r, checked);\n message.success(checked ? '已启用' : '已停用');\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n }\n })();\n }}\n />\n ),\n },\n {\n title: '操作',\n key: 'actions',\n width: 140,\n render: (_: unknown, r: PushRuleAdminItem) => (\n <Space size={4}>\n <Button\n type=\"link\"\n size=\"small\"\n disabled={!canUpdate}\n onClick={() => {\n setIsCreate(false);\n setEditing({ ...r });\n }}\n >\n 编辑\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n disabled={!canDelete || !deletePushRule}\n onClick={() => {\n void (async () => {\n try {\n await deletePushRule?.(r);\n message.success('已删除');\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n }\n })();\n }}\n >\n 删除\n </Button>\n </Space>\n ),\n },\n ],\n [canUpdate, canDelete, catalog, deletePushRule, reload, setPushRuleEnabled],\n );\n\n return (\n <div className={styles.pane}>\n {error ? <Alert type=\"error\" showIcon message={error} style={{ marginBottom: 12 }} /> : null}\n <PageSpin spinning={loading}>\n {!canRead ? (\n <Empty description=\"无推送规则读取权限\" />\n ) : rows.length === 0 && !loading ? (\n <Empty description=\"暂无推送规则\" />\n ) : (\n <Table<PushRuleAdminItem>\n rowKey={(r) => r.id || r.code || `${r.eventKey}-${r.templateCode}`}\n tableName=\"msg-center-push-rules\"\n columnConfigEnabled={false}\n columnResizeEnabled={false}\n columns={columns}\n dataSource={rows}\n pagination={false}\n size=\"small\"\n />\n )}\n </PageSpin>\n <FormModal\n title={isCreate ? '新建推送规则' : '编辑推送规则'}\n open={Boolean(editing)}\n onCancel={() => setEditing(null)}\n width={560}\n okText=\"保存\"\n autoClose={false}\n formProps={formProps}\n >\n {/* 事件用 antd Select:FormInfo Select + onChange 在 CI tsc 下与 kne 重载冲突 */}\n <div style={{ marginBottom: 16 }}>\n <div style={{ marginBottom: 8 }}>事件</div>\n <AntSelect\n style={{ width: '100%' }}\n disabled={!canUpdate}\n value={editing?.eventKey || undefined}\n options={catalog.map((c) => ({\n value: c.eventKey,\n label: c.label || c.eventKey,\n }))}\n onChange={(ek) => {\n const next = String(ek || '');\n const opts = templatesForEvent(next);\n setEditing((prev) =>\n prev\n ? {\n ...prev,\n eventKey: next,\n templateCode: resolveTemplateCodeAfterEventChange(prev.templateCode, opts),\n label: catalog.find((c) => c.eventKey === next)?.label || prev.label,\n }\n : prev,\n );\n }}\n showSearch\n optionFilterProp=\"label\"\n />\n </div>\n <FormInfo\n column={1}\n list={[\n <FiInput\n key=\"label\"\n name=\"label\"\n label=\"名称\"\n rule=\"REQ\"\n disabled={!formWritable(isCreate)}\n />,\n <FiSelect\n key={`tpl-${editing?.eventKey || ''}`}\n name=\"templateCode\"\n label=\"关联模板\"\n rule=\"REQ\"\n disabled={!canUpdate}\n options={templatesForEvent(editing?.eventKey)}\n showSearch\n optionFilterProp=\"label\"\n />,\n <FiSelect\n key=\"levels\"\n name=\"levels\"\n label=\"级别\"\n mode=\"multiple\"\n disabled={!canUpdate}\n options={['L1', 'L2', 'L3'].map((x) => ({ value: x, label: x }))}\n />,\n <FiSelect\n key=\"audienceRoles\"\n name=\"audienceRoles\"\n label=\"受众角色\"\n mode=\"multiple\"\n disabled={!canUpdate}\n options={roleOptions.map((r) => ({ value: r.code, label: r.name || r.code }))}\n optionFilterProp=\"label\"\n />,\n <FiInputNumber\n key=\"slaHours\"\n name=\"slaHours\"\n label=\"SLA(小时)\"\n disabled={!canUpdate}\n min={0}\n style={{ width: '100%' }}\n />,\n <FiInputNumber\n key=\"scanLookbackDays\"\n name=\"scanLookbackDays\"\n label=\"回看(天)\"\n disabled={!canUpdate}\n min={0}\n style={{ width: '100%' }}\n />,\n ]}\n />\n </FormModal>\n </div>\n );\n};\n\nexport default PushRulesPanel;\n"],"names":["FiSelect","Select","FiInput","Input","FiInputNumber","InputNumber","PushRulesPanel","crud","catalog","templates","roleOptions","fetchPushRules","savePushRule","setPushRuleEnabled","deletePushRule","createNonce","canCreate","canUpdate","canDelete","canRead","formWritable","creating","rows","setRows","useState","loading","setLoading","error","setError","editing","setEditing","isCreate","setIsCreate","reload","useCallback","list","useEffect","first","tplForEvent","templatesForEvent","eventKey","t","o","formData","useMemo","formProps","data","message","templateCode","e","columns","v","_a","c","lv","_","r","jsx","Switch","checked","jsxs","Space","Button","styles","Alert","PageSpin","Empty","Table","FormModal","AntSelect","ek","next","opts","prev","resolveTemplateCodeAfterEventChange","FormInfo","x"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { MessageCrudFlags, MessageTemplateVariableAdmin } from '../types';
|
|
3
|
+
export type VariablesPanelProps = {
|
|
4
|
+
crud: MessageCrudFlags;
|
|
5
|
+
fetchVariables: () => Promise<MessageTemplateVariableAdmin[]>;
|
|
6
|
+
saveVariable: (item: MessageTemplateVariableAdmin) => Promise<void>;
|
|
7
|
+
deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;
|
|
8
|
+
createNonce?: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* 租户变量管理:可增改;基线 key 不可删(source=catalog 或 baseline)。
|
|
12
|
+
*/
|
|
13
|
+
export declare const VariablesPanel: React.FC<VariablesPanelProps>;
|
|
14
|
+
export default VariablesPanel;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { jsx as a, jsxs as F } from "react/jsx-runtime";
|
|
2
|
+
import { message as i, Tag as j, Space as _, Button as B } from "antd";
|
|
3
|
+
import { useState as c, useCallback as K, useEffect as M, useMemo as f } from "react";
|
|
4
|
+
import { canDeleteTenantVariable as L } from "../../utils/adminGuards.js";
|
|
5
|
+
import N from "../style.module.scss.js";
|
|
6
|
+
import Q from "../../../../Alert/Alert.js";
|
|
7
|
+
import U from "../../../../Layout/PageSpin/index.js";
|
|
8
|
+
import R from "../../../../Empty/Empty.js";
|
|
9
|
+
import W from "../../../../Table/Table.js";
|
|
10
|
+
import q from "../../../../FormInfo/FormModal.js";
|
|
11
|
+
import G from "../../../../FormInfo/FormInfo.js";
|
|
12
|
+
import { Input as H, Select as J } from "../../../../FormInfo/fields.js";
|
|
13
|
+
const O = J, T = H, le = ({
|
|
14
|
+
crud: m,
|
|
15
|
+
fetchVariables: k,
|
|
16
|
+
saveVariable: b,
|
|
17
|
+
deleteVariable: l,
|
|
18
|
+
createNonce: g = 0
|
|
19
|
+
}) => {
|
|
20
|
+
const y = m.create, p = m.update, h = m.delete, A = m.read, u = (t) => t ? y : p, [w, S] = c([]), [E, C] = c(!1), [I, x] = c(""), [e, d] = c(null), [r, v] = c(!1), o = K(async () => {
|
|
21
|
+
C(!0), x("");
|
|
22
|
+
try {
|
|
23
|
+
const t = await k();
|
|
24
|
+
S(Array.isArray(t) ? t : []);
|
|
25
|
+
} catch (t) {
|
|
26
|
+
x(t instanceof Error ? t.message : String(t)), S([]);
|
|
27
|
+
} finally {
|
|
28
|
+
C(!1);
|
|
29
|
+
}
|
|
30
|
+
}, [k]);
|
|
31
|
+
M(() => {
|
|
32
|
+
o();
|
|
33
|
+
}, [o]), M(() => {
|
|
34
|
+
!g || !y || (v(!0), d({ key: "", label: "", type: "string", source: "tenant" }));
|
|
35
|
+
}, [g, y]);
|
|
36
|
+
const z = f(
|
|
37
|
+
() => ({
|
|
38
|
+
key: e == null ? void 0 : e.key,
|
|
39
|
+
label: e == null ? void 0 : e.label,
|
|
40
|
+
type: (e == null ? void 0 : e.type) || "string"
|
|
41
|
+
}),
|
|
42
|
+
[e]
|
|
43
|
+
), D = f(
|
|
44
|
+
() => ({
|
|
45
|
+
data: z,
|
|
46
|
+
onSubmit: async (t) => {
|
|
47
|
+
if (!u(r) || !e) return !1;
|
|
48
|
+
const n = String(t.key || e.key || "").trim();
|
|
49
|
+
if (!n)
|
|
50
|
+
return i.warning("请填写变量 key"), !1;
|
|
51
|
+
try {
|
|
52
|
+
await b({
|
|
53
|
+
...e,
|
|
54
|
+
key: n,
|
|
55
|
+
label: String(t.label || "").trim(),
|
|
56
|
+
type: String(t.type || "string"),
|
|
57
|
+
source: "tenant"
|
|
58
|
+
}), i.success("已保存"), d(null), await o();
|
|
59
|
+
} catch (s) {
|
|
60
|
+
return i.error(s instanceof Error ? s.message : String(s)), !1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}),
|
|
64
|
+
[y, p, e, z, r, o, b]
|
|
65
|
+
), P = f(
|
|
66
|
+
() => [
|
|
67
|
+
{ title: "key", dataIndex: "key", key: "key", width: 140 },
|
|
68
|
+
{ title: "中文", dataIndex: "label", key: "label", ellipsis: !0 },
|
|
69
|
+
{ title: "类型", dataIndex: "type", key: "type", width: 90 },
|
|
70
|
+
{
|
|
71
|
+
title: "来源",
|
|
72
|
+
dataIndex: "source",
|
|
73
|
+
key: "source",
|
|
74
|
+
width: 100,
|
|
75
|
+
render: (t, n) => /* @__PURE__ */ a(j, { children: n.source === "tenant" ? n.baseline ? "覆盖基线" : "租户" : "基线" })
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
title: "操作",
|
|
79
|
+
key: "actions",
|
|
80
|
+
width: 140,
|
|
81
|
+
render: (t, n) => /* @__PURE__ */ F(_, { size: 4, children: [
|
|
82
|
+
/* @__PURE__ */ a(
|
|
83
|
+
B,
|
|
84
|
+
{
|
|
85
|
+
type: "link",
|
|
86
|
+
size: "small",
|
|
87
|
+
disabled: !p,
|
|
88
|
+
onClick: () => {
|
|
89
|
+
v(!1), d({ ...n });
|
|
90
|
+
},
|
|
91
|
+
children: "编辑"
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
/* @__PURE__ */ a(
|
|
95
|
+
B,
|
|
96
|
+
{
|
|
97
|
+
type: "link",
|
|
98
|
+
size: "small",
|
|
99
|
+
danger: !0,
|
|
100
|
+
disabled: !h || !l || !L(n),
|
|
101
|
+
onClick: () => {
|
|
102
|
+
(async () => {
|
|
103
|
+
try {
|
|
104
|
+
await (l == null ? void 0 : l(n)), i.success("已删除"), await o();
|
|
105
|
+
} catch (s) {
|
|
106
|
+
i.error(s instanceof Error ? s.message : String(s));
|
|
107
|
+
}
|
|
108
|
+
})();
|
|
109
|
+
},
|
|
110
|
+
children: "删除"
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
] })
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
[p, h, l, o]
|
|
117
|
+
);
|
|
118
|
+
return /* @__PURE__ */ F("div", { className: N.pane, children: [
|
|
119
|
+
I ? /* @__PURE__ */ a(Q, { type: "error", showIcon: !0, message: I, style: { marginBottom: 12 } }) : null,
|
|
120
|
+
/* @__PURE__ */ a(U, { spinning: E, children: A ? w.length === 0 && !E ? /* @__PURE__ */ a(R, { description: "暂无变量。基线来自 catalog;可新建租户变量。catalog 为空时模板「插入变量」不可用。" }) : /* @__PURE__ */ a(
|
|
121
|
+
W,
|
|
122
|
+
{
|
|
123
|
+
rowKey: (t) => t.key,
|
|
124
|
+
tableName: "msg-center-variables",
|
|
125
|
+
columnConfigEnabled: !1,
|
|
126
|
+
columnResizeEnabled: !1,
|
|
127
|
+
columns: P,
|
|
128
|
+
dataSource: w,
|
|
129
|
+
pagination: !1,
|
|
130
|
+
size: "small"
|
|
131
|
+
}
|
|
132
|
+
) : /* @__PURE__ */ a(R, { description: "无消息变量读取权限" }) }),
|
|
133
|
+
/* @__PURE__ */ a(
|
|
134
|
+
q,
|
|
135
|
+
{
|
|
136
|
+
title: r ? "新建变量" : "编辑变量",
|
|
137
|
+
open: !!e,
|
|
138
|
+
onCancel: () => d(null),
|
|
139
|
+
width: 480,
|
|
140
|
+
okText: "保存",
|
|
141
|
+
autoClose: !1,
|
|
142
|
+
formProps: D,
|
|
143
|
+
children: /* @__PURE__ */ a(
|
|
144
|
+
G,
|
|
145
|
+
{
|
|
146
|
+
column: 1,
|
|
147
|
+
list: [
|
|
148
|
+
/* @__PURE__ */ a(
|
|
149
|
+
T,
|
|
150
|
+
{
|
|
151
|
+
name: "key",
|
|
152
|
+
label: "key",
|
|
153
|
+
rule: "REQ",
|
|
154
|
+
disabled: !u(r) || !r && !!(e != null && e.key),
|
|
155
|
+
placeholder: "如 customField"
|
|
156
|
+
},
|
|
157
|
+
"key"
|
|
158
|
+
),
|
|
159
|
+
/* @__PURE__ */ a(T, { name: "label", label: "中文名", disabled: !u(r) }, "label"),
|
|
160
|
+
/* @__PURE__ */ a(
|
|
161
|
+
O,
|
|
162
|
+
{
|
|
163
|
+
name: "type",
|
|
164
|
+
label: "类型",
|
|
165
|
+
disabled: !u(r),
|
|
166
|
+
options: [
|
|
167
|
+
{ value: "string", label: "string" },
|
|
168
|
+
{ value: "number", label: "number" }
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
"type"
|
|
172
|
+
)
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
)
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
] });
|
|
179
|
+
};
|
|
180
|
+
export {
|
|
181
|
+
le as VariablesPanel
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.tsx"],"sourcesContent":["import { FormInfo, FormModal, Input, Select } from '@/components/FormInfo';\nimport { Alert } from '@/components/Alert';\nimport { Empty } from '@/components/Empty';\nimport { PageSpin } from '@/components/Layout';\nimport { Table } from '@/components/Table';\nimport { Button, Space, Tag, message } from 'antd';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { MessageCrudFlags, MessageTemplateVariableAdmin } from '../types';\nimport { canDeleteTenantVariable } from '../../utils/adminGuards';\nimport styles from '../style.module.scss';\n\n/** CI tsc:kne Field 重载误匹配 FormItem children */\nconst FiSelect = Select as unknown as React.ComponentType<Record<string, unknown>>;\nconst FiInput = Input as unknown as React.ComponentType<Record<string, unknown>>;\n\nexport type VariablesPanelProps = {\n crud: MessageCrudFlags;\n fetchVariables: () => Promise<MessageTemplateVariableAdmin[]>;\n saveVariable: (item: MessageTemplateVariableAdmin) => Promise<void>;\n deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;\n createNonce?: number;\n};\n\ntype FormShape = { key?: string; label?: string; type?: string };\n\n/**\n * 租户变量管理:可增改;基线 key 不可删(source=catalog 或 baseline)。\n */\nexport const VariablesPanel: React.FC<VariablesPanelProps> = ({\n crud,\n fetchVariables,\n saveVariable,\n deleteVariable,\n createNonce = 0,\n}) => {\n const canCreate = crud.create;\n const canUpdate = crud.update;\n const canDelete = crud.delete;\n const canRead = crud.read;\n const formWritable = (creating: boolean) => (creating ? canCreate : canUpdate);\n\n const [rows, setRows] = useState<MessageTemplateVariableAdmin[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [editing, setEditing] = useState<MessageTemplateVariableAdmin | null>(null);\n const [isCreate, setIsCreate] = useState(false);\n\n const reload = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const list = await fetchVariables();\n setRows(Array.isArray(list) ? list : []);\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n setRows([]);\n } finally {\n setLoading(false);\n }\n }, [fetchVariables]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n useEffect(() => {\n if (!createNonce || !canCreate) return;\n setIsCreate(true);\n setEditing({ key: '', label: '', type: 'string', source: 'tenant' });\n }, [createNonce, canCreate]);\n\n const formData = useMemo(\n () => ({\n key: editing?.key,\n label: editing?.label,\n type: editing?.type || 'string',\n }),\n [editing],\n );\n\n const formProps = useMemo(\n () => ({\n data: formData,\n onSubmit: async (data: FormShape) => {\n if (!formWritable(isCreate) || !editing) return false;\n const key = String(data.key || editing.key || '').trim();\n if (!key) {\n message.warning('请填写变量 key');\n return false;\n }\n try {\n await saveVariable({\n ...editing,\n key,\n label: String(data.label || '').trim(),\n type: String(data.type || 'string'),\n source: 'tenant',\n });\n message.success('已保存');\n setEditing(null);\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n return false;\n }\n },\n }),\n [canCreate, canUpdate, editing, formData, isCreate, reload, saveVariable],\n );\n\n const columns = useMemo(\n () => [\n { title: 'key', dataIndex: 'key', key: 'key', width: 140 },\n { title: '中文', dataIndex: 'label', key: 'label', ellipsis: true },\n { title: '类型', dataIndex: 'type', key: 'type', width: 90 },\n {\n title: '来源',\n dataIndex: 'source',\n key: 'source',\n width: 100,\n render: (_: unknown, r: MessageTemplateVariableAdmin) => (\n <Tag>{r.source === 'tenant' ? (r.baseline ? '覆盖基线' : '租户') : '基线'}</Tag>\n ),\n },\n {\n title: '操作',\n key: 'actions',\n width: 140,\n render: (_: unknown, r: MessageTemplateVariableAdmin) => (\n <Space size={4}>\n <Button\n type=\"link\"\n size=\"small\"\n disabled={!canUpdate}\n onClick={() => {\n setIsCreate(false);\n setEditing({ ...r });\n }}\n >\n 编辑\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n disabled={!canDelete || !deleteVariable || !canDeleteTenantVariable(r)}\n onClick={() => {\n void (async () => {\n try {\n await deleteVariable?.(r);\n message.success('已删除');\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n }\n })();\n }}\n >\n 删除\n </Button>\n </Space>\n ),\n },\n ],\n [canUpdate, canDelete, deleteVariable, reload],\n );\n\n return (\n <div className={styles.pane}>\n {error ? <Alert type=\"error\" showIcon message={error} style={{ marginBottom: 12 }} /> : null}\n <PageSpin spinning={loading}>\n {!canRead ? (\n <Empty description=\"无消息变量读取权限\" />\n ) : rows.length === 0 && !loading ? (\n <Empty description=\"暂无变量。基线来自 catalog;可新建租户变量。catalog 为空时模板「插入变量」不可用。\" />\n ) : (\n <Table<MessageTemplateVariableAdmin>\n rowKey={(r) => r.key}\n tableName=\"msg-center-variables\"\n columnConfigEnabled={false}\n columnResizeEnabled={false}\n columns={columns}\n dataSource={rows}\n pagination={false}\n size=\"small\"\n />\n )}\n </PageSpin>\n <FormModal\n title={isCreate ? '新建变量' : '编辑变量'}\n open={Boolean(editing)}\n onCancel={() => setEditing(null)}\n width={480}\n okText=\"保存\"\n autoClose={false}\n formProps={formProps}\n >\n <FormInfo\n column={1}\n list={[\n <FiInput\n key=\"key\"\n name=\"key\"\n label=\"key\"\n rule=\"REQ\"\n disabled={!formWritable(isCreate) || (!isCreate && Boolean(editing?.key))}\n placeholder=\"如 customField\"\n />,\n <FiInput key=\"label\" name=\"label\" label=\"中文名\" disabled={!formWritable(isCreate)} />,\n <FiSelect\n key=\"type\"\n name=\"type\"\n label=\"类型\"\n disabled={!formWritable(isCreate)}\n options={[\n { value: 'string', label: 'string' },\n { value: 'number', label: 'number' },\n ]}\n />,\n ]}\n />\n </FormModal>\n </div>\n );\n};\n\nexport default VariablesPanel;\n"],"names":["FiSelect","Select","FiInput","Input","VariablesPanel","crud","fetchVariables","saveVariable","deleteVariable","createNonce","canCreate","canUpdate","canDelete","canRead","formWritable","creating","rows","setRows","useState","loading","setLoading","error","setError","editing","setEditing","isCreate","setIsCreate","reload","useCallback","list","e","useEffect","formData","useMemo","formProps","data","key","message","columns","_","r","jsx","Tag","jsxs","Space","Button","canDeleteTenantVariable","styles","Alert","PageSpin","Empty","Table","FormModal","FormInfo"],"mappings":";;;;;;;;;;;;AAYA,MAAMA,IAAWC,GACXC,IAAUC,GAeHC,KAAgD,CAAC;AAAA,EAC5D,MAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,aAAAC,IAAc;AAChB,MAAM;AACJ,QAAMC,IAAYL,EAAK,QACjBM,IAAYN,EAAK,QACjBO,IAAYP,EAAK,QACjBQ,IAAUR,EAAK,MACfS,IAAe,CAACC,MAAuBA,IAAWL,IAAYC,GAE9D,CAACK,GAAMC,CAAO,IAAIC,EAAyC,CAAA,CAAE,GAC7D,CAACC,GAASC,CAAU,IAAIF,EAAS,EAAK,GACtC,CAACG,GAAOC,CAAQ,IAAIJ,EAAS,EAAE,GAC/B,CAACK,GAASC,CAAU,IAAIN,EAA8C,IAAI,GAC1E,CAACO,GAAUC,CAAW,IAAIR,EAAS,EAAK,GAExCS,IAASC,EAAY,YAAY;AACrC,IAAAR,EAAW,EAAI,GACfE,EAAS,EAAE;AACX,QAAI;AACF,YAAMO,IAAO,MAAMvB,EAAA;AACnB,MAAAW,EAAQ,MAAM,QAAQY,CAAI,IAAIA,IAAO,CAAA,CAAE;AAAA,IACzC,SAASC,GAAG;AACV,MAAAR,EAASQ,aAAa,QAAQA,EAAE,UAAU,OAAOA,CAAC,CAAC,GACnDb,EAAQ,CAAA,CAAE;AAAA,IACZ,UAAA;AACE,MAAAG,EAAW,EAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAACd,CAAc,CAAC;AAEnB,EAAAyB,EAAU,MAAM;AACd,IAAKJ,EAAA;AAAA,EACP,GAAG,CAACA,CAAM,CAAC,GAEXI,EAAU,MAAM;AACd,IAAI,CAACtB,KAAe,CAACC,MACrBgB,EAAY,EAAI,GAChBF,EAAW,EAAE,KAAK,IAAI,OAAO,IAAI,MAAM,UAAU,QAAQ,UAAU;AAAA,EACrE,GAAG,CAACf,GAAaC,CAAS,CAAC;AAE3B,QAAMsB,IAAWC;AAAA,IACf,OAAO;AAAA,MACL,KAAKV,KAAA,gBAAAA,EAAS;AAAA,MACd,OAAOA,KAAA,gBAAAA,EAAS;AAAA,MAChB,OAAMA,KAAA,gBAAAA,EAAS,SAAQ;AAAA,IAAA;AAAA,IAEzB,CAACA,CAAO;AAAA,EAAA,GAGJW,IAAYD;AAAA,IAChB,OAAO;AAAA,MACL,MAAMD;AAAA,MACN,UAAU,OAAOG,MAAoB;AACnC,YAAI,CAACrB,EAAaW,CAAQ,KAAK,CAACF,EAAS,QAAO;AAChD,cAAMa,IAAM,OAAOD,EAAK,OAAOZ,EAAQ,OAAO,EAAE,EAAE,KAAA;AAClD,YAAI,CAACa;AACH,iBAAAC,EAAQ,QAAQ,WAAW,GACpB;AAET,YAAI;AACF,gBAAM9B,EAAa;AAAA,YACjB,GAAGgB;AAAA,YACH,KAAAa;AAAA,YACA,OAAO,OAAOD,EAAK,SAAS,EAAE,EAAE,KAAA;AAAA,YAChC,MAAM,OAAOA,EAAK,QAAQ,QAAQ;AAAA,YAClC,QAAQ;AAAA,UAAA,CACT,GACDE,EAAQ,QAAQ,KAAK,GACrBb,EAAW,IAAI,GACf,MAAMG,EAAA;AAAA,QACR,SAASG,GAAG;AACV,iBAAAO,EAAQ,MAAMP,aAAa,QAAQA,EAAE,UAAU,OAAOA,CAAC,CAAC,GACjD;AAAA,QACT;AAAA,MACF;AAAA,IAAA;AAAA,IAEF,CAACpB,GAAWC,GAAWY,GAASS,GAAUP,GAAUE,GAAQpB,CAAY;AAAA,EAAA,GAGpE+B,IAAUL;AAAA,IACd,MAAM;AAAA,MACJ,EAAE,OAAO,OAAO,WAAW,OAAO,KAAK,OAAO,OAAO,IAAA;AAAA,MACrD,EAAE,OAAO,MAAM,WAAW,SAAS,KAAK,SAAS,UAAU,GAAA;AAAA,MAC3D,EAAE,OAAO,MAAM,WAAW,QAAQ,KAAK,QAAQ,OAAO,GAAA;AAAA,MACtD;AAAA,QACE,OAAO;AAAA,QACP,WAAW;AAAA,QACX,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAACM,GAAYC,MACnB,gBAAAC,EAACC,GAAA,EAAK,UAAAF,EAAE,WAAW,WAAYA,EAAE,WAAW,SAAS,OAAQ,KAAA,CAAK;AAAA,MAAA;AAAA,MAGtE;AAAA,QACE,OAAO;AAAA,QACP,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAACD,GAAYC,MACnB,gBAAAG,EAACC,GAAA,EAAM,MAAM,GACX,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,UAAU,CAAClC;AAAA,cACX,SAAS,MAAM;AACb,gBAAAe,EAAY,EAAK,GACjBF,EAAW,EAAE,GAAGgB,GAAG;AAAA,cACrB;AAAA,cACD,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGD,gBAAAC;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,QAAM;AAAA,cACN,UAAU,CAACjC,KAAa,CAACJ,KAAkB,CAACsC,EAAwBN,CAAC;AAAA,cACrE,SAAS,MAAM;AACb,iBAAM,YAAY;AAChB,sBAAI;AACF,2BAAMhC,KAAA,gBAAAA,EAAiBgC,KACvBH,EAAQ,QAAQ,KAAK,GACrB,MAAMV,EAAA;AAAA,kBACR,SAASG,GAAG;AACV,oBAAAO,EAAQ,MAAMP,aAAa,QAAQA,EAAE,UAAU,OAAOA,CAAC,CAAC;AAAA,kBAC1D;AAAA,gBACF,GAAA;AAAA,cACF;AAAA,cACD,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF;AAAA,MAAA;AAAA,IAEJ;AAAA,IAEF,CAACnB,GAAWC,GAAWJ,GAAgBmB,CAAM;AAAA,EAAA;AAG/C,SACE,gBAAAgB,EAAC,OAAA,EAAI,WAAWI,EAAO,MACpB,UAAA;AAAA,IAAA1B,IAAQ,gBAAAoB,EAACO,GAAA,EAAM,MAAK,SAAQ,UAAQ,IAAC,SAAS3B,GAAO,OAAO,EAAE,cAAc,GAAA,GAAM,IAAK;AAAA,IACxF,gBAAAoB,EAACQ,KAAS,UAAU9B,GACjB,UAACN,IAEEG,EAAK,WAAW,KAAK,CAACG,sBACvB+B,GAAA,EAAM,aAAY,qDAAoD,IAEvE,gBAAAT;AAAA,MAACU;AAAA,MAAA;AAAA,QACC,QAAQ,CAACX,MAAMA,EAAE;AAAA,QACjB,WAAU;AAAA,QACV,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,SAAAF;AAAA,QACA,YAAYtB;AAAA,QACZ,YAAY;AAAA,QACZ,MAAK;AAAA,MAAA;AAAA,IAAA,IAZP,gBAAAyB,EAACS,KAAM,aAAY,aAAY,GAenC;AAAA,IACA,gBAAAT;AAAA,MAACW;AAAA,MAAA;AAAA,QACC,OAAO3B,IAAW,SAAS;AAAA,QAC3B,MAAM,EAAQF;AAAA,QACd,UAAU,MAAMC,EAAW,IAAI;AAAA,QAC/B,OAAO;AAAA,QACP,QAAO;AAAA,QACP,WAAW;AAAA,QACX,WAAAU;AAAA,QAEA,UAAA,gBAAAO;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,QAAQ;AAAA,YACR,MAAM;AAAA,cACJ,gBAAAZ;AAAA,gBAACvC;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,UAAU,CAACY,EAAaW,CAAQ,KAAM,CAACA,KAAY,GAAQF,KAAA,QAAAA,EAAS;AAAA,kBACpE,aAAY;AAAA,gBAAA;AAAA,gBALR;AAAA,cAAA;AAAA,cAON,gBAAAkB,EAACvC,GAAA,EAAoB,MAAK,SAAQ,OAAM,OAAM,UAAU,CAACY,EAAaW,CAAQ,EAAA,GAAjE,OAAoE;AAAA,cACjF,gBAAAgB;AAAA,gBAACzC;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,UAAU,CAACc,EAAaW,CAAQ;AAAA,kBAChC,SAAS;AAAA,oBACP,EAAE,OAAO,UAAU,OAAO,SAAA;AAAA,oBAC1B,EAAE,OAAO,UAAU,OAAO,SAAA;AAAA,kBAAS;AAAA,gBACrC;AAAA,gBAPI;AAAA,cAAA;AAAA,YAQN;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { MessageTemplateAdmin } from './MessageTemplateAdmin';
|
|
2
|
-
export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, } from './types';
|
|
3
|
-
export { variablesFromCatalog, previewVarsFromVariables } from './types';
|
|
2
|
+
export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, MessageCrudFlags, MessageAdminPermissions, } from './types';
|
|
3
|
+
export { variablesFromCatalog, previewVarsFromVariables, resolveMessageAdminPermissions, } from './types';
|