@ctzy-web-client/plugin-component-vue 1.0.26 → 1.0.27

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 (228) hide show
  1. package/es/_virtual/_plugin-vue_export-helper.mjs +11 -0
  2. package/es/advance-select/advance-operation.mjs +48 -51
  3. package/es/advance-select/advance-option.mjs +128 -163
  4. package/es/advance-select/advance-option.vue_vue_type_style_index_0_scoped_bc8f5626_lang.mjs +11 -5
  5. package/es/advance-select/advance-select.mjs +323 -370
  6. package/es/advance-select/events-helpers.mjs +9 -0
  7. package/es/advance-select/index.mjs +9 -0
  8. package/es/advance-select/use-advance-option.mjs +9 -0
  9. package/es/advance-select/use-advance-select.mjs +9 -0
  10. package/es/application-slot/application-slot.mjs +9 -0
  11. package/es/application-slot/breadcrumb-item.mjs +26 -20
  12. package/es/application-slot/header-tools-item.mjs +26 -20
  13. package/es/application-slot/index.mjs +9 -0
  14. package/es/breadcrumb-select/breadcrumb-select.mjs +123 -137
  15. package/es/breadcrumb-select/index.mjs +9 -0
  16. package/es/components.mjs +9 -0
  17. package/es/contextmenu/contextmenu-item.mjs +24 -19
  18. package/es/contextmenu/contextmenu.mjs +68 -73
  19. package/es/contextmenu/index.mjs +9 -0
  20. package/es/contextmenu/use-contextmenu.mjs +10 -1
  21. package/es/data-form/data-form-item.mjs +41 -49
  22. package/es/data-form/data-form.mjs +176 -213
  23. package/es/data-form/dynamic-component.mjs +9 -0
  24. package/es/data-form/form-components/Blots/AtBlot.mjs +9 -0
  25. package/es/data-form/form-components/bwa-date-picker.mjs +50 -51
  26. package/es/data-form/form-components/bwa-date-time-picker.mjs +55 -56
  27. package/es/data-form/form-components/bwa-input-float.mjs +48 -48
  28. package/es/data-form/form-components/bwa-input-integer.mjs +61 -68
  29. package/es/data-form/form-components/bwa-input.mjs +43 -43
  30. package/es/data-form/form-components/bwa-multi-select.mjs +40 -40
  31. package/es/data-form/form-components/bwa-rich-text-tinymce.mjs +230 -555
  32. package/es/data-form/form-components/bwa-rich-text.mjs +326 -404
  33. package/es/data-form/form-components/bwa-select.mjs +81 -84
  34. package/es/data-form/form-components/bwa-textarea.mjs +38 -38
  35. package/es/data-form/form-components/bwa-upload.mjs +160 -173
  36. package/es/data-form/form-components/bwa-user-multi-select.mjs +35 -35
  37. package/es/data-form/form-components/bwa-user-select.mjs +72 -86
  38. package/es/data-form/index.mjs +9 -0
  39. package/es/data-table/data-column-view.mjs +124 -146
  40. package/es/data-table/data-table-card.mjs +49 -48
  41. package/es/data-table/data-table-column.mjs +55 -58
  42. package/es/data-table/data-table.mjs +328 -404
  43. package/es/data-table/dynamic-component.mjs +9 -0
  44. package/es/data-table/index.mjs +9 -0
  45. package/es/data-table/use-datatable-drag.mjs +9 -0
  46. package/es/datatable-settings/datatable-settings.mjs +286 -328
  47. package/es/datatable-settings/index.mjs +9 -0
  48. package/es/date-range/date-picker.mjs +125 -131
  49. package/es/date-range/date-range.mjs +173 -216
  50. package/es/date-range/index.mjs +9 -0
  51. package/es/drag-list/constants.mjs +10 -0
  52. package/es/drag-list/drag-item.mjs +51 -56
  53. package/es/drag-list/drag-list.mjs +58 -60
  54. package/es/drag-list/index.mjs +9 -0
  55. package/es/drag-list/use-drag-list.mjs +10 -1
  56. package/es/dragable/constants.mjs +10 -0
  57. package/es/dragable/dragable-item.mjs +27 -23
  58. package/es/dragable/dragable-operation.mjs +33 -32
  59. package/es/dragable/dragable.mjs +33 -32
  60. package/es/dragable/index.mjs +9 -0
  61. package/es/dragable/use-dragable.mjs +9 -0
  62. package/es/filter-panel/conditions/condition.mjs +9 -0
  63. package/es/filter-panel/conditions/date-range-condition.mjs +51 -50
  64. package/es/filter-panel/conditions/department-condition/department-condition.mjs +82 -99
  65. package/es/filter-panel/conditions/department-condition/department-node.mjs +69 -73
  66. package/es/filter-panel/conditions/index.mjs +9 -0
  67. package/es/filter-panel/conditions/input-condition.mjs +88 -91
  68. package/es/filter-panel/conditions/multi-user-condition.mjs +66 -67
  69. package/es/filter-panel/conditions/multiple-menu-condition.mjs +44 -54
  70. package/es/filter-panel/conditions/single-menu-condition.mjs +71 -65
  71. package/es/filter-panel/conditions/single-user-condition.mjs +66 -67
  72. package/es/filter-panel/filter-panel-item.mjs +51 -55
  73. package/es/filter-panel/filter-panel.mjs +147 -156
  74. package/es/filter-panel/index.mjs +9 -0
  75. package/es/filter-panel/use-filter-panel-item.mjs +9 -0
  76. package/es/filter-panel/use-filter-panel.mjs +9 -0
  77. package/es/hooks/use-data/index.mjs +9 -0
  78. package/es/index.mjs +9 -0
  79. package/es/layout/index.mjs +9 -0
  80. package/es/layout/layout.mjs +87 -85
  81. package/es/make-installer.mjs +9 -0
  82. package/es/math/Rectangle.mjs +10 -0
  83. package/es/menu/index.mjs +9 -0
  84. package/es/menu/menu-item.mjs +65 -70
  85. package/es/menu/menu.mjs +64 -70
  86. package/es/node_modules/.pnpm/{@vueuse_core@9.6.0_vue@3.2.41 → @vueuse_core@9.13.0_vue@3.5.29_typescript@4.9.5_}/node_modules/@vueuse/core/index.mjs +680 -454
  87. package/es/node_modules/.pnpm/{@vueuse_shared@9.6.0_vue@3.2.41 → @vueuse_shared@9.13.0_vue@3.5.29_typescript@4.9.5_}/node_modules/@vueuse/shared/index.mjs +108 -46
  88. package/es/panel/index.mjs +9 -0
  89. package/es/panel/panel.mjs +49 -53
  90. package/es/panel-tabs/index.mjs +9 -0
  91. package/es/panel-tabs/panel-tabs.mjs +9 -0
  92. package/es/pct-filter-panel/index.mjs +9 -0
  93. package/es/pct-filter-panel/pct-compents/index.mjs +9 -0
  94. package/es/pct-filter-panel/pct-compents/pct-Input-condition.mjs +73 -75
  95. package/es/pct-filter-panel/pct-compents/pct-date-range-condition.mjs +77 -77
  96. package/es/pct-filter-panel/pct-compents/pct-multiple-menu-condition.mjs +345 -374
  97. package/es/pct-filter-panel/pct-compents/pct-multiple-menu-condition2.mjs +149 -154
  98. package/es/pct-filter-panel/pct-filter-panel-item.mjs +52 -56
  99. package/es/pct-filter-panel/pct-filter-panel.mjs +235 -248
  100. package/es/pct-filter-panel/use-filter-panel-item.mjs +9 -0
  101. package/es/pct-filter-panel/use-filter-panel.mjs +9 -0
  102. package/es/plugins.mjs +9 -0
  103. package/es/progress/index.mjs +9 -0
  104. package/es/progress/progress-item.mjs +71 -81
  105. package/es/progress/progress.mjs +74 -78
  106. package/es/progress/use-progress.mjs +9 -0
  107. package/es/utils/db.mjs +9 -0
  108. package/es/utils.css +1 -0
  109. package/es/utils.mjs +9 -0
  110. package/es/where-filter-panel/index.mjs +9 -1
  111. package/es/where-filter-panel/use-where-filter-panel.mjs +9 -0
  112. package/es/where-filter-panel/where-filter-panel.mjs +21 -15
  113. package/lib/_virtual/_plugin-vue_export-helper.js +11 -0
  114. package/lib/advance-select/advance-operation.js +47 -50
  115. package/lib/advance-select/advance-option.js +127 -162
  116. package/lib/advance-select/advance-option.vue_vue_type_style_index_0_scoped_bc8f5626_lang.js +11 -6
  117. package/lib/advance-select/advance-select.js +322 -369
  118. package/lib/advance-select/events-helpers.js +9 -0
  119. package/lib/advance-select/index.js +9 -0
  120. package/lib/advance-select/use-advance-option.js +9 -0
  121. package/lib/advance-select/use-advance-select.js +9 -0
  122. package/lib/application-slot/application-slot.js +9 -0
  123. package/lib/application-slot/breadcrumb-item.js +25 -19
  124. package/lib/application-slot/header-tools-item.js +25 -19
  125. package/lib/application-slot/index.js +9 -0
  126. package/lib/breadcrumb-select/breadcrumb-select.js +122 -136
  127. package/lib/breadcrumb-select/index.js +9 -0
  128. package/lib/components.js +9 -0
  129. package/lib/contextmenu/contextmenu-item.js +23 -18
  130. package/lib/contextmenu/contextmenu.js +67 -72
  131. package/lib/contextmenu/index.js +9 -0
  132. package/lib/contextmenu/use-contextmenu.js +10 -1
  133. package/lib/data-form/data-form-item.js +40 -48
  134. package/lib/data-form/data-form.js +175 -212
  135. package/lib/data-form/dynamic-component.js +9 -0
  136. package/lib/data-form/form-components/Blots/AtBlot.js +9 -0
  137. package/lib/data-form/form-components/bwa-date-picker.js +49 -50
  138. package/lib/data-form/form-components/bwa-date-time-picker.js +54 -55
  139. package/lib/data-form/form-components/bwa-input-float.js +47 -47
  140. package/lib/data-form/form-components/bwa-input-integer.js +60 -67
  141. package/lib/data-form/form-components/bwa-input.js +42 -42
  142. package/lib/data-form/form-components/bwa-multi-select.js +39 -39
  143. package/lib/data-form/form-components/bwa-rich-text-tinymce.js +229 -554
  144. package/lib/data-form/form-components/bwa-rich-text.js +325 -403
  145. package/lib/data-form/form-components/bwa-select.js +80 -83
  146. package/lib/data-form/form-components/bwa-textarea.js +37 -37
  147. package/lib/data-form/form-components/bwa-upload.js +159 -172
  148. package/lib/data-form/form-components/bwa-user-multi-select.js +34 -34
  149. package/lib/data-form/form-components/bwa-user-select.js +71 -85
  150. package/lib/data-form/index.js +9 -0
  151. package/lib/data-table/data-column-view.js +124 -146
  152. package/lib/data-table/data-table-card.js +49 -48
  153. package/lib/data-table/data-table-column.js +54 -57
  154. package/lib/data-table/data-table.js +327 -403
  155. package/lib/data-table/dynamic-component.js +9 -0
  156. package/lib/data-table/index.js +9 -0
  157. package/lib/data-table/use-datatable-drag.js +9 -0
  158. package/lib/datatable-settings/datatable-settings.js +285 -327
  159. package/lib/datatable-settings/index.js +9 -0
  160. package/lib/date-range/date-picker.js +124 -130
  161. package/lib/date-range/date-range.js +172 -215
  162. package/lib/date-range/index.js +9 -0
  163. package/lib/drag-list/constants.js +10 -0
  164. package/lib/drag-list/drag-item.js +50 -55
  165. package/lib/drag-list/drag-list.js +57 -59
  166. package/lib/drag-list/index.js +9 -0
  167. package/lib/drag-list/use-drag-list.js +10 -1
  168. package/lib/dragable/constants.js +10 -0
  169. package/lib/dragable/dragable-item.js +26 -22
  170. package/lib/dragable/dragable-operation.js +32 -31
  171. package/lib/dragable/dragable.js +32 -31
  172. package/lib/dragable/index.js +9 -0
  173. package/lib/dragable/use-dragable.js +9 -0
  174. package/lib/filter-panel/conditions/condition.js +9 -0
  175. package/lib/filter-panel/conditions/date-range-condition.js +50 -49
  176. package/lib/filter-panel/conditions/department-condition/department-condition.js +81 -98
  177. package/lib/filter-panel/conditions/department-condition/department-node.js +68 -72
  178. package/lib/filter-panel/conditions/index.js +9 -0
  179. package/lib/filter-panel/conditions/input-condition.js +87 -90
  180. package/lib/filter-panel/conditions/multi-user-condition.js +65 -66
  181. package/lib/filter-panel/conditions/multiple-menu-condition.js +43 -53
  182. package/lib/filter-panel/conditions/single-menu-condition.js +70 -64
  183. package/lib/filter-panel/conditions/single-user-condition.js +65 -66
  184. package/lib/filter-panel/filter-panel-item.js +50 -54
  185. package/lib/filter-panel/filter-panel.js +146 -155
  186. package/lib/filter-panel/index.js +9 -0
  187. package/lib/filter-panel/use-filter-panel-item.js +9 -0
  188. package/lib/filter-panel/use-filter-panel.js +9 -0
  189. package/lib/hooks/use-data/index.js +9 -0
  190. package/lib/index.js +9 -0
  191. package/lib/layout/index.js +9 -0
  192. package/lib/layout/layout.js +86 -84
  193. package/lib/make-installer.js +9 -0
  194. package/lib/math/Rectangle.js +10 -0
  195. package/lib/menu/index.js +9 -0
  196. package/lib/menu/menu-item.js +64 -69
  197. package/lib/menu/menu.js +63 -69
  198. package/lib/node_modules/.pnpm/{@vueuse_core@9.6.0_vue@3.2.41 → @vueuse_core@9.13.0_vue@3.5.29_typescript@4.9.5_}/node_modules/@vueuse/core/index.js +685 -451
  199. package/lib/node_modules/.pnpm/{@vueuse_shared@9.6.0_vue@3.2.41 → @vueuse_shared@9.13.0_vue@3.5.29_typescript@4.9.5_}/node_modules/@vueuse/shared/index.js +109 -44
  200. package/lib/panel/index.js +9 -0
  201. package/lib/panel/panel.js +48 -52
  202. package/lib/panel-tabs/index.js +9 -0
  203. package/lib/panel-tabs/panel-tabs.js +9 -0
  204. package/lib/pct-filter-panel/index.js +9 -0
  205. package/lib/pct-filter-panel/pct-compents/index.js +9 -0
  206. package/lib/pct-filter-panel/pct-compents/pct-Input-condition.js +72 -74
  207. package/lib/pct-filter-panel/pct-compents/pct-date-range-condition.js +76 -76
  208. package/lib/pct-filter-panel/pct-compents/pct-multiple-menu-condition.js +344 -373
  209. package/lib/pct-filter-panel/pct-compents/pct-multiple-menu-condition2.js +148 -153
  210. package/lib/pct-filter-panel/pct-filter-panel-item.js +51 -55
  211. package/lib/pct-filter-panel/pct-filter-panel.js +234 -247
  212. package/lib/pct-filter-panel/use-filter-panel-item.js +9 -0
  213. package/lib/pct-filter-panel/use-filter-panel.js +9 -0
  214. package/lib/plugins.js +9 -0
  215. package/lib/progress/index.js +9 -0
  216. package/lib/progress/progress-item.js +70 -80
  217. package/lib/progress/progress.js +73 -77
  218. package/lib/progress/use-progress.js +9 -0
  219. package/lib/utils/db.js +9 -0
  220. package/lib/utils.css +1 -0
  221. package/lib/utils.js +9 -0
  222. package/lib/where-filter-panel/index.js +9 -0
  223. package/lib/where-filter-panel/use-where-filter-panel.js +9 -0
  224. package/lib/where-filter-panel/where-filter-panel.js +20 -14
  225. package/package.json +1 -1
  226. package/style/index.css +1 -1
  227. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +0 -28
  228. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js +0 -32
@@ -13,566 +13,241 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
13
13
 
14
14
  var TinyMCEEditor__default = /*#__PURE__*/_interopDefaultLegacy(TinyMCEEditor);
15
15
 
16
+ // Inject __name helper
17
+ if (typeof __name === 'undefined') {
18
+ function __name(obj, name) {
19
+ Object.defineProperty(obj, "name", {
20
+ value: name,
21
+ configurable: true
22
+ });
23
+ }
24
+ }
16
25
  const _hoisted_1 = ["onClick"];
17
- // import { useActiveElement } from '@vueuse/core';
18
- // import { filter, fromEvent } from 'rxjs';
19
-
20
-
21
- const _sfc_main = {
22
- __name: 'bwa-rich-text-tinymce',
23
- props: {
24
- placeholder: {
25
- type: String,
26
- default: '',
27
- },
28
- modelValue: {
29
- type: null,
30
- },
31
- disabled: {
32
- type: Boolean,
33
- default: false,
34
- },
35
- },
36
- emits: ['update:modelValue'],
37
- setup(__props, { emit }) {
38
-
39
- const props = __props;
40
-
41
- defineOptions({
42
- name: 'BwaRichText',
43
- });
44
-
45
-
46
-
47
- let resolve = null;
48
-
49
- const setupPromise = new Promise((relv) => {
50
- resolve = relv;
51
- });
52
-
53
- const initOptions = {
54
- promotion: false,
55
- language: 'zh-Hans',
56
- setup: resolve,
57
- };
58
-
59
- // const DIGIAL_LETTER_REGEXP = /^[\da-z]/i;
60
-
61
-
62
-
63
- const ns = webBaseClientVue.useNamespace('rich-text');
64
-
65
- const fileService = webBaseClientVue.useService('FileService');
66
-
67
- /** @type {import('vue').Ref<HTMLElement>} */
68
- const editorRef = vue.ref(null);
69
- const tinyMCEEditorRef = vue.ref(null);
70
-
71
- // const editing = computed(() => {
72
- // const element = unref(useActiveElement());
73
-
74
- // if (!element.classList.contains('ql-editor')) {
75
- // return false;
76
- // }
77
-
78
- // const el = unref(editorRef);
79
-
80
- // return el?.contains(element) ?? false;
81
- // });
82
-
83
- const currentScope = vue.getCurrentScope();
84
-
85
- // const toolbarOptions = [
86
- // [{ header: [1, 2, 3, 4, 5, 6, false] }],
87
- // [{ font: [] }],
88
- // ['bold', 'italic', 'underline', 'strike'],
89
- // [{ align: [] }],
90
- // ['blockquote', 'code-block'],
91
- // [{ header: 1 }, { header: 2 }],
92
- // [{ list: 'ordered' }, { list: 'bullet' }],
93
- // [{ script: 'sub' }, { script: 'super' }],
94
- // [{ indent: '-1' }, { indent: '+1' }],
95
- // [{ color: [] }, { background: [] }],
96
- // ['clean'],
97
- // ];
98
-
99
- const value = vue.computed({
100
- get: () => props.modelValue || '',
101
- set: (v) => {
102
- emit('update:modelValue', v);
103
- },
104
- });
105
-
106
- // const updateImage = async (file) => {
107
- // if (!unref(fileService)) {
108
- // return;
109
- // }
110
-
111
- // const uploadFileResult = await unref(fileService).uploadFile(file);
112
-
113
- // if (uploadFileResult.code != 0) {
114
- // return uploadFileResult;
115
- // }
116
-
117
- // const fileID = uploadFileResult.data.id;
118
-
119
- // const filePathResult = await unref(fileService).getFilePath(fileID);
120
-
121
- // if (filePathResult.code != 0) {
122
- // return filePathResult;
123
- // }
124
-
125
- // return {
126
- // ...filePathResult,
127
- // data: { id: fileID, path: filePathResult.data },
128
- // };
129
- // };
130
-
131
- const focusing = vue.ref(false);
132
-
133
- const AT_REGEXP = /[^\da-zA-Z]@[^@]*$/;
134
-
135
- const atPersonInfos = vue.reactive({
136
- node: null,
137
- content: '',
138
- selection: null,
139
- index: -1,
140
- style: null,
141
- });
142
-
143
- const selectPersonSubject = new rxjs.Subject();
144
-
145
- const handlePersonSelect = selectPersonSubject.next.bind(selectPersonSubject);
146
-
147
- // const handlePersonSelect = () => {
148
- // if (!atPersonInfos.node) {
149
- // return;
150
- // }
151
-
152
- // const { node, index, content } = atPersonInfos;
153
-
154
- // const document = node.ownerDocument;
155
-
156
- // const documentFragment = document.createDocumentFragment();
157
-
158
- // if (index) {
159
- // const textNode = document.createTextNode(node.data.slice(0, index));
160
-
161
- // documentFragment.appendChild(textNode);
162
- // }
163
-
164
- // const span = document.createElement('span');
165
- // span.innerText = content;
166
-
167
- // documentFragment.appendChild(span);
168
-
169
- // const contentEndIndex = index + content.length;
170
- // if (contentEndIndex < node.data.length) {
171
- // const textNode = document.createTextNode(node.data.slice(contentEndIndex));
172
-
173
- // documentFragment.appendChild(textNode);
174
- // }
175
-
176
- // const parent = node.parentElement;
177
-
178
- // parent.insertBefore(documentFragment, node);
179
- // parent.removeChild(node);
180
-
181
- // // console.log(
182
- // // documentFragment
183
- // // atPersonInfos.node.data,
184
- // // atPersonInfos.index,
185
- // // atPersonInfos.content.length
186
- // // );
187
-
188
- // // atPersonInfos.node.data;
189
- // };
190
-
191
- window.atPersonInfos = atPersonInfos;
192
-
193
- vue.onMounted(async () => {
194
- const editor = await setupPromise;
195
-
196
- window.editor = editor;
197
-
198
- // const focusObservable = new Observable((observer) => {
199
- // editor.on('focus', observer.next.bind(observer));
200
-
201
- // return () => {
202
- // editor.off('focus', observer.next.bind(observer));
203
- // };
204
- // });
205
-
206
- // const blurObservable = new Observable((observer) => {
207
- // editor.on('blur', observer.next.bind(observer));
208
-
209
- // return () => {
210
- // editor.off('blur', observer.next.bind(observer));
211
- // };
212
- // });
213
-
214
- const inputObservable = new rxjs.Observable((observer) => {
215
- const next = observer.next.bind(observer);
216
- editor.on('input', next);
217
-
218
- return () => {
219
- editor.off('input', next);
220
- };
221
- });
222
-
223
- editor.on('change', (event) => {
224
- console.log(event);
225
- });
226
-
227
- const getSelection = (event) => {
228
- if (
229
- typeof event.target.nodeType === 'number' &&
230
- typeof event.target.tagName === 'string'
231
- ) {
232
- return event.target.ownerDocument.getSelection();
233
- }
234
-
235
- return event.target.iframeElement.contentDocument.getSelection();
236
- };
237
-
238
- const subject = new rxjs.Subject();
239
-
240
- inputObservable
241
- .pipe(
242
- rxjs.map((event) => {
243
- if (event.data !== '@') {
244
- return null;
245
- }
246
-
247
- const selection = event.currentTarget.ownerDocument.getSelection();
248
-
249
- const focusNode = selection.focusNode;
250
-
251
- if (focusNode.nodeType !== Node.TEXT_NODE) {
252
- return null;
253
- }
254
-
255
- const content = focusNode.data.slice(0, selection.focusOffset);
256
-
257
- const match = content.match(AT_REGEXP);
258
-
259
- if (!match) {
260
- return null;
261
- }
262
-
263
- return {
264
- event: event,
265
- selection,
266
- index: match[0].indexOf('@') + match.index,
267
- node: focusNode,
268
- content,
269
- range: selection.getRangeAt(0),
270
- };
271
- }),
272
- rxjs.filter(Boolean),
273
- rxjs.mergeMap(({ event, index, node, content, range }) => {
274
- const changeObservable = new rxjs.Observable((observer) => {
275
- const next = observer.next.bind(observer);
276
- editor.on('change input undo redo', next);
277
-
278
- return () => {
279
- editor.off('change input undo redo', next);
280
- };
281
- });
282
-
283
- return rxjs.merge(rxjs.from([event]), changeObservable).pipe(
284
- rxjs.delayWhen(() => rxjs.timer(0)),
285
- rxjs.map((event) => {
286
- const selection = getSelection(event);
287
-
288
- const content = node.data.slice(index, selection.focusOffset);
289
-
290
- console.log(content);
291
-
292
- if (!content) {
293
- subject.next();
294
- return null;
295
- }
296
-
297
- return {
298
- index,
299
- node,
300
- content,
301
- range: selection.getRangeAt(0),
302
- };
303
- }),
304
- rxjs.filter(Boolean),
305
- rxjs.takeUntil(
306
- rxjs.merge(
307
- inputObservable.pipe(rxjs.filter((event) => event.data === '@')),
308
- subject
309
- ).pipe(
310
- rxjs.tap(() => {
311
- atPersonInfos.node = null;
312
- atPersonInfos.content = '';
313
- atPersonInfos.selection = null;
314
- atPersonInfos.index = -1;
315
- atPersonInfos.style = null;
316
- })
317
- )
318
- )
319
- );
320
- })
321
- )
322
- .subscribe(({ index, node, selection, content, range }) => {
323
- const searchContent = content.slice(1);
324
-
325
- const { x: offsetX, y: offsetY, height } = range.getBoundingClientRect();
326
-
327
- const iframeElement = editor.iframeElement;
328
- const { x: iframeX, y: iframeY } = iframeElement.getBoundingClientRect();
329
-
330
- atPersonInfos.node = node;
331
- atPersonInfos.content = content;
332
- atPersonInfos.selection = selection;
333
- atPersonInfos.index = index;
334
- atPersonInfos.style = {
335
- '--left': iframeX + offsetX + 'px',
336
- '--top': iframeY + offsetY + height + 'px',
337
- };
338
- });
339
-
340
- selectPersonSubject.subscribe(() => {
341
- if (!atPersonInfos.node) {
342
- return;
343
- }
344
-
345
- const { node, index, content } = atPersonInfos;
346
-
347
- const document = node.ownerDocument;
348
-
349
- const documentFragment = document.createDocumentFragment();
350
-
351
- if (index) {
352
- const textNode = document.createTextNode(node.data.slice(0, index));
353
-
354
- documentFragment.appendChild(textNode);
355
- }
356
-
357
- const span = document.createElement('span');
358
- span.innerText = content;
359
-
360
- documentFragment.appendChild(span);
361
-
362
- const contentEndIndex = index + content.length;
363
- if (contentEndIndex < node.data.length) {
364
- const textNode = document.createTextNode(
365
- node.data.slice(contentEndIndex)
366
- );
367
-
368
- documentFragment.appendChild(textNode);
369
- }
370
-
371
- const parent = node.parentElement;
372
-
373
- parent.insertBefore(documentFragment, node);
374
- parent.removeChild(node);
375
-
376
- subject.next();
377
- });
378
-
379
- // editor.on('keydown', (event) => {ƒ
380
-
381
- // editor.on('focus', () => {
382
- // focusing.value = true;
383
- // });
384
-
385
- // editor.on('blur', () => {
386
- // focusing.value = false;
387
- // });
388
-
389
- // editor.on('input', (event) => {
390
- // if (event.data !== '@') {
391
- // return;
392
- // }
393
-
394
- // /** @type {Selection} */
395
- // const selection = event.target.ownerDocument.getSelection();
396
-
397
- // console.dir(selection.focusNode);
398
-
399
- // const focusNode = selection.focusNode;
400
-
401
- // if (focusNode.nodeType !== Node.TEXT_NODE) {
402
- // return;
403
- // }
404
-
405
- // const content = focusNode.data.slice(0, selection.focusOffset);
406
-
407
- // const match = content.match(AT_REGEXP);
408
-
409
- // if (!match) {
410
- // return;
411
- // }
412
-
413
- // const index = match.index;
414
-
415
- // const range = selection.getRangeAt(0);
416
-
417
- // const boundary = range.getBoundingClientRect();
418
-
419
- // console.log(boundary);
420
- // });
421
-
422
- // editor.on('SelectionChange', (...args) => {
423
- // console.log(...args);
424
- // });
425
-
426
- // const editor = new Quill(unref(editorRef), {
427
- // modules: { toolbar: toolbarOptions },
428
- // theme: 'snow',
429
- // placeholder: props.placeholder,
430
- // });
431
-
432
- // window.aaa = editor;
433
-
434
- // watch(
435
- // value,
436
- // (value) => {
437
- // if (editor.root.innerHTML !== value) {
438
- // editor.root.innerHTML = value;
439
- // }
440
- // },
441
- // { immediate: true }
442
- // );
443
-
444
- // watch(
445
- // computed(() => props.disabled),
446
- // (disabled) => {
447
- // editor.enable(!disabled);
448
- // },
449
- // { immediate: true }
450
- // );
451
-
452
- // const atPersonSubcription = fromEvent(document, 'keydown')
453
- // .pipe(
454
- // filter(() => unref(editing)),
455
- // filter((/** @type {KeyboardEvent}*/ e) => e.key === '@')
456
- // )
457
- // .subscribe((/** @type {KeyboardEvent}*/ e) => {
458
- // const selection = editor.getSelection();
459
-
460
- // if (selection.index > 1) {
461
- // const preChar = editor.getContents(
462
- // selection.index - 1,
463
- // selection.index
464
- // );
465
-
466
- // if (
467
- // preChar.ops.length === 1 &&
468
- // DIGIAL_LETTER_REGEXP.test(preChar.ops[0].insert)
469
- // ) {
470
- // return;
471
- // }
472
- // }
473
-
474
- // e.preventDefault();
475
- // e.stopPropagation();
476
-
477
- // console.log(editor.getContents());
478
-
479
- // // atPersionInfo.value = {
480
- // // startIndex: selection.index,
481
- // // endIndex: selection.index + 1,
482
- // // };
483
- // });
484
-
485
- // const handleTextChange = () => {
486
- // value.value = editor.root.innerHTML;
487
- // };
488
-
489
- // const handlePaste = (evt) => {
490
- // if (
491
- // evt.clipboardData &&
492
- // evt.clipboardData.files &&
493
- // evt.clipboardData.files.length
494
- // ) {
495
- // evt.preventDefault();
496
- // [].forEach.call(evt.clipboardData.files, async (file) => {
497
- // if (file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
498
- // const filePathResult = await updateImage(file);
499
-
500
- // if (filePathResult.code != 0) {
501
- // return;
502
- // }
503
-
504
- // const fileData = filePathResult.data;
505
-
506
- // var range = editor.getSelection();
507
- // if (range && fileData) {
508
- // // 在当前光标位置插入图�?
509
- // editor.insertEmbed(range.index, 'image', fileData.path);
510
- // editor.formatText(range.index, 1, {
511
- // alt: fileData.id,
512
- // });
513
- // // 将光标移动到图片后面
514
- // editor.setSelection(range.index + 1);
515
- // }
516
- // }
517
- // });
518
- // }
519
- // };
520
-
521
- currentScope.run(() => {
522
- // editor.on('text-change', handleTextChange);
523
- // editor.root.addEventListener('paste', handlePaste);
524
- // onScopeDispose(() => {
525
- // editor.off('text-change', handleTextChange);
526
- // editor.root.removeEventListener('paste', handlePaste);
527
- // atPersonSubcription.unsubscribe();
528
- // });
529
- });
530
- });
531
-
532
- return (_ctx, _cache) => {
533
- return (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
534
- vue.createElementVNode("div", {
535
- class: vue.normalizeClass(vue.unref(ns).b())
536
- }, [
537
- vue.createElementVNode("div", {
538
- class: vue.normalizeClass(vue.unref(ns).e('editor')),
539
- ref_key: "editorRef",
540
- ref: editorRef
541
- }, [
542
- vue.createVNode(vue.unref(TinyMCEEditor__default["default"]), {
543
- init: initOptions,
544
- disabled: __props.disabled,
545
- tinymceScriptSrc: "/tinymce/tinymce.js",
546
- ref_key: "tinyMCEEditorRef",
547
- ref: tinyMCEEditorRef
548
- }, null, 8 /* PROPS */, ["disabled"])
549
- ], 2 /* CLASS */)
550
- ], 2 /* CLASS */),
551
- (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
552
- vue.createElementVNode("div", {
553
- class: vue.normalizeClass(vue.unref(ns).e('at-list-wrapper'))
554
- }, [
555
- (atPersonInfos.style)
556
- ? (vue.openBlock(), vue.createElementBlock("div", {
26
+ const __default__ = vue.defineComponent({
27
+ name: "BwaRichText"
28
+ });
29
+ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
30
+ props: {
31
+ placeholder: {
32
+ type: String,
33
+ default: ""
34
+ },
35
+ modelValue: {
36
+ type: null
37
+ },
38
+ disabled: {
39
+ type: Boolean,
40
+ default: false
41
+ }
42
+ },
43
+ emits: ["update:modelValue"],
44
+ setup(__props, { emit: __emit }) {
45
+ ;
46
+ const props = __props;
47
+ let resolve = null;
48
+ const setupPromise = new Promise((relv) => {
49
+ resolve = relv;
50
+ });
51
+ const initOptions = {
52
+ promotion: false,
53
+ language: "zh-Hans",
54
+ setup: resolve
55
+ };
56
+ const emit = __emit;
57
+ const ns = webBaseClientVue.useNamespace("rich-text");
58
+ const fileService = webBaseClientVue.useService("FileService");
59
+ const editorRef = vue.ref(null);
60
+ const tinyMCEEditorRef = vue.ref(null);
61
+ const currentScope = vue.getCurrentScope();
62
+ const value = vue.computed({
63
+ get: () => props.modelValue || "",
64
+ set: (v) => {
65
+ emit("update:modelValue", v);
66
+ }
67
+ });
68
+ const focusing = vue.ref(false);
69
+ const AT_REGEXP = /[^\da-zA-Z]@[^@]*$/;
70
+ const atPersonInfos = vue.reactive({
71
+ node: null,
72
+ content: "",
73
+ selection: null,
74
+ index: -1,
75
+ style: null
76
+ });
77
+ const selectPersonSubject = new rxjs.Subject();
78
+ const handlePersonSelect = selectPersonSubject.next.bind(selectPersonSubject);
79
+ window.atPersonInfos = atPersonInfos;
80
+ vue.onMounted(async () => {
81
+ const editor = await setupPromise;
82
+ window.editor = editor;
83
+ const inputObservable = new rxjs.Observable((observer) => {
84
+ const next = observer.next.bind(observer);
85
+ editor.on("input", next);
86
+ return () => {
87
+ editor.off("input", next);
88
+ };
89
+ });
90
+ editor.on("change", (event) => {
91
+ console.log(event);
92
+ });
93
+ const getSelection = (event) => {
94
+ if (typeof event.target.nodeType === "number" && typeof event.target.tagName === "string") {
95
+ return event.target.ownerDocument.getSelection();
96
+ }
97
+ return event.target.iframeElement.contentDocument.getSelection();
98
+ };
99
+ const subject = new rxjs.Subject();
100
+ inputObservable.pipe(
101
+ rxjs.map((event) => {
102
+ if (event.data !== "@") {
103
+ return null;
104
+ }
105
+ const selection = event.currentTarget.ownerDocument.getSelection();
106
+ const focusNode = selection.focusNode;
107
+ if (focusNode.nodeType !== Node.TEXT_NODE) {
108
+ return null;
109
+ }
110
+ const content = focusNode.data.slice(0, selection.focusOffset);
111
+ const match = content.match(AT_REGEXP);
112
+ if (!match) {
113
+ return null;
114
+ }
115
+ return {
116
+ event,
117
+ selection,
118
+ index: match[0].indexOf("@") + match.index,
119
+ node: focusNode,
120
+ content,
121
+ range: selection.getRangeAt(0)
122
+ };
123
+ }),
124
+ rxjs.filter(Boolean),
125
+ rxjs.mergeMap(({ event, index, node, content, range }) => {
126
+ const changeObservable = new rxjs.Observable((observer) => {
127
+ const next = observer.next.bind(observer);
128
+ editor.on("change input undo redo", next);
129
+ return () => {
130
+ editor.off("change input undo redo", next);
131
+ };
132
+ });
133
+ return rxjs.merge(rxjs.from([event]), changeObservable).pipe(
134
+ rxjs.delayWhen(() => rxjs.timer(0)),
135
+ rxjs.map((event2) => {
136
+ const selection = getSelection(event2);
137
+ const content2 = node.data.slice(index, selection.focusOffset);
138
+ console.log(content2);
139
+ if (!content2) {
140
+ subject.next();
141
+ return null;
142
+ }
143
+ return {
144
+ index,
145
+ node,
146
+ content: content2,
147
+ range: selection.getRangeAt(0)
148
+ };
149
+ }),
150
+ rxjs.filter(Boolean),
151
+ rxjs.takeUntil(
152
+ rxjs.merge(
153
+ inputObservable.pipe(rxjs.filter((event2) => event2.data === "@")),
154
+ subject
155
+ ).pipe(
156
+ rxjs.tap(() => {
157
+ atPersonInfos.node = null;
158
+ atPersonInfos.content = "";
159
+ atPersonInfos.selection = null;
160
+ atPersonInfos.index = -1;
161
+ atPersonInfos.style = null;
162
+ })
163
+ )
164
+ )
165
+ );
166
+ })
167
+ ).subscribe(({ index, node, selection, content, range }) => {
168
+ const searchContent = content.slice(1);
169
+ const { x: offsetX, y: offsetY, height } = range.getBoundingClientRect();
170
+ const iframeElement = editor.iframeElement;
171
+ const { x: iframeX, y: iframeY } = iframeElement.getBoundingClientRect();
172
+ atPersonInfos.node = node;
173
+ atPersonInfos.content = content;
174
+ atPersonInfos.selection = selection;
175
+ atPersonInfos.index = index;
176
+ atPersonInfos.style = {
177
+ "--left": iframeX + offsetX + "px",
178
+ "--top": iframeY + offsetY + height + "px"
179
+ };
180
+ });
181
+ selectPersonSubject.subscribe(() => {
182
+ if (!atPersonInfos.node) {
183
+ return;
184
+ }
185
+ const { node, index, content } = atPersonInfos;
186
+ const document = node.ownerDocument;
187
+ const documentFragment = document.createDocumentFragment();
188
+ if (index) {
189
+ const textNode = document.createTextNode(node.data.slice(0, index));
190
+ documentFragment.appendChild(textNode);
191
+ }
192
+ const span = document.createElement("span");
193
+ span.innerText = content;
194
+ documentFragment.appendChild(span);
195
+ const contentEndIndex = index + content.length;
196
+ if (contentEndIndex < node.data.length) {
197
+ const textNode = document.createTextNode(
198
+ node.data.slice(contentEndIndex)
199
+ );
200
+ documentFragment.appendChild(textNode);
201
+ }
202
+ const parent = node.parentElement;
203
+ parent.insertBefore(documentFragment, node);
204
+ parent.removeChild(node);
205
+ subject.next();
206
+ });
207
+ currentScope.run(() => {
208
+ });
209
+ });
210
+ return (_ctx, _cache) => {
211
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
212
+ vue.createElementVNode("div", {
213
+ class: vue.normalizeClass(vue.unref(ns).b())
214
+ }, [
215
+ vue.createElementVNode("div", {
216
+ class: vue.normalizeClass(vue.unref(ns).e("editor")),
217
+ ref_key: "editorRef",
218
+ ref: editorRef
219
+ }, [
220
+ vue.createVNode(vue.unref(TinyMCEEditor__default["default"]), {
221
+ init: initOptions,
222
+ disabled: __props.disabled,
223
+ tinymceScriptSrc: "/tinymce/tinymce.js",
224
+ ref_key: "tinyMCEEditorRef",
225
+ ref: tinyMCEEditorRef
226
+ }, null, 8, ["disabled"])
227
+ ], 2)
228
+ ], 2),
229
+ (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
230
+ vue.createElementVNode("div", {
231
+ class: vue.normalizeClass(vue.unref(ns).e("at-list-wrapper"))
232
+ }, [
233
+ atPersonInfos.style ? (vue.openBlock(), vue.createElementBlock("div", {
557
234
  key: 0,
558
- class: vue.normalizeClass(vue.unref(ns).e('at-list')),
235
+ class: vue.normalizeClass(vue.unref(ns).e("at-list")),
559
236
  style: vue.normalizeStyle(atPersonInfos.style)
560
237
  }, [
561
238
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(4, (i) => {
562
239
  return vue.createElementVNode("div", {
563
240
  key: i,
564
- onClick: $event => (vue.unref(handlePersonSelect)(i))
565
- }, " 用户" + vue.toDisplayString(i), 9 /* TEXT, PROPS */, _hoisted_1)
566
- }), 64 /* STABLE_FRAGMENT */))
567
- ], 6 /* CLASS, STYLE */))
568
- : vue.createCommentVNode("v-if", true)
569
- ], 2 /* CLASS */)
570
- ]))
571
- ], 64 /* STABLE_FRAGMENT */))
572
- }
573
- }
574
-
575
- };
576
- var bwaRichTextTinymce = /*#__PURE__*/_pluginVue_exportHelper["default"](_sfc_main, [['__file',"bwa-rich-text-tinymce.vue"]]);
241
+ onClick: ($event) => vue.unref(handlePersonSelect)(i)
242
+ }, " \u7528\u6237" + vue.toDisplayString(i), 9, _hoisted_1);
243
+ }), 64))
244
+ ], 6)) : vue.createCommentVNode("v-if", true)
245
+ ], 2)
246
+ ]))
247
+ ], 64);
248
+ };
249
+ }
250
+ });
251
+ var bwaRichTextTinymce = /* @__PURE__ */ _pluginVue_exportHelper["default"](_sfc_main, [["__file", "bwa-rich-text-tinymce.vue"]]);
577
252
 
578
253
  exports["default"] = bwaRichTextTinymce;