@hkyhy/marsun-components-core 0.1.102 → 0.1.113

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 (37) hide show
  1. package/dist/components/Filter/createKneFilterField.js +42 -39
  2. package/dist/components/Filter/createKneFilterField.js.map +1 -1
  3. package/dist/components/Form/SuperSelect.js +48 -45
  4. package/dist/components/Form/SuperSelect.js.map +1 -1
  5. package/dist/components/ReactFilter/fields/index.js +33 -26
  6. package/dist/components/ReactFilter/fields/index.js.map +1 -1
  7. package/dist/components/ReactFilter/renderSelectListItemContent.d.ts +8 -0
  8. package/dist/components/ReactFilter/renderSelectListItemContent.js +12 -0
  9. package/dist/components/ReactFilter/renderSelectListItemContent.js.map +1 -0
  10. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.d.ts +1 -1
  11. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +158 -137
  12. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -1
  13. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js +218 -126
  14. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js.map +1 -1
  15. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.d.ts +8 -1
  16. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js +310 -170
  17. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js.map +1 -1
  18. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js +87 -76
  19. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js.map +1 -1
  20. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/audienceSlots.d.ts +14 -0
  21. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/audienceSlots.js +31 -0
  22. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/audienceSlots.js.map +1 -0
  23. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +3 -1
  24. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js +18 -6
  25. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js.map +1 -1
  26. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +27 -0
  27. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -1
  28. package/dist/components/Tools/MessageCenter/index.d.ts +3 -1
  29. package/dist/components/Tools/MessageCenter/utils/audienceUserSelectOptions.d.ts +16 -0
  30. package/dist/components/Tools/MessageCenter/utils/audienceUserSelectOptions.js +33 -0
  31. package/dist/components/Tools/MessageCenter/utils/audienceUserSelectOptions.js.map +1 -0
  32. package/dist/components/Tools/MessageCenter/utils/templateCode.js +11 -17
  33. package/dist/components/Tools/MessageCenter/utils/templateCode.js.map +1 -1
  34. package/dist/components/Tools/index.d.ts +1 -1
  35. package/dist/marsun-components-core.css +1 -1
  36. package/dist/styles/global.css +1 -1
  37. package/package.json +8 -1
@@ -28,6 +28,8 @@ export type MessageTemplateAdminItem = {
28
28
  bodyTemplate?: string;
29
29
  audienceRoles?: string[];
30
30
  roles?: string[];
31
+ /** 受众槽位码(与 mc audienceSlots 对齐) */
32
+ audienceSlots?: string[];
31
33
  enabled?: boolean;
32
34
  channel?: string;
33
35
  };
@@ -45,6 +47,11 @@ export type MessageEventCatalogPayload = {
45
47
  label?: string;
46
48
  }>;
47
49
  variables?: MessageTemplateVariable[];
50
+ /** 受众槽位 options(与 core AUDIENCE_SLOT_OPTIONS 对齐;有则优先) */
51
+ audienceSlotOptions?: {
52
+ value: string;
53
+ label: string;
54
+ }[];
48
55
  };
49
56
  export type MessageAudienceRoleOption = {
50
57
  /** 写入模板的角色码 */
@@ -52,6 +59,18 @@ export type MessageAudienceRoleOption = {
52
59
  /** 展示名(来自 SSO / fixture) */
53
60
  name: string;
54
61
  };
62
+ /** 推送规则例外抄送选项(SSO 本租户用户;展示名取自接口) */
63
+ export type MessageAudienceUserOption = {
64
+ id: string;
65
+ /** displayName 优先 */
66
+ name: string;
67
+ /** 工号(SSO employeeId) */
68
+ employeeId?: string;
69
+ /** 主部门 / 首个组织名(SSO orgs) */
70
+ departmentName?: string;
71
+ /** 角色展示名,顿号拼接(SSO roles.name) */
72
+ roleNames?: string;
73
+ };
55
74
  export type MessageTemplateVariable = {
56
75
  key: string;
57
76
  /** 可选中文说明;无则下拉只显示 code */
@@ -71,6 +90,7 @@ export type PushRuleAdminItem = {
71
90
  templateCode?: string;
72
91
  audienceRoles?: string[];
73
92
  audienceUserIds?: string[];
93
+ audienceSlots?: string[];
74
94
  channels?: string[];
75
95
  slaHours?: number;
76
96
  scanLookbackDays?: number;
@@ -90,6 +110,12 @@ export type MessageTemplateAdminProps = {
90
110
  * 受众角色选项(SSO 本系统角色)。未传且无 renderAudienceField 时用空 Select(禁 tags 手输码)。
91
111
  */
92
112
  fetchAudienceRoles?: () => Promise<MessageAudienceRoleOption[]>;
113
+ /**
114
+ * 推送规则「例外抄送」多选 options(SSO 本租户用户;静态 userIds)。
115
+ * 未传则例外抄送 Select 为空(禁手输 id);展示名须来自接口 displayName。
116
+ * 任务认领人/分配人等当事人由业务 emit 传 userIds,勿靠配置面点名。
117
+ */
118
+ fetchAudienceUsers?: () => Promise<MessageAudienceUserOption[]>;
93
119
  /**
94
120
  * @deprecated 变量须来自 catalog;仅联调 fixture 可传。业务页勿硬编码平行表。
95
121
  */
@@ -106,6 +132,7 @@ export type MessageTemplateAdminProps = {
106
132
  * 传入后优先于 canWrite。
107
133
  */
108
134
  permissions?: MessageAdminPermissions;
135
+ /** 模板受众角色插槽;须保持多选下拉语义,禁止 Tree 盖壳默认 Select */
109
136
  renderAudienceField?: (ctx: {
110
137
  roles: string[];
111
138
  onChange: (roles: string[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../src/components/Tools/MessageCenter/MessageTemplateAdmin/types.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type MessageCrudFlags = {\n create: boolean;\n read: boolean;\n update: boolean;\n delete: boolean;\n};\n\nexport type MessageAdminPermissions = {\n template?: Partial<MessageCrudFlags>;\n push?: Partial<MessageCrudFlags>;\n variable?: Partial<MessageCrudFlags>;\n};\n\nconst ALL_CRUD_OFF: MessageCrudFlags = {\n create: false,\n read: false,\n update: false,\n delete: false,\n};\n\nconst ALL_CRUD_ON: MessageCrudFlags = {\n create: true,\n read: true,\n update: true,\n delete: true,\n};\n\nfunction mergeCrud(\n partial: Partial<MessageCrudFlags> | undefined,\n fallback: MessageCrudFlags,\n): MessageCrudFlags {\n return {\n create: partial?.create ?? fallback.create,\n read: partial?.read ?? fallback.read,\n update: partial?.update ?? fallback.update,\n delete: partial?.delete ?? fallback.delete,\n };\n}\n\n/** 解析 Admin 门禁:有 permissions 用细粒度;否则 canWrite 作 Showcase 全开/全关。 */\nexport function resolveMessageAdminPermissions(\n permissions: MessageAdminPermissions | undefined,\n canWrite: boolean | undefined,\n): { template: MessageCrudFlags; push: MessageCrudFlags; variable: MessageCrudFlags } {\n const fallback = canWrite ? ALL_CRUD_ON : ALL_CRUD_OFF;\n if (!permissions) {\n return { template: fallback, push: fallback, variable: fallback };\n }\n return {\n template: mergeCrud(permissions.template, ALL_CRUD_OFF),\n push: mergeCrud(permissions.push, ALL_CRUD_OFF),\n variable: mergeCrud(permissions.variable, ALL_CRUD_OFF),\n };\n}\n\nexport type MessageTemplateAdminItem = {\n id?: string;\n code?: string;\n eventKey?: string;\n scenario?: string;\n label?: string;\n messageType?: string;\n titleTemplate?: string;\n titlePreview?: string;\n bodyTemplate?: string;\n audienceRoles?: string[];\n roles?: string[];\n enabled?: boolean;\n channel?: string;\n};\n\nexport type MessageEventCatalogItem = {\n eventKey: string;\n label: string;\n messageType?: string;\n};\n\n/** catalog API 完整载荷(含变量 SSOT) */\nexport type MessageEventCatalogPayload = {\n events: MessageEventCatalogItem[];\n /** 原始 schema;优先用 variables */\n contextSchema?: Record<string, string | { type?: string; label?: string }>;\n variables?: MessageTemplateVariable[];\n};\n\nexport type MessageAudienceRoleOption = {\n /** 写入模板的角色码 */\n code: string;\n /** 展示名(来自 SSO / fixture) */\n name: string;\n};\n\nexport type MessageTemplateVariable = {\n key: string;\n /** 可选中文说明;无则下拉只显示 code */\n label?: string;\n type?: string;\n source?: 'catalog' | 'tenant';\n baseline?: boolean;\n};\n\n/** 变量管理行 */\nexport type MessageTemplateVariableAdmin = MessageTemplateVariable;\n\nexport type PushRuleAdminItem = {\n id?: string;\n code?: string;\n label?: string;\n eventKey?: string;\n levels?: string[];\n templateCode?: string;\n audienceRoles?: string[];\n audienceUserIds?: string[];\n channels?: string[];\n slaHours?: number;\n scanLookbackDays?: number;\n enabled?: boolean;\n};\n\nexport type MessageTemplateAdminProps = {\n fetchTemplates: () => Promise<MessageTemplateAdminItem[]>;\n saveTemplate?: (item: MessageTemplateAdminItem) => Promise<void>;\n /**\n * 事件目录。可返回数组(仅 events)或完整 payload(含 variables / contextSchema)。\n * 变量优先取 payload.variables,否则从 contextSchema 推导;**禁止** FE 平行 DEFAULT_VARS。\n */\n fetchEventCatalog?: () => Promise<MessageEventCatalogItem[] | MessageEventCatalogPayload>;\n /** 列表行切换启用(不经新建表单) */\n setTemplateEnabled?: (item: MessageTemplateAdminItem, enabled: boolean) => Promise<void>;\n /**\n * 受众角色选项(SSO 本系统角色)。未传且无 renderAudienceField 时用空 Select(禁 tags 手输码)。\n */\n fetchAudienceRoles?: () => Promise<MessageAudienceRoleOption[]>;\n /**\n * @deprecated 变量须来自 catalog;仅联调 fixture 可传。业务页勿硬编码平行表。\n */\n templateVariables?: MessageTemplateVariable[];\n /** 预览用示例值;未传则按 variables 生成 */\n previewVars?: Record<string, string>;\n /**\n * Showcase 快捷:true→十二项全开,false→全关。\n * 业务仓须传 permissions,禁止只靠 canWrite 当真门禁。\n */\n canWrite?: boolean;\n /**\n * 细粒度 CRUD 门禁(模板 / 推送 / 变量 × create|read|update|delete)。\n * 传入后优先于 canWrite。\n */\n permissions?: MessageAdminPermissions;\n renderAudienceField?: (ctx: {\n roles: string[];\n onChange: (roles: string[]) => void;\n }) => ReactNode;\n /** @deprecated 优先传 fetchPushRules */\n pushRulesSlot?: ReactNode;\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 fetchVariables?: () => Promise<MessageTemplateVariableAdmin[]>;\n saveVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;\n deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;\n emptyText?: string;\n className?: string;\n /** 自动编号前缀,默认 MEQ */\n codePrefix?: string;\n};\n\nexport function variablesFromCatalog(\n payload: MessageEventCatalogPayload | null | undefined,\n): MessageTemplateVariable[] {\n if (!payload) return [];\n if (Array.isArray(payload.variables) && payload.variables.length) {\n return payload.variables\n .map((v) => ({\n key: String(v.key || '').trim(),\n label: v.label,\n type: v.type,\n source: v.source,\n baseline: v.baseline,\n }))\n .filter((v) => v.key);\n }\n const schema = payload.contextSchema;\n if (!schema || typeof schema !== 'object') return [];\n return Object.entries(schema)\n .map(([key, raw]) => {\n if (typeof raw === 'string') return { key, type: raw };\n if (raw && typeof raw === 'object') {\n return {\n key,\n type: raw.type || 'string',\n label: raw.label,\n };\n }\n return { key };\n })\n .filter((v) => v.key);\n}\n\nexport function previewVarsFromVariables(vars: MessageTemplateVariable[]): Record<string, string> {\n const out: Record<string, string> = {};\n for (const v of vars) {\n out[v.key] = v.type === 'number' ? '1' : v.label || v.key;\n }\n return out;\n}\n"],"names":["ALL_CRUD_OFF","ALL_CRUD_ON","mergeCrud","partial","fallback","resolveMessageAdminPermissions","permissions","canWrite","variablesFromCatalog","payload","v","schema","key","raw","previewVarsFromVariables","vars","out"],"mappings":"AAeA,MAAMA,IAAiC;AAAA,EACrC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV,GAEMC,IAAgC;AAAA,EACpC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV;AAEA,SAASC,EACPC,GACAC,GACkB;AAClB,SAAO;AAAA,IACL,SAAQD,KAAA,gBAAAA,EAAS,WAAUC,EAAS;AAAA,IACpC,OAAMD,KAAA,gBAAAA,EAAS,SAAQC,EAAS;AAAA,IAChC,SAAQD,KAAA,gBAAAA,EAAS,WAAUC,EAAS;AAAA,IACpC,SAAQD,KAAA,gBAAAA,EAAS,WAAUC,EAAS;AAAA,EAAA;AAExC;AAGO,SAASC,EACdC,GACAC,GACoF;AACpF,QAAMH,IAAWG,IAAWN,IAAcD;AAC1C,SAAKM,IAGE;AAAA,IACL,UAAUJ,EAAUI,EAAY,UAAUN,CAAY;AAAA,IACtD,MAAME,EAAUI,EAAY,MAAMN,CAAY;AAAA,IAC9C,UAAUE,EAAUI,EAAY,UAAUN,CAAY;AAAA,EAAA,IAL/C,EAAE,UAAUI,GAAU,MAAMA,GAAU,UAAUA,EAAA;AAO3D;AAmHO,SAASI,EACdC,GAC2B;AAC3B,MAAI,CAACA,EAAS,QAAO,CAAA;AACrB,MAAI,MAAM,QAAQA,EAAQ,SAAS,KAAKA,EAAQ,UAAU;AACxD,WAAOA,EAAQ,UACZ,IAAI,CAACC,OAAO;AAAA,MACX,KAAK,OAAOA,EAAE,OAAO,EAAE,EAAE,KAAA;AAAA,MACzB,OAAOA,EAAE;AAAA,MACT,MAAMA,EAAE;AAAA,MACR,QAAQA,EAAE;AAAA,MACV,UAAUA,EAAE;AAAA,IAAA,EACZ,EACD,OAAO,CAACA,MAAMA,EAAE,GAAG;AAExB,QAAMC,IAASF,EAAQ;AACvB,SAAI,CAACE,KAAU,OAAOA,KAAW,WAAiB,CAAA,IAC3C,OAAO,QAAQA,CAAM,EACzB,IAAI,CAAC,CAACC,GAAKC,CAAG,MACT,OAAOA,KAAQ,WAAiB,EAAE,KAAAD,GAAK,MAAMC,EAAA,IAC7CA,KAAO,OAAOA,KAAQ,WACjB;AAAA,IACL,KAAAD;AAAA,IACA,MAAMC,EAAI,QAAQ;AAAA,IAClB,OAAOA,EAAI;AAAA,EAAA,IAGR,EAAE,KAAAD,EAAA,CACV,EACA,OAAO,CAACF,MAAMA,EAAE,GAAG;AACxB;AAEO,SAASI,EAAyBC,GAAyD;AAChG,QAAMC,IAA8B,CAAA;AACpC,aAAWN,KAAKK;AACd,IAAAC,EAAIN,EAAE,GAAG,IAAIA,EAAE,SAAS,WAAW,MAAMA,EAAE,SAASA,EAAE;AAExD,SAAOM;AACT;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../src/components/Tools/MessageCenter/MessageTemplateAdmin/types.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type MessageCrudFlags = {\n create: boolean;\n read: boolean;\n update: boolean;\n delete: boolean;\n};\n\nexport type MessageAdminPermissions = {\n template?: Partial<MessageCrudFlags>;\n push?: Partial<MessageCrudFlags>;\n variable?: Partial<MessageCrudFlags>;\n};\n\nconst ALL_CRUD_OFF: MessageCrudFlags = {\n create: false,\n read: false,\n update: false,\n delete: false,\n};\n\nconst ALL_CRUD_ON: MessageCrudFlags = {\n create: true,\n read: true,\n update: true,\n delete: true,\n};\n\nfunction mergeCrud(\n partial: Partial<MessageCrudFlags> | undefined,\n fallback: MessageCrudFlags,\n): MessageCrudFlags {\n return {\n create: partial?.create ?? fallback.create,\n read: partial?.read ?? fallback.read,\n update: partial?.update ?? fallback.update,\n delete: partial?.delete ?? fallback.delete,\n };\n}\n\n/** 解析 Admin 门禁:有 permissions 用细粒度;否则 canWrite 作 Showcase 全开/全关。 */\nexport function resolveMessageAdminPermissions(\n permissions: MessageAdminPermissions | undefined,\n canWrite: boolean | undefined,\n): { template: MessageCrudFlags; push: MessageCrudFlags; variable: MessageCrudFlags } {\n const fallback = canWrite ? ALL_CRUD_ON : ALL_CRUD_OFF;\n if (!permissions) {\n return { template: fallback, push: fallback, variable: fallback };\n }\n return {\n template: mergeCrud(permissions.template, ALL_CRUD_OFF),\n push: mergeCrud(permissions.push, ALL_CRUD_OFF),\n variable: mergeCrud(permissions.variable, ALL_CRUD_OFF),\n };\n}\n\nexport type MessageTemplateAdminItem = {\n id?: string;\n code?: string;\n eventKey?: string;\n scenario?: string;\n label?: string;\n messageType?: string;\n titleTemplate?: string;\n titlePreview?: string;\n bodyTemplate?: string;\n audienceRoles?: string[];\n roles?: string[];\n /** 受众槽位码(与 mc audienceSlots 对齐) */\n audienceSlots?: string[];\n enabled?: boolean;\n channel?: string;\n};\n\nexport type MessageEventCatalogItem = {\n eventKey: string;\n label: string;\n messageType?: string;\n};\n\n/** catalog API 完整载荷(含变量 SSOT) */\nexport type MessageEventCatalogPayload = {\n events: MessageEventCatalogItem[];\n /** 原始 schema;优先用 variables */\n contextSchema?: Record<string, string | { type?: string; label?: string }>;\n variables?: MessageTemplateVariable[];\n /** 受众槽位 options(与 core AUDIENCE_SLOT_OPTIONS 对齐;有则优先) */\n audienceSlotOptions?: { value: string; label: string }[];\n};\n\nexport type MessageAudienceRoleOption = {\n /** 写入模板的角色码 */\n code: string;\n /** 展示名(来自 SSO / fixture) */\n name: string;\n};\n\n/** 推送规则例外抄送选项(SSO 本租户用户;展示名取自接口) */\nexport type MessageAudienceUserOption = {\n id: string;\n /** displayName 优先 */\n name: string;\n /** 工号(SSO employeeId) */\n employeeId?: string;\n /** 主部门 / 首个组织名(SSO orgs) */\n departmentName?: string;\n /** 角色展示名,顿号拼接(SSO roles.name) */\n roleNames?: string;\n};\n\nexport type MessageTemplateVariable = {\n key: string;\n /** 可选中文说明;无则下拉只显示 code */\n label?: string;\n type?: string;\n source?: 'catalog' | 'tenant';\n baseline?: boolean;\n};\n\n/** 变量管理行 */\nexport type MessageTemplateVariableAdmin = MessageTemplateVariable;\n\nexport type PushRuleAdminItem = {\n id?: string;\n code?: string;\n label?: string;\n eventKey?: string;\n levels?: string[];\n templateCode?: string;\n audienceRoles?: string[];\n audienceUserIds?: string[];\n audienceSlots?: string[];\n channels?: string[];\n slaHours?: number;\n scanLookbackDays?: number;\n enabled?: boolean;\n};\n\nexport type MessageTemplateAdminProps = {\n fetchTemplates: () => Promise<MessageTemplateAdminItem[]>;\n saveTemplate?: (item: MessageTemplateAdminItem) => Promise<void>;\n /**\n * 事件目录。可返回数组(仅 events)或完整 payload(含 variables / contextSchema)。\n * 变量优先取 payload.variables,否则从 contextSchema 推导;**禁止** FE 平行 DEFAULT_VARS。\n */\n fetchEventCatalog?: () => Promise<MessageEventCatalogItem[] | MessageEventCatalogPayload>;\n /** 列表行切换启用(不经新建表单) */\n setTemplateEnabled?: (item: MessageTemplateAdminItem, enabled: boolean) => Promise<void>;\n /**\n * 受众角色选项(SSO 本系统角色)。未传且无 renderAudienceField 时用空 Select(禁 tags 手输码)。\n */\n fetchAudienceRoles?: () => Promise<MessageAudienceRoleOption[]>;\n /**\n * 推送规则「例外抄送」多选 options(SSO 本租户用户;静态 userIds)。\n * 未传则例外抄送 Select 为空(禁手输 id);展示名须来自接口 displayName。\n * 任务认领人/分配人等当事人由业务 emit 传 userIds,勿靠配置面点名。\n */\n fetchAudienceUsers?: () => Promise<MessageAudienceUserOption[]>;\n /**\n * @deprecated 变量须来自 catalog;仅联调 fixture 可传。业务页勿硬编码平行表。\n */\n templateVariables?: MessageTemplateVariable[];\n /** 预览用示例值;未传则按 variables 生成 */\n previewVars?: Record<string, string>;\n /**\n * Showcase 快捷:true→十二项全开,false→全关。\n * 业务仓须传 permissions,禁止只靠 canWrite 当真门禁。\n */\n canWrite?: boolean;\n /**\n * 细粒度 CRUD 门禁(模板 / 推送 / 变量 × create|read|update|delete)。\n * 传入后优先于 canWrite。\n */\n permissions?: MessageAdminPermissions;\n /** 模板受众角色插槽;须保持多选下拉语义,禁止 Tree 盖壳默认 Select */\n renderAudienceField?: (ctx: {\n roles: string[];\n onChange: (roles: string[]) => void;\n }) => ReactNode;\n /** @deprecated 优先传 fetchPushRules */\n pushRulesSlot?: ReactNode;\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 fetchVariables?: () => Promise<MessageTemplateVariableAdmin[]>;\n saveVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;\n deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;\n emptyText?: string;\n className?: string;\n /** 自动编号前缀,默认 MEQ */\n codePrefix?: string;\n};\n\nexport function variablesFromCatalog(\n payload: MessageEventCatalogPayload | null | undefined,\n): MessageTemplateVariable[] {\n if (!payload) return [];\n if (Array.isArray(payload.variables) && payload.variables.length) {\n return payload.variables\n .map((v) => ({\n key: String(v.key || '').trim(),\n label: v.label,\n type: v.type,\n source: v.source,\n baseline: v.baseline,\n }))\n .filter((v) => v.key);\n }\n const schema = payload.contextSchema;\n if (!schema || typeof schema !== 'object') return [];\n return Object.entries(schema)\n .map(([key, raw]) => {\n if (typeof raw === 'string') return { key, type: raw };\n if (raw && typeof raw === 'object') {\n return {\n key,\n type: raw.type || 'string',\n label: raw.label,\n };\n }\n return { key };\n })\n .filter((v) => v.key);\n}\n\nexport function previewVarsFromVariables(vars: MessageTemplateVariable[]): Record<string, string> {\n const out: Record<string, string> = {};\n for (const v of vars) {\n out[v.key] = v.type === 'number' ? '1' : v.label || v.key;\n }\n return out;\n}\n"],"names":["ALL_CRUD_OFF","ALL_CRUD_ON","mergeCrud","partial","fallback","resolveMessageAdminPermissions","permissions","canWrite","variablesFromCatalog","payload","v","schema","key","raw","previewVarsFromVariables","vars","out"],"mappings":"AAeA,MAAMA,IAAiC;AAAA,EACrC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV,GAEMC,IAAgC;AAAA,EACpC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV;AAEA,SAASC,EACPC,GACAC,GACkB;AAClB,SAAO;AAAA,IACL,SAAQD,KAAA,gBAAAA,EAAS,WAAUC,EAAS;AAAA,IACpC,OAAMD,KAAA,gBAAAA,EAAS,SAAQC,EAAS;AAAA,IAChC,SAAQD,KAAA,gBAAAA,EAAS,WAAUC,EAAS;AAAA,IACpC,SAAQD,KAAA,gBAAAA,EAAS,WAAUC,EAAS;AAAA,EAAA;AAExC;AAGO,SAASC,EACdC,GACAC,GACoF;AACpF,QAAMH,IAAWG,IAAWN,IAAcD;AAC1C,SAAKM,IAGE;AAAA,IACL,UAAUJ,EAAUI,EAAY,UAAUN,CAAY;AAAA,IACtD,MAAME,EAAUI,EAAY,MAAMN,CAAY;AAAA,IAC9C,UAAUE,EAAUI,EAAY,UAAUN,CAAY;AAAA,EAAA,IAL/C,EAAE,UAAUI,GAAU,MAAMA,GAAU,UAAUA,EAAA;AAO3D;AA4IO,SAASI,EACdC,GAC2B;AAC3B,MAAI,CAACA,EAAS,QAAO,CAAA;AACrB,MAAI,MAAM,QAAQA,EAAQ,SAAS,KAAKA,EAAQ,UAAU;AACxD,WAAOA,EAAQ,UACZ,IAAI,CAACC,OAAO;AAAA,MACX,KAAK,OAAOA,EAAE,OAAO,EAAE,EAAE,KAAA;AAAA,MACzB,OAAOA,EAAE;AAAA,MACT,MAAMA,EAAE;AAAA,MACR,QAAQA,EAAE;AAAA,MACV,UAAUA,EAAE;AAAA,IAAA,EACZ,EACD,OAAO,CAACA,MAAMA,EAAE,GAAG;AAExB,QAAMC,IAASF,EAAQ;AACvB,SAAI,CAACE,KAAU,OAAOA,KAAW,WAAiB,CAAA,IAC3C,OAAO,QAAQA,CAAM,EACzB,IAAI,CAAC,CAACC,GAAKC,CAAG,MACT,OAAOA,KAAQ,WAAiB,EAAE,KAAAD,GAAK,MAAMC,EAAA,IAC7CA,KAAO,OAAOA,KAAQ,WACjB;AAAA,IACL,KAAAD;AAAA,IACA,MAAMC,EAAI,QAAQ;AAAA,IAClB,OAAOA,EAAI;AAAA,EAAA,IAGR,EAAE,KAAAD,EAAA,CACV,EACA,OAAO,CAACF,MAAMA,EAAE,GAAG;AACxB;AAEO,SAASI,EAAyBC,GAAyD;AAChG,QAAMC,IAA8B,CAAA;AACpC,aAAWN,KAAKK;AACd,IAAAC,EAAIN,EAAE,GAAG,IAAIA,EAAE,SAAS,WAAW,MAAMA,EAAE,SAASA,EAAE;AAExD,SAAOM;AACT;"}
@@ -1,8 +1,10 @@
1
1
  export { MessageTemplateAdmin } from './MessageTemplateAdmin';
2
- export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, MessageCrudFlags, MessageAdminPermissions, } from './MessageTemplateAdmin';
2
+ export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageAudienceUserOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, MessageCrudFlags, MessageAdminPermissions, } from './MessageTemplateAdmin';
3
3
  export { generateTemplateCode, normalizeTemplatePlaceholders, applyTemplateVars, stripHtmlToText, } from './utils/templateCode';
4
4
  export { resolveMessageAdminPermissions } from './MessageTemplateAdmin';
5
5
  export { MSG_CENTER_APP_SWITCH_STORAGE_KEY, SYSTEM_APP_TO_MSG_CENTER_APP_KEY, MSG_CENTER_SWITCHABLE_APP_KEYS, msgCenterAppKeyFromSystemAppCode, filterMsgCenterSwitchableApps, getMsgCenterAppKey, setMsgCenterAppKey, subscribeMsgCenterAppKey, bindMsgCenterAppKeyStorageSync, resolveMsgCenterSwitchState, } from './msgCenterAppSwitch';
6
+ export { AUDIENCE_SLOT_OPTIONS, ORG_TENANT_SLOT, normalizeAudienceSlots, hasAudienceSelection, } from './MessageTemplateAdmin';
7
+ export type { AudienceSlotOption } from './MessageTemplateAdmin';
6
8
  export type { MsgCenterAppSwitchState, MsgCenterSwitchableApp, MsgCenterSwitchableAppKey, } from './msgCenterAppSwitch';
7
9
  export { useMsgCenterAppKey } from './useMsgCenterAppKey';
8
10
  export { MsgCenterAppSwitcher } from './MsgCenterAppSwitcher';
@@ -0,0 +1,16 @@
1
+ import { MessageAudienceUserOption } from '../MessageTemplateAdmin/types';
2
+ export type AudienceUserSelectOption = {
3
+ value: string;
4
+ label: string;
5
+ /** 副文案:角色 · 工号 */
6
+ description?: string;
7
+ /** 搜索用拼接串 */
8
+ searchText: string;
9
+ };
10
+ export type AudienceUserSelectGroup = {
11
+ label: string;
12
+ title: string;
13
+ options: AudienceUserSelectOption[];
14
+ };
15
+ /** 按部门 OptGroup;组内按展示名排序。禁 FE 造中文平行表,部门名取自 SSO orgs。 */
16
+ export declare function buildAudienceUserSelectGroups(users: MessageAudienceUserOption[]): AudienceUserSelectGroup[];
@@ -0,0 +1,33 @@
1
+ const c = "未分配部门";
2
+ function p(i) {
3
+ const n = [], s = String(i.roleNames || "").trim(), e = String(i.employeeId || "").trim();
4
+ return s && n.push(s), e && n.push(`工号 ${e}`), n.join(" · ");
5
+ }
6
+ function a(i) {
7
+ const n = /* @__PURE__ */ new Map();
8
+ for (const e of i) {
9
+ if (!(e != null && e.id)) continue;
10
+ const o = String(e.departmentName || "").trim() || c, t = n.get(o);
11
+ t ? t.push(e) : n.set(o, [e]);
12
+ }
13
+ return [...n.keys()].sort((e, o) => e === c ? 1 : o === c ? -1 : e.localeCompare(o, "zh-CN")).map((e) => {
14
+ const o = (n.get(e) || []).slice().sort((t, r) => String(t.name || t.id).localeCompare(String(r.name || r.id), "zh-CN"));
15
+ return {
16
+ label: e,
17
+ title: e,
18
+ options: o.map((t) => {
19
+ const r = p(t), l = String(t.name || t.id);
20
+ return {
21
+ value: t.id,
22
+ label: l,
23
+ description: r || void 0,
24
+ searchText: [l, r, e, t.employeeId, t.roleNames].filter(Boolean).join(" ")
25
+ };
26
+ })
27
+ };
28
+ });
29
+ }
30
+ export {
31
+ a as buildAudienceUserSelectGroups
32
+ };
33
+ //# sourceMappingURL=audienceUserSelectOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audienceUserSelectOptions.js","sources":["../../../../../src/components/Tools/MessageCenter/utils/audienceUserSelectOptions.ts"],"sourcesContent":["import type { MessageAudienceUserOption } from '../MessageTemplateAdmin/types';\n\nconst UNASSIGNED_DEPT = '未分配部门';\n\nexport type AudienceUserSelectOption = {\n value: string;\n label: string;\n /** 副文案:角色 · 工号 */\n description?: string;\n /** 搜索用拼接串 */\n searchText: string;\n};\n\nexport type AudienceUserSelectGroup = {\n label: string;\n title: string;\n options: AudienceUserSelectOption[];\n};\n\nfunction optionDescription(u: MessageAudienceUserOption): string {\n const parts: string[] = [];\n const roles = String(u.roleNames || '').trim();\n const emp = String(u.employeeId || '').trim();\n if (roles) parts.push(roles);\n if (emp) parts.push(`工号 ${emp}`);\n return parts.join(' · ');\n}\n\n/** 按部门 OptGroup;组内按展示名排序。禁 FE 造中文平行表,部门名取自 SSO orgs。 */\nexport function buildAudienceUserSelectGroups(\n users: MessageAudienceUserOption[],\n): AudienceUserSelectGroup[] {\n const byDept = new Map<string, MessageAudienceUserOption[]>();\n for (const u of users) {\n if (!u?.id) continue;\n const dept = String(u.departmentName || '').trim() || UNASSIGNED_DEPT;\n const bucket = byDept.get(dept);\n if (bucket) bucket.push(u);\n else byDept.set(dept, [u]);\n }\n const deptNames = [...byDept.keys()].sort((a, b) => {\n if (a === UNASSIGNED_DEPT) return 1;\n if (b === UNASSIGNED_DEPT) return -1;\n return a.localeCompare(b, 'zh-CN');\n });\n return deptNames.map((dept) => {\n const list = (byDept.get(dept) || [])\n .slice()\n .sort((a, b) => String(a.name || a.id).localeCompare(String(b.name || b.id), 'zh-CN'));\n return {\n label: dept,\n title: dept,\n options: list.map((u) => {\n const description = optionDescription(u);\n const label = String(u.name || u.id);\n return {\n value: u.id,\n label,\n description: description || undefined,\n searchText: [label, description, dept, u.employeeId, u.roleNames]\n .filter(Boolean)\n .join(' '),\n };\n }),\n };\n });\n}\n"],"names":["UNASSIGNED_DEPT","optionDescription","u","parts","roles","emp","buildAudienceUserSelectGroups","users","byDept","dept","bucket","a","b","list","description","label"],"mappings":"AAEA,MAAMA,IAAkB;AAiBxB,SAASC,EAAkBC,GAAsC;AAC/D,QAAMC,IAAkB,CAAA,GAClBC,IAAQ,OAAOF,EAAE,aAAa,EAAE,EAAE,KAAA,GAClCG,IAAM,OAAOH,EAAE,cAAc,EAAE,EAAE,KAAA;AACvC,SAAIE,KAAOD,EAAM,KAAKC,CAAK,GACvBC,KAAKF,EAAM,KAAK,MAAME,CAAG,EAAE,GACxBF,EAAM,KAAK,KAAK;AACzB;AAGO,SAASG,EACdC,GAC2B;AAC3B,QAAMC,wBAAa,IAAA;AACnB,aAAWN,KAAKK,GAAO;AACrB,QAAI,EAACL,KAAA,QAAAA,EAAG,IAAI;AACZ,UAAMO,IAAO,OAAOP,EAAE,kBAAkB,EAAE,EAAE,UAAUF,GAChDU,IAASF,EAAO,IAAIC,CAAI;AAC9B,IAAIC,IAAQA,EAAO,KAAKR,CAAC,IACpBM,EAAO,IAAIC,GAAM,CAACP,CAAC,CAAC;AAAA,EAC3B;AAMA,SALkB,CAAC,GAAGM,EAAO,KAAA,CAAM,EAAE,KAAK,CAACG,GAAGC,MACxCD,MAAMX,IAAwB,IAC9BY,MAAMZ,IAAwB,KAC3BW,EAAE,cAAcC,GAAG,OAAO,CAClC,EACgB,IAAI,CAACH,MAAS;AAC7B,UAAMI,KAAQL,EAAO,IAAIC,CAAI,KAAK,IAC/B,QACA,KAAK,CAACE,GAAGC,MAAM,OAAOD,EAAE,QAAQA,EAAE,EAAE,EAAE,cAAc,OAAOC,EAAE,QAAQA,EAAE,EAAE,GAAG,OAAO,CAAC;AACvF,WAAO;AAAA,MACL,OAAOH;AAAA,MACP,OAAOA;AAAA,MACP,SAASI,EAAK,IAAI,CAACX,MAAM;AACvB,cAAMY,IAAcb,EAAkBC,CAAC,GACjCa,IAAQ,OAAOb,EAAE,QAAQA,EAAE,EAAE;AACnC,eAAO;AAAA,UACL,OAAOA,EAAE;AAAA,UACT,OAAAa;AAAA,UACA,aAAaD,KAAe;AAAA,UAC5B,YAAY,CAACC,GAAOD,GAAaL,GAAMP,EAAE,YAAYA,EAAE,SAAS,EAC7D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QAAA;AAAA,MAEf,CAAC;AAAA,IAAA;AAAA,EAEL,CAAC;AACH;"}
@@ -1,25 +1,19 @@
1
- function p(e = "MEQ") {
2
- const t = /* @__PURE__ */ new Date(), a = t.getFullYear(), c = String(t.getMonth() + 1).padStart(2, "0"), n = String(t.getDate()).padStart(2, "0"), r = String(Math.floor(1e4 + Math.random() * 9e4));
3
- return `${e}${a}${c}${n}${r}`;
1
+ function l(t = "MEQ") {
2
+ const e = /* @__PURE__ */ new Date(), a = e.getFullYear(), o = String(e.getMonth() + 1).padStart(2, "0"), r = String(e.getDate()).padStart(2, "0"), n = String(Math.floor(1e4 + Math.random() * 9e4));
3
+ return `${t}${a}${o}${r}${n}`;
4
4
  }
5
- function l(e) {
6
- return String(e || "").replace(/\{\{(\w+)\}\}/g, "\0$1\0").replace(/\{(\w+)\}/g, "{{$1}}").replace(/\u0000(\w+)\u0000/g, "{{$1}}");
5
+ function c(t) {
6
+ return String(t || "").replace(/\{\{(\w+)\}\}/g, "\0$1\0").replace(/\{(\w+)\}/g, "{{$1}}").replace(/\u0000(\w+)\u0000/g, "{{$1}}");
7
7
  }
8
- function g(e, t) {
9
- return l(e).replace(/\{\{(\w+)\}\}/g, (c, n) => {
10
- const r = t[n];
11
- return r == null ? `{{${n}}}` : String(r);
8
+ function g(t, e) {
9
+ return c(t).replace(/\{\{(\w+)\}\}/g, (o, r) => {
10
+ const n = e[r];
11
+ return n == null ? `{{${r}}}` : String(n);
12
12
  });
13
13
  }
14
- function o(e) {
15
- return String(e || "").replace(/<br\s*\/?>/gi, `
16
- `).replace(/<\/p>/gi, `
17
- `).replace(/<[^>]+>/g, "").replace(/&nbsp;/g, " ").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").trim();
18
- }
19
14
  export {
20
15
  g as applyTemplateVars,
21
- p as generateTemplateCode,
22
- l as normalizeTemplatePlaceholders,
23
- o as stripHtmlToText
16
+ l as generateTemplateCode,
17
+ c as normalizeTemplatePlaceholders
24
18
  };
25
19
  //# sourceMappingURL=templateCode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templateCode.js","sources":["../../../../../src/components/Tools/MessageCenter/utils/templateCode.ts"],"sourcesContent":["/** 模板编号:MEQ + yyyyMMdd + 5 位随机数(对齐 EAM createBlankTemplate) */\nexport function generateTemplateCode(prefix = 'MEQ'): string {\n const now = new Date();\n const y = now.getFullYear();\n const m = String(now.getMonth() + 1).padStart(2, '0');\n const d = String(now.getDate()).padStart(2, '0');\n const rand = String(Math.floor(10000 + Math.random() * 90000));\n return `${prefix}${y}${m}${d}${rand}`;\n}\n\n/**\n * 占位符统一 `{{var}}`;兼容读入旧 `{var}`(不把已是双括号的再包一层)。\n */\nexport function normalizeTemplatePlaceholders(text: string): string {\n return String(text || '')\n .replace(/\\{\\{(\\w+)\\}\\}/g, '\\u0000$1\\u0000')\n .replace(/\\{(\\w+)\\}/g, '{{$1}}')\n .replace(/\\u0000(\\w+)\\u0000/g, '{{$1}}');\n}\n\nexport function applyTemplateVars(\n text: string,\n vars: Record<string, string | number | undefined>,\n): string {\n const src = normalizeTemplatePlaceholders(text);\n return src.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key: string) => {\n const v = vars[key];\n return v === undefined || v === null ? `{{${key}}}` : String(v);\n });\n}\n\nexport function stripHtmlToText(html: string): string {\n return String(html || '')\n .replace(/<br\\s*\\/?>/gi, '\\n')\n .replace(/<\\/p>/gi, '\\n')\n .replace(/<[^>]+>/g, '')\n .replace(/&nbsp;/g, ' ')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&')\n .trim();\n}\n"],"names":["generateTemplateCode","prefix","now","y","m","d","rand","normalizeTemplatePlaceholders","text","applyTemplateVars","vars","_","key","v","stripHtmlToText","html"],"mappings":"AACO,SAASA,EAAqBC,IAAS,OAAe;AAC3D,QAAMC,wBAAU,KAAA,GACVC,IAAID,EAAI,YAAA,GACRE,IAAI,OAAOF,EAAI,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG,GAC9CG,IAAI,OAAOH,EAAI,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG,GACzCI,IAAO,OAAO,KAAK,MAAM,MAAQ,KAAK,WAAW,GAAK,CAAC;AAC7D,SAAO,GAAGL,CAAM,GAAGE,CAAC,GAAGC,CAAC,GAAGC,CAAC,GAAGC,CAAI;AACrC;AAKO,SAASC,EAA8BC,GAAsB;AAClE,SAAO,OAAOA,KAAQ,EAAE,EACrB,QAAQ,kBAAkB,QAAgB,EAC1C,QAAQ,cAAc,QAAQ,EAC9B,QAAQ,sBAAsB,QAAQ;AAC3C;AAEO,SAASC,EACdD,GACAE,GACQ;AAER,SADYH,EAA8BC,CAAI,EACnC,QAAQ,kBAAkB,CAACG,GAAGC,MAAgB;AACvD,UAAMC,IAAIH,EAAKE,CAAG;AAClB,WAA0BC,KAAM,OAAO,KAAKD,CAAG,OAAO,OAAOC,CAAC;AAAA,EAChE,CAAC;AACH;AAEO,SAASC,EAAgBC,GAAsB;AACpD,SAAO,OAAOA,KAAQ,EAAE,EACrB,QAAQ,gBAAgB;AAAA,CAAI,EAC5B,QAAQ,WAAW;AAAA,CAAI,EACvB,QAAQ,YAAY,EAAE,EACtB,QAAQ,WAAW,GAAG,EACtB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG,EACpB,QAAQ,UAAU,GAAG,EACrB,KAAA;AACL;"}
1
+ {"version":3,"file":"templateCode.js","sources":["../../../../../src/components/Tools/MessageCenter/utils/templateCode.ts"],"sourcesContent":["/** 模板编号:MEQ + yyyyMMdd + 5 位随机数(对齐 EAM createBlankTemplate) */\nexport function generateTemplateCode(prefix = 'MEQ'): string {\n const now = new Date();\n const y = now.getFullYear();\n const m = String(now.getMonth() + 1).padStart(2, '0');\n const d = String(now.getDate()).padStart(2, '0');\n const rand = String(Math.floor(10000 + Math.random() * 90000));\n return `${prefix}${y}${m}${d}${rand}`;\n}\n\n/**\n * 占位符统一 `{{var}}`;兼容读入旧 `{var}`(不把已是双括号的再包一层)。\n */\nexport function normalizeTemplatePlaceholders(text: string): string {\n return String(text || '')\n .replace(/\\{\\{(\\w+)\\}\\}/g, '\\u0000$1\\u0000')\n .replace(/\\{(\\w+)\\}/g, '{{$1}}')\n .replace(/\\u0000(\\w+)\\u0000/g, '{{$1}}');\n}\n\nexport function applyTemplateVars(\n text: string,\n vars: Record<string, string | number | undefined>,\n): string {\n const src = normalizeTemplatePlaceholders(text);\n return src.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key: string) => {\n const v = vars[key];\n return v === undefined || v === null ? `{{${key}}}` : String(v);\n });\n}\n\nexport function stripHtmlToText(html: string): string {\n return String(html || '')\n .replace(/<br\\s*\\/?>/gi, '\\n')\n .replace(/<\\/p>/gi, '\\n')\n .replace(/<[^>]+>/g, '')\n .replace(/&nbsp;/g, ' ')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&')\n .trim();\n}\n"],"names":["generateTemplateCode","prefix","now","y","m","d","rand","normalizeTemplatePlaceholders","text","applyTemplateVars","vars","_","key","v"],"mappings":"AACO,SAASA,EAAqBC,IAAS,OAAe;AAC3D,QAAMC,wBAAU,KAAA,GACVC,IAAID,EAAI,YAAA,GACRE,IAAI,OAAOF,EAAI,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG,GAC9CG,IAAI,OAAOH,EAAI,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG,GACzCI,IAAO,OAAO,KAAK,MAAM,MAAQ,KAAK,WAAW,GAAK,CAAC;AAC7D,SAAO,GAAGL,CAAM,GAAGE,CAAC,GAAGC,CAAC,GAAGC,CAAC,GAAGC,CAAI;AACrC;AAKO,SAASC,EAA8BC,GAAsB;AAClE,SAAO,OAAOA,KAAQ,EAAE,EACrB,QAAQ,kBAAkB,QAAgB,EAC1C,QAAQ,cAAc,QAAQ,EAC9B,QAAQ,sBAAsB,QAAQ;AAC3C;AAEO,SAASC,EACdD,GACAE,GACQ;AAER,SADYH,EAA8BC,CAAI,EACnC,QAAQ,kBAAkB,CAACG,GAAGC,MAAgB;AACvD,UAAMC,IAAIH,EAAKE,CAAG;AAClB,WAA0BC,KAAM,OAAO,KAAKD,CAAG,OAAO,OAAOC,CAAC;AAAA,EAChE,CAAC;AACH;"}
@@ -1,6 +1,6 @@
1
1
  export { InboxBell } from './Inbox';
2
2
  export type { InboxBellItem, InboxBellListResult, InboxBellListParams, InboxBellProps, InboxBellMessageType, } from './Inbox';
3
3
  export { MessageTemplateAdmin } from './MessageCenter';
4
- export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, MessageCrudFlags, MessageAdminPermissions, } from './MessageCenter';
4
+ export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageAudienceUserOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, MessageCrudFlags, MessageAdminPermissions, } from './MessageCenter';
5
5
  export { generateTemplateCode, normalizeTemplatePlaceholders, applyTemplateVars, resolveMessageAdminPermissions, MSG_CENTER_APP_SWITCH_STORAGE_KEY, SYSTEM_APP_TO_MSG_CENTER_APP_KEY, MSG_CENTER_SWITCHABLE_APP_KEYS, msgCenterAppKeyFromSystemAppCode, filterMsgCenterSwitchableApps, getMsgCenterAppKey, setMsgCenterAppKey, subscribeMsgCenterAppKey, bindMsgCenterAppKeyStorageSync, resolveMsgCenterSwitchState, useMsgCenterAppKey, MsgCenterAppSwitcher, } from './MessageCenter';
6
6
  export type { MsgCenterAppSwitchState, MsgCenterSwitchableApp, MsgCenterSwitchableAppKey, MsgCenterAppSwitcherProps, } from './MessageCenter';