@dou-ui/sheet 0.0.0-stage → 0.1.0-alpha.1

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 (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -2
  3. package/dist/cell-types.js +20 -0
  4. package/dist/cell-types.js.map +1 -0
  5. package/dist/code/code-formula-bar.js +6 -0
  6. package/dist/code/code-formula-bar.js.map +1 -0
  7. package/dist/code/code-formula-bar.vue_vue_type_script_setup_true_lang.js +192 -0
  8. package/dist/code/code-formula-bar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  9. package/dist/code/index.js +12 -0
  10. package/dist/code/index.js.map +1 -0
  11. package/dist/code/language.js +51 -0
  12. package/dist/code/language.js.map +1 -0
  13. package/dist/code/style.d.ts +1 -0
  14. package/dist/code/style.js +2 -0
  15. package/dist/collaboration/anchor.js +143 -0
  16. package/dist/collaboration/anchor.js.map +1 -0
  17. package/dist/collaboration/index.js +770 -0
  18. package/dist/collaboration/index.js.map +1 -0
  19. package/dist/collaboration/peers.js +87 -0
  20. package/dist/collaboration/peers.js.map +1 -0
  21. package/dist/collaboration/shared.js +450 -0
  22. package/dist/collaboration/shared.js.map +1 -0
  23. package/dist/components/cell-panel.js +6 -0
  24. package/dist/components/cell-panel.js.map +1 -0
  25. package/dist/components/cell-panel.vue_vue_type_script_setup_true_lang.js +70 -0
  26. package/dist/components/cell-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  27. package/dist/components/cell-renders.js +40 -0
  28. package/dist/components/cell-renders.js.map +1 -0
  29. package/dist/components/date-panel.js +6 -0
  30. package/dist/components/date-panel.js.map +1 -0
  31. package/dist/components/date-panel.vue_vue_type_script_setup_true_lang.js +48 -0
  32. package/dist/components/date-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  33. package/dist/components/filter-panel.js +6 -0
  34. package/dist/components/filter-panel.js.map +1 -0
  35. package/dist/components/filter-panel.vue_vue_type_script_setup_true_lang.js +259 -0
  36. package/dist/components/filter-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  37. package/dist/components/format-dialog.js +6 -0
  38. package/dist/components/format-dialog.js.map +1 -0
  39. package/dist/components/format-dialog.vue_vue_type_script_setup_true_lang.js +432 -0
  40. package/dist/components/format-dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  41. package/dist/components/format-list.js +6 -0
  42. package/dist/components/format-list.js.map +1 -0
  43. package/dist/components/format-list.vue_vue_type_script_setup_true_lang.js +187 -0
  44. package/dist/components/format-list.vue_vue_type_script_setup_true_lang.js.map +1 -0
  45. package/dist/components/format-presets.js +97 -0
  46. package/dist/components/format-presets.js.map +1 -0
  47. package/dist/components/option-panel.js +6 -0
  48. package/dist/components/option-panel.js.map +1 -0
  49. package/dist/components/option-panel.vue_vue_type_script_setup_true_lang.js +117 -0
  50. package/dist/components/option-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  51. package/dist/components/sheet-comment.js +6 -0
  52. package/dist/components/sheet-comment.js.map +1 -0
  53. package/dist/components/sheet-comment.vue_vue_type_script_setup_true_lang.js +104 -0
  54. package/dist/components/sheet-comment.vue_vue_type_script_setup_true_lang.js.map +1 -0
  55. package/dist/components/sheet-formula-bar.js +6 -0
  56. package/dist/components/sheet-formula-bar.js.map +1 -0
  57. package/dist/components/sheet-formula-bar.vue_vue_type_script_setup_true_lang.js +124 -0
  58. package/dist/components/sheet-formula-bar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  59. package/dist/components/sheet-link.js +6 -0
  60. package/dist/components/sheet-link.js.map +1 -0
  61. package/dist/components/sheet-link.vue_vue_type_script_setup_true_lang.js +249 -0
  62. package/dist/components/sheet-link.vue_vue_type_script_setup_true_lang.js.map +1 -0
  63. package/dist/components/sheet-menu.js +6 -0
  64. package/dist/components/sheet-menu.js.map +1 -0
  65. package/dist/components/sheet-menu.vue_vue_type_script_setup_true_lang.js +115 -0
  66. package/dist/components/sheet-menu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  67. package/dist/components/sheet-name-box.js +6 -0
  68. package/dist/components/sheet-name-box.js.map +1 -0
  69. package/dist/components/sheet-name-box.vue_vue_type_script_setup_true_lang.js +91 -0
  70. package/dist/components/sheet-name-box.vue_vue_type_script_setup_true_lang.js.map +1 -0
  71. package/dist/components/sheet-note.js +6 -0
  72. package/dist/components/sheet-note.js.map +1 -0
  73. package/dist/components/sheet-note.vue_vue_type_script_setup_true_lang.js +146 -0
  74. package/dist/components/sheet-note.vue_vue_type_script_setup_true_lang.js.map +1 -0
  75. package/dist/components/sheet-outline.js +6 -0
  76. package/dist/components/sheet-outline.js.map +1 -0
  77. package/dist/components/sheet-outline.vue_vue_type_script_setup_true_lang.js +237 -0
  78. package/dist/components/sheet-outline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  79. package/dist/components/sheet-tabs.js +6 -0
  80. package/dist/components/sheet-tabs.js.map +1 -0
  81. package/dist/components/sheet-tabs.vue_vue_type_script_setup_true_lang.js +487 -0
  82. package/dist/components/sheet-tabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
  83. package/dist/components/sheet-toolbar.js +6 -0
  84. package/dist/components/sheet-toolbar.js.map +1 -0
  85. package/dist/components/sheet-toolbar.vue_vue_type_script_setup_true_lang.js +1562 -0
  86. package/dist/components/sheet-toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  87. package/dist/components/validation-dialog.js +6 -0
  88. package/dist/components/validation-dialog.js.map +1 -0
  89. package/dist/components/validation-dialog.vue_vue_type_script_setup_true_lang.js +370 -0
  90. package/dist/components/validation-dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  91. package/dist/context.js +12 -0
  92. package/dist/context.js.map +1 -0
  93. package/dist/core/address.js +256 -0
  94. package/dist/core/address.js.map +1 -0
  95. package/dist/core/axis.js +72 -0
  96. package/dist/core/axis.js.map +1 -0
  97. package/dist/core/cell-type.js +30 -0
  98. package/dist/core/cell-type.js.map +1 -0
  99. package/dist/core/clipboard.js +141 -0
  100. package/dist/core/clipboard.js.map +1 -0
  101. package/dist/core/commands.js +63 -0
  102. package/dist/core/commands.js.map +1 -0
  103. package/dist/core/comments.js +74 -0
  104. package/dist/core/comments.js.map +1 -0
  105. package/dist/core/conditional.js +362 -0
  106. package/dist/core/conditional.js.map +1 -0
  107. package/dist/core/csv.js +191 -0
  108. package/dist/core/csv.js.map +1 -0
  109. package/dist/core/data.js +118 -0
  110. package/dist/core/data.js.map +1 -0
  111. package/dist/core/document.js +187 -0
  112. package/dist/core/document.js.map +1 -0
  113. package/dist/core/extension.js +60 -0
  114. package/dist/core/extension.js.map +1 -0
  115. package/dist/core/file.js +336 -0
  116. package/dist/core/file.js.map +1 -0
  117. package/dist/core/fill.js +153 -0
  118. package/dist/core/fill.js.map +1 -0
  119. package/dist/core/find.js +42 -0
  120. package/dist/core/find.js.map +1 -0
  121. package/dist/core/format.js +404 -0
  122. package/dist/core/format.js.map +1 -0
  123. package/dist/core/group.js +134 -0
  124. package/dist/core/group.js.map +1 -0
  125. package/dist/core/history.js +68 -0
  126. package/dist/core/history.js.map +1 -0
  127. package/dist/core/index.js +17 -0
  128. package/dist/core/link.js +34 -0
  129. package/dist/core/link.js.map +1 -0
  130. package/dist/core/merge.js +105 -0
  131. package/dist/core/merge.js.map +1 -0
  132. package/dist/core/model.js +48 -0
  133. package/dist/core/model.js.map +1 -0
  134. package/dist/core/nav.js +44 -0
  135. package/dist/core/nav.js.map +1 -0
  136. package/dist/core/paint.js +106 -0
  137. package/dist/core/paint.js.map +1 -0
  138. package/dist/core/plain-cell-types.js +54 -0
  139. package/dist/core/plain-cell-types.js.map +1 -0
  140. package/dist/core/protect.js +246 -0
  141. package/dist/core/protect.js.map +1 -0
  142. package/dist/core/selection.js +37 -0
  143. package/dist/core/selection.js.map +1 -0
  144. package/dist/core/transaction.js +1582 -0
  145. package/dist/core/transaction.js.map +1 -0
  146. package/dist/core/validation.js +135 -0
  147. package/dist/core/validation.js.map +1 -0
  148. package/dist/core/versions.js +161 -0
  149. package/dist/core/versions.js.map +1 -0
  150. package/dist/export/color.js +36 -0
  151. package/dist/export/color.js.map +1 -0
  152. package/dist/export/draw.js +316 -0
  153. package/dist/export/draw.js.map +1 -0
  154. package/dist/export/index.js +390 -0
  155. package/dist/export/index.js.map +1 -0
  156. package/dist/formula/edit.js +210 -0
  157. package/dist/formula/edit.js.map +1 -0
  158. package/dist/formula/engine.js +526 -0
  159. package/dist/formula/engine.js.map +1 -0
  160. package/dist/formula/error.js +39 -0
  161. package/dist/formula/error.js.map +1 -0
  162. package/dist/formula/functions.js +1493 -0
  163. package/dist/formula/functions.js.map +1 -0
  164. package/dist/formula/help.js +408 -0
  165. package/dist/formula/help.js.map +1 -0
  166. package/dist/formula/index.js +7 -0
  167. package/dist/formula/parse.js +369 -0
  168. package/dist/formula/parse.js.map +1 -0
  169. package/dist/formula/values.js +123 -0
  170. package/dist/formula/values.js.map +1 -0
  171. package/dist/formulas.js +30 -0
  172. package/dist/formulas.js.map +1 -0
  173. package/dist/index.js +39 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/locale.js +1312 -0
  176. package/dist/locale.js.map +1 -0
  177. package/dist/sheet.js +6 -0
  178. package/dist/sheet.js.map +1 -0
  179. package/dist/sheet.vue_vue_type_script_setup_true_lang.js +7166 -0
  180. package/dist/sheet.vue_vue_type_script_setup_true_lang.js.map +1 -0
  181. package/dist/style.css +1 -0
  182. package/dist/style.d.ts +1 -0
  183. package/dist/style.js +17 -0
  184. package/dist/types/cell-types.d.ts +2 -0
  185. package/dist/types/code/code-formula-bar.vue.d.ts +3 -0
  186. package/dist/types/code/index.d.ts +12 -0
  187. package/dist/types/code/language.d.ts +13 -0
  188. package/dist/types/collaboration/anchor.d.ts +65 -0
  189. package/dist/types/collaboration/index.d.ts +59 -0
  190. package/dist/types/collaboration/peers.d.ts +21 -0
  191. package/dist/types/collaboration/shared.d.ts +75 -0
  192. package/dist/types/components/cell-panel.vue.d.ts +20 -0
  193. package/dist/types/components/cell-renders.d.ts +9 -0
  194. package/dist/types/components/date-panel.vue.d.ts +9 -0
  195. package/dist/types/components/filter-panel.vue.d.ts +21 -0
  196. package/dist/types/components/format-dialog.vue.d.ts +24 -0
  197. package/dist/types/components/format-list.vue.d.ts +25 -0
  198. package/dist/types/components/format-presets.d.ts +30 -0
  199. package/dist/types/components/option-panel.vue.d.ts +13 -0
  200. package/dist/types/components/sheet-comment.vue.d.ts +29 -0
  201. package/dist/types/components/sheet-formula-bar.vue.d.ts +3 -0
  202. package/dist/types/components/sheet-link.vue.d.ts +32 -0
  203. package/dist/types/components/sheet-menu.vue.d.ts +20 -0
  204. package/dist/types/components/sheet-name-box.vue.d.ts +3 -0
  205. package/dist/types/components/sheet-note.vue.d.ts +22 -0
  206. package/dist/types/components/sheet-outline.vue.d.ts +36 -0
  207. package/dist/types/components/sheet-tabs.vue.d.ts +9 -0
  208. package/dist/types/components/sheet-toolbar.vue.d.ts +11 -0
  209. package/dist/types/components/validation-dialog.vue.d.ts +25 -0
  210. package/dist/types/context.d.ts +189 -0
  211. package/dist/types/core/address.d.ts +109 -0
  212. package/dist/types/core/axis.d.ts +23 -0
  213. package/dist/types/core/cell-type.d.ts +157 -0
  214. package/dist/types/core/clipboard.d.ts +48 -0
  215. package/dist/types/core/commands.d.ts +76 -0
  216. package/dist/types/core/comments.d.ts +22 -0
  217. package/dist/types/core/conditional.d.ts +114 -0
  218. package/dist/types/core/csv.d.ts +93 -0
  219. package/dist/types/core/data.d.ts +26 -0
  220. package/dist/types/core/document.d.ts +49 -0
  221. package/dist/types/core/extension.d.ts +177 -0
  222. package/dist/types/core/file.d.ts +301 -0
  223. package/dist/types/core/fill.d.ts +23 -0
  224. package/dist/types/core/find.d.ts +39 -0
  225. package/dist/types/core/format.d.ts +47 -0
  226. package/dist/types/core/group.d.ts +76 -0
  227. package/dist/types/core/history.d.ts +27 -0
  228. package/dist/types/core/index.d.ts +33 -0
  229. package/dist/types/core/link.d.ts +14 -0
  230. package/dist/types/core/merge.d.ts +26 -0
  231. package/dist/types/core/model.d.ts +363 -0
  232. package/dist/types/core/nav.d.ts +15 -0
  233. package/dist/types/core/paint.d.ts +19 -0
  234. package/dist/types/core/plain-cell-types.d.ts +6 -0
  235. package/dist/types/core/protect.d.ts +34 -0
  236. package/dist/types/core/selection.d.ts +25 -0
  237. package/dist/types/core/transaction.d.ts +470 -0
  238. package/dist/types/core/validation.d.ts +55 -0
  239. package/dist/types/core/versions.d.ts +38 -0
  240. package/dist/types/export/color.d.ts +7 -0
  241. package/dist/types/export/draw.d.ts +98 -0
  242. package/dist/types/export/index.d.ts +47 -0
  243. package/dist/types/formula/edit.d.ts +62 -0
  244. package/dist/types/formula/engine.d.ts +99 -0
  245. package/dist/types/formula/error.d.ts +30 -0
  246. package/dist/types/formula/functions.d.ts +62 -0
  247. package/dist/types/formula/help.d.ts +12 -0
  248. package/dist/types/formula/index.d.ts +13 -0
  249. package/dist/types/formula/parse.d.ts +92 -0
  250. package/dist/types/formula/values.d.ts +65 -0
  251. package/dist/types/formulas.d.ts +32 -0
  252. package/dist/types/index.d.ts +225 -0
  253. package/dist/types/locale.d.ts +531 -0
  254. package/dist/types/sheet.vue.d.ts +60 -0
  255. package/dist/types/types.d.ts +498 -0
  256. package/dist/types/use-comments.d.ts +47 -0
  257. package/dist/types/use-messages.d.ts +7 -0
  258. package/dist/use-comments.js +130 -0
  259. package/dist/use-comments.js.map +1 -0
  260. package/dist/use-messages.js +29 -0
  261. package/dist/use-messages.js.map +1 -0
  262. package/package.json +93 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-comments.js","names":[],"sources":["../src/use-comments.ts"],"sourcesContent":["import { applyCommentAction, type CommentAction, type CommentThread } from 'dou-ui'\nimport { computed, onMounted, shallowRef, watch, type ComputedRef, type Ref } from 'vue'\nimport type { SheetPoint } from './core/address'\nimport { sheetCommentAnchors, type SheetCommentAnchor } from './core/comments'\nimport type { SheetCommentsProvider } from './core/extension'\nimport type { SheetWorkbook } from './core/model'\nimport { sheetKey, type SheetTransaction, type SheetTransactionMeta } from './core/transaction'\nimport type { SheetEmits, SheetProps } from './types'\n\ntype Emit = <K extends keyof SheetEmits>(event: K, ...args: SheetEmits[K]) => void\n\n/** Whether a thread shows: known and not resolved. */\nconst isOpen = (thread: CommentThread | undefined) => !!thread && !thread.resolved\n\n/** A cell of a sheet, by the sheet's key. */\nexport interface SheetCommentCell extends SheetPoint {\n sheet: string\n}\n\n/**\n * The comment threads of a sheet: which one is open beside its cell, the\n * cell a new one is being written for, and the changes made from the card.\n */\nexport function useSheetComments(options: {\n props: SheetProps\n emit: Emit\n provider: ComputedRef<SheetCommentsProvider | null>\n doc: Readonly<Ref<SheetWorkbook>>\n /** The cell a thread on `point` of the sheet shown goes on: a merge's top left. */\n home: (point: SheetPoint) => SheetPoint\n /** The key of the sheet shown. */\n shown: () => string\n transact: (\n run: (tr: SheetTransaction) => void,\n meta?: SheetTransactionMeta,\n ) => SheetTransaction | null\n}) {\n const { props, emit, provider, doc, home, shown, transact } = options\n\n const threads = computed<readonly CommentThread[]>(\n () => provider.value?.threads.value ?? props.comments ?? [],\n )\n // comparing with an older version shows the cells only\n const enabled = computed(\n () => (!!provider.value || props.comments !== undefined) && !props.compare,\n )\n const writable = computed(() => enabled.value && !!props.author && props.commentable !== false)\n const byId = computed(() => new Map(threads.value.map((thread) => [thread.id, thread])))\n\n // the shared document's threads, mirrored to `v-model:comments`; from the\n // mount on, when the extensions have the grid to work with\n onMounted(() =>\n watch(\n () => provider.value?.threads.value,\n (value) => value && emit('update:comments', [...value]),\n { immediate: true },\n ),\n )\n\n const innerActive = shallowRef<string | null>(null)\n const active = computed(() =>\n props.activeComment === undefined ? innerActive.value : props.activeComment,\n )\n function open(id: string | null) {\n if (id === active.value) return\n innerActive.value = id\n emit('update:activeComment', id)\n }\n\n /** The cell a new thread is being written for. */\n const pending = shallowRef<SheetCommentCell | null>(null)\n /** Bumped to put the cursor in the card's reply box. */\n const focusRequest = shallowRef(0)\n\n /** The thread a cell of the sheet shown names; `undefined` when it names none (or one not known). */\n function threadAt(point: SheetPoint) {\n const at = home(point)\n const cell = doc.value.sheets.find((sheet) => sheetKey(sheet) === shown())?.cells[at.row]?.[\n at.col\n ]\n const id = cell && typeof cell === 'object' ? cell.comment : undefined\n return id ? byId.value.get(id) : undefined\n }\n\n const anchors = computed(() => (enabled.value ? sheetCommentAnchors(doc.value) : new Map()))\n\n /** Where the card is: the cell being commented on, or the open thread's. */\n const cell = computed<SheetCommentCell | null>(() => {\n if (pending.value) return pending.value\n const id = active.value\n const anchor = id ? anchors.value.get(id) : undefined\n return anchor ? { sheet: anchor.sheet, row: anchor.row, col: anchor.col } : null\n })\n\n /**\n * The thread about a cell of the sheet shown, ready to reply to; or the\n * box to start one. `false` when there is neither.\n */\n function start(point: SheetPoint): boolean {\n if (!enabled.value) return false\n const at = home(point)\n const thread = threadAt(at)\n if (thread) {\n pending.value = null\n open(thread.id)\n focusRequest.value++\n return true\n }\n if (!writable.value) return false\n open(null)\n pending.value = { sheet: shown(), ...at }\n focusRequest.value++\n return true\n }\n\n /** Opens the open thread on a cell just clicked, or closes the card when it has none. */\n function show(point: SheetPoint) {\n if (!enabled.value) return\n const thread = threadAt(point)\n pending.value = null\n open(isOpen(thread) ? thread!.id : null)\n }\n\n function close() {\n pending.value = null\n open(null)\n }\n\n const meta = { history: false, action: 'comment' } as const\n\n function apply(action: CommentAction) {\n if (action.type === 'create') {\n const at = pending.value\n if (!at) return\n transact((tr) => tr.setComment(at, action.thread.id), meta)\n pending.value = null\n } else if (action.type === 'remove') {\n const anchor = anchors.value.get(action.threadId)\n if (anchor) transact((tr) => tr.setComment(anchor, undefined), meta)\n }\n if (provider.value) provider.value.apply(action)\n else emit('update:comments', applyCommentAction(threads.value, action))\n emit('commentAction', action)\n if (action.type === 'create') {\n open(action.thread.id)\n focusRequest.value++\n } else if (action.type === 'remove' || action.type === 'resolve') open(null)\n }\n\n function getAnchors(): Record<string, SheetCommentAnchor | null> {\n const found = sheetCommentAnchors(doc.value)\n return Object.fromEntries(\n threads.value.map((thread) => [thread.id, found.get(thread.id) ?? null]),\n )\n }\n\n return {\n enabled,\n writable,\n threads,\n byId,\n active,\n pending,\n cell,\n focusRequest,\n threadAt,\n isOpen,\n start,\n show,\n open,\n close,\n apply,\n getAnchors,\n }\n}\n\nexport type SheetComments = ReturnType<typeof useSheetComments>\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { sheetMessagesFor } from "./locale.js";
2
+ import { useLocale } from "dou-ui";
3
+ import { computed, toValue } from "vue";
4
+ // src/use-messages.ts
5
+ /**
6
+ * The spreadsheet's texts, picked by the name of DouUI's current locale.
7
+ * Pass `messages` to override any of them.
8
+ */
9
+ function useSheetMessages(override) {
10
+ const { locale } = useLocale();
11
+ return computed(() => {
12
+ const base = sheetMessagesFor(locale.value.name);
13
+ const extra = toValue(override);
14
+ if (!extra) return base;
15
+ const out = { ...base };
16
+ for (const [key, value] of Object.entries(extra)) {
17
+ if (value === void 0) continue;
18
+ const own = base[key];
19
+ out[key] = own && typeof own === "object" ? {
20
+ ...own,
21
+ ...value
22
+ } : value;
23
+ }
24
+ return out;
25
+ });
26
+ }
27
+ export { useSheetMessages };
28
+
29
+ //# sourceMappingURL=use-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-messages.js","names":[],"sources":["../src/use-messages.ts"],"sourcesContent":["import { useLocale } from 'dou-ui'\nimport { computed, toValue, type MaybeRefOrGetter } from 'vue'\nimport { sheetMessagesFor, type SheetMessages, type SheetMessagesOverride } from './locale'\n\n/**\n * The spreadsheet's texts, picked by the name of DouUI's current locale.\n * Pass `messages` to override any of them.\n */\nexport function useSheetMessages(override?: MaybeRefOrGetter<SheetMessagesOverride | undefined>) {\n const { locale } = useLocale()\n return computed<SheetMessages>(() => {\n const base = sheetMessagesFor(locale.value.name)\n const extra = toValue(override)\n if (!extra) return base\n const out: Record<string, unknown> = { ...base }\n for (const [key, value] of Object.entries(extra)) {\n if (value === undefined) continue\n // groups, such as error reasons or function help, can be given one by one\n const own = base[key as keyof SheetMessages]\n out[key] = own && typeof own === 'object' ? { ...own, ...(value as object) } : value\n }\n return out as unknown as SheetMessages\n })\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,iBAAiB,UAAgE;CAC/F,MAAM,EAAE,WAAW,UAAU;CAC7B,OAAO,eAA8B;EACnC,MAAM,OAAO,iBAAiB,OAAO,MAAM,IAAI;EAC/C,MAAM,QAAQ,QAAQ,QAAQ;EAC9B,IAAI,CAAC,OAAO,OAAO;EACnB,MAAM,MAA+B,EAAE,GAAG,KAAK;EAC/C,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;GAChD,IAAI,UAAU,KAAA,GAAW;GAEzB,MAAM,MAAM,KAAK;GACjB,IAAI,OAAO,OAAO,OAAO,QAAQ,WAAW;IAAE,GAAG;IAAK,GAAI;GAAiB,IAAI;EACjF;EACA,OAAO;CACT,CAAC;AACH"}
package/package.json CHANGED
@@ -1,6 +1,95 @@
1
1
  {
2
2
  "name": "@dou-ui/sheet",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "DouUI 的电子表格:可编辑的单元格网格、公式与协同",
5
+ "keywords": [
6
+ "vue",
7
+ "vue3",
8
+ "spreadsheet",
9
+ "sheet",
10
+ "grid",
11
+ "table"
12
+ ],
13
+ "license": "MIT",
14
+ "author": "daidr <daidr@daidr.me>",
15
+ "homepage": "https://github.com/daidr/dou-ui#readme",
16
+ "bugs": "https://github.com/daidr/dou-ui/issues",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/daidr/dou-ui.git",
20
+ "directory": "packages/sheet"
21
+ },
22
+ "type": "module",
23
+ "sideEffects": [
24
+ "*.css",
25
+ "./dist/style.js",
26
+ "./dist/*/style.js"
27
+ ],
28
+ "main": "./dist/index.js",
29
+ "module": "./dist/index.js",
30
+ "types": "./dist/types/index.d.ts",
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/types/index.d.ts",
34
+ "import": "./dist/index.js"
35
+ },
36
+ "./formula": {
37
+ "types": "./dist/types/formula/index.d.ts",
38
+ "import": "./dist/formula/index.js"
39
+ },
40
+ "./core": {
41
+ "types": "./dist/types/core/index.d.ts",
42
+ "import": "./dist/core/index.js"
43
+ },
44
+ "./collaboration": {
45
+ "types": "./dist/types/collaboration/index.d.ts",
46
+ "import": "./dist/collaboration/index.js"
47
+ },
48
+ "./code": {
49
+ "types": "./dist/types/code/index.d.ts",
50
+ "import": "./dist/code/index.js"
51
+ },
52
+ "./code/style": {
53
+ "types": "./dist/code/style.d.ts",
54
+ "import": "./dist/code/style.js"
55
+ },
56
+ "./style": {
57
+ "types": "./dist/style.d.ts",
58
+ "import": "./dist/style.js"
59
+ },
60
+ "./style.css": "./dist/style.css",
61
+ "./package.json": "./package.json"
62
+ },
63
+ "files": [
64
+ "dist"
65
+ ],
66
+ "scripts": {
67
+ "build": "vite build && vue-tsc -p tsconfig.build.json && bun scripts/build-style.ts"
68
+ },
69
+ "peerDependencies": {
70
+ "@dou-ui/code": "0.1.0-alpha.1",
71
+ "dou-ui": "0.1.0-alpha.1",
72
+ "vue": "^3.5.0",
73
+ "yjs": "^13.6.0"
74
+ },
75
+ "peerDependenciesMeta": {
76
+ "@dou-ui/code": {
77
+ "optional": true
78
+ },
79
+ "yjs": {
80
+ "optional": true
81
+ }
82
+ },
83
+ "dependencies": {
84
+ "@dou-ui/icons": "0.1.0-alpha.1",
85
+ "@dou-ui/theme": "0.1.0-alpha.1"
86
+ },
87
+ "devDependencies": {
88
+ "@dou-ui/code": "0.1.0-alpha.1",
89
+ "y-protocols": "^1.0.7",
90
+ "yjs": "^13.6.33"
91
+ },
92
+ "publishConfig": {
93
+ "access": "public"
94
+ }
95
+ }