@hkyhy/marsun-components-core 0.1.99 → 0.1.100

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 (207) hide show
  1. package/dist/components/Editor/RichTextEditor/RichTextEditor.js +36 -45
  2. package/dist/components/Editor/RichTextEditor/RichTextEditor.js.map +1 -1
  3. package/dist/components/Editor/msgVarTokenPlugin.js +14 -19
  4. package/dist/components/Editor/msgVarTokenPlugin.js.map +1 -1
  5. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +193 -145
  6. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -1
  7. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.d.ts +18 -0
  8. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js +315 -0
  9. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js.map +1 -0
  10. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.d.ts +14 -0
  11. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js +183 -0
  12. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js.map +1 -0
  13. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +1 -1
  14. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +26 -0
  15. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js +5 -3
  16. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -1
  17. package/dist/components/Tools/MessageCenter/index.d.ts +1 -1
  18. package/dist/components/Tools/MessageCenter/utils/adminGuards.d.ts +14 -0
  19. package/dist/components/Tools/MessageCenter/utils/adminGuards.js +12 -0
  20. package/dist/components/Tools/MessageCenter/utils/adminGuards.js.map +1 -0
  21. package/package.json +1 -1
  22. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +0 -301
  23. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js.map +0 -1
  24. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +0 -1256
  25. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js.map +0 -1
  26. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js +0 -2107
  27. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js.map +0 -1
  28. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +0 -259
  29. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js.map +0 -1
  30. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +0 -23990
  31. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js.map +0 -1
  32. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +0 -249
  33. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js.map +0 -1
  34. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +0 -47
  35. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js.map +0 -1
  36. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js +0 -100
  37. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js.map +0 -1
  38. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +0 -31
  39. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js.map +0 -1
  40. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js +0 -194
  41. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js.map +0 -1
  42. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js +0 -2042
  43. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js.map +0 -1
  44. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +0 -9
  45. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js.map +0 -1
  46. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +0 -167
  47. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js.map +0 -1
  48. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js +0 -471
  49. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js.map +0 -1
  50. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +0 -139
  51. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js.map +0 -1
  52. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +0 -755
  53. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js.map +0 -1
  54. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +0 -7838
  55. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js.map +0 -1
  56. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js +0 -422
  57. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js.map +0 -1
  58. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js +0 -33
  59. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js.map +0 -1
  60. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js +0 -47
  61. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js.map +0 -1
  62. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js +0 -156
  63. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js.map +0 -1
  64. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +0 -313
  65. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js.map +0 -1
  66. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +0 -2942
  67. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js.map +0 -1
  68. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +0 -892
  69. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js.map +0 -1
  70. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +0 -1047
  71. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js.map +0 -1
  72. package/dist/node_modules/color-parse/node_modules/color-name/index.js +0 -153
  73. package/dist/node_modules/color-parse/node_modules/color-name/index.js.map +0 -1
  74. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js +0 -7
  75. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js.map +0 -1
  76. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +0 -7
  77. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +0 -1
  78. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js +0 -7
  79. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js.map +0 -1
  80. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +0 -9
  81. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js.map +0 -1
  82. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +0 -7
  83. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +0 -1
  84. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js +0 -7
  85. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +0 -1
  86. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +0 -16
  87. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js.map +0 -1
  88. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +0 -15
  89. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js.map +0 -1
  90. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js +0 -9
  91. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js.map +0 -1
  92. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +0 -8
  93. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +0 -1
  94. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js +0 -30
  95. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +0 -1
  96. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js +0 -8
  97. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js.map +0 -1
  98. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js +0 -17
  99. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js.map +0 -1
  100. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js +0 -13
  101. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js.map +0 -1
  102. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js +0 -17
  103. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js.map +0 -1
  104. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js +0 -102
  105. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js.map +0 -1
  106. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +0 -8
  107. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +0 -1
  108. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +0 -33
  109. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +0 -1
  110. package/dist/node_modules/es-toolkit/dist/compat/object/get.js +0 -39
  111. package/dist/node_modules/es-toolkit/dist/compat/object/get.js.map +0 -1
  112. package/dist/node_modules/es-toolkit/dist/compat/object/has.js +0 -21
  113. package/dist/node_modules/es-toolkit/dist/compat/object/has.js.map +0 -1
  114. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js +0 -33
  115. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js.map +0 -1
  116. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js +0 -10
  117. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js.map +0 -1
  118. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js +0 -9
  119. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js.map +0 -1
  120. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js +0 -53
  121. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +0 -1
  122. package/dist/node_modules/es-toolkit/dist/compat/object/property.js +0 -10
  123. package/dist/node_modules/es-toolkit/dist/compat/object/property.js.map +0 -1
  124. package/dist/node_modules/es-toolkit/dist/compat/object/set.js +0 -9
  125. package/dist/node_modules/es-toolkit/dist/compat/object/set.js.map +0 -1
  126. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js +0 -31
  127. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js.map +0 -1
  128. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +0 -8
  129. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +0 -1
  130. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js +0 -7
  131. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +0 -1
  132. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +0 -8
  133. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +0 -1
  134. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +0 -9
  135. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +0 -1
  136. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js +0 -9
  137. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js.map +0 -1
  138. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +0 -15
  139. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js.map +0 -1
  140. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +0 -7
  141. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +0 -1
  142. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +0 -9
  143. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js.map +0 -1
  144. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +0 -81
  145. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js.map +0 -1
  146. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js +0 -7
  147. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js.map +0 -1
  148. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +0 -7
  149. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +0 -1
  150. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +0 -16
  151. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +0 -1
  152. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js +0 -7
  153. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js.map +0 -1
  154. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +0 -7
  155. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js.map +0 -1
  156. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +0 -8
  157. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +0 -1
  158. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js +0 -9
  159. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js.map +0 -1
  160. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +0 -23
  161. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js.map +0 -1
  162. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js +0 -7
  163. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js.map +0 -1
  164. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js +0 -19
  165. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js.map +0 -1
  166. package/dist/node_modules/es-toolkit/dist/compat/util/times.js +0 -11
  167. package/dist/node_modules/es-toolkit/dist/compat/util/times.js.map +0 -1
  168. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js +0 -8
  169. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js.map +0 -1
  170. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js +0 -9
  171. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js.map +0 -1
  172. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js +0 -8
  173. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js.map +0 -1
  174. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js +0 -37
  175. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js.map +0 -1
  176. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js +0 -15
  177. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js.map +0 -1
  178. package/dist/node_modules/es-toolkit/dist/function/after.js +0 -11
  179. package/dist/node_modules/es-toolkit/dist/function/after.js.map +0 -1
  180. package/dist/node_modules/es-toolkit/dist/function/debounce.js +0 -30
  181. package/dist/node_modules/es-toolkit/dist/function/debounce.js.map +0 -1
  182. package/dist/node_modules/es-toolkit/dist/function/identity.js +0 -7
  183. package/dist/node_modules/es-toolkit/dist/function/identity.js.map +0 -1
  184. package/dist/node_modules/es-toolkit/dist/function/noop.js +0 -6
  185. package/dist/node_modules/es-toolkit/dist/function/noop.js.map +0 -1
  186. package/dist/node_modules/es-toolkit/dist/object/clone.js +0 -27
  187. package/dist/node_modules/es-toolkit/dist/object/clone.js.map +0 -1
  188. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +0 -8
  189. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js.map +0 -1
  190. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js +0 -121
  191. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +0 -1
  192. package/dist/node_modules/es-toolkit/dist/object/mapValues.js +0 -12
  193. package/dist/node_modules/es-toolkit/dist/object/mapValues.js.map +0 -1
  194. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js +0 -8
  195. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +0 -1
  196. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js +0 -9
  197. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js.map +0 -1
  198. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js +0 -110
  199. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js.map +0 -1
  200. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js +0 -7
  201. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js.map +0 -1
  202. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js +0 -9
  203. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js.map +0 -1
  204. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js +0 -7
  205. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +0 -1
  206. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js +0 -7
  207. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +0 -1
@@ -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 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};\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 canWrite?: boolean;\n renderAudienceField?: (ctx: {\n roles: string[];\n onChange: (roles: string[]) => void;\n }) => ReactNode;\n pushRulesSlot?: ReactNode;\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 }))\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":["variablesFromCatalog","payload","v","schema","key","raw","previewVarsFromVariables","vars","out"],"mappings":"AA8EO,SAASA,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,IAAA,EACR,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 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 canWrite?: boolean;\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":["variablesFromCatalog","payload","v","schema","key","raw","previewVarsFromVariables","vars","out"],"mappings":"AA0GO,SAASA,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,3 +1,3 @@
1
1
  export { MessageTemplateAdmin } from './MessageTemplateAdmin';
2
- export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, } from './MessageTemplateAdmin';
2
+ export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, } from './MessageTemplateAdmin';
3
3
  export { generateTemplateCode, normalizeTemplatePlaceholders, applyTemplateVars, stripHtmlToText, } from './utils/templateCode';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 推送规则:切换 eventKey 后解析关联 templateCode(§4.8a 清脏)。
3
+ * 仅当旧 code 仍属于新事件的模板 options 时保留,否则清空。
4
+ */
5
+ export declare function resolveTemplateCodeAfterEventChange(prevCode: string | undefined, options: Array<{
6
+ value: string;
7
+ }>): string;
8
+ /**
9
+ * 租户变量:基线(catalog / baseline)不可删。
10
+ */
11
+ export declare function canDeleteTenantVariable(r: {
12
+ source?: string;
13
+ baseline?: boolean;
14
+ }): boolean;
@@ -0,0 +1,12 @@
1
+ function a(e, n) {
2
+ const t = String(e || "").trim();
3
+ return t && n.some((r) => r.value === t) ? t : "";
4
+ }
5
+ function o(e) {
6
+ return !(e.source === "catalog" || e.baseline);
7
+ }
8
+ export {
9
+ o as canDeleteTenantVariable,
10
+ a as resolveTemplateCodeAfterEventChange
11
+ };
12
+ //# sourceMappingURL=adminGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adminGuards.js","sources":["../../../../../src/components/Tools/MessageCenter/utils/adminGuards.ts"],"sourcesContent":["/**\n * 推送规则:切换 eventKey 后解析关联 templateCode(§4.8a 清脏)。\n * 仅当旧 code 仍属于新事件的模板 options 时保留,否则清空。\n */\nexport function resolveTemplateCodeAfterEventChange(\n prevCode: string | undefined,\n options: Array<{ value: string }>,\n): string {\n const prev = String(prevCode || '').trim();\n if (prev && options.some((o) => o.value === prev)) return prev;\n return '';\n}\n\n/**\n * 租户变量:基线(catalog / baseline)不可删。\n */\nexport function canDeleteTenantVariable(r: { source?: string; baseline?: boolean }): boolean {\n if (r.source === 'catalog' || r.baseline) return false;\n return true;\n}\n"],"names":["resolveTemplateCodeAfterEventChange","prevCode","options","prev","o","canDeleteTenantVariable","r"],"mappings":"AAIO,SAASA,EACdC,GACAC,GACQ;AACR,QAAMC,IAAO,OAAOF,KAAY,EAAE,EAAE,KAAA;AACpC,SAAIE,KAAQD,EAAQ,KAAK,CAACE,MAAMA,EAAE,UAAUD,CAAI,IAAUA,IACnD;AACT;AAKO,SAASE,EAAwBC,GAAqD;AAC3F,SAAI,EAAAA,EAAE,WAAW,aAAaA,EAAE;AAElC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hkyhy/marsun-components-core",
3
- "version": "0.1.99",
3
+ "version": "0.1.100",
4
4
  "description": "Marsun pure UI component library",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1,301 +0,0 @@
1
- var B = Object.defineProperty;
2
- var k = (t, e, i) => e in t ? B(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;
3
- var b = (t, e, i) => k(t, typeof e != "symbol" ? e + "" : e, i);
4
- import { Plugin as u, Command as v } from "../../ckeditor5-core/dist/index.js";
5
- import { ModelDocumentSelection as A } from "../../ckeditor5-engine/dist/index.js";
6
- import { IconBold as x, IconItalic as C } from "../../ckeditor5-icons/dist/index.js";
7
- import { ButtonView as y, MenuBarMenuListItemButtonView as g } from "../../ckeditor5-ui/dist/index.js";
8
- import "../../ckeditor5-utils/dist/index.js";
9
- /**
10
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
11
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
12
- */
13
- /**
14
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
15
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
16
- */
17
- var p = class extends v {
18
- /**
19
- * @param attributeKey Attribute that will be set by the command.
20
- */
21
- constructor(e, i) {
22
- super(e);
23
- /**
24
- * The attribute that will be set by the command.
25
- */
26
- b(this, "attributeKey");
27
- this.attributeKey = i;
28
- }
29
- /**
30
- * Updates the command's {@link #value} and {@link #isEnabled} based on the current selection.
31
- */
32
- refresh() {
33
- const e = this.editor.model, i = e.document;
34
- this.value = this._getValueFromFirstAllowedNode(), this.isEnabled = e.schema.checkAttributeInSelection(i.selection, this.attributeKey);
35
- }
36
- /**
37
- * Executes the command &ndash; applies the attribute to the selection or removes it from the selection.
38
- *
39
- * If the command is active (`value == true`), it will remove attributes. Otherwise, it will set attributes.
40
- *
41
- * The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:
42
- *
43
- * * If the selection is on a range, the command applies the attribute to all nodes in that range
44
- * (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).
45
- * * If the selection is collapsed in a non-empty node, the command applies the attribute to the
46
- * {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).
47
- * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note
48
- * that the selection inherits all attributes from a node if it is in an empty node).
49
- *
50
- * @fires execute
51
- * @param options Command options.
52
- * @param options.forceValue If set, it will force the command behavior. If `true`,
53
- * the command will apply the attribute, otherwise the command will remove the attribute.
54
- * If not set, the command will look for its current value to decide what it should do.
55
- */
56
- execute(e = {}) {
57
- const i = this.editor.model, s = i.document.selection, r = e.forceValue === void 0 ? !this.value : e.forceValue;
58
- i.change((n) => {
59
- if (s.isCollapsed) r ? n.setSelectionAttribute(this.attributeKey, !0) : n.removeSelectionAttribute(this.attributeKey);
60
- else {
61
- const d = i.schema.getValidRanges(s.getRanges(), this.attributeKey, { includeEmptyRanges: !0 });
62
- for (const a of d) {
63
- let o = a, m = this.attributeKey;
64
- a.isCollapsed && (o = a.start.parent, m = A._getStoreAttributeKey(this.attributeKey)), r ? n.setAttribute(m, r, o) : n.removeAttribute(m, o);
65
- }
66
- }
67
- });
68
- }
69
- /**
70
- * Checks the attribute value of the first node in the selection that allows the attribute.
71
- * For the collapsed selection returns the selection attribute.
72
- *
73
- * @returns The attribute value.
74
- */
75
- _getValueFromFirstAllowedNode() {
76
- const e = this.editor.model, i = e.schema, s = e.document.selection;
77
- if (s.isCollapsed) return s.hasAttribute(this.attributeKey);
78
- for (const r of s.getRanges()) for (const n of r.getItems()) if (i.checkAttribute(n, this.attributeKey)) return n.hasAttribute(this.attributeKey);
79
- return !1;
80
- }
81
- };
82
- /**
83
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
84
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
85
- */
86
- const l = "bold";
87
- var K = class extends u {
88
- /**
89
- * @inheritDoc
90
- */
91
- static get pluginName() {
92
- return "BoldEditing";
93
- }
94
- /**
95
- * @inheritDoc
96
- */
97
- static get isOfficialPlugin() {
98
- return !0;
99
- }
100
- /**
101
- * @inheritDoc
102
- */
103
- init() {
104
- const t = this.editor, e = this.editor.t;
105
- t.model.schema.extend("$text", { allowAttributes: l }), t.model.schema.setAttributeProperties(l, {
106
- isFormatting: !0,
107
- copyOnEnter: !0
108
- }), t.conversion.attributeToElement({
109
- model: l,
110
- view: "strong",
111
- upcastAlso: ["b", (i) => {
112
- const s = i.getStyle("font-weight");
113
- return s && (s == "bold" || Number(s) >= 600) ? {
114
- name: !0,
115
- styles: ["font-weight"]
116
- } : null;
117
- }]
118
- }), t.commands.add(l, new p(t, l)), t.keystrokes.set("CTRL+B", l), t.accessibility.addKeystrokeInfos({ keystrokes: [{
119
- label: e("Bold text"),
120
- keystroke: "CTRL+B"
121
- }] });
122
- }
123
- };
124
- /**
125
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
126
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
127
- */
128
- function I({ editor: t, commandName: e, plugin: i, icon: s, label: r, keystroke: n }) {
129
- return (d) => {
130
- const a = t.commands.get(e), o = new d(t.locale);
131
- return o.set({
132
- label: r,
133
- icon: s,
134
- keystroke: n,
135
- isToggleable: !0
136
- }), o.bind("isEnabled").to(a, "isEnabled"), o.bind("isOn").to(a, "value"), o instanceof g ? o.set({ role: "menuitemcheckbox" }) : o.set({ tooltip: !0 }), i.listenTo(o, "execute", () => {
137
- t.execute(e), t.editing.view.focus();
138
- }), o;
139
- };
140
- }
141
- /**
142
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
143
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
144
- */
145
- const f = "bold";
146
- var w = class extends u {
147
- /**
148
- * @inheritDoc
149
- */
150
- static get pluginName() {
151
- return "BoldUI";
152
- }
153
- /**
154
- * @inheritDoc
155
- */
156
- static get isOfficialPlugin() {
157
- return !0;
158
- }
159
- /**
160
- * @inheritDoc
161
- */
162
- init() {
163
- const t = this.editor, e = t.locale.t, i = I({
164
- editor: t,
165
- commandName: f,
166
- plugin: this,
167
- icon: x,
168
- label: e("Bold"),
169
- keystroke: "CTRL+B"
170
- });
171
- t.ui.componentFactory.add(f, () => i(y)), t.ui.componentFactory.add("menuBar:bold", () => i(g));
172
- }
173
- };
174
- /**
175
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
176
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
177
- */
178
- var S = class extends u {
179
- /**
180
- * @inheritDoc
181
- */
182
- static get requires() {
183
- return [K, w];
184
- }
185
- /**
186
- * @inheritDoc
187
- */
188
- static get pluginName() {
189
- return "Bold";
190
- }
191
- /**
192
- * @inheritDoc
193
- */
194
- static get isOfficialPlugin() {
195
- return !0;
196
- }
197
- };
198
- /**
199
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
200
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
201
- */
202
- const c = "italic";
203
- var E = class extends u {
204
- /**
205
- * @inheritDoc
206
- */
207
- static get pluginName() {
208
- return "ItalicEditing";
209
- }
210
- /**
211
- * @inheritDoc
212
- */
213
- static get isOfficialPlugin() {
214
- return !0;
215
- }
216
- /**
217
- * @inheritDoc
218
- */
219
- init() {
220
- const t = this.editor, e = this.editor.t;
221
- t.model.schema.extend("$text", { allowAttributes: c }), t.model.schema.setAttributeProperties(c, {
222
- isFormatting: !0,
223
- copyOnEnter: !0
224
- }), t.conversion.attributeToElement({
225
- model: c,
226
- view: "i",
227
- upcastAlso: ["em", { styles: { "font-style": "italic" } }]
228
- }), t.commands.add(c, new p(t, c)), t.keystrokes.set("CTRL+I", c), t.accessibility.addKeystrokeInfos({ keystrokes: [{
229
- label: e("Italic text"),
230
- keystroke: "CTRL+I"
231
- }] });
232
- }
233
- };
234
- /**
235
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
236
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
237
- */
238
- const h = "italic";
239
- var O = class extends u {
240
- /**
241
- * @inheritDoc
242
- */
243
- static get pluginName() {
244
- return "ItalicUI";
245
- }
246
- /**
247
- * @inheritDoc
248
- */
249
- static get isOfficialPlugin() {
250
- return !0;
251
- }
252
- /**
253
- * @inheritDoc
254
- */
255
- init() {
256
- const t = this.editor, e = t.locale.t, i = I({
257
- editor: t,
258
- commandName: h,
259
- plugin: this,
260
- icon: C,
261
- keystroke: "CTRL+I",
262
- label: e("Italic")
263
- });
264
- t.ui.componentFactory.add(h, () => i(y)), t.ui.componentFactory.add("menuBar:italic", () => i(g));
265
- }
266
- };
267
- /**
268
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
269
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
270
- */
271
- var V = class extends u {
272
- /**
273
- * @inheritDoc
274
- */
275
- static get requires() {
276
- return [E, O];
277
- }
278
- /**
279
- * @inheritDoc
280
- */
281
- static get pluginName() {
282
- return "Italic";
283
- }
284
- /**
285
- * @inheritDoc
286
- */
287
- static get isOfficialPlugin() {
288
- return !0;
289
- }
290
- };
291
- export {
292
- p as AttributeCommand,
293
- S as Bold,
294
- K as BoldEditing,
295
- w as BoldUI,
296
- V as Italic,
297
- E as ItalicEditing,
298
- O as ItalicUI,
299
- I as _getBasicStylesButtonCreator
300
- };
301
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js"],"sourcesContent":["/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nimport { Command, Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { ModelDocumentSelection } from \"@ckeditor/ckeditor5-engine\";\nimport { IconBold, IconCode, IconItalic, IconStrikethrough, IconSubscript, IconSuperscript, IconUnderline } from \"@ckeditor/ckeditor5-icons\";\nimport { ButtonView, MenuBarMenuListItemButtonView } from \"@ckeditor/ckeditor5-ui\";\nimport { TwoStepCaretMovement, inlineHighlight } from \"@ckeditor/ckeditor5-typing\";\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/attributecommand\n*/\n/**\n* An extension of the base {@link module:core/command~Command} class, which provides utilities for a command\n* that toggles a single attribute on a text or an element.\n*\n* `AttributeCommand` uses {@link module:engine/model/document~ModelDocument#selection}\n* to decide which nodes (if any) should be changed, and applies or removes the attribute from them.\n*\n* The command checks the {@link module:engine/model/model~Model#schema} to decide if it can be enabled\n* for the current selection and to which nodes the attribute can be applied.\n*/\nvar AttributeCommand = class extends Command {\n\t/**\n\t* The attribute that will be set by the command.\n\t*/\n\tattributeKey;\n\t/**\n\t* @param attributeKey Attribute that will be set by the command.\n\t*/\n\tconstructor(editor, attributeKey) {\n\t\tsuper(editor);\n\t\tthis.attributeKey = attributeKey;\n\t}\n\t/**\n\t* Updates the command's {@link #value} and {@link #isEnabled} based on the current selection.\n\t*/\n\trefresh() {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tthis.value = this._getValueFromFirstAllowedNode();\n\t\tthis.isEnabled = model.schema.checkAttributeInSelection(doc.selection, this.attributeKey);\n\t}\n\t/**\n\t* Executes the command &ndash; applies the attribute to the selection or removes it from the selection.\n\t*\n\t* If the command is active (`value == true`), it will remove attributes. Otherwise, it will set attributes.\n\t*\n\t* The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:\n\t*\n\t* * If the selection is on a range, the command applies the attribute to all nodes in that range\n\t* (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).\n\t* * If the selection is collapsed in a non-empty node, the command applies the attribute to the\n\t* {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).\n\t* * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note\n\t* that the selection inherits all attributes from a node if it is in an empty node).\n\t*\n\t* @fires execute\n\t* @param options Command options.\n\t* @param options.forceValue If set, it will force the command behavior. If `true`,\n\t* the command will apply the attribute, otherwise the command will remove the attribute.\n\t* If not set, the command will look for its current value to decide what it should do.\n\t*/\n\texecute(options = {}) {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst value = options.forceValue === void 0 ? !this.value : options.forceValue;\n\t\tmodel.change((writer) => {\n\t\t\tif (selection.isCollapsed) if (value) writer.setSelectionAttribute(this.attributeKey, true);\n\t\t\telse writer.removeSelectionAttribute(this.attributeKey);\n\t\t\telse {\n\t\t\t\tconst ranges = model.schema.getValidRanges(selection.getRanges(), this.attributeKey, { includeEmptyRanges: true });\n\t\t\t\tfor (const range of ranges) {\n\t\t\t\t\tlet itemOrRange = range;\n\t\t\t\t\tlet attributeKey = this.attributeKey;\n\t\t\t\t\tif (range.isCollapsed) {\n\t\t\t\t\t\titemOrRange = range.start.parent;\n\t\t\t\t\t\tattributeKey = ModelDocumentSelection._getStoreAttributeKey(this.attributeKey);\n\t\t\t\t\t}\n\t\t\t\t\tif (value) writer.setAttribute(attributeKey, value, itemOrRange);\n\t\t\t\t\telse writer.removeAttribute(attributeKey, itemOrRange);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Checks the attribute value of the first node in the selection that allows the attribute.\n\t* For the collapsed selection returns the selection attribute.\n\t*\n\t* @returns The attribute value.\n\t*/\n\t_getValueFromFirstAllowedNode() {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\t\tif (selection.isCollapsed) return selection.hasAttribute(this.attributeKey);\n\t\tfor (const range of selection.getRanges()) for (const item of range.getItems()) if (schema.checkAttribute(item, this.attributeKey)) return item.hasAttribute(this.attributeKey);\n\t\treturn false;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/bold/boldediting\n*/\nconst BOLD$1 = \"bold\";\n/**\n* The bold editing feature.\n*\n* It registers the `'bold'` command and introduces the `bold` attribute in the model which renders to the view\n* as a `<strong>` element.\n*/\nvar BoldEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"BoldEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: BOLD$1 });\n\t\teditor.model.schema.setAttributeProperties(BOLD$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: BOLD$1,\n\t\t\tview: \"strong\",\n\t\t\tupcastAlso: [\"b\", (viewElement) => {\n\t\t\t\tconst fontWeight = viewElement.getStyle(\"font-weight\");\n\t\t\t\tif (!fontWeight) return null;\n\t\t\t\tif (fontWeight == \"bold\" || Number(fontWeight) >= 600) return {\n\t\t\t\t\tname: true,\n\t\t\t\t\tstyles: [\"font-weight\"]\n\t\t\t\t};\n\t\t\t\treturn null;\n\t\t\t}]\n\t\t});\n\t\teditor.commands.add(BOLD$1, new AttributeCommand(editor, BOLD$1));\n\t\teditor.keystrokes.set(\"CTRL+B\", BOLD$1);\n\t\teditor.accessibility.addKeystrokeInfos({ keystrokes: [{\n\t\t\tlabel: t(\"Bold text\"),\n\t\t\tkeystroke: \"CTRL+B\"\n\t\t}] });\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Returns a function that creates a (toolbar or menu bar) button for a basic style feature.\n*\n* @internal\n*/\nfunction getButtonCreator({ editor, commandName, plugin, icon, label, keystroke }) {\n\treturn (ButtonClass) => {\n\t\tconst command = editor.commands.get(commandName);\n\t\tconst view = new ButtonClass(editor.locale);\n\t\tview.set({\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\tkeystroke,\n\t\t\tisToggleable: true\n\t\t});\n\t\tview.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\tview.bind(\"isOn\").to(command, \"value\");\n\t\tif (view instanceof MenuBarMenuListItemButtonView) view.set({ role: \"menuitemcheckbox\" });\n\t\telse view.set({ tooltip: true });\n\t\tplugin.listenTo(view, \"execute\", () => {\n\t\t\teditor.execute(commandName);\n\t\t\teditor.editing.view.focus();\n\t\t});\n\t\treturn view;\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/bold/boldui\n*/\nconst BOLD = \"bold\";\n/**\n* The bold UI feature. It introduces the Bold button.\n*/\nvar BoldUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"BoldUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: BOLD,\n\t\t\tplugin: this,\n\t\t\ticon: IconBold,\n\t\t\tlabel: t(\"Bold\"),\n\t\t\tkeystroke: \"CTRL+B\"\n\t\t});\n\t\teditor.ui.componentFactory.add(BOLD, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:bold\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/bold\n*/\n/**\n* The bold feature.\n*\n* For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n* and the {@glink api/basic-styles package page}.\n*\n* This is a \"glue\" plugin which loads the {@link module:basic-styles/bold/boldediting~BoldEditing bold editing feature}\n* and {@link module:basic-styles/bold/boldui~BoldUI bold UI feature}.\n*/\nvar Bold = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [BoldEditing, BoldUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Bold\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/code/codeediting\n*/\nconst CODE$1 = \"code\";\nconst HIGHLIGHT_CLASS = \"ck-code_selected\";\n/**\n* The code editing feature.\n*\n* It registers the `'code'` command and introduces the `code` attribute in the model which renders to the view\n* as a `<code>` element.\n*/\nvar CodeEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"CodeEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [TwoStepCaretMovement];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: CODE$1 });\n\t\teditor.model.schema.setAttributeProperties(CODE$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: false\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: CODE$1,\n\t\t\tview: \"code\"\n\t\t});\n\t\teditor.commands.add(CODE$1, new AttributeCommand(editor, CODE$1));\n\t\teditor.plugins.get(TwoStepCaretMovement).registerAttribute(CODE$1);\n\t\tinlineHighlight(editor, CODE$1, \"code\", HIGHLIGHT_CLASS);\n\t\teditor.accessibility.addKeystrokeInfos({ keystrokes: [{\n\t\t\tlabel: t(\"Move out of an inline code style\"),\n\t\t\tkeystroke: [[\"arrowleft\", \"arrowleft\"], [\"arrowright\", \"arrowright\"]]\n\t\t}] });\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/code/codeui\n*/\nconst CODE = \"code\";\n/**\n* The code UI feature. It introduces the Code button.\n*/\nvar CodeUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"CodeUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: CODE,\n\t\t\tplugin: this,\n\t\t\ticon: IconCode,\n\t\t\tlabel: t(\"Code\")\n\t\t});\n\t\teditor.ui.componentFactory.add(CODE, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:code\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/code\n*/\n/**\n* The code feature.\n*\n* For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n* and the {@glink api/basic-styles package page}.\n*\n* This is a \"glue\" plugin which loads the {@link module:basic-styles/code/codeediting~CodeEditing code editing feature}\n* and {@link module:basic-styles/code/codeui~CodeUI code UI feature}.\n*/\nvar Code = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [CodeEditing, CodeUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Code\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/italic/italicediting\n*/\nconst ITALIC$1 = \"italic\";\n/**\n* The italic editing feature.\n*\n* It registers the `'italic'` command, the <kbd>Ctrl+I</kbd> keystroke and introduces the `italic` attribute in the model\n* which renders to the view as an `<i>` element.\n*/\nvar ItalicEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ItalicEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: ITALIC$1 });\n\t\teditor.model.schema.setAttributeProperties(ITALIC$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: ITALIC$1,\n\t\t\tview: \"i\",\n\t\t\tupcastAlso: [\"em\", { styles: { \"font-style\": \"italic\" } }]\n\t\t});\n\t\teditor.commands.add(ITALIC$1, new AttributeCommand(editor, ITALIC$1));\n\t\teditor.keystrokes.set(\"CTRL+I\", ITALIC$1);\n\t\teditor.accessibility.addKeystrokeInfos({ keystrokes: [{\n\t\t\tlabel: t(\"Italic text\"),\n\t\t\tkeystroke: \"CTRL+I\"\n\t\t}] });\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/italic/italicui\n*/\nconst ITALIC = \"italic\";\n/**\n* The italic UI feature. It introduces the Italic button.\n*/\nvar ItalicUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ItalicUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: ITALIC,\n\t\t\tplugin: this,\n\t\t\ticon: IconItalic,\n\t\t\tkeystroke: \"CTRL+I\",\n\t\t\tlabel: t(\"Italic\")\n\t\t});\n\t\teditor.ui.componentFactory.add(ITALIC, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:italic\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/italic\n*/\n/**\n* The italic feature.\n*\n* For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n* and the {@glink api/basic-styles package page}.\n*\n* This is a \"glue\" plugin which loads the {@link module:basic-styles/italic/italicediting~ItalicEditing} and\n* {@link module:basic-styles/italic/italicui~ItalicUI} plugins.\n*/\nvar Italic = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ItalicEditing, ItalicUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Italic\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/strikethrough/strikethroughediting\n*/\nconst STRIKETHROUGH$1 = \"strikethrough\";\n/**\n* The strikethrough editing feature.\n*\n* It registers the `'strikethrough'` command, the <kbd>Ctrl+Shift+X</kbd> keystroke and introduces the\n* `strikethroughsthrough` attribute in the model which renders to the view\n* as a `<s>` element.\n*/\nvar StrikethroughEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"StrikethroughEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: STRIKETHROUGH$1 });\n\t\teditor.model.schema.setAttributeProperties(STRIKETHROUGH$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: STRIKETHROUGH$1,\n\t\t\tview: \"s\",\n\t\t\tupcastAlso: [\n\t\t\t\t\"del\",\n\t\t\t\t\"strike\",\n\t\t\t\t{ styles: { \"text-decoration\": \"line-through\" } }\n\t\t\t]\n\t\t});\n\t\teditor.commands.add(STRIKETHROUGH$1, new AttributeCommand(editor, STRIKETHROUGH$1));\n\t\teditor.keystrokes.set(\"CTRL+SHIFT+X\", \"strikethrough\");\n\t\teditor.accessibility.addKeystrokeInfos({ keystrokes: [{\n\t\t\tlabel: t(\"Strikethrough text\"),\n\t\t\tkeystroke: \"CTRL+SHIFT+X\"\n\t\t}] });\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/strikethrough/strikethroughui\n*/\nconst STRIKETHROUGH = \"strikethrough\";\n/**\n* The strikethrough UI feature. It introduces the Strikethrough button.\n*/\nvar StrikethroughUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"StrikethroughUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: STRIKETHROUGH,\n\t\t\tplugin: this,\n\t\t\ticon: IconStrikethrough,\n\t\t\tkeystroke: \"CTRL+SHIFT+X\",\n\t\t\tlabel: t(\"Strikethrough\")\n\t\t});\n\t\teditor.ui.componentFactory.add(STRIKETHROUGH, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:strikethrough\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/strikethrough\n*/\n/**\n* The strikethrough feature.\n*\n* For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n* and the {@glink api/basic-styles package page}.\n*\n* This is a \"glue\" plugin which loads the {@link module:basic-styles/strikethrough/strikethroughediting~StrikethroughEditing} and\n* {@link module:basic-styles/strikethrough/strikethroughui~StrikethroughUI} plugins.\n*/\nvar Strikethrough = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [StrikethroughEditing, StrikethroughUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Strikethrough\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/subscript/subscriptediting\n*/\nconst SUBSCRIPT$1 = \"subscript\";\n/**\n* The subscript editing feature.\n*\n* It registers the `sub` command and introduces the `sub` attribute in the model which renders to the view\n* as a `<sub>` element.\n*/\nvar SubscriptEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"SubscriptEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: SUBSCRIPT$1 });\n\t\teditor.model.schema.setAttributeProperties(SUBSCRIPT$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: SUBSCRIPT$1,\n\t\t\tview: \"sub\",\n\t\t\tupcastAlso: [{ styles: { \"vertical-align\": \"sub\" } }]\n\t\t});\n\t\teditor.commands.add(SUBSCRIPT$1, new AttributeCommand(editor, SUBSCRIPT$1));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/subscript/subscriptui\n*/\nconst SUBSCRIPT = \"subscript\";\n/**\n* The subscript UI feature. It introduces the Subscript button.\n*/\nvar SubscriptUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"SubscriptUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: SUBSCRIPT,\n\t\t\tplugin: this,\n\t\t\ticon: IconSubscript,\n\t\t\tlabel: t(\"Subscript\")\n\t\t});\n\t\teditor.ui.componentFactory.add(SUBSCRIPT, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:subscript\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/subscript\n*/\n/**\n* The subscript feature.\n*\n* It loads the {@link module:basic-styles/subscript/subscriptediting~SubscriptEditing} and\n* {@link module:basic-styles/subscript/subscriptui~SubscriptUI} plugins.\n*/\nvar Subscript = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [SubscriptEditing, SubscriptUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Subscript\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/superscript/superscriptediting\n*/\nconst SUPERSCRIPT$1 = \"superscript\";\n/**\n* The superscript editing feature.\n*\n* It registers the `super` command and introduces the `super` attribute in the model which renders to the view\n* as a `<super>` element.\n*/\nvar SuperscriptEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"SuperscriptEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: SUPERSCRIPT$1 });\n\t\teditor.model.schema.setAttributeProperties(SUPERSCRIPT$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: SUPERSCRIPT$1,\n\t\t\tview: \"sup\",\n\t\t\tupcastAlso: [{ styles: { \"vertical-align\": \"super\" } }]\n\t\t});\n\t\teditor.commands.add(SUPERSCRIPT$1, new AttributeCommand(editor, SUPERSCRIPT$1));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/superscript/superscriptui\n*/\nconst SUPERSCRIPT = \"superscript\";\n/**\n* The superscript UI feature. It introduces the Superscript button.\n*/\nvar SuperscriptUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"SuperscriptUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: SUPERSCRIPT,\n\t\t\tplugin: this,\n\t\t\ticon: IconSuperscript,\n\t\t\tlabel: t(\"Superscript\")\n\t\t});\n\t\teditor.ui.componentFactory.add(SUPERSCRIPT, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:superscript\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/superscript\n*/\n/**\n* The superscript feature.\n*\n* It loads the {@link module:basic-styles/superscript/superscriptediting~SuperscriptEditing} and\n* {@link module:basic-styles/superscript/superscriptui~SuperscriptUI} plugins.\n*/\nvar Superscript = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [SuperscriptEditing, SuperscriptUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Superscript\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/underline/underlineediting\n*/\nconst UNDERLINE$1 = \"underline\";\n/**\n* The underline editing feature.\n*\n* It registers the `'underline'` command, the <kbd>Ctrl+U</kbd> keystroke\n* and introduces the `underline` attribute in the model which renders to the view as an `<u>` element.\n*/\nvar UnderlineEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"UnderlineEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\teditor.model.schema.extend(\"$text\", { allowAttributes: UNDERLINE$1 });\n\t\teditor.model.schema.setAttributeProperties(UNDERLINE$1, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t});\n\t\teditor.conversion.attributeToElement({\n\t\t\tmodel: UNDERLINE$1,\n\t\t\tview: \"u\",\n\t\t\tupcastAlso: { styles: { \"text-decoration\": \"underline\" } }\n\t\t});\n\t\teditor.commands.add(UNDERLINE$1, new AttributeCommand(editor, UNDERLINE$1));\n\t\teditor.keystrokes.set(\"CTRL+U\", \"underline\");\n\t\teditor.accessibility.addKeystrokeInfos({ keystrokes: [{\n\t\t\tlabel: t(\"Underline text\"),\n\t\t\tkeystroke: \"CTRL+U\"\n\t\t}] });\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/underline/underlineui\n*/\nconst UNDERLINE = \"underline\";\n/**\n* The underline UI feature. It introduces the Underline button.\n*/\nvar UnderlineUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"UnderlineUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst createButton = getButtonCreator({\n\t\t\teditor,\n\t\t\tcommandName: UNDERLINE,\n\t\t\tplugin: this,\n\t\t\ticon: IconUnderline,\n\t\t\tlabel: t(\"Underline\"),\n\t\t\tkeystroke: \"CTRL+U\"\n\t\t});\n\t\teditor.ui.componentFactory.add(UNDERLINE, () => createButton(ButtonView));\n\t\teditor.ui.componentFactory.add(\"menuBar:underline\", () => createButton(MenuBarMenuListItemButtonView));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module basic-styles/underline\n*/\n/**\n* The underline feature.\n*\n* For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n* and the {@glink api/basic-styles package page}.\n*\n* This is a \"glue\" plugin which loads the {@link module:basic-styles/underline/underlineediting~UnderlineEditing} and\n* {@link module:basic-styles/underline/underlineui~UnderlineUI} plugins.\n*/\nvar Underline = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [UnderlineEditing, UnderlineUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Underline\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n\nexport { AttributeCommand, Bold, BoldEditing, BoldUI, Code, CodeEditing, CodeUI, Italic, ItalicEditing, ItalicUI, Strikethrough, StrikethroughEditing, StrikethroughUI, Subscript, SubscriptEditing, SubscriptUI, Superscript, SuperscriptEditing, SuperscriptUI, Underline, UnderlineEditing, UnderlineUI, getButtonCreator as _getBasicStylesButtonCreator };\n//# sourceMappingURL=index.js.map"],"names":["AttributeCommand","Command","editor","attributeKey","__publicField","model","doc","options","selection","value","writer","ranges","range","itemOrRange","ModelDocumentSelection","schema","item","BOLD$1","BoldEditing","Plugin","t","viewElement","fontWeight","getButtonCreator","commandName","plugin","icon","label","keystroke","ButtonClass","command","view","MenuBarMenuListItemButtonView","BOLD","BoldUI","createButton","IconBold","ButtonView","Bold","ITALIC$1","ItalicEditing","ITALIC","ItalicUI","IconItalic","Italic"],"mappings":";;;;;;;;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAiBG,IAACA,IAAmB,cAAcC,EAAQ;AAAA;AAAA;AAAA;AAAA,EAQ5C,YAAYC,GAAQC,GAAc;AACjC,UAAMD,CAAM;AALb;AAAA;AAAA;AAAA,IAAAE,EAAA;AAMC,SAAK,eAAeD;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;AACT,UAAME,IAAQ,KAAK,OAAO,OACpBC,IAAMD,EAAM;AAClB,SAAK,QAAQ,KAAK,8BAA6B,GAC/C,KAAK,YAAYA,EAAM,OAAO,0BAA0BC,EAAI,WAAW,KAAK,YAAY;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,QAAQC,IAAU,IAAI;AACrB,UAAMF,IAAQ,KAAK,OAAO,OACpBG,IAAYH,EAAM,SAAS,WAC3BI,IAAQF,EAAQ,eAAe,SAAS,CAAC,KAAK,QAAQA,EAAQ;AACpE,IAAAF,EAAM,OAAO,CAACK,MAAW;AACxB,UAAIF,EAAU,YAAa,CAAIC,IAAOC,EAAO,sBAAsB,KAAK,cAAc,EAAI,IACrFA,EAAO,yBAAyB,KAAK,YAAY;AAAA,WACjD;AACJ,cAAMC,IAASN,EAAM,OAAO,eAAeG,EAAU,UAAS,GAAI,KAAK,cAAc,EAAE,oBAAoB,GAAI,CAAE;AACjH,mBAAWI,KAASD,GAAQ;AAC3B,cAAIE,IAAcD,GACdT,IAAe,KAAK;AACxB,UAAIS,EAAM,gBACTC,IAAcD,EAAM,MAAM,QAC1BT,IAAeW,EAAuB,sBAAsB,KAAK,YAAY,IAE1EL,IAAOC,EAAO,aAAaP,GAAcM,GAAOI,CAAW,IAC1DH,EAAO,gBAAgBP,GAAcU,CAAW;AAAA,QACtD;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gCAAgC;AAC/B,UAAMR,IAAQ,KAAK,OAAO,OACpBU,IAASV,EAAM,QACfG,IAAYH,EAAM,SAAS;AACjC,QAAIG,EAAU,YAAa,QAAOA,EAAU,aAAa,KAAK,YAAY;AAC1E,eAAWI,KAASJ,EAAU,UAAS,EAAI,YAAWQ,KAAQJ,EAAM,WAAY,KAAIG,EAAO,eAAeC,GAAM,KAAK,YAAY,EAAG,QAAOA,EAAK,aAAa,KAAK,YAAY;AAC9K,WAAO;AAAA,EACR;AACD;AAEA;AAAA;AAAA;AAAA;AAOA,MAAMC,IAAS;AAOZ,IAACC,IAAc,cAAcC,EAAO;AAAA;AAAA;AAAA;AAAA,EAItC,WAAW,aAAa;AACvB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,mBAAmB;AAC7B,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACN,UAAMjB,IAAS,KAAK,QACdkB,IAAI,KAAK,OAAO;AACtB,IAAAlB,EAAO,MAAM,OAAO,OAAO,SAAS,EAAE,iBAAiBe,GAAQ,GAC/Df,EAAO,MAAM,OAAO,uBAAuBe,GAAQ;AAAA,MAClD,cAAc;AAAA,MACd,aAAa;AAAA,IAChB,CAAG,GACDf,EAAO,WAAW,mBAAmB;AAAA,MACpC,OAAOe;AAAA,MACP,MAAM;AAAA,MACN,YAAY,CAAC,KAAK,CAACI,MAAgB;AAClC,cAAMC,IAAaD,EAAY,SAAS,aAAa;AACrD,eAAKC,MACDA,KAAc,UAAU,OAAOA,CAAU,KAAK,OAAY;AAAA,UAC7D,MAAM;AAAA,UACN,QAAQ,CAAC,aAAa;AAAA,QAC3B,IAJ4B;AAAA,MAMzB,CAAC;AAAA,IACJ,CAAG,GACDpB,EAAO,SAAS,IAAIe,GAAQ,IAAIjB,EAAiBE,GAAQe,CAAM,CAAC,GAChEf,EAAO,WAAW,IAAI,UAAUe,CAAM,GACtCf,EAAO,cAAc,kBAAkB,EAAE,YAAY,CAAC;AAAA,MACrD,OAAOkB,EAAE,WAAW;AAAA,MACpB,WAAW;AAAA,IACd,CAAG,GAAG;AAAA,EACL;AACD;AAEA;AAAA;AAAA;AAAA;AASA,SAASG,EAAiB,EAAE,QAAArB,GAAQ,aAAAsB,GAAa,QAAAC,GAAQ,MAAAC,GAAM,OAAAC,GAAO,WAAAC,KAAa;AAClF,SAAO,CAACC,MAAgB;AACvB,UAAMC,IAAU5B,EAAO,SAAS,IAAIsB,CAAW,GACzCO,IAAO,IAAIF,EAAY3B,EAAO,MAAM;AAC1C,WAAA6B,EAAK,IAAI;AAAA,MACR,OAAAJ;AAAA,MACA,MAAAD;AAAA,MACA,WAAAE;AAAA,MACA,cAAc;AAAA,IACjB,CAAG,GACDG,EAAK,KAAK,WAAW,EAAE,GAAGD,GAAS,WAAW,GAC9CC,EAAK,KAAK,MAAM,EAAE,GAAGD,GAAS,OAAO,GACjCC,aAAgBC,IAA+BD,EAAK,IAAI,EAAE,MAAM,oBAAoB,IACnFA,EAAK,IAAI,EAAE,SAAS,GAAI,CAAE,GAC/BN,EAAO,SAASM,GAAM,WAAW,MAAM;AACtC,MAAA7B,EAAO,QAAQsB,CAAW,GAC1BtB,EAAO,QAAQ,KAAK,MAAK;AAAA,IAC1B,CAAC,GACM6B;AAAA,EACR;AACD;AAEA;AAAA;AAAA;AAAA;AAOA,MAAME,IAAO;AAIV,IAACC,IAAS,cAAcf,EAAO;AAAA;AAAA;AAAA;AAAA,EAIjC,WAAW,aAAa;AACvB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,mBAAmB;AAC7B,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACN,UAAMjB,IAAS,KAAK,QACdkB,IAAIlB,EAAO,OAAO,GAClBiC,IAAeZ,EAAiB;AAAA,MACrC,QAAArB;AAAA,MACA,aAAa+B;AAAA,MACb,QAAQ;AAAA,MACR,MAAMG;AAAAA,MACN,OAAOhB,EAAE,MAAM;AAAA,MACf,WAAW;AAAA,IACd,CAAG;AACD,IAAAlB,EAAO,GAAG,iBAAiB,IAAI+B,GAAM,MAAME,EAAaE,CAAU,CAAC,GACnEnC,EAAO,GAAG,iBAAiB,IAAI,gBAAgB,MAAMiC,EAAaH,CAA6B,CAAC;AAAA,EACjG;AACD;AAEA;AAAA;AAAA;AAAA;AAgBG,IAACM,IAAO,cAAcnB,EAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,WAAW,WAAW;AACrB,WAAO,CAACD,GAAagB,CAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,aAAa;AACvB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,mBAAmB;AAC7B,WAAO;AAAA,EACR;AACD;AA4IA;AAAA;AAAA;AAAA;AAOA,MAAMK,IAAW;AAOd,IAACC,IAAgB,cAAcrB,EAAO;AAAA;AAAA;AAAA;AAAA,EAIxC,WAAW,aAAa;AACvB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,mBAAmB;AAC7B,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACN,UAAMjB,IAAS,KAAK,QACdkB,IAAI,KAAK,OAAO;AACtB,IAAAlB,EAAO,MAAM,OAAO,OAAO,SAAS,EAAE,iBAAiBqC,GAAU,GACjErC,EAAO,MAAM,OAAO,uBAAuBqC,GAAU;AAAA,MACpD,cAAc;AAAA,MACd,aAAa;AAAA,IAChB,CAAG,GACDrC,EAAO,WAAW,mBAAmB;AAAA,MACpC,OAAOqC;AAAA,MACP,MAAM;AAAA,MACN,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,WAAU,CAAE;AAAA,IAC5D,CAAG,GACDrC,EAAO,SAAS,IAAIqC,GAAU,IAAIvC,EAAiBE,GAAQqC,CAAQ,CAAC,GACpErC,EAAO,WAAW,IAAI,UAAUqC,CAAQ,GACxCrC,EAAO,cAAc,kBAAkB,EAAE,YAAY,CAAC;AAAA,MACrD,OAAOkB,EAAE,aAAa;AAAA,MACtB,WAAW;AAAA,IACd,CAAG,GAAG;AAAA,EACL;AACD;AAEA;AAAA;AAAA;AAAA;AAOA,MAAMqB,IAAS;AAIZ,IAACC,IAAW,cAAcvB,EAAO;AAAA;AAAA;AAAA;AAAA,EAInC,WAAW,aAAa;AACvB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,mBAAmB;AAC7B,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACN,UAAMjB,IAAS,KAAK,QACdkB,IAAIlB,EAAO,OAAO,GAClBiC,IAAeZ,EAAiB;AAAA,MACrC,QAAArB;AAAA,MACA,aAAauC;AAAA,MACb,QAAQ;AAAA,MACR,MAAME;AAAAA,MACN,WAAW;AAAA,MACX,OAAOvB,EAAE,QAAQ;AAAA,IACpB,CAAG;AACD,IAAAlB,EAAO,GAAG,iBAAiB,IAAIuC,GAAQ,MAAMN,EAAaE,CAAU,CAAC,GACrEnC,EAAO,GAAG,iBAAiB,IAAI,kBAAkB,MAAMiC,EAAaH,CAA6B,CAAC;AAAA,EACnG;AACD;AAEA;AAAA;AAAA;AAAA;AAgBG,IAACY,IAAS,cAAczB,EAAO;AAAA;AAAA;AAAA;AAAA,EAIjC,WAAW,WAAW;AACrB,WAAO,CAACqB,GAAeE,CAAQ;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,aAAa;AACvB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,mBAAmB;AAC7B,WAAO;AAAA,EACR;AACD;","x_google_ignoreList":[0]}