@dou-ui/sheet 0.0.0-stage → 0.1.0-alpha.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.
- package/LICENSE +21 -0
- package/README.md +10 -2
- package/dist/cell-types.js +20 -0
- package/dist/cell-types.js.map +1 -0
- package/dist/code/code-formula-bar.js +6 -0
- package/dist/code/code-formula-bar.js.map +1 -0
- package/dist/code/code-formula-bar.vue_vue_type_script_setup_true_lang.js +192 -0
- package/dist/code/code-formula-bar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/code/index.js +12 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/language.js +51 -0
- package/dist/code/language.js.map +1 -0
- package/dist/code/style.d.ts +1 -0
- package/dist/code/style.js +2 -0
- package/dist/collaboration/anchor.js +143 -0
- package/dist/collaboration/anchor.js.map +1 -0
- package/dist/collaboration/index.js +770 -0
- package/dist/collaboration/index.js.map +1 -0
- package/dist/collaboration/peers.js +87 -0
- package/dist/collaboration/peers.js.map +1 -0
- package/dist/collaboration/shared.js +450 -0
- package/dist/collaboration/shared.js.map +1 -0
- package/dist/components/cell-panel.js +6 -0
- package/dist/components/cell-panel.js.map +1 -0
- package/dist/components/cell-panel.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/cell-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/cell-renders.js +40 -0
- package/dist/components/cell-renders.js.map +1 -0
- package/dist/components/date-panel.js +6 -0
- package/dist/components/date-panel.js.map +1 -0
- package/dist/components/date-panel.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/date-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/filter-panel.js +6 -0
- package/dist/components/filter-panel.js.map +1 -0
- package/dist/components/filter-panel.vue_vue_type_script_setup_true_lang.js +259 -0
- package/dist/components/filter-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/format-dialog.js +6 -0
- package/dist/components/format-dialog.js.map +1 -0
- package/dist/components/format-dialog.vue_vue_type_script_setup_true_lang.js +432 -0
- package/dist/components/format-dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/format-list.js +6 -0
- package/dist/components/format-list.js.map +1 -0
- package/dist/components/format-list.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/format-list.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/format-presets.js +97 -0
- package/dist/components/format-presets.js.map +1 -0
- package/dist/components/option-panel.js +6 -0
- package/dist/components/option-panel.js.map +1 -0
- package/dist/components/option-panel.vue_vue_type_script_setup_true_lang.js +117 -0
- package/dist/components/option-panel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-comment.js +6 -0
- package/dist/components/sheet-comment.js.map +1 -0
- package/dist/components/sheet-comment.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/components/sheet-comment.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-formula-bar.js +6 -0
- package/dist/components/sheet-formula-bar.js.map +1 -0
- package/dist/components/sheet-formula-bar.vue_vue_type_script_setup_true_lang.js +124 -0
- package/dist/components/sheet-formula-bar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-link.js +6 -0
- package/dist/components/sheet-link.js.map +1 -0
- package/dist/components/sheet-link.vue_vue_type_script_setup_true_lang.js +249 -0
- package/dist/components/sheet-link.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-menu.js +6 -0
- package/dist/components/sheet-menu.js.map +1 -0
- package/dist/components/sheet-menu.vue_vue_type_script_setup_true_lang.js +115 -0
- package/dist/components/sheet-menu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-name-box.js +6 -0
- package/dist/components/sheet-name-box.js.map +1 -0
- package/dist/components/sheet-name-box.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/components/sheet-name-box.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-note.js +6 -0
- package/dist/components/sheet-note.js.map +1 -0
- package/dist/components/sheet-note.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/sheet-note.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-outline.js +6 -0
- package/dist/components/sheet-outline.js.map +1 -0
- package/dist/components/sheet-outline.vue_vue_type_script_setup_true_lang.js +237 -0
- package/dist/components/sheet-outline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-tabs.js +6 -0
- package/dist/components/sheet-tabs.js.map +1 -0
- package/dist/components/sheet-tabs.vue_vue_type_script_setup_true_lang.js +487 -0
- package/dist/components/sheet-tabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/sheet-toolbar.js +6 -0
- package/dist/components/sheet-toolbar.js.map +1 -0
- package/dist/components/sheet-toolbar.vue_vue_type_script_setup_true_lang.js +1562 -0
- package/dist/components/sheet-toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/validation-dialog.js +6 -0
- package/dist/components/validation-dialog.js.map +1 -0
- package/dist/components/validation-dialog.vue_vue_type_script_setup_true_lang.js +370 -0
- package/dist/components/validation-dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/context.js +12 -0
- package/dist/context.js.map +1 -0
- package/dist/core/address.js +256 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/axis.js +72 -0
- package/dist/core/axis.js.map +1 -0
- package/dist/core/cell-type.js +30 -0
- package/dist/core/cell-type.js.map +1 -0
- package/dist/core/clipboard.js +141 -0
- package/dist/core/clipboard.js.map +1 -0
- package/dist/core/commands.js +63 -0
- package/dist/core/commands.js.map +1 -0
- package/dist/core/comments.js +74 -0
- package/dist/core/comments.js.map +1 -0
- package/dist/core/conditional.js +362 -0
- package/dist/core/conditional.js.map +1 -0
- package/dist/core/csv.js +191 -0
- package/dist/core/csv.js.map +1 -0
- package/dist/core/data.js +118 -0
- package/dist/core/data.js.map +1 -0
- package/dist/core/document.js +187 -0
- package/dist/core/document.js.map +1 -0
- package/dist/core/extension.js +60 -0
- package/dist/core/extension.js.map +1 -0
- package/dist/core/file.js +336 -0
- package/dist/core/file.js.map +1 -0
- package/dist/core/fill.js +153 -0
- package/dist/core/fill.js.map +1 -0
- package/dist/core/find.js +42 -0
- package/dist/core/find.js.map +1 -0
- package/dist/core/format.js +404 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/group.js +134 -0
- package/dist/core/group.js.map +1 -0
- package/dist/core/history.js +68 -0
- package/dist/core/history.js.map +1 -0
- package/dist/core/index.js +17 -0
- package/dist/core/link.js +34 -0
- package/dist/core/link.js.map +1 -0
- package/dist/core/merge.js +105 -0
- package/dist/core/merge.js.map +1 -0
- package/dist/core/model.js +48 -0
- package/dist/core/model.js.map +1 -0
- package/dist/core/nav.js +44 -0
- package/dist/core/nav.js.map +1 -0
- package/dist/core/paint.js +106 -0
- package/dist/core/paint.js.map +1 -0
- package/dist/core/plain-cell-types.js +54 -0
- package/dist/core/plain-cell-types.js.map +1 -0
- package/dist/core/protect.js +246 -0
- package/dist/core/protect.js.map +1 -0
- package/dist/core/selection.js +37 -0
- package/dist/core/selection.js.map +1 -0
- package/dist/core/transaction.js +1582 -0
- package/dist/core/transaction.js.map +1 -0
- package/dist/core/validation.js +135 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/core/versions.js +161 -0
- package/dist/core/versions.js.map +1 -0
- package/dist/export/color.js +36 -0
- package/dist/export/color.js.map +1 -0
- package/dist/export/draw.js +316 -0
- package/dist/export/draw.js.map +1 -0
- package/dist/export/index.js +390 -0
- package/dist/export/index.js.map +1 -0
- package/dist/formula/edit.js +210 -0
- package/dist/formula/edit.js.map +1 -0
- package/dist/formula/engine.js +526 -0
- package/dist/formula/engine.js.map +1 -0
- package/dist/formula/error.js +39 -0
- package/dist/formula/error.js.map +1 -0
- package/dist/formula/functions.js +1493 -0
- package/dist/formula/functions.js.map +1 -0
- package/dist/formula/help.js +408 -0
- package/dist/formula/help.js.map +1 -0
- package/dist/formula/index.js +7 -0
- package/dist/formula/parse.js +369 -0
- package/dist/formula/parse.js.map +1 -0
- package/dist/formula/values.js +123 -0
- package/dist/formula/values.js.map +1 -0
- package/dist/formulas.js +30 -0
- package/dist/formulas.js.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/locale.js +1312 -0
- package/dist/locale.js.map +1 -0
- package/dist/sheet.js +6 -0
- package/dist/sheet.js.map +1 -0
- package/dist/sheet.vue_vue_type_script_setup_true_lang.js +7166 -0
- package/dist/sheet.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/style.d.ts +1 -0
- package/dist/style.js +17 -0
- package/dist/types/cell-types.d.ts +2 -0
- package/dist/types/code/code-formula-bar.vue.d.ts +3 -0
- package/dist/types/code/index.d.ts +12 -0
- package/dist/types/code/language.d.ts +13 -0
- package/dist/types/collaboration/anchor.d.ts +65 -0
- package/dist/types/collaboration/index.d.ts +59 -0
- package/dist/types/collaboration/peers.d.ts +21 -0
- package/dist/types/collaboration/shared.d.ts +75 -0
- package/dist/types/components/cell-panel.vue.d.ts +20 -0
- package/dist/types/components/cell-renders.d.ts +9 -0
- package/dist/types/components/date-panel.vue.d.ts +9 -0
- package/dist/types/components/filter-panel.vue.d.ts +21 -0
- package/dist/types/components/format-dialog.vue.d.ts +24 -0
- package/dist/types/components/format-list.vue.d.ts +25 -0
- package/dist/types/components/format-presets.d.ts +30 -0
- package/dist/types/components/option-panel.vue.d.ts +13 -0
- package/dist/types/components/sheet-comment.vue.d.ts +29 -0
- package/dist/types/components/sheet-formula-bar.vue.d.ts +3 -0
- package/dist/types/components/sheet-link.vue.d.ts +32 -0
- package/dist/types/components/sheet-menu.vue.d.ts +20 -0
- package/dist/types/components/sheet-name-box.vue.d.ts +3 -0
- package/dist/types/components/sheet-note.vue.d.ts +22 -0
- package/dist/types/components/sheet-outline.vue.d.ts +36 -0
- package/dist/types/components/sheet-tabs.vue.d.ts +9 -0
- package/dist/types/components/sheet-toolbar.vue.d.ts +11 -0
- package/dist/types/components/validation-dialog.vue.d.ts +25 -0
- package/dist/types/context.d.ts +189 -0
- package/dist/types/core/address.d.ts +109 -0
- package/dist/types/core/axis.d.ts +23 -0
- package/dist/types/core/cell-type.d.ts +157 -0
- package/dist/types/core/clipboard.d.ts +48 -0
- package/dist/types/core/commands.d.ts +76 -0
- package/dist/types/core/comments.d.ts +22 -0
- package/dist/types/core/conditional.d.ts +114 -0
- package/dist/types/core/csv.d.ts +93 -0
- package/dist/types/core/data.d.ts +26 -0
- package/dist/types/core/document.d.ts +49 -0
- package/dist/types/core/extension.d.ts +177 -0
- package/dist/types/core/file.d.ts +301 -0
- package/dist/types/core/fill.d.ts +23 -0
- package/dist/types/core/find.d.ts +39 -0
- package/dist/types/core/format.d.ts +47 -0
- package/dist/types/core/group.d.ts +76 -0
- package/dist/types/core/history.d.ts +27 -0
- package/dist/types/core/index.d.ts +33 -0
- package/dist/types/core/link.d.ts +14 -0
- package/dist/types/core/merge.d.ts +26 -0
- package/dist/types/core/model.d.ts +363 -0
- package/dist/types/core/nav.d.ts +15 -0
- package/dist/types/core/paint.d.ts +19 -0
- package/dist/types/core/plain-cell-types.d.ts +6 -0
- package/dist/types/core/protect.d.ts +34 -0
- package/dist/types/core/selection.d.ts +25 -0
- package/dist/types/core/transaction.d.ts +470 -0
- package/dist/types/core/validation.d.ts +55 -0
- package/dist/types/core/versions.d.ts +38 -0
- package/dist/types/export/color.d.ts +7 -0
- package/dist/types/export/draw.d.ts +98 -0
- package/dist/types/export/index.d.ts +47 -0
- package/dist/types/formula/edit.d.ts +62 -0
- package/dist/types/formula/engine.d.ts +99 -0
- package/dist/types/formula/error.d.ts +30 -0
- package/dist/types/formula/functions.d.ts +62 -0
- package/dist/types/formula/help.d.ts +12 -0
- package/dist/types/formula/index.d.ts +13 -0
- package/dist/types/formula/parse.d.ts +92 -0
- package/dist/types/formula/values.d.ts +65 -0
- package/dist/types/formulas.d.ts +32 -0
- package/dist/types/index.d.ts +225 -0
- package/dist/types/locale.d.ts +531 -0
- package/dist/types/sheet.vue.d.ts +60 -0
- package/dist/types/types.d.ts +498 -0
- package/dist/types/use-comments.d.ts +47 -0
- package/dist/types/use-messages.d.ts +7 -0
- package/dist/use-comments.js +130 -0
- package/dist/use-comments.js.map +1 -0
- package/dist/use-messages.js +29 -0
- package/dist/use-messages.js.map +1 -0
- 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
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
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.0",
|
|
71
|
+
"dou-ui": "0.1.0-alpha.0",
|
|
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.0",
|
|
85
|
+
"@dou-ui/theme": "0.1.0-alpha.0"
|
|
86
|
+
},
|
|
87
|
+
"devDependencies": {
|
|
88
|
+
"@dou-ui/code": "0.1.0-alpha.0",
|
|
89
|
+
"y-protocols": "^1.0.7",
|
|
90
|
+
"yjs": "^13.6.33"
|
|
91
|
+
},
|
|
92
|
+
"publishConfig": {
|
|
93
|
+
"access": "public"
|
|
94
|
+
}
|
|
95
|
+
}
|