@spacecorexdev/core 0.0.2 → 0.0.5

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 (345) hide show
  1. package/package.json +20 -38
  2. package/public/cmaps/78-EUC-H.bcmap +0 -0
  3. package/public/cmaps/78-EUC-V.bcmap +0 -0
  4. package/public/cmaps/78-H.bcmap +0 -0
  5. package/public/cmaps/78-RKSJ-H.bcmap +0 -0
  6. package/public/cmaps/78-RKSJ-V.bcmap +0 -0
  7. package/public/cmaps/78-V.bcmap +0 -0
  8. package/public/cmaps/78ms-RKSJ-H.bcmap +0 -0
  9. package/public/cmaps/78ms-RKSJ-V.bcmap +0 -0
  10. package/public/cmaps/83pv-RKSJ-H.bcmap +0 -0
  11. package/public/cmaps/90ms-RKSJ-H.bcmap +0 -0
  12. package/public/cmaps/90ms-RKSJ-V.bcmap +0 -0
  13. package/public/cmaps/90msp-RKSJ-H.bcmap +0 -0
  14. package/public/cmaps/90msp-RKSJ-V.bcmap +0 -0
  15. package/public/cmaps/90pv-RKSJ-H.bcmap +0 -0
  16. package/public/cmaps/90pv-RKSJ-V.bcmap +0 -0
  17. package/public/cmaps/Add-H.bcmap +0 -0
  18. package/public/cmaps/Add-RKSJ-H.bcmap +0 -0
  19. package/public/cmaps/Add-RKSJ-V.bcmap +0 -0
  20. package/public/cmaps/Add-V.bcmap +0 -0
  21. package/public/cmaps/Adobe-CNS1-0.bcmap +0 -0
  22. package/public/cmaps/Adobe-CNS1-1.bcmap +0 -0
  23. package/public/cmaps/Adobe-CNS1-2.bcmap +0 -0
  24. package/public/cmaps/Adobe-CNS1-3.bcmap +0 -0
  25. package/public/cmaps/Adobe-CNS1-4.bcmap +0 -0
  26. package/public/cmaps/Adobe-CNS1-5.bcmap +0 -0
  27. package/public/cmaps/Adobe-CNS1-6.bcmap +0 -0
  28. package/public/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  29. package/public/cmaps/Adobe-GB1-0.bcmap +0 -0
  30. package/public/cmaps/Adobe-GB1-1.bcmap +0 -0
  31. package/public/cmaps/Adobe-GB1-2.bcmap +0 -0
  32. package/public/cmaps/Adobe-GB1-3.bcmap +0 -0
  33. package/public/cmaps/Adobe-GB1-4.bcmap +0 -0
  34. package/public/cmaps/Adobe-GB1-5.bcmap +0 -0
  35. package/public/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  36. package/public/cmaps/Adobe-Japan1-0.bcmap +0 -0
  37. package/public/cmaps/Adobe-Japan1-1.bcmap +0 -0
  38. package/public/cmaps/Adobe-Japan1-2.bcmap +0 -0
  39. package/public/cmaps/Adobe-Japan1-3.bcmap +0 -0
  40. package/public/cmaps/Adobe-Japan1-4.bcmap +0 -0
  41. package/public/cmaps/Adobe-Japan1-5.bcmap +0 -0
  42. package/public/cmaps/Adobe-Japan1-6.bcmap +0 -0
  43. package/public/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  44. package/public/cmaps/Adobe-Korea1-0.bcmap +0 -0
  45. package/public/cmaps/Adobe-Korea1-1.bcmap +0 -0
  46. package/public/cmaps/Adobe-Korea1-2.bcmap +0 -0
  47. package/public/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  48. package/public/cmaps/B5-H.bcmap +0 -0
  49. package/public/cmaps/B5-V.bcmap +0 -0
  50. package/public/cmaps/B5pc-H.bcmap +0 -0
  51. package/public/cmaps/B5pc-V.bcmap +0 -0
  52. package/public/cmaps/CNS-EUC-H.bcmap +0 -0
  53. package/public/cmaps/CNS-EUC-V.bcmap +0 -0
  54. package/public/cmaps/CNS1-H.bcmap +0 -0
  55. package/public/cmaps/CNS1-V.bcmap +0 -0
  56. package/public/cmaps/CNS2-H.bcmap +0 -0
  57. package/public/cmaps/CNS2-V.bcmap +3 -0
  58. package/public/cmaps/ETHK-B5-H.bcmap +0 -0
  59. package/public/cmaps/ETHK-B5-V.bcmap +0 -0
  60. package/public/cmaps/ETen-B5-H.bcmap +0 -0
  61. package/public/cmaps/ETen-B5-V.bcmap +0 -0
  62. package/public/cmaps/ETenms-B5-H.bcmap +3 -0
  63. package/public/cmaps/ETenms-B5-V.bcmap +0 -0
  64. package/public/cmaps/EUC-H.bcmap +0 -0
  65. package/public/cmaps/EUC-V.bcmap +0 -0
  66. package/public/cmaps/Ext-H.bcmap +0 -0
  67. package/public/cmaps/Ext-RKSJ-H.bcmap +0 -0
  68. package/public/cmaps/Ext-RKSJ-V.bcmap +0 -0
  69. package/public/cmaps/Ext-V.bcmap +0 -0
  70. package/public/cmaps/GB-EUC-H.bcmap +0 -0
  71. package/public/cmaps/GB-EUC-V.bcmap +0 -0
  72. package/public/cmaps/GB-H.bcmap +4 -0
  73. package/public/cmaps/GB-V.bcmap +0 -0
  74. package/public/cmaps/GBK-EUC-H.bcmap +0 -0
  75. package/public/cmaps/GBK-EUC-V.bcmap +0 -0
  76. package/public/cmaps/GBK2K-H.bcmap +0 -0
  77. package/public/cmaps/GBK2K-V.bcmap +0 -0
  78. package/public/cmaps/GBKp-EUC-H.bcmap +0 -0
  79. package/public/cmaps/GBKp-EUC-V.bcmap +0 -0
  80. package/public/cmaps/GBT-EUC-H.bcmap +0 -0
  81. package/public/cmaps/GBT-EUC-V.bcmap +0 -0
  82. package/public/cmaps/GBT-H.bcmap +0 -0
  83. package/public/cmaps/GBT-V.bcmap +0 -0
  84. package/public/cmaps/GBTpc-EUC-H.bcmap +0 -0
  85. package/public/cmaps/GBTpc-EUC-V.bcmap +0 -0
  86. package/public/cmaps/GBpc-EUC-H.bcmap +0 -0
  87. package/public/cmaps/GBpc-EUC-V.bcmap +0 -0
  88. package/public/cmaps/H.bcmap +0 -0
  89. package/public/cmaps/HKdla-B5-H.bcmap +0 -0
  90. package/public/cmaps/HKdla-B5-V.bcmap +0 -0
  91. package/public/cmaps/HKdlb-B5-H.bcmap +0 -0
  92. package/public/cmaps/HKdlb-B5-V.bcmap +0 -0
  93. package/public/cmaps/HKgccs-B5-H.bcmap +0 -0
  94. package/public/cmaps/HKgccs-B5-V.bcmap +0 -0
  95. package/public/cmaps/HKm314-B5-H.bcmap +0 -0
  96. package/public/cmaps/HKm314-B5-V.bcmap +0 -0
  97. package/public/cmaps/HKm471-B5-H.bcmap +0 -0
  98. package/public/cmaps/HKm471-B5-V.bcmap +0 -0
  99. package/public/cmaps/HKscs-B5-H.bcmap +0 -0
  100. package/public/cmaps/HKscs-B5-V.bcmap +0 -0
  101. package/public/cmaps/Hankaku.bcmap +0 -0
  102. package/public/cmaps/Hiragana.bcmap +0 -0
  103. package/public/cmaps/KSC-EUC-H.bcmap +0 -0
  104. package/public/cmaps/KSC-EUC-V.bcmap +0 -0
  105. package/public/cmaps/KSC-H.bcmap +0 -0
  106. package/public/cmaps/KSC-Johab-H.bcmap +0 -0
  107. package/public/cmaps/KSC-Johab-V.bcmap +0 -0
  108. package/public/cmaps/KSC-V.bcmap +0 -0
  109. package/public/cmaps/KSCms-UHC-H.bcmap +0 -0
  110. package/public/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  111. package/public/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  112. package/public/cmaps/KSCms-UHC-V.bcmap +0 -0
  113. package/public/cmaps/KSCpc-EUC-H.bcmap +0 -0
  114. package/public/cmaps/KSCpc-EUC-V.bcmap +0 -0
  115. package/public/cmaps/Katakana.bcmap +0 -0
  116. package/public/cmaps/LICENSE +36 -0
  117. package/public/cmaps/NWP-H.bcmap +0 -0
  118. package/public/cmaps/NWP-V.bcmap +0 -0
  119. package/public/cmaps/RKSJ-H.bcmap +0 -0
  120. package/public/cmaps/RKSJ-V.bcmap +0 -0
  121. package/public/cmaps/Roman.bcmap +0 -0
  122. package/public/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  123. package/public/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  124. package/public/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  125. package/public/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  126. package/public/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  127. package/public/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  128. package/public/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  129. package/public/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  130. package/public/cmaps/UniGB-UCS2-H.bcmap +0 -0
  131. package/public/cmaps/UniGB-UCS2-V.bcmap +0 -0
  132. package/public/cmaps/UniGB-UTF16-H.bcmap +0 -0
  133. package/public/cmaps/UniGB-UTF16-V.bcmap +0 -0
  134. package/public/cmaps/UniGB-UTF32-H.bcmap +0 -0
  135. package/public/cmaps/UniGB-UTF32-V.bcmap +0 -0
  136. package/public/cmaps/UniGB-UTF8-H.bcmap +0 -0
  137. package/public/cmaps/UniGB-UTF8-V.bcmap +0 -0
  138. package/public/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  139. package/public/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  140. package/public/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  141. package/public/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  142. package/public/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  143. package/public/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  144. package/public/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  145. package/public/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  146. package/public/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  147. package/public/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  148. package/public/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  149. package/public/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  150. package/public/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  151. package/public/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  152. package/public/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  153. package/public/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  154. package/public/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  155. package/public/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  156. package/public/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  157. package/public/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  158. package/public/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  159. package/public/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  160. package/public/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  161. package/public/cmaps/UniKS-UCS2-H.bcmap +0 -0
  162. package/public/cmaps/UniKS-UCS2-V.bcmap +0 -0
  163. package/public/cmaps/UniKS-UTF16-H.bcmap +0 -0
  164. package/public/cmaps/UniKS-UTF16-V.bcmap +0 -0
  165. package/public/cmaps/UniKS-UTF32-H.bcmap +0 -0
  166. package/public/cmaps/UniKS-UTF32-V.bcmap +0 -0
  167. package/public/cmaps/UniKS-UTF8-H.bcmap +0 -0
  168. package/public/cmaps/UniKS-UTF8-V.bcmap +0 -0
  169. package/public/cmaps/V.bcmap +0 -0
  170. package/public/cmaps/WP-Symbol.bcmap +0 -0
  171. package/public/polyfills/polyfills.js +802 -0
  172. package/public/vendor/docx/docx.worker.js +5 -0
  173. package/public/vendor/docx/jszip.min.js +13 -0
  174. package/public/vendor/libarchive/libarchive.wasm +0 -0
  175. package/public/vendor/libarchive/worker-bundle.js +6 -0
  176. package/public/vendor/pptx/pptx.worker.js +26 -0
  177. package/public/wasm/cad/0.8.2/dwfv-render.wasm +0 -0
  178. package/public/wasm/cad/0.8.2/dwg-worker.js +24 -0
  179. package/public/wasm/cad/0.8.2/dwg-worker.js.map +1 -0
  180. package/public/wasm/cad/0.8.2/libredwg-web.js +2 -0
  181. package/public/wasm/cad/0.8.2/libredwg-web.wasm +0 -0
  182. package/public/wasm/cad/dwfv-render.wasm +0 -0
  183. package/public/wasm/cad/dwg-worker.js +24 -0
  184. package/public/wasm/cad/dwg-worker.js.map +1 -0
  185. package/public/wasm/cad/libredwg-web.js +2 -0
  186. package/public/wasm/cad/libredwg-web.wasm +0 -0
  187. package/public/wasm/data/sql-wasm.wasm +0 -0
  188. package/public/wasm/hdiff.wasm +0 -0
  189. package/public/wasm/model/LICENSE.occt-import-js.txt +504 -0
  190. package/public/wasm/model/LICENSE.occt.txt +502 -0
  191. package/public/wasm/model/occt-import-js.js +19 -0
  192. package/public/wasm/model/occt-import-js.wasm +0 -0
  193. package/public/wasm/model/occt-worker.js +83 -0
  194. package/public/wasm/typst/fonts/DejaVuSansMono-Bold.ttf +0 -0
  195. package/public/wasm/typst/fonts/DejaVuSansMono-BoldOblique.ttf +0 -0
  196. package/public/wasm/typst/fonts/DejaVuSansMono-Oblique.ttf +0 -0
  197. package/public/wasm/typst/fonts/DejaVuSansMono.ttf +0 -0
  198. package/public/wasm/typst/fonts/LibertinusSerif-Bold.otf +0 -0
  199. package/public/wasm/typst/fonts/LibertinusSerif-BoldItalic.otf +0 -0
  200. package/public/wasm/typst/fonts/LibertinusSerif-Italic.otf +0 -0
  201. package/public/wasm/typst/fonts/LibertinusSerif-Regular.otf +0 -0
  202. package/public/wasm/typst/fonts/LibertinusSerif-Semibold.otf +0 -0
  203. package/public/wasm/typst/fonts/LibertinusSerif-SemiboldItalic.otf +0 -0
  204. package/public/wasm/typst/fonts/NewCM10-Bold.otf +0 -0
  205. package/public/wasm/typst/fonts/NewCM10-BoldItalic.otf +0 -0
  206. package/public/wasm/typst/fonts/NewCM10-Italic.otf +0 -0
  207. package/public/wasm/typst/fonts/NewCM10-Regular.otf +0 -0
  208. package/public/wasm/typst/fonts/NewCMMath-Bold.otf +0 -0
  209. package/public/wasm/typst/fonts/NewCMMath-Book.otf +0 -0
  210. package/public/wasm/typst/fonts/NewCMMath-Regular.otf +0 -0
  211. package/public/wasm/typst/fonts/README.md +7 -0
  212. package/public/wasm/typst/typst_ts_renderer_bg.wasm +0 -0
  213. package/public/wasm/typst/typst_ts_web_compiler_bg.wasm +0 -0
  214. package/scripts/patch-docx-grid.cjs +412 -0
  215. package/src/api/_base.ts +243 -0
  216. package/src/api/index.ts +17 -0
  217. package/src/api/project.ts +1345 -0
  218. package/src/api/user.ts +1174 -0
  219. package/src/contract.ts +50 -0
  220. package/src/hooks/index.ts +2 -0
  221. package/{dist/hooks/index.js → src/hooks/useLongPress.ts} +53 -49
  222. package/src/hooks/useOnlineStatus.ts +22 -0
  223. package/src/index.ts +14 -0
  224. package/src/types/id.ts +2 -0
  225. package/src/types/index.ts +5 -0
  226. package/src/types/project/base.ts +63 -0
  227. package/src/types/project/contract.ts +79 -0
  228. package/src/types/project/contractStatus.tsx +15 -0
  229. package/src/types/project/index.ts +5 -0
  230. package/src/types/project/member.ts +46 -0
  231. package/src/types/project/progress.ts +43 -0
  232. package/src/types/projectRole.ts +17 -0
  233. package/src/types/theme.ts +1 -0
  234. package/src/types/user/index.ts +1 -0
  235. package/src/types/user/role.ts +7 -0
  236. package/src/ui/CommentTimeline/index.tsx +330 -0
  237. package/src/ui/FileManager/FileContextMenu.tsx +628 -0
  238. package/src/ui/FileManager/FileGridView.tsx +529 -0
  239. package/src/ui/FileManager/FileTableView.tsx +405 -0
  240. package/src/ui/FileManager/FileToolbar.tsx +119 -0
  241. package/src/ui/FileManager/FileVersionHistoryModal.tsx +175 -0
  242. package/src/ui/FileManager/MoveCopyToProjectModal.tsx +119 -0
  243. package/src/ui/FileManager/ShareToWechatModal.tsx +419 -0
  244. package/src/ui/FileManager/hooks/useFileManagerActions.ts +2532 -0
  245. package/src/ui/FileManager/hooks/useFileManagerState.ts +419 -0
  246. package/src/ui/FileManager/index.tsx +580 -0
  247. package/src/ui/FileManager/projectFileManagerApi.ts +57 -0
  248. package/src/ui/FileManager/types.ts +184 -0
  249. package/src/ui/FileManager/utils/fileDeltaWorker.ts +193 -0
  250. package/src/ui/FileManager/utils/fileTree.ts +178 -0
  251. package/src/ui/FileManager/utils/fileUpload.ts +714 -0
  252. package/src/ui/FileManager/utils/fileUtils.ts +65 -0
  253. package/src/ui/InvoiceRecordsList/index.tsx +813 -0
  254. package/src/ui/MyFileSelectorModal.tsx +261 -0
  255. package/src/ui/ProjectSelector/index.tsx +472 -0
  256. package/src/ui/ProjectSelector/projectCache.ts +40 -0
  257. package/src/ui/RoleSelector/index.tsx +473 -0
  258. package/src/ui/RoleSelector/roleCache.ts +40 -0
  259. package/src/ui/UIAlert.tsx +399 -0
  260. package/src/ui/UIAlertExample.tsx +129 -0
  261. package/src/ui/UIConfirm.tsx +335 -0
  262. package/src/ui/UIConfirmExample.tsx +165 -0
  263. package/src/ui/UIDatePicker.tsx +146 -0
  264. package/src/ui/UIDateRangePicker.tsx +38 -0
  265. package/src/ui/UIFilePreview/ExcelEditor/index.tsx +617 -0
  266. package/src/ui/UIFilePreview/ExcelEditor/types.ts +24 -0
  267. package/src/ui/UIFilePreview/ExportDropdown.css +85 -0
  268. package/src/ui/UIFilePreview/ExportDropdown.tsx +109 -0
  269. package/src/ui/UIFilePreview/IndexedDBUtils.ts +564 -0
  270. package/src/ui/UIFilePreview/MarkdownEditor/exportMarkdownPdf.ts +576 -0
  271. package/src/ui/UIFilePreview/MarkdownEditor/index.tsx +677 -0
  272. package/src/ui/UIFilePreview/MarkdownEditor/markdownEditor.css +1005 -0
  273. package/src/ui/UIFilePreview/MarkdownEditor/types.ts +15 -0
  274. package/src/ui/UIFilePreview/PPTXEditor/index.tsx +602 -0
  275. package/src/ui/UIFilePreview/RichDocEditor/exportRDocMarkdown.ts +77 -0
  276. package/src/ui/UIFilePreview/RichDocEditor/exportRDocPdf.ts +374 -0
  277. package/src/ui/UIFilePreview/RichDocEditor/index.tsx +730 -0
  278. package/src/ui/UIFilePreview/RichDocEditor/richdoc-editor.css +59 -0
  279. package/src/ui/UIFilePreview/UIFilePreview.tsx +611 -0
  280. package/src/ui/UIFilePreview/WordEditor/index.tsx +3933 -0
  281. package/src/ui/UIFilePreview/WordEditor/style.ts +1213 -0
  282. package/src/ui/UIFilePreview/WordEditor/word-editor.css +999 -0
  283. package/src/ui/UIFilePreview/filePreview.css +193 -0
  284. package/src/ui/UIFilePreview/filetypes/archive.tsx +66 -0
  285. package/src/ui/UIFilePreview/filetypes/cad.tsx +287 -0
  286. package/src/ui/UIFilePreview/filetypes/excel.tsx +355 -0
  287. package/src/ui/UIFilePreview/filetypes/image.tsx +20 -0
  288. package/src/ui/UIFilePreview/filetypes/imageLoader.ts +63 -0
  289. package/src/ui/UIFilePreview/filetypes/pdf.tsx +156 -0
  290. package/src/ui/UIFilePreview/filetypes/ppt.tsx +535 -0
  291. package/src/ui/UIFilePreview/filetypes/pptExportPdf.ts +523 -0
  292. package/src/ui/UIFilePreview/filetypes/video.tsx +482 -0
  293. package/src/ui/UIFilePreview/filetypes/word.tsx +245 -0
  294. package/src/ui/UIFilePreview/filetypes/wordExportMarkdown.ts +86 -0
  295. package/src/ui/UIFilePreview/filetypes/wordExportPdf.tsx +427 -0
  296. package/src/ui/UIFilePreview/index.ts +35 -0
  297. package/src/ui/UIFilePreview/pdfPagination.ts +143 -0
  298. package/src/ui/UIFilePreview/previewUtils.tsx +531 -0
  299. package/src/ui/UIFileUpload.tsx +382 -0
  300. package/src/ui/UIImageUpload.tsx +195 -0
  301. package/src/ui/UILoading.tsx +255 -0
  302. package/src/ui/UILoadingExample.tsx +139 -0
  303. package/src/ui/UISelect.tsx +105 -0
  304. package/src/ui/UIToast.tsx +381 -0
  305. package/src/ui/UIToastExample.tsx +69 -0
  306. package/src/ui/UIToastSingle.tsx +279 -0
  307. package/src/ui/UIViewToggle.tsx +64 -0
  308. package/src/ui/UserSelector/index.tsx +583 -0
  309. package/src/ui/index.ts +84 -0
  310. package/src/ui/upload/image.ts +135 -0
  311. package/src/ui/upload/index.ts +73 -0
  312. package/src/ui/upload/submitFile.ts +106 -0
  313. package/src/ui/upload/submitForm.ts +124 -0
  314. package/src/ui/upload/upload.err.ts +15 -0
  315. package/src/ui/upload/upload.ts +250 -0
  316. package/src/utils/CacheDepartmentInfo.ts +372 -0
  317. package/src/utils/CacheFileContent.ts +315 -0
  318. package/src/utils/CachePermissionInfo.ts +235 -0
  319. package/src/utils/CacheRoleInfo.ts +303 -0
  320. package/src/utils/CacheUserInfo.ts +818 -0
  321. package/src/utils/CacheViewToggleInfo.ts +182 -0
  322. package/src/utils/MessageContentUtils.ts +268 -0
  323. package/src/utils/clipboard.ts +70 -0
  324. package/src/utils/companyEmail.ts +19 -0
  325. package/src/utils/forbidDebugger.ts +59 -0
  326. package/src/utils/formatters.ts +94 -0
  327. package/src/utils/htmlUtils.tsx +59 -0
  328. package/src/utils/index.ts +18 -0
  329. package/src/utils/keyboard.ts +114 -0
  330. package/src/utils/mammothApi.ts +16 -0
  331. package/src/utils/polyfills.ts +928 -0
  332. package/src/utils/regex.ts +14 -0
  333. package/src/utils/storage.ts +95 -0
  334. package/src/utils/workerBootstrap.ts +87 -0
  335. package/dist/api/index.js +0 -1553
  336. package/dist/contract.js +0 -5
  337. package/dist/index.js +0 -4492
  338. package/dist/types/index.js +0 -49
  339. package/dist/ui/index.css +0 -1876
  340. package/dist/ui/index.js +0 -22245
  341. package/dist/utils/index.js +0 -4296
  342. /package/{dist → src}/styles/ant-modal.css +0 -0
  343. /package/{dist → src}/styles/ant-spin.css +0 -0
  344. /package/{dist → src}/styles/ant-table.css +0 -0
  345. /package/{dist → src}/styles/index.css +0 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * core 包导出的模块契约类型 —— 壳层与模块包之间的稳定接口。
3
+ */
4
+
5
+ /** 模块在壳层运行时接收的 props */
6
+ export interface ModuleRuntimeProps {
7
+ projectId?: string | null;
8
+ fileId?: string | null;
9
+ memberId?: string | null;
10
+ tab?: string | null;
11
+ onlyView?: boolean;
12
+ onBack?: () => void;
13
+ onNavigate?: (key: string) => void;
14
+ onPendingCountChange?: (count: number) => void;
15
+ onEmailUnreadCountChange?: (count: number, accountId?: string) => void;
16
+ emailAccounts?: Array<{
17
+ id: string; email: string; provider: string; sync_enabled?: boolean;
18
+ sync_interval?: number; last_sync_time?: string; token_expire_time?: string;
19
+ imapHost?: string; imapPort?: number; imapSsl?: boolean;
20
+ smtpHost?: string; smtpPort?: number; smtpSsl?: boolean;
21
+ createTime?: string; updateTime?: string;
22
+ }>;
23
+ onEmailAccountsChange?: (accounts: Array<{ id: string; email: string; provider: string }>) => void;
24
+ }
25
+
26
+ /** 模块包必须导出的 manifest —— 壳层通过它发现和装配模块 */
27
+ export interface ModuleManifest {
28
+ /** 模块唯一标识,与 src/displayModules 的 key 对齐 */
29
+ key: string;
30
+ /** 展示名 */
31
+ label: string;
32
+ /** 导航图标组件 */
33
+ icon?: unknown;
34
+ /** 路由段(会被加入路由表) */
35
+ routes: string[];
36
+ /** 权限码 */
37
+ permissions: string[];
38
+ /** 是否出现在顶部主导航 */
39
+ topNav: boolean;
40
+ /** 模块主组件(lazy 包装) */
41
+ component: React.LazyExoticComponent<React.ComponentType<ModuleRuntimeProps>>;
42
+ /** 构建时烘焙的 core 版本 —— 运行时与 CORE_VERSION 比对 */
43
+ coreVersion: string;
44
+ }
45
+
46
+ /**
47
+ * 当前 core 包版本 —— 由 package.json 的 version 字段决定。
48
+ * 运行时壳层会将模块 manifest.coreVersion 与本值比对,不一致则警告并拒绝运行。
49
+ */
50
+ export const CORE_VERSION = '0.1.0';
@@ -0,0 +1,2 @@
1
+ export * from './useLongPress';
2
+ export * from './useOnlineStatus';
@@ -1,53 +1,72 @@
1
- // src/hooks/useLongPress.ts
2
- import { useCallback, useEffect, useRef } from "react";
3
- var SUPPRESS_CONTEXT_MENU_MS = 1200;
4
- var suppressContextMenuUntil = 0;
5
- var contextMenuListenerCount = 0;
6
- var handleSuppressedContextMenu = (event) => {
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+
3
+ interface UseLongPressOptions {
4
+ delay?: number;
5
+ smallView?: boolean;
6
+ moveThreshold?: number;
7
+ }
8
+
9
+ const SUPPRESS_CONTEXT_MENU_MS = 1200;
10
+ let suppressContextMenuUntil = 0;
11
+ let contextMenuListenerCount = 0;
12
+
13
+ const handleSuppressedContextMenu = (event: MouseEvent) => {
7
14
  if (Date.now() > suppressContextMenuUntil) {
8
15
  return;
9
16
  }
17
+
10
18
  event.preventDefault();
11
19
  event.stopPropagation();
12
20
  event.stopImmediatePropagation();
13
21
  };
14
- var suppressNextContextMenu = () => {
22
+
23
+ const suppressNextContextMenu = () => {
15
24
  suppressContextMenuUntil = Date.now() + SUPPRESS_CONTEXT_MENU_MS;
16
25
  };
17
- function useLongPress(onLongPress, options = {}) {
26
+
27
+ export function useLongPress<T>(
28
+ onLongPress: (data: T, event: React.TouchEvent) => void,
29
+ options: UseLongPressOptions = {}
30
+ ) {
18
31
  const { delay = 500, smallView = false, moveThreshold = 10 } = options;
19
- const timers = useRef(/* @__PURE__ */ new Map());
20
- const longPressedMap = useRef(/* @__PURE__ */ new Map());
21
- const startPositions = useRef(/* @__PURE__ */ new Map());
22
- const getKey = useCallback((data) => {
23
- if (typeof data === "string") return data;
24
- if (typeof data === "object" && data !== null && "id" in data) {
25
- return String(data.id);
32
+ const timers = useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map());
33
+ const longPressedMap = useRef<Map<string, boolean>>(new Map());
34
+ const startPositions = useRef<Map<string, { x: number; y: number }>>(new Map());
35
+
36
+ const getKey = useCallback((data: T): string => {
37
+ if (typeof data === 'string') return data;
38
+ if (typeof data === 'object' && data !== null && 'id' in data) {
39
+ return String((data as any).id);
26
40
  }
27
41
  return String(data);
28
42
  }, []);
43
+
29
44
  useEffect(() => () => {
30
45
  timers.current.forEach((timer) => clearTimeout(timer));
31
46
  timers.current.clear();
32
47
  longPressedMap.current.clear();
33
48
  startPositions.current.clear();
34
49
  }, []);
50
+
35
51
  useEffect(() => {
36
52
  if (!smallView) {
37
53
  return;
38
54
  }
55
+
39
56
  if (contextMenuListenerCount === 0) {
40
- document.addEventListener("contextmenu", handleSuppressedContextMenu, true);
57
+ document.addEventListener('contextmenu', handleSuppressedContextMenu, true);
41
58
  }
42
59
  contextMenuListenerCount += 1;
60
+
43
61
  return () => {
44
62
  contextMenuListenerCount -= 1;
45
63
  if (contextMenuListenerCount === 0) {
46
- document.removeEventListener("contextmenu", handleSuppressedContextMenu, true);
64
+ document.removeEventListener('contextmenu', handleSuppressedContextMenu, true);
47
65
  }
48
66
  };
49
67
  }, [smallView]);
50
- const cancelTimer = useCallback((key) => {
68
+
69
+ const cancelTimer = useCallback((key: string) => {
51
70
  const timer = timers.current.get(key);
52
71
  if (timer) {
53
72
  clearTimeout(timer);
@@ -55,9 +74,10 @@ function useLongPress(onLongPress, options = {}) {
55
74
  }
56
75
  startPositions.current.delete(key);
57
76
  }, []);
58
- const handleTouchStart = useCallback((data) => (e) => {
77
+
78
+ const handleTouchStart = useCallback((data: T) => (e: React.TouchEvent) => {
59
79
  if (!smallView) return;
60
- if (e.touches.length !== 1) return;
80
+ if (e.touches.length !== 1) return; // 只处理单指
61
81
  const key = getKey(data);
62
82
  longPressedMap.current.set(key, false);
63
83
  const touch = e.touches[0];
@@ -69,7 +89,8 @@ function useLongPress(onLongPress, options = {}) {
69
89
  }, delay);
70
90
  timers.current.set(key, timer);
71
91
  }, [smallView, delay, onLongPress, getKey]);
72
- const handleTouchMove = useCallback((data) => (e) => {
92
+
93
+ const handleTouchMove = useCallback((data: T) => (e: React.TouchEvent) => {
73
94
  if (!smallView) return;
74
95
  const key = getKey(data);
75
96
  const startPos = startPositions.current.get(key);
@@ -80,54 +101,37 @@ function useLongPress(onLongPress, options = {}) {
80
101
  const touch = e.touches[0];
81
102
  const deltaX = Math.abs(touch.clientX - startPos.x);
82
103
  const deltaY = Math.abs(touch.clientY - startPos.y);
104
+ // 如果移动超过阈值,取消长按计时器(用户在滚动)
83
105
  if (deltaX > moveThreshold || deltaY > moveThreshold) {
84
106
  cancelTimer(key);
85
107
  }
86
108
  }, [smallView, moveThreshold, getKey, cancelTimer]);
87
- const handleTouchEnd = useCallback((data) => () => {
109
+
110
+ const handleTouchEnd = useCallback((data: T) => () => {
88
111
  const key = getKey(data);
89
112
  cancelTimer(key);
90
113
  }, [getKey, cancelTimer]);
91
- const handleTouchCancel = useCallback((data) => () => {
114
+
115
+ const handleTouchCancel = useCallback((data: T) => () => {
92
116
  handleTouchEnd(data)();
93
117
  }, [handleTouchEnd]);
94
- const wasLongPressed = useCallback((data) => {
118
+
119
+ const wasLongPressed = useCallback((data: T): boolean => {
95
120
  const key = getKey(data);
96
121
  return longPressedMap.current.get(key) || false;
97
122
  }, [getKey]);
98
- const resetLongPress = useCallback((data) => {
123
+
124
+ const resetLongPress = useCallback((data: T) => {
99
125
  const key = getKey(data);
100
126
  longPressedMap.current.set(key, false);
101
127
  }, [getKey]);
128
+
102
129
  return {
103
130
  handleTouchStart,
104
131
  handleTouchMove,
105
132
  handleTouchEnd,
106
133
  handleTouchCancel,
107
134
  wasLongPressed,
108
- resetLongPress
135
+ resetLongPress,
109
136
  };
110
137
  }
111
-
112
- // src/hooks/useOnlineStatus.ts
113
- import { useEffect as useEffect2, useState } from "react";
114
- function useOnlineStatus() {
115
- const [isOnline, setIsOnline] = useState(
116
- typeof navigator !== "undefined" ? navigator.onLine : true
117
- );
118
- useEffect2(() => {
119
- const handleOnline = () => setIsOnline(true);
120
- const handleOffline = () => setIsOnline(false);
121
- window.addEventListener("online", handleOnline);
122
- window.addEventListener("offline", handleOffline);
123
- return () => {
124
- window.removeEventListener("online", handleOnline);
125
- window.removeEventListener("offline", handleOffline);
126
- };
127
- }, []);
128
- return isOnline;
129
- }
130
- export {
131
- useLongPress,
132
- useOnlineStatus
133
- };
@@ -0,0 +1,22 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ export function useOnlineStatus(): boolean {
4
+ const [isOnline, setIsOnline] = useState<boolean>(
5
+ typeof navigator !== 'undefined' ? navigator.onLine : true
6
+ );
7
+
8
+ useEffect(() => {
9
+ const handleOnline = () => setIsOnline(true);
10
+ const handleOffline = () => setIsOnline(false);
11
+
12
+ window.addEventListener('online', handleOnline);
13
+ window.addEventListener('offline', handleOffline);
14
+
15
+ return () => {
16
+ window.removeEventListener('online', handleOnline);
17
+ window.removeEventListener('offline', handleOffline);
18
+ };
19
+ }, []);
20
+
21
+ return isOnline;
22
+ }
package/src/index.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @spacecorex/core 主入口 —— 公共层统一导出。
3
+ * 消费方应从子路径导入以获得精确的类型和 tree-shaking:
4
+ * import { API } from '@spacecorex/core/api';
5
+ * import { uiConfirm } from '@spacecorex/core/ui';
6
+ * import { CORE_VERSION } from '@spacecorex/core/contract';
7
+ */
8
+ export { CORE_VERSION } from './contract';
9
+ export type { ModuleRuntimeProps, ModuleManifest } from './contract';
10
+
11
+ export * from './api';
12
+ export * from './utils';
13
+ export * from './hooks';
14
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ /** 通用标识符类型(后端实体 id 约定为 string) */
2
+ export type ID = string;
@@ -0,0 +1,5 @@
1
+ export * from './project/index';
2
+ export * from './user/index';
3
+ export * from './projectRole';
4
+ export * from './id';
5
+ export * from './theme';
@@ -0,0 +1,63 @@
1
+ import dayjs from 'dayjs';
2
+
3
+ /** 项目基础信息。 */
4
+ export interface Project {
5
+ /** 项目唯一标识。 */
6
+ id: string;
7
+ /** 项目名称。 */
8
+ name: string;
9
+ /** 项目描述。 */
10
+ descs: string;
11
+ /** 所属公司 ID。 */
12
+ companyId: string;
13
+ /** 项目状态值,对应 ProjectStatus。 */
14
+ status: number;
15
+ /** 项目说明的 Markdown 内容。 */
16
+ markdown: string;
17
+ /** 项目开始时间。 */
18
+ startTime: Date;
19
+ /** 表单中使用的项目开始时间。 */
20
+ startTime2?: dayjs.Dayjs;
21
+ /** 计划结束时间。 */
22
+ plannedEndTime: Date;
23
+ /** 表单中使用的计划结束时间。 */
24
+ plannedEndTime2?: dayjs.Dayjs;
25
+ /** 实际结束时间,未结束时为空。 */
26
+ endTime: Date | null;
27
+ /** 表单中使用的实际结束时间。 */
28
+ endTime2?: dayjs.Dayjs;
29
+ /** 项目负责人 ID。 */
30
+ leaderId: string;
31
+ /** 关联 CRM 客户 ID(可选)。 */
32
+ customerId?: string;
33
+ /** 项目负责人名称。 */
34
+ leaderName?: string;
35
+ /** 创建时间。 */
36
+ createTime: Date;
37
+ /** 更新时间。 */
38
+ updateTime: Date;
39
+ /** 创建人 ID。 */
40
+ createBy: string;
41
+ /** 创建人名称。 */
42
+ createName?: string;
43
+ /** 更新人 ID。 */
44
+ updateBy: string;
45
+ /** 更新人名称。 */
46
+ updateName?: string;
47
+ }
48
+
49
+ /** 项目状态。 */
50
+ export enum ProjectStatus {
51
+ /** 准备中。 */
52
+ PREPARATION = 0,
53
+ /** 进行中。 */
54
+ PROGRESS = 1,
55
+ /** 已完成。 */
56
+ COMPLETED = 2,
57
+ /** 已延期。 */
58
+ DELAYED = 3,
59
+ /** 已终止。 */
60
+ TERMINATED = 4,
61
+ /** 临时项目。 */
62
+ TEMP = 5,
63
+ }
@@ -0,0 +1,79 @@
1
+ /** 合同签署与审批状态。 */
2
+ export enum ContractStatus {
3
+ /** 草稿。 */
4
+ DRAFT = 'DRAFT',
5
+ /** 审批中。 */
6
+ APPROVALLING = 'APPROVALLING',
7
+ /** 待签署。 */
8
+ PENDING = 'PENDING',
9
+ /** 已签署。 */
10
+ SIGNED = 'SIGNED',
11
+ }
12
+
13
+ /** 项目合同基础信息。 */
14
+ export interface Contract {
15
+ /** 合同唯一标识。 */
16
+ id: string;
17
+ /** 关联合同所属项目 ID。 */
18
+ projectId: string;
19
+ /** 合同名称。 */
20
+ name: string;
21
+ /** 合同编号。 */
22
+ code: string;
23
+ /** 甲方名称。 */
24
+ partyA: string;
25
+ /** 乙方名称。 */
26
+ partyB: string;
27
+ /** 合同金额。 */
28
+ amount: number;
29
+ /** 签署日期。 */
30
+ signDate: Date;
31
+ /** 合同开始日期。 */
32
+ startDate: Date;
33
+ /** 合同结束日期。 */
34
+ endDate: Date;
35
+ /** 合同状态。 */
36
+ status: ContractStatus;
37
+ /** 创建时间。 */
38
+ createTime: Date;
39
+ /** 更新时间。 */
40
+ updateTime: Date;
41
+ /** 创建人 ID。 */
42
+ createBy: string;
43
+ /** 更新人 ID。 */
44
+ updateBy: string;
45
+ /** 合同版本数量。 */
46
+ versionCount: number;
47
+ /** 最新合同版本 ID。 */
48
+ latestVersionId?: string;
49
+ }
50
+
51
+ /** 合同版本文件信息。 */
52
+ export interface ContractVersion {
53
+ /** 合同版本唯一标识。 */
54
+ id: string;
55
+ /** 所属合同 ID。 */
56
+ contractId: string;
57
+ /** 版本号。 */
58
+ versionNumber: string;
59
+ /** 版本名称。 */
60
+ versionName: string;
61
+ /** 合同文件存储路径。 */
62
+ filePath: string;
63
+ /** 合同文件名称。 */
64
+ fileName: string;
65
+ /** 合同文件大小,单位通常为字节。 */
66
+ fileSize: number;
67
+ /** 上传时间。 */
68
+ uploadTime: Date;
69
+ /** 上传人 ID。 */
70
+ uploaderId: string;
71
+ /** 上传人名称。 */
72
+ uploaderName: string;
73
+ /** 创建时间。 */
74
+ createTime: Date;
75
+ /** 更新时间。 */
76
+ updateTime: Date;
77
+ /** 本版本变更说明。 */
78
+ changes?: string;
79
+ }
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { Tag } from 'antd';
3
+ import { ContractStatus } from './contract';
4
+
5
+ /** 根据合同状态生成对应的状态标签。 */
6
+ export const getContractStatusTag = (status: ContractStatus, className?: string) => {
7
+ const statusMap: Record<string, { color: string; text: string }> = {
8
+ [ContractStatus.DRAFT]: { color: 'orange', text: '草稿' },
9
+ [ContractStatus.APPROVALLING]: { color: 'yellow', text: '审核中' },
10
+ [ContractStatus.PENDING]: { color: 'blue', text: '待签署' },
11
+ [ContractStatus.SIGNED]: { color: 'green', text: '已签署' },
12
+ };
13
+ const item = statusMap[status];
14
+ return React.createElement(Tag, { color: item?.color, className }, item?.text);
15
+ };
@@ -0,0 +1,5 @@
1
+ export * from './base';
2
+ export * from './contract';
3
+ export * from './contractStatus';
4
+ export * from './member';
5
+ export * from './progress';
@@ -0,0 +1,46 @@
1
+ import { ProjectRole } from '../projectRole';
2
+
3
+
4
+ /** 项目成员权限摘要。 */
5
+ export interface ProjectPermission {
6
+ /** 用户 ID。 */
7
+ userId: string;
8
+ /** 用户名称。 */
9
+ userName: string;
10
+ /** 项目角色。 */
11
+ role: ProjectRole;
12
+ }
13
+
14
+ /** 项目成员详情。 */
15
+ export interface ProjectMember {
16
+ /** 成员记录唯一标识。 */
17
+ id: string;
18
+ /** 所属项目 ID。 */
19
+ projectId: string;
20
+ /** 用户 ID。 */
21
+ userId: string;
22
+ /** 成员职位或头衔。 */
23
+ title: string;
24
+ /** 用户头像地址。 */
25
+ avatar: string;
26
+ /** 用户昵称。 */
27
+ nickname: string;
28
+ /** 用户登录名。 */
29
+ username: string;
30
+ /** 用户手机号。 */
31
+ phone: string;
32
+ /** 用户邮箱。 */
33
+ email: string;
34
+ /** 成员项目角色。 */
35
+ role: ProjectRole;
36
+ /** 权限位或权限等级。 */
37
+ permission: number;
38
+ /** 创建时间。 */
39
+ createTime: Date;
40
+ /** 更新时间。 */
41
+ updateTime: Date;
42
+ /** 创建人 ID。 */
43
+ createBy: string;
44
+ /** 更新人 ID。 */
45
+ updateBy: string;
46
+ }
@@ -0,0 +1,43 @@
1
+ import type { CommentSubItem } from '../../ui/CommentTimeline/index';
2
+
3
+ /** 项目进度记录。 */
4
+ export interface ProjectProgress {
5
+ /** 进度记录唯一标识。 */
6
+ id: string;
7
+ /** 所属项目 ID。 */
8
+ projectId: string;
9
+ /** 进度评论数量。 */
10
+ commentCount: number;
11
+ /** 进度描述。 */
12
+ descs: string;
13
+ /** 是否已删除。 */
14
+ isDeleted: boolean;
15
+ /** 进度发生时间。 */
16
+ progressTime: Date;
17
+ /** 创建时间。 */
18
+ createTime: Date;
19
+ /** 更新时间。 */
20
+ updateTime: Date;
21
+ /** 创建人 ID。 */
22
+ createBy: string;
23
+ /** 更新人 ID。 */
24
+ updateBy: string;
25
+ }
26
+
27
+ /** 项目进度评论。 */
28
+ export interface ProgressComment extends CommentSubItem {
29
+ /** 评论唯一标识。 */
30
+ id: string;
31
+ /** 所属进度记录 ID。 */
32
+ progressId: string;
33
+ /** 评论内容。 */
34
+ comment: string;
35
+ /** 创建时间。 */
36
+ createTime: Date;
37
+ /** 更新时间。 */
38
+ updateTime: Date;
39
+ /** 创建人 ID。 */
40
+ createBy: string;
41
+ /** 更新人 ID。 */
42
+ updateBy: string;
43
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 项目成员角色枚举 —— 跨包共享的公共类型。
3
+ * 原定义在 src/ui/FileManager/types.ts,因 FileManager 留在壳层,
4
+ * 故将此公共枚举迁入 core 的 types/ 目录。
5
+ */
6
+ export enum ProjectRole {
7
+ /** 项目所有者。 */
8
+ OWNER = 'owner',
9
+ /** 图层或分层角色。 */
10
+ LAYER = 'layer',
11
+ /** 项目管理员。 */
12
+ MANAGER = 'manager',
13
+ /** 普通成员。 */
14
+ MEMBER = 'member',
15
+ /** 只读查看者。 */
16
+ VIEWER = 'viewer',
17
+ }
@@ -0,0 +1 @@
1
+ export type ThemeMode = 'light' | 'dark';
@@ -0,0 +1 @@
1
+ export * from './role';
@@ -0,0 +1,7 @@
1
+ /** 系统角色。 */
2
+ export interface Role {
3
+ /** 角色唯一标识。 */
4
+ id: string;
5
+ /** 角色名称。 */
6
+ name: string;
7
+ }