@w100n/documents 0.17.0 → 0.18.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 (37) hide show
  1. package/dist/{SheetView-SBLAFGTL.js → SheetView-F4CBWEOS.js} +4 -4
  2. package/dist/{TextEditor-X2GSL4QM.js → TextEditor-ZY4B7YIF.js} +5 -5
  3. package/dist/{chunk-A6AHJCEK.js → chunk-2G34AIPU.js} +3 -3
  4. package/dist/{chunk-A6AHJCEK.js.map → chunk-2G34AIPU.js.map} +1 -1
  5. package/dist/{chunk-B7C6NBBQ.js → chunk-BWU6FPPZ.js} +28 -1
  6. package/dist/chunk-BWU6FPPZ.js.map +1 -0
  7. package/dist/{chunk-ASTNK6WZ.js → chunk-TSB2QS56.js} +2 -2
  8. package/dist/{chunk-FFXAOK4A.js → chunk-Z5STMOD6.js} +2 -2
  9. package/dist/collab.cjs +28 -1
  10. package/dist/collab.cjs.map +1 -1
  11. package/dist/collab.d.cts +1 -1
  12. package/dist/collab.d.ts +1 -1
  13. package/dist/collab.js +2 -2
  14. package/dist/index.cjs +277 -45
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.css +28 -2
  17. package/dist/index.css.map +1 -1
  18. package/dist/index.d.cts +2 -2
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.js +261 -53
  21. package/dist/index.js.map +1 -1
  22. package/dist/kinds.d.cts +1 -1
  23. package/dist/kinds.d.ts +1 -1
  24. package/dist/memory.cjs +33 -5
  25. package/dist/memory.cjs.map +1 -1
  26. package/dist/memory.d.cts +1 -1
  27. package/dist/memory.d.ts +1 -1
  28. package/dist/memory.js +33 -5
  29. package/dist/memory.js.map +1 -1
  30. package/dist/{types-CHmV8GLx.d.cts → types-DyonaPQf.d.cts} +11 -1
  31. package/dist/{types-CHmV8GLx.d.ts → types-DyonaPQf.d.ts} +11 -1
  32. package/package.json +1 -1
  33. package/dist/chunk-B7C6NBBQ.js.map +0 -1
  34. /package/dist/{SheetView-SBLAFGTL.js.map → SheetView-F4CBWEOS.js.map} +0 -0
  35. /package/dist/{TextEditor-X2GSL4QM.js.map → TextEditor-ZY4B7YIF.js.map} +0 -0
  36. /package/dist/{chunk-ASTNK6WZ.js.map → chunk-TSB2QS56.js.map} +0 -0
  37. /package/dist/{chunk-FFXAOK4A.js.map → chunk-Z5STMOD6.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/editor/pager.ts","../src/editor/extensions.ts","../src/text.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport { Decoration, DecorationSet, type EditorView } from '@tiptap/pm/view';\n\nexport type Page = { width: number; height: number; margins: [number, number, number, number] };\n\nexport const a4: Page = { width: 793.73, height: 1122.53, margins: [96, 96, 96, 96] };\nexport const letter = { width: 816, height: 1056 };\n\ntype Paging = { set: DecorationSet; page: Page; marks: { header: string; footer: string }; flow: boolean };\n\nexport const paging = new PluginKey<Paging>('w100n-pager');\nconst skip = (el: Element) => el.classList.contains('w100n-text-gap') || el.classList.contains('ProseMirror-gapcursor');\n\nfunction measure(view: EditorView) {\n const { page } = paging.getState(view.state)!;\n const [top, , bottom] = page.margins;\n const room = page.height - top - bottom;\n const els = [...view.dom.children] as HTMLElement[];\n const gaps: { pos: number; height: number; page: number; end?: boolean; notes: string[] }[] = [];\n const line = page.width - page.margins[1] - page.margins[3];\n const area = (list: string[]) => list.length ? 14 + list.reduce((h, text) => h + 15 * Math.max(1, Math.ceil(text.length * 5.6 / line)), 0) : 0;\n let notes: string[] = [];\n let count = 0;\n let i = 0;\n let shift = 0;\n let start = 0;\n let last = 0;\n view.state.doc.forEach((node, offset) => {\n let el = els[i++];\n while (el && skip(el)) {\n if (el.classList.contains('w100n-text-gap')) shift += el.offsetHeight;\n el = els[i++];\n }\n if (!el) return;\n const y = el.offsetTop - shift;\n const end = y + el.offsetHeight;\n const mine: string[] = [];\n node.descendants(d => { if (d.type.name === 'footnote') mine.push(`${count + mine.length + 1} ${d.attrs.text}`); });\n if (node.type.name === 'pageBreak') {\n gaps.push({ pos: offset + node.nodeSize, height: start + room - end + bottom + 24 + top, page: gaps.length + 1, notes });\n notes = [];\n start = end;\n } else if (end > start + room - area([...notes, ...mine]) && y > start) {\n gaps.push({ pos: offset, height: start + room - y + bottom + 24 + top, page: gaps.length + 1, notes });\n notes = [];\n start = y;\n }\n notes.push(...mine);\n count += mine.length;\n while (end > start + room) start += room;\n last = end;\n });\n gaps.push({ pos: view.state.doc.content.size, height: Math.max(0, start + room - last), page: gaps.length + 1, end: true, notes });\n return gaps.map(g => ({ ...g, height: Math.max(0, Math.round(g.height)) }));\n}\n\nexport const Pager = Extension.create({\n name: 'pager',\n addProseMirrorPlugins: () => [new Plugin<Paging>({\n key: paging,\n state: {\n init: () => ({ set: DecorationSet.empty, page: a4, marks: { header: '', footer: '' }, flow: false }),\n apply(tr, value) {\n const next = tr.getMeta(paging) as Partial<Paging> | undefined;\n return { set: next?.set ?? value.set.map(tr.mapping, tr.doc), page: next?.page ?? value.page, marks: next?.marks ?? value.marks, flow: next?.flow ?? value.flow };\n },\n },\n props: { decorations: state => paging.getState(state)!.set },\n view(view) {\n let timer = 0;\n let sig = '';\n const run = () => {\n if (!view.dom.isConnected) return;\n const { marks, flow } = paging.getState(view.state)!;\n if (flow) {\n if (sig !== 'flow') view.dispatch(view.state.tr.setMeta(paging, { set: DecorationSet.empty }).setMeta('addToHistory', false));\n sig = 'flow';\n return;\n }\n const gaps = measure(view);\n const next = gaps.map(g => `${g.pos}:${g.height}:${g.notes.join('\\n')}`).join() + `|${marks.header}|${marks.footer}`;\n if (next === sig) return;\n sig = next;\n const line = (parent: HTMLElement, cls: string, text: string) => {\n if (!text) return;\n const span = document.createElement('span');\n span.className = cls;\n span.textContent = text;\n parent.append(span);\n };\n const first = Decoration.widget(0, () => {\n const el = document.createElement('div');\n el.className = 'w100n-text-first';\n el.contentEditable = 'false';\n line(el, 'w100n-text-head', marks.header);\n return el;\n }, { key: `first:${marks.header}`, side: -1, ignoreSelection: true });\n const set = DecorationSet.create(view.state.doc, [first, ...gaps.map(g => Decoration.widget(g.pos, () => {\n const el = document.createElement('div');\n el.className = g.end ? 'w100n-text-gap is-end' : 'w100n-text-gap';\n el.style.height = `${g.height}px`;\n el.dataset.page = String(g.page);\n el.contentEditable = 'false';\n line(el, 'w100n-text-foot', marks.footer);\n if (!g.end) line(el, 'w100n-text-head', marks.header);\n if (g.notes.length) {\n const list = document.createElement('div');\n list.className = 'w100n-text-footnotes';\n for (const note of g.notes) {\n const p = document.createElement('p');\n const n = document.createElement('sup');\n n.textContent = note.slice(0, note.indexOf(' '));\n p.append(n, note.slice(note.indexOf(' ')));\n list.append(p);\n }\n el.append(list);\n }\n return el;\n }, { key: `${g.pos}:${g.height}:${g.page}:${marks.header}:${marks.footer}:${g.notes.join('\\n')}`, side: -1, ignoreSelection: true }))]);\n view.dispatch(view.state.tr.setMeta(paging, { set }).setMeta('addToHistory', false));\n };\n const later = (ms: number) => {\n clearTimeout(timer);\n timer = window.setTimeout(run, ms);\n };\n const watch = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => later(200));\n watch?.observe(view.dom);\n later(0);\n return {\n update: (next, prev) => {\n const now = paging.getState(next.state)!, was = paging.getState(prev)!;\n if (now.page !== was.page || now.marks !== was.marks || now.flow !== was.flow) later(0);\n else if (next.state.doc !== prev.doc) later(400);\n },\n destroy: () => { clearTimeout(timer); watch?.disconnect(); },\n };\n },\n })],\n});\n","import { Extension, Mark, Node, type Editor } from '@tiptap/core';\nimport Collaboration from '@tiptap/extension-collaboration';\nimport CollaborationCaret from '@tiptap/extension-collaboration-caret';\nimport Highlight from '@tiptap/extension-highlight';\nimport Image from '@tiptap/extension-image';\nimport { TaskItem, TaskList } from '@tiptap/extension-list';\nimport { TableKit } from '@tiptap/extension-table';\nimport { Color, FontFamily, FontSize, TextStyle } from '@tiptap/extension-text-style';\nimport type { Node as Block, Slice } from '@tiptap/pm/model';\nimport { Plugin, PluginKey, TextSelection, type EditorState, type Transaction } from '@tiptap/pm/state';\nimport { StepMap, type Mappable } from '@tiptap/pm/transform';\nimport { Decoration, DecorationSet, type EditorView } from '@tiptap/pm/view';\nimport StarterKit from '@tiptap/starter-kit';\nimport { ySyncPluginKey } from '@tiptap/y-tiptap';\nimport type * as Y from 'yjs';\nimport type { Text } from '../text';\nimport { Pager } from './pager';\nimport { mathml } from './math';\n\nexport type Spot = { id: string; from: number; to: number };\ntype Notes = { spots: Spot[]; active: string | null; pending: { from: number; to: number } | null; set: DecorationSet };\n\nexport const notes = new PluginKey<Notes>('w100n-notes');\n\nconst blocks = ['paragraph', 'heading', 'bulletList', 'orderedList', 'listItem', 'taskList', 'taskItem', 'blockquote', 'codeBlock', 'horizontalRule',\n 'table', 'tableRow', 'tableHeader', 'tableCell', 'pageBreak', 'toc'];\n\nconst changed = (trs: readonly Transaction[]) => {\n const ranges: [number, number][] = [];\n trs.forEach((tr, n) => tr.steps.forEach((step, i) => {\n const slice = (step as { slice?: { openStart: number; openEnd: number; content: { firstChild: Block | null } } }).slice;\n if (!slice || (!slice.openStart && !slice.openEnd && !slice.content.firstChild?.isBlock)) return;\n const after = tr.mapping.slice(i + 1);\n for (const later of trs.slice(n + 1)) after.appendMapping(later.mapping);\n step.getMap().forEach((_a, _b, from, to) => ranges.push([after.map(from, -1), after.map(to, 1)]));\n }));\n return ranges;\n};\n\nconst Cells = Extension.create({\n name: 'cells',\n addGlobalAttributes: () => [\n { types: ['tableCell', 'tableHeader'], attributes: { background: { default: null, parseHTML: el => el.dataset.fill ?? null, renderHTML: attrs => attrs.background ? { 'data-fill': attrs.background, style: `background-color: ${attrs.background}` } : {} } } },\n { types: ['table'], attributes: { borders: { default: null, parseHTML: el => el.dataset.borders ?? null, renderHTML: attrs => attrs.borders ? { 'data-borders': attrs.borders } : {} } } },\n ],\n});\n\ntype Search = { query: string; matchCase: boolean; hits: { from: number; to: number }[]; at: number; set: DecorationSet };\n\nexport const searching = new PluginKey<Search>('w100n-search');\n\nconst lookup = (doc: Block, query: string, matchCase: boolean) => {\n const hits: { from: number; to: number }[] = [];\n if (!query) return hits;\n const needle = matchCase ? query : query.toLowerCase();\n doc.descendants((node, pos) => {\n if (!node.isTextblock) return true;\n let text = '';\n const at: number[] = [];\n node.forEach((child, offset) => {\n const part = child.isText ? child.text! : '\\uFFFC';\n for (let i = 0; i < part.length; i++) at.push(pos + 1 + offset + i);\n text += part;\n });\n const hay = matchCase ? text : text.toLowerCase();\n for (let i = hay.indexOf(needle); i >= 0; i = hay.indexOf(needle, i + needle.length)) hits.push({ from: at[i], to: at[i + needle.length - 1] + 1 });\n return false;\n });\n return hits;\n};\n\nconst Search = Extension.create({\n name: 'search',\n addProseMirrorPlugins: () => [new Plugin<Search>({\n key: searching,\n state: {\n init: () => ({ query: '', matchCase: false, hits: [], at: 0, set: DecorationSet.empty }),\n apply(tr, value) {\n const meta = tr.getMeta(searching) as Partial<Pick<Search, 'query' | 'matchCase' | 'at'>> | undefined;\n if (!meta && !tr.docChanged) return value;\n const next = { ...value, ...meta };\n const hits = lookup(tr.doc, next.query, next.matchCase);\n const at = hits.length ? ((next.at % hits.length) + hits.length) % hits.length : 0;\n return { ...next, hits, at, set: DecorationSet.create(tr.doc, hits.map((h, i) => Decoration.inline(h.from, h.to, { class: i === at ? 'w100n-found is-current' : 'w100n-found' }))) };\n },\n },\n props: { decorations: state => searching.getState(state)!.set },\n })],\n});\n\nexport const replace = (editor: Editor, text: string, all: boolean) => {\n const { hits, at } = searching.getState(editor.state)!;\n if (!hits.length) return 0;\n const tr = editor.state.tr;\n for (const hit of all ? [...hits].reverse() : [hits[at]]) tr.insertText(text, hit.from, hit.to);\n editor.view.dispatch(tr);\n return all ? hits.length : 1;\n};\n\nexport const cleanPaste = (html: string) => html\n .replace(/<!--\\[if[\\s\\S]*?<!\\[endif\\]-->/g, '')\n .replace(/<o:p>[\\s\\S]*?<\\/o:p>/g, '')\n .replace(/\\sclass=(\"|')?Mso[^\"'\\s>]*\\1?/g, '')\n .replace(/<img\\b[^>]*\\ssrc=(\"|')file:[^\"']*\\1[^>]*>/gi, '')\n .replace(/\\sstyle=(\"|')([^\"']*)\\1/g, (_, q: string, css: string) => {\n const kept = css.split(';').map(x => x.trim()).filter(x => x && !/^mso-|^tab-stops|^font-family:\\s*[\"']?(Symbol|Wingdings)/i.test(x)).join('; ');\n return kept ? ` style=${q}${kept}${q}` : '';\n });\n\nconst Blocks = Extension.create({\n name: 'blocks',\n addGlobalAttributes: () => [{\n types: blocks,\n attributes: {\n align: { default: null, parseHTML: el => el.style.textAlign || null, renderHTML: attrs => attrs.align ? { style: `text-align: ${attrs.align}` } : {} },\n indent: { default: 0, parseHTML: el => Number(el.dataset.indent) || 0, renderHTML: attrs => attrs.indent ? { 'data-indent': attrs.indent, style: `margin-left: ${attrs.indent * 0.5}in` } : {} },\n line: { default: null, parseHTML: el => Number(el.dataset.line) || null, renderHTML: attrs => attrs.line ? { 'data-line': attrs.line, style: `line-height: ${attrs.line * 1.15}` } : {} },\n after: { default: null, parseHTML: el => el.dataset.after ? Number(el.dataset.after) : null, renderHTML: attrs => attrs.after === null || attrs.after === undefined ? {} : { 'data-after': attrs.after, style: `margin-bottom: ${attrs.after}pt` } },\n ref: { default: null, rendered: false, keepOnSplit: false },\n },\n }],\n addProseMirrorPlugins: () => [new Plugin({\n appendTransaction(trs, _old, state) {\n const ranges = changed(trs);\n if (!ranges.length) return null;\n const seen = new Map<string, { pos: number; node: Block }>();\n const drop: number[] = [];\n const visit = (node: Block, pos: number) => {\n const ref = node.attrs.ref as string | null;\n if (!ref) return;\n const first = seen.get(ref);\n if (!first) seen.set(ref, { pos, node });\n else if (!first.node.textContent && node.textContent) { drop.push(first.pos); seen.set(ref, { pos, node }); }\n else drop.push(pos);\n };\n const from = Math.max(0, Math.min(...ranges.map(r => r[0])));\n const to = Math.min(state.doc.content.size, Math.max(...ranges.map(r => r[1])));\n const $from = state.doc.resolve(from);\n const $to = state.doc.resolve(to);\n const start = Math.max(0, $from.index(0) - 1);\n const end = Math.min(state.doc.childCount, $to.index(0) + 2);\n let pos = 0;\n for (let i = 0; i < start; i++) pos += state.doc.child(i).nodeSize;\n for (let i = start; i < end; i++) {\n const top = state.doc.child(i);\n visit(top, pos);\n top.descendants((node, at) => visit(node, pos + 1 + at));\n pos += top.nodeSize;\n }\n if (!drop.length) return null;\n const tr = state.tr;\n for (const at of drop) tr.setNodeAttribute(at, 'ref', null);\n return tr;\n },\n })],\n});\n\nconst PageBreak = Node.create<{ label: string }>({\n name: 'pageBreak',\n group: 'block',\n atom: true,\n selectable: true,\n addOptions: () => ({ label: '' }),\n parseHTML: () => [{ tag: 'div[data-page-break]' }],\n renderHTML() {\n return ['div', { 'data-page-break': '', 'data-label': this.options.label, class: 'w100n-text-break', contenteditable: 'false' }];\n },\n});\n\nconst Formula = Node.create({\n name: 'math',\n group: 'inline',\n inline: true,\n atom: true,\n selectable: true,\n addAttributes: () => ({ latex: { default: '', parseHTML: el => el.getAttribute('data-math') ?? '' } }),\n parseHTML: () => [{ tag: 'span[data-math]' }],\n renderHTML: ({ node }) => ['span', { 'data-math': node.attrs.latex, class: 'w100n-math' }],\n addNodeView: () => ({ node }) => {\n const dom = document.createElement('span');\n dom.className = 'w100n-math';\n dom.dataset.math = node.attrs.latex;\n dom.contentEditable = 'false';\n dom.innerHTML = mathml(node.attrs.latex);\n return { dom };\n },\n});\n\nconst Footnote = Node.create({\n name: 'footnote',\n group: 'inline',\n inline: true,\n atom: true,\n selectable: true,\n addAttributes: () => ({\n id: { default: null, parseHTML: el => el.getAttribute('data-note-id') },\n text: { default: '', parseHTML: el => el.getAttribute('title') ?? '' },\n }),\n parseHTML: () => [{ tag: 'sup[data-footnote]' }],\n renderHTML: ({ node }) => ['sup', { 'data-footnote': '', 'data-note-id': node.attrs.id ?? undefined, title: node.attrs.text, class: 'w100n-fn', contenteditable: 'false' }],\n});\n\nexport const wikiName = (target: string) => target.split('#')[0].trim().replace(/\\.md$/i, '');\n\nconst WikiLink = Node.create<{ known: (target: string) => boolean }>({\n name: 'wikilink',\n group: 'inline',\n inline: true,\n atom: true,\n selectable: true,\n addOptions: () => ({ known: () => true }),\n addAttributes: () => ({\n target: { default: '', parseHTML: el => el.getAttribute('data-wiki') ?? '' },\n alias: { default: null, parseHTML: el => el.getAttribute('data-alias') },\n }),\n parseHTML: () => [{ tag: 'span[data-wiki]' }],\n renderHTML: ({ node }) => ['span', { 'data-wiki': node.attrs.target, 'data-alias': node.attrs.alias ?? undefined, class: 'w100n-wiki', contenteditable: 'false' },\n node.attrs.alias || wikiName(node.attrs.target) || node.attrs.target],\n addProseMirrorPlugins() {\n const known = this.options.known;\n return [new Plugin({\n props: {\n decorations(state) {\n const found: Decoration[] = [];\n state.doc.descendants((node, pos) => {\n if (node.type.name === 'wikilink' && !known(node.attrs.target)) found.push(Decoration.node(pos, pos + node.nodeSize, { class: 'is-missing' }));\n });\n return DecorationSet.create(state.doc, found);\n },\n },\n })];\n },\n});\n\nexport const wikiAsk = new PluginKey<{ from: number; query: string } | null>('wikiAsk');\n\nconst WikiAsk = Extension.create({\n name: 'wikiAsk',\n addProseMirrorPlugins() {\n return [new Plugin<{ from: number; query: string } | null>({\n key: wikiAsk,\n state: {\n init: () => null,\n apply(tr, _old, _before, state) {\n const { $from, empty } = state.selection;\n if (!empty || !$from.parent.isTextblock || $from.parent.type.spec.code) return null;\n const before = $from.parent.textBetween(0, $from.parentOffset, undefined, '\\ufffc');\n const m = /\\[\\[([^[\\]\\n|\\ufffc]*)$/.exec(before);\n return m ? { from: $from.pos - m[0].length, query: m[1] } : null;\n },\n },\n })];\n },\n});\n\nconst signs: Record<string, string> = { bold: '**', italic: '*', strike: '~~', code: '`' };\n\nconst syntax = (text: string, pos: number, side: number) => Decoration.widget(pos, () => {\n const el = document.createElement('span');\n el.className = 'w100n-syntax';\n el.textContent = text;\n return el;\n}, { side, key: `${text}:${pos}:${side}` });\n\nconst Reveal = Extension.create({\n name: 'reveal',\n addProseMirrorPlugins: () => [new Plugin({\n props: {\n decorations(state) {\n const { $from, empty } = state.selection;\n if (!empty || !$from.parent.isTextblock) return null;\n const found: Decoration[] = [];\n const start = $from.start();\n if ($from.parent.type.name === 'heading') found.push(syntax(`${'#'.repeat($from.parent.attrs.level)} `, start, -1));\n const at = $from.parentOffset;\n for (const [name, sign] of Object.entries(signs)) {\n let from = -1;\n let offset = 0;\n $from.parent.forEach(child => {\n const end = offset + child.nodeSize;\n if (child.marks.some(m => m.type.name === name)) {\n if (from < 0) from = offset;\n if (from <= at && at <= end && (end === $from.parent.content.size || !$from.parent.childAfter(end).node?.marks.some(m => m.type.name === name))) {\n found.push(syntax(sign, start + from, -1), syntax(sign, start + end, 1));\n }\n } else from = -1;\n offset = end;\n });\n }\n return DecorationSet.create(state.doc, found);\n },\n },\n })],\n});\n\nconst EndNotes = Extension.create({\n name: 'endNotes',\n addProseMirrorPlugins: () => [new Plugin({\n props: {\n decorations(state) {\n const notes: string[] = [];\n state.doc.descendants(n => { if (n.type.name === 'footnote') notes.push(n.attrs.text); });\n if (!notes.length) return null;\n return DecorationSet.create(state.doc, [Decoration.widget(state.doc.content.size, () => {\n const list = document.createElement('div');\n list.className = 'w100n-text-endnotes';\n list.contentEditable = 'false';\n notes.forEach((text, i) => {\n const p = list.appendChild(document.createElement('p'));\n p.appendChild(document.createElement('sup')).textContent = String(i + 1);\n p.append(text);\n });\n return list;\n }, { key: notes.join('\\n'), side: 1, ignoreSelection: true })]);\n },\n },\n })],\n});\n\nexport type Entry = [number, string];\n\nconst headings = (doc: Block, after: number) => {\n const found: { pos: number; level: number; text: string }[] = [];\n doc.descendants((node, pos) => {\n if (pos > after && node.type.name === 'heading' && node.attrs.level <= 3 && node.textContent.trim()) found.push({ pos, level: node.attrs.level, text: node.textContent.trim() });\n return !node.isTextblock;\n });\n return found;\n};\n\nexport function entries(doc: Block, relative: boolean, after: number): Entry[] {\n const list = headings(doc, after).map(h => [h.level, h.text] as Entry);\n const top = relative && list.length ? Math.min(...list.map(([level]) => level)) - 1 : 0;\n return list.map(([level, text]) => [level - top, text]);\n}\n\nconst Toc = Node.create<{ relative: boolean; label: string; empty: string }>({\n name: 'toc',\n group: 'block',\n atom: true,\n selectable: true,\n addOptions: () => ({ relative: false, label: '', empty: '' }),\n addAttributes: () => ({ entries: { default: '[]' }, title: { default: null } }),\n parseHTML: () => [{ tag: 'nav[data-toc]' }],\n renderHTML() {\n return ['nav', { 'data-toc': '', class: 'w100n-text-toc' }];\n },\n addNodeView() {\n return ({ editor, getPos }) => {\n const dom = document.createElement('nav');\n dom.className = 'w100n-text-toc';\n dom.contentEditable = 'false';\n const paint = () => {\n const at = getPos() ?? 0;\n const list = entries(editor.state.doc, this.options.relative, at);\n const head = document.createElement('b');\n head.textContent = this.options.label;\n const items = list.map(([level, text], i) => {\n const go = document.createElement('button');\n go.type = 'button';\n go.textContent = text;\n go.dataset.level = String(level);\n go.onclick = () => {\n const hit = headings(editor.state.doc, getPos() ?? 0)[i];\n if (hit) (editor.view.nodeDOM(hit.pos) as HTMLElement | null)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n };\n return go;\n });\n const empty = document.createElement('small');\n empty.textContent = this.options.empty;\n dom.replaceChildren(head, ...(items.length ? items : [empty]));\n };\n paint();\n return {\n dom,\n update: node => {\n if (node.type.name !== 'toc') return false;\n paint();\n return true;\n },\n ignoreMutation: () => true,\n };\n };\n },\n addProseMirrorPlugins() {\n const relative = this.options.relative;\n return [new Plugin({\n appendTransaction(trs, _old, state) {\n if (!trs.some(tr => tr.docChanged && !tr.getMeta(ySyncPluginKey))) return null;\n const at: number[] = [];\n state.doc.forEach((node, pos) => { if (node.type.name === 'toc') at.push(pos); });\n if (!at.length) return null;\n const tr = state.tr;\n for (const pos of at) {\n const fresh = JSON.stringify(entries(state.doc, relative, pos));\n if (state.doc.nodeAt(pos)!.attrs.entries !== fresh) tr.setNodeAttribute(pos, 'entries', fresh);\n }\n return tr.docChanged ? tr : null;\n },\n })];\n },\n});\n\nconst revision = (name: 'insertion' | 'deletion', tag: 'ins' | 'del') => Mark.create({\n name,\n inclusive: false,\n excludes: 'insertion deletion',\n addAttributes: () => ({ id: { default: null }, author: { default: '' }, date: { default: '' } }),\n parseHTML: () => [{ tag: `${tag}[data-rev]` }],\n renderHTML: ({ HTMLAttributes }) => [tag, { 'data-rev': HTMLAttributes.id, class: 'w100n-text-rev', title: HTMLAttributes.author }, 0],\n});\n\nexport type Change = { id: string; kind: 'insertion' | 'deletion'; author: string; date: string; text: string; from: number; to: number };\n\nconst seen = new WeakMap<Block, Change[]>();\n\nexport function changes(doc: Block): Change[] {\n const hit = seen.get(doc);\n if (hit) return hit;\n const out: Change[] = [];\n doc.descendants((node, pos) => {\n if (!node.isText) return;\n const mark = node.marks.find(m => m.type.name === 'insertion' || m.type.name === 'deletion');\n if (!mark) return;\n const last = out[out.length - 1];\n if (last && last.id === mark.attrs.id && last.kind === mark.type.name && last.to === pos) Object.assign(last, { text: last.text + node.text, to: pos + node.nodeSize });\n else out.push({ id: mark.attrs.id, kind: mark.type.name as Change['kind'], author: mark.attrs.author, date: mark.attrs.date, text: node.text!, from: pos, to: pos + node.nodeSize });\n });\n seen.set(doc, out);\n return out;\n}\n\nexport function decide(editor: Editor, accept: boolean, id?: string) {\n const { state } = editor;\n const tr = state.tr;\n for (const c of changes(state.doc).filter(c => !id || c.id === id).reverse()) {\n if ((c.kind === 'insertion') === accept) tr.removeMark(c.from, c.to, state.schema.marks[c.kind].create({ id: c.id, author: c.author, date: c.date }));\n else tr.delete(c.from, c.to);\n }\n if (tr.docChanged) editor.view.dispatch(tr);\n}\n\ntype Suggesting = { on: boolean; me: string };\nexport const suggesting = new PluginKey<Suggesting>('w100n-suggest');\n\nconst Suggest = Extension.create({\n name: 'suggest',\n addProseMirrorPlugins() {\n const stamp = (state: EditorState, kind: 'insertion' | 'deletion', from: number, to: number) => {\n const me = suggesting.getState(state)!.me;\n const own = [state.doc.resolve(from).nodeBefore, state.doc.resolve(to).nodeAfter].flatMap(n => n?.marks ?? []).find(m => m.type.name === kind && m.attrs.author === me);\n return state.schema.marks[kind].create(own ? own.attrs : { id: Math.random().toString(36).slice(2, 10), author: me, date: new Date().toISOString().replace(/\\.\\d+Z$/, 'Z') });\n };\n const strike = (tr: Transaction, state: EditorState, from: number, to: number) => {\n const parts: { from: number; to: number; added: boolean }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) return;\n const a = Math.max(from, pos), b = Math.min(to, pos + node.nodeSize);\n if (b > a && !node.marks.some(m => m.type.name === 'deletion')) parts.push({ from: a, to: b, added: node.marks.some(m => m.type.name === 'insertion') });\n });\n const mark = stamp(state, 'deletion', from, to);\n for (const p of parts.reverse()) {\n if (p.added) tr.delete(p.from, p.to);\n else tr.addMark(p.from, p.to, mark);\n }\n };\n const type = (view: EditorView, from: number, to: number, text: string) => {\n const { state } = view;\n const tr = state.tr;\n if (to > from) strike(tr, state, from, to);\n const at = tr.mapping.map(to);\n const kept = (state.storedMarks ?? state.doc.resolve(from).marks()).filter(m => m.type.name !== 'insertion' && m.type.name !== 'deletion');\n tr.insert(at, state.schema.text(text, [...kept, stamp(state, 'insertion', from, to)]));\n tr.setSelection(TextSelection.create(tr.doc, at + text.length));\n view.dispatch(tr.scrollIntoView());\n return true;\n };\n return [new Plugin<Suggesting>({\n key: suggesting,\n state: {\n init: () => ({ on: false, me: '' }),\n apply: (tr, value) => tr.getMeta(suggesting) ?? value,\n },\n props: {\n handleTextInput(view, from, to, text) {\n return suggesting.getState(view.state)!.on && type(view, from, to, text);\n },\n handlePaste(view, _event, slice) {\n if (!suggesting.getState(view.state)!.on) return false;\n const { from, to } = view.state.selection;\n return type(view, from, to, slice.content.textBetween(0, slice.content.size, '\\n'));\n },\n handleKeyDown(view, event) {\n const { state } = view;\n if (!suggesting.getState(state)!.on || (event.key !== 'Backspace' && event.key !== 'Delete') || event.metaKey || event.ctrlKey || event.altKey) return false;\n const { from, to, empty, $from } = state.selection;\n const back = event.key === 'Backspace';\n let at = from;\n if (empty) {\n const skip = (pos: number) => state.doc.resolve(pos)[back ? 'nodeBefore' : 'nodeAfter']?.marks.some(m => m.type.name === 'deletion');\n while (skip(at)) at += back ? -1 : 1;\n if (back ? at <= $from.start() : at >= $from.end()) return false;\n }\n const tr = state.tr;\n if (empty) strike(tr, state, back ? at - 1 : at, back ? at : at + 1);\n else strike(tr, state, from, to);\n const caret = empty ? tr.mapping.map(back ? at - 1 : at + 1, back ? -1 : 1) : tr.mapping.map(back ? from : to);\n tr.setSelection(TextSelection.create(tr.doc, caret));\n view.dispatch(tr.scrollIntoView());\n return true;\n },\n },\n })];\n },\n});\n\nconst Note = Mark.create({\n name: 'comment',\n inclusive: false,\n excludes: '',\n addAttributes: () => ({ id: { default: null, renderHTML: attrs => ({ 'data-comment': attrs.id }) } }),\n renderHTML: ({ HTMLAttributes }) => ['span', HTMLAttributes, 0],\n});\n\nconst locks = new PluginKey<{ spans: { from: number; to: number }[]; set: DecorationSet }>('w100n-locks');\nconst locked = (node: Block) => node.type.name === 'paragraph' && String(node.attrs.ref ?? '').startsWith('lock:');\nconst scan = (doc: Block) => {\n const spans: { from: number; to: number }[] = [];\n doc.descendants((node, pos) => {\n if (!locked(node)) return true;\n spans.push({ from: pos, to: pos + node.nodeSize });\n return false;\n });\n return spans;\n};\n\nconst Locks = Extension.create<{ label: string }>({\n name: 'locks',\n addOptions: () => ({ label: '' }),\n addProseMirrorPlugins() {\n const shade = (doc: Block, spans: { from: number; to: number }[]) =>\n DecorationSet.create(doc, spans.map(s => Decoration.node(s.from, s.to, { class: 'w100n-text-lock', contenteditable: 'false', 'data-label': this.options.label })));\n return [new Plugin({\n key: locks,\n state: {\n init: (_config, state) => {\n const spans = scan(state.doc);\n return { spans, set: shade(state.doc, spans) };\n },\n apply(tr, value) {\n if (!tr.docChanged) return value;\n const fresh = tr.steps.some(step => {\n let found = false;\n (step as { slice?: Slice }).slice?.content.descendants(node => { found ||= locked(node); return !found; });\n return found;\n });\n const spans = fresh ? scan(tr.doc) : value.spans.map(s => ({ from: tr.mapping.map(s.from, 1), to: tr.mapping.map(s.to, -1) })).filter(s => s.to > s.from);\n return { spans, set: spans.length ? shade(tr.doc, spans) : DecorationSet.empty };\n },\n },\n filterTransaction(tr, state) {\n let spans = locks.getState(state)!.spans;\n if (!spans.length || !tr.docChanged) return true;\n return tr.mapping.maps.every(map => {\n let ok = true;\n map.forEach((from, to) => {\n for (const s of spans) if (((from < s.to && to > s.from) || (from > s.from && from < s.to)) && !(from <= s.from && to >= s.to)) ok = false;\n });\n spans = spans.map(s => ({ from: map.map(s.from, 1), to: map.map(s.to, -1) }));\n return ok;\n });\n },\n props: {\n decorations: state => locks.getState(state)!.set,\n handleKeyDown(view, event) {\n const back = event.key === 'Backspace';\n const { $from, empty } = view.state.selection;\n if ((!back && event.key !== 'Delete') || !empty || $from.depth < 1) return false;\n if (back ? $from.parentOffset !== 0 : $from.parentOffset !== $from.parent.content.size) return false;\n const at = back ? $from.before() : $from.after();\n const node = back ? view.state.doc.resolve(at).nodeBefore : view.state.doc.resolve(at).nodeAfter;\n if (!node || !locked(node)) return false;\n view.dispatch(view.state.tr.delete(back ? at - node.nodeSize : at, back ? at : at + node.nodeSize));\n return true;\n },\n },\n })];\n },\n});\n\nconst paint = (doc: Block, spots: Spot[], active: string | null, pending: Notes['pending']) => DecorationSet.create(doc, [\n ...spots.filter(s => s.to > s.from).map(s => Decoration.inline(s.from, s.to, { class: s.id === active ? 'w100n-text-note is-active' : 'w100n-text-note', 'data-note': s.id })),\n ...(pending && pending.to > pending.from ? [Decoration.inline(pending.from, pending.to, { class: 'w100n-text-note is-active' })] : []),\n]);\n\nconst remap = (tr: Transaction): Mappable => {\n const start = tr.before.content.findDiffStart(tr.doc.content);\n if (!tr.getMeta(ySyncPluginKey) || start === null) return tr.mapping;\n let { a, b } = tr.before.content.findDiffEnd(tr.doc.content)!;\n if (a < start) [a, b] = [start, b + start - a];\n if (b < start) [a, b] = [a + start - b, start];\n return new StepMap([start, a - start, b - start]);\n};\n\nconst Notes = Extension.create({\n name: 'notes',\n addProseMirrorPlugins: () => [new Plugin<Notes>({\n key: notes,\n state: {\n init: (_config, state) => ({ spots: [], active: null, pending: null, set: DecorationSet.create(state.doc, []) }),\n apply(tr, value) {\n const next = tr.getMeta(notes) as Partial<Notes> | undefined;\n if (!next && (!tr.docChanged || (!value.spots.length && !value.pending))) return value;\n const by = remap(tr);\n const map = <T extends { from: number; to: number }>(r: T): T => ({ ...r, from: by.map(r.from, 1), to: by.map(r.to, -1) });\n const merged = { ...value, spots: value.spots.map(map), pending: value.pending && map(value.pending), ...next };\n return { ...merged, set: paint(tr.doc, merged.spots, merged.active, merged.pending) };\n },\n },\n props: { decorations: state => notes.getState(state)!.set },\n })],\n});\n\nconst script = (name: 'superscript' | 'subscript', tag: 'sup' | 'sub', other: string) => Mark.create({\n name, excludes: other,\n parseHTML: () => [{ tag }, { style: `vertical-align=${name === 'superscript' ? 'super' : 'sub'}` }],\n renderHTML: () => [tag, 0],\n addKeyboardShortcuts() {\n return { [name === 'superscript' ? 'Mod-.' : 'Mod-,']: () => this.editor.commands.toggleMark(name) };\n },\n});\n\nexport function kit(kind: 'markdown' | 'docx', t: Pick<Text, 'pageBreak' | 'tasks' | 'locked' | 'toc' | 'tocEmpty'>, live?: { doc: Y.Doc; link: { awareness: unknown }; user: Record<string, string> } | null,\n wiki?: { known: (target: string) => boolean }) {\n return [\n StarterKit.configure({ trailingNode: false, link: { openOnClick: false, autolink: true, defaultProtocol: 'https' }, dropcursor: { color: '#8b5cf6', width: 2 }, ...(live ? { undoRedo: false } as const : {}) }),\n TaskList, TaskItem.configure({ nested: true, a11y: { checkboxLabel: node => node.textContent || t.tasks } }),\n TableKit.configure({ table: { resizable: true, cellMinWidth: 32 } }), Cells, Search,\n Image.extend({\n addAttributes() {\n return { ...this.parent?.(), wrap: { default: null, parseHTML: el => el.dataset.wrap ?? null, renderHTML: attrs => attrs.wrap ? { 'data-wrap': attrs.wrap } : {} } };\n },\n }).configure({ inline: true, allowBase64: true, resize: { enabled: true, directions: ['top-left', 'top-right', 'bottom-left', 'bottom-right'], minWidth: 24, minHeight: 24, alwaysPreserveAspectRatio: true } }),\n Highlight.configure({ multicolor: true }), TextStyle, Color, FontSize, FontFamily, script('superscript', 'sup', 'subscript'), script('subscript', 'sub', 'superscript'),\n Blocks, PageBreak.configure({ label: t.pageBreak }), Toc.configure({ relative: kind === 'markdown', label: t.toc, empty: t.tocEmpty }), Note, Notes,\n Formula, Footnote, EndNotes, WikiLink.configure({ known: wiki?.known ?? (() => true) }), ...(kind === 'markdown' && wiki ? [WikiAsk, Reveal] : []),\n ...(kind === 'docx' ? [Pager, Locks.configure({ label: t.locked }), revision('insertion', 'ins'), revision('deletion', 'del'), Suggest] : []),\n ...(live ? [Collaboration.configure({ document: live.doc }), CollaborationCaret.configure({ provider: live.link, user: live.user })] : []),\n ];\n}\n\nconst textblocks = (editor: Editor, change: (attrs: Record<string, unknown>) => Record<string, unknown>) => editor.chain().focus().command(({ tr, state }) => {\n state.doc.nodesBetween(state.selection.from, state.selection.to, (node, pos) => {\n if (!node.isTextblock) return true;\n for (const [key, value] of Object.entries(change(node.attrs))) if (node.attrs[key] !== value) tr.setNodeAttribute(pos, key, value);\n return false;\n });\n return true;\n}).run();\n\nexport const align = (editor: Editor, value: string | null) => textblocks(editor, () => ({ align: value === 'left' ? null : value }));\n\nexport const spacing = (editor: Editor, change: { line?: number | null; after?: number | null }) => textblocks(editor, () => change);\n\nexport const indent = (editor: Editor, step: number) => {\n const type = editor.isActive('taskItem') ? 'taskItem' : editor.isActive('listItem') ? 'listItem' : null;\n if (type) return step > 0 ? editor.chain().focus().sinkListItem(type).run() : editor.chain().focus().liftListItem(type).run();\n return textblocks(editor, attrs => ({ indent: Math.min(8, Math.max(0, Number(attrs.indent) + step)) }));\n};\n\nexport const clear = (editor: Editor) => {\n const chain = editor.chain().focus();\n for (const mark of ['bold', 'italic', 'underline', 'strike', 'code', 'highlight', 'textStyle']) chain.unsetMark(mark);\n chain.run();\n return textblocks(editor, () => ({ align: null, indent: 0 }));\n};\n\nexport function locate(doc: Block, list: { id: string; quote: string; anchor?: string }[]): Spot[] {\n if (!list.length) return [];\n const marked = new Map<string, { from: number; to: number; text: string }>();\n doc.descendants((node, pos) => {\n if (!node.isText) return;\n for (const mark of node.marks) {\n if (mark.type.name !== 'comment') continue;\n const found = marked.get(mark.attrs.id);\n if (found) Object.assign(found, { to: pos + node.nodeSize, text: found.text + node.text });\n else marked.set(mark.attrs.id, { from: pos, to: pos + node.nodeSize, text: node.text! });\n }\n });\n const claimed = new Set<string>();\n const search = (quote: string) => {\n const line = quote.split('\\n').find(part => part.trim())?.trim();\n let hit: { from: number; to: number } | null = null;\n if (line) doc.descendants((node, pos) => {\n if (hit) return false;\n if (!node.isTextblock) return true;\n const at = node.textBetween(0, node.content.size, undefined, '').indexOf(line);\n if (at >= 0) hit = { from: pos + 1 + at, to: pos + 1 + at + line.length };\n return false;\n });\n return hit;\n };\n return list.flatMap(c => {\n const own = [c.anchor, c.id].find(id => id && marked.has(id));\n let range: { from: number; to: number } | null | undefined = own ? marked.get(own) : undefined;\n if (!range) {\n const twin = [...marked].find(([id, m]) => !claimed.has(id) && m.text === c.quote);\n if (twin) { claimed.add(twin[0]); range = twin[1]; }\n }\n range ??= search(c.quote);\n return range ? [{ id: c.id, from: range.from, to: range.to }] : [];\n });\n}\n","import type { DocumentKind, Language, SignatureMethod } from './types';\n\nconst en = {\n elsewhere: 'Other', wikiCreate: 'Create “{name}”', wikiNew: 'new note', wikiKeys: '↑↓ pick · ↵ link · | alias', tree: 'Tree', cards: 'Cards',\n openNote: 'Open note', findNote: 'Type a note name', createNote: 'Create note “{name}”', noNote: 'No notes match', keysOpen: '↑↓ move · ↵ open · esc close',\n commands: 'Commands', newNote: 'New note', searchAll: 'Search in all notes', showOutline: 'Show outline', showLinks: 'Show backlinks', showVersions: 'Show versions', showComments: 'Show comments', keysRun: '↑↓ move · ↵ run · esc close',\n links: 'Links', linked: 'Linked mentions', unlinked: 'Unlinked mentions', noBacklinks: 'Nothing links here yet',\n documents: 'Documents', hint: 'Files of your projects: read, edit and comment in one place', loose: 'Without a folder', search: 'Search documents', all: 'All', empty: 'No documents here yet', nothing: 'Nothing matches the search',\n pick: 'Choose a document from the list', closeList: 'Hide the list', openList: 'Show the list',\n outline: 'Outline', versions: 'Versions', details: 'Details', noOutline: 'This document has no headings', findHeading: 'Find a heading', read: 'read', showSections: 'Show sections', hideSections: 'Hide sections', current: 'Current',\n size: 'Size', updated: 'Updated', by: 'Updated by', kind: 'Format', rights: 'You can', view: 'View', comment: 'Comment', edit: 'Edit',\n failed: 'Could not load', retry: 'Try again', loading: 'Loading', unsupported: 'This file cannot be shown yet',\n sendChat: 'Send to chat', openFile: 'Open', openTab: 'Open in a new tab', copyLink: 'Copy link', linkCopied: 'Link copied', trash: 'Move to trash', trashAsk: 'Move {name} to trash?', trashed: 'Moved to trash', createdOn: 'Created {when}', updatedOn: 'Updated {when}', actionFailed: 'Could not do that', fileActions: 'File actions',\n teamTemplates: 'Team templates', saveTemplate: 'Save as template', templateSaved: 'Saved to Templates', templateFailed: 'Could not save the template', assignTo: 'Assign to {name}', assignedTo: 'Assigned to {name}', assignedYou: 'Assigned to you', printLayout: 'Print layout', cut: 'Cut', paste: 'Paste', spellCheck: 'Spell check', spellHint: 'Spelling: right-click again',\n restore: 'Restore this version', restoreFailed: 'Could not restore', showChanges: 'What changed', hideChanges: 'Back to the version', noChanges: 'Same text as now', changeCount: 'Since this version, paragraphs: {added} added, {edited} changed, {removed} removed',\n allProjects: 'All projects', closePanel: 'Hide the panel', openPanel: 'Show the panel', zoomIn: 'Zoom in', zoomOut: 'Zoom out', fit: 'Actual size',\n pdfTools: 'PDF tools', pages: 'Pages', page: 'Page', fitWidth: 'Fit to width', fitPage: 'Fit to page', find: 'Find in the document', previous: 'Previous', next: 'Next',\n close: 'Close', searching: 'Searching', noHits: 'No results', selectText: 'Select text', highlight: 'Highlight', underline: 'Underline', strike: 'Strike out',\n note: 'Note', draw: 'Draw', eraser: 'Eraser', sign: 'Sign', colour: 'Colour', lineWidth: 'Line width', undo: 'Undo', redo: 'Redo', save: 'Save', saving: 'Saving',\n saved: 'Saved', align: 'Align', moreTools: 'More tools', fewerTools: 'Fewer tools', typeFilter: 'Type', selectAll: 'Select all', clearPick: 'Clear', saveFailed: 'Could not save', remove: 'Remove', notePlaceholder: 'Write a note', signature: 'Signature', placeHint: 'Click or tap where the signature goes',\n cancel: 'Cancel', signTitle: 'Add a signature', typed: 'Type', drawn: 'Draw', image: 'Image', yourName: 'Your name', drawHere: 'Sign with the mouse or a finger',\n clear: 'Clear', pickImage: 'Choose a PNG or JPEG image', useSign: 'Place the signature', marksNote: 'Marks', formNote: 'Form filled', signedNote: 'Signed',\n signatures: 'Signatures', noSignatures: 'Nobody has signed this file yet', version: 'Version', download: 'Download', openInDocuments: 'Open in Documents',\n textTools: 'Text tools', home: 'Home', insert: 'Insert', layout: 'Layout', review: 'Review', viewTab: 'View', paragraphStyle: 'Paragraph style', normal: 'Normal',\n heading: 'Heading', quote: 'Quote', code: 'Code', bold: 'Bold', italic: 'Italic', textColour: 'Text colour', automatic: 'Automatic', noColour: 'No colour',\n bullets: 'Bulleted list', numbers: 'Numbered list', tasks: 'Task list', alignLeft: 'Align left', alignCenter: 'Centre', alignRight: 'Align right', justify: 'Justify',\n indent: 'Increase indent', outdent: 'Decrease indent', clearFormat: 'Clear formatting', table: 'Table', rowAbove: 'Row above', rowBelow: 'Row below',\n columnLeft: 'Column on the left', columnRight: 'Column on the right', deleteRow: 'Delete row', deleteColumn: 'Delete column', deleteTable: 'Delete table',\n headerRow: 'Header row', mergeCells: 'Merge or split cells', imageLink: 'Image address', chooseFile: 'Choose a file', put: 'Insert', link: 'Link', footnote: 'Footnote', footnoteText: 'Footnote text', formula: 'Formula', symbols: 'Special characters', symbolSearch: 'Search, for example arrow', update: 'Update', removeFootnote: 'Remove footnote',\n linkAddress: 'Link address', apply: 'Apply', unlink: 'Remove link', pageBreak: 'Page break', rule: 'Horizontal line', pageSize: 'Page size', margins: 'Margins',\n marginsNormal: 'Normal', marginsNarrow: 'Narrow', marginsWide: 'Wide', addComment: 'Add comment', comments: 'Comments', noComments: 'No comments yet',\n commentHint: 'Select text and add a comment', writeComment: 'Write a comment', post: 'Post', reply: 'Reply', resolve: 'Resolve', reopen: 'Reopen',\n resolved: 'Resolved', showResolved: 'Show resolved', commentFailed: 'Could not send the comment', exportAs: 'Export', exportFailed: 'Could not export',\n editedNote: 'Text edited', documentText: 'Document text', locked: 'Kept as in the file', references: 'References', toc: 'Table of contents', tocInsert: 'Insert table of contents', tocGo: 'Go to the table',\n tocRemove: 'Remove the table', tocHint: 'It follows the headings as you write', tocEmpty: 'Add headings and they show here',\n suggest: 'Suggest changes', suggesting: 'Suggesting', suggestions: 'Suggestions', acceptAll: 'Accept all', rejectAll: 'Reject all', accept: 'Accept', reject: 'Reject',\n added: 'Added', removed: 'Deleted', someone: 'Someone', copyAs: 'Make an XLSX copy', copyFailed: 'Could not make the copy', downloadAs: 'Download as', makeCopy: 'Make a copy', copyOf: 'Copy of', rename: 'Rename', renameFailed: 'Could not rename', editComment: 'Edit', delete: 'Delete',\n deleteAsk: 'Delete this comment?', deleteThread: 'Delete this comment and its replies?', changeFailed: 'Could not change the comment',\n unsavedTitle: 'Save your changes?', unsavedHint: 'This document has changes that are not saved yet.', discard: 'Discard', more: 'More tools',\n offline: 'Offline', offlineHint: 'Your changes stay here and sync when the connection is back', liveOff: 'Live editing is unavailable', people: 'People in this document', you: 'you',\n share: 'Share', sharing: 'Sharing', guestLinks: 'Guest links', viewLink: 'View link', commentLink: 'Comment link', madeBy: 'Made by {name}', endsOn: 'Ends {date}',\n untilOff: 'Until turned off', linkEnded: 'Ended', downloadOn: 'Download on', passwordOn: 'Password', copy: 'Copy', copied: 'Copied', changeLink: 'Change',\n turnOff: 'Turn off', newLink: 'New guest link', guestsCan: 'Guests can', canRead: 'Read', canComment: 'Read and comment', badgeRead: 'Read only',\n badgeComment: 'Read and comment', linkWorks: 'Link works', days7: '7 days', days30: '30 days', untilTurnOff: 'Until I turn it off', pickDay: 'Pick a day',\n passwordHint: 'Guests type it once on their device', passwordPlaceholder: 'Type the password', keepPassword: 'Leave empty to keep the password',\n downloadFile: 'Download the file', downloadHint: 'The original file and a PDF copy', askName: \"Ask the guest's name\", askNameHint: 'Shown to you in who opened it',\n lastSaved: 'Guests see the last saved version. A new version reaches the link when someone saves.', makeLink: 'Make the link', saveLink: 'Save the link',\n inTeam: 'Inside the team', peopleOf: 'People of {space}', teamHint: 'Everyone who sees Drive of this project reads it, people with edit rights change it.',\n noLinks: 'No guest links yet. A link opens this document without an account.', unnamed: 'Guests without a name', shareFailed: 'The link did not save. Try again.',\n sharedBy: 'Shared by {name}', openDoc: 'Open', passwordAsk: 'This document opens with a password. Type it to open the document on this device.',\n wrongPassword: 'The password does not fit. Try again.', endedTitle: 'This link has ended',\n endedText: 'The person who shared this document turned the link off or it reached its last day. Ask them for a new link.',\n missingTitle: 'This link opens nothing', missingText: 'Check the address or ask for a new link.',\n nameAsk: 'Type your name to read this document. The person who shared it sees who opened it.',\n nameHint: 'The person who shared this document sees your name and comments. The name stays on this device.', nameNeeded: 'Type your name to comment',\n guest: 'Guest', pdfCopy: 'PDF copy', tooMany: 'Too many tries. Try again in a few minutes.',\n openForms: { one: 'open', other: 'opens' } as Record<string, string>, commentForms: { one: 'comment', other: 'comments' } as Record<string, string>,\n methods: { typed: 'Typed', drawn: 'Drawn', image: 'Image' } satisfies Record<SignatureMethod, string>,\n kinds: { docx: 'DOCX', markdown: 'Markdown', pdf: 'PDF', sheet: 'Sheets', slides: 'Slides' } satisfies Record<DocumentKind, string>,\n create: 'New', newTitle: 'New document', startFrom: 'Start from', name: 'Name', savesTo: 'Saves to', make: 'Create', making: 'Creating', makeFailed: 'Could not create the document',\n untitled: 'Untitled', kindHints: { docx: 'Word, DOCX', markdown: 'MD, same editor', sheet: 'Excel, XLSX', slides: 'HTML slides' },\n newKinds: { docx: 'Document', markdown: 'Markdown', sheet: 'Spreadsheet', slides: 'Presentation' },\n templates: { blank: 'Blank', letter: 'Letter', contract: 'Contract', notes: 'Meeting notes', invoice: 'Invoice', report: 'Report' },\n menuFile: 'File', menuEdit: 'Edit', menuFormat: 'Format', menuTools: 'Tools', zoom: 'Zoom',\n font: 'Font', fontSize: 'Font size', defaultFont: 'Default', lineSpacing: 'Line and paragraph spacing', single: 'Single', double: 'Double', spaceAfter: 'Add space after paragraph', noSpaceAfter: 'Remove space after paragraph',\n superscript: 'Superscript', subscript: 'Subscript', painter: 'Paint format', painterHint: 'Select text to paint, double click keeps it on, Esc stops',\n pageSetup: 'Page setup', orientation: 'Orientation', portrait: 'Portrait', landscape: 'Landscape', marginsCm: 'Margins, cm', mTop: 'Top', mRight: 'Right', mBottom: 'Bottom', mLeft: 'Left',\n headerText: 'Header', footerText: 'Footer', pageNumbers: 'Page numbers in the footer',\n wrapInline: 'In line with text', wrapLeft: 'Text wraps on the right', wrapRight: 'Text wraps on the left',\n cellFill: 'Cell fill', tableBorders: 'Table borders',\n findReplace: 'Find and replace', replaceWith: 'Replace with', replaceOne: 'Replace', replaceAll: 'Replace all', matchCase: 'Match case', words: 'Words', print: 'Print',\n autosavedNote: 'Autosaved',\n uploadFile: 'Upload a file', uploading: 'Uploading', uploadFailed: 'Could not upload the file',\n};\n\nexport type Text = typeof en;\n\nconst pl: Text = {\n elsewhere: 'Inne', wikiCreate: 'Utwórz „{name}”', wikiNew: 'nowa notatka', wikiKeys: '↑↓ wybór · ↵ link · | alias', tree: 'Drzewo', cards: 'Karty',\n openNote: 'Otwórz notatkę', findNote: 'Wpisz nazwę notatki', createNote: 'Utwórz notatkę „{name}”', noNote: 'Brak pasujących notatek', keysOpen: '↑↓ ruch · ↵ otwórz · esc zamknij',\n commands: 'Polecenia', newNote: 'Nowa notatka', searchAll: 'Szukaj we wszystkich notatkach', showOutline: 'Pokaż spis', showLinks: 'Pokaż odnośniki', showVersions: 'Pokaż wersje', showComments: 'Pokaż komentarze', keysRun: '↑↓ ruch · ↵ uruchom · esc zamknij',\n links: 'Odnośniki', linked: 'Linki do tej notatki', unlinked: 'Wzmianki bez linku', noBacklinks: 'Nic tu jeszcze nie linkuje',\n documents: 'Dokumenty', hint: 'Pliki Twoich projektów: czytaj, edytuj i komentuj w jednym miejscu', loose: 'Bez folderu', search: 'Szukaj dokumentów', all: 'Wszystkie', empty: 'Nie ma tu jeszcze dokumentów', nothing: 'Nic nie pasuje do wyszukiwania',\n pick: 'Wybierz dokument z listy', closeList: 'Ukryj listę', openList: 'Pokaż listę',\n outline: 'Spis treści', versions: 'Wersje', details: 'Szczegóły', noOutline: 'Ten dokument nie ma nagłówków', findHeading: 'Znajdź nagłówek', read: 'przeczytano', showSections: 'Pokaż sekcje', hideSections: 'Ukryj sekcje', current: 'Bieżąca',\n size: 'Rozmiar', updated: 'Zmieniono', by: 'Zmienione przez', kind: 'Format', rights: 'Możesz', view: 'Przeglądać', comment: 'Komentować', edit: 'Edytować',\n failed: 'Nie udało się wczytać', retry: 'Spróbuj ponownie', loading: 'Wczytywanie', unsupported: 'Tego pliku nie da się jeszcze pokazać',\n sendChat: 'Wyślij na czat', openFile: 'Otwórz', openTab: 'Otwórz w nowej karcie', copyLink: 'Kopiuj link', linkCopied: 'Skopiowano link', trash: 'Przenieś do kosza', trashAsk: 'Przenieść {name} do kosza?', trashed: 'Przeniesiono do kosza', createdOn: 'Utworzono {when}', updatedOn: 'Zmieniono {when}', actionFailed: 'Nie udało się', fileActions: 'Działania na pliku',\n teamTemplates: 'Szablony zespołu', saveTemplate: 'Zapisz jako szablon', templateSaved: 'Zapisano w Szablonach', templateFailed: 'Nie udało się zapisać szablonu', assignTo: 'Przypisz do: {name}', assignedTo: 'Przypisane: {name}', assignedYou: 'Przypisane do Ciebie', printLayout: 'Układ wydruku', cut: 'Wytnij', paste: 'Wklej', spellCheck: 'Sprawdzanie pisowni', spellHint: 'Pisownia: kliknij prawym jeszcze raz',\n restore: 'Przywróć tę wersję', restoreFailed: 'Nie udało się przywrócić', showChanges: 'Co się zmieniło', hideChanges: 'Wróć do wersji', noChanges: 'Tekst taki sam jak teraz', changeCount: 'Od tej wersji, akapity: {added} dodane, {edited} zmienione, {removed} usunięte',\n allProjects: 'Wszystkie projekty', closePanel: 'Ukryj panel', openPanel: 'Pokaż panel', zoomIn: 'Powiększ', zoomOut: 'Pomniejsz', fit: 'Rzeczywisty rozmiar',\n pdfTools: 'Narzędzia PDF', pages: 'Strony', page: 'Strona', fitWidth: 'Dopasuj do szerokości', fitPage: 'Cała strona', find: 'Szukaj w dokumencie', previous: 'Poprzedni', next: 'Następny',\n close: 'Zamknij', searching: 'Wyszukiwanie', noHits: 'Brak wyników', selectText: 'Zaznacz tekst', highlight: 'Wyróżnij', underline: 'Podkreśl', strike: 'Przekreśl',\n note: 'Notatka', draw: 'Rysuj', eraser: 'Gumka', sign: 'Podpisz', colour: 'Kolor', lineWidth: 'Grubość linii', undo: 'Cofnij', redo: 'Ponów', save: 'Zapisz', saving: 'Zapisywanie',\n saved: 'Zapisano', align: 'Wyrównanie', moreTools: 'Więcej narzędzi', fewerTools: 'Mniej narzędzi', typeFilter: 'Typ', selectAll: 'Zaznacz wszystkie', clearPick: 'Wyczyść', saveFailed: 'Nie udało się zapisać', remove: 'Usuń', notePlaceholder: 'Napisz notatkę', signature: 'Podpis', placeHint: 'Kliknij lub dotknij miejsca, gdzie ma być podpis',\n cancel: 'Anuluj', signTitle: 'Dodaj podpis', typed: 'Wpisz', drawn: 'Narysuj', image: 'Obraz', yourName: 'Imię i nazwisko', drawHere: 'Podpisz myszą lub palcem',\n clear: 'Wyczyść', pickImage: 'Wybierz obraz PNG lub JPEG', useSign: 'Wstaw podpis', marksNote: 'Oznaczenia', formNote: 'Wypełniony formularz', signedNote: 'Podpisano',\n signatures: 'Podpisy', noSignatures: 'Nikt jeszcze nie podpisał tego pliku', version: 'Wersja', download: 'Pobierz', openInDocuments: 'Otwórz w Dokumentach',\n textTools: 'Narzędzia tekstowe', home: 'Narzędzia główne', insert: 'Wstawianie', layout: 'Układ', review: 'Recenzja', viewTab: 'Widok', paragraphStyle: 'Styl akapitu', normal: 'Normalny',\n heading: 'Nagłówek', quote: 'Cytat', code: 'Kod', bold: 'Pogrubienie', italic: 'Kursywa', textColour: 'Kolor tekstu', automatic: 'Automatyczny', noColour: 'Bez koloru',\n bullets: 'Lista punktowana', numbers: 'Lista numerowana', tasks: 'Lista zadań', alignLeft: 'Wyrównaj do lewej', alignCenter: 'Wyśrodkuj', alignRight: 'Wyrównaj do prawej', justify: 'Wyjustuj',\n indent: 'Zwiększ wcięcie', outdent: 'Zmniejsz wcięcie', clearFormat: 'Wyczyść formatowanie', table: 'Tabela', rowAbove: 'Wiersz powyżej', rowBelow: 'Wiersz poniżej',\n columnLeft: 'Kolumna po lewej', columnRight: 'Kolumna po prawej', deleteRow: 'Usuń wiersz', deleteColumn: 'Usuń kolumnę', deleteTable: 'Usuń tabelę',\n headerRow: 'Wiersz nagłówka', mergeCells: 'Scal lub podziel komórki', imageLink: 'Adres obrazu', chooseFile: 'Wybierz plik', put: 'Wstaw', link: 'Link', footnote: 'Przypis', footnoteText: 'Tekst przypisu', formula: 'Wzór', symbols: 'Znaki specjalne', symbolSearch: 'Szukaj, na przykład strzałka', update: 'Zmień', removeFootnote: 'Usuń przypis',\n linkAddress: 'Adres linku', apply: 'Zastosuj', unlink: 'Usuń link', pageBreak: 'Podział strony', rule: 'Linia pozioma', pageSize: 'Rozmiar strony', margins: 'Marginesy',\n marginsNormal: 'Normalne', marginsNarrow: 'Wąskie', marginsWide: 'Szerokie', addComment: 'Dodaj komentarz', comments: 'Komentarze', noComments: 'Nie ma jeszcze komentarzy',\n commentHint: 'Zaznacz tekst i dodaj komentarz', writeComment: 'Napisz komentarz', post: 'Dodaj', reply: 'Odpowiedz', resolve: 'Rozwiąż', reopen: 'Otwórz ponownie',\n resolved: 'Rozwiązany', showResolved: 'Pokaż rozwiązane', commentFailed: 'Nie udało się wysłać komentarza', exportAs: 'Eksport', exportFailed: 'Nie udało się wyeksportować',\n editedNote: 'Edycja tekstu', documentText: 'Tekst dokumentu', locked: 'Zachowane jak w pliku', references: 'Odwołania', toc: 'Spis treści', tocInsert: 'Wstaw spis treści', tocGo: 'Przejdź do spisu',\n tocRemove: 'Usuń spis', tocHint: 'Sam podąża za nagłówkami', tocEmpty: 'Dodaj nagłówki, a pojawią się tutaj',\n suggest: 'Sugeruj zmiany', suggesting: 'Sugerowanie', suggestions: 'Sugestie', acceptAll: 'Akceptuj wszystkie', rejectAll: 'Odrzuć wszystkie', accept: 'Akceptuj', reject: 'Odrzuć',\n added: 'Dodano', removed: 'Usunięto', someone: 'Ktoś', copyAs: 'Zrób kopię XLSX', downloadAs: 'Pobierz jako', makeCopy: 'Utwórz kopię', copyOf: 'Kopia', rename: 'Zmień nazwę', renameFailed: 'Nie udało się zmienić nazwy', copyFailed: 'Nie udało się zrobić kopii', editComment: 'Edytuj', delete: 'Usuń',\n deleteAsk: 'Usunąć ten komentarz?', deleteThread: 'Usunąć ten komentarz razem z odpowiedziami?', changeFailed: 'Nie udało się zmienić komentarza',\n unsavedTitle: 'Zapisać zmiany?', unsavedHint: 'Ten dokument ma niezapisane zmiany.', discard: 'Nie zapisuj', more: 'Więcej narzędzi',\n offline: 'Offline', offlineHint: 'Zmiany zostają tutaj i zsynchronizują się po powrocie połączenia', liveOff: 'Wspólna edycja jest niedostępna', people: 'Osoby w tym dokumencie', you: 'ty',\n share: 'Udostępnij', sharing: 'Udostępnianie', guestLinks: 'Linki dla gości', viewLink: 'Link do czytania', commentLink: 'Link do komentowania',\n madeBy: 'Utworzono przez {name}', endsOn: 'Działa do {date}', untilOff: 'Do wyłączenia', linkEnded: 'Wygasł', downloadOn: 'Pobieranie włączone', passwordOn: 'Hasło',\n copy: 'Kopiuj', copied: 'Skopiowano', changeLink: 'Zmień', turnOff: 'Wyłącz', newLink: 'Nowy link dla gości', guestsCan: 'Goście mogą', canRead: 'Czytać',\n canComment: 'Czytać i komentować', badgeRead: 'Tylko do odczytu', badgeComment: 'Czytanie i komentarze', linkWorks: 'Link działa', days7: '7 dni', days30: '30 dni',\n untilTurnOff: 'Dopóki go nie wyłączę', pickDay: 'Wybierz dzień', passwordHint: 'Goście wpisują je raz na swoim urządzeniu', passwordPlaceholder: 'Wpisz hasło',\n keepPassword: 'Zostaw puste, aby zachować hasło', downloadFile: 'Pobieranie pliku', downloadHint: 'Oryginalny plik i kopia PDF', askName: 'Pytaj gościa o imię',\n askNameHint: 'Widzisz je na liście osób, które otworzyły link', lastSaved: 'Goście widzą ostatnią zapisaną wersję. Nowa wersja trafia do linku, gdy ktoś zapisze.',\n makeLink: 'Utwórz link', saveLink: 'Zapisz link', inTeam: 'W zespole', peopleOf: 'Osoby z projektu {space}',\n teamHint: 'Każdy, kto widzi Dysk tego projektu, czyta go, a osoby z prawem edycji go zmieniają.',\n noLinks: 'Nie ma jeszcze linków dla gości. Link otwiera ten dokument bez konta.', unnamed: 'Goście bez imienia', shareFailed: 'Nie udało się zapisać linku. Spróbuj ponownie.',\n sharedBy: 'Udostępnione przez {name}', openDoc: 'Otwórz', passwordAsk: 'Ten dokument otwiera się hasłem. Wpisz je, aby otworzyć dokument na tym urządzeniu.',\n wrongPassword: 'Hasło nie pasuje. Spróbuj ponownie.', endedTitle: 'Ten link wygasł',\n endedText: 'Osoba, która udostępniła dokument, wyłączyła link albo minął jego ostatni dzień. Poproś ją o nowy link.',\n missingTitle: 'Ten link niczego nie otwiera', missingText: 'Sprawdź adres albo poproś o nowy link.',\n nameAsk: 'Wpisz swoje imię, aby przeczytać ten dokument. Osoba, która go udostępniła, widzi, kto go otworzył.',\n nameHint: 'Osoba, która udostępniła dokument, widzi Twoje imię i komentarze. Imię zostaje na tym urządzeniu.', nameNeeded: 'Wpisz imię, aby komentować',\n guest: 'Gość', pdfCopy: 'Kopia PDF', tooMany: 'Za dużo prób. Spróbuj za kilka minut.',\n openForms: { one: 'otwarcie', few: 'otwarcia', many: 'otwarć', other: 'otwarcia' }, commentForms: { one: 'komentarz', few: 'komentarze', many: 'komentarzy', other: 'komentarza' },\n methods: { typed: 'Wpisany', drawn: 'Narysowany', image: 'Obraz' },\n kinds: { docx: 'DOCX', markdown: 'Markdown', pdf: 'PDF', sheet: 'Arkusze', slides: 'Slajdy' },\n create: 'Nowy', newTitle: 'Nowy dokument', startFrom: 'Zacznij od', name: 'Nazwa', savesTo: 'Zapisze się w', make: 'Utwórz', making: 'Tworzenie', makeFailed: 'Nie udało się utworzyć dokumentu',\n untitled: 'Bez tytułu', kindHints: { docx: 'Word, DOCX', markdown: 'MD, ten sam edytor', sheet: 'Excel, XLSX', slides: 'Slajdy HTML' },\n newKinds: { docx: 'Dokument', markdown: 'Markdown', sheet: 'Arkusz', slides: 'Prezentacja' },\n templates: { blank: 'Pusty', letter: 'List', contract: 'Umowa', notes: 'Notatki ze spotkania', invoice: 'Faktura', report: 'Raport' },\n menuFile: 'Plik', menuEdit: 'Edycja', menuFormat: 'Format', menuTools: 'Narzędzia', zoom: 'Powiększenie',\n font: 'Czcionka', fontSize: 'Rozmiar czcionki', defaultFont: 'Domyślna', lineSpacing: 'Interlinia i odstępy', single: 'Pojedyncza', double: 'Podwójna', spaceAfter: 'Dodaj odstęp po akapicie', noSpaceAfter: 'Usuń odstęp po akapicie',\n superscript: 'Indeks górny', subscript: 'Indeks dolny', painter: 'Malarz formatów', painterHint: 'Zaznacz tekst, dwuklik zostawia włączone, Esc kończy',\n pageSetup: 'Ustawienia strony', orientation: 'Orientacja', portrait: 'Pionowa', landscape: 'Pozioma', marginsCm: 'Marginesy, cm', mTop: 'Górny', mRight: 'Prawy', mBottom: 'Dolny', mLeft: 'Lewy',\n headerText: 'Nagłówek', footerText: 'Stopka', pageNumbers: 'Numery stron w stopce',\n wrapInline: 'W linii z tekstem', wrapLeft: 'Tekst opływa z prawej', wrapRight: 'Tekst opływa z lewej',\n cellFill: 'Wypełnienie komórki', tableBorders: 'Obramowanie tabeli',\n findReplace: 'Znajdź i zamień', replaceWith: 'Zamień na', replaceOne: 'Zamień', replaceAll: 'Zamień wszystko', matchCase: 'Uwzględnij wielkość liter', words: 'Słowa', print: 'Drukuj',\n autosavedNote: 'Zapisano automatycznie',\n uploadFile: 'Wgraj plik', uploading: 'Wysyłanie', uploadFailed: 'Nie udało się wgrać pliku',\n};\n\nconst uk: Text = {\n elsewhere: 'Інше', wikiCreate: 'Створити «{name}»', wikiNew: 'нова нотатка', wikiKeys: '↑↓ вибір · ↵ посилання · | підпис', tree: 'Дерево', cards: 'Картки',\n openNote: 'Відкрити нотатку', findNote: 'Введіть назву нотатки', createNote: 'Створити нотатку «{name}»', noNote: 'Немає таких нотаток', keysOpen: '↑↓ рух · ↵ відкрити · esc закрити',\n commands: 'Команди', newNote: 'Нова нотатка', searchAll: 'Шукати в усіх нотатках', showOutline: 'Показати зміст', showLinks: 'Показати посилання', showVersions: 'Показати версії', showComments: 'Показати коментарі', keysRun: '↑↓ рух · ↵ виконати · esc закрити',\n links: 'Посилання', linked: 'Посилаються сюди', unlinked: 'Згадки без посилання', noBacklinks: 'Сюди ще ніщо не посилається',\n documents: 'Документи', hint: 'Файли ваших проєктів: читайте, редагуйте й коментуйте в одному місці', loose: 'Без теки', search: 'Пошук документів', all: 'Усі', empty: 'Тут ще немає документів', nothing: 'Нічого не знайдено',\n pick: 'Виберіть документ у списку', closeList: 'Сховати список', openList: 'Показати список',\n outline: 'Зміст', versions: 'Версії', details: 'Деталі', noOutline: 'У документі немає заголовків', findHeading: 'Знайти заголовок', read: 'прочитано', showSections: 'Показати розділи', hideSections: 'Сховати розділи', current: 'Поточна',\n size: 'Розмір', updated: 'Змінено', by: 'Хто змінив', kind: 'Формат', rights: 'Ви можете', view: 'Дивитися', comment: 'Коментувати', edit: 'Правити',\n failed: 'Не вдалося завантажити', retry: 'Спробувати ще', loading: 'Завантаження', unsupported: 'Цей файл поки не можна показати',\n sendChat: 'Надіслати в чат', openFile: 'Відкрити', openTab: 'Відкрити в новій вкладці', copyLink: 'Копіювати посилання', linkCopied: 'Посилання скопійовано', trash: 'У кошик', trashAsk: 'Перемістити {name} у кошик?', trashed: 'Переміщено в кошик', createdOn: 'Створено {when}', updatedOn: 'Змінено {when}', actionFailed: 'Не вдалося', fileActions: 'Дії з файлом',\n teamTemplates: 'Шаблони команди', saveTemplate: 'Зберегти як шаблон', templateSaved: 'Збережено в Templates', templateFailed: 'Не вдалося зберегти шаблон', assignTo: 'Доручити: {name}', assignedTo: 'Доручено: {name}', assignedYou: 'Доручено вам', printLayout: 'Розмітка сторінки', cut: 'Вирізати', paste: 'Вставити', spellCheck: 'Перевірка правопису', spellHint: 'Правопис: клацніть правою ще раз',\n restore: 'Відновити цю версію', restoreFailed: 'Не вдалося відновити', showChanges: 'Що змінилось', hideChanges: 'Назад до версії', noChanges: 'Текст такий самий, як зараз', changeCount: 'Відтоді абзаців: {added} додано, {edited} змінено, {removed} видалено',\n allProjects: 'Усі проєкти', closePanel: 'Сховати панель', openPanel: 'Показати панель', zoomIn: 'Збільшити', zoomOut: 'Зменшити', fit: 'Справжній розмір',\n pdfTools: 'Інструменти PDF', pages: 'Сторінки', page: 'Сторінка', fitWidth: 'За шириною', fitPage: 'Сторінка цілком', find: 'Пошук у документі', previous: 'Попередній', next: 'Наступний',\n close: 'Закрити', searching: 'Пошук', noHits: 'Нічого не знайдено', selectText: 'Виділити текст', highlight: 'Маркер', underline: 'Підкреслити', strike: 'Закреслити',\n note: 'Нотатка', draw: 'Малювати', eraser: 'Гумка', sign: 'Підписати', colour: 'Колір', lineWidth: 'Товщина лінії', undo: 'Відмінити', redo: 'Повторити', save: 'Зберегти', saving: 'Збереження',\n saved: 'Збережено', align: 'Вирівнювання', moreTools: 'Більше інструментів', fewerTools: 'Менше інструментів', typeFilter: 'Тип', selectAll: 'Вибрати всі', clearPick: 'Очистити', saveFailed: 'Не вдалося зберегти', remove: 'Видалити', notePlaceholder: 'Напишіть нотатку', signature: 'Підпис', placeHint: 'Клацніть або торкніться місця, де має бути підпис',\n cancel: 'Скасувати', signTitle: 'Додати підпис', typed: 'Ввести', drawn: 'Намалювати', image: 'Зображення', yourName: 'Ваше ім’я', drawHere: 'Підпишіться мишею або пальцем',\n clear: 'Очистити', pickImage: 'Виберіть зображення PNG або JPEG', useSign: 'Поставити підпис', marksNote: 'Позначки', formNote: 'Заповнена форма', signedNote: 'Підписано',\n signatures: 'Підписи', noSignatures: 'Цей файл ще ніхто не підписав', version: 'Версія', download: 'Завантажити', openInDocuments: 'Відкрити в Документах',\n textTools: 'Інструменти для тексту', home: 'Основне', insert: 'Вставлення', layout: 'Макет', review: 'Рецензування', viewTab: 'Вигляд', paragraphStyle: 'Стиль абзацу', normal: 'Звичайний',\n heading: 'Заголовок', quote: 'Цитата', code: 'Код', bold: 'Жирний', italic: 'Курсив', textColour: 'Колір тексту', automatic: 'Автоматично', noColour: 'Без кольору',\n bullets: 'Маркований список', numbers: 'Нумерований список', tasks: 'Список завдань', alignLeft: 'По лівому краю', alignCenter: 'По центру', alignRight: 'По правому краю', justify: 'По ширині',\n indent: 'Збільшити відступ', outdent: 'Зменшити відступ', clearFormat: 'Очистити форматування', table: 'Таблиця', rowAbove: 'Рядок вище', rowBelow: 'Рядок нижче',\n columnLeft: 'Стовпець ліворуч', columnRight: 'Стовпець праворуч', deleteRow: 'Видалити рядок', deleteColumn: 'Видалити стовпець', deleteTable: 'Видалити таблицю',\n headerRow: 'Рядок заголовка', mergeCells: 'Об’єднати або розділити клітинки', imageLink: 'Адреса зображення', chooseFile: 'Вибрати файл', put: 'Вставити', footnote: 'Виноска', footnoteText: 'Текст виноски', formula: 'Формула', symbols: 'Спецсимволи', symbolSearch: 'Пошук, наприклад стрілка', update: 'Змінити', removeFootnote: 'Видалити виноску', link: 'Посилання',\n linkAddress: 'Адреса посилання', apply: 'Застосувати', unlink: 'Прибрати посилання', pageBreak: 'Розрив сторінки', rule: 'Горизонтальна лінія', pageSize: 'Розмір сторінки', margins: 'Поля',\n marginsNormal: 'Звичайні', marginsNarrow: 'Вузькі', marginsWide: 'Широкі', addComment: 'Додати коментар', comments: 'Коментарі', noComments: 'Коментарів ще немає',\n commentHint: 'Виділіть текст і додайте коментар', writeComment: 'Напишіть коментар', post: 'Додати', reply: 'Відповісти', resolve: 'Вирішити', reopen: 'Відкрити знову',\n resolved: 'Вирішено', showResolved: 'Показати вирішені', commentFailed: 'Не вдалося надіслати коментар', exportAs: 'Експорт', exportFailed: 'Не вдалося експортувати',\n editedNote: 'Правка тексту', documentText: 'Текст документа', locked: 'Лишається як у файлі', references: 'Посилання', toc: 'Зміст', tocInsert: 'Вставити зміст', tocGo: 'Перейти до змісту',\n tocRemove: 'Прибрати зміст', tocHint: 'Сам іде за заголовками', tocEmpty: 'Додайте заголовки, і вони з’являться тут',\n suggest: 'Пропонувати зміни', suggesting: 'Режим пропозицій', suggestions: 'Пропозиції', acceptAll: 'Прийняти всі', rejectAll: 'Відхилити всі', accept: 'Прийняти', reject: 'Відхилити',\n added: 'Додано', removed: 'Видалено', someone: 'Хтось', copyAs: 'Зробити копію XLSX', downloadAs: 'Завантажити як', makeCopy: 'Зробити копію', copyOf: 'Копія', rename: 'Перейменувати', renameFailed: 'Не вдалося перейменувати', copyFailed: 'Не вдалося зробити копію', editComment: 'Змінити', delete: 'Видалити',\n deleteAsk: 'Видалити цей коментар?', deleteThread: 'Видалити цей коментар разом з відповідями?', changeFailed: 'Не вдалося змінити коментар',\n unsavedTitle: 'Зберегти зміни?', unsavedHint: 'У цьому документі є незбережені зміни.', discard: 'Не зберігати', more: 'Більше інструментів',\n offline: 'Офлайн', offlineHint: 'Зміни лишаються тут і синхронізуються, коли з’явиться зв’язок', liveOff: 'Спільне редагування недоступне', people: 'Люди в цьому документі', you: 'ви',\n share: 'Поділитися', sharing: 'Доступ', guestLinks: 'Посилання для гостей', viewLink: 'Посилання для читання', commentLink: 'Посилання для коментарів',\n madeBy: 'Автор: {name}', endsOn: 'Діє до {date}', untilOff: 'Доки не вимкнуть', linkEnded: 'Завершено', downloadOn: 'Завантаження ввімкнено', passwordOn: 'Пароль',\n copy: 'Копіювати', copied: 'Скопійовано', changeLink: 'Змінити', turnOff: 'Вимкнути', newLink: 'Нове посилання для гостей', guestsCan: 'Гості можуть', canRead: 'Читати',\n canComment: 'Читати й коментувати', badgeRead: 'Лише читання', badgeComment: 'Читання й коментарі', linkWorks: 'Посилання діє', days7: '7 днів', days30: '30 днів',\n untilTurnOff: 'Доки не вимкну', pickDay: 'Вибрати день', passwordHint: 'Гості вводять його один раз на своєму пристрої', passwordPlaceholder: 'Введіть пароль',\n keepPassword: 'Лишіть порожнім, щоб зберегти пароль', downloadFile: 'Завантаження файлу', downloadHint: 'Оригінальний файл і копія PDF', askName: 'Питати ім’я гостя',\n askNameHint: 'Ви бачите його серед тих, хто відкривав', lastSaved: 'Гості бачать останню збережену версію. Нова версія потрапляє за посиланням, коли хтось зберігає.',\n makeLink: 'Створити посилання', saveLink: 'Зберегти посилання', inTeam: 'У команді', peopleOf: 'Люди проєкту {space}',\n teamHint: 'Кожен, хто бачить Drive цього проєкту, читає його, а люди з правом правки змінюють.',\n noLinks: 'Посилань для гостей ще немає. Посилання відкриває цей документ без облікового запису.', unnamed: 'Гості без імені', shareFailed: 'Не вдалося зберегти посилання. Спробуйте ще.',\n sharedBy: 'Від {name}', openDoc: 'Відкрити', passwordAsk: 'Цей документ відкривається з паролем. Введіть його, щоб відкрити документ на цьому пристрої.',\n wrongPassword: 'Пароль не підходить. Спробуйте ще.', endedTitle: 'Це посилання більше не діє',\n endedText: 'Той, хто поділився документом, вимкнув посилання або минув його останній день. Попросіть нове посилання.',\n missingTitle: 'Це посилання нічого не відкриває', missingText: 'Перевірте адресу або попросіть нове посилання.',\n nameAsk: 'Введіть своє ім’я, щоб прочитати документ. Той, хто ним поділився, бачить, хто його відкривав.',\n nameHint: 'Той, хто поділився документом, бачить ваше ім’я та коментарі. Ім’я лишається на цьому пристрої.', nameNeeded: 'Введіть ім’я, щоб коментувати',\n guest: 'Гість', pdfCopy: 'Копія PDF', tooMany: 'Забагато спроб. Спробуйте за кілька хвилин.',\n openForms: { one: 'відкриття', few: 'відкриття', many: 'відкриттів', other: 'відкриття' }, commentForms: { one: 'коментар', few: 'коментарі', many: 'коментарів', other: 'коментаря' },\n methods: { typed: 'Введений', drawn: 'Намальований', image: 'Зображення' },\n kinds: { docx: 'DOCX', markdown: 'Markdown', pdf: 'PDF', sheet: 'Таблиці', slides: 'Слайди' },\n create: 'Новий', newTitle: 'Новий документ', startFrom: 'Почати з', name: 'Назва', savesTo: 'Збережеться в', make: 'Створити', making: 'Створення', makeFailed: 'Не вдалося створити документ',\n untitled: 'Без назви', kindHints: { docx: 'Word, DOCX', markdown: 'MD, той самий редактор', sheet: 'Excel, XLSX', slides: 'HTML-слайди' },\n newKinds: { docx: 'Документ', markdown: 'Markdown', sheet: 'Таблиця', slides: 'Презентація' },\n templates: { blank: 'Порожній', letter: 'Лист', contract: 'Договір', notes: 'Нотатки зустрічі', invoice: 'Рахунок', report: 'Звіт' },\n menuFile: 'Файл', menuEdit: 'Правка', menuFormat: 'Формат', menuTools: 'Інструменти', zoom: 'Масштаб',\n font: 'Шрифт', fontSize: 'Розмір шрифту', defaultFont: 'Типовий', lineSpacing: 'Міжрядковий інтервал і відступи', single: 'Одинарний', double: 'Подвійний', spaceAfter: 'Додати відступ після абзацу', noSpaceAfter: 'Прибрати відступ після абзацу',\n superscript: 'Верхній індекс', subscript: 'Нижній індекс', painter: 'Копіювати формат', painterHint: 'Виділіть текст, подвійний клік лишає увімкненим, Esc вимикає',\n pageSetup: 'Параметри сторінки', orientation: 'Орієнтація', portrait: 'Книжкова', landscape: 'Альбомна', marginsCm: 'Поля, см', mTop: 'Верхнє', mRight: 'Праве', mBottom: 'Нижнє', mLeft: 'Ліве',\n headerText: 'Верхній колонтитул', footerText: 'Нижній колонтитул', pageNumbers: 'Номери сторінок унизу',\n wrapInline: 'У рядку з текстом', wrapLeft: 'Текст обтікає праворуч', wrapRight: 'Текст обтікає ліворуч',\n cellFill: 'Заливка клітинки', tableBorders: 'Межі таблиці',\n findReplace: 'Знайти й замінити', replaceWith: 'Замінити на', replaceOne: 'Замінити', replaceAll: 'Замінити всі', matchCase: 'З урахуванням регістру', words: 'Слова', print: 'Друк',\n autosavedNote: 'Збережено автоматично',\n uploadFile: 'Завантажити файл', uploading: 'Завантаження', uploadFailed: 'Не вдалося завантажити файл',\n};\n\nexport const texts: Record<Language, Text> = { en, pl, uk };\n"],"mappings":"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","names":["notes","Extension","Plugin","PluginKey","Decoration","DecorationSet","PluginKey","Extension","Plugin","DecorationSet","Decoration","seen","pos","notes","paint","tr","c","skip"]}