foucui 1.0.1 → 2.0.0

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 (371) hide show
  1. package/README.md +8 -8
  2. package/README.publish.md +19 -0
  3. package/dist/components/{QiuAnchor → FouAnchor}/context.d.ts +4 -4
  4. package/dist/components/{QiuBadge → FouBadge}/composables/useTableHostHeight.d.ts +1 -1
  5. package/dist/components/FouBadge/index.d.ts +18 -0
  6. package/dist/components/{QiuBadge → FouBadge}/shared/BadgeTemplateRenderer.vue.d.ts +1 -1
  7. package/dist/components/{QiuBadge → FouBadge}/shared/badgeTemplate.d.ts +1 -1
  8. package/dist/components/{QiuButton → FouButton}/index.vue.d.ts +4 -4
  9. package/dist/components/{QiuCanvasKit/QiuCanvasEditor.vue.d.ts → FouCanvasKit/FouCanvasEditor.vue.d.ts} +4 -2
  10. package/dist/components/{QiuCanvasKit → FouCanvasKit}/components/DataModulesPanel.vue.d.ts +1 -0
  11. package/dist/components/{QiuCanvasKit → FouCanvasKit}/index.d.ts +4 -4
  12. package/dist/components/{QiuCanvasKit → FouCanvasKit}/types.d.ts +1 -1
  13. package/dist/components/{QiuCarousel → FouCarousel}/context.d.ts +4 -4
  14. package/dist/components/{QiuCascader → FouCascader}/types.d.ts +7 -7
  15. package/dist/components/{QiuCheckbox → FouCheckbox}/types.d.ts +1 -1
  16. package/dist/components/{QiuCollapse → FouCollapse}/context.d.ts +2 -2
  17. package/dist/components/{QiuDescriptions → FouDescriptions}/context.d.ts +4 -4
  18. package/dist/components/{QiuDropdown → FouDropdown}/context.d.ts +2 -2
  19. package/dist/components/{QiuForm → FouForm}/types.d.ts +10 -10
  20. package/dist/components/FouLoading/index.d.ts +26 -0
  21. package/dist/components/{QiuLoading → FouLoading}/spinner.vue.d.ts +3 -3
  22. package/dist/components/{QiuLoading → FouLoading}/types.d.ts +2 -2
  23. package/dist/components/{QiuMenu → FouMenu}/context.d.ts +2 -2
  24. package/dist/components/{QiuMenuNav → FouMenuNav}/context.d.ts +2 -2
  25. package/dist/components/{QiuMsg/QiuMsgItem.vue.d.ts → FouMsg/FouMsgItem.vue.d.ts} +3 -3
  26. package/dist/components/FouMsg/index.d.ts +30 -0
  27. package/dist/components/{QiuMsg → FouMsg}/types.d.ts +5 -5
  28. package/dist/components/{QiuMsgBox → FouMsgBox}/index.d.ts +3 -3
  29. package/dist/components/{QiuNotification/QiuNotificationItem.vue.d.ts → FouNotification/FouNotificationItem.vue.d.ts} +3 -3
  30. package/dist/components/FouNotification/index.d.ts +30 -0
  31. package/dist/components/FouNotification/types.d.ts +12 -0
  32. package/dist/components/{QiuRadio → FouRadio}/types.d.ts +1 -1
  33. package/dist/components/FouRow/types.d.ts +4 -0
  34. package/dist/components/{QiuSelect → FouSelect}/index.vue.d.ts +3 -3
  35. package/dist/components/{QiuSelect → FouSelect}/types.d.ts +3 -3
  36. package/dist/components/{QiuStep → FouStep}/index.vue.d.ts +1 -1
  37. package/dist/components/{QiuSteps → FouSteps}/context.d.ts +5 -5
  38. package/dist/components/{QiuTabBar → FouTabBar}/index.vue.d.ts +3 -3
  39. package/dist/components/{QiuTabBar → FouTabBar}/types.d.ts +5 -5
  40. package/dist/components/{QiuTable → FouTable}/export.d.ts +5 -5
  41. package/dist/components/FouTable/index.d.ts +3 -0
  42. package/dist/components/{QiuTable → FouTable}/index.vue.d.ts +60 -60
  43. package/dist/components/FouTable/registry.d.ts +39 -0
  44. package/dist/components/{QiuTable → FouTable}/types.d.ts +60 -60
  45. package/dist/components/{QiuTable → FouTable}/useArea.d.ts +10 -10
  46. package/dist/components/{QiuTable → FouTable}/useColumns.d.ts +5 -5
  47. package/dist/components/FouTable/useEdit.d.ts +36 -0
  48. package/dist/components/{QiuTable → FouTable}/useHistory.d.ts +5 -5
  49. package/dist/components/{QiuTable → FouTable}/useMerge.d.ts +6 -6
  50. package/dist/components/{QiuTable → FouTable}/useScrollSync.d.ts +1 -1
  51. package/dist/components/{QiuTable → FouTable}/utils.d.ts +17 -17
  52. package/dist/components/FouTree/types.d.ts +13 -0
  53. package/dist/components/{QiuUpload → FouUpload}/index.vue.d.ts +17 -17
  54. package/dist/foucui.css +1 -1
  55. package/dist/foucui.js +10749 -10646
  56. package/dist/foucui.umd.cjs +40 -40
  57. package/dist/index.d.ts +43 -43
  58. package/dist/src/bridge/@/config/index.d.ts +1 -1
  59. package/dist/src/bridge/@fou/plugins/shortcuts.d.ts +2 -0
  60. package/package.json +27 -15
  61. package/components/QiuAffix/index.vue +0 -186
  62. package/components/QiuAlert/index.vue +0 -208
  63. package/components/QiuAnchor/context.ts +0 -18
  64. package/components/QiuAnchor/index.vue +0 -180
  65. package/components/QiuAnchorLink/index.vue +0 -67
  66. package/components/QiuApp/index.vue +0 -9
  67. package/components/QiuAutocomplete/index.vue +0 -408
  68. package/components/QiuAvatar/index.vue +0 -140
  69. package/components/QiuBacktop/index.vue +0 -121
  70. package/components/QiuBadge/api/index.ts +0 -389
  71. package/components/QiuBadge/components/BadgeImagePickerDialog.vue +0 -243
  72. package/components/QiuBadge/components/BadgeLibraryManagerDialog.vue +0 -30
  73. package/components/QiuBadge/components/BadgeLibraryPanel.vue +0 -182
  74. package/components/QiuBadge/composables/useTableHostHeight.ts +0 -53
  75. package/components/QiuBadge/index.ts +0 -18
  76. package/components/QiuBadge/shared/BadgeTemplateRenderer.vue +0 -32
  77. package/components/QiuBadge/shared/assetUrl.ts +0 -26
  78. package/components/QiuBadge/shared/badgeTemplate.ts +0 -309
  79. package/components/QiuBadge/utils/chinaAreaData.ts +0 -44
  80. package/components/QiuBadge/utils/hostRegion.ts +0 -22
  81. package/components/QiuBadge/utils/pca-code.json +0 -1
  82. package/components/QiuBadge/utils/pdfFromElement.ts +0 -348
  83. package/components/QiuBadge/views/BadgeLibraryView.vue +0 -32
  84. package/components/QiuBadge/views/BadgeManageView.vue +0 -1364
  85. package/components/QiuBadge/views/BadgeTemplateEditorView.vue +0 -10
  86. package/components/QiuBadge/views/BadgeTemplateListView.vue +0 -229
  87. package/components/QiuBadge/views/DeskLabelTemplateListView.vue +0 -227
  88. package/components/QiuBadge/views/DeskLabelView.vue +0 -683
  89. package/components/QiuBadgeDot/index.vue +0 -87
  90. package/components/QiuButton/index.vue +0 -247
  91. package/components/QiuButtonGroup/index.vue +0 -63
  92. package/components/QiuCanvasKit/QiuCanvasEditor.vue +0 -5503
  93. package/components/QiuCanvasKit/QiuCanvasRenderer.vue +0 -348
  94. package/components/QiuCanvasKit/assetUrl.ts +0 -11
  95. package/components/QiuCanvasKit/components/DataModulesPanel.vue +0 -352
  96. package/components/QiuCanvasKit/export/html.ts +0 -132
  97. package/components/QiuCanvasKit/export/pdf.ts +0 -48
  98. package/components/QiuCanvasKit/export/png.ts +0 -50
  99. package/components/QiuCanvasKit/index.ts +0 -20
  100. package/components/QiuCanvasKit/modules/badgeCompat.ts +0 -84
  101. package/components/QiuCanvasKit/modules/dataRegistry.ts +0 -207
  102. package/components/QiuCanvasKit/modules/merge.ts +0 -71
  103. package/components/QiuCanvasKit/presets/badge.ts +0 -67
  104. package/components/QiuCanvasKit/presets/banner.ts +0 -79
  105. package/components/QiuCanvasKit/types.ts +0 -138
  106. package/components/QiuCard/index.vue +0 -104
  107. package/components/QiuCarousel/context.ts +0 -16
  108. package/components/QiuCarousel/index.vue +0 -343
  109. package/components/QiuCarouselItem/index.vue +0 -47
  110. package/components/QiuCascader/index.vue +0 -879
  111. package/components/QiuCascader/types.ts +0 -48
  112. package/components/QiuCheckbox/QiuCheckboxGroup.vue +0 -78
  113. package/components/QiuCheckbox/index.vue +0 -231
  114. package/components/QiuCheckbox/types.ts +0 -8
  115. package/components/QiuCode/index.vue +0 -64
  116. package/components/QiuCol/col.scss +0 -55
  117. package/components/QiuCol/index.vue +0 -64
  118. package/components/QiuCollapse/context.ts +0 -10
  119. package/components/QiuCollapse/index.vue +0 -70
  120. package/components/QiuCollapseItem/index.vue +0 -167
  121. package/components/QiuColorField/index.vue +0 -296
  122. package/components/QiuColorPicker/README.md +0 -118
  123. package/components/QiuColorPicker/index.vue +0 -60
  124. package/components/QiuColorfulCard/index.vue +0 -101
  125. package/components/QiuCombobox/index.vue +0 -277
  126. package/components/QiuConfigProvider/index.vue +0 -31
  127. package/components/QiuContextMenu/index.vue +0 -209
  128. package/components/QiuDate/index.vue +0 -1134
  129. package/components/QiuDescriptions/context.ts +0 -20
  130. package/components/QiuDescriptions/index.vue +0 -115
  131. package/components/QiuDescriptionsItem/index.vue +0 -103
  132. package/components/QiuDialog/index.vue +0 -828
  133. package/components/QiuDigitalCard/index.vue +0 -159
  134. package/components/QiuDivider/index.vue +0 -185
  135. package/components/QiuDot/index.vue +0 -83
  136. package/components/QiuDrawer/index.vue +0 -350
  137. package/components/QiuDropdown/QiuDropdownItem.vue +0 -74
  138. package/components/QiuDropdown/QiuDropdownMenu.vue +0 -22
  139. package/components/QiuDropdown/context.ts +0 -9
  140. package/components/QiuDropdown/index.vue +0 -189
  141. package/components/QiuEmpty/index.vue +0 -73
  142. package/components/QiuForm/index.vue +0 -172
  143. package/components/QiuForm/types.ts +0 -39
  144. package/components/QiuFormItem/index.vue +0 -276
  145. package/components/QiuFullscreen/index.vue +0 -11
  146. package/components/QiuGrid/index.vue +0 -408
  147. package/components/QiuHoverCard/index.vue +0 -192
  148. package/components/QiuIcon/index.vue +0 -117
  149. package/components/QiuIconPicker/iconify.libraries.ts +0 -182
  150. package/components/QiuIconPicker/icons.catalog.ts +0 -3072
  151. package/components/QiuIconPicker/index.vue +0 -488
  152. package/components/QiuImage/index.vue +0 -177
  153. package/components/QiuInput/index.vue +0 -328
  154. package/components/QiuInputNumber/index.vue +0 -295
  155. package/components/QiuInputOtp/index.vue +0 -190
  156. package/components/QiuKbd/index.vue +0 -57
  157. package/components/QiuLayoutContainer/index.vue +0 -50
  158. package/components/QiuLinkPreview/index.vue +0 -224
  159. package/components/QiuLoading/index.ts +0 -176
  160. package/components/QiuLoading/spinner.vue +0 -820
  161. package/components/QiuLoading/types.ts +0 -44
  162. package/components/QiuMention/index.vue +0 -299
  163. package/components/QiuMenu/QiuMenuRoot.vue +0 -241
  164. package/components/QiuMenu/components/QiuMenuItem.vue +0 -340
  165. package/components/QiuMenu/components/QiuSubMenu.vue +0 -504
  166. package/components/QiuMenu/context.ts +0 -21
  167. package/components/QiuMenu/index.vue +0 -43
  168. package/components/QiuMenuNav/QiuMenuNavItem.vue +0 -100
  169. package/components/QiuMenuNav/QiuMenuNavSub.vue +0 -120
  170. package/components/QiuMenuNav/context.ts +0 -14
  171. package/components/QiuMenuNav/index.vue +0 -148
  172. package/components/QiuMsg/QiuMsgItem.vue +0 -180
  173. package/components/QiuMsg/index.ts +0 -158
  174. package/components/QiuMsg/types.ts +0 -23
  175. package/components/QiuMsgBox/index.ts +0 -147
  176. package/components/QiuNotification/QiuNotificationItem.vue +0 -168
  177. package/components/QiuNotification/index.ts +0 -155
  178. package/components/QiuNotification/types.ts +0 -14
  179. package/components/QiuPage/index.vue +0 -12
  180. package/components/QiuPageHeader/index.vue +0 -115
  181. package/components/QiuPageMain/index.vue +0 -78
  182. package/components/QiuPagination/index.vue +0 -421
  183. package/components/QiuPasswordStrength/index.vue +0 -101
  184. package/components/QiuPopconfirm/index.vue +0 -196
  185. package/components/QiuPopover/index.vue +0 -277
  186. package/components/QiuProgress/index.vue +0 -235
  187. package/components/QiuQrcode/index.vue +0 -302
  188. package/components/QiuQueryForm/components/QiuQueryFormBottomPanel.vue +0 -13
  189. package/components/QiuQueryForm/components/QiuQueryFormLeftPanel.vue +0 -37
  190. package/components/QiuQueryForm/components/QiuQueryFormRightPanel.vue +0 -37
  191. package/components/QiuQueryForm/components/QiuQueryFormTopPanel.vue +0 -13
  192. package/components/QiuQueryForm/index.vue +0 -117
  193. package/components/QiuRadio/QiuRadioGroup.vue +0 -75
  194. package/components/QiuRadio/index.vue +0 -191
  195. package/components/QiuRadio/types.ts +0 -9
  196. package/components/QiuRate/index.vue +0 -184
  197. package/components/QiuRefresh/index.vue +0 -32
  198. package/components/QiuResult/index.vue +0 -103
  199. package/components/QiuRow/index.vue +0 -60
  200. package/components/QiuRow/types.ts +0 -5
  201. package/components/QiuScrollbar/index.vue +0 -107
  202. package/components/QiuSearchBar/index.vue +0 -154
  203. package/components/QiuSegmented/index.vue +0 -120
  204. package/components/QiuSelect/QiuOption.vue +0 -93
  205. package/components/QiuSelect/index.vue +0 -452
  206. package/components/QiuSelect/types.ts +0 -15
  207. package/components/QiuSkeleton/index.vue +0 -78
  208. package/components/QiuSlider/index.vue +0 -266
  209. package/components/QiuSpace/index.vue +0 -95
  210. package/components/QiuSparkline/index.vue +0 -92
  211. package/components/QiuStatistic/index.vue +0 -4
  212. package/components/QiuStatistics/index.vue +0 -123
  213. package/components/QiuStep/index.vue +0 -220
  214. package/components/QiuSteps/context.ts +0 -25
  215. package/components/QiuSteps/index.vue +0 -84
  216. package/components/QiuSwitch/index.vue +0 -145
  217. package/components/QiuTabBar/index.vue +0 -218
  218. package/components/QiuTabBar/types.ts +0 -19
  219. package/components/QiuTabPane/index.vue +0 -82
  220. package/components/QiuTable/columns.ts +0 -16
  221. package/components/QiuTable/export.ts +0 -102
  222. package/components/QiuTable/index.ts +0 -24
  223. package/components/QiuTable/index.vue +0 -3503
  224. package/components/QiuTable/registry.ts +0 -75
  225. package/components/QiuTable/styles/table.scss +0 -1230
  226. package/components/QiuTable/types.ts +0 -413
  227. package/components/QiuTable/useArea.ts +0 -202
  228. package/components/QiuTable/useColumns.ts +0 -325
  229. package/components/QiuTable/useEdit.ts +0 -136
  230. package/components/QiuTable/useExtras.ts +0 -115
  231. package/components/QiuTable/useHistory.ts +0 -77
  232. package/components/QiuTable/useMerge.ts +0 -105
  233. package/components/QiuTable/useResize.ts +0 -86
  234. package/components/QiuTable/useScrollSync.ts +0 -152
  235. package/components/QiuTable/useVirtual.ts +0 -97
  236. package/components/QiuTable/utils.ts +0 -165
  237. package/components/QiuTableColumn/index.vue +0 -101
  238. package/components/QiuTag/index.vue +0 -143
  239. package/components/QiuText/index.vue +0 -99
  240. package/components/QiuTime/index.vue +0 -548
  241. package/components/QiuTimeAgo/index.vue +0 -103
  242. package/components/QiuTimeline/index.vue +0 -54
  243. package/components/QiuTimelineItem/index.vue +0 -140
  244. package/components/QiuTips/index.vue +0 -323
  245. package/components/QiuTooltip/index.vue +0 -237
  246. package/components/QiuTransfer/index.vue +0 -277
  247. package/components/QiuTree/QiuTreeNode.vue +0 -146
  248. package/components/QiuTree/index.vue +0 -143
  249. package/components/QiuTree/types.ts +0 -30
  250. package/components/QiuTreeSelect/index.vue +0 -259
  251. package/components/QiuTrend/index.vue +0 -92
  252. package/components/QiuUpload/index.vue +0 -628
  253. package/components/QiuUploadCrop/index.vue +0 -1267
  254. package/components/QiuWatermark/index.vue +0 -121
  255. package/components/useBodyScrollLock.ts +0 -28
  256. package/dist/components/QiuBadge/index.d.ts +0 -18
  257. package/dist/components/QiuBadge/utils/pca-code.json.d.ts +0 -3
  258. package/dist/components/QiuLoading/index.d.ts +0 -26
  259. package/dist/components/QiuMsg/index.d.ts +0 -30
  260. package/dist/components/QiuNotification/index.d.ts +0 -30
  261. package/dist/components/QiuNotification/types.d.ts +0 -12
  262. package/dist/components/QiuRow/types.d.ts +0 -4
  263. package/dist/components/QiuTable/index.d.ts +0 -3
  264. package/dist/components/QiuTable/registry.d.ts +0 -39
  265. package/dist/components/QiuTable/useEdit.d.ts +0 -36
  266. package/dist/components/QiuTree/types.d.ts +0 -13
  267. package/dist/src/bridge/@qiu/plugins/shortcuts.d.ts +0 -2
  268. package/plugins/qiu.ts +0 -83
  269. package/plugins/shortcuts.ts +0 -69
  270. package/src/bridge/@/api/media.ts +0 -8
  271. package/src/bridge/@/api/notice.ts +0 -5
  272. package/src/bridge/@/config/index.ts +0 -38
  273. package/src/bridge/@/config/media.config.ts +0 -37
  274. package/src/bridge/@/config/security.config.ts +0 -8
  275. package/src/bridge/@/i18n/index.ts +0 -6
  276. package/src/bridge/@/store/modules/bing.ts +0 -9
  277. package/src/bridge/@/store/modules/errorLog.ts +0 -9
  278. package/src/bridge/@/store/modules/media.ts +0 -10
  279. package/src/bridge/@/store/modules/routes.ts +0 -10
  280. package/src/bridge/@/store/modules/settings.ts +0 -9
  281. package/src/bridge/@/store/modules/tabs.ts +0 -9
  282. package/src/bridge/@/store/modules/user.ts +0 -9
  283. package/src/bridge/@/utils/convertToCamelCase.ts +0 -11
  284. package/src/bridge/@/utils/index.ts +0 -9
  285. package/src/bridge/@/utils/pageTitle.ts +0 -4
  286. package/src/bridge/@/utils/routes.ts +0 -14
  287. package/src/bridge/@/utils/validate.ts +0 -17
  288. package/src/bridge/@qiu/plugins/shortcuts.ts +0 -3
  289. package/src/i18n.ts +0 -8
  290. package/src/icons/qiu-logo.svg +0 -1
  291. package/styles/dark.scss +0 -194
  292. package/styles/normalize.css +0 -349
  293. package/styles/plain.scss +0 -423
  294. package/styles/qiu-tokens.scss +0 -40
  295. package/styles/qiu.scss +0 -1149
  296. package/styles/technology.scss +0 -452
  297. package/styles/var.scss +0 -382
  298. package/styles/variables.scss +0 -77
  299. /package/dist/components/{QiuAnchorLink → FouAnchorLink}/index.vue.d.ts +0 -0
  300. /package/dist/components/{QiuBadge → FouBadge}/api/index.d.ts +0 -0
  301. /package/dist/components/{QiuBadge → FouBadge}/components/BadgeImagePickerDialog.vue.d.ts +0 -0
  302. /package/dist/components/{QiuBadge → FouBadge}/components/BadgeLibraryManagerDialog.vue.d.ts +0 -0
  303. /package/dist/components/{QiuBadge → FouBadge}/components/BadgeLibraryPanel.vue.d.ts +0 -0
  304. /package/dist/components/{QiuBadge → FouBadge}/shared/assetUrl.d.ts +0 -0
  305. /package/dist/components/{QiuBadge → FouBadge}/utils/chinaAreaData.d.ts +0 -0
  306. /package/dist/components/{QiuBadge → FouBadge}/utils/hostRegion.d.ts +0 -0
  307. /package/dist/components/{QiuBadge → FouBadge}/utils/pdfFromElement.d.ts +0 -0
  308. /package/dist/components/{QiuBadge → FouBadge}/views/BadgeLibraryView.vue.d.ts +0 -0
  309. /package/dist/components/{QiuBadge → FouBadge}/views/BadgeManageView.vue.d.ts +0 -0
  310. /package/dist/components/{QiuBadge → FouBadge}/views/BadgeTemplateListView.vue.d.ts +0 -0
  311. /package/dist/components/{QiuBadge → FouBadge}/views/DeskLabelTemplateListView.vue.d.ts +0 -0
  312. /package/dist/components/{QiuBadge → FouBadge}/views/DeskLabelView.vue.d.ts +0 -0
  313. /package/dist/components/{QiuCanvasKit/QiuCanvasRenderer.vue.d.ts → FouCanvasKit/FouCanvasRenderer.vue.d.ts} +0 -0
  314. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/assetUrl.d.ts +0 -0
  315. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/export/html.d.ts +0 -0
  316. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/export/pdf.d.ts +0 -0
  317. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/export/png.d.ts +0 -0
  318. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/modules/badgeCompat.d.ts +0 -0
  319. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/modules/dataRegistry.d.ts +0 -0
  320. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/modules/merge.d.ts +0 -0
  321. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/presets/badge.d.ts +0 -0
  322. /package/dist/components/{QiuCanvasKit → FouCanvasKit}/presets/banner.d.ts +0 -0
  323. /package/dist/components/{QiuCarouselItem → FouCarouselItem}/index.vue.d.ts +0 -0
  324. /package/dist/components/{QiuCheckbox/QiuCheckboxGroup.vue.d.ts → FouCheckbox/FouCheckboxGroup.vue.d.ts} +0 -0
  325. /package/dist/components/{QiuCheckbox → FouCheckbox}/index.vue.d.ts +0 -0
  326. /package/dist/components/{QiuCode → FouCode}/index.vue.d.ts +0 -0
  327. /package/dist/components/{QiuCollapseItem → FouCollapseItem}/index.vue.d.ts +0 -0
  328. /package/dist/components/{QiuColorField → FouColorField}/index.vue.d.ts +0 -0
  329. /package/dist/components/{QiuColorPicker → FouColorPicker}/index.vue.d.ts +0 -0
  330. /package/dist/components/{QiuCombobox → FouCombobox}/index.vue.d.ts +0 -0
  331. /package/dist/components/{QiuContextMenu → FouContextMenu}/index.vue.d.ts +0 -0
  332. /package/dist/components/{QiuDescriptionsItem → FouDescriptionsItem}/index.vue.d.ts +0 -0
  333. /package/dist/components/{QiuDigitalCard → FouDigitalCard}/index.vue.d.ts +0 -0
  334. /package/dist/components/{QiuDropdown/QiuDropdownItem.vue.d.ts → FouDropdown/FouDropdownItem.vue.d.ts} +0 -0
  335. /package/dist/components/{QiuDropdown/QiuDropdownMenu.vue.d.ts → FouDropdown/FouDropdownMenu.vue.d.ts} +0 -0
  336. /package/dist/components/{QiuDropdown → FouDropdown}/index.vue.d.ts +0 -0
  337. /package/dist/components/{QiuHoverCard → FouHoverCard}/index.vue.d.ts +0 -0
  338. /package/dist/components/{QiuIcon → FouIcon}/index.vue.d.ts +0 -0
  339. /package/dist/components/{QiuIconPicker → FouIconPicker}/iconify.libraries.d.ts +0 -0
  340. /package/dist/components/{QiuIconPicker → FouIconPicker}/icons.catalog.d.ts +0 -0
  341. /package/dist/components/{QiuInput → FouInput}/index.vue.d.ts +0 -0
  342. /package/dist/components/{QiuInputNumber → FouInputNumber}/index.vue.d.ts +0 -0
  343. /package/dist/components/{QiuInputOtp → FouInputOtp}/index.vue.d.ts +0 -0
  344. /package/dist/components/{QiuKbd → FouKbd}/index.vue.d.ts +0 -0
  345. /package/dist/components/{QiuLayoutContainer → FouLayoutContainer}/index.vue.d.ts +0 -0
  346. /package/dist/components/{QiuLinkPreview → FouLinkPreview}/index.vue.d.ts +0 -0
  347. /package/dist/components/{QiuMention → FouMention}/index.vue.d.ts +0 -0
  348. /package/dist/components/{QiuMenu/QiuMenuRoot.vue.d.ts → FouMenu/FouMenuRoot.vue.d.ts} +0 -0
  349. /package/dist/components/{QiuMenuNav/QiuMenuNavItem.vue.d.ts → FouMenuNav/FouMenuNavItem.vue.d.ts} +0 -0
  350. /package/dist/components/{QiuMenuNav/QiuMenuNavSub.vue.d.ts → FouMenuNav/FouMenuNavSub.vue.d.ts} +0 -0
  351. /package/dist/components/{QiuMenuNav → FouMenuNav}/index.vue.d.ts +0 -0
  352. /package/dist/components/{QiuPageMain → FouPageMain}/index.vue.d.ts +0 -0
  353. /package/dist/components/{QiuPagination → FouPagination}/index.vue.d.ts +0 -0
  354. /package/dist/components/{QiuPasswordStrength → FouPasswordStrength}/index.vue.d.ts +0 -0
  355. /package/dist/components/{QiuQrcode → FouQrcode}/index.vue.d.ts +0 -0
  356. /package/dist/components/{QiuRadio/QiuRadioGroup.vue.d.ts → FouRadio/FouRadioGroup.vue.d.ts} +0 -0
  357. /package/dist/components/{QiuSearchBar → FouSearchBar}/index.vue.d.ts +0 -0
  358. /package/dist/components/{QiuSelect/QiuOption.vue.d.ts → FouSelect/FouOption.vue.d.ts} +0 -0
  359. /package/dist/components/{QiuSparkline → FouSparkline}/index.vue.d.ts +0 -0
  360. /package/dist/components/{QiuSwitch → FouSwitch}/index.vue.d.ts +0 -0
  361. /package/dist/components/{QiuTabPane → FouTabPane}/index.vue.d.ts +0 -0
  362. /package/dist/components/{QiuTable → FouTable}/columns.d.ts +0 -0
  363. /package/dist/components/{QiuTable → FouTable}/useExtras.d.ts +0 -0
  364. /package/dist/components/{QiuTable → FouTable}/useResize.d.ts +0 -0
  365. /package/dist/components/{QiuTable → FouTable}/useVirtual.d.ts +0 -0
  366. /package/dist/components/{QiuTime → FouTime}/index.vue.d.ts +0 -0
  367. /package/dist/components/{QiuTimeAgo → FouTimeAgo}/index.vue.d.ts +0 -0
  368. /package/dist/components/{QiuTimelineItem → FouTimelineItem}/index.vue.d.ts +0 -0
  369. /package/dist/components/{QiuTooltip → FouTooltip}/index.vue.d.ts +0 -0
  370. /package/dist/components/{QiuTrend → FouTrend}/index.vue.d.ts +0 -0
  371. /package/dist/components/{QiuUploadCrop → FouUploadCrop}/index.vue.d.ts +0 -0
@@ -1,243 +0,0 @@
1
- <template>
2
- <qiu-dialog
3
- v-model="visibleInner"
4
- title="添加图片"
5
- width="720px"
6
- destroy-on-close
7
- class="badge-img-picker-dlg"
8
- @opened="load"
9
- >
10
- <qiu-tab-bar v-model="tab">
11
- <qiu-tab-pane label="图片库" name="lib">
12
- <p class="dlg-hint">双击缩略图插入到画布;删除后模板里若仍引用该地址将无法显示。</p>
13
- <div v-qiu-loading="loading" class="lib-grid">
14
- <div
15
- v-for="it in list"
16
- :key="it.id"
17
- class="lib-cell"
18
- @dblclick="pick(it)"
19
- >
20
- <img :src="fullUrl(it.url)" alt="" class="thumb" loading="lazy" />
21
- <div class="meta" :title="it.orig_name">{{ it.orig_name || '未命名' }}</div>
22
- <qiu-button type="danger" link size="small" class="del" @click.stop="remove(it)">删除</qiu-button>
23
- </div>
24
- </div>
25
- <qiu-empty v-if="!loading && !list.length" description="暂无图片,可到「上传本地文件」添加" />
26
- </qiu-tab-pane>
27
- <qiu-tab-pane label="上传本地文件" name="up">
28
- <p class="dlg-hint">上传后会写入图片库,并自动插入当前画布;可多选文件或一次拖拽多张。</p>
29
- <div
30
- class="upload-drop"
31
- @dragover.prevent
32
- @drop.prevent="onDrop"
33
- @click="fileInputRef?.click()"
34
- >
35
- <qiu-icon icon="upload-cloud-2-line" class="upload-ico" />
36
- <div class="upload-text">拖到此处,或 <em>点击选择多个文件</em></div>
37
- <div class="upload-sub">支持 JPG / PNG / GIF / WebP / BMP,单文件不超过 8MB</div>
38
- <input
39
- ref="fileInputRef"
40
- type="file"
41
- multiple
42
- accept="image/jpeg,image/png,image/gif,image/webp,image/bmp"
43
- class="upload-input"
44
- @change="onFileInput"
45
- />
46
- </div>
47
- </qiu-tab-pane>
48
- </qiu-tab-bar>
49
-
50
- <qiu-dialog v-model="deleteConfirmVisible" title="删除确认" width="400px" append-to-body>
51
- <p>确定删除「{{ deleteTarget?.orig_name || '该图片' }}」?</p>
52
- <template #footer>
53
- <qiu-button @click="deleteConfirmVisible = false">取消</qiu-button>
54
- <qiu-button type="danger" @click="doRemove">删除</qiu-button>
55
- </template>
56
- </qiu-dialog>
57
- </qiu-dialog>
58
- </template>
59
-
60
- <script setup lang="ts">
61
- import { ref, watch, computed } from 'vue'
62
- import { qiuMsg } from '../../QiuMsg'
63
- import { getBadgeLibraryImages, uploadBadgeLibraryImage, deleteBadgeLibraryImage } from '../api/index'
64
- import { resolveAssetUrl } from '../shared/assetUrl'
65
-
66
- const props = withDefaults(
67
- defineProps<{ modelValue: boolean; defaultTab?: 'lib' | 'up' }>(),
68
- { defaultTab: 'lib' }
69
- )
70
- const emit = defineEmits<{ 'update:modelValue': [boolean]; pick: [string] }>()
71
-
72
- const visibleInner = computed({
73
- get: () => props.modelValue,
74
- set: (v: boolean) => emit('update:modelValue', v),
75
- })
76
-
77
- const tab = ref('lib')
78
- const loading = ref(false)
79
- const list = ref<any[]>([])
80
- const fileInputRef = ref<HTMLInputElement | null>(null)
81
- const deleteConfirmVisible = ref(false)
82
- const deleteTarget = ref<{ id: number; orig_name?: string } | null>(null)
83
-
84
- function fullUrl(path: string) {
85
- return resolveAssetUrl(path)
86
- }
87
-
88
- async function load() {
89
- loading.value = true
90
- try {
91
- const res: any = await getBadgeLibraryImages({ page: 1, page_size: 120 })
92
- list.value = res.data?.list ?? []
93
- } catch {
94
- list.value = []
95
- } finally {
96
- loading.value = false
97
- }
98
- }
99
-
100
- watch(
101
- () => props.modelValue,
102
- (v) => {
103
- if (v) tab.value = props.defaultTab
104
- }
105
- )
106
-
107
- function pick(it: { url: string }) {
108
- if (!it?.url) return
109
- emit('pick', resolveAssetUrl(it.url))
110
- visibleInner.value = false
111
- }
112
-
113
- function remove(it: { id: number; orig_name?: string }) {
114
- deleteTarget.value = it
115
- deleteConfirmVisible.value = true
116
- }
117
-
118
- async function doRemove() {
119
- const it = deleteTarget.value
120
- if (!it) return
121
- deleteConfirmVisible.value = false
122
- try {
123
- await deleteBadgeLibraryImage(Number(it.id))
124
- qiuMsg.success('已删除')
125
- await load()
126
- } catch {
127
- /* 拦截器 */
128
- }
129
- }
130
-
131
- const MAX_BADGE_UPLOAD_MB = 8
132
-
133
- async function uploadFiles(files: FileList | File[]) {
134
- for (const file of Array.from(files)) {
135
- const mb = file.size / (1024 * 1024)
136
- if (mb > MAX_BADGE_UPLOAD_MB) {
137
- qiuMsg.error(`「${file.name}」超过 ${MAX_BADGE_UPLOAD_MB}MB,已跳过`)
138
- continue
139
- }
140
- try {
141
- const res: any = await uploadBadgeLibraryImage(file)
142
- const url = res?.data?.url
143
- if (!url) {
144
- qiuMsg.error(`「${file.name}」上传失败`)
145
- continue
146
- }
147
- emit('pick', resolveAssetUrl(url))
148
- await load()
149
- } catch {
150
- /* 拦截器已提示 */
151
- }
152
- }
153
- }
154
-
155
- function onFileInput(e: Event) {
156
- const input = e.target as HTMLInputElement
157
- if (input.files?.length) uploadFiles(input.files)
158
- input.value = ''
159
- }
160
-
161
- function onDrop(e: DragEvent) {
162
- if (e.dataTransfer?.files?.length) uploadFiles(e.dataTransfer.files)
163
- }
164
- </script>
165
-
166
- <style scoped>
167
- .dlg-hint {
168
- font-size: 13px;
169
- color: #909399;
170
- margin: 0 0 12px;
171
- line-height: 1.5;
172
- }
173
- .lib-grid {
174
- display: grid;
175
- grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
176
- gap: 12px;
177
- max-height: 420px;
178
- overflow-y: auto;
179
- padding: 4px 0;
180
- }
181
- .lib-cell {
182
- border: 1px solid #ebeef5;
183
- border-radius: 8px;
184
- padding: 8px;
185
- cursor: pointer;
186
- transition: border-color 0.15s, box-shadow 0.15s;
187
- position: relative;
188
- }
189
- .lib-cell:hover {
190
- border-color: #409eff;
191
- box-shadow: 0 2px 8px rgba(64, 158, 255, 0.15);
192
- }
193
- .thumb {
194
- width: 100%;
195
- height: 100px;
196
- object-fit: contain;
197
- background: #f5f7fa;
198
- border-radius: 4px;
199
- }
200
- .meta {
201
- font-size: 11px;
202
- color: #606266;
203
- margin-top: 6px;
204
- overflow: hidden;
205
- text-overflow: ellipsis;
206
- white-space: nowrap;
207
- }
208
- .del {
209
- margin-top: 4px;
210
- }
211
- .upload-drop {
212
- padding: 40px 20px;
213
- text-align: center;
214
- cursor: pointer;
215
- border: 1px dashed #dcdfe6;
216
- border-radius: 8px;
217
- background: #fafafa;
218
- }
219
- .upload-drop:hover {
220
- border-color: #409eff;
221
- }
222
- .upload-input {
223
- display: none;
224
- }
225
- .upload-ico {
226
- font-size: 48px;
227
- color: #c0c4cc;
228
- margin-bottom: 8px;
229
- }
230
- .upload-text {
231
- font-size: 14px;
232
- color: #606266;
233
- }
234
- .upload-text em {
235
- color: #409eff;
236
- font-style: normal;
237
- }
238
- .upload-sub {
239
- font-size: 12px;
240
- color: #909399;
241
- margin-top: 8px;
242
- }
243
- </style>
@@ -1,30 +0,0 @@
1
- <template>
2
- <qiu-dialog
3
- :model-value="modelValue"
4
- title="证件图片库"
5
- width="min(920px, 94vw)"
6
- class="badge-library-manager-dialog"
7
- append-to-body
8
- destroy-on-close
9
- @update:model-value="$emit('update:modelValue', $event)"
10
- >
11
- <p class="dlg-tip">管理模板编辑中上传的图片;删除后已保存模板里若仍引用该地址将无法显示。</p>
12
- <BadgeLibraryPanel v-if="modelValue" />
13
- </qiu-dialog>
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import BadgeLibraryPanel from './BadgeLibraryPanel.vue'
18
-
19
- defineProps<{ modelValue: boolean }>()
20
- defineEmits<{ 'update:modelValue': [boolean] }>()
21
- </script>
22
-
23
- <style scoped>
24
- .dlg-tip {
25
- margin: 0 0 14px;
26
- font-size: 13px;
27
- color: #909399;
28
- line-height: 1.5;
29
- }
30
- </style>
@@ -1,182 +0,0 @@
1
- <template>
2
- <div class="badge-library-panel">
3
- <qiu-card shadow="never" class="toolbar-card">
4
- <label class="upload-btn">
5
- <input
6
- type="file"
7
- accept="image/jpeg,image/png,image/gif,image/webp,image/bmp"
8
- class="upload-input"
9
- @change="onFileChange"
10
- />
11
- <qiu-button type="primary" tag="span">上传图片</qiu-button>
12
- </label>
13
- <span class="hint">上传后可在模板编辑器的「图片库」中选用。</span>
14
- </qiu-card>
15
-
16
- <qiu-card v-qiu-loading="loading" shadow="never">
17
- <div class="lib-grid">
18
- <div v-for="it in list" :key="it.id" class="lib-cell">
19
- <img :src="fullUrl(it.url)" alt="" class="thumb" loading="lazy" />
20
- <div class="meta" :title="it.orig_name">{{ it.orig_name || '未命名' }}</div>
21
- <div class="sub">{{ formatSize(it.size) }} · {{ it.create_time }}</div>
22
- <qiu-button type="danger" link size="small" @click="remove(it)">删除</qiu-button>
23
- </div>
24
- </div>
25
- <qiu-empty v-if="!loading && !list.length" description="暂无图片" />
26
- <div v-if="total > pageSize" class="pager">
27
- <qiu-pagination
28
- v-model:current-page="page"
29
- :page-size="pageSize"
30
- layout="total, prev, pager, next"
31
- :total="total"
32
- @current-change="load"
33
- />
34
- </div>
35
- </qiu-card>
36
-
37
- <qiu-dialog v-model="deleteConfirmVisible" title="删除确认" width="400px">
38
- <p>确定删除「{{ deleteTarget?.orig_name || '该图片' }}」?</p>
39
- <template #footer>
40
- <qiu-button @click="deleteConfirmVisible = false">取消</qiu-button>
41
- <qiu-button type="danger" @click="doRemove">删除</qiu-button>
42
- </template>
43
- </qiu-dialog>
44
- </div>
45
- </template>
46
-
47
- <script setup lang="ts">
48
- import { ref, onMounted } from 'vue'
49
- import { qiuMsg } from '../../QiuMsg'
50
- import { getBadgeLibraryImages, uploadBadgeLibraryImage, deleteBadgeLibraryImage } from '../api/index'
51
- import { resolveAssetUrl } from '../shared/assetUrl'
52
-
53
- const loading = ref(false)
54
- const list = ref<any[]>([])
55
- const total = ref(0)
56
- const page = ref(1)
57
- const pageSize = ref(40)
58
- const deleteConfirmVisible = ref(false)
59
- const deleteTarget = ref<{ id: number; orig_name?: string } | null>(null)
60
-
61
- function fullUrl(path: string) {
62
- return resolveAssetUrl(path)
63
- }
64
-
65
- function formatSize(n: unknown) {
66
- const b = Number(n) || 0
67
- if (b < 1024) return `${b} B`
68
- if (b < 1024 * 1024) return `${(b / 1024).toFixed(1)} KB`
69
- return `${(b / 1024 / 1024).toFixed(2)} MB`
70
- }
71
-
72
- async function load() {
73
- loading.value = true
74
- try {
75
- const res: any = await getBadgeLibraryImages({ page: page.value, page_size: pageSize.value })
76
- list.value = res.data?.list ?? []
77
- total.value = Number(res.data?.total ?? 0)
78
- } catch {
79
- list.value = []
80
- total.value = 0
81
- } finally {
82
- loading.value = false
83
- }
84
- }
85
-
86
- async function onFileChange(e: Event) {
87
- const input = e.target as HTMLInputElement
88
- const file = input.files?.[0]
89
- input.value = ''
90
- if (!file) return
91
- try {
92
- await uploadBadgeLibraryImage(file)
93
- qiuMsg.success('已上传')
94
- page.value = 1
95
- await load()
96
- } catch {
97
- /* */
98
- }
99
- }
100
-
101
- function remove(it: { id: number; orig_name?: string }) {
102
- deleteTarget.value = it
103
- deleteConfirmVisible.value = true
104
- }
105
-
106
- async function doRemove() {
107
- const it = deleteTarget.value
108
- if (!it) return
109
- deleteConfirmVisible.value = false
110
- try {
111
- await deleteBadgeLibraryImage(Number(it.id))
112
- qiuMsg.success('已删除')
113
- await load()
114
- } catch {
115
- /* */
116
- }
117
- }
118
-
119
- onMounted(() => load())
120
-
121
- defineExpose({ load })
122
- </script>
123
-
124
- <style scoped>
125
- .badge-library-panel .toolbar-card {
126
- margin-bottom: 16px;
127
- display: flex;
128
- align-items: center;
129
- gap: 16px;
130
- flex-wrap: wrap;
131
- }
132
- .upload-btn {
133
- position: relative;
134
- display: inline-flex;
135
- cursor: pointer;
136
- }
137
- .upload-input {
138
- position: absolute;
139
- width: 0;
140
- height: 0;
141
- opacity: 0;
142
- pointer-events: none;
143
- }
144
- .hint {
145
- font-size: 13px;
146
- color: #909399;
147
- }
148
- .lib-grid {
149
- display: grid;
150
- grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
151
- gap: 12px;
152
- }
153
- .lib-cell {
154
- border: 1px solid #ebeef5;
155
- border-radius: 8px;
156
- padding: 10px;
157
- }
158
- .thumb {
159
- width: 100%;
160
- height: 120px;
161
- object-fit: contain;
162
- background: #f5f7fa;
163
- border-radius: 6px;
164
- }
165
- .meta {
166
- font-size: 13px;
167
- margin-top: 8px;
168
- overflow: hidden;
169
- text-overflow: ellipsis;
170
- white-space: nowrap;
171
- }
172
- .sub {
173
- font-size: 12px;
174
- color: #909399;
175
- margin: 4px 0 8px;
176
- }
177
- .pager {
178
- margin-top: 16px;
179
- display: flex;
180
- justify-content: flex-end;
181
- }
182
- </style>
@@ -1,53 +0,0 @@
1
- import { ref, watch, onUnmounted, nextTick } from 'vue'
2
-
3
- /** 测量容器高度供 qiu-table 的 `height` 使用,使表格占满剩余区域。
4
- * 使用 ResizeObserver(宿主为表格外层 div,非表格根节点)+ window resize,避免仅靠窗口尺寸遗漏侧栏折叠等变化。 */
5
- export function useTableHostHeight(minHeight = 160) {
6
- const hostRef = ref<HTMLElement | null>(null)
7
- const tableHeight = ref(Math.max(minHeight, 200))
8
- let raf = 0
9
- let ro: ResizeObserver | null = null
10
- let removeWindowListener: (() => void) | null = null
11
-
12
- const measure = () => {
13
- const el = hostRef.value
14
- if (!el) return
15
- cancelAnimationFrame(raf)
16
- raf = requestAnimationFrame(() => {
17
- const h = Math.floor(el.getBoundingClientRect().height)
18
- const next = Math.max(minHeight, h)
19
- if (Math.abs(next - tableHeight.value) > 1) {
20
- tableHeight.value = next
21
- }
22
- })
23
- }
24
-
25
- const cleanup = () => {
26
- removeWindowListener?.()
27
- removeWindowListener = null
28
- ro?.disconnect()
29
- ro = null
30
- }
31
-
32
- watch(
33
- hostRef,
34
- (el) => {
35
- cleanup()
36
- if (!el) return
37
- nextTick(() => measure())
38
- const onWinResize = () => measure()
39
- window.addEventListener('resize', onWinResize, { passive: true })
40
- removeWindowListener = () => window.removeEventListener('resize', onWinResize)
41
- ro = new ResizeObserver(() => measure())
42
- ro.observe(el)
43
- },
44
- { flush: 'post' }
45
- )
46
-
47
- onUnmounted(() => {
48
- cleanup()
49
- cancelAnimationFrame(raf)
50
- })
51
-
52
- return { hostRef, tableHeight, recalcTableHeight: measure }
53
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * QiuBadge — 证件 / 桌签制作插件
3
- * 源码迁自 zhihui web-admin + shared,先落地再调。
4
- */
5
- /** 编辑器真源在 QiuCanvasKit;此入口保持兼容 */
6
- export { default as QiuBadgeTemplateEditor } from '../QiuCanvasKit/QiuCanvasEditor.vue'
7
- export { default as QiuBadgeTemplateList } from './views/BadgeTemplateListView.vue'
8
- export { default as QiuBadgeManage } from './views/BadgeManageView.vue'
9
- export { default as QiuBadgeLibrary } from './views/BadgeLibraryView.vue'
10
- export { default as QiuDeskLabel } from './views/DeskLabelView.vue'
11
- export { default as QiuDeskLabelTemplateList } from './views/DeskLabelTemplateListView.vue'
12
- export { default as QiuBadgeTemplateRenderer } from './shared/BadgeTemplateRenderer.vue'
13
- export { default as QiuBadgeImagePickerDialog } from './components/BadgeImagePickerDialog.vue'
14
- export { default as QiuBadgeLibraryManagerDialog } from './components/BadgeLibraryManagerDialog.vue'
15
- export { default as QiuBadgeLibraryPanel } from './components/BadgeLibraryPanel.vue'
16
- export * from './shared/badgeTemplate'
17
- export * from './shared/assetUrl'
18
- export * as QiuBadgeApi from './api/index'
@@ -1,32 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * 兼容旧名:委托 QiuCanvasRenderer
4
- * @author qiuye
5
- * @email yjk150@qq.com
6
- * @date 2026-08-16
7
- */
8
- import QiuCanvasRenderer from '../../QiuCanvasKit/QiuCanvasRenderer.vue'
9
- import type { BadgeTemplateDoc } from './badgeTemplate'
10
- import type { MergeContext } from '../../QiuCanvasKit/types'
11
-
12
- defineOptions({ name: 'QiuBadgeTemplateRenderer' })
13
-
14
- withDefaults(
15
- defineProps<{
16
- doc: BadgeTemplateDoc | null
17
- mergeData?: MergeContext | Record<string, string>
18
- screenScale?: number
19
- enableLinks?: boolean
20
- }>(),
21
- { screenScale: 1, mergeData: () => ({}), enableLinks: false }
22
- )
23
- </script>
24
-
25
- <template>
26
- <QiuCanvasRenderer
27
- :doc="(doc as any)"
28
- :merge-data="mergeData"
29
- :screen-scale="screenScale"
30
- :enable-links="enableLinks"
31
- />
32
- </template>
@@ -1,26 +0,0 @@
1
- export function resolveAssetUrl(src: string | null | undefined): string {
2
- const value = String(src || '').trim()
3
- if (!value) return ''
4
- if (/^data:/i.test(value) || /^blob:/i.test(value)) return value
5
- if (/^(https?:)?\/\//i.test(value)) {
6
- try {
7
- const parsed = new URL(value, window.location.origin)
8
- if (parsed.pathname.startsWith('/uploads/')) {
9
- // Always prefer same-origin uploads path so html2canvas/jsPDF can render images
10
- // without being blocked by cross-origin resource restrictions in production.
11
- return `${parsed.pathname}${parsed.search}${parsed.hash}`
12
- }
13
- } catch {}
14
- return value
15
- }
16
- if (value.startsWith('/uploads/')) {
17
- return value
18
- }
19
-
20
- const raw = import.meta.env.VITE_API_BASE_URL
21
- const apiBase = typeof raw === 'string' ? raw.trim().replace(/\/$/, '') : ''
22
- if (!apiBase) return value.startsWith('/') ? value : `/${value}`
23
-
24
- const staticBase = apiBase.replace(/\/api$/i, '')
25
- return `${staticBase}${value.startsWith('/') ? value : `/${value}`}`
26
- }