@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single.cjs","sources":["../../../../packages/components/src/subject/single.ts"],"sourcesContent":["import type { AnswerType } from './types'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { safeCustomElement } from '../base/define'\nimport { uid } from '../base/uid'\nimport { SUB_TEXT_EDITOR_TOOLBAR } from '../editor/toolbar'\nimport { buildSubjectPreviewTitle, buildSubjectSortingTitle, emitSubjectEvent, emitSubjectModelValue, getSubjectImageResources, getSubjectVideoResource, resolveSubjectCategoryLabel, showSubjectToast } from './shared-methods'\nimport { subjectControlResetStyles, subjectFormBaseStyles, subjectHostStyles, subjectPreviewBaseStyles, subjectTextareaStyles } from './shared-styles'\nimport { acknowledgeSingleCorrectHint, applySingleSaveDecisionToDialogs, buildSingleSearchSelection, dismissSingleChangeTypeDialog, dismissSingleCorrectHintDialog, hasSingleSearchSource, resolveSingleSaveDecision, searchSingleSubjects, type SingleDialogState } from './single-interactions'\nimport { buildSingleEditorState, buildSingleSnapshot, leastAnswerCountSuffix, normalizeLeastAnswerCount, normalizeSingleAnswerList, resolveSingleOrderList, serializeSingleSnapshot, type SingleAnswer, type SingleEditorState, type SingleSnapshot, validateSingleSnapshot } from './single-model'\nimport { applySingleAiAnswer, countSingleRelationAnswers, deleteSingleAnswerAt, getSingleSortOrder, insertSingleAnswerAfter, removeSingleSortLetter, resolveSingleSortAnswerValue, setSingleCorrectState, shouldShowSingleCorrectHint, toggleSingleSortLetter, updateSingleAnswerTitle } from './single-state'\nimport { renderSortingCard, sortingCardStyles } from './sorting-card'\nimport { type Category, type Resource, type SearchResult, SubjectError, type TagItem, trimText } from './subject-shared'\nimport { SubjectTypeLabel } from './types'\n\nexport { SubjectError, trimCommaSeparatedText, trimText } from './subject-shared'\nexport type { Category, KnowledgePointInfo, Resource, SearchResult, TagItem } from './subject-shared'\n\nconst iconPlus = html`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/></svg>`\nconst iconRemove = html`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/></svg>`\nconst iconArrow = html`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"/></svg>`\n\n@safeCustomElement('qxs-subject-single')\nexport class QxsSubjectSingle extends LitElement {\n static styles = [sortingCardStyles, subjectHostStyles, subjectControlResetStyles, subjectPreviewBaseStyles, subjectFormBaseStyles, subjectTextareaStyles, css`\n .preview-answer { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; }\n .preview-answer .radio { display: grid; grid-template-columns: auto auto minmax(0, 1fr); column-gap: 10px; row-gap: 3px; align-items: center; }\n .preview-answer .order { color: var(--qxs-subject-text-soft, #6b7280); font-size: 13px; font-weight: 600; }\n .preview-answer .answer-main { min-width: 0; display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }\n .preview-answer .answer-text { min-width: 0; font-size: 14px; line-height: 1.7; font-weight: 500; color: var(--qxs-subject-text-primary, #303133); }\n .preview-answer .answer-meta { grid-column: 3; display: flex; flex-wrap: wrap; gap: 8px; font-size: 12px; line-height: 1.6; color: var(--qxs-subject-text-muted, #8b95a7); }\n .preview-answer .correct { color: var(--qxs-subject-color-primary, #3D61E3); font-weight: 600; }\n .preview-answer .result-info { color: var(--qxs-subject-text-muted, #8b95a7); }\n\n .flex { display: flex; }\n .flex-items-center { display: flex; align-items: center; }\n .flex-items-start { display: flex; align-items: flex-start; }\n .flex-justify-end { display: flex; justify-content: flex-end; }\n .edit-actions {\n display: flex;\n justify-content: flex-end;\n padding-left: 88px;\n }\n .edit-inline {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px 14px;\n min-height: 32px;\n }\n .edit-note {\n margin-top: 6px;\n font-size: 12px;\n line-height: 1.6;\n color: var(--qxs-subject-text-secondary, #909399);\n }\n\n .answer-list { display: flex; flex-direction: column; gap: 10px; }\n .answer-item {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n border-radius: 4px;\n }\n .answer-item .label {\n min-width: 28px;\n font-size: 13px;\n font-weight: 600;\n color: var(--qxs-subject-text-soft, #6b7280);\n letter-spacing: 0;\n }\n .answer-item .input { flex: 1; min-width: 240px; max-width: 380px; position: relative; display: block; }\n .answer-item .input input {\n height: 36px; padding: 0 56px 0 10px;\n font-size: 13px; line-height: 32px;\n border: 1px solid var(--qxs-subject-border, #dcdfe6); border-radius: 6px; width: 100%;\n transition: border-color .2s; box-sizing: border-box;\n }\n .answer-item .input input:focus { border-color: var(--qxs-subject-color-primary, #3D61E3); outline: none; }\n .answer-item .input input:disabled { background: var(--qxs-subject-fill-light, #f5f7fa); color: var(--qxs-subject-text-disabled, #c0c4cc); cursor: not-allowed; }\n .answer-item .input .char-counter {\n position: absolute; right: 8px; top: 50%; transform: translateY(-50%);\n font-size: 12px; color: var(--qxs-subject-text-secondary, #909399); line-height: 1; pointer-events: none;\n }\n\n .answer-item .correct {\n color: var(--qxs-subject-text-secondary, #909399);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-height: 20px;\n white-space: nowrap;\n }\n .answer-item .correct:hover { color: var(--qxs-subject-color-primary, #3D61E3); }\n .answer-item .correct.is-correct { color: var(--qxs-subject-color-success, #67c23a); }\n .answer-item .correct input {\n width: 14px;\n height: 14px;\n margin: 0;\n flex: 0 0 auto;\n cursor: pointer;\n accent-color: var(--qxs-subject-color-primary, #3D61E3);\n }\n .answer-item .correct .correct-text {\n display: inline-flex;\n align-items: center;\n line-height: 1.2;\n }\n\n .answer-item .icon {\n margin-left: 6px; cursor: pointer; display: inline-flex;\n align-items: center; justify-content: center;\n width: 24px; height: 24px; border-radius: 4px;\n border: 1px solid var(--qxs-subject-border, #dcdfe6); background: var(--qxs-subject-fill-blank, #fff); color: var(--qxs-subject-text-secondary, #909399);\n transition: all 0.2s;\n }\n .answer-item .icon:hover { color: var(--qxs-subject-color-primary, #3D61E3); border-color: var(--qxs-subject-color-primary, #3D61E3); background: var(--qxs-subject-fill-soft-primary, #ecf5ff); }\n .answer-item .icon.disabled { color: var(--qxs-subject-border-light, #e4e7ed); border-color: var(--qxs-subject-border-light, #e4e7ed); cursor: not-allowed; }\n\n .answer-item .link {\n color: var(--qxs-subject-color-primary, #3D61E3);\n cursor: pointer;\n font-size: 12px;\n white-space: nowrap;\n }\n .answer-item .link:hover { color: var(--qxs-subject-color-primary-hover, #2D4CB8); }\n\n .el-select {\n width: 150px; height: 34px; border: 1px solid var(--qxs-subject-border, #dcdfe6); border-radius: 6px;\n padding: 0 8px; font-size: 13px; background: var(--qxs-subject-fill-blank, #fff); appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23c0c4cc' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\");\n background-repeat: no-repeat; background-position: right 8px center;\n }\n .el-select:focus { border-color: var(--qxs-subject-color-primary, #3D61E3); outline: none; }\n .el-select:disabled { background: var(--qxs-subject-fill-light, #f5f7fa); color: var(--qxs-subject-text-disabled, #c0c4cc); cursor: not-allowed; }\n\n .sort-badge { font-weight: bold; color: var(--qxs-subject-color-primary, #3D61E3); margin-left: 10px; }\n\n .el-link { color: var(--qxs-subject-color-primary, #3D61E3); cursor: pointer; font-size: 12px; background: none; border: none; padding: 0; margin: 0; font-family: inherit; }\n .el-link:hover { color: var(--qxs-subject-color-primary-hover, #2D4CB8); }\n .el-link.danger { color: var(--qxs-subject-color-danger, #f56c6c); }\n\n .value-text { font-size: 13px; color: var(--qxs-subject-text-regular, #606266); white-space: pre-wrap; }\n .muted-text { font-size: 12px; color: var(--qxs-subject-text-secondary, #909399); }\n\n .search-wrap { position: relative; }\n .search-dropdown {\n position: absolute; z-index: 120; left: 0; right: 0; top: calc(100% + 4px);\n background: var(--qxs-subject-fill-blank, #fff); border: 1px solid var(--qxs-subject-border-light, #e4e7ed); border-radius: 6px;\n box-shadow: var(--qxs-subject-shadow-soft, 0 8px 20px rgba(0,0,0,.12)); overflow: hidden;\n }\n .search-item {\n padding: 10px 12px; cursor: pointer; transition: background .2s;\n font-size: 13px; color: var(--qxs-subject-text-regular, #606266); line-height: 1.4;\n }\n .search-item:hover { background: var(--qxs-subject-fill-light, #f5f7fa); color: var(--qxs-subject-color-primary, #3D61E3); }\n .search-empty { padding: 10px 12px; font-size: 12px; color: var(--qxs-subject-text-secondary, #909399); }\n\n .tag-list { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 32px; }\n .tag-item {\n display: inline-flex; align-items: center; gap: 4px;\n padding: 4px 8px; font-size: 12px; line-height: 1;\n color: var(--qxs-subject-color-primary, #3D61E3); background: var(--qxs-subject-fill-soft-primary, #ecf5ff); border: 1px solid var(--qxs-subject-fill-soft-primary-border, #d9ecff); border-radius: 4px;\n }\n .tag-item .close { cursor: pointer; color: var(--qxs-subject-text-secondary, #909399); }\n .tag-item .close:hover { color: var(--qxs-subject-color-danger, #f56c6c); }\n .tag-hint { font-size: 12px; color: var(--qxs-subject-text-secondary, #909399); }\n\n .resource-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }\n .resource-summary { font-size: 12px; color: var(--qxs-subject-text-regular, #606266); }\n .resource-thumbs { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }\n .resource-thumb {\n width: 72px; height: 72px; object-fit: cover; border-radius: 6px;\n border: 1px solid var(--qxs-subject-border-light, #e4e7ed); cursor: pointer; background: var(--qxs-subject-fill-light, #f5f7fa);\n }\n .resource-video {\n display: inline-flex; align-items: center; justify-content: center;\n min-width: 88px; height: 30px; padding: 0 10px; border: 1px solid var(--qxs-subject-border, #dcdfe6); border-radius: 4px;\n color: var(--qxs-subject-text-regular, #606266); background: var(--qxs-subject-fill-blank, #fff); cursor: pointer; font-size: 12px; transition: all .2s;\n }\n .resource-video:hover { color: var(--qxs-subject-color-primary, #3D61E3); border-color: var(--qxs-subject-color-primary, #3D61E3); background: var(--qxs-subject-fill-soft-primary, #ecf5ff); }\n .media-stage { display: flex; align-items: center; justify-content: center; min-height: 240px; }\n .media-stage img, .media-stage video { max-width: 100%; max-height: 60vh; border-radius: 6px; }\n .media-footer { display: flex; justify-content: space-between; align-items: center; gap: 8px; width: 100%; }\n .media-footer .group { display: flex; gap: 8px; }\n\n /* Multi-select with tags (Element Plus style) */\n .multi-select-wrapper { position: relative; }\n .multi-select {\n width: 240px; min-height: 36px; border: 1px solid var(--qxs-subject-border, #dcdfe6); border-radius: 6px;\n padding: 0 30px 0 8px; font-size: 13px; background: var(--qxs-subject-fill-blank, #fff); cursor: pointer;\n display: flex; flex-wrap: nowrap; align-items: center; gap: 4px;\n transition: border-color .2s; position: relative; overflow: hidden;\n }\n .multi-select:hover { border-color: var(--qxs-subject-text-disabled, #c0c4cc); }\n .multi-select.focused { border-color: var(--qxs-subject-color-primary, #3D61E3); }\n .multi-select.disabled { background: var(--qxs-subject-fill-light, #f5f7fa); cursor: not-allowed; }\n .multi-select .placeholder { color: var(--qxs-subject-text-disabled, #c0c4cc); font-size: 13px; padding: 4px 0; }\n .multi-select .arrow {\n position: absolute; right: 8px; top: 50%; transform: translateY(-50%);\n color: var(--qxs-subject-text-disabled, #c0c4cc); display: inline-flex; transition: transform .2s;\n }\n .multi-select.focused .arrow { transform: translateY(-50%) rotate(180deg); color: var(--qxs-subject-color-primary, #3D61E3); }\n .multi-select .tag {\n display: inline-flex; align-items: center; gap: 2px;\n background: var(--qxs-subject-fill-dark, #f0f2f5); border-radius: 3px; padding: 0 6px; height: 20px;\n font-size: 12px; color: var(--qxs-subject-text-regular, #606266); line-height: 20px;\n }\n .multi-select .tag .tag-close {\n display: inline-flex; cursor: pointer; color: var(--qxs-subject-text-secondary, #909399); margin-left: 2px; line-height: 1;\n }\n .multi-select .tag .tag-close:hover { color: var(--qxs-subject-color-primary, #3D61E3); }\n .multi-select-dropdown {\n position: absolute; z-index: 100; background: var(--qxs-subject-fill-blank, #fff); left: 0; top: 100%; margin-top: 4px;\n border: 1px solid var(--qxs-subject-border-light, #e4e7ed); border-radius: 3px;\n box-shadow: var(--qxs-subject-shadow-soft, 0 4px 12px rgba(0,0,0,.12)); min-width: 240px; max-height: 140px; overflow-y: auto;\n }\n .multi-select-option {\n padding: 4px 12px; font-size: 13px; color: var(--qxs-subject-text-regular, #606266); cursor: pointer;\n transition: background .2s;\n }\n .multi-select-option:hover { background: var(--qxs-subject-fill-light, #f5f7fa); }\n .multi-select-option.selected { color: var(--qxs-subject-color-primary, #3D61E3); font-weight: 500; }\n\n @media (max-width: 720px) {\n .edit-row,\n .section-row {\n flex-direction: column;\n gap: 8px;\n }\n\n .edit-row > .label,\n .section-row > .label {\n min-width: 0;\n padding-top: 0;\n }\n\n .edit-actions {\n padding-left: 0;\n justify-content: flex-start;\n }\n\n .answer-item .input {\n min-width: 0;\n max-width: none;\n width: 100%;\n }\n }\n\n .modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 9000; display: flex; align-items: center; justify-content: center; }\n .modal { background: var(--qxs-subject-fill-blank, #fff); border-radius: 6px; width: 520px; max-width: 90vw; box-shadow: var(--qxs-subject-shadow-soft, 0 12px 32px rgba(0,0,0,.12)); display: flex; flex-direction: column; }\n .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px 12px; border-bottom: 1px solid var(--qxs-subject-border-light, #e4e7ed); }\n .modal-title { font-size: 14px; font-weight: 600; color: var(--qxs-subject-text-primary, #303133); }\n .modal-close { background: none; border: none; font-size: 18px; cursor: pointer; color: var(--qxs-subject-text-secondary, #909399); padding: 0; line-height: 1; }\n .modal-close:hover { color: var(--qxs-subject-color-primary, #3D61E3); }\n .modal-body { padding: 20px; }\n .modal-body textarea { min-height: 120px; }\n .modal-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 20px; border-top: 1px solid var(--qxs-subject-border-light, #e4e7ed); }\n .modal-footer button { padding: 6px 16px; font-size: 12px; border-radius: 3px; cursor: pointer; border: 1px solid var(--qxs-subject-border, #dcdfe6); background: var(--qxs-subject-fill-blank, #fff); color: var(--qxs-subject-text-regular, #606266); }\n .modal-footer button:hover { color: var(--qxs-subject-color-primary, #3D61E3); border-color: var(--qxs-subject-fill-soft-primary-border-strong, #a0cfff); }\n .modal-footer button.primary { background: var(--qxs-subject-color-primary, #3D61E3); border-color: var(--qxs-subject-color-primary, #3D61E3); color: var(--qxs-subject-fill-blank, #fff); }\n .modal-footer button.primary:hover { background: var(--qxs-subject-color-primary-hover, #2D4CB8); border-color: var(--qxs-subject-color-primary-hover, #2D4CB8); }\n .correct-hint-dialog { width: 520px; max-width: min(90vw, 520px); }\n .correct-hint-dialog .modal-header { padding: 18px 20px 14px; }\n .correct-hint-dialog .modal-title { font-size: 16px; font-weight: 700; color: var(--qxs-subject-text-primary, #303133); }\n .correct-hint-dialog .modal-close { display: none; }\n .correct-hint-dialog .modal-body {\n padding: 32px 28px 20px;\n font-size: 14px;\n line-height: 1.8;\n color: var(--qxs-subject-text-primary, #303133);\n text-align: center;\n }\n .correct-hint-copy { max-width: 420px; margin: 0 auto; }\n .correct-hint-highlight { color: var(--qxs-subject-color-primary, #4c6fff); }\n .correct-hint-dialog .modal-footer {\n justify-content: center;\n gap: 12px;\n padding: 0 28px 28px;\n border-top: none;\n }\n .correct-hint-dialog .modal-footer button {\n min-width: 120px;\n height: 36px;\n padding: 0 18px;\n font-size: 14px;\n border-radius: 4px;\n }\n `]\n\n @property({ type: Number, attribute: 'order-index' }) 'order-index' = 0\n @property({ type: String, attribute: 'subject-prefix' }) 'subject-prefix'?: string\n @property({ type: Boolean, attribute: 'is-edit' }) 'is-edit' = false\n @property({ type: Boolean, attribute: 'is-save' }) 'is-save' = false\n @property({ type: Boolean, attribute: 'is-set' }) 'is-set' = false\n @property({ type: Boolean, attribute: 'is-set-correct-answer' }) 'is-set-correct-answer' = false\n @property({ type: Boolean, attribute: 'lock-answer-key' }) lockAnswerKey = false\n @property({ type: Boolean, attribute: 'is-key' }) 'is-key' = false\n @property({ type: Boolean, attribute: 'show-action' }) 'show-action' = true\n @property({ type: Boolean, attribute: 'show-add' }) 'show-add' = true\n @property({ type: Boolean, attribute: 'hide-add-rich-text' }) 'hide-add-rich-text' = false\n @property({ type: Boolean, attribute: 'show-rich-text' }) 'show-rich-text' = false\n @property({ type: Boolean, attribute: 'show-delete-action' }) 'show-delete-action' = true\n @property({ type: Boolean, attribute: 'show-save-action' }) 'show-save-action' = true\n @property({ type: Boolean, reflect: true }) sorting = false\n @property({ type: Boolean, attribute: 'show-answer-setting' }) 'show-answer-setting' = false\n @property({ type: Boolean, attribute: 'show-key' }) 'show-key' = false\n @property({ type: Boolean, attribute: 'show-analysis' }) 'show-analysis' = false\n @property({ attribute: 'question-type', reflect: true }) type: AnswerType = 'single'\n @property({ type: Number, attribute: 'answer-check-type' }) 'answer-check-type' = 1\n @property({ type: Number, attribute: 'exam-answer-relation-type' }) 'exam-answer-relation-type' = 0\n @property({ type: String, attribute: 'rich-text-content' }) 'rich-text-content' = ''\n @property({ type: String }) analysis = ''\n @property({ type: Number, attribute: 'least-answer-count' }) 'least-answer-count': number | null = null\n @property({ type: String, attribute: 'exam-expand' }) 'exam-expand' = ''\n @property({ type: String, attribute: 'custom-id' }) 'custom-id' = ''\n @property({ type: Number, attribute: 'exam-id' }) 'exam-id' = 0\n @property({ type: String, attribute: 'category-id' }) 'category-id' = ''\n @property({ type: Object, attribute: 'upload-image' }) 'upload-image': (file: File) => Promise<string> = async (file: File) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = e => resolve(e.target?.result as string)\n reader.onerror = reject\n reader.readAsDataURL(file)\n })\n }\n\n @property({ type: Array, attribute: 'answer-list' })\n get 'answer-list'() { return this._answers }\n\n set 'answer-list'(v: any) {\n // 编辑模式下不接受外部更新,避免覆盖用户正在编辑的内容\n if (this['is-edit']) {\n return\n }\n this._answers = normalizeSingleAnswerList(v)\n this.requestUpdate('answer-list')\n }\n\n // ============ 业务接口 Props ============\n /**\n * 标签列表 - 用于关联题目的标签信息\n * @type {TagItem[]}\n * @description 业务系统传入已选择的标签列表\n */\n @property({ type: Array, attribute: 'tag-list' }) 'tag-list': TagItem[] = []\n /**\n * 分类列表 - 可用于题目的分类选项\n * @type {Category[]}\n * @description 业务系统传入可选的分类列表\n */\n @property({ type: Array, attribute: 'category-list' }) 'category-list': Category[] = []\n /**\n * AI 推荐答案 - AI 根据题目内容推荐的答案\n * @type {string}\n * @description AI 返回的推荐答案,格式如 \"1. 选项A\\n2. 选项B\"\n */\n @property({ type: String, attribute: 'ai-answer' }) 'ai-answer' = ''\n /**\n * 图片/视频资源列表 - 题目附带的媒体资源\n * @type {Resource[]}\n * @description 题目附带图片或视频资源\n */\n @property({ type: Array, attribute: 'resource-list' }) 'resource-list': Resource[] = []\n /**\n * 是否显示标签功能\n * @type {boolean}\n * @default false\n * @description 业务功能开关,控制是否显示标签选择 UI\n */\n @property({ type: Boolean, attribute: 'show-tag' }) 'show-tag' = false\n /**\n * 是否显示分类功能\n * @type {boolean}\n * @default false\n * @description 业务功能开关,控制是否显示分类选择 UI\n */\n @property({ type: Boolean, attribute: 'show-category' }) 'show-category' = false\n /**\n * 是否显示 AI 推荐功能\n * @type {boolean}\n * @default false\n * @description 业务功能开关,控制是否显示 AI 推荐答案 UI\n */\n @property({ type: Boolean, attribute: 'show-ai' }) 'show-ai' = false\n /**\n * 是否显示资源功能\n * @type {boolean}\n * @default false\n * @description 业务功能开关,控制是否显示图片/视频资源 UI\n */\n @property({ type: Boolean, attribute: 'show-resource' }) 'show-resource' = false\n /**\n * 是否显示跳题功能\n * @type {boolean}\n * @default false\n * @description 业务功能开关,控制是否显示跳题逻辑设置入口\n */\n @property({ type: Boolean, attribute: 'show-jump' }) 'show-jump' = false\n /**\n * 跳题状态 - 是否已设置跳题逻辑\n * @type {boolean}\n * @default false\n * @description 标记当前题目是否已设置跳题逻辑\n */\n @property({ type: Boolean, attribute: 'has-jump' }) 'has-jump' = false\n /**\n * 题库搜索接口地址\n * @type {string}\n * @description 题库模糊搜索接口地址,用于题库搜索功能\n */\n @property({ type: String, attribute: 'search-api' }) 'search-api' = ''\n /**\n * 题库搜索回调函数\n * @type {Function}\n * @param {string} query - 搜索关键词\n * @param {number} answerType - 题目类型:0-单选, 1-多选\n * @returns {Promise<SearchResult[]>} 搜索结果列表\n * @description 题库搜索的回调函数,由业务系统实现搜索逻辑\n */\n @property({ type: Object, attribute: 'search-handler' }) 'search-handler'?: (query: string, answerType: number) => Promise<SearchResult[]>\n\n // 双向绑定支持\n @property({ type: String, attribute: 'model-value' }) 'model-value' = ''\n @property({ type: Boolean, attribute: 'use-model' }) 'use-model' = false\n\n @state() private _answers: SingleAnswer[] = [\n { title: '', isCorrect: false }, { title: '', isCorrect: false },\n { title: '', isCorrect: false }, { title: '', isCorrect: false },\n ]\n\n @property({ type: String }) title = ''\n\n @state() private _title = ''\n @state() private _analysis = ''\n @state() private _richText = ''\n @state() private _showRichText = false\n @state() private _leastAnswerCount: number | null = null\n @state() private _answerCheckType = 1\n @state() private _isKey = false\n @state() private _orderList: string[] = []\n @state() private _selectedTagList: TagItem[] = []\n @state() private _categoryId = ''\n @state() private _searchResults: SearchResult[] = []\n @state() private _searchOpen = false\n @state() private _searchLoading = false\n @state() private _sortDropdownOpen = false\n @state() private _imageViewerOpen = false\n @state() private _imageViewerIndex = 0\n @state() private _videoViewerOpen = false\n @state() private _correctHintDialogOpen = false\n @state() private _hasShownCorrectHint = false\n @state() private _changeTypeDialogOpen = false\n\n private _searchTimer: number | null = null\n private _searchToken = 0\n\n private readonly TITLE_MAX = 200\n private readonly ANSWER_MAX = 100\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._handleDocumentClick)\n this._syncExternalProps()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._handleDocumentClick)\n if (this._searchTimer) {\n window.clearTimeout(this._searchTimer)\n this._searchTimer = null\n }\n }\n\n private _handleDocumentClick = (e: MouseEvent) => {\n const path = e.composedPath()\n const wrapper = this.shadowRoot?.querySelector('.multi-select-wrapper')\n const searchWrap = this.shadowRoot?.querySelector('.search-wrap')\n if (wrapper && !path.includes(wrapper)) {\n this._sortDropdownOpen = false\n }\n if (searchWrap && !path.includes(searchWrap)) {\n this._searchOpen = false\n }\n this.requestUpdate()\n }\n\n willUpdate(changed: Map<string, unknown>) {\n if (changed.has('is-edit') && this['is-edit']) { this._syncProps() }\n if (!this['is-edit'] && (changed.has('title') || changed.has('answer-list') || changed.has('analysis') || changed.has('least-answer-count') || changed.has('answer-check-type') || changed.has('tag-list') || changed.has('category-id') || changed.has('rich-text-content'))) {\n this._syncExternalProps()\n }\n if (changed.has('is-key')) {\n this._isKey = this['is-key']\n }\n if (changed.has('tag-list')) {\n this._selectedTagList = Array.isArray(this['tag-list']) ? this['tag-list'].map(item => ({ ...item })) : []\n }\n if (changed.has('category-id')) {\n this._categoryId = this['category-id'] ? String(this['category-id']) : ''\n }\n if (changed.has('exam-expand') || changed.has('answer-list')) { this._syncExamExpand() }\n if (changed.has('model-value') && this['use-model']) {\n this._title = this['model-value']\n }\n }\n\n private _applyEditorState(state: SingleEditorState) {\n this._title = state.title\n this._analysis = state.analysis\n this._leastAnswerCount = state.leastAnswerCount\n this._answerCheckType = state.answerCheckType\n this._isKey = state.isKey\n this._selectedTagList = state.selectedTagList\n this._categoryId = state.categoryId\n this._richText = state.richText\n this._showRichText = state.showRichText\n if (state.answers) {\n this._answers = state.answers\n }\n if (state.orderList) {\n this._orderList = state.orderList\n }\n }\n\n private _buildEditorState(includeOrderList = false) {\n return buildSingleEditorState({\n answerType: this.type,\n title: this.title,\n analysis: this.analysis,\n leastAnswerCount: this['least-answer-count'],\n answerCheckType: this['answer-check-type'],\n isKey: this['is-key'],\n tagList: this['tag-list'],\n categoryId: this['category-id'],\n richTextContent: this['rich-text-content'],\n answerList: this['answer-list'],\n examExpand: this['exam-expand'],\n labelForIndex: (index) => this._label(index),\n includeOrderList,\n })\n }\n\n private _syncExternalProps() {\n this._applyEditorState(this._buildEditorState())\n }\n\n private _syncProps() {\n this._applyEditorState(this._buildEditorState(true))\n }\n\n private _syncExamExpand() {\n if (!this['exam-expand'] || !this['answer-list']?.length) { return }\n this._orderList = resolveSingleOrderList({\n examExpand: this['exam-expand'],\n answers: this['answer-list'] as SingleAnswer[],\n labelForIndex: (index) => this._label(index),\n })\n }\n\n private _emit(name: string, detail?: unknown) {\n emitSubjectEvent(this, name, detail)\n }\n\n private _queueSearch(query: string) {\n if (this._searchTimer) {\n window.clearTimeout(this._searchTimer)\n this._searchTimer = null\n }\n const keyword = query.trim()\n if (!keyword || !hasSingleSearchSource(this['search-api'], this['search-handler'])) {\n this._searchResults = []\n this._searchOpen = false\n this._searchLoading = false\n return\n }\n this._searchTimer = window.setTimeout(() => {\n void this._runSearch(keyword)\n }, 300)\n }\n\n private async _runSearch(query: string) {\n const currentToken = ++this._searchToken\n this._searchLoading = true\n this._searchOpen = true\n this.requestUpdate()\n try {\n const result = await searchSingleSubjects({\n answerType: this.type,\n query,\n searchApi: this['search-api'],\n searchHandler: this['search-handler'],\n })\n if (currentToken !== this._searchToken) { return }\n this._searchResults = result\n }\n catch (error: any) {\n if (currentToken !== this._searchToken) { return }\n this._searchResults = []\n showSubjectToast(error?.message || '题库搜索失败')\n }\n finally {\n if (currentToken === this._searchToken) {\n this._searchLoading = false\n this.requestUpdate()\n }\n }\n }\n\n private _selectSearchResult(item: SearchResult) {\n const { selectedTitle, detail } = buildSingleSearchSelection(item, this['custom-id'] || '')\n this._title = selectedTitle\n this._searchResults = []\n this._searchOpen = false\n if (this['use-model']) {\n emitSubjectModelValue(this, this._title)\n }\n this._emit('title-select', detail)\n }\n\n private _applyAiAnswer() {\n if (!this['ai-answer']?.trim()) {\n showSubjectToast('暂无 AI 推荐答案')\n return\n }\n const result = applySingleAiAnswer({\n answers: this._answers,\n aiAnswer: this['ai-answer'],\n answerType: this.type,\n })\n if (!result.matchedCount) {\n showSubjectToast('未找到匹配的选项,请检查选项内容是否一致')\n return\n }\n this._answers = result.answers\n }\n\n private _onCategoryChange(value: string) {\n this._categoryId = value\n this._emit('category-change', {\n value,\n customId: this['custom-id'] || '',\n examId: this['exam-id'] || 0,\n })\n }\n\n private _setRelation(item: SingleAnswer, answerIndex: number) {\n const answer = item.customAnswerId\n ? { ...item }\n : { ...item, customAnswerId: item.answerId || uid() }\n this._answers = this._answers.map((current, index) => index === answerIndex ? answer : current)\n this.requestUpdate()\n this._emit('set-relation', {\n customId: this['custom-id'] || '',\n examId: this['exam-id'] || 0,\n answerIndex,\n answer,\n })\n }\n\n private _relationLength(relations: any[] = []) {\n return countSingleRelationAnswers(relations)\n }\n\n private _emitEditResultItem(item: SingleAnswer, answerIndex: number) {\n this._emit('edit-result-item', {\n customId: this['custom-id'] || '',\n examId: this['exam-id'] || 0,\n answerIndex,\n answer: { ...item },\n resultItem: item.resultItem || '',\n })\n }\n\n private _resultSlotName(index: number) {\n return `business-result-item-${index}`\n }\n\n private _imageResources() {\n return getSubjectImageResources(this['resource-list'] || [])\n }\n\n private _videoResource() {\n return getSubjectVideoResource(this['resource-list'] || [])\n }\n\n private _openImageViewer(index = 0) {\n if (!this._imageResources().length) { return }\n this._imageViewerIndex = index\n this._imageViewerOpen = true\n }\n\n private _closeImageViewer() {\n this._imageViewerOpen = false\n }\n\n private _moveImage(step: number) {\n const images = this._imageResources()\n if (!images.length) { return }\n this._imageViewerIndex = (this._imageViewerIndex + step + images.length) % images.length\n }\n\n private _openVideoViewer() {\n if (!this._videoResource()?.url) { return }\n this._videoViewerOpen = true\n }\n\n private _closeVideoViewer() {\n this._videoViewerOpen = false\n }\n\n private _label(i: number) { return String.fromCharCode(65 + i) }\n\n private get _titlePlaceholder() {\n return this.type === 'single' ? '单选题' : this.type === 'multiple' ? '多选题' : '排序题'\n }\n\n private _setCorrect(answerIndexOrAnswer: number | SingleAnswer, val: boolean) {\n if (this.lockAnswerKey) { return }\n const answerIndex = typeof answerIndexOrAnswer === 'number'\n ? answerIndexOrAnswer\n : this._answers.indexOf(answerIndexOrAnswer)\n if (answerIndex < 0) { return }\n this._answers = setSingleCorrectState(this._answers, this.type, answerIndex, val)\n }\n\n private _onTitleInput(e: Event) {\n const el = e.target as HTMLTextAreaElement\n if (el.value.length > this.TITLE_MAX) { el.value = el.value.slice(0, this.TITLE_MAX) }\n this._title = el.value\n this._queueSearch(this._title)\n // 双向绑定:通知外部更新\n if (this['use-model']) {\n emitSubjectModelValue(this, this._title)\n }\n }\n\n private _onAnswerInput(e: Event, idx: number) {\n const el = e.target as HTMLInputElement\n if (el.value.length > this.ANSWER_MAX) { el.value = el.value.slice(0, this.ANSWER_MAX) }\n this._answers = updateSingleAnswerTitle(this._answers, idx, el.value, this.ANSWER_MAX)\n }\n\n private _addAnswer(index: number) {\n this._answers = insertSingleAnswerAfter(this._answers, index, () => uid())\n }\n\n private _deleteAnswer(index: number) {\n this._answers = deleteSingleAnswerAt(this._answers, index)\n }\n\n private _toggleSortItem(letter: string) {\n this._orderList = toggleSingleSortLetter(this._orderList, letter)\n }\n\n private _removeSortItem(letter: string) {\n this._orderList = removeSingleSortLetter(this._orderList, letter)\n }\n\n private _getSortOrder(index: number): number | null {\n return getSingleSortOrder(this._orderList, this._label(index))\n }\n\n private _sortAnswerValue(letter: string) {\n return resolveSingleSortAnswerValue(letter, this._answers)\n }\n\n private _rowMeta() {\n return {\n customId: this['custom-id'] || undefined,\n answerType: this.type,\n orderIndex: this['order-index'],\n }\n }\n\n private _dialogState(): SingleDialogState {\n return {\n correctHintDialogOpen: this._correctHintDialogOpen,\n changeTypeDialogOpen: this._changeTypeDialogOpen,\n hasShownCorrectHint: this._hasShownCorrectHint,\n }\n }\n\n private _applyDialogState(state: SingleDialogState) {\n this._correctHintDialogOpen = state.correctHintDialogOpen\n this._changeTypeDialogOpen = state.changeTypeDialogOpen\n this._hasShownCorrectHint = state.hasShownCorrectHint\n }\n\n private _collectSnapshot(): SingleSnapshot {\n const orderList = this['is-edit']\n ? [...this._orderList]\n : resolveSingleOrderList({\n examExpand: this['exam-expand'],\n answers: this['answer-list'] as SingleAnswer[],\n labelForIndex: (index) => this._label(index),\n })\n\n return buildSingleSnapshot({\n answerType: this.type,\n title: this['is-edit'] ? this._title : (this as any).title || '',\n answers: this['is-edit'] ? this._answers : this['answer-list'] || [],\n analysis: this['is-edit'] ? this._analysis : this.analysis || '',\n leastAnswerCount: this['is-edit'] ? this._leastAnswerCount : this['least-answer-count'],\n selectedTagList: this._selectedTagList,\n examExpand: this['is-edit'] ? '' : (this['exam-expand'] || ''),\n showRichText: this['is-edit'] ? this._showRichText : !!this['rich-text-content'],\n richText: this['is-edit'] ? this._richText : this['rich-text-content'] || '',\n orderList,\n sortAnswerValue: this['is-edit'] ? (letter: string) => this._sortAnswerValue(letter) : undefined,\n })\n }\n\n private _serialize(answerType: AnswerType = this.type) {\n const snapshot = this._collectSnapshot()\n const { errors, isSetCorrectAnswer } = validateSingleSnapshot(snapshot, answerType, this._rowMeta())\n if (errors.length) {\n throw errors[0]\n }\n return serializeSingleSnapshot(snapshot, {\n answerType,\n isSetCorrectAnswer,\n examAnswerRelationType: this['exam-answer-relation-type'],\n customId: this['custom-id'],\n })\n }\n\n private _shouldShowCorrectHint() {\n return shouldShowSingleCorrectHint({\n answerType: this.type,\n answers: this._answers,\n orderList: this._orderList,\n })\n }\n\n private async _finalizeSave() {\n try {\n const data = await this.toJSON()\n this._emit('save', data)\n }\n catch (err: any) {\n showSubjectToast(err.message)\n }\n }\n\n async toJSON(): Promise<any> {\n return Promise.resolve(this._serialize())\n }\n\n validate(): SubjectError[] {\n return validateSingleSnapshot(this._collectSnapshot(), this.type, this._rowMeta()).errors\n }\n\n setResultItem(answerIndex: number, resultItem: string) {\n if (answerIndex < 0 || answerIndex >= this._answers.length) {\n return\n }\n this._answers = this._answers.map((answer, index) => index === answerIndex\n ? { ...answer, resultItem: resultItem || '' }\n : answer)\n this.requestUpdate()\n }\n\n setAnswerRelation(customAnswerId: string, answerRelations: any) {\n if (!customAnswerId) {\n return\n }\n this._answers = this._answers.map((answer) => {\n const currentId = String(answer.customAnswerId ?? answer.answerId ?? '')\n return currentId === String(customAnswerId)\n ? { ...answer, answerRelations }\n : answer\n })\n this.requestUpdate()\n }\n\n private _renderCorrectHintDialog() {\n if (!this._correctHintDialogOpen) { return '' }\n return html`\n <div class=\"modal-backdrop\" @click=${() => { this._applyDialogState(dismissSingleCorrectHintDialog(this._dialogState())) }}>\n <div class=\"modal correct-hint-dialog\" @click=${(e: Event) => e.stopPropagation()}>\n <div class=\"modal-header\">\n <span class=\"modal-title\">温馨提示</span>\n </div>\n <div class=\"modal-body\">\n <div class=\"correct-hint-copy\">\n 为了收集更全面、有价值的数据,建议您为问卷每题设定<span class=\"correct-hint-highlight\">推荐/正确选项</span>。这将助力深入分析,让调研结果更精准、有意义。\n </div>\n </div>\n <div class=\"modal-footer\">\n <button @click=${async () => {\n this._applyDialogState(acknowledgeSingleCorrectHint(this._dialogState()))\n await this._finalizeSave()\n }}>完成编辑</button>\n <button class=\"primary\" @click=${() => { this._applyDialogState(dismissSingleCorrectHintDialog(this._dialogState())) }}>去设置</button>\n </div>\n </div>\n </div>\n `\n }\n\n private _renderChangeTypeDialog() {\n if (!this._changeTypeDialogOpen) { return '' }\n return html`\n <div class=\"modal-backdrop\" @click=${() => { this._applyDialogState(dismissSingleChangeTypeDialog(this._dialogState())) }}>\n <div class=\"modal\" @click=${(e: Event) => e.stopPropagation()}>\n <div class=\"modal-header\">\n <span class=\"modal-title\">提示</span>\n <button class=\"modal-close\" @click=${() => { this._applyDialogState(dismissSingleChangeTypeDialog(this._dialogState())) }}>&#x2715;</button>\n </div>\n <div class=\"modal-body\">\n <div class=\"value-text\">此题为单选题,设置了多个推荐/正确选项,是否切换成多选题?</div>\n </div>\n <div class=\"modal-footer\">\n <button @click=${() => { this._applyDialogState(dismissSingleChangeTypeDialog(this._dialogState())) }}>取消</button>\n <button class=\"primary\" @click=${() => {\n try {\n const data = this._serialize('multiple')\n this._applyDialogState(dismissSingleChangeTypeDialog(this._dialogState()))\n this._emit('save', data)\n }\n catch (error: any) {\n showSubjectToast(error?.message || '保存失败')\n }\n }}>切换</button>\n </div>\n </div>\n </div>\n `\n }\n\n private _renderSearchDropdown() {\n if (!this['is-edit'] || (!this._searchOpen && !this._searchLoading)) { return '' }\n return html`\n <div class=\"search-dropdown\">\n ${this._searchLoading\n ? html`<div class=\"search-empty\">搜索中...</div>`\n : this._searchResults.length\n ? this._searchResults.map(item => html`\n <div class=\"search-item\" @click=${() => this._selectSearchResult(item)}>${item.value || item.title}</div>\n `)\n : html`<div class=\"search-empty\">暂无匹配题目</div>`}\n </div>\n `\n }\n\n private _renderCategorySection() {\n if (!this['show-category']) { return '' }\n return html`\n <div class=\"flex-items-start section-row\">\n <div class=\"label\"><span>分类:</span></div>\n <div style=\"flex:1\">\n ${this['is-edit']\n ? html`\n <select class=\"el-select\" .value=${String(this._categoryId)}\n @change=${(e: Event) => this._onCategoryChange((e.target as HTMLSelectElement).value)}>\n <option value=\"\">选择分类</option>\n ${this['category-list'].map(item => html`\n <option value=${String(item.categoryId)} ?selected=${String(item.categoryId) === String(this._categoryId)}>${item.title}</option>\n `)}\n </select>\n `\n : html`<span class=\"value-text\">${resolveSubjectCategoryLabel(this['category-list'], this._categoryId)}</span>`}\n </div>\n </div>\n `\n }\n\n private _renderAiSection() {\n if (!this['show-ai'] || !['single', 'multiple'].includes(this.type)) { return '' }\n return html`\n <div class=\"flex-items-start section-row\">\n <div class=\"label\"><span>AI推荐:</span></div>\n <div style=\"flex:1\">\n <span class=\"value-text\">${this['ai-answer'] || '暂无'}</span>\n ${this['is-edit']\n ? html`<div style=\"margin-top:8px\"><span class=\"el-link\" @click=${() => this._applyAiAnswer()}>一键勾选</span></div>`\n : ''}\n </div>\n </div>\n `\n }\n\n private _renderResourceSection() {\n if (!this['show-resource']) { return '' }\n const images = this._imageResources()\n const video = this._videoResource()\n return html`\n <div class=\"flex-items-start section-row\">\n <div class=\"label\"><span>资源:</span></div>\n <div style=\"flex:1\">\n <div class=\"resource-summary\">\n 图片 ${images.length} 张${video ? ',含视频资源' : ''}\n </div>\n <div class=\"resource-actions\">\n ${images.length ? html`<span class=\"el-link\" @click=${() => this._openImageViewer(0)}>查看图片</span>` : ''}\n ${video?.url ? html`<span class=\"el-link\" @click=${() => this._openVideoViewer()}>查看视频</span>` : ''}\n ${!images.length && !video?.url ? html`<span class=\"muted-text\">暂无资源</span>` : ''}\n </div>\n ${images.length\n ? html`\n <div class=\"resource-thumbs\">\n ${images.slice(0, 4).map((src, index) => html`\n <img class=\"resource-thumb\" src=${src} alt=\"resource\" @click=${() => this._openImageViewer(index)} />\n `)}\n </div>\n `\n : ''}\n </div>\n </div>\n `\n }\n\n private _renderImageViewer() {\n if (!this._imageViewerOpen) { return '' }\n const images = this._imageResources()\n const current = images[this._imageViewerIndex]\n if (!current) { return '' }\n return html`\n <div class=\"modal-backdrop\" @click=${() => this._closeImageViewer()}>\n <div class=\"modal\" @click=${(e: Event) => e.stopPropagation()}>\n <div class=\"modal-header\">\n <span class=\"modal-title\">图片预览</span>\n <button class=\"modal-close\" @click=${() => this._closeImageViewer()}>&#x2715;</button>\n </div>\n <div class=\"modal-body\">\n <div class=\"media-stage\"><img src=${current} alt=\"resource-preview\" /></div>\n </div>\n <div class=\"modal-footer\">\n <div class=\"media-footer\">\n <span class=\"muted-text\">${this._imageViewerIndex + 1} / ${images.length}</span>\n <div class=\"group\">\n ${images.length > 1 ? html`<button @click=${() => this._moveImage(-1)}>上一张</button>` : ''}\n ${images.length > 1 ? html`<button @click=${() => this._moveImage(1)}>下一张</button>` : ''}\n <button class=\"primary\" @click=${() => this._closeImageViewer()}>关闭</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n `\n }\n\n private _renderVideoViewer() {\n const video = this._videoResource()\n if (!this._videoViewerOpen || !video?.url) { return '' }\n return html`\n <div class=\"modal-backdrop\" @click=${() => this._closeVideoViewer()}>\n <div class=\"modal\" @click=${(e: Event) => e.stopPropagation()}>\n <div class=\"modal-header\">\n <span class=\"modal-title\">视频预览</span>\n <button class=\"modal-close\" @click=${() => this._closeVideoViewer()}>&#x2715;</button>\n </div>\n <div class=\"modal-body\">\n <div class=\"media-stage\">\n <video src=${video.url} controls playsinline></video>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"primary\" @click=${() => this._closeVideoViewer()}>关闭</button>\n </div>\n </div>\n </div>\n `\n }\n\n private async _save(e?: Event) {\n e?.stopImmediatePropagation()\n const decision = resolveSingleSaveDecision({\n errors: this.validate(),\n hasShownCorrectHint: this._hasShownCorrectHint,\n shouldShowCorrectHint: this._shouldShowCorrectHint(),\n })\n\n if (decision.kind === 'error') {\n showSubjectToast(decision.error.message)\n return\n }\n\n const nextDialogState = applySingleSaveDecisionToDialogs(this._dialogState(), decision)\n this._applyDialogState(nextDialogState)\n\n if (decision.kind !== 'save') {\n return\n }\n await this._finalizeSave()\n }\n\n private _renderPreview() {\n const typeSuffix = this.type === 'single'\n ? '(单选题)'\n : `(${this._titlePlaceholder}${leastAnswerCountSuffix(normalizeLeastAnswerCount(this['least-answer-count'], this.type), this.type)})`\n const answers = this['answer-list'] as SingleAnswer[]\n const previewTitle = buildSubjectPreviewTitle(this['subject-prefix'], this['order-index'], (this as any).title || '')\n return html`\n <div class=\"preview\">\n <div class=\"preview-header\">\n <div class=\"preview-title-row\">\n <span class=\"title\">${previewTitle}</span>\n <span class=\"preview-type\">${typeSuffix.replace(/[()]/g, '')}</span>\n </div>\n ${this['show-rich-text'] && this['rich-text-content'] ? html`<div class=\"rich-text\" .innerHTML=${this['rich-text-content']}></div>` : ''}\n </div>\n <div class=\"preview-answer\">\n ${answers.map((a, i) => html`\n <div class=\"radio\">\n <input type=\"${this.type === 'sort' ? 'checkbox' : 'radio'}\" .checked=${!!a.isCorrect} disabled />\n <span class=\"order\">${this._label(i)}.</span>\n <div class=\"answer-main\">\n <span class=\"answer-text\">${a.title}</span>\n ${this.type !== 'sort' && a.isCorrect ? html`<span class=\"correct\">推荐 / 正确选项</span>` : ''}\n </div>\n ${this.type !== 'sort' && (\n this['exam-answer-relation-type'] === 1\n || this['exam-answer-relation-type'] === 2\n )\n ? html`\n <div class=\"answer-meta\">\n ${this['exam-answer-relation-type'] === 1\n ? html`<span class=\"result-info\">${a.resultItem ? '已设置结果项' : '未设置结果项'}</span>`\n : ''}\n ${this['exam-answer-relation-type'] === 2\n ? html`<span class=\"result-info\">${Array.isArray(a.answerRelations) && a.answerRelations.length ? `关联了${this._relationLength(a.answerRelations)}项` : '未设置关联'}</span>`\n : ''}\n </div>\n `\n : ''}\n </div>\n `)}\n </div>\n ${this['show-category'] && this._categoryId\n ? html`<div class=\"section-row\"><span class=\"value-text\">分类:${resolveSubjectCategoryLabel(this['category-list'], this._categoryId)}</span></div>`\n : ''}\n ${this['show-resource'] ? this._renderResourceSection() : ''}\n </div>\n `\n }\n\n private _renderSorting() {\n const title = trimText(this['is-edit'] ? this._title : (this as any).title || '') || '未命名题目'\n const orderText = buildSubjectSortingTitle(this['subject-prefix'], this['order-index'], title)\n return renderSortingCard(orderText, SubjectTypeLabel[this.type] || this.type)\n }\n\n private _renderEdit() {\n return html`\n <div class=\"edit-form\">\n <div class=\"edit-row\">\n <div class=\"label\"><span>题目:</span></div>\n <div class=\"row-body\">\n <div class=\"el-input search-wrap\">\n <textarea rows=\"2\" .value=${this._title}\n maxlength=${this.TITLE_MAX}\n @input=${(e: Event) => this._onTitleInput(e)}\n placeholder=\"【${this._titlePlaceholder}】请输入问题\"></textarea>\n <span class=\"char-counter\">${this._title.length}/${this.TITLE_MAX}</span>\n ${this._renderSearchDropdown()}\n </div>\n </div>\n </div>\n\n ${['multiple', 'sort'].includes(this.type)\n ? html`\n <div class=\"edit-row section-row\">\n <div class=\"label\"><span>设置:</span></div>\n <div class=\"row-body\">\n <select class=\"el-select\" .value=${this._leastAnswerCount === null ? '' : String(this._leastAnswerCount)} ?disabled=${this.lockAnswerKey}\n @change=${(e: Event) => {\n const value = (e.target as HTMLSelectElement).value\n this._leastAnswerCount = normalizeLeastAnswerCount(value, this.type)\n }}>\n <option value=\"\">至少选择几项</option>\n ${Array.from({ length: Math.max(0, this._answers.length - 1) }, (_, i) => i + 2).map(n => html`\n <option value=${n} ?selected=${this._leastAnswerCount === n}>至少选择${n}项</option>\n `)}\n </select>\n </div>\n </div>\n `\n : ''}\n\n <div class=\"edit-row section-row edit-row--compact\">\n <div class=\"label\"><span>${this.type === 'sort' ? '排序项:' : '选项:'}</span></div>\n <div class=\"row-body\">\n <div class=\"answer-list\">\n ${this._answers.map((a, i) => html`\n <div class=\"answer-item\">\n <span class=\"label\">${this._label(i)}.</span>\n <div class=\"input\">\n <input type=\"text\" .value=${a.title}\n maxlength=${this.ANSWER_MAX}\n @input=${(e: Event) => this._onAnswerInput(e, i)}\n placeholder=\"选项${this._label(i)}\" />\n <span class=\"char-counter\">${a.title.length}/${this.ANSWER_MAX}</span>\n </div>\n\n ${this.type === 'sort' && this._getSortOrder(i) !== null\n ? html`<span class=\"sort-badge\">第${this._getSortOrder(i)}位</span>`\n : ''}\n\n ${['single', 'multiple'].includes(this.type)\n ? html`\n <label class=\"correct ${a.isCorrect ? 'is-correct' : ''}\">\n <input type=\"checkbox\" .checked=${a.isCorrect} ?disabled=${this.lockAnswerKey}\n @change=${(e: Event) => this._setCorrect(i, (e.target as HTMLInputElement).checked)} />\n <span class=\"correct-text\">推荐/正确选项</span>\n </label>\n `\n : ''}\n\n <span class=\"icon\"\n @click=${() => this._addAnswer(i)}>\n ${iconPlus}\n </span>\n <span class=\"icon ${this._answers.length < 3 ? 'disabled' : ''}\"\n @click=${() => this._deleteAnswer(i)}>\n ${iconRemove}\n </span>\n\n ${this['exam-answer-relation-type'] === 1 && this.type !== 'sort'\n ? html`\n <slot name=${this._resultSlotName(i)}>\n <button class=\"el-link\" @click=${() => this._emitEditResultItem(a, i)}>\n ${a.resultItem ? '编辑结果' : '添加结果'}\n </button>\n </slot>\n `\n : ''}\n\n ${this['exam-answer-relation-type'] === 2 && this.type !== 'sort'\n ? html`\n <button class=\"el-link\" @click=${() => this._setRelation(a, i)}>\n ${Array.isArray(a.answerRelations) && a.answerRelations.length ? `关联了${this._relationLength(a.answerRelations)}项` : '关联检查'}\n </button>\n `\n : ''}\n\n </div>\n `)}\n </div>\n </div>\n </div>\n\n ${this.type === 'sort'\n ? html`\n <div class=\"edit-row section-row\">\n <div class=\"label\"><span>排序答案:</span></div>\n <div class=\"row-body\">\n <div class=\"multi-select-wrapper\">\n <div class=\"multi-select ${this._sortDropdownOpen ? 'focused' : ''} ${this.lockAnswerKey ? 'disabled' : ''}\"\n @click=${() => { if (!this.lockAnswerKey) { this._sortDropdownOpen = !this._sortDropdownOpen; this.requestUpdate() } }}>\n ${this._orderList.length > 0\n ? this._orderList.map(l => html`\n <span class=\"tag\">\n ${l}\n <span class=\"tag-close\" @click=${(e: Event) => {\n if (this.lockAnswerKey) { return }\n e.stopPropagation()\n this._removeSortItem(l)\n }}>&#x2715;</span>\n </span>\n `)\n : html`<span class=\"placeholder\">请按顺序选择排序答案</span>`\n }\n <span class=\"arrow\">${iconArrow}</span>\n </div>\n ${this._sortDropdownOpen\n ? html`\n <div class=\"multi-select-dropdown\">\n ${this._answers.map((_, i) => html`\n <div class=\"multi-select-option ${this._orderList.includes(this._label(i)) ? 'selected' : ''}\"\n @click=${() => {\n if (this.lockAnswerKey) { return }\n this._toggleSortItem(this._label(i))\n this.requestUpdate()\n }}>\n ${this._label(i)}\n </div>\n `)}\n </div>\n `\n : ''}\n </div>\n </div>\n </div>\n `\n : ''}\n\n <slot name=\"business-tag\"></slot>\n\n ${this._renderCategorySection()}\n\n ${this._renderAiSection()}\n\n ${this._renderResourceSection()}\n\n ${this['show-rich-text'] && this._showRichText\n ? html`\n <div class=\"edit-row section-row\">\n <div class=\"label\"><span>副文本:</span></div>\n <div class=\"row-body\">\n <slot name=\"sub-text\">\n <qxs-blocksuite-editor\n .content=${this._richText}\n .toolbar=${SUB_TEXT_EDITOR_TOOLBAR}\n .upload-image=${this['upload-image']}\n ?is-edit=${true}\n @input=${(e: CustomEvent) => { this._richText = (e.target as any).getContent() }}\n ></qxs-blocksuite-editor>\n </slot>\n ${!this['show-action']\n ? html`<div class=\"flex-justify-end\" style=\"margin-top:8px\"><span class=\"el-link danger\" @click=${() => { this._showRichText = false; this._richText = '' }}>删除富文本</span></div>`\n : ''}\n </div>\n </div>\n `\n : ''}\n\n ${this['show-analysis']\n ? html`\n <div class=\"edit-row section-row\">\n <div class=\"label\"><span>解析:</span></div>\n <div class=\"row-body\">\n <textarea rows=\"2\" .value=${this._analysis}\n @input=${(e: Event) => { this._analysis = (e.target as HTMLTextAreaElement).value }}\n placeholder=\"请输入题目解析\"></textarea>\n </div>\n </div>\n `\n : ''}\n </div>\n `\n }\n\n render() {\n if (this.sorting) {\n return this._renderSorting()\n }\n\n const content = this['is-edit']\n ? html`<div slot=\"edit\">${this._renderEdit()}</div>`\n : html`<div slot=\"preview\">${this._renderPreview()}</div>`\n\n return html`\n <qxs-subject-layout .show-edit=${this['is-edit']}>\n ${content}\n ${this['show-action']\n ? html`\n <qxs-subject-action\n .is-edit=${this['is-edit']}\n .is-set=${this['is-set']}\n .show-add=${this['show-add']}\n .show-rich-text=${this['show-rich-text'] && this._showRichText}\n .hide-add-rich-text=${!this['show-rich-text'] || this['hide-add-rich-text']}\n .show-delete-action=${this['show-delete-action']}\n .show-save-action=${this['show-save-action']}\n .show-jump=${this['show-jump']}\n @delete=${() => this._emit('delete')}\n @save=${this._save}\n @edit=${() => this._emit('edit')}\n @move=${(e: CustomEvent) => this._emit('move', e.detail)}\n @jump=${() => this._emit('jump', {\n customId: this['custom-id'] || '',\n examId: this['exam-id'] || 0,\n answerType: this.type,\n })}\n @add=${(e: CustomEvent) => this._emit('add', e.detail)}\n @on-show-rich-text=${() => {\n this._showRichText = !this._showRichText\n if (!this._showRichText) {\n this._richText = ''\n }\n }}\n ></qxs-subject-action>\n `\n : ''}\n <slot name=\"action\"></slot>\n </qxs-subject-layout>\n ${this._renderCorrectHintDialog()}\n ${this._renderChangeTypeDialog()}\n ${this._renderImageViewer()}\n ${this._renderVideoViewer()}\n `\n }\n}\n\nexport function register() {}\n"],"names":["iconPlus","html","iconRemove","iconArrow","QxsSubjectSingle","LitElement","file","resolve","reject","reader","e","path","wrapper","searchWrap","v","normalizeSingleAnswerList","changed","item","state","includeOrderList","buildSingleEditorState","index","resolveSingleOrderList","name","detail","emitSubjectEvent","query","keyword","hasSingleSearchSource","currentToken","result","searchSingleSubjects","error","showSubjectToast","selectedTitle","buildSingleSearchSelection","emitSubjectModelValue","applySingleAiAnswer","value","answerIndex","answer","uid","current","relations","countSingleRelationAnswers","getSubjectImageResources","getSubjectVideoResource","step","images","i","answerIndexOrAnswer","val","setSingleCorrectState","el","idx","updateSingleAnswerTitle","insertSingleAnswerAfter","deleteSingleAnswerAt","letter","toggleSingleSortLetter","removeSingleSortLetter","getSingleSortOrder","resolveSingleSortAnswerValue","orderList","buildSingleSnapshot","answerType","snapshot","errors","isSetCorrectAnswer","validateSingleSnapshot","serializeSingleSnapshot","shouldShowSingleCorrectHint","data","err","resultItem","customAnswerId","answerRelations","dismissSingleCorrectHintDialog","acknowledgeSingleCorrectHint","dismissSingleChangeTypeDialog","resolveSubjectCategoryLabel","video","src","decision","resolveSingleSaveDecision","nextDialogState","applySingleSaveDecisionToDialogs","typeSuffix","leastAnswerCountSuffix","normalizeLeastAnswerCount","answers","previewTitle","buildSubjectPreviewTitle","title","trimText","orderText","buildSubjectSortingTitle","renderSortingCard","SubjectTypeLabel","_","n","a","l","SUB_TEXT_EDITOR_TOOLBAR","content","sortingCardStyles","subjectHostStyles","subjectControlResetStyles","subjectPreviewBaseStyles","subjectFormBaseStyles","subjectTextareaStyles","css","__decorateClass","property","safeCustomElement"],"mappings":"2qBAkBA,MAAMA,EAAWC,EAAAA,+NACXC,EAAaD,EAAAA,yLACbE,EAAYF,EAAAA,sLAGLG,QAAAA,iBAAN,cAA+BC,EAAAA,UAAW,CAA1C,aAAA,CAAA,MAAA,GAAA,SAAA,EA6QiD,KAAA,aAAA,EAAgB,EAEnB,KAAA,SAAA,EAAY,GACZ,KAAA,SAAA,EAAY,GACb,KAAA,QAAA,EAAW,GACI,KAAA,uBAAA,EAA0B,GAChC,KAAA,cAAgB,GACzB,KAAA,QAAA,EAAW,GACN,KAAA,aAAA,EAAgB,GACnB,KAAA,UAAA,EAAa,GACH,KAAA,oBAAA,EAAuB,GAC3B,KAAA,gBAAA,EAAmB,GACf,KAAA,oBAAA,EAAuB,GACzB,KAAA,kBAAA,EAAqB,GACrC,KAAA,QAAU,GACS,KAAA,qBAAA,EAAwB,GACnC,KAAA,UAAA,EAAa,GACR,KAAA,eAAA,EAAkB,GAClB,KAAA,KAAmB,SAChB,KAAA,mBAAA,EAAsB,EACd,KAAA,2BAAA,EAA8B,EACtC,KAAA,mBAAA,EAAsB,GACtD,KAAA,SAAW,GACsB,KAAA,oBAAA,EAAsC,KAC7C,KAAA,aAAA,EAAgB,GAClB,KAAA,WAAA,EAAc,GAChB,KAAA,SAAA,EAAY,EACR,KAAA,aAAA,EAAgB,GACf,KAAA,cAAA,EAAkD,MAAOC,GACvG,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,MAAMC,EAAS,IAAI,WACnBA,EAAO,OAASC,GAAKH,EAAQG,EAAE,QAAQ,MAAgB,EACvDD,EAAO,QAAUD,EACjBC,EAAO,cAAcH,CAAI,CAC3B,CAAC,EAqB+C,KAAA,UAAA,EAAwB,CAAA,EAMnB,KAAA,eAAA,EAA8B,CAAA,EAMjC,KAAA,WAAA,EAAc,GAMX,KAAA,eAAA,EAA8B,CAAA,EAOjC,KAAA,UAAA,EAAa,GAOR,KAAA,eAAA,EAAkB,GAOxB,KAAA,SAAA,EAAY,GAON,KAAA,eAAA,EAAkB,GAOtB,KAAA,WAAA,EAAc,GAOf,KAAA,UAAA,EAAa,GAMZ,KAAA,YAAA,EAAe,GAYd,KAAA,aAAA,EAAgB,GACjB,KAAA,WAAA,EAAc,GAE1D,KAAQ,SAA2B,CAC1C,CAAE,MAAO,GAAI,UAAW,EAAA,EAAS,CAAE,MAAO,GAAI,UAAW,EAAA,EACzD,CAAE,MAAO,GAAI,UAAW,EAAA,EAAS,CAAE,MAAO,GAAI,UAAW,EAAA,CAAM,EAGrC,KAAA,MAAQ,GAE3B,KAAQ,OAAS,GACjB,KAAQ,UAAY,GACpB,KAAQ,UAAY,GACpB,KAAQ,cAAgB,GACxB,KAAQ,kBAAmC,KAC3C,KAAQ,iBAAmB,EAC3B,KAAQ,OAAS,GACjB,KAAQ,WAAuB,CAAA,EAC/B,KAAQ,iBAA8B,CAAA,EACtC,KAAQ,YAAc,GACtB,KAAQ,eAAiC,CAAA,EACzC,KAAQ,YAAc,GACtB,KAAQ,eAAiB,GACzB,KAAQ,kBAAoB,GAC5B,KAAQ,iBAAmB,GAC3B,KAAQ,kBAAoB,EAC5B,KAAQ,iBAAmB,GAC3B,KAAQ,uBAAyB,GACjC,KAAQ,qBAAuB,GAC/B,KAAQ,sBAAwB,GAEzC,KAAQ,aAA8B,KACtC,KAAQ,aAAe,EAEvB,KAAiB,UAAY,IAC7B,KAAiB,WAAa,IAiB9B,KAAQ,qBAAwB,GAAkB,CAChD,MAAMK,EAAO,EAAE,aAAA,EACTC,EAAU,KAAK,YAAY,cAAc,uBAAuB,EAChEC,EAAa,KAAK,YAAY,cAAc,cAAc,EAC5DD,GAAW,CAACD,EAAK,SAASC,CAAO,IACnC,KAAK,kBAAoB,IAEvBC,GAAc,CAACF,EAAK,SAASE,CAAU,IACzC,KAAK,YAAc,IAErB,KAAK,cAAA,CACP,CAAA,CA9JA,GAAI,eAAgB,CAAE,OAAO,KAAK,QAAS,CAE3C,GAAI,cAAcC,EAAQ,CAEpB,KAAK,SAAS,IAGlB,KAAK,SAAWC,EAAAA,0BAA0BD,CAAC,EAC3C,KAAK,cAAc,aAAa,EAClC,CA2HA,mBAAoB,CAClB,MAAM,kBAAA,EACN,SAAS,iBAAiB,QAAS,KAAK,oBAAoB,EAC5D,KAAK,mBAAA,CACP,CAEA,sBAAuB,CACrB,MAAM,qBAAA,EACN,SAAS,oBAAoB,QAAS,KAAK,oBAAoB,EAC3D,KAAK,eACP,OAAO,aAAa,KAAK,YAAY,EACrC,KAAK,aAAe,KAExB,CAeA,WAAWE,EAA+B,CACpCA,EAAQ,IAAI,SAAS,GAAK,KAAK,SAAS,GAAK,KAAK,WAAA,EAClD,CAAC,KAAK,SAAS,IAAMA,EAAQ,IAAI,OAAO,GAAKA,EAAQ,IAAI,aAAa,GAAKA,EAAQ,IAAI,UAAU,GAAKA,EAAQ,IAAI,oBAAoB,GAAKA,EAAQ,IAAI,mBAAmB,GAAKA,EAAQ,IAAI,UAAU,GAAKA,EAAQ,IAAI,aAAa,GAAKA,EAAQ,IAAI,mBAAmB,IACzQ,KAAK,mBAAA,EAEHA,EAAQ,IAAI,QAAQ,IACtB,KAAK,OAAS,KAAK,QAAQ,GAEzBA,EAAQ,IAAI,UAAU,IACxB,KAAK,iBAAmB,MAAM,QAAQ,KAAK,UAAU,CAAC,EAAI,KAAK,UAAU,EAAE,IAAIC,IAAS,CAAE,GAAGA,CAAA,EAAO,EAAI,CAAA,GAEtGD,EAAQ,IAAI,aAAa,IAC3B,KAAK,YAAc,KAAK,aAAa,EAAI,OAAO,KAAK,aAAa,CAAC,EAAI,KAErEA,EAAQ,IAAI,aAAa,GAAKA,EAAQ,IAAI,aAAa,IAAK,KAAK,gBAAA,EACjEA,EAAQ,IAAI,aAAa,GAAK,KAAK,WAAW,IAChD,KAAK,OAAS,KAAK,aAAa,EAEpC,CAEQ,kBAAkBE,EAA0B,CAClD,KAAK,OAASA,EAAM,MACpB,KAAK,UAAYA,EAAM,SACvB,KAAK,kBAAoBA,EAAM,iBAC/B,KAAK,iBAAmBA,EAAM,gBAC9B,KAAK,OAASA,EAAM,MACpB,KAAK,iBAAmBA,EAAM,gBAC9B,KAAK,YAAcA,EAAM,WACzB,KAAK,UAAYA,EAAM,SACvB,KAAK,cAAgBA,EAAM,aACvBA,EAAM,UACR,KAAK,SAAWA,EAAM,SAEpBA,EAAM,YACR,KAAK,WAAaA,EAAM,UAE5B,CAEQ,kBAAkBC,EAAmB,GAAO,CAClD,OAAOC,yBAAuB,CAC5B,WAAY,KAAK,KACjB,MAAO,KAAK,MACZ,SAAU,KAAK,SACf,iBAAkB,KAAK,oBAAoB,EAC3C,gBAAiB,KAAK,mBAAmB,EACzC,MAAO,KAAK,QAAQ,EACpB,QAAS,KAAK,UAAU,EACxB,WAAY,KAAK,aAAa,EAC9B,gBAAiB,KAAK,mBAAmB,EACzC,WAAY,KAAK,aAAa,EAC9B,WAAY,KAAK,aAAa,EAC9B,cAAgBC,GAAU,KAAK,OAAOA,CAAK,EAC3C,iBAAAF,CAAA,CACD,CACH,CAEQ,oBAAqB,CAC3B,KAAK,kBAAkB,KAAK,mBAAmB,CACjD,CAEQ,YAAa,CACnB,KAAK,kBAAkB,KAAK,kBAAkB,EAAI,CAAC,CACrD,CAEQ,iBAAkB,CACpB,CAAC,KAAK,aAAa,GAAK,CAAC,KAAK,aAAa,GAAG,SAClD,KAAK,WAAaG,yBAAuB,CACvC,WAAY,KAAK,aAAa,EAC9B,QAAS,KAAK,aAAa,EAC3B,cAAgBD,GAAU,KAAK,OAAOA,CAAK,CAAA,CAC5C,EACH,CAEQ,MAAME,EAAcC,EAAkB,CAC5CC,mBAAiB,KAAMF,EAAMC,CAAM,CACrC,CAEQ,aAAaE,EAAe,CAC9B,KAAK,eACP,OAAO,aAAa,KAAK,YAAY,EACrC,KAAK,aAAe,MAEtB,MAAMC,EAAUD,EAAM,KAAA,EACtB,GAAI,CAACC,GAAW,CAACC,wBAAsB,KAAK,YAAY,EAAG,KAAK,gBAAgB,CAAC,EAAG,CAClF,KAAK,eAAiB,CAAA,EACtB,KAAK,YAAc,GACnB,KAAK,eAAiB,GACtB,MACF,CACA,KAAK,aAAe,OAAO,WAAW,IAAM,CACrC,KAAK,WAAWD,CAAO,CAC9B,EAAG,GAAG,CACR,CAEA,MAAc,WAAWD,EAAe,CACtC,MAAMG,EAAe,EAAE,KAAK,aAC5B,KAAK,eAAiB,GACtB,KAAK,YAAc,GACnB,KAAK,cAAA,EACL,GAAI,CACF,MAAMC,EAAS,MAAMC,uBAAqB,CACxC,WAAY,KAAK,KACjB,MAAAL,EACA,UAAW,KAAK,YAAY,EAC5B,cAAe,KAAK,gBAAgB,CAAA,CACrC,EACD,GAAIG,IAAiB,KAAK,aAAgB,OAC1C,KAAK,eAAiBC,CACxB,OACOE,EAAY,CACjB,GAAIH,IAAiB,KAAK,aAAgB,OAC1C,KAAK,eAAiB,CAAA,EACtBI,mBAAiBD,GAAO,SAAW,QAAQ,CAC7C,QAAA,CAEMH,IAAiB,KAAK,eACxB,KAAK,eAAiB,GACtB,KAAK,cAAA,EAET,CACF,CAEQ,oBAAoBZ,EAAoB,CAC9C,KAAM,CAAE,cAAAiB,EAAe,OAAAV,GAAWW,EAAAA,2BAA2BlB,EAAM,KAAK,WAAW,GAAK,EAAE,EAC1F,KAAK,OAASiB,EACd,KAAK,eAAiB,CAAA,EACtB,KAAK,YAAc,GACf,KAAK,WAAW,GAClBE,wBAAsB,KAAM,KAAK,MAAM,EAEzC,KAAK,MAAM,eAAgBZ,CAAM,CACnC,CAEQ,gBAAiB,CACvB,GAAI,CAAC,KAAK,WAAW,GAAG,OAAQ,CAC9BS,EAAAA,iBAAiB,YAAY,EAC7B,MACF,CACA,MAAMH,EAASO,EAAAA,oBAAoB,CACjC,QAAS,KAAK,SACd,SAAU,KAAK,WAAW,EAC1B,WAAY,KAAK,IAAA,CAClB,EACD,GAAI,CAACP,EAAO,aAAc,CACxBG,EAAAA,iBAAiB,sBAAsB,EACvC,MACF,CACA,KAAK,SAAWH,EAAO,OACzB,CAEQ,kBAAkBQ,EAAe,CACvC,KAAK,YAAcA,EACnB,KAAK,MAAM,kBAAmB,CAC5B,MAAAA,EACA,SAAU,KAAK,WAAW,GAAK,GAC/B,OAAQ,KAAK,SAAS,GAAK,CAAA,CAC5B,CACH,CAEQ,aAAarB,EAAoBsB,EAAqB,CAC5D,MAAMC,EAASvB,EAAK,eAChB,CAAE,GAAGA,CAAA,EACL,CAAE,GAAGA,EAAM,eAAgBA,EAAK,UAAYwB,EAAAA,KAAI,EACpD,KAAK,SAAW,KAAK,SAAS,IAAI,CAACC,EAASrB,IAAUA,IAAUkB,EAAcC,EAASE,CAAO,EAC9F,KAAK,cAAA,EACL,KAAK,MAAM,eAAgB,CACzB,SAAU,KAAK,WAAW,GAAK,GAC/B,OAAQ,KAAK,SAAS,GAAK,EAC3B,YAAAH,EACA,OAAAC,CAAA,CACD,CACH,CAEQ,gBAAgBG,EAAmB,GAAI,CAC7C,OAAOC,EAAAA,2BAA2BD,CAAS,CAC7C,CAEQ,oBAAoB1B,EAAoBsB,EAAqB,CACnE,KAAK,MAAM,mBAAoB,CAC7B,SAAU,KAAK,WAAW,GAAK,GAC/B,OAAQ,KAAK,SAAS,GAAK,EAC3B,YAAAA,EACA,OAAQ,CAAE,GAAGtB,CAAA,EACb,WAAYA,EAAK,YAAc,EAAA,CAChC,CACH,CAEQ,gBAAgBI,EAAe,CACrC,MAAO,wBAAwBA,CAAK,EACtC,CAEQ,iBAAkB,CACxB,OAAOwB,2BAAyB,KAAK,eAAe,GAAK,CAAA,CAAE,CAC7D,CAEQ,gBAAiB,CACvB,OAAOC,0BAAwB,KAAK,eAAe,GAAK,CAAA,CAAE,CAC5D,CAEQ,iBAAiBzB,EAAQ,EAAG,CAC7B,KAAK,gBAAA,EAAkB,SAC5B,KAAK,kBAAoBA,EACzB,KAAK,iBAAmB,GAC1B,CAEQ,mBAAoB,CAC1B,KAAK,iBAAmB,EAC1B,CAEQ,WAAW0B,EAAc,CAC/B,MAAMC,EAAS,KAAK,gBAAA,EACfA,EAAO,SACZ,KAAK,mBAAqB,KAAK,kBAAoBD,EAAOC,EAAO,QAAUA,EAAO,OACpF,CAEQ,kBAAmB,CACpB,KAAK,eAAA,GAAkB,MAC5B,KAAK,iBAAmB,GAC1B,CAEQ,mBAAoB,CAC1B,KAAK,iBAAmB,EAC1B,CAEQ,OAAOC,EAAW,CAAE,OAAO,OAAO,aAAa,GAAKA,CAAC,CAAE,CAE/D,IAAY,mBAAoB,CAC9B,OAAO,KAAK,OAAS,SAAW,MAAQ,KAAK,OAAS,WAAa,MAAQ,KAC7E,CAEQ,YAAYC,EAA4CC,EAAc,CAC5E,GAAI,KAAK,cAAiB,OAC1B,MAAMZ,EAAc,OAAOW,GAAwB,SAC/CA,EACA,KAAK,SAAS,QAAQA,CAAmB,EACzCX,EAAc,IAClB,KAAK,SAAWa,EAAAA,sBAAsB,KAAK,SAAU,KAAK,KAAMb,EAAaY,CAAG,EAClF,CAEQ,cAAc,EAAU,CAC9B,MAAME,EAAK,EAAE,OACTA,EAAG,MAAM,OAAS,KAAK,YAAaA,EAAG,MAAQA,EAAG,MAAM,MAAM,EAAG,KAAK,SAAS,GACnF,KAAK,OAASA,EAAG,MACjB,KAAK,aAAa,KAAK,MAAM,EAEzB,KAAK,WAAW,GAClBjB,wBAAsB,KAAM,KAAK,MAAM,CAE3C,CAEQ,eAAe,EAAUkB,EAAa,CAC5C,MAAMD,EAAK,EAAE,OACTA,EAAG,MAAM,OAAS,KAAK,aAAcA,EAAG,MAAQA,EAAG,MAAM,MAAM,EAAG,KAAK,UAAU,GACrF,KAAK,SAAWE,EAAAA,wBAAwB,KAAK,SAAUD,EAAKD,EAAG,MAAO,KAAK,UAAU,CACvF,CAEQ,WAAWhC,EAAe,CAChC,KAAK,SAAWmC,0BAAwB,KAAK,SAAUnC,EAAO,IAAMoB,EAAAA,KAAK,CAC3E,CAEQ,cAAcpB,EAAe,CACnC,KAAK,SAAWoC,EAAAA,qBAAqB,KAAK,SAAUpC,CAAK,CAC3D,CAEQ,gBAAgBqC,EAAgB,CACtC,KAAK,WAAaC,EAAAA,uBAAuB,KAAK,WAAYD,CAAM,CAClE,CAEQ,gBAAgBA,EAAgB,CACtC,KAAK,WAAaE,EAAAA,uBAAuB,KAAK,WAAYF,CAAM,CAClE,CAEQ,cAAcrC,EAA8B,CAClD,OAAOwC,EAAAA,mBAAmB,KAAK,WAAY,KAAK,OAAOxC,CAAK,CAAC,CAC/D,CAEQ,iBAAiBqC,EAAgB,CACvC,OAAOI,+BAA6BJ,EAAQ,KAAK,QAAQ,CAC3D,CAEQ,UAAW,CACjB,MAAO,CACL,SAAU,KAAK,WAAW,GAAK,OAC/B,WAAY,KAAK,KACjB,WAAY,KAAK,aAAa,CAAA,CAElC,CAEQ,cAAkC,CACxC,MAAO,CACL,sBAAuB,KAAK,uBAC5B,qBAAsB,KAAK,sBAC3B,oBAAqB,KAAK,oBAAA,CAE9B,CAEQ,kBAAkBxC,EAA0B,CAClD,KAAK,uBAAyBA,EAAM,sBACpC,KAAK,sBAAwBA,EAAM,qBACnC,KAAK,qBAAuBA,EAAM,mBACpC,CAEQ,kBAAmC,CACzC,MAAM6C,EAAY,KAAK,SAAS,EAC5B,CAAC,GAAG,KAAK,UAAU,EACnBzC,yBAAuB,CACrB,WAAY,KAAK,aAAa,EAC9B,QAAS,KAAK,aAAa,EAC3B,cAAgBD,GAAU,KAAK,OAAOA,CAAK,CAAA,CAC5C,EAEL,OAAO2C,sBAAoB,CACzB,WAAY,KAAK,KACjB,MAAO,KAAK,SAAS,EAAI,KAAK,OAAU,KAAa,OAAS,GAC9D,QAAS,KAAK,SAAS,EAAI,KAAK,SAAW,KAAK,aAAa,GAAK,CAAA,EAClE,SAAU,KAAK,SAAS,EAAI,KAAK,UAAY,KAAK,UAAY,GAC9D,iBAAkB,KAAK,SAAS,EAAI,KAAK,kBAAoB,KAAK,oBAAoB,EACtF,gBAAiB,KAAK,iBACtB,WAAY,KAAK,SAAS,EAAI,GAAM,KAAK,aAAa,GAAK,GAC3D,aAAc,KAAK,SAAS,EAAI,KAAK,cAAgB,CAAC,CAAC,KAAK,mBAAmB,EAC/E,SAAU,KAAK,SAAS,EAAI,KAAK,UAAY,KAAK,mBAAmB,GAAK,GAC1E,UAAAD,EACA,gBAAiB,KAAK,SAAS,EAAKL,GAAmB,KAAK,iBAAiBA,CAAM,EAAI,MAAA,CACxF,CACH,CAEQ,WAAWO,EAAyB,KAAK,KAAM,CACrD,MAAMC,EAAW,KAAK,iBAAA,EAChB,CAAE,OAAAC,EAAQ,mBAAAC,GAAuBC,EAAAA,uBAAuBH,EAAUD,EAAY,KAAK,UAAU,EACnG,GAAIE,EAAO,OACT,MAAMA,EAAO,CAAC,EAEhB,OAAOG,EAAAA,wBAAwBJ,EAAU,CACvC,WAAAD,EACA,mBAAAG,EACA,uBAAwB,KAAK,2BAA2B,EACxD,SAAU,KAAK,WAAW,CAAA,CAC3B,CACH,CAEQ,wBAAyB,CAC/B,OAAOG,8BAA4B,CACjC,WAAY,KAAK,KACjB,QAAS,KAAK,SACd,UAAW,KAAK,UAAA,CACjB,CACH,CAEA,MAAc,eAAgB,CAC5B,GAAI,CACF,MAAMC,EAAO,MAAM,KAAK,OAAA,EACxB,KAAK,MAAM,OAAQA,CAAI,CACzB,OACOC,EAAU,CACfxC,EAAAA,iBAAiBwC,EAAI,OAAO,CAC9B,CACF,CAEA,MAAM,QAAuB,CAC3B,OAAO,QAAQ,QAAQ,KAAK,WAAA,CAAY,CAC1C,CAEA,UAA2B,CACzB,OAAOJ,EAAAA,uBAAuB,KAAK,mBAAoB,KAAK,KAAM,KAAK,SAAA,CAAU,EAAE,MACrF,CAEA,cAAc9B,EAAqBmC,EAAoB,CACjDnC,EAAc,GAAKA,GAAe,KAAK,SAAS,SAGpD,KAAK,SAAW,KAAK,SAAS,IAAI,CAACC,EAAQnB,IAAUA,IAAUkB,EAC3D,CAAE,GAAGC,EAAQ,WAAYkC,GAAc,EAAA,EACvClC,CAAM,EACV,KAAK,cAAA,EACP,CAEA,kBAAkBmC,EAAwBC,EAAsB,CACzDD,IAGL,KAAK,SAAW,KAAK,SAAS,IAAKnC,GACf,OAAOA,EAAO,gBAAkBA,EAAO,UAAY,EAAE,IAClD,OAAOmC,CAAc,EACtC,CAAE,GAAGnC,EAAQ,gBAAAoC,GACbpC,CACL,EACD,KAAK,cAAA,EACP,CAEQ,0BAA2B,CACjC,OAAK,KAAK,uBACHvC,EAAAA;AAAAA,2CACgC,IAAM,CAAE,KAAK,kBAAkB4E,EAAAA,+BAA+B,KAAK,aAAA,CAAc,CAAC,CAAE,CAAC;AAAA,wDACvE,GAAa,EAAE,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAU5D,SAAY,CAC3B,KAAK,kBAAkBC,EAAAA,6BAA6B,KAAK,aAAA,CAAc,CAAC,EACxE,MAAM,KAAK,cAAA,CACb,CAAC;AAAA,6CACgC,IAAM,CAAE,KAAK,kBAAkBD,EAAAA,+BAA+B,KAAK,aAAA,CAAc,CAAC,CAAE,CAAC;AAAA;AAAA;AAAA;AAAA,MAjBnF,EAsB7C,CAEQ,yBAA0B,CAChC,OAAK,KAAK,sBACH5E,EAAAA;AAAAA,2CACgC,IAAM,CAAE,KAAK,kBAAkB8E,EAAAA,8BAA8B,KAAK,aAAA,CAAc,CAAC,CAAE,CAAC;AAAA,oCAC1F,GAAa,EAAE,iBAAiB;AAAA;AAAA;AAAA,iDAGpB,IAAM,CAAE,KAAK,kBAAkBA,EAAAA,8BAA8B,KAAK,aAAA,CAAc,CAAC,CAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAMxG,IAAM,CAAE,KAAK,kBAAkBA,EAAAA,8BAA8B,KAAK,aAAA,CAAc,CAAC,CAAE,CAAC;AAAA,6CACpE,IAAM,CACrC,GAAI,CACF,MAAMP,EAAO,KAAK,WAAW,UAAU,EACvC,KAAK,kBAAkBO,EAAAA,8BAA8B,KAAK,aAAA,CAAc,CAAC,EACzE,KAAK,MAAM,OAAQP,CAAI,CACzB,OACOxC,EAAY,CACjBC,mBAAiBD,GAAO,SAAW,MAAM,CAC3C,CACF,CAAC;AAAA;AAAA;AAAA;AAAA,MAtBiC,EA2B5C,CAEQ,uBAAwB,CAC9B,MAAI,CAAC,KAAK,SAAS,GAAM,CAAC,KAAK,aAAe,CAAC,KAAK,eAA0B,GACvE/B,EAAAA;AAAAA;AAAAA,UAED,KAAK,eACHA,+CACA,KAAK,eAAe,OAClB,KAAK,eAAe,IAAIgB,GAAQhB,EAAAA;AAAAA,gDACE,IAAM,KAAK,oBAAoBgB,CAAI,CAAC,IAAIA,EAAK,OAASA,EAAK,KAAK;AAAA,aACnG,EACChB,EAAAA,4CAA4C;AAAA;AAAA,KAGxD,CAEQ,wBAAyB,CAC/B,OAAK,KAAK,eAAe,EAClBA,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,YAIC,KAAK,SAAS,EACZA,EAAAA;AAAAA,+CACiC,OAAO,KAAK,WAAW,CAAC;AAAA,wBAC9C,GAAa,KAAK,kBAAmB,EAAE,OAA6B,KAAK,CAAC;AAAA;AAAA,gBAEnF,KAAK,eAAe,EAAE,IAAIgB,GAAQhB,EAAAA;AAAAA,gCAClB,OAAOgB,EAAK,UAAU,CAAC,cAAc,OAAOA,EAAK,UAAU,IAAM,OAAO,KAAK,WAAW,CAAC,IAAIA,EAAK,KAAK;AAAA,eACxH,CAAC;AAAA;AAAA,YAGFhB,EAAAA,gCAAgC+E,8BAA4B,KAAK,eAAe,EAAG,KAAK,WAAW,CAAC,SAAS;AAAA;AAAA;AAAA,MAflF,EAmBvC,CAEQ,kBAAmB,CACzB,MAAI,CAAC,KAAK,SAAS,GAAK,CAAC,CAAC,SAAU,UAAU,EAAE,SAAS,KAAK,IAAI,EAAY,GACvE/E,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qCAI0B,KAAK,WAAW,GAAK,IAAI;AAAA,YAClD,KAAK,SAAS,EACZA,kEAAgE,IAAM,KAAK,eAAA,CAAgB,qBAC3F,EAAE;AAAA;AAAA;AAAA,KAId,CAEQ,wBAAyB,CAC/B,GAAI,CAAC,KAAK,eAAe,EAAK,MAAO,GACrC,MAAM+C,EAAS,KAAK,gBAAA,EACdiC,EAAQ,KAAK,eAAA,EACnB,OAAOhF,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,iBAKM+C,EAAO,MAAM,KAAKiC,EAAQ,SAAW,EAAE;AAAA;AAAA;AAAA,cAG1CjC,EAAO,OAAS/C,EAAAA,oCAAoC,IAAM,KAAK,iBAAiB,CAAC,CAAC,eAAiB,EAAE;AAAA,cACrGgF,GAAO,IAAMhF,EAAAA,oCAAoC,IAAM,KAAK,iBAAA,CAAkB,eAAiB,EAAE;AAAA,cACjG,CAAC+C,EAAO,QAAU,CAACiC,GAAO,IAAMhF,EAAAA,2CAA6C,EAAE;AAAA;AAAA,YAEjF+C,EAAO,OACL/C,EAAAA;AAAAA;AAAAA,gBAEE+C,EAAO,MAAM,EAAG,CAAC,EAAE,IAAI,CAACkC,EAAK7D,IAAUpB,EAAAA;AAAAA,kDACLiF,CAAG,0BAA0B,IAAM,KAAK,iBAAiB7D,CAAK,CAAC;AAAA,eAClG,CAAC;AAAA;AAAA,YAGF,EAAE;AAAA;AAAA;AAAA,KAId,CAEQ,oBAAqB,CAC3B,GAAI,CAAC,KAAK,iBAAoB,MAAO,GACrC,MAAM2B,EAAS,KAAK,gBAAA,EACdN,EAAUM,EAAO,KAAK,iBAAiB,EAC7C,OAAKN,EACEzC,EAAAA;AAAAA,2CACgC,IAAM,KAAK,mBAAmB;AAAA,oCACpCS,GAAaA,EAAE,iBAAiB;AAAA;AAAA;AAAA,iDAGpB,IAAM,KAAK,mBAAmB;AAAA;AAAA;AAAA,gDAG/BgC,CAAO;AAAA;AAAA;AAAA;AAAA,yCAId,KAAK,kBAAoB,CAAC,MAAMM,EAAO,MAAM;AAAA;AAAA,kBAEpEA,EAAO,OAAS,EAAI/C,EAAAA,sBAAsB,IAAM,KAAK,WAAW,EAAE,CAAC,gBAAkB,EAAE;AAAA,kBACvF+C,EAAO,OAAS,EAAI/C,EAAAA,sBAAsB,IAAM,KAAK,WAAW,CAAC,CAAC,gBAAkB,EAAE;AAAA,iDACvD,IAAM,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAjBpD,EAwBzB,CAEQ,oBAAqB,CAC3B,MAAMgF,EAAQ,KAAK,eAAA,EACnB,MAAI,CAAC,KAAK,kBAAoB,CAACA,GAAO,IAAc,GAC7ChF,EAAAA;AAAAA,2CACgC,IAAM,KAAK,mBAAmB;AAAA,oCACpCS,GAAaA,EAAE,iBAAiB;AAAA;AAAA;AAAA,iDAGpB,IAAM,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA,2BAIpDuE,EAAM,GAAG;AAAA;AAAA;AAAA;AAAA,6CAIS,IAAM,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA,KAKzE,CAEA,MAAc,MAAM,EAAW,CAC7B,GAAG,yBAAA,EACH,MAAME,EAAWC,EAAAA,0BAA0B,CACzC,OAAQ,KAAK,SAAA,EACb,oBAAqB,KAAK,qBAC1B,sBAAuB,KAAK,uBAAA,CAAuB,CACpD,EAED,GAAID,EAAS,OAAS,QAAS,CAC7BlD,mBAAiBkD,EAAS,MAAM,OAAO,EACvC,MACF,CAEA,MAAME,EAAkBC,EAAAA,iCAAiC,KAAK,aAAA,EAAgBH,CAAQ,EACtF,KAAK,kBAAkBE,CAAe,EAElCF,EAAS,OAAS,QAGtB,MAAM,KAAK,cAAA,CACb,CAEQ,gBAAiB,CACvB,MAAMI,EAAa,KAAK,OAAS,SAC7B,QACA,IAAI,KAAK,iBAAiB,GAAGC,EAAAA,uBAAuBC,4BAA0B,KAAK,oBAAoB,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,IAC9HC,EAAU,KAAK,aAAa,EAC5BC,EAAeC,EAAAA,yBAAyB,KAAK,gBAAgB,EAAG,KAAK,aAAa,EAAI,KAAa,OAAS,EAAE,EACpH,OAAO3F,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,kCAIuB0F,CAAY;AAAA,yCACLJ,EAAW,QAAQ,QAAS,EAAE,CAAC;AAAA;AAAA,YAE5D,KAAK,gBAAgB,GAAK,KAAK,mBAAmB,EAAItF,2CAAyC,KAAK,mBAAmB,CAAC,UAAY,EAAE;AAAA;AAAA;AAAA,YAGtIyF,EAAQ,IAAI,CAAC,EAAGzC,IAAMhD,EAAAA;AAAAA;AAAAA,6BAEL,KAAK,OAAS,OAAS,WAAa,OAAO,cAAc,CAAC,CAAC,EAAE,SAAS;AAAA,oCAC/D,KAAK,OAAOgD,CAAC,CAAC;AAAA;AAAA,4CAEN,EAAE,KAAK;AAAA,kBACjC,KAAK,OAAS,QAAU,EAAE,UAAYhD,EAAAA,6CAA+C,EAAE;AAAA;AAAA,gBAEzF,KAAK,OAAS,SACd,KAAK,2BAA2B,IAAM,GACnC,KAAK,2BAA2B,IAAM,GAEvCA,EAAAA;AAAAA;AAAAA,sBAEI,KAAK,2BAA2B,IAAM,EACpCA,EAAAA,iCAAiC,EAAE,WAAa,SAAW,QAAQ,UACnE,EAAE;AAAA,sBACJ,KAAK,2BAA2B,IAAM,EACpCA,EAAAA,iCAAiC,MAAM,QAAQ,EAAE,eAAe,GAAK,EAAE,gBAAgB,OAAS,MAAM,KAAK,gBAAgB,EAAE,eAAe,CAAC,IAAM,OAAO,UAC1J,EAAE;AAAA;AAAA,kBAGR,EAAE;AAAA;AAAA,WAET,CAAC;AAAA;AAAA,UAEF,KAAK,eAAe,GAAK,KAAK,YAC5BA,EAAAA,4DAA4D+E,EAAAA,4BAA4B,KAAK,eAAe,EAAG,KAAK,WAAW,CAAC,gBAChI,EAAE;AAAA,UACJ,KAAK,eAAe,EAAI,KAAK,uBAAA,EAA2B,EAAE;AAAA;AAAA,KAGlE,CAEQ,gBAAiB,CACvB,MAAMa,EAAQC,EAAAA,SAAS,KAAK,SAAS,EAAI,KAAK,OAAU,KAAa,OAAS,EAAE,GAAK,QAC/EC,EAAYC,EAAAA,yBAAyB,KAAK,gBAAgB,EAAG,KAAK,aAAa,EAAGH,CAAK,EAC7F,OAAOI,EAAAA,kBAAkBF,EAAWG,EAAAA,iBAAiB,KAAK,IAAI,GAAK,KAAK,IAAI,CAC9E,CAEQ,aAAc,CACpB,OAAOjG,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,0CAM+B,KAAK,MAAM;AAAA,4BACzB,KAAK,SAAS;AAAA,yBAChB,GAAa,KAAK,cAAc,CAAC,CAAC;AAAA,gCAC5B,KAAK,iBAAiB;AAAA,2CACX,KAAK,OAAO,MAAM,IAAI,KAAK,SAAS;AAAA,gBAC/D,KAAK,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,UAKlC,CAAC,WAAY,MAAM,EAAE,SAAS,KAAK,IAAI,EACrCA,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,iDAIqC,KAAK,oBAAsB,KAAO,GAAK,OAAO,KAAK,iBAAiB,CAAC,cAAc,KAAK,aAAa;AAAA,0BAC3H,GAAa,CACtB,MAAMqC,EAAS,EAAE,OAA6B,MAC9C,KAAK,kBAAoBmD,EAAAA,0BAA0BnD,EAAO,KAAK,IAAI,CACrE,CAAC;AAAA;AAAA,kBAEC,MAAM,KAAK,CAAE,OAAQ,KAAK,IAAI,EAAG,KAAK,SAAS,OAAS,CAAC,CAAA,EAAK,CAAC6D,EAAGlD,IAAMA,EAAI,CAAC,EAAE,IAAImD,GAAKnG,EAAAA;AAAAA,kCACxEmG,CAAC,cAAc,KAAK,oBAAsBA,CAAC,QAAQA,CAAC;AAAA,iBACrE,CAAC;AAAA;AAAA;AAAA;AAAA,UAKN,EAAE;AAAA;AAAA;AAAA,qCAGuB,KAAK,OAAS,OAAS,OAAS,KAAK;AAAA;AAAA;AAAA,gBAG1D,KAAK,SAAS,IAAI,CAACC,EAAGpD,IAAMhD,EAAAA;AAAAA;AAAAA,wCAEJ,KAAK,OAAOgD,CAAC,CAAC;AAAA;AAAA,gDAENoD,EAAE,KAAK;AAAA,kCACrB,KAAK,UAAU;AAAA,+BACjB3F,GAAa,KAAK,eAAeA,EAAGuC,CAAC,CAAC;AAAA,uCAC/B,KAAK,OAAOA,CAAC,CAAC;AAAA,iDACJoD,EAAE,MAAM,MAAM,IAAI,KAAK,UAAU;AAAA;AAAA;AAAA,oBAG9D,KAAK,OAAS,QAAU,KAAK,cAAcpD,CAAC,IAAM,KAChDhD,EAAAA,iCAAiC,KAAK,cAAcgD,CAAC,CAAC,WACtD,EAAE;AAAA;AAAA,oBAEJ,CAAC,SAAU,UAAU,EAAE,SAAS,KAAK,IAAI,EACvChD,EAAAA;AAAAA,4CACsBoG,EAAE,UAAY,aAAe,EAAE;AAAA,wDACnBA,EAAE,SAAS,cAAc,KAAK,aAAa;AAAA,kCAChE3F,GAAa,KAAK,YAAYuC,EAAIvC,EAAE,OAA4B,OAAO,CAAC;AAAA;AAAA;AAAA,oBAIrF,EAAE;AAAA;AAAA;AAAA,6BAGK,IAAM,KAAK,WAAWuC,CAAC,CAAC;AAAA,sBAC/BjD,CAAQ;AAAA;AAAA,sCAEQ,KAAK,SAAS,OAAS,EAAI,WAAa,EAAE;AAAA,6BACnD,IAAM,KAAK,cAAciD,CAAC,CAAC;AAAA,sBAClC/C,CAAU;AAAA;AAAA;AAAA,oBAGZ,KAAK,2BAA2B,IAAM,GAAK,KAAK,OAAS,OACvDD,EAAAA;AAAAA,iCACW,KAAK,gBAAgBgD,CAAC,CAAC;AAAA,uDACD,IAAM,KAAK,oBAAoBoD,EAAGpD,CAAC,CAAC;AAAA,0BACjEoD,EAAE,WAAa,OAAS,MAAM;AAAA;AAAA;AAAA,oBAIlC,EAAE;AAAA;AAAA,oBAEJ,KAAK,2BAA2B,IAAM,GAAK,KAAK,OAAS,OACvDpG,EAAAA;AAAAA,qDAC+B,IAAM,KAAK,aAAaoG,EAAGpD,CAAC,CAAC;AAAA,wBAC1D,MAAM,QAAQoD,EAAE,eAAe,GAAKA,EAAE,gBAAgB,OAAS,MAAM,KAAK,gBAAgBA,EAAE,eAAe,CAAC,IAAM,MAAM;AAAA;AAAA,oBAG1H,EAAE;AAAA;AAAA;AAAA,eAGT,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,UAKN,KAAK,OAAS,OACZpG,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2CAK+B,KAAK,kBAAoB,UAAY,EAAE,IAAI,KAAK,cAAgB,WAAa,EAAE;AAAA,2BAC/F,IAAM,CAAO,KAAK,gBAAiB,KAAK,kBAAoB,CAAC,KAAK,kBAAmB,KAAK,cAAA,EAAkB,CAAC;AAAA,oBACpH,KAAK,WAAW,OAAS,EACrB,KAAK,WAAW,IAAIqG,GAAKrG,EAAAA;AAAAA;AAAAA,0BAEvBqG,CAAC;AAAA,yDAC+B5F,GAAa,CACzC,KAAK,gBACTA,EAAE,gBAAA,EACF,KAAK,gBAAgB4F,CAAC,EACxB,CAAC;AAAA;AAAA,qBAEJ,EACGrG,EAAAA,iDACN;AAAA,wCACsBE,CAAS;AAAA;AAAA,kBAE/B,KAAK,kBACHF,EAAAA;AAAAA;AAAAA,sBAEE,KAAK,SAAS,IAAI,CAACkG,EAAGlD,IAAMhD,EAAAA;AAAAA,wDACM,KAAK,WAAW,SAAS,KAAK,OAAOgD,CAAC,CAAC,EAAI,WAAa,EAAE;AAAA,iCACjF,IAAM,CACT,KAAK,gBACT,KAAK,gBAAgB,KAAK,OAAOA,CAAC,CAAC,EACnC,KAAK,cAAA,EACP,CAAC;AAAA,0BACC,KAAK,OAAOA,CAAC,CAAC;AAAA;AAAA,qBAEnB,CAAC;AAAA;AAAA,kBAGF,EAAE;AAAA;AAAA;AAAA;AAAA,UAKV,EAAE;AAAA;AAAA;AAAA;AAAA,UAIJ,KAAK,wBAAwB;AAAA;AAAA,UAE7B,KAAK,kBAAkB;AAAA;AAAA,UAEvB,KAAK,wBAAwB;AAAA;AAAA,UAE7B,KAAK,gBAAgB,GAAK,KAAK,cAC7BhD,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6BAMiB,KAAK,SAAS;AAAA,6BACdsG,EAAAA,uBAAuB;AAAA,kCAClB,KAAK,cAAc,CAAC;AAAA,6BACzB,EAAI;AAAA,2BACL,GAAmB,CAAE,KAAK,UAAa,EAAE,OAAe,WAAA,CAAa,CAAC;AAAA;AAAA;AAAA,gBAGjF,KAAK,aAAa,EAEjB,GADAtG,EAAAA,gGAAgG,IAAM,CAAE,KAAK,cAAgB,GAAO,KAAK,UAAY,EAAG,CAAC,qBACvJ;AAAA;AAAA;AAAA,UAIR,EAAE;AAAA;AAAA,UAEJ,KAAK,eAAe,EAClBA,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,0CAI8B,KAAK,SAAS;AAAA,yBAC9B,GAAa,CAAE,KAAK,UAAa,EAAE,OAA+B,KAAM,CAAC;AAAA;AAAA;AAAA;AAAA,UAKvF,EAAE;AAAA;AAAA,KAGZ,CAEA,QAAS,CACP,GAAI,KAAK,QACP,OAAO,KAAK,eAAA,EAGd,MAAMuG,EAAU,KAAK,SAAS,EAC1BvG,EAAAA,wBAAwB,KAAK,YAAA,CAAa,SAC1CA,EAAAA,2BAA2B,KAAK,eAAA,CAAgB,SAEpD,OAAOA,EAAAA;AAAAA,uCAC4B,KAAK,SAAS,CAAC;AAAA,UAC5CuG,CAAO;AAAA,UACP,KAAK,aAAa,EAChBvG,EAAAA;AAAAA;AAAAA,uBAEW,KAAK,SAAS,CAAC;AAAA,sBAChB,KAAK,QAAQ,CAAC;AAAA,wBACZ,KAAK,UAAU,CAAC;AAAA,8BACV,KAAK,gBAAgB,GAAK,KAAK,aAAa;AAAA,kCACxC,CAAC,KAAK,gBAAgB,GAAK,KAAK,oBAAoB,CAAC;AAAA,kCACrD,KAAK,oBAAoB,CAAC;AAAA,gCAC5B,KAAK,kBAAkB,CAAC;AAAA,yBAC/B,KAAK,WAAW,CAAC;AAAA,sBACpB,IAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,oBAC5B,KAAK,KAAK;AAAA,oBACV,IAAM,KAAK,MAAM,MAAM,CAAC;AAAA,oBACvBS,GAAmB,KAAK,MAAM,OAAQA,EAAE,MAAM,CAAC;AAAA,oBAChD,IAAM,KAAK,MAAM,OAAQ,CAC/B,SAAU,KAAK,WAAW,GAAK,GAC/B,OAAQ,KAAK,SAAS,GAAK,EAC3B,WAAY,KAAK,IAAA,CAClB,CAAC;AAAA,mBACMA,GAAmB,KAAK,MAAM,MAAOA,EAAE,MAAM,CAAC;AAAA,iCACjC,IAAM,CACzB,KAAK,cAAgB,CAAC,KAAK,cACtB,KAAK,gBACR,KAAK,UAAY,GAErB,CAAC;AAAA;AAAA,UAGD,EAAE;AAAA;AAAA;AAAA,QAGN,KAAK,0BAA0B;AAAA,QAC/B,KAAK,yBAAyB;AAAA,QAC9B,KAAK,oBAAoB;AAAA,QACzB,KAAK,oBAAoB;AAAA,KAE/B,CACF,EAp1CaN,QAAAA,iBACJ,OAAS,CAACqG,EAAAA,kBAAmBC,EAAAA,kBAAmBC,EAAAA,0BAA2BC,2BAA0BC,EAAAA,sBAAuBC,EAAAA,sBAAuBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GA0QzJ,EAEqDC,EAAA,CAArDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,cAAe,CAAA,EA7QzC7G,yBA6Q2C,UAAA,cAAA,CAAA,EACG4G,EAAA,CAAxDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,iBAAkB,CAAA,EA9Q5C7G,yBA8Q8C,UAAA,iBAAA,CAAA,EACN4G,EAAA,CAAlDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,UAAW,CAAA,EA/QtC7G,yBA+QwC,UAAA,UAAA,CAAA,EACA4G,EAAA,CAAlDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,UAAW,CAAA,EAhRtC7G,yBAgRwC,UAAA,UAAA,CAAA,EACD4G,EAAA,CAAjDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,SAAU,CAAA,EAjRrC7G,yBAiRuC,UAAA,SAAA,CAAA,EACe4G,EAAA,CAAhEC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,wBAAyB,CAAA,EAlRpD7G,yBAkRsD,UAAA,wBAAA,CAAA,EACN4G,EAAA,CAA1DC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,kBAAmB,CAAA,EAnR9C7G,yBAmRgD,UAAA,gBAAA,CAAA,EACT4G,EAAA,CAAjDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,SAAU,CAAA,EApRrC7G,yBAoRuC,UAAA,SAAA,CAAA,EACK4G,EAAA,CAAtDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,cAAe,CAAA,EArR1C7G,yBAqR4C,UAAA,cAAA,CAAA,EACH4G,EAAA,CAAnDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,WAAY,CAAA,EAtRvC7G,yBAsRyC,UAAA,WAAA,CAAA,EACU4G,EAAA,CAA7DC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,qBAAsB,CAAA,EAvRjD7G,yBAuRmD,UAAA,qBAAA,CAAA,EACJ4G,EAAA,CAAzDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,iBAAkB,CAAA,EAxR7C7G,yBAwR+C,UAAA,iBAAA,CAAA,EACI4G,EAAA,CAA7DC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,qBAAsB,CAAA,EAzRjD7G,yBAyRmD,UAAA,qBAAA,CAAA,EACF4G,EAAA,CAA3DC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,mBAAoB,CAAA,EA1R/C7G,yBA0RiD,UAAA,mBAAA,CAAA,EAChB4G,EAAA,CAA3CC,EAAAA,SAAS,CAAE,KAAM,QAAS,QAAS,GAAM,CAAA,EA3R/B7G,yBA2RiC,UAAA,UAAA,CAAA,EACmB4G,EAAA,CAA9DC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,sBAAuB,CAAA,EA5RlD7G,yBA4RoD,UAAA,sBAAA,CAAA,EACX4G,EAAA,CAAnDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,WAAY,CAAA,EA7RvC7G,yBA6RyC,UAAA,WAAA,CAAA,EACK4G,EAAA,CAAxDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,gBAAiB,CAAA,EA9R5C7G,yBA8R8C,UAAA,gBAAA,CAAA,EACA4G,EAAA,CAAxDC,EAAAA,SAAS,CAAE,UAAW,gBAAiB,QAAS,GAAM,CAAA,EA/R5C7G,yBA+R8C,UAAA,OAAA,CAAA,EACG4G,EAAA,CAA3DC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,oBAAqB,CAAA,EAhS/C7G,yBAgSiD,UAAA,oBAAA,CAAA,EACQ4G,EAAA,CAAnEC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,4BAA6B,CAAA,EAjSvD7G,yBAiSyD,UAAA,4BAAA,CAAA,EACR4G,EAAA,CAA3DC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,oBAAqB,CAAA,EAlS/C7G,yBAkSiD,UAAA,oBAAA,CAAA,EAChC4G,EAAA,CAA3BC,WAAS,CAAE,KAAM,MAAA,CAAQ,CAAA,EAnSf7G,yBAmSiB,UAAA,WAAA,CAAA,EACiC4G,EAAA,CAA5DC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,qBAAsB,CAAA,EApShD7G,yBAoSkD,UAAA,qBAAA,CAAA,EACP4G,EAAA,CAArDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,cAAe,CAAA,EArSzC7G,yBAqS2C,UAAA,cAAA,CAAA,EACF4G,EAAA,CAAnDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,YAAa,CAAA,EAtSvC7G,yBAsSyC,UAAA,YAAA,CAAA,EACF4G,EAAA,CAAjDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,UAAW,CAAA,EAvSrC7G,yBAuSuC,UAAA,UAAA,CAAA,EACI4G,EAAA,CAArDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,cAAe,CAAA,EAxSzC7G,yBAwS2C,UAAA,cAAA,CAAA,EACC4G,EAAA,CAAtDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,eAAgB,CAAA,EAzS1C7G,yBAyS4C,UAAA,eAAA,CAAA,EAUnD4G,EAAA,CADHC,EAAAA,SAAS,CAAE,KAAM,MAAO,UAAW,cAAe,CAAA,EAlTxC7G,yBAmTP,UAAA,cAAA,CAAA,EAiB8C4G,EAAA,CAAjDC,EAAAA,SAAS,CAAE,KAAM,MAAO,UAAW,WAAY,CAAA,EApUrC7G,yBAoUuC,UAAA,WAAA,CAAA,EAMK4G,EAAA,CAAtDC,EAAAA,SAAS,CAAE,KAAM,MAAO,UAAW,gBAAiB,CAAA,EA1U1C7G,yBA0U4C,UAAA,gBAAA,CAAA,EAMH4G,EAAA,CAAnDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,YAAa,CAAA,EAhVvC7G,yBAgVyC,UAAA,YAAA,CAAA,EAMG4G,EAAA,CAAtDC,EAAAA,SAAS,CAAE,KAAM,MAAO,UAAW,gBAAiB,CAAA,EAtV1C7G,yBAsV4C,UAAA,gBAAA,CAAA,EAOH4G,EAAA,CAAnDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,WAAY,CAAA,EA7VvC7G,yBA6VyC,UAAA,WAAA,CAAA,EAOK4G,EAAA,CAAxDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,gBAAiB,CAAA,EApW5C7G,yBAoW8C,UAAA,gBAAA,CAAA,EAON4G,EAAA,CAAlDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,UAAW,CAAA,EA3WtC7G,yBA2WwC,UAAA,UAAA,CAAA,EAOM4G,EAAA,CAAxDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,gBAAiB,CAAA,EAlX5C7G,yBAkX8C,UAAA,gBAAA,CAAA,EAOJ4G,EAAA,CAApDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,YAAa,CAAA,EAzXxC7G,yBAyX0C,UAAA,YAAA,CAAA,EAOD4G,EAAA,CAAnDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,WAAY,CAAA,EAhYvC7G,yBAgYyC,UAAA,WAAA,CAAA,EAMC4G,EAAA,CAApDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,aAAc,CAAA,EAtYxC7G,yBAsY0C,UAAA,aAAA,CAAA,EASI4G,EAAA,CAAxDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,iBAAkB,CAAA,EA/Y5C7G,yBA+Y8C,UAAA,iBAAA,CAAA,EAGH4G,EAAA,CAArDC,EAAAA,SAAS,CAAE,KAAM,OAAQ,UAAW,cAAe,CAAA,EAlZzC7G,yBAkZ2C,UAAA,cAAA,CAAA,EACD4G,EAAA,CAApDC,EAAAA,SAAS,CAAE,KAAM,QAAS,UAAW,YAAa,CAAA,EAnZxC7G,yBAmZ0C,UAAA,YAAA,CAAA,EAEpC4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EArZId,yBAqZM,UAAA,WAAA,CAAA,EAKW4G,EAAA,CAA3BC,WAAS,CAAE,KAAM,MAAA,CAAQ,CAAA,EA1Zf7G,yBA0ZiB,UAAA,QAAA,CAAA,EAEX4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA5ZId,yBA4ZM,UAAA,SAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA7ZId,yBA6ZM,UAAA,YAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA9ZId,yBA8ZM,UAAA,YAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA/ZId,yBA+ZM,UAAA,gBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAhaId,yBAgaM,UAAA,oBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAjaId,yBAiaM,UAAA,mBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAlaId,yBAkaM,UAAA,SAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAnaId,yBAmaM,UAAA,aAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EApaId,yBAoaM,UAAA,mBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAraId,yBAqaM,UAAA,cAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAtaId,yBAsaM,UAAA,iBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAvaId,yBAuaM,UAAA,cAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAxaId,yBAwaM,UAAA,iBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EAzaId,yBAyaM,UAAA,oBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA1aId,yBA0aM,UAAA,mBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA3aId,yBA2aM,UAAA,oBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA5aId,yBA4aM,UAAA,mBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA7aId,yBA6aM,UAAA,yBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA9aId,yBA8aM,UAAA,uBAAA,CAAA,EACA4G,EAAA,CAAhB9F,EAAAA,MAAA,CAAM,EA/aId,yBA+aM,UAAA,wBAAA,CAAA,EA/aNA,QAAAA,iBAAN4G,EAAA,CADNE,EAAAA,kBAAkB,oBAAoB,CAAA,EAC1B9G,wBAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function o(c,r,e){if(r===e||r<0||e<0||r>=c.length||e>=c.length)return c.map(u=>({...u}));const n=c.map(u=>({...u})),[t]=n.splice(r,1);return n.splice(e,0,t),n}function s(c,r){if(!r.length)return c.map(t=>({...t}));const e=new Map,n=[];return c.forEach(t=>{t.customId&&e.set(String(t.customId),{...t})}),r.forEach(t=>{const u=e.get(String(t));u&&(n.push(u),e.delete(String(t)))}),c.forEach(t=>{(!t.customId||e.has(String(t.customId)))&&(n.push(e.get(String(t.customId))||{...t}),e.delete(String(t.customId)))}),n}exports.moveSubjectItem=o;exports.reorderSubjects=s;
2
+ //# sourceMappingURL=sort-controller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-controller.cjs","sources":["../../../../packages/components/src/subject/sort-controller.ts"],"sourcesContent":["import type { SubjectLikeItem } from './pagination'\n\nexport function moveSubjectItem(items: SubjectLikeItem[], fromIndex: number, toIndex: number): SubjectLikeItem[] {\n if (fromIndex === toIndex || fromIndex < 0 || toIndex < 0 || fromIndex >= items.length || toIndex >= items.length) {\n return items.map(item => ({ ...item }))\n }\n\n const next = items.map(item => ({ ...item }))\n const [moved] = next.splice(fromIndex, 1)\n next.splice(toIndex, 0, moved)\n return next\n}\n\nexport function reorderSubjects(items: SubjectLikeItem[], orderedIds: string[]): SubjectLikeItem[] {\n if (!orderedIds.length) {\n return items.map(item => ({ ...item }))\n }\n\n const itemMap = new Map<string, SubjectLikeItem>()\n const next: SubjectLikeItem[] = []\n\n items.forEach((item) => {\n if (item.customId) {\n itemMap.set(String(item.customId), { ...item })\n }\n })\n\n orderedIds.forEach((id) => {\n const item = itemMap.get(String(id))\n if (!item) {\n return\n }\n next.push(item)\n itemMap.delete(String(id))\n })\n\n items.forEach((item) => {\n if (!item.customId || itemMap.has(String(item.customId))) {\n next.push(itemMap.get(String(item.customId)) || { ...item })\n itemMap.delete(String(item.customId))\n }\n })\n\n return next\n}\n"],"names":["moveSubjectItem","items","fromIndex","toIndex","item","next","moved","reorderSubjects","orderedIds","itemMap","id"],"mappings":"gFAEO,SAASA,EAAgBC,EAA0BC,EAAmBC,EAAoC,CAC/G,GAAID,IAAcC,GAAWD,EAAY,GAAKC,EAAU,GAAKD,GAAaD,EAAM,QAAUE,GAAWF,EAAM,OACzG,OAAOA,EAAM,IAAIG,IAAS,CAAE,GAAGA,GAAO,EAGxC,MAAMC,EAAOJ,EAAM,QAAa,CAAE,GAAGG,GAAO,EACtC,CAACE,CAAK,EAAID,EAAK,OAAOH,EAAW,CAAC,EACxC,OAAAG,EAAK,OAAOF,EAAS,EAAGG,CAAK,EACtBD,CACT,CAEO,SAASE,EAAgBN,EAA0BO,EAAyC,CACjG,GAAI,CAACA,EAAW,OACd,OAAOP,EAAM,IAAIG,IAAS,CAAE,GAAGA,GAAO,EAGxC,MAAMK,MAAc,IACdJ,EAA0B,CAAA,EAEhC,OAAAJ,EAAM,QAASG,GAAS,CAClBA,EAAK,UACPK,EAAQ,IAAI,OAAOL,EAAK,QAAQ,EAAG,CAAE,GAAGA,EAAM,CAElD,CAAC,EAEDI,EAAW,QAASE,GAAO,CACzB,MAAMN,EAAOK,EAAQ,IAAI,OAAOC,CAAE,CAAC,EAC9BN,IAGLC,EAAK,KAAKD,CAAI,EACdK,EAAQ,OAAO,OAAOC,CAAE,CAAC,EAC3B,CAAC,EAEDT,EAAM,QAASG,GAAS,EAClB,CAACA,EAAK,UAAYK,EAAQ,IAAI,OAAOL,EAAK,QAAQ,CAAC,KACrDC,EAAK,KAAKI,EAAQ,IAAI,OAAOL,EAAK,QAAQ,CAAC,GAAK,CAAE,GAAGA,EAAM,EAC3DK,EAAQ,OAAO,OAAOL,EAAK,QAAQ,CAAC,EAExC,CAAC,EAEMC,CACT"}
@@ -0,0 +1,30 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("lit"),c=require("lit/decorators.js"),p=require("sortablejs"),u=require("../base/define.cjs"),b=require("./sort-controller.cjs"),h=require("./shared-styles.cjs"),d=require("./types.cjs");var m=Object.defineProperty,f=Object.getOwnPropertyDescriptor,i=(a,e,t,s)=>{for(var r=s>1?void 0:s?f(e,t):e,l=a.length-1,n;l>=0;l--)(n=a[l])&&(r=(s?n(e,t,r):n(r))||r);return s&&r&&m(e,t,r),r};exports.QxsSubjectSortable=class extends o.LitElement{constructor(){super(...arguments),this.items=[],this._items=[],this._sortable=null}willUpdate(e){e.has("items")&&(this._items=Array.isArray(this.items)?this.items.map(t=>({...t})):[])}firstUpdated(){this._initSortable()}updated(e){e.has("_items")&&(this._sortable?.destroy(),this._sortable=null,this.updateComplete.then(()=>this._initSortable()))}disconnectedCallback(){super.disconnectedCallback(),this._sortable?.destroy(),this._sortable=null}reorderByIds(e){this._items=b.reorderSubjects(this._items,e),this._emitSortChange()}_initSortable(){const e=this.renderRoot.querySelector(".sort-list");e&&(this._sortable=p.create(e,{handle:".handle",animation:180,ghostClass:"sort-ghost",chosenClass:"sort-chosen",onEnd:t=>{const{oldIndex:s,newIndex:r}=t;s==null||r==null||s===r||(this._items=b.moveSubjectItem(this._items,s,r),this._emitSortChange(s,r))}}))}_emitSortChange(e,t){this.dispatchEvent(new CustomEvent("sort-change",{bubbles:!0,composed:!0,detail:{items:this._items.map(s=>({...s})),newIndex:t,oldIndex:e,orderedIds:this._items.map(s=>String(s.customId||"")).filter(Boolean)}}))}_label(e,t){return typeof this["label-renderer"]=="function"?this["label-renderer"](e,t):e.title||`未命名${d.SubjectTypeLabel[e.answerType]||"题目"}`}render(){return o.html`
2
+ <div class="sort-list">
3
+ ${this._items.map((e,t)=>o.html`
4
+ <div class="sort-item" data-id=${e.customId||""}>
5
+ <span class="handle">⋮⋮</span>
6
+ <div class="content">
7
+ <div class="title">${this._label(e,t)}</div>
8
+ <div class="meta">${d.SubjectTypeLabel[e.answerType]||e.answerType}</div>
9
+ </div>
10
+ </div>
11
+ `)}
12
+ </div>
13
+ `}};exports.QxsSubjectSortable.styles=[h.subjectHostStyles,o.css`
14
+ :host { font-size: 13px; }
15
+ *, ::before, ::after { box-sizing: border-box; }
16
+ .sort-list { display: flex; flex-direction: column; gap: 10px; }
17
+ .sort-item {
18
+ display: flex; align-items: center; gap: 12px;
19
+ padding: 12px 14px; background: var(--qxs-subject-fill-blank, #fff); border: 1px solid var(--qxs-subject-border-light, #e4e7ed); border-radius: 10px;
20
+ cursor: grab; transition: all .2s;
21
+ }
22
+ .sort-item:hover { border-color: var(--qxs-subject-fill-soft-primary-border-strong, #bfd1ff); background: var(--qxs-subject-fill-soft-primary-hover, #f8fbff); }
23
+ .sort-item.sort-ghost { opacity: .5; background: var(--qxs-subject-fill-soft-primary, #ecf5ff); }
24
+ .sort-item.sort-chosen { border-color: var(--qxs-subject-color-primary, #3D61E3); box-shadow: var(--qxs-subject-shadow-primary, 0 8px 20px rgba(61,97,227,.12)); }
25
+ .handle { color: var(--qxs-subject-text-secondary, #909399); font-size: 16px; user-select: none; }
26
+ .content { flex: 1; min-width: 0; }
27
+ .title { font-size: 13px; color: var(--qxs-subject-text-primary, #303133); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
28
+ .meta { margin-top: 4px; font-size: 12px; color: var(--qxs-subject-text-secondary, #909399); }
29
+ `];i([c.property({type:Array})],exports.QxsSubjectSortable.prototype,"items",2);i([c.property({type:Object,attribute:"label-renderer"})],exports.QxsSubjectSortable.prototype,"label-renderer",2);i([c.state()],exports.QxsSubjectSortable.prototype,"_items",2);exports.QxsSubjectSortable=i([u.safeCustomElement("qxs-subject-sortable")],exports.QxsSubjectSortable);
30
+ //# sourceMappingURL=sortable.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortable.cjs","sources":["../../../../packages/components/src/subject/sortable.ts"],"sourcesContent":["import type { SubjectLikeItem } from './pagination'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport Sortable, { type SortableEvent, type SortableInstance } from 'sortablejs'\nimport { safeCustomElement } from '../base/define'\nimport { moveSubjectItem, reorderSubjects } from './sort-controller'\nimport { subjectHostStyles } from './shared-styles'\nimport { SubjectTypeLabel } from './types'\n\n@safeCustomElement('qxs-subject-sortable')\nexport class QxsSubjectSortable extends LitElement {\n static styles = [subjectHostStyles, css`\n :host { font-size: 13px; }\n *, ::before, ::after { box-sizing: border-box; }\n .sort-list { display: flex; flex-direction: column; gap: 10px; }\n .sort-item {\n display: flex; align-items: center; gap: 12px;\n padding: 12px 14px; background: var(--qxs-subject-fill-blank, #fff); border: 1px solid var(--qxs-subject-border-light, #e4e7ed); border-radius: 10px;\n cursor: grab; transition: all .2s;\n }\n .sort-item:hover { border-color: var(--qxs-subject-fill-soft-primary-border-strong, #bfd1ff); background: var(--qxs-subject-fill-soft-primary-hover, #f8fbff); }\n .sort-item.sort-ghost { opacity: .5; background: var(--qxs-subject-fill-soft-primary, #ecf5ff); }\n .sort-item.sort-chosen { border-color: var(--qxs-subject-color-primary, #3D61E3); box-shadow: var(--qxs-subject-shadow-primary, 0 8px 20px rgba(61,97,227,.12)); }\n .handle { color: var(--qxs-subject-text-secondary, #909399); font-size: 16px; user-select: none; }\n .content { flex: 1; min-width: 0; }\n .title { font-size: 13px; color: var(--qxs-subject-text-primary, #303133); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .meta { margin-top: 4px; font-size: 12px; color: var(--qxs-subject-text-secondary, #909399); }\n `]\n\n @property({ type: Array }) items: SubjectLikeItem[] = []\n @property({ type: Object, attribute: 'label-renderer' }) 'label-renderer'?: (item: SubjectLikeItem, index: number) => string\n\n @state() private _items: SubjectLikeItem[] = []\n private _sortable: SortableInstance | null = null\n\n willUpdate(changed: Map<string, unknown>) {\n if (changed.has('items')) {\n this._items = Array.isArray(this.items) ? this.items.map(item => ({ ...item })) : []\n }\n }\n\n firstUpdated() {\n this._initSortable()\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('_items')) {\n this._sortable?.destroy()\n this._sortable = null\n this.updateComplete.then(() => this._initSortable())\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this._sortable?.destroy()\n this._sortable = null\n }\n\n reorderByIds(orderedIds: string[]) {\n this._items = reorderSubjects(this._items, orderedIds)\n this._emitSortChange()\n }\n\n private _initSortable() {\n const list = this.renderRoot.querySelector<HTMLElement>('.sort-list')\n if (!list) {\n return\n }\n this._sortable = Sortable.create(list, {\n handle: '.handle',\n animation: 180,\n ghostClass: 'sort-ghost',\n chosenClass: 'sort-chosen',\n onEnd: (event: SortableEvent) => {\n const { oldIndex, newIndex } = event\n if (oldIndex == null || newIndex == null || oldIndex === newIndex) {\n return\n }\n this._items = moveSubjectItem(this._items, oldIndex, newIndex)\n this._emitSortChange(oldIndex, newIndex)\n },\n })\n }\n\n private _emitSortChange(oldIndex?: number, newIndex?: number) {\n this.dispatchEvent(new CustomEvent('sort-change', {\n bubbles: true,\n composed: true,\n detail: {\n items: this._items.map(item => ({ ...item })),\n newIndex,\n oldIndex,\n orderedIds: this._items.map(item => String(item.customId || '')).filter(Boolean),\n },\n }))\n }\n\n private _label(item: SubjectLikeItem, index: number) {\n if (typeof this['label-renderer'] === 'function') {\n return this['label-renderer'](item, index)\n }\n return item.title || `未命名${SubjectTypeLabel[item.answerType] || '题目'}`\n }\n\n render() {\n return html`\n <div class=\"sort-list\">\n ${this._items.map((item, index) => html`\n <div class=\"sort-item\" data-id=${item.customId || ''}>\n <span class=\"handle\">⋮⋮</span>\n <div class=\"content\">\n <div class=\"title\">${this._label(item, index)}</div>\n <div class=\"meta\">${SubjectTypeLabel[item.answerType] || item.answerType}</div>\n </div>\n </div>\n `)}\n </div>\n `\n }\n}\n\nexport function register() {}\n"],"names":["QxsSubjectSortable","LitElement","changed","item","orderedIds","reorderSubjects","list","Sortable","event","oldIndex","newIndex","moveSubjectItem","index","SubjectTypeLabel","html","subjectHostStyles","css","__decorateClass","property","state","safeCustomElement"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("lit"),s=r.css`
2
+ .sorting-card {
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 12px;
6
+ padding: 12px 14px;
7
+ background: var(--qxs-subject-fill-blank, #fff);
8
+ border: 1px solid var(--qxs-subject-border-light, #e4e7ed);
9
+ border-radius: 10px;
10
+ transition: all 0.2s;
11
+ }
12
+
13
+ .sorting-card:hover {
14
+ border-color: var(--qxs-subject-fill-soft-primary-border-strong, #bfd1ff);
15
+ background: var(--qxs-subject-fill-soft-primary-hover, #f8fbff);
16
+ }
17
+
18
+ .sorting-handle {
19
+ color: var(--qxs-subject-text-secondary, #909399);
20
+ font-size: 16px;
21
+ line-height: 1;
22
+ user-select: none;
23
+ }
24
+
25
+ .sorting-content {
26
+ flex: 1;
27
+ min-width: 0;
28
+ }
29
+
30
+ .sorting-title {
31
+ font-size: 13px;
32
+ color: var(--qxs-subject-text-primary, #303133);
33
+ white-space: nowrap;
34
+ overflow: hidden;
35
+ text-overflow: ellipsis;
36
+ }
37
+
38
+ .sorting-meta {
39
+ margin-top: 4px;
40
+ font-size: 12px;
41
+ color: var(--qxs-subject-text-secondary, #909399);
42
+ }
43
+ `;function i(t,e){return r.html`
44
+ <div class="sorting-card">
45
+ <span class="sorting-handle">⋮⋮</span>
46
+ <div class="sorting-content">
47
+ <div class="sorting-title">${t}</div>
48
+ <div class="sorting-meta">${e}</div>
49
+ </div>
50
+ </div>
51
+ `}exports.renderSortingCard=i;exports.sortingCardStyles=s;
52
+ //# sourceMappingURL=sorting-card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sorting-card.cjs","sources":["../../../../packages/components/src/subject/sorting-card.ts"],"sourcesContent":["import { css, html } from 'lit'\n\nexport const sortingCardStyles = css`\n .sorting-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n background: var(--qxs-subject-fill-blank, #fff);\n border: 1px solid var(--qxs-subject-border-light, #e4e7ed);\n border-radius: 10px;\n transition: all 0.2s;\n }\n\n .sorting-card:hover {\n border-color: var(--qxs-subject-fill-soft-primary-border-strong, #bfd1ff);\n background: var(--qxs-subject-fill-soft-primary-hover, #f8fbff);\n }\n\n .sorting-handle {\n color: var(--qxs-subject-text-secondary, #909399);\n font-size: 16px;\n line-height: 1;\n user-select: none;\n }\n\n .sorting-content {\n flex: 1;\n min-width: 0;\n }\n\n .sorting-title {\n font-size: 13px;\n color: var(--qxs-subject-text-primary, #303133);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .sorting-meta {\n margin-top: 4px;\n font-size: 12px;\n color: var(--qxs-subject-text-secondary, #909399);\n }\n`\n\nexport function renderSortingCard(title: string, meta: string) {\n return html`\n <div class=\"sorting-card\">\n <span class=\"sorting-handle\">⋮⋮</span>\n <div class=\"sorting-content\">\n <div class=\"sorting-title\">${title}</div>\n <div class=\"sorting-meta\">${meta}</div>\n </div>\n </div>\n `\n}\n"],"names":["sortingCardStyles","css","renderSortingCard","title","meta","html"],"mappings":"uGAEaA,EAAoBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EA4C1B,SAASC,EAAkBC,EAAeC,EAAc,CAC7D,OAAOC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qCAI4BF,CAAK;AAAA,oCACNC,CAAI;AAAA;AAAA;AAAA,GAIxC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class e extends Error{constructor(r,i="VALIDATION_ERROR",m,o){super(r),this.code=i,this.field=m,this.row=o,this.name="SubjectError"}static from(r){return new e(r.message,r.code,r.field,r.row)}}function a(t){return String(t??"").trim()}function n(t){return String(t??"").split(",").map(r=>r.trim()).filter(Boolean).join(",")}exports.SubjectError=e;exports.trimCommaSeparatedText=n;exports.trimText=a;
2
+ //# sourceMappingURL=subject-shared.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-shared.cjs","sources":["../../../../packages/components/src/subject/subject-shared.ts"],"sourcesContent":["export interface SubjectErrorOptions {\n message: string\n code?: string\n field?: string\n row?: any\n}\n\nexport class SubjectError extends Error {\n constructor(\n message: string,\n public code: string = 'VALIDATION_ERROR',\n public field?: string,\n public row?: any,\n ) {\n super(message)\n this.name = 'SubjectError'\n }\n\n static from(options: SubjectErrorOptions): SubjectError {\n return new SubjectError(options.message, options.code, options.field, options.row)\n }\n}\n\nexport function trimText(value: unknown) {\n return String(value ?? '').trim()\n}\n\nexport function trimCommaSeparatedText(value: unknown) {\n return String(value ?? '')\n .split(',')\n .map(item => item.trim())\n .filter(Boolean)\n .join(',')\n}\n\nexport interface TagItem {\n tagId: string | number\n tagName: string\n knowledgePointInfos?: KnowledgePointInfo[]\n}\n\nexport interface KnowledgePointInfo {\n knowledgePointId: string | number\n knowledgePointName: string\n}\n\nexport interface Category {\n categoryId: string | number\n title: string\n}\n\nexport interface SearchResult {\n id: string | number\n title: string\n value: string\n [key: string]: any\n}\n\nexport interface Resource {\n resourceType: 1 | 2\n resource: {\n url?: string\n middle?: string\n videoId?: string\n [key: string]: any\n }\n}\n"],"names":["SubjectError","message","code","field","row","options","trimText","value","trimCommaSeparatedText","item"],"mappings":"gFAOO,MAAMA,UAAqB,KAAM,CACtC,YACEC,EACOC,EAAe,mBACfC,EACAC,EACP,CACA,MAAMH,CAAO,EAJN,KAAA,KAAAC,EACA,KAAA,MAAAC,EACA,KAAA,IAAAC,EAGP,KAAK,KAAO,cACd,CAEA,OAAO,KAAKC,EAA4C,CACtD,OAAO,IAAIL,EAAaK,EAAQ,QAASA,EAAQ,KAAMA,EAAQ,MAAOA,EAAQ,GAAG,CACnF,CACF,CAEO,SAASC,EAASC,EAAgB,CACvC,OAAO,OAAOA,GAAS,EAAE,EAAE,KAAA,CAC7B,CAEO,SAASC,EAAuBD,EAAgB,CACrD,OAAO,OAAOA,GAAS,EAAE,EACtB,MAAM,GAAG,EACT,IAAIE,GAAQA,EAAK,MAAM,EACvB,OAAO,OAAO,EACd,KAAK,GAAG,CACb"}