@qxs-bns/components 0.0.90 → 0.0.92

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 (908) hide show
  1. package/es/base/define.mjs +2 -0
  2. package/es/base/define.mjs.map +1 -0
  3. package/es/base/uid.mjs +2 -0
  4. package/es/base/uid.mjs.map +1 -0
  5. package/es/data-chart.mjs +143 -0
  6. package/es/data-chart.mjs.map +1 -0
  7. package/es/editor/blocksuite-editor.mjs +1126 -0
  8. package/es/editor/blocksuite-editor.mjs.map +1 -0
  9. package/es/editor/content-format.mjs +9 -0
  10. package/es/editor/content-format.mjs.map +1 -0
  11. package/es/editor/index.mjs +2 -0
  12. package/es/editor/index.mjs.map +1 -0
  13. package/es/editor/toolbar.mjs +2 -0
  14. package/es/editor/toolbar.mjs.map +1 -0
  15. package/es/entry-data-chart.mjs +2 -0
  16. package/es/entry-data-chart.mjs.map +1 -0
  17. package/es/entry-editor.mjs +2 -0
  18. package/es/entry-editor.mjs.map +1 -0
  19. package/es/entry-file-upload.mjs +2 -0
  20. package/es/entry-file-upload.mjs.map +1 -0
  21. package/es/entry-fixed-action-bar.mjs +2 -0
  22. package/es/entry-fixed-action-bar.mjs.map +1 -0
  23. package/es/entry-icon.mjs +2 -0
  24. package/es/entry-icon.mjs.map +1 -0
  25. package/es/entry-image-upload.mjs +2 -0
  26. package/es/entry-image-upload.mjs.map +1 -0
  27. package/es/entry-photo-crop-tool.mjs +2 -0
  28. package/es/entry-photo-crop-tool.mjs.map +1 -0
  29. package/es/entry-subject.mjs +2 -0
  30. package/es/entry-subject.mjs.map +1 -0
  31. package/es/file-upload.mjs +164 -0
  32. package/es/file-upload.mjs.map +1 -0
  33. package/es/fixed-action-bar.mjs +39 -0
  34. package/es/fixed-action-bar.mjs.map +1 -0
  35. package/es/icon.mjs +20 -0
  36. package/es/icon.mjs.map +1 -0
  37. package/es/image-upload.mjs +333 -0
  38. package/es/image-upload.mjs.map +1 -0
  39. package/es/index.mjs +1 -1
  40. package/es/index.mjs.map +1 -1
  41. package/es/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.mjs +60 -0
  42. package/es/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.mjs.map +1 -0
  43. package/es/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.mjs +17 -0
  44. package/es/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.mjs.map +1 -0
  45. package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.mjs +62 -0
  46. package/es/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.mjs.map +1 -0
  47. package/es/photo-crop-tool.mjs +147 -0
  48. package/es/photo-crop-tool.mjs.map +1 -0
  49. package/es/subject/action.mjs +171 -0
  50. package/es/subject/action.mjs.map +1 -0
  51. package/es/subject/blank-fill.mjs +385 -0
  52. package/es/subject/blank-fill.mjs.map +1 -0
  53. package/es/subject/draft.mjs +2 -0
  54. package/es/subject/draft.mjs.map +1 -0
  55. package/es/subject/layout.mjs +21 -0
  56. package/es/subject/layout.mjs.map +1 -0
  57. package/es/subject/page-end.mjs +28 -0
  58. package/es/subject/page-end.mjs.map +1 -0
  59. package/es/subject/pagination.mjs +2 -0
  60. package/es/subject/pagination.mjs.map +1 -0
  61. package/es/subject/runtime.mjs +2 -0
  62. package/es/subject/runtime.mjs.map +1 -0
  63. package/es/subject/scale.mjs +270 -0
  64. package/es/subject/scale.mjs.map +1 -0
  65. package/es/subject/shared-methods.mjs +2 -0
  66. package/es/subject/shared-methods.mjs.map +1 -0
  67. package/es/subject/shared-styles.mjs +113 -0
  68. package/es/subject/shared-styles.mjs.map +1 -0
  69. package/es/subject/single-interactions.mjs +2 -0
  70. package/es/subject/single-interactions.mjs.map +1 -0
  71. package/es/subject/single-model.mjs +2 -0
  72. package/es/subject/single-model.mjs.map +1 -0
  73. package/es/subject/single-state.mjs +2 -0
  74. package/es/subject/single-state.mjs.map +1 -0
  75. package/es/subject/single.mjs +600 -0
  76. package/es/subject/single.mjs.map +1 -0
  77. package/es/subject/sort-controller.mjs +2 -0
  78. package/es/subject/sort-controller.mjs.map +1 -0
  79. package/es/subject/sortable.mjs +30 -0
  80. package/es/subject/sortable.mjs.map +1 -0
  81. package/es/subject/sorting-card.mjs +52 -0
  82. package/es/subject/sorting-card.mjs.map +1 -0
  83. package/es/subject/subject-shared.mjs +2 -0
  84. package/es/subject/subject-shared.mjs.map +1 -0
  85. package/es/subject/text-fill.mjs +395 -0
  86. package/es/subject/text-fill.mjs.map +1 -0
  87. package/es/subject/title-prefix.mjs +2 -0
  88. package/es/subject/title-prefix.mjs.map +1 -0
  89. package/es/subject/types.mjs +2 -0
  90. package/es/subject/types.mjs.map +1 -0
  91. package/lib/base/define.cjs +2 -0
  92. package/lib/base/define.cjs.map +1 -0
  93. package/lib/base/uid.cjs +2 -0
  94. package/lib/base/uid.cjs.map +1 -0
  95. package/lib/data-chart.cjs +143 -0
  96. package/lib/data-chart.cjs.map +1 -0
  97. package/lib/editor/blocksuite-editor.cjs +1126 -0
  98. package/lib/editor/blocksuite-editor.cjs.map +1 -0
  99. package/lib/editor/content-format.cjs +9 -0
  100. package/lib/editor/content-format.cjs.map +1 -0
  101. package/lib/editor/index.cjs +2 -0
  102. package/lib/editor/index.cjs.map +1 -0
  103. package/lib/editor/toolbar.cjs +2 -0
  104. package/lib/editor/toolbar.cjs.map +1 -0
  105. package/lib/entry-data-chart.cjs +2 -0
  106. package/lib/entry-data-chart.cjs.map +1 -0
  107. package/lib/entry-editor.cjs +2 -0
  108. package/lib/entry-editor.cjs.map +1 -0
  109. package/lib/entry-file-upload.cjs +2 -0
  110. package/lib/entry-file-upload.cjs.map +1 -0
  111. package/lib/entry-fixed-action-bar.cjs +2 -0
  112. package/lib/entry-fixed-action-bar.cjs.map +1 -0
  113. package/lib/entry-icon.cjs +2 -0
  114. package/lib/entry-icon.cjs.map +1 -0
  115. package/lib/entry-image-upload.cjs +2 -0
  116. package/lib/entry-image-upload.cjs.map +1 -0
  117. package/lib/entry-photo-crop-tool.cjs +2 -0
  118. package/lib/entry-photo-crop-tool.cjs.map +1 -0
  119. package/lib/entry-subject.cjs +2 -0
  120. package/lib/entry-subject.cjs.map +1 -0
  121. package/lib/file-upload.cjs +164 -0
  122. package/lib/file-upload.cjs.map +1 -0
  123. package/lib/fixed-action-bar.cjs +39 -0
  124. package/lib/fixed-action-bar.cjs.map +1 -0
  125. package/lib/icon.cjs +20 -0
  126. package/lib/icon.cjs.map +1 -0
  127. package/lib/image-upload.cjs +333 -0
  128. package/lib/image-upload.cjs.map +1 -0
  129. package/lib/index.cjs +1 -1
  130. package/lib/index.cjs.map +1 -1
  131. package/lib/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.cjs +60 -0
  132. package/lib/node_modules/.pnpm/marked@17.0.6/node_modules/marked/lib/marked.esm.cjs.map +1 -0
  133. package/lib/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.cjs +17 -0
  134. package/lib/node_modules/.pnpm/turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.cjs.map +1 -0
  135. package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.cjs +62 -0
  136. package/lib/node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.cjs.map +1 -0
  137. package/lib/photo-crop-tool.cjs +147 -0
  138. package/lib/photo-crop-tool.cjs.map +1 -0
  139. package/lib/subject/action.cjs +171 -0
  140. package/lib/subject/action.cjs.map +1 -0
  141. package/lib/subject/blank-fill.cjs +385 -0
  142. package/lib/subject/blank-fill.cjs.map +1 -0
  143. package/lib/subject/draft.cjs +2 -0
  144. package/lib/subject/draft.cjs.map +1 -0
  145. package/lib/subject/layout.cjs +21 -0
  146. package/lib/subject/layout.cjs.map +1 -0
  147. package/lib/subject/page-end.cjs +28 -0
  148. package/lib/subject/page-end.cjs.map +1 -0
  149. package/lib/subject/pagination.cjs +2 -0
  150. package/lib/subject/pagination.cjs.map +1 -0
  151. package/lib/subject/runtime.cjs +2 -0
  152. package/lib/subject/runtime.cjs.map +1 -0
  153. package/lib/subject/scale.cjs +270 -0
  154. package/lib/subject/scale.cjs.map +1 -0
  155. package/lib/subject/shared-methods.cjs +2 -0
  156. package/lib/subject/shared-methods.cjs.map +1 -0
  157. package/lib/subject/shared-styles.cjs +113 -0
  158. package/lib/subject/shared-styles.cjs.map +1 -0
  159. package/lib/subject/single-interactions.cjs +2 -0
  160. package/lib/subject/single-interactions.cjs.map +1 -0
  161. package/lib/subject/single-model.cjs +2 -0
  162. package/lib/subject/single-model.cjs.map +1 -0
  163. package/lib/subject/single-state.cjs +2 -0
  164. package/lib/subject/single-state.cjs.map +1 -0
  165. package/lib/subject/single.cjs +600 -0
  166. package/lib/subject/single.cjs.map +1 -0
  167. package/lib/subject/sort-controller.cjs +2 -0
  168. package/lib/subject/sort-controller.cjs.map +1 -0
  169. package/lib/subject/sortable.cjs +30 -0
  170. package/lib/subject/sortable.cjs.map +1 -0
  171. package/lib/subject/sorting-card.cjs +52 -0
  172. package/lib/subject/sorting-card.cjs.map +1 -0
  173. package/lib/subject/subject-shared.cjs +2 -0
  174. package/lib/subject/subject-shared.cjs.map +1 -0
  175. package/lib/subject/text-fill.cjs +395 -0
  176. package/lib/subject/text-fill.cjs.map +1 -0
  177. package/lib/subject/title-prefix.cjs +2 -0
  178. package/lib/subject/title-prefix.cjs.map +1 -0
  179. package/lib/subject/types.cjs +2 -0
  180. package/lib/subject/types.cjs.map +1 -0
  181. package/package.json +98 -36
  182. package/types/base/define.d.ts +1 -0
  183. package/types/base/uid.d.ts +1 -0
  184. package/types/data-chart.d.ts +65 -0
  185. package/types/editor/blocksuite-editor.d.ts +193 -0
  186. package/types/editor/content-format.d.ts +4 -0
  187. package/types/editor/index.d.ts +4 -0
  188. package/types/editor/toolbar.d.ts +6 -0
  189. package/types/editor/types.d.ts +42 -0
  190. package/types/entry-data-chart.d.ts +1 -0
  191. package/types/entry-editor.d.ts +2 -0
  192. package/types/entry-file-upload.d.ts +1 -0
  193. package/types/entry-fixed-action-bar.d.ts +1 -0
  194. package/types/entry-icon.d.ts +2 -0
  195. package/types/entry-image-upload.d.ts +1 -0
  196. package/types/entry-photo-crop-tool.d.ts +1 -0
  197. package/types/entry-subject.d.ts +2 -0
  198. package/types/file-upload.d.ts +50 -0
  199. package/types/fixed-action-bar.d.ts +25 -0
  200. package/types/icon.d.ts +30 -0
  201. package/types/image-upload.d.ts +68 -0
  202. package/types/index.d.ts +21 -6
  203. package/types/photo-crop-tool.d.ts +43 -0
  204. package/types/subject/action.d.ts +37 -0
  205. package/types/subject/blank-fill.d.ts +79 -0
  206. package/types/subject/draft.d.ts +63 -0
  207. package/types/subject/index.d.ts +13 -0
  208. package/types/subject/layout.d.ts +7 -0
  209. package/types/subject/page-end.d.ts +16 -0
  210. package/types/subject/pagination.d.ts +23 -0
  211. package/types/subject/runtime.d.ts +12 -0
  212. package/types/subject/scale.d.ts +55 -0
  213. package/types/subject/shared-methods.d.ts +8 -0
  214. package/types/subject/shared-styles.d.ts +5 -0
  215. package/types/subject/single-interactions.d.ts +46 -0
  216. package/types/subject/single-model.d.ts +88 -0
  217. package/types/subject/single-state.d.ts +42 -0
  218. package/types/subject/single.d.ts +210 -0
  219. package/types/subject/sort-controller.d.ts +3 -0
  220. package/types/subject/sortable.d.ts +19 -0
  221. package/types/subject/sorting-card.d.ts +2 -0
  222. package/types/subject/subject-shared.d.ts +43 -0
  223. package/types/subject/text-fill.d.ts +88 -0
  224. package/types/subject/title-prefix.d.ts +2 -0
  225. package/types/subject/types.d.ts +12 -0
  226. package/README.md +0 -566
  227. package/es/_virtual/_commonjsHelpers.mjs +0 -2
  228. package/es/_virtual/_commonjsHelpers.mjs.map +0 -1
  229. package/es/_virtual/_plugin-vue_export-helper.mjs +0 -2
  230. package/es/_virtual/_plugin-vue_export-helper.mjs.map +0 -1
  231. package/es/_virtual/sortable.esm.mjs +0 -2
  232. package/es/_virtual/sortable.esm.mjs.map +0 -1
  233. package/es/_virtual/vuedraggable.umd.mjs +0 -2
  234. package/es/_virtual/vuedraggable.umd.mjs.map +0 -1
  235. package/es/_virtual/vuedraggable.umd2.mjs +0 -2
  236. package/es/_virtual/vuedraggable.umd2.mjs.map +0 -1
  237. package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs +0 -2
  238. package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs.map +0 -1
  239. package/es/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.mjs +0 -8
  240. package/es/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.mjs.map +0 -1
  241. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +0 -2
  242. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs.map +0 -1
  243. package/es/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.mjs +0 -2
  244. package/es/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.mjs.map +0 -1
  245. package/es/package.json.mjs +0 -2
  246. package/es/package.json.mjs.map +0 -1
  247. package/es/src/alert/index.mjs +0 -2
  248. package/es/src/alert/index.mjs.map +0 -1
  249. package/es/src/alert/src/alert.mjs +0 -2
  250. package/es/src/alert/src/alert.mjs.map +0 -1
  251. package/es/src/components.mjs +0 -2
  252. package/es/src/components.mjs.map +0 -1
  253. package/es/src/data-chart/index.mjs +0 -2
  254. package/es/src/data-chart/index.mjs.map +0 -1
  255. package/es/src/data-chart/src/analyze.mjs +0 -2
  256. package/es/src/data-chart/src/analyze.mjs.map +0 -1
  257. package/es/src/data-chart/src/components/area.vue.mjs +0 -2
  258. package/es/src/data-chart/src/components/area.vue.mjs.map +0 -1
  259. package/es/src/data-chart/src/components/area.vue2.mjs +0 -2
  260. package/es/src/data-chart/src/components/area.vue2.mjs.map +0 -1
  261. package/es/src/data-chart/src/components/area.vue3.mjs +0 -2
  262. package/es/src/data-chart/src/components/area.vue3.mjs.map +0 -1
  263. package/es/src/data-chart/src/components/bar.vue.mjs +0 -2
  264. package/es/src/data-chart/src/components/bar.vue.mjs.map +0 -1
  265. package/es/src/data-chart/src/components/bar.vue2.mjs +0 -2
  266. package/es/src/data-chart/src/components/bar.vue2.mjs.map +0 -1
  267. package/es/src/data-chart/src/components/bar.vue3.mjs +0 -2
  268. package/es/src/data-chart/src/components/bar.vue3.mjs.map +0 -1
  269. package/es/src/data-chart/src/components/card.vue.mjs +0 -2
  270. package/es/src/data-chart/src/components/card.vue.mjs.map +0 -1
  271. package/es/src/data-chart/src/components/card.vue2.mjs +0 -2
  272. package/es/src/data-chart/src/components/card.vue2.mjs.map +0 -1
  273. package/es/src/data-chart/src/components/card.vue3.mjs +0 -2
  274. package/es/src/data-chart/src/components/card.vue3.mjs.map +0 -1
  275. package/es/src/data-chart/src/components/data-chart-card-bg-left.svg.mjs +0 -2
  276. package/es/src/data-chart/src/components/data-chart-card-bg-left.svg.mjs.map +0 -1
  277. package/es/src/data-chart/src/components/data-chart-card-bg-right.svg.mjs +0 -2
  278. package/es/src/data-chart/src/components/data-chart-card-bg-right.svg.mjs.map +0 -1
  279. package/es/src/data-chart/src/components/empty.svg.mjs +0 -2
  280. package/es/src/data-chart/src/components/empty.svg.mjs.map +0 -1
  281. package/es/src/data-chart/src/components/empty.vue.mjs +0 -2
  282. package/es/src/data-chart/src/components/empty.vue.mjs.map +0 -1
  283. package/es/src/data-chart/src/components/empty.vue2.mjs +0 -2
  284. package/es/src/data-chart/src/components/empty.vue2.mjs.map +0 -1
  285. package/es/src/data-chart/src/components/funnel.vue.mjs +0 -2
  286. package/es/src/data-chart/src/components/funnel.vue.mjs.map +0 -1
  287. package/es/src/data-chart/src/components/funnel.vue2.mjs +0 -2
  288. package/es/src/data-chart/src/components/funnel.vue2.mjs.map +0 -1
  289. package/es/src/data-chart/src/components/funnel.vue3.mjs +0 -2
  290. package/es/src/data-chart/src/components/funnel.vue3.mjs.map +0 -1
  291. package/es/src/data-chart/src/components/line.vue.mjs +0 -2
  292. package/es/src/data-chart/src/components/line.vue.mjs.map +0 -1
  293. package/es/src/data-chart/src/components/line.vue2.mjs +0 -2
  294. package/es/src/data-chart/src/components/line.vue2.mjs.map +0 -1
  295. package/es/src/data-chart/src/components/line.vue3.mjs +0 -2
  296. package/es/src/data-chart/src/components/line.vue3.mjs.map +0 -1
  297. package/es/src/data-chart/src/components/pie.vue.mjs +0 -2
  298. package/es/src/data-chart/src/components/pie.vue.mjs.map +0 -1
  299. package/es/src/data-chart/src/components/pie.vue2.mjs +0 -2
  300. package/es/src/data-chart/src/components/pie.vue2.mjs.map +0 -1
  301. package/es/src/data-chart/src/components/pie.vue3.mjs +0 -2
  302. package/es/src/data-chart/src/components/pie.vue3.mjs.map +0 -1
  303. package/es/src/data-chart/src/components/radar.vue.mjs +0 -2
  304. package/es/src/data-chart/src/components/radar.vue.mjs.map +0 -1
  305. package/es/src/data-chart/src/components/radar.vue2.mjs +0 -2
  306. package/es/src/data-chart/src/components/radar.vue2.mjs.map +0 -1
  307. package/es/src/data-chart/src/components/radar.vue3.mjs +0 -2
  308. package/es/src/data-chart/src/components/radar.vue3.mjs.map +0 -1
  309. package/es/src/data-chart/src/components/scatter-simple.vue.mjs +0 -2
  310. package/es/src/data-chart/src/components/scatter-simple.vue.mjs.map +0 -1
  311. package/es/src/data-chart/src/components/scatter-simple.vue2.mjs +0 -2
  312. package/es/src/data-chart/src/components/scatter-simple.vue2.mjs.map +0 -1
  313. package/es/src/data-chart/src/components/scatter-simple.vue3.mjs +0 -2
  314. package/es/src/data-chart/src/components/scatter-simple.vue3.mjs.map +0 -1
  315. package/es/src/data-chart/src/components/scatter.vue.mjs +0 -2
  316. package/es/src/data-chart/src/components/scatter.vue.mjs.map +0 -1
  317. package/es/src/data-chart/src/components/scatter.vue2.mjs +0 -2
  318. package/es/src/data-chart/src/components/scatter.vue2.mjs.map +0 -1
  319. package/es/src/data-chart/src/components/scatter.vue3.mjs +0 -2
  320. package/es/src/data-chart/src/components/scatter.vue3.mjs.map +0 -1
  321. package/es/src/data-chart/src/components/table.vue.mjs +0 -2
  322. package/es/src/data-chart/src/components/table.vue.mjs.map +0 -1
  323. package/es/src/data-chart/src/components/table.vue2.mjs +0 -2
  324. package/es/src/data-chart/src/components/table.vue2.mjs.map +0 -1
  325. package/es/src/data-chart/src/data-chart.vue.mjs +0 -2
  326. package/es/src/data-chart/src/data-chart.vue.mjs.map +0 -1
  327. package/es/src/data-chart/src/data-chart.vue2.mjs +0 -2
  328. package/es/src/data-chart/src/data-chart.vue2.mjs.map +0 -1
  329. package/es/src/data-chart/src/utils/config.mjs +0 -2
  330. package/es/src/data-chart/src/utils/config.mjs.map +0 -1
  331. package/es/src/data-chart/src/utils/injectionKeys.mjs +0 -2
  332. package/es/src/data-chart/src/utils/injectionKeys.mjs.map +0 -1
  333. package/es/src/data-chart/src/utils/mapData.mjs +0 -2
  334. package/es/src/data-chart/src/utils/mapData.mjs.map +0 -1
  335. package/es/src/data-chart/src/utils/safe-eval.mjs +0 -2
  336. package/es/src/data-chart/src/utils/safe-eval.mjs.map +0 -1
  337. package/es/src/data-chart/src/utils/types.mjs +0 -2
  338. package/es/src/data-chart/src/utils/types.mjs.map +0 -1
  339. package/es/src/data-chart/src/utils/useCharts.mjs +0 -2
  340. package/es/src/data-chart/src/utils/useCharts.mjs.map +0 -1
  341. package/es/src/defaults.mjs +0 -2
  342. package/es/src/defaults.mjs.map +0 -1
  343. package/es/src/dialog/src/dialog.mjs +0 -2
  344. package/es/src/dialog/src/dialog.mjs.map +0 -1
  345. package/es/src/feedback-plugin/index.mjs +0 -2
  346. package/es/src/feedback-plugin/index.mjs.map +0 -1
  347. package/es/src/file-upload/index.mjs +0 -2
  348. package/es/src/file-upload/index.mjs.map +0 -1
  349. package/es/src/file-upload/src/file-upload.vue.mjs +0 -2
  350. package/es/src/file-upload/src/file-upload.vue.mjs.map +0 -1
  351. package/es/src/file-upload/src/file-upload.vue2.mjs +0 -2
  352. package/es/src/file-upload/src/file-upload.vue2.mjs.map +0 -1
  353. package/es/src/file-upload/src/file-upload.vue3.mjs +0 -2
  354. package/es/src/file-upload/src/file-upload.vue3.mjs.map +0 -1
  355. package/es/src/fixed-action-bar/index.mjs +0 -2
  356. package/es/src/fixed-action-bar/index.mjs.map +0 -1
  357. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +0 -2
  358. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs.map +0 -1
  359. package/es/src/fixed-action-bar/src/fixed-action-bar.vue2.mjs +0 -2
  360. package/es/src/fixed-action-bar/src/fixed-action-bar.vue2.mjs.map +0 -1
  361. package/es/src/icon/index.mjs +0 -2
  362. package/es/src/icon/index.mjs.map +0 -1
  363. package/es/src/icon/src/icon.mjs +0 -2
  364. package/es/src/icon/src/icon.mjs.map +0 -1
  365. package/es/src/image-upload/index.mjs +0 -2
  366. package/es/src/image-upload/index.mjs.map +0 -1
  367. package/es/src/image-upload/src/image-upload.vue.mjs +0 -2
  368. package/es/src/image-upload/src/image-upload.vue.mjs.map +0 -1
  369. package/es/src/image-upload/src/image-upload.vue2.mjs +0 -2
  370. package/es/src/image-upload/src/image-upload.vue2.mjs.map +0 -1
  371. package/es/src/image-upload/src/image-upload.vue3.mjs +0 -2
  372. package/es/src/image-upload/src/image-upload.vue3.mjs.map +0 -1
  373. package/es/src/make-installer.mjs +0 -2
  374. package/es/src/make-installer.mjs.map +0 -1
  375. package/es/src/message/src/message.mjs +0 -2
  376. package/es/src/message/src/message.mjs.map +0 -1
  377. package/es/src/photo-crop-tool/index.mjs +0 -2
  378. package/es/src/photo-crop-tool/index.mjs.map +0 -1
  379. package/es/src/photo-crop-tool/src/composables.mjs +0 -2
  380. package/es/src/photo-crop-tool/src/composables.mjs.map +0 -1
  381. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +0 -2
  382. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs.map +0 -1
  383. package/es/src/photo-crop-tool/src/photo-crop-tool.vue2.mjs +0 -2
  384. package/es/src/photo-crop-tool/src/photo-crop-tool.vue2.mjs.map +0 -1
  385. package/es/src/subject-action/index.mjs +0 -2
  386. package/es/src/subject-action/index.mjs.map +0 -1
  387. package/es/src/subject-action/src/subject-action.vue.mjs +0 -2
  388. package/es/src/subject-action/src/subject-action.vue.mjs.map +0 -1
  389. package/es/src/subject-action/src/subject-action.vue2.mjs +0 -2
  390. package/es/src/subject-action/src/subject-action.vue2.mjs.map +0 -1
  391. package/es/src/subject-layout/index.mjs +0 -2
  392. package/es/src/subject-layout/index.mjs.map +0 -1
  393. package/es/src/subject-layout/src/subject-layout.vue.mjs +0 -2
  394. package/es/src/subject-layout/src/subject-layout.vue.mjs.map +0 -1
  395. package/es/src/subject-layout/src/subject-layout.vue2.mjs +0 -2
  396. package/es/src/subject-layout/src/subject-layout.vue2.mjs.map +0 -1
  397. package/es/src/subject-list/index.mjs +0 -2
  398. package/es/src/subject-list/index.mjs.map +0 -1
  399. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +0 -2
  400. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +0 -1
  401. package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs +0 -2
  402. package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs.map +0 -1
  403. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +0 -2
  404. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +0 -1
  405. package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs +0 -2
  406. package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs.map +0 -1
  407. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +0 -2
  408. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +0 -1
  409. package/es/src/subject-list/src/components/subject-blank-fill.vue2.mjs +0 -2
  410. package/es/src/subject-list/src/components/subject-blank-fill.vue2.mjs.map +0 -1
  411. package/es/src/subject-list/src/components/subject-scale.vue.mjs +0 -2
  412. package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +0 -1
  413. package/es/src/subject-list/src/components/subject-scale.vue2.mjs +0 -2
  414. package/es/src/subject-list/src/components/subject-scale.vue2.mjs.map +0 -1
  415. package/es/src/subject-list/src/components/subject-single.vue.mjs +0 -2
  416. package/es/src/subject-list/src/components/subject-single.vue.mjs.map +0 -1
  417. package/es/src/subject-list/src/components/subject-single.vue2.mjs +0 -2
  418. package/es/src/subject-list/src/components/subject-single.vue2.mjs.map +0 -1
  419. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +0 -2
  420. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +0 -1
  421. package/es/src/subject-list/src/components/subject-text-fill.vue2.mjs +0 -2
  422. package/es/src/subject-list/src/components/subject-text-fill.vue2.mjs.map +0 -1
  423. package/es/src/subject-list/src/subject-list.vue.mjs +0 -2
  424. package/es/src/subject-list/src/subject-list.vue.mjs.map +0 -1
  425. package/es/src/subject-list/src/subject-list.vue2.mjs +0 -2
  426. package/es/src/subject-list/src/subject-list.vue2.mjs.map +0 -1
  427. package/es/src/subject-type/index.mjs +0 -2
  428. package/es/src/subject-type/index.mjs.map +0 -1
  429. package/es/src/subject-type/src/subject-type.vue.mjs +0 -2
  430. package/es/src/subject-type/src/subject-type.vue.mjs.map +0 -1
  431. package/es/src/subject-type/src/subject-type.vue2.mjs +0 -2
  432. package/es/src/subject-type/src/subject-type.vue2.mjs.map +0 -1
  433. package/es/src/tiny-mce-editor/index.mjs +0 -2
  434. package/es/src/tiny-mce-editor/index.mjs.map +0 -1
  435. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +0 -2
  436. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +0 -1
  437. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue2.mjs +0 -2
  438. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue2.mjs.map +0 -1
  439. package/es/src/ui/button/index.mjs +0 -2
  440. package/es/src/ui/button/index.mjs.map +0 -1
  441. package/es/src/ui/checkbox/index.mjs +0 -2
  442. package/es/src/ui/checkbox/index.mjs.map +0 -1
  443. package/es/src/ui/dialog/index.mjs +0 -2
  444. package/es/src/ui/dialog/index.mjs.map +0 -1
  445. package/es/src/ui/input/index.mjs +0 -2
  446. package/es/src/ui/input/index.mjs.map +0 -1
  447. package/es/src/ui/input-number/index.mjs +0 -2
  448. package/es/src/ui/input-number/index.mjs.map +0 -1
  449. package/es/src/ui/layout/index.mjs +0 -2
  450. package/es/src/ui/layout/index.mjs.map +0 -1
  451. package/es/src/ui/link/index.mjs +0 -2
  452. package/es/src/ui/link/index.mjs.map +0 -1
  453. package/es/src/ui/popover/index.mjs +0 -2
  454. package/es/src/ui/popover/index.mjs.map +0 -1
  455. package/es/src/ui/radio/index.mjs +0 -2
  456. package/es/src/ui/radio/index.mjs.map +0 -1
  457. package/es/src/ui/scrollbar/index.mjs +0 -2
  458. package/es/src/ui/scrollbar/index.mjs.map +0 -1
  459. package/es/src/ui/select/index.mjs +0 -2
  460. package/es/src/ui/select/index.mjs.map +0 -1
  461. package/es/src/ui/table/index.mjs +0 -2
  462. package/es/src/ui/table/index.mjs.map +0 -1
  463. package/es/src/ui/tag/index.mjs +0 -2
  464. package/es/src/ui/tag/index.mjs.map +0 -1
  465. package/es/src/withInstall.mjs +0 -2
  466. package/es/src/withInstall.mjs.map +0 -1
  467. package/lib/_virtual/_commonjsHelpers.cjs +0 -2
  468. package/lib/_virtual/_commonjsHelpers.cjs.map +0 -1
  469. package/lib/_virtual/_plugin-vue_export-helper.cjs +0 -2
  470. package/lib/_virtual/_plugin-vue_export-helper.cjs.map +0 -1
  471. package/lib/_virtual/sortable.esm.cjs +0 -2
  472. package/lib/_virtual/sortable.esm.cjs.map +0 -1
  473. package/lib/_virtual/vuedraggable.umd.cjs +0 -2
  474. package/lib/_virtual/vuedraggable.umd.cjs.map +0 -1
  475. package/lib/_virtual/vuedraggable.umd2.cjs +0 -2
  476. package/lib/_virtual/vuedraggable.umd2.cjs.map +0 -1
  477. package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs +0 -2
  478. package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs.map +0 -1
  479. package/lib/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.cjs +0 -9
  480. package/lib/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.cjs.map +0 -1
  481. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs +0 -2
  482. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs.map +0 -1
  483. package/lib/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.cjs +0 -2
  484. package/lib/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.cjs.map +0 -1
  485. package/lib/package.json.cjs +0 -2
  486. package/lib/package.json.cjs.map +0 -1
  487. package/lib/src/alert/index.cjs +0 -2
  488. package/lib/src/alert/index.cjs.map +0 -1
  489. package/lib/src/alert/src/alert.cjs +0 -2
  490. package/lib/src/alert/src/alert.cjs.map +0 -1
  491. package/lib/src/components.cjs +0 -2
  492. package/lib/src/components.cjs.map +0 -1
  493. package/lib/src/data-chart/index.cjs +0 -2
  494. package/lib/src/data-chart/index.cjs.map +0 -1
  495. package/lib/src/data-chart/src/analyze.cjs +0 -2
  496. package/lib/src/data-chart/src/analyze.cjs.map +0 -1
  497. package/lib/src/data-chart/src/components/area.vue.cjs +0 -2
  498. package/lib/src/data-chart/src/components/area.vue.cjs.map +0 -1
  499. package/lib/src/data-chart/src/components/area.vue2.cjs +0 -2
  500. package/lib/src/data-chart/src/components/area.vue2.cjs.map +0 -1
  501. package/lib/src/data-chart/src/components/area.vue3.cjs +0 -2
  502. package/lib/src/data-chart/src/components/area.vue3.cjs.map +0 -1
  503. package/lib/src/data-chart/src/components/bar.vue.cjs +0 -2
  504. package/lib/src/data-chart/src/components/bar.vue.cjs.map +0 -1
  505. package/lib/src/data-chart/src/components/bar.vue2.cjs +0 -2
  506. package/lib/src/data-chart/src/components/bar.vue2.cjs.map +0 -1
  507. package/lib/src/data-chart/src/components/bar.vue3.cjs +0 -2
  508. package/lib/src/data-chart/src/components/bar.vue3.cjs.map +0 -1
  509. package/lib/src/data-chart/src/components/card.vue.cjs +0 -2
  510. package/lib/src/data-chart/src/components/card.vue.cjs.map +0 -1
  511. package/lib/src/data-chart/src/components/card.vue2.cjs +0 -2
  512. package/lib/src/data-chart/src/components/card.vue2.cjs.map +0 -1
  513. package/lib/src/data-chart/src/components/card.vue3.cjs +0 -2
  514. package/lib/src/data-chart/src/components/card.vue3.cjs.map +0 -1
  515. package/lib/src/data-chart/src/components/data-chart-card-bg-left.svg.cjs +0 -2
  516. package/lib/src/data-chart/src/components/data-chart-card-bg-left.svg.cjs.map +0 -1
  517. package/lib/src/data-chart/src/components/data-chart-card-bg-right.svg.cjs +0 -2
  518. package/lib/src/data-chart/src/components/data-chart-card-bg-right.svg.cjs.map +0 -1
  519. package/lib/src/data-chart/src/components/empty.svg.cjs +0 -2
  520. package/lib/src/data-chart/src/components/empty.svg.cjs.map +0 -1
  521. package/lib/src/data-chart/src/components/empty.vue.cjs +0 -2
  522. package/lib/src/data-chart/src/components/empty.vue.cjs.map +0 -1
  523. package/lib/src/data-chart/src/components/empty.vue2.cjs +0 -2
  524. package/lib/src/data-chart/src/components/empty.vue2.cjs.map +0 -1
  525. package/lib/src/data-chart/src/components/funnel.vue.cjs +0 -2
  526. package/lib/src/data-chart/src/components/funnel.vue.cjs.map +0 -1
  527. package/lib/src/data-chart/src/components/funnel.vue2.cjs +0 -2
  528. package/lib/src/data-chart/src/components/funnel.vue2.cjs.map +0 -1
  529. package/lib/src/data-chart/src/components/funnel.vue3.cjs +0 -2
  530. package/lib/src/data-chart/src/components/funnel.vue3.cjs.map +0 -1
  531. package/lib/src/data-chart/src/components/line.vue.cjs +0 -2
  532. package/lib/src/data-chart/src/components/line.vue.cjs.map +0 -1
  533. package/lib/src/data-chart/src/components/line.vue2.cjs +0 -2
  534. package/lib/src/data-chart/src/components/line.vue2.cjs.map +0 -1
  535. package/lib/src/data-chart/src/components/line.vue3.cjs +0 -2
  536. package/lib/src/data-chart/src/components/line.vue3.cjs.map +0 -1
  537. package/lib/src/data-chart/src/components/pie.vue.cjs +0 -2
  538. package/lib/src/data-chart/src/components/pie.vue.cjs.map +0 -1
  539. package/lib/src/data-chart/src/components/pie.vue2.cjs +0 -2
  540. package/lib/src/data-chart/src/components/pie.vue2.cjs.map +0 -1
  541. package/lib/src/data-chart/src/components/pie.vue3.cjs +0 -2
  542. package/lib/src/data-chart/src/components/pie.vue3.cjs.map +0 -1
  543. package/lib/src/data-chart/src/components/radar.vue.cjs +0 -2
  544. package/lib/src/data-chart/src/components/radar.vue.cjs.map +0 -1
  545. package/lib/src/data-chart/src/components/radar.vue2.cjs +0 -2
  546. package/lib/src/data-chart/src/components/radar.vue2.cjs.map +0 -1
  547. package/lib/src/data-chart/src/components/radar.vue3.cjs +0 -2
  548. package/lib/src/data-chart/src/components/radar.vue3.cjs.map +0 -1
  549. package/lib/src/data-chart/src/components/scatter-simple.vue.cjs +0 -2
  550. package/lib/src/data-chart/src/components/scatter-simple.vue.cjs.map +0 -1
  551. package/lib/src/data-chart/src/components/scatter-simple.vue2.cjs +0 -2
  552. package/lib/src/data-chart/src/components/scatter-simple.vue2.cjs.map +0 -1
  553. package/lib/src/data-chart/src/components/scatter-simple.vue3.cjs +0 -2
  554. package/lib/src/data-chart/src/components/scatter-simple.vue3.cjs.map +0 -1
  555. package/lib/src/data-chart/src/components/scatter.vue.cjs +0 -2
  556. package/lib/src/data-chart/src/components/scatter.vue.cjs.map +0 -1
  557. package/lib/src/data-chart/src/components/scatter.vue2.cjs +0 -2
  558. package/lib/src/data-chart/src/components/scatter.vue2.cjs.map +0 -1
  559. package/lib/src/data-chart/src/components/scatter.vue3.cjs +0 -2
  560. package/lib/src/data-chart/src/components/scatter.vue3.cjs.map +0 -1
  561. package/lib/src/data-chart/src/components/table.vue.cjs +0 -2
  562. package/lib/src/data-chart/src/components/table.vue.cjs.map +0 -1
  563. package/lib/src/data-chart/src/components/table.vue2.cjs +0 -2
  564. package/lib/src/data-chart/src/components/table.vue2.cjs.map +0 -1
  565. package/lib/src/data-chart/src/data-chart.vue.cjs +0 -2
  566. package/lib/src/data-chart/src/data-chart.vue.cjs.map +0 -1
  567. package/lib/src/data-chart/src/data-chart.vue2.cjs +0 -2
  568. package/lib/src/data-chart/src/data-chart.vue2.cjs.map +0 -1
  569. package/lib/src/data-chart/src/utils/config.cjs +0 -2
  570. package/lib/src/data-chart/src/utils/config.cjs.map +0 -1
  571. package/lib/src/data-chart/src/utils/injectionKeys.cjs +0 -2
  572. package/lib/src/data-chart/src/utils/injectionKeys.cjs.map +0 -1
  573. package/lib/src/data-chart/src/utils/mapData.cjs +0 -2
  574. package/lib/src/data-chart/src/utils/mapData.cjs.map +0 -1
  575. package/lib/src/data-chart/src/utils/safe-eval.cjs +0 -2
  576. package/lib/src/data-chart/src/utils/safe-eval.cjs.map +0 -1
  577. package/lib/src/data-chart/src/utils/types.cjs +0 -2
  578. package/lib/src/data-chart/src/utils/types.cjs.map +0 -1
  579. package/lib/src/data-chart/src/utils/useCharts.cjs +0 -2
  580. package/lib/src/data-chart/src/utils/useCharts.cjs.map +0 -1
  581. package/lib/src/defaults.cjs +0 -2
  582. package/lib/src/defaults.cjs.map +0 -1
  583. package/lib/src/dialog/src/dialog.cjs +0 -2
  584. package/lib/src/dialog/src/dialog.cjs.map +0 -1
  585. package/lib/src/feedback-plugin/index.cjs +0 -2
  586. package/lib/src/feedback-plugin/index.cjs.map +0 -1
  587. package/lib/src/file-upload/index.cjs +0 -2
  588. package/lib/src/file-upload/index.cjs.map +0 -1
  589. package/lib/src/file-upload/src/file-upload.vue.cjs +0 -2
  590. package/lib/src/file-upload/src/file-upload.vue.cjs.map +0 -1
  591. package/lib/src/file-upload/src/file-upload.vue2.cjs +0 -2
  592. package/lib/src/file-upload/src/file-upload.vue2.cjs.map +0 -1
  593. package/lib/src/file-upload/src/file-upload.vue3.cjs +0 -2
  594. package/lib/src/file-upload/src/file-upload.vue3.cjs.map +0 -1
  595. package/lib/src/fixed-action-bar/index.cjs +0 -2
  596. package/lib/src/fixed-action-bar/index.cjs.map +0 -1
  597. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +0 -2
  598. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs.map +0 -1
  599. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue2.cjs +0 -2
  600. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue2.cjs.map +0 -1
  601. package/lib/src/icon/index.cjs +0 -2
  602. package/lib/src/icon/index.cjs.map +0 -1
  603. package/lib/src/icon/src/icon.cjs +0 -2
  604. package/lib/src/icon/src/icon.cjs.map +0 -1
  605. package/lib/src/image-upload/index.cjs +0 -2
  606. package/lib/src/image-upload/index.cjs.map +0 -1
  607. package/lib/src/image-upload/src/image-upload.vue.cjs +0 -2
  608. package/lib/src/image-upload/src/image-upload.vue.cjs.map +0 -1
  609. package/lib/src/image-upload/src/image-upload.vue2.cjs +0 -2
  610. package/lib/src/image-upload/src/image-upload.vue2.cjs.map +0 -1
  611. package/lib/src/image-upload/src/image-upload.vue3.cjs +0 -2
  612. package/lib/src/image-upload/src/image-upload.vue3.cjs.map +0 -1
  613. package/lib/src/make-installer.cjs +0 -2
  614. package/lib/src/make-installer.cjs.map +0 -1
  615. package/lib/src/message/src/message.cjs +0 -2
  616. package/lib/src/message/src/message.cjs.map +0 -1
  617. package/lib/src/photo-crop-tool/index.cjs +0 -2
  618. package/lib/src/photo-crop-tool/index.cjs.map +0 -1
  619. package/lib/src/photo-crop-tool/src/composables.cjs +0 -2
  620. package/lib/src/photo-crop-tool/src/composables.cjs.map +0 -1
  621. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +0 -2
  622. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs.map +0 -1
  623. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue2.cjs +0 -2
  624. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue2.cjs.map +0 -1
  625. package/lib/src/subject-action/index.cjs +0 -2
  626. package/lib/src/subject-action/index.cjs.map +0 -1
  627. package/lib/src/subject-action/src/subject-action.vue.cjs +0 -2
  628. package/lib/src/subject-action/src/subject-action.vue.cjs.map +0 -1
  629. package/lib/src/subject-action/src/subject-action.vue2.cjs +0 -2
  630. package/lib/src/subject-action/src/subject-action.vue2.cjs.map +0 -1
  631. package/lib/src/subject-layout/index.cjs +0 -2
  632. package/lib/src/subject-layout/index.cjs.map +0 -1
  633. package/lib/src/subject-layout/src/subject-layout.vue.cjs +0 -2
  634. package/lib/src/subject-layout/src/subject-layout.vue.cjs.map +0 -1
  635. package/lib/src/subject-layout/src/subject-layout.vue2.cjs +0 -2
  636. package/lib/src/subject-layout/src/subject-layout.vue2.cjs.map +0 -1
  637. package/lib/src/subject-list/index.cjs +0 -2
  638. package/lib/src/subject-list/index.cjs.map +0 -1
  639. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +0 -2
  640. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +0 -1
  641. package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.cjs +0 -2
  642. package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.cjs.map +0 -1
  643. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +0 -2
  644. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +0 -1
  645. package/lib/src/subject-list/src/components/SubjectRichText.vue2.cjs +0 -2
  646. package/lib/src/subject-list/src/components/SubjectRichText.vue2.cjs.map +0 -1
  647. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +0 -2
  648. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +0 -1
  649. package/lib/src/subject-list/src/components/subject-blank-fill.vue2.cjs +0 -2
  650. package/lib/src/subject-list/src/components/subject-blank-fill.vue2.cjs.map +0 -1
  651. package/lib/src/subject-list/src/components/subject-scale.vue.cjs +0 -2
  652. package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +0 -1
  653. package/lib/src/subject-list/src/components/subject-scale.vue2.cjs +0 -2
  654. package/lib/src/subject-list/src/components/subject-scale.vue2.cjs.map +0 -1
  655. package/lib/src/subject-list/src/components/subject-single.vue.cjs +0 -2
  656. package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +0 -1
  657. package/lib/src/subject-list/src/components/subject-single.vue2.cjs +0 -2
  658. package/lib/src/subject-list/src/components/subject-single.vue2.cjs.map +0 -1
  659. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +0 -2
  660. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +0 -1
  661. package/lib/src/subject-list/src/components/subject-text-fill.vue2.cjs +0 -2
  662. package/lib/src/subject-list/src/components/subject-text-fill.vue2.cjs.map +0 -1
  663. package/lib/src/subject-list/src/subject-list.vue.cjs +0 -2
  664. package/lib/src/subject-list/src/subject-list.vue.cjs.map +0 -1
  665. package/lib/src/subject-list/src/subject-list.vue2.cjs +0 -2
  666. package/lib/src/subject-list/src/subject-list.vue2.cjs.map +0 -1
  667. package/lib/src/subject-type/index.cjs +0 -2
  668. package/lib/src/subject-type/index.cjs.map +0 -1
  669. package/lib/src/subject-type/src/subject-type.vue.cjs +0 -2
  670. package/lib/src/subject-type/src/subject-type.vue.cjs.map +0 -1
  671. package/lib/src/subject-type/src/subject-type.vue2.cjs +0 -2
  672. package/lib/src/subject-type/src/subject-type.vue2.cjs.map +0 -1
  673. package/lib/src/tiny-mce-editor/index.cjs +0 -2
  674. package/lib/src/tiny-mce-editor/index.cjs.map +0 -1
  675. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +0 -2
  676. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +0 -1
  677. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue2.cjs +0 -2
  678. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue2.cjs.map +0 -1
  679. package/lib/src/ui/button/index.cjs +0 -2
  680. package/lib/src/ui/button/index.cjs.map +0 -1
  681. package/lib/src/ui/checkbox/index.cjs +0 -2
  682. package/lib/src/ui/checkbox/index.cjs.map +0 -1
  683. package/lib/src/ui/dialog/index.cjs +0 -2
  684. package/lib/src/ui/dialog/index.cjs.map +0 -1
  685. package/lib/src/ui/input/index.cjs +0 -2
  686. package/lib/src/ui/input/index.cjs.map +0 -1
  687. package/lib/src/ui/input-number/index.cjs +0 -2
  688. package/lib/src/ui/input-number/index.cjs.map +0 -1
  689. package/lib/src/ui/layout/index.cjs +0 -2
  690. package/lib/src/ui/layout/index.cjs.map +0 -1
  691. package/lib/src/ui/link/index.cjs +0 -2
  692. package/lib/src/ui/link/index.cjs.map +0 -1
  693. package/lib/src/ui/popover/index.cjs +0 -2
  694. package/lib/src/ui/popover/index.cjs.map +0 -1
  695. package/lib/src/ui/radio/index.cjs +0 -2
  696. package/lib/src/ui/radio/index.cjs.map +0 -1
  697. package/lib/src/ui/scrollbar/index.cjs +0 -2
  698. package/lib/src/ui/scrollbar/index.cjs.map +0 -1
  699. package/lib/src/ui/select/index.cjs +0 -2
  700. package/lib/src/ui/select/index.cjs.map +0 -1
  701. package/lib/src/ui/table/index.cjs +0 -2
  702. package/lib/src/ui/table/index.cjs.map +0 -1
  703. package/lib/src/ui/tag/index.cjs +0 -2
  704. package/lib/src/ui/tag/index.cjs.map +0 -1
  705. package/lib/src/withInstall.cjs +0 -2
  706. package/lib/src/withInstall.cjs.map +0 -1
  707. package/theme-chalk/index.css +0 -1
  708. package/theme-chalk/index.scss +0 -21
  709. package/theme-chalk/src/base.css +0 -1
  710. package/theme-chalk/src/base.scss +0 -16
  711. package/theme-chalk/src/common/qxs-components.css +0 -1
  712. package/theme-chalk/src/common/qxs-components.scss +0 -4
  713. package/theme-chalk/src/common/qxs-variables.css +0 -1
  714. package/theme-chalk/src/common/qxs-variables.scss +0 -81
  715. package/theme-chalk/src/data-chart/empty.css +0 -1
  716. package/theme-chalk/src/data-chart/empty.scss +0 -24
  717. package/theme-chalk/src/data-chart/index.css +0 -1
  718. package/theme-chalk/src/data-chart/index.scss +0 -11
  719. package/theme-chalk/src/data-chart/table.css +0 -1
  720. package/theme-chalk/src/data-chart/table.scss +0 -43
  721. package/theme-chalk/src/dialog.css +0 -1
  722. package/theme-chalk/src/dialog.scss +0 -122
  723. package/theme-chalk/src/file-upload.css +0 -0
  724. package/theme-chalk/src/file-upload.scss +0 -7
  725. package/theme-chalk/src/fixed-action-bar.css +0 -1
  726. package/theme-chalk/src/fixed-action-bar.scss +0 -18
  727. package/theme-chalk/src/icon.css +0 -1
  728. package/theme-chalk/src/icon.scss +0 -35
  729. package/theme-chalk/src/image-upload.css +0 -1
  730. package/theme-chalk/src/image-upload.scss +0 -149
  731. package/theme-chalk/src/mixins/_var.css +0 -0
  732. package/theme-chalk/src/mixins/_var.scss +0 -24
  733. package/theme-chalk/src/mixins/config.css +0 -0
  734. package/theme-chalk/src/mixins/config.scss +0 -12
  735. package/theme-chalk/src/mixins/function.css +0 -0
  736. package/theme-chalk/src/mixins/function.scss +0 -95
  737. package/theme-chalk/src/mixins/mixins.css +0 -0
  738. package/theme-chalk/src/mixins/mixins.scss +0 -102
  739. package/theme-chalk/src/normalize.css +0 -1
  740. package/theme-chalk/src/normalize.scss +0 -11
  741. package/theme-chalk/src/photo-crop-tool.css +0 -1
  742. package/theme-chalk/src/photo-crop-tool.scss +0 -98
  743. package/theme-chalk/src/subject-action.css +0 -1
  744. package/theme-chalk/src/subject-action.scss +0 -78
  745. package/theme-chalk/src/subject-layout.css +0 -1
  746. package/theme-chalk/src/subject-layout.scss +0 -28
  747. package/theme-chalk/src/subject-list.css +0 -1
  748. package/theme-chalk/src/subject-list.scss +0 -568
  749. package/theme-chalk/src/subject-template.css +0 -1
  750. package/theme-chalk/src/subject-template.scss +0 -5
  751. package/theme-chalk/src/subject-type.css +0 -1
  752. package/theme-chalk/src/subject-type.scss +0 -42
  753. package/theme-chalk/src/tiny-mce-editor.css +0 -1
  754. package/theme-chalk/src/tiny-mce-editor.scss +0 -29
  755. package/theme-chalk/src/ui/button.css +0 -1
  756. package/theme-chalk/src/ui/button.scss +0 -173
  757. package/theme-chalk/src/ui/input.css +0 -1
  758. package/theme-chalk/src/ui/input.scss +0 -128
  759. package/theme-chalk/src/ui/table.css +0 -1
  760. package/theme-chalk/src/ui/table.scss +0 -166
  761. package/types/index.d.ts.map +0 -1
  762. package/types/src/alert/index.d.ts +0 -66
  763. package/types/src/alert/index.d.ts.map +0 -1
  764. package/types/src/alert/src/alert.d.ts +0 -73
  765. package/types/src/alert/src/alert.d.ts.map +0 -1
  766. package/types/src/components.d.ts +0 -15
  767. package/types/src/components.d.ts.map +0 -1
  768. package/types/src/data-chart/index.d.ts +0 -29
  769. package/types/src/data-chart/index.d.ts.map +0 -1
  770. package/types/src/data-chart/src/analyze.d.ts +0 -23
  771. package/types/src/data-chart/src/analyze.d.ts.map +0 -1
  772. package/types/src/data-chart/src/components/area.vue.d.ts +0 -12
  773. package/types/src/data-chart/src/components/area.vue.d.ts.map +0 -1
  774. package/types/src/data-chart/src/components/bar.vue.d.ts +0 -12
  775. package/types/src/data-chart/src/components/bar.vue.d.ts.map +0 -1
  776. package/types/src/data-chart/src/components/card.vue.d.ts +0 -27
  777. package/types/src/data-chart/src/components/card.vue.d.ts.map +0 -1
  778. package/types/src/data-chart/src/components/empty.vue.d.ts +0 -11
  779. package/types/src/data-chart/src/components/empty.vue.d.ts.map +0 -1
  780. package/types/src/data-chart/src/components/funnel.vue.d.ts +0 -11
  781. package/types/src/data-chart/src/components/funnel.vue.d.ts.map +0 -1
  782. package/types/src/data-chart/src/components/line.vue.d.ts +0 -12
  783. package/types/src/data-chart/src/components/line.vue.d.ts.map +0 -1
  784. package/types/src/data-chart/src/components/pie.vue.d.ts +0 -12
  785. package/types/src/data-chart/src/components/pie.vue.d.ts.map +0 -1
  786. package/types/src/data-chart/src/components/radar.vue.d.ts +0 -11
  787. package/types/src/data-chart/src/components/radar.vue.d.ts.map +0 -1
  788. package/types/src/data-chart/src/components/scatter-simple.vue.d.ts +0 -11
  789. package/types/src/data-chart/src/components/scatter-simple.vue.d.ts.map +0 -1
  790. package/types/src/data-chart/src/components/scatter.vue.d.ts +0 -11
  791. package/types/src/data-chart/src/components/scatter.vue.d.ts.map +0 -1
  792. package/types/src/data-chart/src/components/table.vue.d.ts +0 -27
  793. package/types/src/data-chart/src/components/table.vue.d.ts.map +0 -1
  794. package/types/src/data-chart/src/data-chart.vue.d.ts +0 -28
  795. package/types/src/data-chart/src/data-chart.vue.d.ts.map +0 -1
  796. package/types/src/data-chart/src/utils/config.d.ts +0 -41
  797. package/types/src/data-chart/src/utils/config.d.ts.map +0 -1
  798. package/types/src/data-chart/src/utils/injectionKeys.d.ts +0 -3
  799. package/types/src/data-chart/src/utils/injectionKeys.d.ts.map +0 -1
  800. package/types/src/data-chart/src/utils/mapData.d.ts +0 -64
  801. package/types/src/data-chart/src/utils/mapData.d.ts.map +0 -1
  802. package/types/src/data-chart/src/utils/safe-eval.d.ts +0 -9
  803. package/types/src/data-chart/src/utils/safe-eval.d.ts.map +0 -1
  804. package/types/src/data-chart/src/utils/types.d.ts +0 -72
  805. package/types/src/data-chart/src/utils/types.d.ts.map +0 -1
  806. package/types/src/data-chart/src/utils/useCharts.d.ts +0 -16
  807. package/types/src/data-chart/src/utils/useCharts.d.ts.map +0 -1
  808. package/types/src/defaults.d.ts +0 -6
  809. package/types/src/defaults.d.ts.map +0 -1
  810. package/types/src/dialog/index.d.ts +0 -3
  811. package/types/src/dialog/index.d.ts.map +0 -1
  812. package/types/src/dialog/src/dialog.d.ts +0 -25
  813. package/types/src/dialog/src/dialog.d.ts.map +0 -1
  814. package/types/src/feedback-plugin/index.d.ts +0 -9
  815. package/types/src/feedback-plugin/index.d.ts.map +0 -1
  816. package/types/src/file-upload/index.d.ts +0 -19
  817. package/types/src/file-upload/index.d.ts.map +0 -1
  818. package/types/src/file-upload/src/file-upload.vue.d.ts +0 -34
  819. package/types/src/file-upload/src/file-upload.vue.d.ts.map +0 -1
  820. package/types/src/fixed-action-bar/index.d.ts +0 -56
  821. package/types/src/fixed-action-bar/index.d.ts.map +0 -1
  822. package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts +0 -31
  823. package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts.map +0 -1
  824. package/types/src/icon/index.d.ts +0 -56
  825. package/types/src/icon/index.d.ts.map +0 -1
  826. package/types/src/icon/src/icon.d.ts +0 -62
  827. package/types/src/icon/src/icon.d.ts.map +0 -1
  828. package/types/src/image-upload/index.d.ts +0 -27
  829. package/types/src/image-upload/index.d.ts.map +0 -1
  830. package/types/src/image-upload/src/image-upload.vue.d.ts +0 -49
  831. package/types/src/image-upload/src/image-upload.vue.d.ts.map +0 -1
  832. package/types/src/make-installer.d.ts +0 -6
  833. package/types/src/make-installer.d.ts.map +0 -1
  834. package/types/src/message/index.d.ts +0 -3
  835. package/types/src/message/index.d.ts.map +0 -1
  836. package/types/src/message/src/message.d.ts +0 -21
  837. package/types/src/message/src/message.d.ts.map +0 -1
  838. package/types/src/message/src/toaster.vue.d.ts +0 -3
  839. package/types/src/message/src/toaster.vue.d.ts.map +0 -1
  840. package/types/src/photo-crop-tool/index.d.ts +0 -55
  841. package/types/src/photo-crop-tool/index.d.ts.map +0 -1
  842. package/types/src/photo-crop-tool/src/composables.d.ts +0 -7
  843. package/types/src/photo-crop-tool/src/composables.d.ts.map +0 -1
  844. package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts +0 -65
  845. package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts.map +0 -1
  846. package/types/src/subject-action/index.d.ts +0 -93
  847. package/types/src/subject-action/index.d.ts.map +0 -1
  848. package/types/src/subject-action/src/subject-action.vue.d.ts +0 -92
  849. package/types/src/subject-action/src/subject-action.vue.d.ts.map +0 -1
  850. package/types/src/subject-layout/index.d.ts +0 -30
  851. package/types/src/subject-layout/index.d.ts.map +0 -1
  852. package/types/src/subject-layout/src/subject-layout.vue.d.ts +0 -20
  853. package/types/src/subject-layout/src/subject-layout.vue.d.ts.map +0 -1
  854. package/types/src/subject-list/index.d.ts +0 -20
  855. package/types/src/subject-list/index.d.ts.map +0 -1
  856. package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts +0 -24
  857. package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts.map +0 -1
  858. package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts +0 -25
  859. package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +0 -1
  860. package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts +0 -32
  861. package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +0 -1
  862. package/types/src/subject-list/src/components/subject-scale.vue.d.ts +0 -29
  863. package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +0 -1
  864. package/types/src/subject-list/src/components/subject-single.vue.d.ts +0 -37
  865. package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +0 -1
  866. package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts +0 -34
  867. package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +0 -1
  868. package/types/src/subject-list/src/subject-list.vue.d.ts +0 -21
  869. package/types/src/subject-list/src/subject-list.vue.d.ts.map +0 -1
  870. package/types/src/subject-type/index.d.ts +0 -8
  871. package/types/src/subject-type/index.d.ts.map +0 -1
  872. package/types/src/subject-type/src/subject-type.vue.d.ts +0 -7
  873. package/types/src/subject-type/src/subject-type.vue.d.ts.map +0 -1
  874. package/types/src/tiny-mce-editor/index.d.ts +0 -20
  875. package/types/src/tiny-mce-editor/index.d.ts.map +0 -1
  876. package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts +0 -32
  877. package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts.map +0 -1
  878. package/types/src/ui/button/index.d.ts +0 -96
  879. package/types/src/ui/button/index.d.ts.map +0 -1
  880. package/types/src/ui/checkbox/index.d.ts +0 -111
  881. package/types/src/ui/checkbox/index.d.ts.map +0 -1
  882. package/types/src/ui/dialog/index.d.ts +0 -134
  883. package/types/src/ui/dialog/index.d.ts.map +0 -1
  884. package/types/src/ui/index.d.ts +0 -16
  885. package/types/src/ui/index.d.ts.map +0 -1
  886. package/types/src/ui/input/index.d.ts +0 -132
  887. package/types/src/ui/input/index.d.ts.map +0 -1
  888. package/types/src/ui/input-number/index.d.ts +0 -106
  889. package/types/src/ui/input-number/index.d.ts.map +0 -1
  890. package/types/src/ui/layout/index.d.ts +0 -373
  891. package/types/src/ui/layout/index.d.ts.map +0 -1
  892. package/types/src/ui/link/index.d.ts +0 -57
  893. package/types/src/ui/link/index.d.ts.map +0 -1
  894. package/types/src/ui/popover/index.d.ts +0 -89
  895. package/types/src/ui/popover/index.d.ts.map +0 -1
  896. package/types/src/ui/radio/index.d.ts +0 -84
  897. package/types/src/ui/radio/index.d.ts.map +0 -1
  898. package/types/src/ui/scrollbar/index.d.ts +0 -35
  899. package/types/src/ui/scrollbar/index.d.ts.map +0 -1
  900. package/types/src/ui/select/index.d.ts +0 -113
  901. package/types/src/ui/select/index.d.ts.map +0 -1
  902. package/types/src/ui/table/index.d.ts +0 -152
  903. package/types/src/ui/table/index.d.ts.map +0 -1
  904. package/types/src/ui/tag/index.d.ts +0 -69
  905. package/types/src/ui/tag/index.d.ts.map +0 -1
  906. package/types/src/withInstall.d.ts +0 -4
  907. package/types/src/withInstall.d.ts.map +0 -1
  908. package/types/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload.vue2.mjs","sources":["../../../../../../packages/components/src/file-upload/src/file-upload.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, ref } from 'vue'\nimport { QxsMessage } from '../../message'\nimport { QxsAlert } from '../../alert'\n\ndefineOptions({\n name: 'QxsFileUpload',\n})\n\nexport interface FileUploadProps {\n action: string\n headers?: Record<string, string>\n data?: Record<string, string | Blob>\n name?: string\n size?: number\n max?: number\n accept?: string\n files?: Array<{ name: string; url?: string; file?: File }>\n notip?: boolean\n ext?: string[]\n}\n\nconst props = withDefaults(defineProps<FileUploadProps>(), {\n name: 'file',\n size: 20,\n max: 3,\n files: () => [],\n notip: false,\n accept: 'zip,rar',\n})\n\nconst emit = defineEmits<{\n onSuccess: [res: any, file: File, fileList: File[]]\n}>()\n\nconst ns = useNamespace('file-upload')\n\nconst exts = computed(() => {\n return props.accept.split(',')\n})\n\nconst internalFiles = ref<Array<{ name: string; url?: string; file?: File }>>([...props.files])\nconst isDragging = ref(false)\n\nconst beforeUpload = (file: File): boolean => {\n const fileName = file.name.split('.')\n const fileExt = fileName.at(-1) ?? ''\n const isTypeOk = exts.value.includes(fileExt)\n const isSizeOk = file.size / 1024 / 1024 < props.size\n\n if (!isTypeOk) {\n QxsMessage.error(`上传文件只支持 ${exts.value.join(' / ')} 格式!`)\n return false\n }\n if (!isSizeOk) {\n QxsMessage.error(`上传文件大小不能超过 ${props.size}MB!`)\n return false\n }\n if (internalFiles.value.length >= props.max) {\n QxsMessage.warning('文件上传超过限制')\n return false\n }\n\n return true\n}\n\nconst handleDrop = (e: DragEvent) => {\n isDragging.value = false\n const files = e.dataTransfer?.files\n if (!files) return\n\n Array.from(files).forEach((file) => {\n if (beforeUpload(file)) {\n uploadFile(file)\n }\n })\n}\n\nconst handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n isDragging.value = true\n}\n\nconst handleDragLeave = () => {\n isDragging.value = false\n}\n\nconst handleFileSelect = (e: Event) => {\n const target = e.target as HTMLInputElement\n const files = target.files\n if (!files) return\n\n Array.from(files).forEach((file) => {\n if (beforeUpload(file)) {\n uploadFile(file)\n }\n })\n\n target.value = ''\n}\n\nconst uploadFile = (file: File) => {\n const formData = new FormData()\n formData.append(props.name, file)\n\n if (props.data) {\n Object.entries(props.data).forEach(([key, value]) => {\n formData.append(key, value)\n })\n }\n\n const xhr = new XMLHttpRequest()\n xhr.open('POST', props.action)\n\n if (props.headers) {\n Object.entries(props.headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value)\n })\n }\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n const res = JSON.parse(xhr.responseText)\n internalFiles.value.push({ name: file.name, file })\n emit('onSuccess', res, file, internalFiles.value.map((f) => f.file).filter(Boolean) as File[])\n } else {\n QxsMessage.error('上传失败')\n }\n }\n\n xhr.onerror = () => {\n QxsMessage.error('上传失败')\n }\n\n xhr.send(formData)\n}\n\nconst handleRemove = (index: number) => {\n internalFiles.value.splice(index, 1)\n}\n</script>\n\n<template>\n <div :class=\"ns.b()\">\n <div\n :class=\"[ns.e('control'), { 'is-dragging': isDragging }]\"\n @drop=\"handleDrop\"\n @dragover=\"handleDragOver\"\n @dragleave=\"handleDragLeave\"\n @click=\"($refs.fileInput as HTMLInputElement).click()\"\n >\n <input\n ref=\"fileInput\"\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"max > 1\"\n style=\"display: none;\"\n @change=\"handleFileSelect\"\n >\n <div :class=\"ns.e('icon')\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"48\" height=\"48\">\n <path d=\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z\" />\n </svg>\n </div>\n <div :class=\"ns.e('text')\">\n 将文件拖到此处,或<em>点击上传</em>\n </div>\n </div>\n\n <div v-if=\"internalFiles.length\" :class=\"ns.e('list')\">\n <div v-for=\"(file, index) in internalFiles\" :key=\"index\" :class=\"ns.e('item')\">\n <span>{{ file.name }}</span>\n <button type=\"button\" :class=\"ns.e('remove')\" @click.stop=\"handleRemove(index)\">\n ×\n </button>\n </div>\n </div>\n\n <div v-if=\"!notip\" :class=\"ns.e('tip')\">\n <QxsAlert\n :title=\"`上传文件支持 ${exts.join(' / ')} 格式,单个文件大小不超过 ${size}MB,且文件数量不超过 ${max} 个`\"\n type=\"info\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.qxs-file-upload {\n width: 100%;\n}\n\n.qxs-file-upload__control {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 150px;\n padding: 24px;\n cursor: pointer;\n background: #fafafa;\n border: 1px dashed #d9d9d9;\n border-radius: 4px;\n transition: border-color 0.2s;\n}\n\n.qxs-file-upload__control:hover,\n.qxs-file-upload__control.is-dragging {\n border-color: #409eff;\n}\n\n.qxs-file-upload__icon {\n margin-bottom: 12px;\n color: #c0c4cc;\n}\n\n.qxs-file-upload__text {\n font-size: 14px;\n color: #909399;\n}\n\n.qxs-file-upload__text em {\n font-style: normal;\n color: #409eff;\n}\n\n.qxs-file-upload__list {\n margin-top: 12px;\n}\n\n.qxs-file-upload__item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n font-size: 14px;\n color: #606266;\n border-bottom: 1px solid #eee;\n}\n\n.qxs-file-upload__item:last-child {\n border-bottom: none;\n}\n\n.qxs-file-upload__item span {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.qxs-file-upload__remove {\n padding: 0;\n margin-left: 12px;\n font-size: 16px;\n color: #c0c4cc;\n cursor: pointer;\n background: none;\n border: none;\n transition: color 0.2s;\n}\n\n.qxs-file-upload__remove:hover {\n color: #f56c6c;\n}\n\n.qxs-file-upload__tip {\n margin-top: 12px;\n}\n</style>\n"],"names":["props","__props","emit","__emit","ns","useNamespace","exts","computed","accept","split","internalFiles","ref","files","isDragging","beforeUpload","file","fileExt","name","at","isTypeOk","value","includes","isSizeOk","size","length","max","QxsMessage","warning","error","join","handleDrop","e","dataTransfer","Array","from","forEach","uploadFile","handleDragOver","preventDefault","handleDragLeave","handleFileSelect","target","formData","FormData","append","data","Object","entries","key","xhr","XMLHttpRequest","open","action","headers","setRequestHeader","onload","status","res","JSON","parse","responseText","push","map","f","filter","Boolean","onerror","send","_createElementBlock","class","_normalizeClass","_unref","b","_createElementVNode","onDrop","onDragover","onDragleave","onClick","_cache","$event","$refs","fileInput","click","type","multiple","style","display","onChange","viewBox","fill","width","height","d","_openBlock","_Fragment","_renderList","index","_toDisplayString","_withModifiers","splice","handleRemove","_hoisted_2","notip","_createVNode","QxsAlert","title"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import e from"../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs";var o=".qxs-file-upload[data-v-1059eba1]{width:100%}.qxs-file-upload__control[data-v-1059eba1]{align-items:center;background:#fafafa;border:1px dashed #d9d9d9;border-radius:4px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;min-height:150px;padding:24px;transition:border-color .2s}.qxs-file-upload__control.is-dragging[data-v-1059eba1],.qxs-file-upload__control[data-v-1059eba1]:hover{border-color:#409eff}.qxs-file-upload__icon[data-v-1059eba1]{color:#c0c4cc;margin-bottom:12px}.qxs-file-upload__text[data-v-1059eba1]{color:#909399;font-size:14px}.qxs-file-upload__text em[data-v-1059eba1]{color:#409eff;font-style:normal}.qxs-file-upload__list[data-v-1059eba1]{margin-top:12px}.qxs-file-upload__item[data-v-1059eba1]{align-items:center;border-bottom:1px solid #eee;color:#606266;display:flex;font-size:14px;justify-content:space-between;padding:8px 12px}.qxs-file-upload__item[data-v-1059eba1]:last-child{border-bottom:none}.qxs-file-upload__item span[data-v-1059eba1]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qxs-file-upload__remove[data-v-1059eba1]{background:none;border:none;color:#c0c4cc;cursor:pointer;font-size:16px;margin-left:12px;padding:0;transition:color .2s}.qxs-file-upload__remove[data-v-1059eba1]:hover{color:#f56c6c}.qxs-file-upload__tip[data-v-1059eba1]{margin-top:12px}";e(o);export{o as default};
2
- //# sourceMappingURL=file-upload.vue3.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload.vue3.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{withInstall as t}from"../withInstall.mjs";import o from"./src/fixed-action-bar.vue.mjs";const r=t(o);export{r as QxsFixedActionBar,r as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/fixed-action-bar/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/fixed-action-bar.vue'\n\nconst QxsFixedActionBar = withInstall(component)\n\nexport {\n QxsFixedActionBar,\n}\n\nexport default QxsFixedActionBar\n"],"names":["QxsFixedActionBar","withInstall","component"],"mappings":"+FAGA,MAAMA,EAAoBC,EAAYC"}
@@ -1,2 +0,0 @@
1
- import{defineComponent as e,ref as t,computed as a,onMounted as n,onUnmounted as i,createElementBlock as o,openBlock as r,normalizeStyle as l,createElementVNode as s,normalizeClass as d,unref as c,renderSlot as u}from"vue";import{useNamespace as p}from"@qxs-bns/hooks";import{getDeviceType as h}from"@qxs-bns/utils";import{debounce as m}from"lodash-es";var v=e({name:"QxsFixedActionBar",props:{padding:{type:Number,default:8},className:{type:String,default:""}},setup(e){const v=e,f=p("fixed-action-bar"),g=t(!1),b=t(null),x=t(null),w=t({width:0,height:0}),y=t(0),N=t(0),F={resize:null,parent:null};function R(e,t,a){const n=new ResizeObserver(e=>{e.forEach(e=>requestAnimationFrame(()=>t(e)))});return n.observe(e,a),n}function $(){if(!b.value||!x.value)return;F.resize=R(b.value,e=>{const t=function(e){const t=getComputedStyle(e);return{x:Number.parseFloat(t.paddingLeft)+Number.parseFloat(t.paddingRight),y:Number.parseFloat(t.paddingTop)+Number.parseFloat(t.paddingBottom)}}(e.target);w.value={width:e.contentRect.width+t.x,height:e.contentRect.height+t.y}},{box:"border-box"});const e=x.value.parentElement;e&&(F.parent=R(e,()=>{const t=e.getBoundingClientRect();y.value=t.width,N.value=t.left}))}const E=m(()=>{const{scrollY:e}=window,{clientHeight:t,scrollHeight:a}=document.documentElement;g.value=Math.ceil(e+t)>=a},100),k=a(()=>g.value?"":f.is("shadow")),z=a(()=>"Android"===h()?Math.max(v.padding,20):v.padding),B=a(()=>({width:`${y.value}px`,left:`${N.value}px`,...f.cssVarBlock({"actionbar-padding":`${v.padding}px`,"actionbar-padding-bottom":`${z.value}px`})}));return n(()=>{$(),window.addEventListener("scroll",E,{passive:!0})}),i(()=>{F.resize?.disconnect(),F.parent?.disconnect(),window.removeEventListener("scroll",E)}),(t,a)=>(r(),o("div",{ref_key:"placeholderRef",ref:x,style:l({width:"100%",height:`${w.value.height}px`})},[s("div",{ref_key:"actionbar",ref:b,style:l(B.value),class:d([c(f).e("actionbar"),k.value,e.className]),"data-fixed-calc-width":""},[u(t.$slots,"default")],6)],4))}});export{v as default};
2
- //# sourceMappingURL=fixed-action-bar.vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixed-action-bar.vue.mjs","sources":["../../../../../../packages/components/src/fixed-action-bar/src/fixed-action-bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { getDeviceType } from '@qxs-bns/utils'\nimport { debounce } from 'lodash-es'\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\n\nconst props = defineProps({\n padding: {\n type: Number,\n default: 8,\n },\n className: {\n type: String,\n default: '',\n },\n})\n\ninterface ElementSize { width: number, height: number }\n\nconst ns = useNamespace('fixed-action-bar')\nconst isBottom = ref(false)\nconst actionbar = ref<HTMLElement | null>(null)\nconst placeholderRef = ref<HTMLElement | null>(null)\n\nconst elementSize = ref<ElementSize>({ width: 0, height: 0 })\nconst parentWidth = ref(0)\nconst elementLeft = ref(0)\n\nconst observers = {\n resize: null as ResizeObserver | null,\n parent: null as ResizeObserver | null,\n}\n\nfunction getTotalPadding(el: HTMLElement) {\n const style = getComputedStyle(el)\n return {\n x: Number.parseFloat(style.paddingLeft) + Number.parseFloat(style.paddingRight),\n y: Number.parseFloat(style.paddingTop) + Number.parseFloat(style.paddingBottom),\n }\n}\n\nfunction createResizeObserver(el: HTMLElement,\n callback: (entry: ResizeObserverEntry) => void,\n options?: ResizeObserverOptions) {\n const observer = new ResizeObserver((entries) => {\n entries.forEach(entry => requestAnimationFrame(() => callback(entry)))\n })\n observer.observe(el, options)\n return observer\n}\n\nfunction initObservers() {\n if (!actionbar.value || !placeholderRef.value) {\n return\n }\n\n // 主元素尺寸观察\n observers.resize = createResizeObserver(\n actionbar.value,\n (entry) => {\n const padding = getTotalPadding(entry.target as HTMLElement)\n elementSize.value = {\n width: entry.contentRect.width + padding.x,\n height: entry.contentRect.height + padding.y,\n }\n },\n { box: 'border-box' },\n )\n\n // 父元素观察\n const parent = placeholderRef.value.parentElement\n if (parent) {\n observers.parent = createResizeObserver(parent, () => {\n const rect = parent.getBoundingClientRect()\n parentWidth.value = rect.width\n elementLeft.value = rect.left\n })\n }\n}\n\nconst calculateScrollDetails = debounce(() => {\n const { scrollY } = window\n const { clientHeight, scrollHeight } = document.documentElement\n isBottom.value = Math.ceil(scrollY + clientHeight) >= scrollHeight\n}, 100)\n\nconst shadowClass = computed(() => (!isBottom.value ? ns.is('shadow') : ''))\n\nconst paddingBottom = computed(() =>\n getDeviceType() === 'Android' ? Math.max(props.padding, 20) : props.padding,\n)\n\nconst actionbarStyle = computed(() => ({\n width: `${parentWidth.value}px`,\n left: `${elementLeft.value}px`,\n ...ns.cssVarBlock({\n 'actionbar-padding': `${props.padding}px`,\n 'actionbar-padding-bottom': `${paddingBottom.value}px`,\n }),\n}))\n\nonMounted(() => {\n initObservers()\n window.addEventListener('scroll', calculateScrollDetails, { passive: true })\n})\n\nonUnmounted(() => {\n observers.resize?.disconnect()\n observers.parent?.disconnect()\n window.removeEventListener('scroll', calculateScrollDetails)\n})\n</script>\n\n<script lang=\"ts\">\nexport default {\n name: 'QxsFixedActionBar',\n}\n</script>\n\n<template>\n <div\n ref=\"placeholderRef\"\n :style=\"{ width: '100%', height: `${elementSize.height}px` }\"\n >\n <div\n ref=\"actionbar\"\n :style=\"actionbarStyle\"\n :class=\"[ns.e('actionbar'), shadowClass, className]\"\n data-fixed-calc-width\n >\n <slot />\n </div>\n </div>\n</template>\n"],"names":["name","props","__props","ns","useNamespace","isBottom","ref","actionbar","placeholderRef","elementSize","width","height","parentWidth","elementLeft","observers","resize","parent","createResizeObserver","el","callback","options","observer","ResizeObserver","entries","forEach","entry","requestAnimationFrame","observe","initObservers","value","padding","style","getComputedStyle","x","Number","parseFloat","paddingLeft","paddingRight","y","paddingTop","paddingBottom","getTotalPadding","target","contentRect","box","parentElement","rect","getBoundingClientRect","left","calculateScrollDetails","debounce","scrollY","window","clientHeight","scrollHeight","document","documentElement","Math","ceil","shadowClass","computed","is","getDeviceType","max","actionbarStyle","cssVarBlock","onMounted","addEventListener","passive","onUnmounted","disconnect","removeEventListener","_createElementBlock","_normalizeStyle","_createElementVNode","class","_unref","e","className","_renderSlot","_ctx","$slots"],"mappings":"0WAmHEA,KAAM,wGA7GR,MAAMC,EAAQC,EAaRC,EAAKC,EAAa,oBAClBC,EAAWC,GAAI,GACfC,EAAYD,EAAwB,MACpCE,EAAiBF,EAAwB,MAEzCG,EAAcH,EAAiB,CAAEI,MAAO,EAAGC,OAAQ,IACnDC,EAAcN,EAAI,GAClBO,EAAcP,EAAI,GAElBQ,EAAY,CAChBC,OAAQ,KACRC,OAAQ,MAWV,SAASC,EAAqBC,EAC5BC,EACAC,GACA,MAAMC,EAAW,IAAIC,eAAgBC,IACnCA,EAAQC,QAAQC,GAASC,sBAAsB,IAAMP,EAASM,OAGhE,OADAJ,EAASM,QAAQT,EAAIE,GACdC,CACT,CAEA,SAASO,IACP,IAAKrB,EAAUsB,QAAUrB,EAAeqB,MACtC,OAIFf,EAAUC,OAASE,EACjBV,EAAUsB,MACTJ,IACC,MAAMK,EA3BZ,SAAyBZ,GACvB,MAAMa,EAAQC,iBAAiBd,GAC/B,MAAO,CACLe,EAAGC,OAAOC,WAAWJ,EAAMK,aAAeF,OAAOC,WAAWJ,EAAMM,cAClEC,EAAGJ,OAAOC,WAAWJ,EAAMQ,YAAcL,OAAOC,WAAWJ,EAAMS,eAErE,CAqBsBC,CAAgBhB,EAAMiB,QACtCjC,EAAYoB,MAAQ,CAClBnB,MAAOe,EAAMkB,YAAYjC,MAAQoB,EAAQG,EACzCtB,OAAQc,EAAMkB,YAAYhC,OAASmB,EAAQQ,IAG/C,CAAEM,IAAK,eAIT,MAAM5B,EAASR,EAAeqB,MAAMgB,cAChC7B,IACFF,EAAUE,OAASC,EAAqBD,EAAQ,KAC9C,MAAM8B,EAAO9B,EAAO+B,wBACpBnC,EAAYiB,MAAQiB,EAAKpC,MACzBG,EAAYgB,MAAQiB,EAAKE,OAG/B,CAEA,MAAMC,EAAyBC,EAAS,KACtC,MAAMC,QAAEA,GAAYC,QACdC,aAAEA,EAAAC,aAAcA,GAAiBC,SAASC,gBAChDnD,EAASwB,MAAQ4B,KAAKC,KAAKP,EAAUE,IAAiBC,GACrD,KAEGK,EAAcC,EAAS,IAAQvD,EAASwB,MAA0B,GAAlB1B,EAAG0D,GAAG,WAEtDrB,EAAgBoB,EAAS,IACT,YAApBE,IAAgCL,KAAKM,IAAI9D,EAAM6B,QAAS,IAAM7B,EAAM6B,SAGhEkC,EAAiBJ,EAAS,KAAA,CAC9BlD,MAAO,GAAGE,EAAYiB,UACtBmB,KAAM,GAAGnC,EAAYgB,aAClB1B,EAAG8D,YAAY,CAChB,oBAAqB,GAAGhE,EAAM6B,YAC9B,2BAA4B,GAAGU,EAAcX,sBAIjDqC,EAAU,KACRtC,IACAwB,OAAOe,iBAAiB,SAAUlB,EAAwB,CAAEmB,SAAS,MAGvEC,EAAY,KACVvD,EAAUC,QAAQuD,aAClBxD,EAAUE,QAAQsD,aAClBlB,OAAOmB,oBAAoB,SAAUtB,iBAWrCuB,EAYM,MAAA,SAXA,iBAAJlE,IAAIE,EACHuB,MAAK0C,EAAA,CAAA/D,MAAA,OAAAC,OAAA,GAA8BF,EAAAoB,MAAYlB,eAEhD+D,EAOM,MAAA,SANA,YAAJpE,IAAIC,EACHwB,QAAOiC,EAAAnC,OACP8C,SAAQC,EAAAzE,GAAG0E,EAAC,aAAelB,EAAA9B,MAAa3B,EAAA4E,YACzC,wBAAA,KAEAC,EAAQC,EAAAC,OAAA"}
@@ -1,2 +0,0 @@
1
- import a from"./fixed-action-bar.vue.mjs";export{a as default};
2
- //# sourceMappingURL=fixed-action-bar.vue2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixed-action-bar.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{defineComponent as t,h as o}from"vue";import{withInstall as r}from"../withInstall.mjs";import i from"./src/icon.mjs";const m=r(i);function n(r){return r="string"==typeof r?{icon:r}:r,t({setup:()=>()=>o(i,{...r})})}export{m as QxsIcon,n as createQxsIcon,m as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/icon/index.ts"],"sourcesContent":["import type { PropsType } from './src/icon'\nimport { defineComponent, h } from 'vue'\nimport { withInstall } from '../withInstall'\nimport component from './src/icon'\n\nconst QxsIcon = withInstall(component)\n\n// 返回一个组件对象\nfunction createQxsIcon(opt: PropsType | string) {\n opt = typeof opt === 'string' ? { icon: opt } : opt\n return defineComponent({\n setup() {\n return () => h(component, { ...opt })\n },\n })\n}\n\nexport {\n createQxsIcon,\n QxsIcon,\n}\n\nexport default QxsIcon\n"],"names":["QxsIcon","withInstall","component","createQxsIcon","opt","icon","defineComponent","setup","h"],"mappings":"4HAKA,MAAMA,EAAUC,EAAYC,GAG5B,SAASC,EAAcC,GAErB,OADAA,EAAqB,iBAARA,EAAmB,CAAEC,KAAMD,GAAQA,EACzCE,EAAgB,CACrBC,MAAAA,IACS,IAAMC,EAAEN,EAAW,IAAKE,KAGrC"}
@@ -1,2 +0,0 @@
1
- import{Icon as e}from"../../../node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs";import{useNamespace as t}from"@qxs-bns/hooks";import{defineComponent as s,useAttrs as i,computed as l,ref as r,h as a}from"vue";var o=s({name:"QxsIcon",inheritAttrs:!1,props:{icon:{type:[String,Object,Function],required:!0},flip:{type:String,default:""},rotate:{type:Number,default:0},color:String,size:[String,Number],localIconPrefix:{type:String,default:"icon-"},fallback:String,loading:String},setup(s){const o=i(),n=t("icon"),u=l(()=>{const e=[n.b()];return o.class&&("string"==typeof o.class?e.push(o.class):Array.isArray(o.class)?e.push(...o.class):e.push(o.class)),e}),c=l(()=>{const{class:e,style:t,...s}=o;return s}),v=l(()=>"object"==typeof s.icon||"function"==typeof s.icon),f=l(()=>{if(v.value)return"component";const e=s.icon;return/^https?:\/\//.test(e)||(/^\.{1,2}\//.test(t=e)||t.startsWith("/")||t.includes("/"))?"img":/^i-[^:]+:[^:]+/.test(e)?"unocss":e.startsWith("i-")&&!e.includes(":")?"css":e.includes(":")&&!e.startsWith("i-")?"iconify":/^[\w-]+$/.test(e)&&!e.startsWith("i-")?"svg":"css";var t}),p=l(()=>{if(v.value)return"";const e=s.icon;return"img"===f.value||"unocss"===f.value||f.value,e}),h=l(()=>"css"===f.value?p.value.split(" ").filter(e=>e.trim()):[]);function d(e){return e?"number"==typeof e||/^\d+(?:\.\d+)?$/.test(e)?`${e}px`:e:""}const g=l(()=>{const e=[];switch(s.flip){case"horizontal":e.push("rotateY(180deg)");break;case"vertical":e.push("rotateX(180deg)");break;case"both":e.push("rotateX(180deg)"),e.push("rotateY(180deg)")}s.rotate&&e.push(`rotate(${s.rotate%360}deg)`);let t=`${s.color?`color: ${s.color};`:""}${s.size?`font-size: ${d(s.size)};`:""}${e.length?`transform: ${e.join(" ")};`:""}`;const i=o.style;if(i)if("string"==typeof i)t+=i;else if("object"==typeof i){t+=Object.entries(i).map(e=>{let[t,s]=e;return`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${s};`}).join("")}return t}),y=r(!0),m=r(!1);function b(){y.value=!1,m.value=!1}function $(){y.value=!1,m.value=!0}return()=>{if("component"===f.value)return a(s.icon,{class:["size-inherit","shrink-0",...u.value],style:g.value,...c.value});if("unocss"===f.value)return a("i",{class:[...u.value,p.value],style:g.value,...c.value});if("css"===f.value)return a("i",{class:["size-inherit","shrink-0",...u.value,...h.value],style:g.value,...c.value});if("iconify"===f.value){const t={class:["size-inherit","shrink-0",...u.value],icon:p.value,...c.value};if(s.color&&(t.color=s.color),s.flip&&(t.flip=s.flip),s.rotate&&(t.rotate=s.rotate),s.size){const e=d(s.size);t.width=e,t.height=e}const i=o.style;return i&&(t.style=i),a(e,t)}return"img"===f.value?y.value&&s.loading?a("i",{class:s.loading,...c.value}):m.value&&s.fallback?a("i",{class:s.fallback,...c.value}):a("img",{src:p.value,class:["size-inherit","shrink-0",...u.value],style:[g.value,{width:s.size?d(s.size):"auto",height:"auto"}],onLoad:b,onError:$,...c.value}):p.value?a("i",{class:u.value,style:g.value,...c.value},[a("svg",{"aria-hidden":"true",class:"size-inherit shrink-0"},[a("use",{"xlink:href":`#${s.localIconPrefix}${p.value}`})])]):null}}});export{o as default};
2
- //# sourceMappingURL=icon.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon.mjs","sources":["../../../../../../packages/components/src/icon/src/icon.tsx"],"sourcesContent":["import type { Component, CSSProperties } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, defineComponent, h, ref, useAttrs } from 'vue'\n\nexport interface PropsType {\n icon: string | Component\n flip?: 'horizontal' | 'vertical' | 'both' | '' | undefined\n rotate?: number\n color?: string\n size?: string | number\n localIconPrefix?: string\n // 新增功能:支持图片URL\n fallback?: string // 加载失败时的备用图标\n loading?: string // 加载中显示的图标\n}\n\nexport default defineComponent({\n name: 'QxsIcon',\n inheritAttrs: false,\n props: {\n icon: {\n type: [String, Object, Function] as any,\n required: true,\n },\n flip: {\n type: String as () => 'horizontal' | 'vertical' | 'both' | '' | undefined,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n color: String,\n size: [String, Number],\n localIconPrefix: {\n type: String,\n default: 'icon-',\n },\n fallback: String,\n loading: String,\n },\n setup(props) {\n const attrs = useAttrs()\n const ns = useNamespace('icon')\n\n // 合并外部传入的类名\n const mergedClass = computed(() => {\n const classes: any[] = [ns.b()]\n if (attrs.class) {\n if (typeof attrs.class === 'string') {\n classes.push(attrs.class)\n }\n else if (Array.isArray(attrs.class)) {\n classes.push(...attrs.class)\n }\n else {\n classes.push(attrs.class)\n }\n }\n return classes\n })\n\n // 获取非 class 的其他属性\n const otherAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n return rest\n })\n\n const isComponentName = computed(() => typeof props.icon === 'object' || typeof props.icon === 'function')\n\n const outputType = computed(() => {\n if (isComponentName.value) {\n return 'component'\n }\n\n const iconStr = props.icon as string\n\n // 检测是否为图片URL或路径\n const hasPathFeatures = (str: string) => {\n return /^\\.{1,2}\\//.test(str) || str.startsWith('/') || str.includes('/')\n }\n if (/^https?:\\/\\//.test(iconStr) || hasPathFeatures(iconStr)) {\n return 'img'\n }\n\n // 检测UnoCSS图标格式 (i-[provider]:[name])\n if (/^i-[^:]+:[^:]+/.test(iconStr)) {\n return 'unocss'\n }\n\n // 检测以i-开头的自定义CSS类图标(不包含冒号)\n if (iconStr.startsWith('i-') && !iconStr.includes(':')) {\n return 'css'\n }\n\n // 检测Iconify格式 (provider:name,但不以i-开头)\n if (iconStr.includes(':') && !iconStr.startsWith('i-')) {\n return 'iconify'\n }\n\n // 检测SVG sprite(单个单词,不包含空格和特殊字符,且不以i-开头)\n if (/^[\\w-]+$/.test(iconStr) && !iconStr.startsWith('i-')) {\n return 'svg'\n }\n\n // 其他情况都视为CSS类图标(包括多个类名等)\n return 'css'\n })\n\n const outputName = computed(() => {\n if (isComponentName.value) {\n return ''\n }\n\n const iconStr = props.icon as string\n\n // 对于图片类型,直接返回URL\n if (outputType.value === 'img') {\n return iconStr\n }\n\n // 对于UnoCSS图标,直接返回类名\n if (outputType.value === 'unocss') {\n return iconStr\n }\n\n // 对于传统CSS图标,处理多个类名的情况\n if (outputType.value === 'css') {\n return iconStr\n }\n\n // 其他情况直接返回\n return iconStr\n })\n\n // 对于CSS类图标,将字符串拆分为类名数组\n const cssClasses = computed(() => {\n if (outputType.value === 'css') {\n return outputName.value.split(' ').filter(cls => cls.trim())\n }\n return []\n })\n\n // 用正则匹配 size 是不是 number 值,再判断是否有 px 结尾的单位,没有则拼接\n function formatSize(size: string | number | undefined): string {\n if (!size) {\n return ''\n }\n\n // 如果是数字,直接添加 px\n if (typeof size === 'number') {\n return `${size}px`\n }\n\n // 如果是纯数字字符串,添加 px\n if (/^\\d+(?:\\.\\d+)?$/.test(size)) {\n return `${size}px`\n }\n\n // 如果已经有单位(px、em、rem等)或者不是纯数字,直接返回\n return size\n }\n\n // 统一的样式计算属性,适用于所有图标类型\n // 包含颜色、尺寸和变换(旋转、翻转)\n const style = computed(() => {\n const transform = [] as string[]\n switch (props.flip) {\n case 'horizontal':\n transform.push('rotateY(180deg)')\n break\n case 'vertical':\n transform.push('rotateX(180deg)')\n break\n case 'both':\n transform.push('rotateX(180deg)')\n transform.push('rotateY(180deg)')\n break\n // 对于 '' 和 undefined,不做任何处理\n }\n if (props.rotate) {\n transform.push(`rotate(${props.rotate % 360}deg)`)\n }\n\n // 构建基础样式\n let baseStyle = `${props.color ? `color: ${props.color};` : ''}${props.size ? `font-size: ${formatSize(props.size)};` : ''}${transform.length ? `transform: ${transform.join(' ')};` : ''}`\n\n // 拼接 attrs.style\n const attrsStyle = attrs.style\n if (attrsStyle) {\n if (typeof attrsStyle === 'string') {\n baseStyle += attrsStyle\n }\n else if (typeof attrsStyle === 'object') {\n // 处理对象形式的样式\n const styleEntries = Object.entries(attrsStyle as CSSProperties)\n const styleString = styleEntries\n .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value};`)\n .join('')\n baseStyle += styleString\n }\n }\n\n return baseStyle\n })\n\n // 图片加载状态管理\n const imageLoading = ref(true)\n const imageError = ref(false)\n\n function handleImageLoad() {\n imageLoading.value = false\n imageError.value = false\n }\n\n function handleImageError() {\n imageLoading.value = false\n imageError.value = true\n }\n\n return () => {\n // Vue组件\n if (outputType.value === 'component') {\n return h(\n props.icon as Component,\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // UnoCSS图标\n if (outputType.value === 'unocss') {\n return h(\n 'i',\n {\n class: [...mergedClass.value, outputName.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // CSS类图标\n if (outputType.value === 'css') {\n return h(\n 'i',\n {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value, ...cssClasses.value],\n style: style.value,\n ...otherAttrs.value,\n },\n )\n }\n\n // Iconify图标\n if (outputType.value === 'iconify') {\n // Iconify 组件有自己的 color、width、height、flip、rotate 等属性\n // 需要单独处理这些属性\n const iconifyProps: any = {\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n icon: outputName.value,\n ...otherAttrs.value,\n }\n\n // 传递 color 属性给 Iconify\n if (props.color) {\n iconifyProps.color = props.color\n }\n\n // 传递 flip 属性给 Iconify\n if (props.flip) {\n iconifyProps.flip = props.flip\n }\n\n // 传递 rotate 属性给 Iconify\n if (props.rotate) {\n iconifyProps.rotate = props.rotate\n }\n\n // 处理 size - Iconify 使用 width 和 height\n if (props.size) {\n const formattedSize = formatSize(props.size)\n iconifyProps.width = formattedSize\n iconifyProps.height = formattedSize\n }\n\n // 如果有额外的 style,也要传递\n const attrsStyle = attrs.style\n if (attrsStyle) {\n iconifyProps.style = attrsStyle\n }\n\n return h(Icon, iconifyProps)\n }\n\n // 图片\n if (outputType.value === 'img') {\n // 加载中状态\n if (imageLoading.value && props.loading) {\n return h('i', {\n class: props.loading,\n ...otherAttrs.value,\n })\n }\n // 错误状态\n if (imageError.value && props.fallback) {\n return h('i', {\n class: props.fallback,\n ...otherAttrs.value,\n })\n }\n // 图片本体\n return h('img', {\n src: outputName.value,\n class: ['size-inherit', 'shrink-0', ...mergedClass.value],\n style: [style.value, { width: props.size ? formatSize(props.size) : 'auto', height: 'auto' }],\n onLoad: handleImageLoad,\n onError: handleImageError,\n ...otherAttrs.value,\n })\n }\n\n // SVG Sprite\n if (outputName.value) {\n return h(\n 'i',\n {\n class: mergedClass.value,\n style: style.value,\n ...otherAttrs.value,\n },\n [\n h(\n 'svg',\n {\n 'aria-hidden': 'true',\n 'class': 'size-inherit shrink-0',\n },\n [\n h('use', {\n 'xlink:href': `#${props.localIconPrefix}${outputName.value}`,\n }),\n ],\n ),\n ],\n )\n }\n\n return null\n }\n },\n})\n"],"names":["component","defineComponent","name","inheritAttrs","props","icon","type","String","Object","Function","required","flip","default","rotate","Number","color","size","localIconPrefix","fallback","loading","setup","attrs","useAttrs","ns","useNamespace","mergedClass","computed","classes","b","class","push","Array","isArray","otherAttrs","_","style","__","rest","isComponentName","outputType","value","iconStr","test","str","startsWith","includes","outputName","cssClasses","split","filter","cls","trim","formatSize","transform","baseStyle","length","join","attrsStyle","entries","map","_ref","key","replace","toLowerCase","imageLoading","ref","imageError","handleImageLoad","handleImageError","h","iconifyProps","formattedSize","width","height","Icon","src","onLoad","onError"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{withInstall as m}from"../withInstall.mjs";import o from"./src/image-upload.vue.mjs";const t=m(o);export{t as QxsImageUpload,t as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/image-upload/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/image-upload.vue'\n\nconst QxsImageUpload = withInstall(component)\n\nexport {\n QxsImageUpload,\n}\n\nexport default QxsImageUpload\n"],"names":["QxsImageUpload","withInstall","component"],"mappings":"2FAGA,MAAMA,EAAiBC,EAAYC"}
@@ -1,2 +0,0 @@
1
- import e from"./image-upload.vue2.mjs";import"./image-upload.vue3.mjs";import a from"../../../_virtual/_plugin-vue_export-helper.mjs";var m=a(e,[["__scopeId","data-v-299e0c8a"]]);export{m as default};
2
- //# sourceMappingURL=image-upload.vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-upload.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{defineComponent as e,mergeModels as a,useModel as i,ref as l,computed as t,onUnmounted as s,createElementBlock as u,openBlock as r,normalizeStyle as o,createElementVNode as n,createCommentVNode as d,Fragment as p,renderList as c,createVNode as m,unref as v,normalizeClass as g,toDisplayString as f,withModifiers as h}from"vue";import{ZoomIn as q,Delete as _,UploadImage as x}from"@qxs-bns/icons";import{QxsIcon as y}from"../../icon/index.mjs";import{QxsMessage as b}from"../../message/src/message.mjs";const k={class:"qxs-image-upload__list"},w=["src","alt"],j={key:1,class:"qxs-image-upload__placeholder"},C={key:2,class:"qxs-image-upload__progress"},L={class:"qxs-image-upload__actions"},z=["onClick"],$=["onClick"],O=["accept","multiple","disabled"],R={class:"qxs-image-upload__add-content"},S={key:0,class:"qxs-image-upload__tip"},U=["src"];var M=e({name:"QxsImageUpload",__name:"image-upload",props:a({action:{type:String,required:!0},headers:{type:Object,required:!1},data:{type:Object,required:!1},name:{type:String,required:!1,default:"file"},size:{type:Number,required:!1,default:20},width:{type:Number,required:!1,default:160},height:{type:Number,required:!1,default:90},accept:{type:String,required:!1,default:"image/jpeg,image/jpg,image/png,image/gif"},placeholder:{type:String,required:!1,default:"上传图片"},notip:{type:Boolean,required:!1,default:!1},tipText:{type:String,required:!1,default:""},disabled:{type:Boolean,required:!1,default:!1},limit:{type:Number,required:!1,default:1}},{fileList:{type:Array,default:()=>[]},fileListModifiers:{}}),emits:a(["success","remove"],["update:fileList"]),setup(e,{emit:a}){const M=e,N=a,T=i(e,"fileList"),B=l(!1),E=l(0),A=l(!1),D=l(0),H=t(()=>M.accept.split(",").map(e=>e.split("/").pop())),I=t(()=>{if(M.tipText)return M.tipText;return`支持 ${H.value.join(" / ")} 格式,大小不超过 ${M.size}MB`+(M.width&&M.height?`,建议尺寸 ${M.width}×${M.height}`:"")}),W=t(()=>({"--upload-width":`${M.width}px`,"--upload-height":`${M.height}px`}));function F(e){const a=e.target,i=a.files;i&&!M.disabled&&(T.value.length+i.length>M.limit?b.warning(`最多上传 ${M.limit} 张图片`):(Array.from(i).forEach(e=>{if(!function(e){const a=e.name.split(".").pop()?.toLowerCase()??"";return H.value.some(e=>e?.toLowerCase()===a)?!(e.size/1024/1024>M.size&&(b.error(`图片大小不能超过 ${M.size}MB`),1)):(b.error(`仅支持上传 ${H.value.join(" / ")} 格式的图片`),!1)}(e))return;const a={uid:Date.now()+Math.random(),name:e.name,size:e.size,status:"uploading",url:URL.createObjectURL(e),file:e};T.value.push(a),function(e,a){const i=new FormData;i.append(M.name,e),M.data&&Object.entries(M.data).forEach(([e,a])=>{i.append(e,a)});const l=new XMLHttpRequest;l.open("POST",M.action),M.headers&&Object.entries(M.headers).forEach(([e,a])=>{l.setRequestHeader(e,a)});l.upload.onprogress=e=>{e.lengthComputable&&(E.value=Math.floor(e.loaded/e.total*100))},l.onload=()=>{if(B.value=!1,E.value=0,l.status>=200&&l.status<300){const e=JSON.parse(l.responseText);a.status="success",N("success",e,a,T.value)}else a.status="fail",b.error("上传失败")},l.onerror=()=>{B.value=!1,E.value=0,a.status="fail",b.error("上传失败")},B.value=!0,E.value=0,l.send(i)}(e,a)}),a.value=""))}function J(){A.value=!1}function P(){D.value=(D.value-1+T.value.length)%T.value.length}function Q(){D.value=(D.value+1)%T.value.length}return s(()=>{T.value.forEach(e=>{e.url?.startsWith("blob:")&&URL.revokeObjectURL(e.url)})}),(e,a)=>(r(),u("div",{class:"qxs-image-upload",style:o(W.value)},[n("div",k,[(r(!0),u(p,null,c(T.value,(a,i)=>(r(),u("div",{key:a.uid||i,class:"qxs-image-upload__item"},[a.url?(r(),u("img",{key:0,src:a.url,alt:a.name},null,8,w)):(r(),u("div",j,"无图片")),"uploading"===a.status?(r(),u("div",C,[n("div",{class:"qxs-image-upload__progress-bar",style:o({width:`${E.value}%`})},null,4)])):d("v-if",!0),n("div",L,[a.url?(r(),u("span",{key:0,class:"qxs-image-upload__action",onClick:e=>function(e){D.value=e,A.value=!0}(i)},[m(v(y),{icon:v(q),size:"14px"},null,8,["icon"])],8,z)):d("v-if",!0),n("span",{class:g(["qxs-image-upload__action",{"is-disabled":e.disabled}]),onClick:e=>function(e){if(M.disabled)return;const a=T.value[e];a.url?.startsWith("blob:")&&URL.revokeObjectURL(a.url),T.value.splice(e,1),N("remove",a)}(i)},[m(v(y),{icon:v(_),size:"14px"},null,8,["icon"])],10,$)])]))),128)),T.value.length<e.limit?(r(),u("label",{key:0,class:g(["qxs-image-upload__add",{"is-disabled":e.disabled}])},[n("input",{type:"file",accept:e.accept,multiple:e.limit>1,disabled:e.disabled,onChange:F},null,40,O),n("div",R,[m(v(y),{icon:v(x),size:"32px"},null,8,["icon"]),n("p",null,f(e.placeholder),1)])],2)):d("v-if",!0)]),e.notip?d("v-if",!0):(r(),u("div",S,f(I.value),1)),d(" Image Viewer "),A.value?(r(),u("div",{key:1,class:"qxs-image-viewer",onClick:h(J,["self"])},[n("div",{class:"qxs-image-viewer__mask",onClick:J}),n("span",{class:"qxs-image-viewer__close",onClick:J},"×"),T.value.length>1?(r(),u("span",{key:0,class:"qxs-image-viewer__prev",onClick:P},"‹")):d("v-if",!0),T.value.length>1?(r(),u("span",{key:1,class:"qxs-image-viewer__next",onClick:Q},"›")):d("v-if",!0),T.value[D.value]?.url?(r(),u("img",{key:2,src:T.value[D.value].url,class:"qxs-image-viewer__img"},null,8,U)):d("v-if",!0)])):d("v-if",!0)],4))}});export{M as default};
2
- //# sourceMappingURL=image-upload.vue2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-upload.vue2.mjs","sources":["../../../../../../packages/components/src/image-upload/src/image-upload.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Delete, UploadImage, ZoomIn } from '@qxs-bns/icons'\nimport { QxsIcon } from '../../icon'\nimport { computed, onUnmounted, ref } from 'vue'\nimport { QxsMessage } from '../../message'\n\nexport interface ImageFile {\n uid?: string | number\n name: string\n url?: string\n size?: number\n status?: 'ready' | 'uploading' | 'success' | 'fail'\n file?: File\n}\n\nexport interface ImageUploadProps {\n action: string\n headers?: Record<string, string>\n data?: Record<string, string | Blob>\n name?: string\n size?: number\n width?: number\n height?: number\n accept?: string\n placeholder?: string\n notip?: boolean\n tipText?: string\n disabled?: boolean\n limit?: number\n}\n\ndefineOptions({\n name: 'QxsImageUpload',\n})\n\nconst props = withDefaults(defineProps<ImageUploadProps>(), {\n name: 'file',\n size: 20,\n width: 160,\n height: 90,\n limit: 1,\n placeholder: '上传图片',\n notip: false,\n accept: 'image/jpeg,image/jpg,image/png,image/gif',\n tipText: '',\n disabled: false,\n})\n\nconst emits = defineEmits<{\n success: [res: any, file: ImageFile, files: ImageFile[]]\n remove: [file: ImageFile]\n}>()\n\nconst fileList = defineModel<ImageFile[]>('fileList', { default: () => [] })\n\nconst isUploading = ref(false)\nconst uploadProgress = ref(0)\nconst viewerVisible = ref(false)\nconst viewerIndex = ref(0)\n\nconst exts = computed(() =>\n props.accept.split(',').map((ext) => ext.split('/').pop()),\n)\n\nconst tipMessage = computed(() => {\n if (props.tipText) return props.tipText\n const formatText = `支持 ${exts.value.join(' / ')} 格式,大小不超过 ${props.size}MB`\n const sizeText = props.width && props.height ? `,建议尺寸 ${props.width}×${props.height}` : ''\n return formatText + sizeText\n})\n\nconst cssVars = computed(() => ({\n '--upload-width': `${props.width}px`,\n '--upload-height': `${props.height}px`,\n}))\n\nfunction validateFile(file: File): boolean {\n const fileExt = file.name.split('.').pop()?.toLowerCase() ?? ''\n const isTypeOk = exts.value.some((ext) => ext?.toLowerCase() === fileExt)\n\n if (!isTypeOk) {\n QxsMessage.error(`仅支持上传 ${exts.value.join(' / ')} 格式的图片`)\n return false\n }\n\n const fileSizeMB = file.size / 1024 / 1024\n if (fileSizeMB > props.size) {\n QxsMessage.error(`图片大小不能超过 ${props.size}MB`)\n return false\n }\n\n return true\n}\n\nfunction handleFileSelect(e: Event) {\n const target = e.target as HTMLInputElement\n const files = target.files\n if (!files || props.disabled) return\n\n if (fileList.value.length + files.length > props.limit) {\n QxsMessage.warning(`最多上传 ${props.limit} 张图片`)\n return\n }\n\n Array.from(files).forEach((file) => {\n if (!validateFile(file)) return\n\n const uid = Date.now() + Math.random()\n const imageFile: ImageFile = {\n uid,\n name: file.name,\n size: file.size,\n status: 'uploading',\n url: URL.createObjectURL(file),\n file,\n }\n\n fileList.value.push(imageFile)\n uploadFile(file, imageFile)\n })\n\n target.value = ''\n}\n\nfunction uploadFile(file: File, imageFile: ImageFile) {\n const formData = new FormData()\n formData.append(props.name, file)\n\n if (props.data) {\n Object.entries(props.data).forEach(([key, value]) => {\n formData.append(key, value)\n })\n }\n\n const xhr = new XMLHttpRequest()\n xhr.open('POST', props.action)\n\n if (props.headers) {\n Object.entries(props.headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value)\n })\n }\n\n xhr.upload.onprogress = (e) => {\n if (e.lengthComputable) {\n uploadProgress.value = Math.floor((e.loaded / e.total) * 100)\n }\n }\n\n xhr.onload = () => {\n isUploading.value = false\n uploadProgress.value = 0\n\n if (xhr.status >= 200 && xhr.status < 300) {\n const res = JSON.parse(xhr.responseText)\n imageFile.status = 'success'\n emits('success', res, imageFile, fileList.value)\n } else {\n imageFile.status = 'fail'\n QxsMessage.error('上传失败')\n }\n }\n\n xhr.onerror = () => {\n isUploading.value = false\n uploadProgress.value = 0\n imageFile.status = 'fail'\n QxsMessage.error('上传失败')\n }\n\n isUploading.value = true\n uploadProgress.value = 0\n xhr.send(formData)\n}\n\nfunction handleRemove(index: number) {\n if (props.disabled) return\n\n const file = fileList.value[index]\n if (file.url?.startsWith('blob:')) {\n URL.revokeObjectURL(file.url)\n }\n\n fileList.value.splice(index, 1)\n emits('remove', file)\n}\n\nfunction handlePreview(index: number) {\n viewerIndex.value = index\n viewerVisible.value = true\n}\n\nfunction closeViewer() {\n viewerVisible.value = false\n}\n\nfunction prevImage() {\n viewerIndex.value = (viewerIndex.value - 1 + fileList.value.length) % fileList.value.length\n}\n\nfunction nextImage() {\n viewerIndex.value = (viewerIndex.value + 1) % fileList.value.length\n}\n\nonUnmounted(() => {\n fileList.value.forEach((file) => {\n if (file.url?.startsWith('blob:')) {\n URL.revokeObjectURL(file.url)\n }\n })\n})\n</script>\n\n<template>\n <div class=\"qxs-image-upload\" :style=\"cssVars\">\n <div class=\"qxs-image-upload__list\">\n <div\n v-for=\"(file, index) in fileList\"\n :key=\"file.uid || index\"\n class=\"qxs-image-upload__item\"\n >\n <img v-if=\"file.url\" :src=\"file.url\" :alt=\"file.name\">\n <div v-else class=\"qxs-image-upload__placeholder\">无图片</div>\n\n <div v-if=\"file.status === 'uploading'\" class=\"qxs-image-upload__progress\">\n <div class=\"qxs-image-upload__progress-bar\" :style=\"{ width: `${uploadProgress}%` }\" />\n </div>\n\n <div class=\"qxs-image-upload__actions\">\n <span v-if=\"file.url\" class=\"qxs-image-upload__action\" @click=\"handlePreview(index)\">\n <QxsIcon :icon=\"ZoomIn\" size=\"14px\" />\n </span>\n <span class=\"qxs-image-upload__action\" :class=\"{ 'is-disabled': disabled }\" @click=\"handleRemove(index)\">\n <QxsIcon :icon=\"Delete\" size=\"14px\" />\n </span>\n </div>\n </div>\n\n <label\n v-if=\"fileList.length < limit\"\n class=\"qxs-image-upload__add\"\n :class=\"{ 'is-disabled': disabled }\"\n >\n <input\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"limit > 1\"\n :disabled=\"disabled\"\n @change=\"handleFileSelect\"\n >\n <div class=\"qxs-image-upload__add-content\">\n <QxsIcon :icon=\"UploadImage\" size=\"32px\" />\n <p>{{ placeholder }}</p>\n </div>\n </label>\n </div>\n\n <div v-if=\"!notip\" class=\"qxs-image-upload__tip\">\n {{ tipMessage }}\n </div>\n\n <!-- Image Viewer -->\n <div v-if=\"viewerVisible\" class=\"qxs-image-viewer\" @click.self=\"closeViewer\">\n <div class=\"qxs-image-viewer__mask\" @click=\"closeViewer\" />\n <span class=\"qxs-image-viewer__close\" @click=\"closeViewer\">×</span>\n <span v-if=\"fileList.length > 1\" class=\"qxs-image-viewer__prev\" @click=\"prevImage\">‹</span>\n <span v-if=\"fileList.length > 1\" class=\"qxs-image-viewer__next\" @click=\"nextImage\">›</span>\n <img\n v-if=\"fileList[viewerIndex]?.url\"\n :src=\"fileList[viewerIndex].url\"\n class=\"qxs-image-viewer__img\"\n >\n </div>\n </div>\n</template>\n\n<style scoped>\n.qxs-image-upload {\n --upload-width: 160px;\n --upload-height: 90px;\n}\n\n.qxs-image-upload__list {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.qxs-image-upload__item,\n.qxs-image-upload__add {\n position: relative;\n width: var(--upload-width);\n height: var(--upload-height);\n overflow: hidden;\n cursor: pointer;\n border: 1px dashed #d9d9d9;\n border-radius: 6px;\n}\n\n.qxs-image-upload__item:hover,\n.qxs-image-upload__add:hover {\n border-color: #409eff;\n}\n\n.qxs-image-upload__add.is-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.qxs-image-upload__add input {\n display: none;\n}\n\n.qxs-image-upload__add-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #8c939d;\n}\n\n.qxs-image-upload__add-content p {\n margin: 8px 0 0;\n font-size: 14px;\n}\n\n.qxs-image-upload__item img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.qxs-image-upload__placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #909399;\n background: #f5f7fa;\n}\n\n.qxs-image-upload__progress {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 4px;\n background: rgb(0 0 0 / 10%);\n}\n\n.qxs-image-upload__progress-bar {\n height: 100%;\n background: #409eff;\n transition: width 0.2s;\n}\n\n.qxs-image-upload__actions {\n position: absolute;\n inset: 0;\n display: flex;\n gap: 16px;\n align-items: center;\n justify-content: center;\n background: rgb(0 0 0 / 50%);\n opacity: 0;\n transition: opacity 0.2s;\n}\n\n.qxs-image-upload__item:hover .qxs-image-upload__actions {\n opacity: 1;\n}\n\n.qxs-image-upload__action {\n padding: 4px;\n color: #fff;\n cursor: pointer;\n}\n\n.qxs-image-upload__action.is-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.qxs-image-upload__tip {\n margin-top: 8px;\n font-size: 12px;\n color: #909399;\n}\n\n/* Image Viewer */\n.qxs-image-viewer {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.qxs-image-viewer__mask {\n position: absolute;\n inset: 0;\n background: rgb(0 0 0 / 80%);\n}\n\n.qxs-image-viewer__close {\n position: absolute;\n top: 40px;\n right: 40px;\n z-index: 1;\n font-size: 40px;\n color: #fff;\n cursor: pointer;\n}\n\n.qxs-image-viewer__prev,\n.qxs-image-viewer__next {\n position: absolute;\n top: 50%;\n z-index: 1;\n font-size: 60px;\n color: #fff;\n cursor: pointer;\n user-select: none;\n transform: translateY(-50%);\n}\n\n.qxs-image-viewer__prev {\n left: 40px;\n}\n\n.qxs-image-viewer__next {\n right: 40px;\n}\n\n.qxs-image-viewer__img {\n z-index: 1;\n max-width: 80%;\n max-height: 80%;\n}\n</style>\n"],"names":["props","__props","emits","__emit","fileList","_useModel","isUploading","ref","uploadProgress","viewerVisible","viewerIndex","exts","computed","accept","split","map","ext","pop","tipMessage","tipText","value","join","size","width","height","cssVars","handleFileSelect","e","target","files","disabled","length","limit","QxsMessage","warning","Array","from","forEach","file","fileExt","name","toLowerCase","some","error","validateFile","imageFile","uid","Date","now","Math","random","status","url","URL","createObjectURL","push","formData","FormData","append","data","Object","entries","key","xhr","XMLHttpRequest","open","action","headers","setRequestHeader","upload","onprogress","lengthComputable","floor","loaded","total","onload","res","JSON","parse","responseText","onerror","send","uploadFile","closeViewer","prevImage","nextImage","onUnmounted","startsWith","revokeObjectURL","_createElementBlock","class","style","_createElementVNode","_hoisted_1","_openBlock","_Fragment","_renderList","index","src","alt","_hoisted_3","_hoisted_4","_hoisted_5","onClick","$event","handlePreview","_createVNode","_unref","QxsIcon","icon","ZoomIn","_normalizeClass","splice","handleRemove","Delete","type","multiple","onChange","_hoisted_9","UploadImage","placeholder","notip","_hoisted_10","_toDisplayString","_createCommentVNode"],"mappings":"imDAmCA,MAAMA,EAAQC,EAaRC,EAAQC,EAKRC,EAAWC,EAAwBJ,EAAC,YAEpCK,EAAcC,GAAI,GAClBC,EAAiBD,EAAI,GACrBE,EAAgBF,GAAI,GACpBG,EAAcH,EAAI,GAElBI,EAAOC,EAAS,IACpBZ,EAAMa,OAAOC,MAAM,KAAKC,IAAKC,GAAQA,EAAIF,MAAM,KAAKG,QAGhDC,EAAaN,EAAS,KAC1B,GAAIZ,EAAMmB,QAAS,OAAOnB,EAAMmB,QAGhC,MAFmB,MAAMR,EAAKS,MAAMC,KAAK,mBAAmBrB,EAAMsB,UACjDtB,EAAMuB,OAASvB,EAAMwB,OAAS,SAASxB,EAAMuB,SAASvB,EAAMwB,SAAW,MAIpFC,EAAUb,EAAS,KAAA,CACvB,iBAAkB,GAAGZ,EAAMuB,UAC3B,kBAAmB,GAAGvB,EAAMwB,cAqB9B,SAASE,EAAiBC,GACxB,MAAMC,EAASD,EAAEC,OACXC,EAAQD,EAAOC,MAChBA,IAAS7B,EAAM8B,WAEhB1B,EAASgB,MAAMW,OAASF,EAAME,OAAS/B,EAAMgC,MAC/CC,EAAWC,QAAQ,QAAQlC,EAAMgC,cAInCG,MAAMC,KAAKP,GAAOQ,QAASC,IACzB,IA7BJ,SAAsBA,GACpB,MAAMC,EAAUD,EAAKE,KAAK1B,MAAM,KAAKG,OAAOwB,eAAiB,GAG7D,OAFiB9B,EAAKS,MAAMsB,KAAM1B,GAAQA,GAAKyB,gBAAkBF,KAO9CD,EAAKhB,KAAO,KAAO,KACrBtB,EAAMsB,OACrBW,EAAWU,MAAM,YAAY3C,EAAMsB,UAC5B,KAPPW,EAAWU,MAAM,SAAShC,EAAKS,MAAMC,KAAK,iBACnC,EAUX,CAaSuB,CAAaN,GAAO,OAEzB,MACMO,EAAuB,CAC3BC,IAFUC,KAAKC,MAAQC,KAAKC,SAG5BV,KAAMF,EAAKE,KACXlB,KAAMgB,EAAKhB,KACX6B,OAAQ,YACRC,IAAKC,IAAIC,gBAAgBhB,GACzBA,QAGFlC,EAASgB,MAAMmC,KAAKV,GAOxB,SAAoBP,EAAYO,GAC9B,MAAMW,EAAW,IAAIC,SACrBD,EAASE,OAAO1D,EAAMwC,KAAMF,GAExBtC,EAAM2D,MACRC,OAAOC,QAAQ7D,EAAM2D,MAAMtB,QAAQ,EAAEyB,EAAK1C,MACxCoC,EAASE,OAAOI,EAAK1C,KAIzB,MAAM2C,EAAM,IAAIC,eAChBD,EAAIE,KAAK,OAAQjE,EAAMkE,QAEnBlE,EAAMmE,SACRP,OAAOC,QAAQ7D,EAAMmE,SAAS9B,QAAQ,EAAEyB,EAAK1C,MAC3C2C,EAAIK,iBAAiBN,EAAK1C,KAI9B2C,EAAIM,OAAOC,WAAc3C,IACnBA,EAAE4C,mBACJ/D,EAAeY,MAAQ6B,KAAKuB,MAAO7C,EAAE8C,OAAS9C,EAAE+C,MAAS,OAI7DX,EAAIY,OAAS,KAIX,GAHArE,EAAYc,OAAQ,EACpBZ,EAAeY,MAAQ,EAEnB2C,EAAIZ,QAAU,KAAOY,EAAIZ,OAAS,IAAK,CACzC,MAAMyB,EAAMC,KAAKC,MAAMf,EAAIgB,cAC3BlC,EAAUM,OAAS,UACnBjD,EAAM,UAAW0E,EAAK/B,EAAWzC,EAASgB,MAC5C,MACEyB,EAAUM,OAAS,OACnBlB,EAAWU,MAAM,SAIrBoB,EAAIiB,QAAU,KACZ1E,EAAYc,OAAQ,EACpBZ,EAAeY,MAAQ,EACvByB,EAAUM,OAAS,OACnBlB,EAAWU,MAAM,SAGnBrC,EAAYc,OAAQ,EACpBZ,EAAeY,MAAQ,EACvB2C,EAAIkB,KAAKzB,EACX,CAvDI0B,CAAW5C,EAAMO,KAGnBjB,EAAOR,MAAQ,IACjB,CAsEA,SAAS+D,IACP1E,EAAcW,OAAQ,CACxB,CAEA,SAASgE,IACP1E,EAAYU,OAASV,EAAYU,MAAQ,EAAIhB,EAASgB,MAAMW,QAAU3B,EAASgB,MAAMW,MACvF,CAEA,SAASsD,IACP3E,EAAYU,OAASV,EAAYU,MAAQ,GAAKhB,EAASgB,MAAMW,MAC/D,QAEAuD,EAAY,KACVlF,EAASgB,MAAMiB,QAASC,IAClBA,EAAKc,KAAKmC,WAAW,UACvBlC,IAAImC,gBAAgBlD,EAAKc,qBAO7BqC,EA2DM,MAAA,CA3DDC,MAAM,mBAAoBC,QAAOlE,EAAAL,SACpCwE,EAwCM,MAxCNC,EAwCM,EAvCJC,GAAA,GAAAL,EAoBMM,EAAA,KAAAC,EAnBoB5F,EAAAgB,MAAQ,CAAxBkB,EAAM2D,SADhBR,EAoBM,MAAA,CAlBH3B,IAAKxB,EAAKQ,KAAOmD,EAClBP,MAAM,2BAEKpD,EAAKc,SAAhBqC,EAAsD,MAAA,OAAhCS,IAAK5D,EAAKc,IAAM+C,IAAK7D,EAAKE,sBAChDiD,EAA2D,MAA3DW,EAAkD,QAE5B,cAAX9D,EAAKa,QAAhB2C,IAAAL,EAEM,MAFNY,EAEM,CADJT,EAAuF,MAAA,CAAlFF,MAAM,iCAAkCC,kBAAmBnF,EAAAY,oCAGlEwE,EAOM,MAPNU,EAOM,CANQhE,EAAKc,SAAjBqC,EAEO,OAAA,OAFeC,MAAM,2BAA4Ba,QAAKC,GA1CvE,SAAuBP,GACrBvF,EAAYU,MAAQ6E,EACpBxF,EAAcW,OAAQ,CACxB,CAuCyEqF,CAAcR,KAC3ES,EAAsCC,EAAAC,GAAA,CAA5BC,KAAMF,EAAAG,GAAQxF,KAAK,6CAE/BsE,EAEO,OAAA,CAFDF,MAAKqB,EAAA,CAAC,2BAA0B,CAAA,cAA0BjF,EAAAA,YAAayE,QAAKC,GAzD5F,SAAsBP,GACpB,GAAIjG,EAAM8B,SAAU,OAEpB,MAAMQ,EAAOlC,EAASgB,MAAM6E,GACxB3D,EAAKc,KAAKmC,WAAW,UACvBlC,IAAImC,gBAAgBlD,EAAKc,KAG3BhD,EAASgB,MAAM4F,OAAOf,EAAO,GAC7B/F,EAAM,SAAUoC,EAClB,CA+C8F2E,CAAahB,KAC/FS,EAAsCC,EAAAC,GAAA,CAA5BC,KAAMF,EAAAO,GAAQ5F,KAAK,4CAM3BlB,EAAAgB,MAASW,OAASC,EAAAA,WAD1ByD,EAgBQ,QAAA,OAdNC,MAAKqB,EAAA,CAAC,wBAAuB,CAAA,cACJjF,EAAAA,cAEzB8D,EAMC,QAAA,CALCuB,KAAK,OACJtG,OAAQA,EAAAA,OACRuG,SAAUpF,EAAAA,MAAK,EACfF,SAAUA,EAAAA,SACVuF,SAAQ3F,cAEXkE,EAGM,MAHN0B,EAGM,CAFJZ,EAA2CC,EAAAC,GAAA,CAAjCC,KAAMF,EAAAY,GAAajG,KAAK,yBAClCsE,EAAwB,WAAlB4B,EAAAA,aAAW,yBAKXC,EAAAA,wBAAZhC,EAEM,MAFNiC,EAEMC,EADDzG,EAAAE,OAAU,IAGfwG,EAAA,kBACWnH,EAAAW,WAAXqE,EAUM,MAAA,OAVoBC,MAAM,mBAAoBa,UAAYpB,EAAW,CAAA,WACzES,EAA2D,MAAA,CAAtDF,MAAM,yBAA0Ba,QAAOpB,IAC5CS,EAAmE,OAAA,CAA7DF,MAAM,0BAA2Ba,QAAOpB,GAAa,KAC/C/E,EAAAgB,MAASW,OAAM,OAA3B0D,EAA2F,OAAA,OAA1DC,MAAM,yBAA0Ba,QAAOnB,GAAW,mBACvEhF,EAAAgB,MAASW,OAAM,OAA3B0D,EAA2F,OAAA,OAA1DC,MAAM,yBAA0Ba,QAAOlB,GAAW,mBAE3EjF,EAAAgB,MAASV,EAAAU,QAAcgC,SAD/BqC,EAIC,MAAA,OAFES,IAAK9F,EAAAgB,MAASV,EAAAU,OAAagC,IAC5BsC,MAAM"}
@@ -1,2 +0,0 @@
1
- import a from"../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs";var e=".qxs-image-upload[data-v-299e0c8a]{--upload-width:160px;--upload-height:90px}.qxs-image-upload__list[data-v-299e0c8a]{display:flex;flex-wrap:wrap;gap:8px}.qxs-image-upload__add[data-v-299e0c8a],.qxs-image-upload__item[data-v-299e0c8a]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;height:var(--upload-height);overflow:hidden;position:relative;width:var(--upload-width)}.qxs-image-upload__add[data-v-299e0c8a]:hover,.qxs-image-upload__item[data-v-299e0c8a]:hover{border-color:#409eff}.qxs-image-upload__add.is-disabled[data-v-299e0c8a]{cursor:not-allowed;opacity:.5}.qxs-image-upload__add input[data-v-299e0c8a]{display:none}.qxs-image-upload__add-content[data-v-299e0c8a]{align-items:center;color:#8c939d;display:flex;flex-direction:column;height:100%;justify-content:center}.qxs-image-upload__add-content p[data-v-299e0c8a]{font-size:14px;margin:8px 0 0}.qxs-image-upload__item img[data-v-299e0c8a]{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.qxs-image-upload__placeholder[data-v-299e0c8a]{align-items:center;background:#f5f7fa;color:#909399;display:flex;height:100%;justify-content:center}.qxs-image-upload__progress[data-v-299e0c8a]{background:rgba(0,0,0,.1);bottom:0;height:4px;left:0;position:absolute;right:0}.qxs-image-upload__progress-bar[data-v-299e0c8a]{background:#409eff;height:100%;transition:width .2s}.qxs-image-upload__actions[data-v-299e0c8a]{align-items:center;background:rgba(0,0,0,.5);display:flex;gap:16px;inset:0;justify-content:center;opacity:0;position:absolute;transition:opacity .2s}.qxs-image-upload__item:hover .qxs-image-upload__actions[data-v-299e0c8a]{opacity:1}.qxs-image-upload__action[data-v-299e0c8a]{color:#fff;cursor:pointer;padding:4px}.qxs-image-upload__action.is-disabled[data-v-299e0c8a]{cursor:not-allowed;opacity:.5}.qxs-image-upload__tip[data-v-299e0c8a]{color:#909399;font-size:12px;margin-top:8px}.qxs-image-viewer[data-v-299e0c8a]{align-items:center;display:flex;inset:0;justify-content:center;position:fixed;z-index:9999}.qxs-image-viewer__mask[data-v-299e0c8a]{background:rgba(0,0,0,.8);inset:0;position:absolute}.qxs-image-viewer__close[data-v-299e0c8a]{color:#fff;cursor:pointer;font-size:40px;position:absolute;right:40px;top:40px;z-index:1}.qxs-image-viewer__next[data-v-299e0c8a],.qxs-image-viewer__prev[data-v-299e0c8a]{color:#fff;cursor:pointer;font-size:60px;position:absolute;top:50%;transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.qxs-image-viewer__prev[data-v-299e0c8a]{left:40px}.qxs-image-viewer__next[data-v-299e0c8a]{right:40px}.qxs-image-viewer__img[data-v-299e0c8a]{max-height:80%;max-width:80%;z-index:1}";a(e);export{e as default};
2
- //# sourceMappingURL=image-upload.vue3.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-upload.vue3.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{version as n}from"../package.json.mjs";function o(o){return{version:n,install:n=>{for(const t in o){const s=o[t];s&&"object"==typeof s&&"install"in s&&n.use(s)}}}}export{o as makeInstaller};
2
- //# sourceMappingURL=make-installer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"make-installer.mjs","sources":["../../../../packages/components/src/make-installer.ts"],"sourcesContent":["import { version } from '../package.json'\n\nfunction makeInstaller(components: Record<string, any>) {\n const install = (app: any) => {\n for (const n in components) {\n const component = components[n]\n if (component && typeof component === 'object' && 'install' in component) {\n app.use(component)\n }\n }\n }\n\n return {\n version,\n install,\n }\n}\n\nexport { makeInstaller }\n"],"names":["makeInstaller","components","version","install","app","n","component","use"],"mappings":"8CAEA,SAASA,EAAcC,GAUrB,MAAO,CACLC,UACAC,QAXeC,IACf,IAAA,MAAWC,KAAKJ,EAAY,CAC1B,MAAMK,EAAYL,EAAWI,GACzBC,GAAkC,iBAAdA,GAA0B,YAAaA,GAC7DF,EAAIG,IAAID,EAEZ,GAOJ"}
@@ -1,2 +0,0 @@
1
- function n(n){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";const o=function(n){return"string"==typeof n?{message:n}:n}(n),s=function(n){switch(n){case"success":return{bgColor:"#ecfdf5",borderColor:"#a7f3d0",textColor:"#065f46"};case"warning":return{bgColor:"#fffbeb",borderColor:"#fde68a",textColor:"#92400e"};case"error":return{bgColor:"#fef2f2",borderColor:"#fecaca",textColor:"#991b1b"};default:return{bgColor:"#eff6ff",borderColor:"#bfdbfe",textColor:"#1e40af"}}}(e),a=document.getElementById("qxs-message-container")||function(){const n=document.createElement("div");return n.id="qxs-message-container",n.className="qxs-toast-container",document.body.appendChild(n),n}(),r=document.createElement("div");r.className=`qxs-toast qxs-toast--${e}`,r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),r.innerHTML=`\n <div class="qxs-toast__content">\n <span class="qxs-toast__text">${o.message}</span>\n <button class="qxs-toast__close" aria-label="Close">\n <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M3.5 3.5l7 7m0-7l-7 7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>\n </button>\n </div>\n `,r.style.cssText=`\n --toast-bg: ${s.bgColor};\n --toast-border: ${s.borderColor};\n --toast-text: ${s.textColor};\n `;r.querySelector(".qxs-toast__close").onclick=()=>t(r),a.appendChild(r),requestAnimationFrame(()=>{r.classList.add("qxs-toast--enter"),requestAnimationFrame(()=>{r.classList.remove("qxs-toast--enter")})});const i=o.duration??3e3,l=setTimeout(()=>{t(r)},i);return r.onmouseenter=()=>clearTimeout(l),r.onmouseleave=()=>{setTimeout(()=>t(r),1e3)},{close:()=>t(r)}}function t(n){n.classList.add("qxs-toast--leave"),setTimeout(()=>n.remove(),200)}const e=function(t){return n(t)};if(e.success=t=>n(t,"success"),e.warning=t=>n(t,"warning"),e.info=t=>n(t,"info"),e.error=t=>n(t,"error"),e.closeAll=()=>{document.querySelectorAll(".qxs-toast").forEach(n=>n.remove())},"undefined"!=typeof document&&!document.getElementById("qxs-toast-styles")){const n=document.createElement("style");n.id="qxs-toast-styles",n.textContent="\n .qxs-toast-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-width: 320px;\n width: auto;\n pointer-events: none;\n }\n\n .qxs-toast {\n position: relative;\n overflow: hidden;\n border-radius: 10px;\n border: 1px solid var(--toast-border);\n background: var(--toast-bg);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.02);\n pointer-events: all;\n animation: qxs-toast-in 0.3s cubic-bezier(0.21, 1.02, 0.73, 1);\n }\n\n .qxs-toast--enter {\n animation: qxs-toast-in 0.3s cubic-bezier(0.21, 1.02, 0.73, 1);\n }\n\n .qxs-toast--leave {\n animation: qxs-toast-out 0.2s cubic-bezier(0.21, 1.02, 0.73, 1) forwards;\n }\n\n .qxs-toast__content {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n gap: 8px;\n }\n\n .qxs-toast__text {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--toast-text);\n }\n\n .qxs-toast__close {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n margin: -4px -4px -4px 0;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: var(--toast-text);\n opacity: 0.5;\n transition: all 0.15s;\n }\n\n .qxs-toast__close:hover {\n opacity: 1;\n background: rgba(0, 0, 0, 0.05);\n }\n\n @keyframes qxs-toast-in {\n 0% {\n opacity: 0;\n transform: translateX(100%) scale(0.95);\n }\n 100% {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n }\n\n @keyframes qxs-toast-out {\n 0% {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n 100% {\n opacity: 0;\n transform: translateX(100%) scale(0.95);\n }\n }\n\n @media (max-width: 480px) {\n .qxs-toast-container {\n top: 10px;\n right: 10px;\n left: 10px;\n max-width: none;\n }\n }\n ",document.head.appendChild(n)}export{e as QxsMessage,e as default};
2
- //# sourceMappingURL=message.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.mjs","sources":["../../../../../../packages/components/src/message/src/message.ts"],"sourcesContent":["export interface QxsMessageOptions {\n message: string\n duration?: number\n}\n\nexport type QxsMessageParams = QxsMessageOptions | string\n\ninterface QxsMessageInstance {\n close: () => void\n}\n\nfunction normalizeParams(params: QxsMessageParams): QxsMessageOptions {\n return typeof params === 'string' ? { message: params } : params\n}\n\nfunction getTypeConfig(type: string) {\n switch (type) {\n case 'success':\n return {\n bgColor: '#ecfdf5',\n borderColor: '#a7f3d0',\n textColor: '#065f46',\n }\n case 'warning':\n return {\n bgColor: '#fffbeb',\n borderColor: '#fde68a',\n textColor: '#92400e',\n }\n case 'error':\n return {\n bgColor: '#fef2f2',\n borderColor: '#fecaca',\n textColor: '#991b1b',\n }\n case 'info':\n default:\n return {\n bgColor: '#eff6ff',\n borderColor: '#bfdbfe',\n textColor: '#1e40af',\n }\n }\n}\n\nfunction createMessage(params: QxsMessageParams, type: 'success' | 'warning' | 'info' | 'error' = 'info'): QxsMessageInstance {\n const options = normalizeParams(params)\n const config = getTypeConfig(type)\n\n const container = document.getElementById('qxs-message-container') || createContainer()\n\n const messageEl = document.createElement('div')\n messageEl.className = `qxs-toast qxs-toast--${type}`\n messageEl.setAttribute('role', 'status')\n messageEl.setAttribute('aria-live', 'polite')\n messageEl.innerHTML = `\n <div class=\"qxs-toast__content\">\n <span class=\"qxs-toast__text\">${options.message}</span>\n <button class=\"qxs-toast__close\" aria-label=\"Close\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3.5 3.5l7 7m0-7l-7 7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/></svg>\n </button>\n </div>\n `\n\n messageEl.style.cssText = `\n --toast-bg: ${config.bgColor};\n --toast-border: ${config.borderColor};\n --toast-text: ${config.textColor};\n `\n\n const closeBtn = messageEl.querySelector('.qxs-toast__close') as HTMLElement\n closeBtn.onclick = () => removeMessage(messageEl)\n\n container.appendChild(messageEl)\n\n requestAnimationFrame(() => {\n messageEl.classList.add('qxs-toast--enter')\n requestAnimationFrame(() => {\n messageEl.classList.remove('qxs-toast--enter')\n })\n })\n\n const duration = options.duration ?? 3000\n\n const timer = setTimeout(() => {\n removeMessage(messageEl)\n }, duration)\n\n messageEl.onmouseenter = () => clearTimeout(timer)\n messageEl.onmouseleave = () => {\n setTimeout(() => removeMessage(messageEl), 1000)\n }\n\n return {\n close: () => removeMessage(messageEl),\n }\n}\n\nfunction createContainer(): HTMLElement {\n const container = document.createElement('div')\n container.id = 'qxs-message-container'\n container.className = 'qxs-toast-container'\n document.body.appendChild(container)\n return container\n}\n\nfunction removeMessage(el: HTMLElement) {\n el.classList.add('qxs-toast--leave')\n setTimeout(() => el.remove(), 200)\n}\n\nexport interface QxsMessageFunction {\n (params: QxsMessageParams): QxsMessageInstance\n success: (params: QxsMessageParams) => QxsMessageInstance\n warning: (params: QxsMessageParams) => QxsMessageInstance\n info: (params: QxsMessageParams) => QxsMessageInstance\n error: (params: QxsMessageParams) => QxsMessageInstance\n closeAll: () => void\n}\n\nconst QxsMessage = function (params: QxsMessageParams): QxsMessageInstance {\n return createMessage(params)\n} as QxsMessageFunction\n\nQxsMessage.success = (params: QxsMessageParams) => createMessage(params, 'success')\nQxsMessage.warning = (params: QxsMessageParams) => createMessage(params, 'warning')\nQxsMessage.info = (params: QxsMessageParams) => createMessage(params, 'info')\nQxsMessage.error = (params: QxsMessageParams) => createMessage(params, 'error')\nQxsMessage.closeAll = () => {\n document.querySelectorAll('.qxs-toast').forEach(el => el.remove())\n}\n\nexport { QxsMessage }\nexport type { QxsMessageInstance }\nexport default QxsMessage\n\nif (typeof document !== 'undefined' && !document.getElementById('qxs-toast-styles')) {\n const style = document.createElement('style')\n style.id = 'qxs-toast-styles'\n style.textContent = `\n .qxs-toast-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-width: 320px;\n width: auto;\n pointer-events: none;\n }\n\n .qxs-toast {\n position: relative;\n overflow: hidden;\n border-radius: 10px;\n border: 1px solid var(--toast-border);\n background: var(--toast-bg);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.02);\n pointer-events: all;\n animation: qxs-toast-in 0.3s cubic-bezier(0.21, 1.02, 0.73, 1);\n }\n\n .qxs-toast--enter {\n animation: qxs-toast-in 0.3s cubic-bezier(0.21, 1.02, 0.73, 1);\n }\n\n .qxs-toast--leave {\n animation: qxs-toast-out 0.2s cubic-bezier(0.21, 1.02, 0.73, 1) forwards;\n }\n\n .qxs-toast__content {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n gap: 8px;\n }\n\n .qxs-toast__text {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--toast-text);\n }\n\n .qxs-toast__close {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n margin: -4px -4px -4px 0;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: var(--toast-text);\n opacity: 0.5;\n transition: all 0.15s;\n }\n\n .qxs-toast__close:hover {\n opacity: 1;\n background: rgba(0, 0, 0, 0.05);\n }\n\n @keyframes qxs-toast-in {\n 0% {\n opacity: 0;\n transform: translateX(100%) scale(0.95);\n }\n 100% {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n }\n\n @keyframes qxs-toast-out {\n 0% {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n 100% {\n opacity: 0;\n transform: translateX(100%) scale(0.95);\n }\n }\n\n @media (max-width: 480px) {\n .qxs-toast-container {\n top: 10px;\n right: 10px;\n left: 10px;\n max-width: none;\n }\n }\n `\n document.head.appendChild(style)\n}"],"names":["createMessage","params","type","arguments","length","undefined","options","message","normalizeParams","config","bgColor","borderColor","textColor","getTypeConfig","container","document","getElementById","createElement","id","className","body","appendChild","createContainer","messageEl","setAttribute","innerHTML","style","cssText","querySelector","onclick","removeMessage","requestAnimationFrame","classList","add","remove","duration","timer","setTimeout","onmouseenter","clearTimeout","onmouseleave","close","el","QxsMessage","success","warning","info","error","closeAll","querySelectorAll","forEach","textContent","head"],"mappings":"AA6CA,SAASA,EAAcC,GAAuG,IAA7EC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiD,OAChG,MAAMG,EAnCR,SAAyBL,GACvB,MAAyB,iBAAXA,EAAsB,CAAEM,QAASN,GAAWA,CAC5D,CAiCkBO,CAAgBP,GAC1BQ,EAhCR,SAAuBP,GACrB,OAAQA,GACN,IAAK,UACH,MAAO,CACLQ,QAAS,UACTC,YAAa,UACbC,UAAW,WAEf,IAAK,UACH,MAAO,CACLF,QAAS,UACTC,YAAa,UACbC,UAAW,WAEf,IAAK,QACH,MAAO,CACLF,QAAS,UACTC,YAAa,UACbC,UAAW,WAGf,QACE,MAAO,CACLF,QAAS,UACTC,YAAa,UACbC,UAAW,WAGnB,CAIiBC,CAAcX,GAEvBY,EAAYC,SAASC,eAAe,0BAiD5C,WACE,MAAMF,EAAYC,SAASE,cAAc,OAIzC,OAHAH,EAAUI,GAAK,wBACfJ,EAAUK,UAAY,sBACtBJ,SAASK,KAAKC,YAAYP,GACnBA,CACT,CAvDwEQ,GAEhEC,EAAYR,SAASE,cAAc,OACzCM,EAAUJ,UAAY,wBAAwBjB,IAC9CqB,EAAUC,aAAa,OAAQ,UAC/BD,EAAUC,aAAa,YAAa,UACpCD,EAAUE,UAAY,+EAEcnB,EAAQC,2RAO5CgB,EAAUG,MAAMC,QAAU,qBACVlB,EAAOC,iCACHD,EAAOE,mCACTF,EAAOG,iBAGRW,EAAUK,cAAc,qBAChCC,QAAU,IAAMC,EAAcP,GAEvCT,EAAUO,YAAYE,GAEtBQ,sBAAsB,KACpBR,EAAUS,UAAUC,IAAI,oBACxBF,sBAAsB,KACpBR,EAAUS,UAAUE,OAAO,wBAI/B,MAAMC,EAAW7B,EAAQ6B,UAAY,IAE/BC,EAAQC,WAAW,KACvBP,EAAcP,IACbY,GAOH,OALAZ,EAAUe,aAAe,IAAMC,aAAaH,GAC5Cb,EAAUiB,aAAe,KACvBH,WAAW,IAAMP,EAAcP,GAAY,MAGtC,CACLkB,MAAOA,IAAMX,EAAcP,GAE/B,CAUA,SAASO,EAAcY,GACrBA,EAAGV,UAAUC,IAAI,oBACjBI,WAAW,IAAMK,EAAGR,SAAU,IAChC,CAWA,MAAMS,EAAa,SAAU1C,GAC3B,OAAOD,EAAcC,EACvB,EAcA,GAZA0C,EAAWC,QAAW3C,GAA6BD,EAAcC,EAAQ,WACzE0C,EAAWE,QAAW5C,GAA6BD,EAAcC,EAAQ,WACzE0C,EAAWG,KAAQ7C,GAA6BD,EAAcC,EAAQ,QACtE0C,EAAWI,MAAS9C,GAA6BD,EAAcC,EAAQ,SACvE0C,EAAWK,SAAW,KACpBjC,SAASkC,iBAAiB,cAAcC,QAAQR,GAAMA,EAAGR,WAOnC,oBAAbnB,WAA6BA,SAASC,eAAe,oBAAqB,CACnF,MAAMU,EAAQX,SAASE,cAAc,SACrCS,EAAMR,GAAK,mBACXQ,EAAMyB,YAAc,ouEAsGpBpC,SAASqC,KAAK/B,YAAYK,EAC5B"}
@@ -1,2 +0,0 @@
1
- import{withInstall as o}from"../withInstall.mjs";import t from"./src/photo-crop-tool.vue.mjs";const r=o(t);export{r as QxsPhotoCropTool,r as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/photo-crop-tool/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/photo-crop-tool.vue'\n\nconst QxsPhotoCropTool = withInstall(component)\n\nexport {\n QxsPhotoCropTool,\n}\n\nexport default QxsPhotoCropTool\n"],"names":["QxsPhotoCropTool","withInstall","component"],"mappings":"8FAGA,MAAMA,EAAmBC,EAAYC"}
@@ -1,2 +0,0 @@
1
- import{ref as e}from"vue";function l(l){const a=e(null);l&&(a.value=l.getContext("2d"));return{clearCanvas:()=>{a.value&&a.value.clearRect(0,0,l.width,l.height)},drawColor:(e,l,t,n,o)=>{a.value&&(a.value.fillStyle=o,a.value.fillRect(e,l,t,n))},drawImage:(e,l,t,n,o)=>{a.value.drawImage(e,l,t,n,o)},cropCanvas:(e,t,n,o)=>new Promise(r=>{if(a.value){const a=document.createElement("canvas");a.width=n,a.height=o;const u=a.getContext("2d");u?(u.drawImage(l,e,t,n,o,0,0,n,o),a.toBlob(e=>{if(e){const l=new File([e],"cropped_image.png",{type:"image/png"});r(l)}else r(null)},"image/png")):r(null)}else r(null)})}}export{l as useCanvas};
2
- //# sourceMappingURL=composables.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"composables.mjs","sources":["../../../../../../packages/components/src/photo-crop-tool/src/composables.ts"],"sourcesContent":["import type { Ref } from 'vue'\n// useCanvas.ts\nimport { ref } from 'vue'\n\nexport function useCanvas(canvasElement: HTMLCanvasElement) {\n const context: Ref<CanvasRenderingContext2D | null> = ref(null)\n\n if (canvasElement) {\n context.value = canvasElement.getContext('2d')\n }\n\n const clearCanvas = () => {\n if (context.value) {\n context.value.clearRect(0, 0, canvasElement.width, canvasElement.height)\n }\n }\n\n const drawColor = (x: number, y: number, width: number, height: number, color: string) => {\n if (context.value) {\n context.value.fillStyle = color\n context.value.fillRect(x, y, width, height)\n }\n }\n\n const drawImage = (image: HTMLImageElement, x: number, y: number, width: number, height: number) => {\n context.value!.drawImage(image, x, y, width, height)\n }\n\n const cropCanvas = (x: number, y: number, width: number, height: number): Promise<File | null> => {\n return new Promise((resolve) => {\n if (context.value) {\n const croppedCanvas = document.createElement('canvas')\n croppedCanvas.width = width\n croppedCanvas.height = height\n const croppedContext = croppedCanvas.getContext('2d')\n if (croppedContext) {\n croppedContext.drawImage(canvasElement, x, y, width, height, 0, 0, width, height)\n croppedCanvas.toBlob((blob) => {\n if (blob) {\n const file = new File([blob], 'cropped_image.png', { type: 'image/png' })\n resolve(file)\n }\n else {\n resolve(null)\n }\n }, 'image/png')\n }\n else {\n resolve(null)\n }\n }\n else {\n resolve(null)\n }\n })\n }\n\n return {\n clearCanvas,\n drawColor,\n drawImage,\n cropCanvas,\n }\n}\n"],"names":["useCanvas","canvasElement","context","ref","value","getContext","clearCanvas","clearRect","width","height","drawColor","x","y","color","fillStyle","fillRect","drawImage","image","cropCanvas","Promise","resolve","croppedCanvas","document","createElement","croppedContext","toBlob","blob","file","File","type"],"mappings":"0BAIO,SAASA,EAAUC,GACxB,MAAMC,EAAgDC,EAAI,MAEtDF,IACFC,EAAQE,MAAQH,EAAcI,WAAW,OAiD3C,MAAO,CACLC,YA/CkBA,KACdJ,EAAQE,OACVF,EAAQE,MAAMG,UAAU,EAAG,EAAGN,EAAcO,MAAOP,EAAcQ,SA8CnEC,UA1CgBA,CAACC,EAAWC,EAAWJ,EAAeC,EAAgBI,KAClEX,EAAQE,QACVF,EAAQE,MAAMU,UAAYD,EAC1BX,EAAQE,MAAMW,SAASJ,EAAGC,EAAGJ,EAAOC,KAwCtCO,UApCgBA,CAACC,EAAyBN,EAAWC,EAAWJ,EAAeC,KAC/EP,EAAQE,MAAOY,UAAUC,EAAON,EAAGC,EAAGJ,EAAOC,IAoC7CS,WAjCiBA,CAACP,EAAWC,EAAWJ,EAAeC,IAChD,IAAIU,QAASC,IAClB,GAAIlB,EAAQE,MAAO,CACjB,MAAMiB,EAAgBC,SAASC,cAAc,UAC7CF,EAAcb,MAAQA,EACtBa,EAAcZ,OAASA,EACvB,MAAMe,EAAiBH,EAAchB,WAAW,MAC5CmB,GACFA,EAAeR,UAAUf,EAAeU,EAAGC,EAAGJ,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,GAC1EY,EAAcI,OAAQC,IACpB,GAAIA,EAAM,CACR,MAAMC,EAAO,IAAIC,KAAK,CAACF,GAAO,oBAAqB,CAAEG,KAAM,cAC3DT,EAAQO,EACV,MAEEP,EAAQ,OAET,cAGHA,EAAQ,KAEZ,MAEEA,EAAQ,QAWhB"}
@@ -1,2 +0,0 @@
1
- import{defineComponent as e,ref as t,computed as l,watch as o,onMounted as a,nextTick as u,onUnmounted as i,createElementBlock as n,openBlock as v,normalizeClass as s,unref as h,toDisplayString as c,Fragment as r,createElementVNode as p,withModifiers as d,normalizeStyle as f}from"vue";import{useNamespace as m}from"@qxs-bns/hooks";import{useElementSize as g,useDraggable as y}from"@vueuse/core";import{useCanvas as w}from"./composables.mjs";const x=["src"];var b=e({name:"QxsPhotoCropTool",__name:"photo-crop-tool",props:{imgFile:{type:Object,default:()=>null},aspectRatio:{type:String,default:()=>"16 / 9"},defaultWidth:{type:Number,default:()=>320},defaultHeight:{type:Number,default:()=>180},zoomType:{type:String,default:()=>"fixed"}},setup(e,{expose:b}){const T=e;let E=0,R=0,H=0,L=0;const z=m("photo-crop-tool"),F=t(null),N=t(null),W=t(null),k=t(""),M=t(""),X=t({x:0,y:0}),Y=t({width:T.defaultWidth,height:T.defaultHeight,x:0,y:0}),{width:$,height:C}=g(F),{width:_}=g(W),{x:j,y:U,style:B}=y(F,{containerElement:N,draggingElement:F,disabled:l(()=>!!M.value),exact:!0,initialValue:X}),O=l(()=>T.imgFile?URL.createObjectURL(T.imgFile):"");o(()=>T.imgFile,e=>{e&&!e.type.startsWith("image/")?k.value="文件类型错误":k.value=""});const S=l(()=>(W.value?.naturalWidth||0)/_.value),D=l(()=>{const e={left:0,top:0};return"bottom-right"===M.value?(e.left=Y.value.x,e.top=Y.value.y):"top-left"===M.value?(e.left=Y.value.x-$.value,e.top=Y.value.y-C.value):"top-right"===M.value?(e.top=Y.value.y-C.value,e.left=Y.value.x):"bottom-left"===M.value&&(e.left=Y.value.x-$.value,e.top=Y.value.y),e}),V=l(()=>{const{aspectRatio:e}=T,t={width:`${Y.value.width||T.defaultWidth}`,height:`${Y.value.height||T.defaultHeight}`,"aspect-ratio":e,top:`${D.value.top}px`,left:`${D.value.left}px`};return"free"===T.zoomType?delete t["aspect-ratio"]:"fixed"===T.zoomType&&delete t.height,z.cssVarBlock(t)});function q(e){return e*S.value}function I(e,t){const l=N.value?.clientWidth||1/0,o=N.value?.clientHeight||1/0;return{width:Math.min(Math.max(e,0),l),height:Math.min(Math.max(t,0),o)}}function P(e){return e instanceof MouseEvent?{clientX:e.clientX,clientY:e.clientY}:e instanceof TouchEvent&&e.touches.length>0?{clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}:{clientX:0,clientY:0}}function Q(e,t){const{clientX:l,clientY:o}=P(e);M.value=t,E=l,R=o,H=Y.value.width,L=Y.value.height,document.addEventListener("touchmove",A,{passive:!1}),document.addEventListener("touchend",G),"bottom-right"===t?(Y.value.x=j.value,Y.value.y=U.value):"top-left"===t?(Y.value.x=j.value+$.value,Y.value.y=U.value+C.value):"top-right"===t?(Y.value.x=j.value,Y.value.y=U.value+C.value):"bottom-left"===t&&(Y.value.x=j.value+$.value,Y.value.y=U.value),e instanceof TouchEvent&&e.preventDefault()}function A(e){e instanceof TouchEvent&&M.value&&e.preventDefault();const{clientX:t,clientY:l}=P(e),o=t-E,a=l-R;if("bottom-right"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H+o,L+a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H+o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}}else if("top-left"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H-o,L-a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H-o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}j.value=D.value.left,U.value=D.value.top}else if("top-right"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H+o,L-a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H+o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}j.value=D.value.left,U.value=D.value.top}else if("bottom-left"===M.value){if("free"===T.zoomType){const{width:e,height:t}=I(H-o,L+a);Y.value.width=e,Y.value.height=t}else if("fixed"===T.zoomType){const e=Number.parseFloat(T.aspectRatio.split(" / ")[0])/Number.parseFloat(T.aspectRatio.split(" / ")[1]);let t=H-o,l=t/e;const{width:a,height:u}=I(t,l);u>(N.value?.clientHeight||1/0)&&(l=N.value?.clientHeight||1/0,t=l*e),Y.value.width=a,Y.value.height=u}j.value=D.value.left,U.value=D.value.top}}function G(){document.removeEventListener("touchmove",A),document.removeEventListener("touchend",G),M.value=""}return a(()=>{u(()=>{X.value.x=(N.value?.offsetWidth||0)/2-Y.value.width/2,X.value.y=(N.value?.offsetHeight||0)/2-Y.value.height/2}),document.addEventListener("mouseup",G),document.addEventListener("mousemove",A,{passive:!1}),document.addEventListener("touchmove",A,{passive:!1}),document.addEventListener("touchend",G)}),i(()=>{O.value&&URL.revokeObjectURL(O.value),document.removeEventListener("mouseup",G),document.removeEventListener("mousemove",A)}),b({crop:async function(e=W.value){let t="transparent";N.value&&(t=window.getComputedStyle(N.value).backgroundColor);const l=document.createElement("canvas");l.width=q(N.value?.clientWidth||0),l.height=q(N.value?.clientHeight||0);const{drawImage:o,cropCanvas:a,drawColor:u}=w(l);return u(0,0,l.width,l.height,t),o(e,q(e.offsetLeft),q(e.offsetTop),e.naturalWidth,e.naturalHeight),await a(q(j.value),q(U.value),q($.value),q(C.value))},resize:function(){Y.value.width=T.defaultWidth,Y.value.height=T.defaultHeight,j.value=0,U.value=0}}),(e,t)=>(v(),n("div",{ref_key:"containerBoxRef",ref:N,class:s([h(z).e("img-box")])},[k.value?(v(),n("div",{key:0,class:s([h(z).e("error-message")])},c(k.value),3)):(v(),n(r,{key:1},[p("img",{ref_key:"imgRef",ref:W,class:s([h(z).e("image")]),src:O.value},null,10,x),p("div",{ref_key:"cropBoxRef",ref:F,class:s([h(z).e("crop-tool-box")]),style:f([V.value,M.value?`left: ${D.value.left}px;top: ${D.value.top}px`:h(B)]),onTouchstart:t[8]||(t[8]=d(()=>{},["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},[p("div",{class:s([h(z).e("top-left")]),onMousedown:t[0]||(t[0]=d(e=>Q(e,"top-left"),["stop","prevent"])),onTouchstart:t[1]||(t[1]=d(e=>Q(e,"top-left"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34),p("div",{class:s([h(z).e("top-right")]),onMousedown:t[2]||(t[2]=d(e=>Q(e,"top-right"),["stop","prevent"])),onTouchstart:t[3]||(t[3]=d(e=>Q(e,"top-right"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34),p("div",{class:s([h(z).e("bottom-right")]),onMousedown:t[4]||(t[4]=d(e=>Q(e,"bottom-right"),["stop","prevent"])),onTouchstart:t[5]||(t[5]=d(e=>Q(e,"bottom-right"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34),p("div",{class:s([h(z).e("bottom-left")]),onMousedown:t[6]||(t[6]=d(e=>Q(e,"bottom-left"),["stop","prevent"])),onTouchstart:t[7]||(t[7]=d(e=>Q(e,"bottom-left"),["stop","prevent"])),onTouchend:d(G,["stop","prevent"])},null,34)],38)],64))],2))}});export{b as default};
2
- //# sourceMappingURL=photo-crop-tool.vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"photo-crop-tool.vue.mjs","sources":["../../../../../../packages/components/src/photo-crop-tool/src/photo-crop-tool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { useDraggable, useElementSize } from '@vueuse/core'\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useCanvas } from './composables'\n\ndefineOptions({\n name: 'QxsPhotoCropTool',\n})\n\nconst props = defineProps({\n imgFile: {\n type: Object as PropType<File>,\n default: () => null,\n },\n aspectRatio: {\n type: String,\n default: () => '16 / 9',\n },\n defaultWidth: {\n type: Number,\n default: () => 320,\n },\n defaultHeight: {\n type: Number,\n default: () => 180,\n },\n /**\n * free 自由缩放\n * fixed 固定比例缩放\n */\n zoomType: {\n type: String,\n default: () => 'fixed',\n },\n})\nlet startX = 0\nlet startY = 0\nlet startWidth = 0\nlet startHeight = 0\n\nconst ns = useNamespace('photo-crop-tool')\n\nconst cropBoxRef = ref<HTMLElement | null>(null)\nconst containerBoxRef = ref<HTMLElement | null>(null)\nconst imgRef = ref<HTMLImageElement | null>(null)\nconst errorMessage = ref('')\nconst dargPoint = ref('')\nconst initialValue = ref({\n x: 0,\n y: 0,\n})\nconst cropInfo = ref({\n width: props.defaultWidth,\n height: props.defaultHeight,\n x: 0,\n y: 0,\n})\n\nconst { width, height } = useElementSize(cropBoxRef)\nconst { width: imgWidth } = useElementSize(imgRef)\n\nconst { x, y, style } = useDraggable(cropBoxRef, {\n containerElement: containerBoxRef,\n draggingElement: cropBoxRef,\n disabled: computed(() => !!dargPoint.value),\n exact: true,\n initialValue,\n})\n\nconst imageUrl = computed(() => {\n if (!props.imgFile) {\n return ''\n }\n return URL.createObjectURL(props.imgFile)\n})\n\nwatch(\n () => props.imgFile,\n (newFile: File | null) => {\n if (newFile && !newFile.type.startsWith('image/')) {\n errorMessage.value = '文件类型错误'\n }\n else {\n errorMessage.value = ''\n }\n },\n)\n\nconst ratio = computed(() => {\n return (imgRef.value?.naturalWidth || 0) / imgWidth.value\n})\n\nconst customStyle = computed(() => {\n const position = {\n left: 0,\n top: 0,\n }\n if (dargPoint.value === 'bottom-right') {\n position.left = cropInfo.value.x\n position.top = cropInfo.value.y\n }\n else if (dargPoint.value === 'top-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y - height.value\n }\n else if (dargPoint.value === 'top-right') {\n position.top = cropInfo.value.y - height.value\n position.left = cropInfo.value.x\n }\n else if (dargPoint.value === 'bottom-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y\n }\n return position\n})\n\nconst sizeStyle = computed(() => {\n const { aspectRatio } = props\n\n const style: {\n 'height'?: string\n 'width': string\n 'aspect-ratio'?: string\n 'top': string\n 'left': string\n } = {\n 'width': `${cropInfo.value.width || props.defaultWidth}`,\n 'height': `${cropInfo.value.height || props.defaultHeight}`,\n 'aspect-ratio': aspectRatio,\n 'top': `${customStyle.value.top}px`,\n 'left': `${customStyle.value.left}px`,\n }\n if (props.zoomType === 'free') {\n delete style['aspect-ratio']\n }\n else if (props.zoomType === 'fixed') {\n delete style.height\n }\n return ns.cssVarBlock(style)\n})\n\nfunction zoom(pixel: number) {\n return pixel * ratio.value\n}\nasync function crop(img: HTMLImageElement = imgRef.value!) {\n let backgroundColor = 'transparent'\n if (containerBoxRef.value) {\n backgroundColor = window.getComputedStyle(\n containerBoxRef.value,\n ).backgroundColor\n }\n const canvas = document.createElement('canvas')\n canvas.width = zoom(containerBoxRef.value?.clientWidth || 0)\n canvas.height = zoom(containerBoxRef.value?.clientHeight || 0)\n const { drawImage, cropCanvas, drawColor } = useCanvas(canvas)\n drawColor(0, 0, canvas.width, canvas.height, backgroundColor)\n drawImage(\n img,\n zoom(img.offsetLeft),\n zoom(img.offsetTop),\n img.naturalWidth,\n img.naturalHeight,\n )\n return await cropCanvas(\n zoom(x.value),\n zoom(y.value),\n zoom(width.value),\n zoom(height.value),\n )\n}\n\nfunction checkBoundaries(\n newWidth: number,\n newHeight: number,\n): { width: number, height: number } {\n const maxWidth = containerBoxRef.value?.clientWidth || Infinity\n const maxHeight = containerBoxRef.value?.clientHeight || Infinity\n\n return {\n width: Math.min(Math.max(newWidth, 0), maxWidth),\n height: Math.min(Math.max(newHeight, 0), maxHeight),\n }\n}\n\nfunction getClientPos(e: MouseEvent | TouchEvent): { clientX: number, clientY: number } {\n if (e instanceof MouseEvent) {\n return { clientX: e.clientX, clientY: e.clientY }\n }\n else if (e instanceof TouchEvent && e.touches.length > 0) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n return { clientX: 0, clientY: 0 }\n}\n\nfunction handleStart(e: MouseEvent | TouchEvent, point: string) {\n const { clientX, clientY } = getClientPos(e)\n dargPoint.value = point\n startX = clientX\n startY = clientY\n startWidth = cropInfo.value.width\n startHeight = cropInfo.value.height\n\n // 添加移动端事件监听\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n\n if (point === 'bottom-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value\n }\n else if (point === 'top-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'top-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'bottom-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value\n }\n\n // Prevent touch scrolling\n if (e instanceof TouchEvent) {\n e.preventDefault()\n }\n}\n\nfunction handleMove(e: MouseEvent | TouchEvent) {\n // Only prevent default if we're in a drag operation\n if (e instanceof TouchEvent && dargPoint.value) {\n e.preventDefault()\n }\n\n const { clientX, clientY } = getClientPos(e)\n const deltaX = clientX - startX\n const deltaY = clientY - startY\n\n if (dargPoint.value === 'bottom-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n }\n else if (dargPoint.value === 'top-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'top-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'bottom-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n}\n\nfunction handleEnd() {\n // 移除移动端事件监听\n document.removeEventListener('touchmove', handleMove)\n document.removeEventListener('touchend', handleEnd)\n\n dargPoint.value = ''\n}\n\nfunction resize() {\n cropInfo.value.width = props.defaultWidth\n cropInfo.value.height = props.defaultHeight\n x.value = 0\n y.value = 0\n}\n\nonMounted(() => {\n nextTick(() => {\n // 初始化位置\n initialValue.value.x\n = (containerBoxRef.value?.offsetWidth || 0) / 2 - cropInfo.value.width / 2\n initialValue.value.y\n = (containerBoxRef.value?.offsetHeight || 0) / 2\n - cropInfo.value.height / 2\n })\n\n // 只添加鼠标事件监听\n document.addEventListener('mouseup', handleEnd)\n document.addEventListener('mousemove', handleMove, { passive: false })\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n})\n\nonUnmounted(() => {\n if (imageUrl.value) {\n URL.revokeObjectURL(imageUrl.value)\n }\n // 确保移除所有事件监听\n document.removeEventListener('mouseup', handleEnd)\n document.removeEventListener('mousemove', handleMove)\n})\n\ndefineExpose({\n crop,\n resize,\n})\n</script>\n\n<template>\n <div\n ref=\"containerBoxRef\"\n :class=\"[ns.e('img-box')]\"\n >\n <div\n v-if=\"errorMessage\"\n :class=\"[ns.e('error-message')]\"\n >\n {{ errorMessage }}\n </div>\n <template v-else>\n <img\n ref=\"imgRef\"\n :class=\"[ns.e('image')]\"\n :src=\"imageUrl\"\n >\n <div\n ref=\"cropBoxRef\"\n :class=\"[ns.e('crop-tool-box')]\"\n :style=\"[\n sizeStyle,\n dargPoint\n ? `left: ${customStyle.left}px;top: ${customStyle.top}px`\n : style,\n ]\"\n @touchstart.stop.prevent\n @touchend.stop.prevent=\"handleEnd\"\n >\n <div\n :class=\"[ns.e('top-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('top-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n </div>\n </template>\n </div>\n</template>\n"],"names":["props","__props","startX","startY","startWidth","startHeight","ns","useNamespace","cropBoxRef","ref","containerBoxRef","imgRef","errorMessage","dargPoint","initialValue","x","y","cropInfo","width","defaultWidth","height","defaultHeight","useElementSize","imgWidth","style","useDraggable","containerElement","draggingElement","disabled","computed","value","exact","imageUrl","imgFile","URL","createObjectURL","watch","newFile","type","startsWith","ratio","naturalWidth","customStyle","position","left","top","sizeStyle","aspectRatio","zoomType","cssVarBlock","zoom","pixel","checkBoundaries","newWidth","newHeight","maxWidth","clientWidth","Infinity","maxHeight","clientHeight","Math","min","max","getClientPos","e","MouseEvent","clientX","clientY","TouchEvent","touches","length","handleStart","point","document","addEventListener","handleMove","passive","handleEnd","preventDefault","deltaX","deltaY","Number","parseFloat","split","removeEventListener","onMounted","nextTick","offsetWidth","offsetHeight","onUnmounted","revokeObjectURL","__expose","crop","async","img","backgroundColor","window","getComputedStyle","canvas","createElement","drawImage","cropCanvas","drawColor","useCanvas","offsetLeft","offsetTop","naturalHeight","resize","_createElementBlock","class","_normalizeClass","_unref","_Fragment","key","_createElementVNode","src","_normalizeStyle","onTouchstart","onTouchend","onMousedown","_cache","_withModifiers","$event"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import o from"./photo-crop-tool.vue.mjs";export{o as default};
2
- //# sourceMappingURL=photo-crop-tool.vue2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"photo-crop-tool.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{withInstall as t}from"../withInstall.mjs";import o from"./src/subject-action.vue.mjs";const s=t(o);export{s as QxsSubjectAction,s as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/subject-action/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/subject-action.vue'\n\nconst QxsSubjectAction = withInstall(component)\n\nexport {\n QxsSubjectAction,\n}\n\nexport default QxsSubjectAction\n"],"names":["QxsSubjectAction","withInstall","component"],"mappings":"6FAGA,MAAMA,EAAmBC,EAAYC"}
@@ -1,2 +0,0 @@
1
- import{defineComponent as e,ref as l,computed as t,resolveComponent as i,createElementBlock as a,openBlock as o,normalizeClass as n,unref as s,createElementVNode as u,createCommentVNode as m,createVNode as d,createBlock as r,withModifiers as p,withCtx as c,createTextVNode as v,Fragment as f,renderList as y,toDisplayString as b}from"vue";import x from"@qxs-bns/icons/src/components/Check.vue";import _ from"@qxs-bns/icons/src/components/Delete.vue";import k from"@qxs-bns/icons/src/components/Edit.vue";import{useNamespace as h}from"@qxs-bns/hooks";import{QxsButton as j}from"../../ui/button/index.mjs";import"../../ui/input/index.mjs";import{QxsRadioGroup as w,QxsRadio as g}from"../../ui/radio/index.mjs";import{QxsCheckbox as V}from"../../ui/checkbox/index.mjs";import{QxsLink as C}from"../../ui/link/index.mjs";import"../../ui/tag/index.mjs";import"../../ui/input-number/index.mjs";import"../../ui/select/index.mjs";import"../../ui/popover/index.mjs";import"../../ui/layout/index.mjs";import"../../ui/scrollbar/index.mjs";import{QxsDialogComponent as O}from"../../ui/dialog/index.mjs";import"../../ui/table/index.mjs";import"../../icon/index.mjs";import"../../message/src/message.mjs";const E={key:0,class:"flex-justify-between"},S={class:"flex-justify-between"},T={key:0,class:"has-set"},B={key:1,class:"flex flex-justify-end action-buttons"};var U=e({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit:Boolean,isSet:{type:Boolean,default:!1},isKey:{type:Boolean,default:!1},answerCheckType:{type:Number,default:1},showOtherOption:{type:Boolean,default:!0},examAnswerRelationType:{type:Number,default:null},showRichText:{type:Boolean,default:!0},pageEnd:{type:Boolean,default:!1}},emits:["moveUp","moveDown","delete","save","edit","add","onShowRichText","setKey","setAnswerSetting"],setup(e,{emit:U}){const R=e,q=U,A=l(R.isKey),K=l(!1),z=l(R.answerCheckType),D=h("subject-action"),N=l(!0),Q=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],I=t(()=>Q.find(e=>e.value===z.value)?.label);function F(){K.value=!1,q("setAnswerSetting",z.value)}function G(){q("setKey",A.value)}return(l,t)=>{const h=i("QxsIcon");return o(),a("div",{class:n(s(D).e("action-exam"))},[u("div",{class:n(["action flex flex-justify-between",{active:e.isEdit}])},[m(" 编辑模式 "),e.isEdit?(o(),a("div",E,[e.showRichText?(o(),r(s(C),{key:0,type:"primary",class:"btn-margin",onClick:t[0]||(t[0]=p(e=>q("onShowRichText"),["prevent"]))},{default:c(()=>t[12]||(t[12]=[v(" +添加题目描述(图文) ",-1)])),_:1,__:[12]})):m("v-if",!0),e.showOtherOption?(o(),r(s(C),{key:1,type:"primary",class:"btn-margin",onClick:t[1]||(t[1]=p(e=>K.value=!0,["prevent"]))},{default:c(()=>t[13]||(t[13]=[v(" 答题设置 ",-1)])),_:1,__:[13]})):m("v-if",!0),e.showOtherOption?(o(),r(s(V),{key:2,modelValue:A.value,"onUpdate:modelValue":t[2]||(t[2]=e=>A.value=e),label:"核心题",onChange:G},null,8,["modelValue"])):m("v-if",!0)])):(o(),a(f,{key:1},[m(" 非编辑模式 "),u("div",S,[e.showOtherOption?(o(),r(s(V),{key:0,modelValue:A.value,"onUpdate:modelValue":t[3]||(t[3]=e=>A.value=e),label:"核心题",disabled:""},null,8,["modelValue"])):m("v-if",!0),e.showOtherOption?(o(),r(s(V),{key:1,modelValue:N.value,"onUpdate:modelValue":t[4]||(t[4]=e=>N.value=e),label:I.value,disabled:"",class:"btn-margin"},null,8,["modelValue","label"])):m("v-if",!0)])],2112)),m(" 操作按钮 "),u("div",null,[e.isSet?(o(),a("div",T," *此题设置了跳题逻辑 ")):(o(),a("div",B,[e.isEdit?(o(),a(f,{key:1},[d(s(j),{class:"btn-margin",type:"danger",plain:"",onClick:t[7]||(t[7]=e=>q("delete"))},{icon:c(()=>[d(h,{icon:_})]),default:c(()=>[t[16]||(t[16]=v(" 删除 ",-1))]),_:1,__:[16]}),d(s(j),{type:"primary",onClick:t[8]||(t[8]=e=>q("save"))},{icon:c(()=>[d(h,{icon:x})]),default:c(()=>[t[17]||(t[17]=v(" 完成编辑 ",-1))]),_:1,__:[17]})],64)):(o(),a(f,{key:0},[e.pageEnd?m("v-if",!0):(o(),r(s(j),{key:0,class:"btn-margin",onClick:t[5]||(t[5]=e=>q("edit"))},{icon:c(()=>[d(h,{icon:k})]),default:c(()=>[t[14]||(t[14]=v(" 编辑 ",-1))]),_:1,__:[14]})),d(s(j),{type:"danger",plain:"",onClick:t[6]||(t[6]=e=>q("delete"))},{icon:c(()=>[d(h,{icon:_})]),default:c(()=>[t[15]||(t[15]=v(" 删除 ",-1))]),_:1,__:[15]})],64))]))]),m(" 答题设置弹窗 "),d(s(O),{modelValue:K.value,"onUpdate:modelValue":t[11]||(t[11]=e=>K.value=e),title:"答题设置",class:"customize-dialog",width:"400px"},{footer:c(()=>[d(s(j),{class:"customize-button",type:"primary",plain:"",onClick:t[10]||(t[10]=e=>K.value=!1)},{default:c(()=>t[18]||(t[18]=[v(" 取消 ",-1)])),_:1,__:[18]}),d(s(j),{class:"customize-button",type:"primary",plain:"",onClick:F},{default:c(()=>t[19]||(t[19]=[v(" 保存 ",-1)])),_:1,__:[19]})]),default:c(()=>[d(s(w),{modelValue:z.value,"onUpdate:modelValue":t[9]||(t[9]=e=>z.value=e),class:"vertical-radio-group"},{default:c(()=>[(o(),a(f,null,y(Q,e=>d(s(g),{key:e.value,label:e.value},{default:c(()=>[v(b(e.label),1)]),_:2},1032,["label"])),64))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])],2)],2)}}});export{U as default};
2
- //# sourceMappingURL=subject-action.vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subject-action.vue.mjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Check from '@qxs-bns/icons/src/components/Check.vue'\nimport Delete from '@qxs-bns/icons/src/components/Delete.vue'\nimport Edit from '@qxs-bns/icons/src/components/Edit.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { QxsButton, QxsCheckbox,\n QxsDialogComponent,\n QxsLink,\n QxsRadio,\n QxsRadioGroup } from '../../ui'\nimport { computed, ref } from 'vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\n\nconst props = defineProps({\n isEdit: Boolean,\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1,\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null,\n },\n showRichText: {\n type: Boolean,\n default: true,\n },\n pageEnd: {\n type: Boolean,\n default: false,\n },\n})\n\nconst emits = defineEmits([\n 'moveUp',\n 'moveDown',\n 'delete',\n 'save',\n 'edit',\n 'add',\n 'onShowRichText',\n 'setKey',\n 'setAnswerSetting',\n])\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\nconst checked = ref(true)\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步',\n },\n {\n value: 1,\n label: '无需判断是否是支持选项',\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步',\n },\n]\n\nconst answerText = computed(() => {\n return answerTextList.find(item => item.value === answerType.value)?.label\n})\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType.value)\n}\n\nfunction setKey() {\n emits('setKey', isKey.value)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div\n class=\"action flex flex-justify-between\"\n :class=\"{ active: isEdit }\"\n >\n <!-- 编辑模式 -->\n <div\n v-if=\"isEdit\"\n class=\"flex-justify-between\"\n >\n <QxsLink\n v-if=\"showRichText\"\n type=\"primary\"\n class=\"btn-margin\"\n @click.prevent=\"emits('onShowRichText')\"\n >\n +添加题目描述(图文)\n </QxsLink>\n <QxsLink\n v-if=\"showOtherOption\"\n type=\"primary\"\n class=\"btn-margin\"\n @click.prevent=\"showAnswerSetting = true\"\n >\n 答题设置\n </QxsLink>\n <QxsCheckbox\n v-if=\"showOtherOption\"\n v-model=\"isKey\"\n label=\"核心题\"\n @change=\"setKey\"\n />\n </div>\n\n <!-- 非编辑模式 -->\n <div\n v-else\n class=\"flex-justify-between\"\n >\n <QxsCheckbox\n v-if=\"showOtherOption\"\n v-model=\"isKey\"\n label=\"核心题\"\n disabled\n />\n <QxsCheckbox\n v-if=\"showOtherOption\"\n v-model=\"checked\"\n :label=\"answerText\"\n disabled\n class=\"btn-margin\"\n />\n </div>\n\n <!-- 操作按钮 -->\n <div>\n <div\n v-if=\"isSet\"\n class=\"has-set\"\n >\n *此题设置了跳题逻辑\n </div>\n <div\n v-else\n class=\"flex flex-justify-end action-buttons\"\n >\n <template v-if=\"!isEdit\">\n <QxsButton\n v-if=\"!pageEnd\"\n class=\"btn-margin\"\n @click=\"emits('edit')\"\n >\n <template #icon>\n <QxsIcon :icon=\"Edit\" />\n </template>\n 编辑\n </QxsButton>\n <QxsButton\n type=\"danger\"\n plain\n @click=\"emits('delete')\"\n >\n <template #icon>\n <QxsIcon :icon=\"Delete\" />\n </template>\n 删除\n </QxsButton>\n </template>\n <template v-else>\n <QxsButton\n class=\"btn-margin\"\n type=\"danger\"\n plain\n @click=\"emits('delete')\"\n >\n <template #icon>\n <QxsIcon :icon=\"Delete\" />\n </template>\n 删除\n </QxsButton>\n <QxsButton\n type=\"primary\"\n @click=\"emits('save')\"\n >\n <template #icon>\n <QxsIcon :icon=\"Check\" />\n </template>\n 完成编辑\n </QxsButton>\n </template>\n </div>\n </div>\n\n <!-- 答题设置弹窗 -->\n <QxsDialogComponent\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n width=\"400px\"\n >\n <QxsRadioGroup\n v-model=\"answerType\"\n class=\"vertical-radio-group\"\n >\n <QxsRadio\n v-for=\"item in answerTextList\"\n :key=\"item.value\"\n :label=\"item.value\"\n >\n {{ item.label }}\n </QxsRadio>\n </QxsRadioGroup>\n <template #footer>\n <QxsButton\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"showAnswerSetting = false\"\n >\n 取消\n </QxsButton>\n <QxsButton\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveSetting\"\n >\n 保存\n </QxsButton>\n </template>\n </QxsDialogComponent>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","isKey","ref","showAnswerSetting","answerType","answerCheckType","ns","useNamespace","checked","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","setKey","_createElementBlock","class","_normalizeClass","_unref","e","_createElementVNode","active","isEdit","_createCommentVNode","_openBlock","_hoisted_1","showRichText","_createBlock","QxsLink","type","onClick","_cache","showOtherOption","QxsCheckbox","$event","onChange","_Fragment","key","_hoisted_2","disabled","isSet","_hoisted_3","_hoisted_4","_createVNode","QxsButton","plain","icon","_component_QxsIcon","Delete","Check","pageEnd","Edit","QxsDialogComponent","title","width","footer","QxsRadioGroup","_renderList","QxsRadio","_createTextVNode","_toDisplayString"],"mappings":"0xDAgBA,MAAMA,EAAQC,EAgCRC,EAAQC,EAWRC,EAAQC,EAAIL,EAAMI,OAClBE,EAAoBD,GAAI,GACxBE,EAAaF,EAAIL,EAAMQ,iBACvBC,EAAKC,EAAa,kBAClBC,EAAUN,GAAI,GACdO,EAAiB,CACrB,CACEC,MAAO,EACPC,MAAO,oBAET,CACED,MAAO,EACPC,MAAO,eAET,CACED,MAAO,EACPC,MAAO,mBAILC,EAAaC,EAAS,IACnBJ,EAAeK,KAAKC,GAAQA,EAAKL,QAAUN,EAAWM,QAAQC,OAGvE,SAASK,IACPb,EAAkBO,OAAQ,EAC1BX,EAAM,mBAAoBK,EAAWM,MACvC,CAEA,SAASO,IACPlB,EAAM,SAAUE,EAAMS,MACxB,+CAIEQ,EAwJM,MAAA,CAxJAC,MAAKC,EAAEC,EAAAf,GAAGgB,EAAC,kBACfC,EAsJM,MAAA,CArJJJ,MAAKC,EAAA,CAAC,mCAAkC,CAAAI,OACtB1B,EAAA2B,YAElBC,EAAA,UAEQ5B,EAAA2B,QADRE,IAAAT,EA0BM,MA1BNU,EA0BM,CArBI9B,EAAA+B,kBADRC,EAOUT,EAAAU,GAAA,OALRC,KAAK,UACLb,MAAM,aACLc,yBAAelC,EAAK,kBAAA,CAAA,yBACtB,IAEDmC,EAAA,MAAAA,EAAA,IAAA,GAFC,iBAED,kCAEQpC,EAAAqC,qBADRL,EAOUT,EAAAU,GAAA,OALRC,KAAK,UACLb,MAAM,aACLc,yBAAe9B,EAAAO,OAAiB,EAAA,CAAA,yBAClC,IAEDwB,EAAA,MAAAA,EAAA,IAAA,GAFC,UAED,kCAEQpC,EAAAqC,qBADRL,EAKET,EAAAe,GAAA,kBAHSnC,EAAAS,2CAAAT,EAAKS,MAAA2B,GACd1B,MAAM,MACL2B,SAAQrB,gDAKbC,EAiBMqB,EAAA,CAAAC,IAAA,GAAA,CAlBNd,EAAA,WACAH,EAiBM,MAjBNkB,EAiBM,CAZI3C,EAAAqC,qBADRL,EAKET,EAAAe,GAAA,kBAHSnC,EAAAS,2CAAAT,EAAKS,MAAA2B,GACd1B,MAAM,MACN+B,SAAA,yCAGM5C,EAAAqC,qBADRL,EAMET,EAAAe,GAAA,kBAJS5B,EAAAE,2CAAAF,EAAOE,MAAA2B,GACf1B,MAAOC,EAAAF,MACRgC,SAAA,GACAvB,MAAM,qEAIVO,EAAA,UACAH,EAwDM,MAAA,KAAA,CAtDIzB,EAAA6C,WADRzB,EAKM,MALN0B,EAGC,kBAGDjB,IAAAT,EAgDM,MAhDN2B,EAgDM,CA5Ca/C,EAAA2B,YAsBjBP,EAqBWqB,EAAA,CAAAC,IAAA,GAAA,CApBTM,EAUYzB,EAAA0B,GAAA,CATV5B,MAAM,aACNa,KAAK,SACLgB,MAAA,GACCf,uBAAOlC,EAAK,aAEFkD,OACT,IAA0B,CAA1BH,EAA0BI,EAAA,CAAhBD,KAAME,gBACP,IAEb,iBAFa,QAEb,oBACAL,EAQYzB,EAAA0B,GAAA,CAPVf,KAAK,UACJC,uBAAOlC,EAAK,WAEFkD,OACT,IAAyB,CAAzBH,EAAyBI,EAAA,CAAfD,KAAMG,gBACP,IAEb,iBAFa,UAEb,+BA1CFlC,EAqBWqB,EAAA,CAAAC,IAAA,GAAA,CAnBA1C,EAAAuD,0BADTvB,EASYT,EAAA0B,GAAA,OAPV5B,MAAM,aACLc,uBAAOlC,EAAK,WAEFkD,OACT,IAAwB,CAAxBH,EAAwBI,EAAA,CAAdD,KAAMK,gBACP,IAEb,iBAFa,QAEb,qBACAR,EASYzB,EAAA0B,GAAA,CARVf,KAAK,SACLgB,MAAA,GACCf,uBAAOlC,EAAK,aAEFkD,OACT,IAA0B,CAA1BH,EAA0BI,EAAA,CAAhBD,KAAME,gBACP,IAEb,iBAFa,QAEb,+BA2BNzB,EAAA,YACAoB,EAoCqBzB,EAAAkC,GAAA,YAnCVpD,EAAAO,6CAAAP,EAAiBO,MAAA2B,GAC1BmB,MAAM,OACNrC,MAAM,mBACNsC,MAAM,UAcKC,SACT,IAOY,CAPZZ,EAOYzB,EAAA0B,GAAA,CANV5B,MAAM,mBACNa,KAAK,UACLgB,MAAA,GACCf,yBAAO9B,EAAAO,OAAiB,eAC1B,IAEDwB,EAAA,MAAAA,EAAA,IAAA,GAFC,QAED,oBACAY,EAOYzB,EAAA0B,GAAA,CANV5B,MAAM,mBACNa,KAAK,UACLgB,MAAA,GACCf,QAAOjB,cACT,IAEDkB,EAAA,MAAAA,EAAA,IAAA,GAFC,QAED,gCA5BF,IAWgB,CAXhBY,EAWgBzB,EAAAsC,GAAA,YAVLvD,EAAAM,2CAAAN,EAAUM,MAAA2B,GACnBlB,MAAM,mCAGJ,IAA8B,MADhCD,EAMWqB,EAAA,KAAAqB,EALMnD,EAARM,GADT+B,EAMWzB,EAAAwC,GAAA,CAJRrB,IAAKzB,EAAKL,MACVC,MAAOI,EAAKL,kBAEb,IAAgB,CAAboD,EAAAC,EAAAhD,EAAKJ,OAAK"}
@@ -1,2 +0,0 @@
1
- import t from"./subject-action.vue.mjs";export{t as default};
2
- //# sourceMappingURL=subject-action.vue2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subject-action.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{withInstall as t}from"../withInstall.mjs";import o from"./src/subject-layout.vue.mjs";const s=t(o);export{s as QxsSubjectLayout,s as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/subject-layout/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/subject-layout.vue'\n\nconst QxsSubjectLayout = withInstall(component)\n\nexport {\n QxsSubjectLayout,\n}\n\nexport default QxsSubjectLayout\n"],"names":["QxsSubjectLayout","withInstall","component"],"mappings":"6FAGA,MAAMA,EAAmBC,EAAYC"}
@@ -1,2 +0,0 @@
1
- import{defineComponent as t,createElementBlock as e,openBlock as s,normalizeClass as o,unref as a,createCommentVNode as u,renderSlot as r,Fragment as l}from"vue";import{useNamespace as i}from"@qxs-bns/hooks";const d={key:0,class:"edit"};var p=t({name:"QxsSubjectLayout",__name:"subject-layout",props:{showEdit:{type:Boolean,required:!0}},setup(t){const p=i("subject-layout");return(t,i)=>(s(),e("div",{class:o(a(p).e("layout-exam"))},[u(" 编辑模式:只显示编辑区域 "),t.showEdit?(s(),e("div",d,[r(t.$slots,"edit")])):(s(),e(l,{key:1},[u(" 预览模式:只显示预览区域 "),r(t.$slots,"preview")],64)),r(t.$slots,"default")],2))}});export{p as default};
2
- //# sourceMappingURL=subject-layout.vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subject-layout.vue.mjs","sources":["../../../../../../packages/components/src/subject-layout/src/subject-layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\n\ndefineOptions({\n name: 'QxsSubjectLayout',\n})\ndefineProps<{\n showEdit: boolean\n}>()\n\nconst ns = useNamespace('subject-layout')\n</script>\n\n<template>\n <div :class=\"ns.e('layout-exam')\">\n <!-- 编辑模式:只显示编辑区域 -->\n <template v-if=\"showEdit\">\n <div class=\"edit\">\n <slot name=\"edit\" />\n </div>\n </template>\n <!-- 预览模式:只显示预览区域 -->\n <template v-else>\n <slot name=\"preview\" />\n </template>\n <slot />\n </div>\n</template>\n"],"names":["ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createCommentVNode","showEdit","_openBlock","_hoisted_1","_renderSlot","_ctx","$slots","_Fragment","key"],"mappings":"2VAUA,MAAMA,EAAKC,EAAa,oCAItBC,EAYM,MAAA,CAZAC,MAAKC,EAAEC,EAAAL,GAAGM,EAAC,kBACfC,EAAA,kBACgBC,EAAAA,UACdC,IAAAP,EAEM,MAFNQ,EAEM,CADJC,EAAoBC,EAAAC,OAAA,gBAIxBX,EAEWY,EAAA,CAAAC,IAAA,GAAA,CAHXR,EAAA,kBAEEI,EAAuBC,EAAAC,OAAA,iBAEzBF,EAAQC,EAAAC,OAAA"}
@@ -1,2 +0,0 @@
1
- import t from"./subject-layout.vue.mjs";export{t as default};
2
- //# sourceMappingURL=subject-layout.vue2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subject-layout.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{withInstall as t}from"../withInstall.mjs";import s from"./src/subject-list.vue.mjs";const m=t(s);export{m as QxsSubjectList,m as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/src/subject-list/index.ts"],"sourcesContent":["import { withInstall } from '../withInstall'\nimport component from './src/subject-list.vue'\n\nconst QxsSubjectList = withInstall(component)\n\nexport {\n QxsSubjectList,\n}\n\nexport default QxsSubjectList\n"],"names":["QxsSubjectList","withInstall","component"],"mappings":"2FAGA,MAAMA,EAAiBC,EAAYC"}
@@ -1,2 +0,0 @@
1
- import{defineComponent as e,onMounted as i,createElementBlock as t,openBlock as o,normalizeClass as n,unref as r,createVNode as s,withCtx as m,createElementVNode as a,toDisplayString as u}from"vue";import{useNamespace as d}from"@qxs-bns/hooks";import"../../../ui/button/index.mjs";import"../../../ui/input/index.mjs";import"../../../ui/radio/index.mjs";import"../../../ui/checkbox/index.mjs";import"../../../ui/link/index.mjs";import"../../../ui/tag/index.mjs";import"../../../ui/input-number/index.mjs";import"../../../ui/select/index.mjs";import"../../../ui/popover/index.mjs";import{QxsRow as p}from"../../../ui/layout/index.mjs";import"../../../ui/scrollbar/index.mjs";import"../../../ui/dialog/index.mjs";import"../../../ui/table/index.mjs";import"../../../icon/index.mjs";import"../../../message/src/message.mjs";import l from"../../../subject-action/src/subject-action.vue.mjs";var x=e({name:"QxsSubjectScale",__name:"SubjectPageEnd",props:{currentPageIndex:{type:Number,required:!0},totalPage:{type:Number,required:!0},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(e,{emit:x}){const c=e,j=x;i(function(){});const b=d("subject-end");return(e,i)=>(o(),t("div",{class:n(r(b).e("end-exam"))},[s(r(p),{type:"flex",align:"middle"},{default:m(()=>[i[5]||(i[5]=a("span",{class:"auto-line"},null,-1)),a("span",null,"第"+u(c.currentPageIndex)+" / "+u(e.totalPage)+"页",1),i[6]||(i[6]=a("span",{class:"auto-line"},null,-1))]),_:1,__:[5,6]}),s(l,{"is-edit":!1,"is-set":e.isSet,"page-end":!0,"exam-answer-relation-type":c.examAnswerRelationType,"show-other-option":!1,"show-rich-text":!1,onMoveUp:i[0]||(i[0]=e=>j("move","up")),onMoveDown:i[1]||(i[1]=e=>j("move","down")),onDelete:i[2]||(i[2]=e=>j("delete")),onEdit:i[3]||(i[3]=e=>j("edit")),onAdd:i[4]||(i[4]=e=>j("add",e))},null,8,["is-set","exam-answer-relation-type"])],2))}});export{x as default};
2
- //# sourceMappingURL=SubjectPageEnd.vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubjectPageEnd.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/SubjectPageEnd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { QxsRow } from '../../../ui'\nimport { onMounted } from 'vue'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n currentPageIndex: number\n totalPage: number\n isSave: boolean\n showAction?: boolean\n isEdit: boolean\n isSet: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nfunction init() {\n\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-end')\n</script>\n\n<template>\n <div :class=\"ns.e('end-exam')\">\n <QxsRow\n type=\"flex\"\n align=\"middle\"\n >\n <span class=\"auto-line\" />\n <span>第{{ props.currentPageIndex }} / {{ totalPage }}页</span>\n <span class=\"auto-line\" />\n </QxsRow>\n <SubjectAction\n :is-edit=\"false\"\n :is-set=\"isSet\"\n :page-end=\"true\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :show-other-option=\"false\"\n :show-rich-text=\"false\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n />\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","onMounted","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","QxsRow","type","align","_createElementVNode","_toDisplayString","currentPageIndex","totalPage","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onEdit","onAdd","_cache"],"mappings":"8vCASA,MAAMA,EAAQC,EASRC,EAAQC,EAMdC,EAJA,WAEA,GAGA,MAAMC,EAAKC,EAAa,iCAItBC,EAsBM,MAAA,CAtBAC,MAAKC,EAAEC,EAAAL,GAAGM,EAAC,eACfC,EAOSF,EAAAG,GAAA,CANPC,KAAK,OACLC,MAAM,qBAEN,IAA0B,aAA1BC,EAA0B,OAAA,CAApBR,MAAM,aAAW,MAAA,IACvBQ,EAA6D,OAAA,KAAvD,IAACC,EAAGjB,EAAMkB,kBAAmB,MAAGD,EAAGE,EAAAA,WAAY,IAAC,eACtDH,EAA0B,OAAA,CAApBR,MAAM,aAAW,MAAA,qBAEzBI,EAYEQ,EAAA,CAXC,WAAS,EACT,SAAQC,EAAAA,MACR,YAAU,EACV,4BAA2BrB,EAAMsB,uBACjC,qBAAmB,EACnB,kBAAgB,EAChBC,wBAASrB,EAAK,OAAA,OACdsB,0BAAWtB,EAAK,OAAA,SAChBuB,wBAAQvB,EAAK,WACbwB,sBAAMxB,EAAK,SACXyB,MAAGC,EAAA,KAAAA,EAAA,GAAEd,GAAQZ,QAAaY"}
@@ -1,2 +0,0 @@
1
- import e from"./SubjectPageEnd.vue.mjs";export{e as default};
2
- //# sourceMappingURL=SubjectPageEnd.vue2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubjectPageEnd.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{defineComponent as e,useAttrs as t,ref as o,onMounted as i,createElementBlock as r,openBlock as s,normalizeClass as n,unref as a,createVNode as d,withCtx as u,createBlock as l,createCommentVNode as m,mergeProps as c,createElementVNode as p,createTextVNode as v,toDisplayString as y}from"vue";import{useNamespace as x}from"@qxs-bns/hooks";import{QxsMessage as h}from"../../../message/src/message.mjs";import w from"../../../subject-action/src/subject-action.vue.mjs";import f from"../../../subject-layout/src/subject-layout.vue.mjs";import j from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const b={class:"preview"},q=["innerHTML"];var S=e({name:"QxsSubjectScale",__name:"SubjectRichText",props:{orderIndex:{type:Number,required:!0},richTextContent:{type:String,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(e,{emit:S}){const T=e,A=S,g=t(),B=o("");function C(){B.value?A("save",{richTextContent:B.value||""}):h.error("富文本内容不能为空!")}i(function(){T.richTextContent&&(B.value=T.richTextContent)});const E=x("subject-scale");return(e,t)=>(s(),r("div",{class:n(a(E).e("scale-exam"))},[d(f,{"show-edit":e.isEdit},{preview:u(()=>[p("div",b,[v(y(e.orderIndex+1)+".",1),p("div",{innerHTML:B.value},null,8,q)])]),edit:u(()=>[d(j,c({"model-value":B.value,"onUpdate:modelValue":t[0]||(t[0]=e=>B.value=e)},a(g),{style:{width:"100%"}}),null,16,["model-value"])]),default:u(()=>[e.showAction?(s(),l(w,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"exam-answer-relation-type":T.examAnswerRelationType,"show-other-option":!1,"show-rich-text":!1,onMoveUp:t[1]||(t[1]=e=>A("move","up")),onMoveDown:t[2]||(t[2]=e=>A("move","down")),onDelete:t[3]||(t[3]=e=>A("delete")),onSave:C,onEdit:t[4]||(t[4]=e=>A("edit")),onAdd:t[5]||(t[5]=e=>A("add",e))},null,8,["is-edit","is-set","exam-answer-relation-type"])):m("v-if",!0)]),_:1},8,["show-edit"])],2))}});export{S as default};
2
- //# sourceMappingURL=SubjectRichText.vue.mjs.map