tiptapify 0.0.5 → 0.0.7
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/README.md +7 -1
- package/dist/tiptapify.css +1 -1
- package/dist/{tiptapify.es.js → tiptapify.mjs} +52867 -51790
- package/dist/tiptapify.umd.js +41 -43
- package/package.json +8 -8
- package/src/components/Footer.vue +5 -6
- package/src/components/MenuBubble.vue +61 -47
- package/src/components/MenuFloating.vue +38 -34
- package/src/components/Tiptapify.vue +139 -23
- package/src/components/Toolbar/Group.vue +43 -0
- package/src/components/Toolbar/GroupDropdown.vue +85 -0
- package/src/components/Toolbar/Index.vue +51 -79
- package/src/components/Toolbar/Toggle.vue +33 -0
- package/src/components/Toolbar/items/actions.ts +32 -0
- package/src/components/Toolbar/items/alignment.ts +60 -0
- package/src/components/Toolbar/items/format.ts +73 -0
- package/src/components/Toolbar/items/formatExtra.ts +73 -0
- package/src/components/Toolbar/items/list.ts +70 -0
- package/src/components/Toolbar/items/media.ts +202 -0
- package/src/components/Toolbar/items/misc.ts +59 -0
- package/src/components/Toolbar/items/style.ts +146 -0
- package/src/components/Toolbar/items.ts +73 -545
- package/src/components/editorExtensions.ts +6 -4
- package/src/components/index.ts +13 -0
- package/src/{components/extensions → extensions}/components/LinkDialog.vue +11 -8
- package/src/extensions/components/PreviewDialog.vue +45 -0
- package/src/{components/extensions/components/ShowSource.vue → extensions/components/ShowSourceDialog.vue} +11 -7
- package/src/extensions/components/TableBuilder.vue +138 -0
- package/src/extensions/preview.ts +53 -0
- package/src/{components/extensions → extensions}/view-source.ts +1 -3
- package/src/i18n/locales/de.json +64 -45
- package/src/i18n/locales/en.json +21 -2
- package/src/i18n/locales/es.json +27 -8
- package/src/i18n/locales/fr.json +26 -7
- package/src/i18n/locales/it.json +36 -17
- package/src/i18n/locales/pl.json +28 -9
- package/src/i18n/locales/ru.json +21 -2
- package/src/i18n/locales/ua.json +21 -2
- package/src/utils/helpers.ts +17 -0
- package/src/composable/useEditor.ts +0 -35
- /package/src/{components/extensions → extensions}/components/slashCommands/CommandsList.vue +0 -0
- /package/src/{components/extensions → extensions}/components/slashCommands/suggestion.ts +0 -0
- /package/src/{components/extensions → extensions}/slash-commands.ts +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Editor, useEditor } from "@tiptap/vue-3";
|
|
2
|
+
import { editorExtensions } from "@tiptapify/components/editorExtensions";
|
|
3
|
+
import { ShallowRef } from "vue";
|
|
4
|
+
|
|
5
|
+
export function getTiptapEditor (content: any, placeholder: string, slashCommands: boolean = true): ShallowRef<Editor | undefined> {
|
|
6
|
+
const extensions = editorExtensions(placeholder, slashCommands)
|
|
7
|
+
const editor: ShallowRef<Editor | undefined> = useEditor({
|
|
8
|
+
content,
|
|
9
|
+
extensions,
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
return editor
|
|
13
|
+
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
|
-
import {
|
|
4
|
+
import { Editor } from "@tiptap/vue-3";
|
|
5
5
|
|
|
6
6
|
import { useI18n } from 'vue-i18n'
|
|
7
|
-
import { computed, ref, watch } from 'vue'
|
|
7
|
+
import { computed, inject, Ref, ref, watch } from 'vue'
|
|
8
|
+
|
|
9
|
+
import helpers from '@tiptapify/utils/helpers'
|
|
8
10
|
|
|
9
11
|
defineExpose({ open })
|
|
10
12
|
|
|
13
|
+
const { ucFirst } = helpers
|
|
14
|
+
|
|
11
15
|
interface Props {
|
|
12
16
|
value?: string
|
|
13
17
|
target?: '_self' | '_blank'
|
|
@@ -20,8 +24,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
20
24
|
destroy: undefined
|
|
21
25
|
})
|
|
22
26
|
|
|
23
|
-
const editor =
|
|
24
|
-
const editorInstance = editor.getInstance()
|
|
27
|
+
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
25
28
|
|
|
26
29
|
const { t } = useI18n()
|
|
27
30
|
|
|
@@ -45,7 +48,7 @@ function apply() {
|
|
|
45
48
|
const { href, target } = attrs.value
|
|
46
49
|
|
|
47
50
|
if (href) {
|
|
48
|
-
|
|
51
|
+
editor.value.chain().focus().extendMarkRange('link').setLink({ href, target }).run()
|
|
49
52
|
}
|
|
50
53
|
close()
|
|
51
54
|
}
|
|
@@ -75,7 +78,7 @@ watch(dialog, val => {
|
|
|
75
78
|
<VDialog v-model="dialog" max-width="400" absolute @click:outside="close">
|
|
76
79
|
<VCard>
|
|
77
80
|
<VToolbar class="px-6" density="compact">
|
|
78
|
-
<span class="headline">{{ t('dialog.link.title') }}</span>
|
|
81
|
+
<span class="headline">{{ ucFirst(t('dialog.link.title')) }}</span>
|
|
79
82
|
|
|
80
83
|
<VSpacer />
|
|
81
84
|
|
|
@@ -85,12 +88,12 @@ watch(dialog, val => {
|
|
|
85
88
|
</VToolbar>
|
|
86
89
|
|
|
87
90
|
<VCardText>
|
|
88
|
-
<VTextField v-model="attrs.href" :label="t('dialog.link.placeholder')" autofocus />
|
|
91
|
+
<VTextField v-model="attrs.href" :label="ucFirst(t('dialog.link.placeholder'))" autofocus />
|
|
89
92
|
</VCardText>
|
|
90
93
|
|
|
91
94
|
<VCardActions>
|
|
92
95
|
<VBtn :disabled="isDisabled" @click="apply">
|
|
93
|
-
{{ t('dialog.apply') }}
|
|
96
|
+
{{ ucFirst(t('dialog.apply')) }}
|
|
94
97
|
</VBtn>
|
|
95
98
|
</VCardActions>
|
|
96
99
|
</VCard>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref, onMounted, onUnmounted } from 'vue'
|
|
3
|
+
import { useI18n } from "vue-i18n";
|
|
4
|
+
import * as mdi from '@mdi/js'
|
|
5
|
+
|
|
6
|
+
const { t } = useI18n();
|
|
7
|
+
|
|
8
|
+
const content = ref()
|
|
9
|
+
|
|
10
|
+
const dialog = ref(false)
|
|
11
|
+
|
|
12
|
+
const showDialog = (event: CustomEvent) => {
|
|
13
|
+
console.log('preview event', event)
|
|
14
|
+
content.value = event.detail.html
|
|
15
|
+
dialog.value = true;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
onMounted(() => {
|
|
19
|
+
window.addEventListener('tiptapify-show-preview', showDialog as EventListener)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
onUnmounted(() => {
|
|
23
|
+
window.removeEventListener('tiptapify-show-preview', showDialog as EventListener)
|
|
24
|
+
})
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<template>
|
|
28
|
+
<VDialog v-model="dialog" fullscreen>
|
|
29
|
+
<VCard>
|
|
30
|
+
<VToolbar>
|
|
31
|
+
<VBtn :icon="mdi.mdiClose" @click="dialog = false" />
|
|
32
|
+
|
|
33
|
+
<VToolbarTitle>Preview</VToolbarTitle>
|
|
34
|
+
</VToolbar>
|
|
35
|
+
|
|
36
|
+
<VCardItem>
|
|
37
|
+
<div class="tiptap" v-html="content"></div>
|
|
38
|
+
</VCardItem>
|
|
39
|
+
</VCard>
|
|
40
|
+
</VDialog>
|
|
41
|
+
</template>
|
|
42
|
+
|
|
43
|
+
<style lang="scss">
|
|
44
|
+
|
|
45
|
+
</style>
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import { ref, onMounted, onUnmounted, watch } from 'vue'
|
|
2
|
+
import { Editor } from "@tiptap/vue-3";
|
|
3
|
+
import { ref, onMounted, onUnmounted, watch, inject, Ref } from 'vue'
|
|
4
4
|
import { useI18n } from "vue-i18n";
|
|
5
5
|
|
|
6
|
+
import helpers from "@tiptapify/utils/helpers";
|
|
7
|
+
|
|
6
8
|
const props = defineProps({
|
|
7
9
|
indent: { type: Number, default: 2 },
|
|
8
10
|
})
|
|
9
11
|
|
|
12
|
+
const { ucFirst } = helpers;
|
|
13
|
+
|
|
10
14
|
const { t } = useI18n();
|
|
11
15
|
|
|
12
|
-
const editor =
|
|
16
|
+
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
13
17
|
|
|
14
18
|
const dialog = ref(false)
|
|
15
19
|
const formatted = ref(false)
|
|
@@ -76,14 +80,14 @@ watch(() => formatted.value, () => {
|
|
|
76
80
|
<template>
|
|
77
81
|
<VDialog v-model="dialog" max-width="1500">
|
|
78
82
|
<VCard>
|
|
79
|
-
<VCardTitle>{{ t('dialog.source.title') }}</VCardTitle>
|
|
83
|
+
<VCardTitle>{{ ucFirst(t('dialog.source.title')) }}</VCardTitle>
|
|
80
84
|
|
|
81
85
|
<VCardText>
|
|
82
86
|
<VContainer fluid class="pt-0 pl-0 pr-0">
|
|
83
87
|
<VRow>
|
|
84
88
|
<VCol>
|
|
85
89
|
<VBtn v-model="formatted" :color="`${formatted ? 'primary' : ''}`" @click="formatted = !formatted">
|
|
86
|
-
{{ t('dialog.source.prettify') }}
|
|
90
|
+
{{ ucFirst(t('dialog.source.prettify')) }}
|
|
87
91
|
</VBtn>
|
|
88
92
|
</VCol>
|
|
89
93
|
</VRow>
|
|
@@ -101,10 +105,10 @@ watch(() => formatted.value, () => {
|
|
|
101
105
|
<VCardActions>
|
|
102
106
|
<VSpacer></VSpacer>
|
|
103
107
|
<VBtn color="primary" @click="dialog = false">
|
|
104
|
-
{{ t('dialog.close') }}
|
|
108
|
+
{{ ucFirst(t('dialog.close')) }}
|
|
105
109
|
</VBtn>
|
|
106
110
|
<VBtn color="primary" @click="saveChanges">
|
|
107
|
-
{{ t('dialog.apply') }}
|
|
111
|
+
{{ ucFirst(t('dialog.apply')) }}
|
|
108
112
|
</VBtn>
|
|
109
113
|
</VCardActions>
|
|
110
114
|
</VCard>
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
|
|
3
|
+
import { Editor } from "@tiptap/vue-3";
|
|
4
|
+
import helpers from '@tiptapify/utils/helpers'
|
|
5
|
+
import { useI18n } from 'vue-i18n'
|
|
6
|
+
|
|
7
|
+
import { inject, Ref, ref } from 'vue'
|
|
8
|
+
|
|
9
|
+
const { t } = useI18n()
|
|
10
|
+
|
|
11
|
+
const { ucFirst } = helpers
|
|
12
|
+
|
|
13
|
+
defineExpose({ open })
|
|
14
|
+
|
|
15
|
+
defineProps({
|
|
16
|
+
show: { type: Boolean, default: false },
|
|
17
|
+
maxCols: { type: Number, default: 10 },
|
|
18
|
+
maxRows: { type: Number, default: 10 },
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const emit = defineEmits(['close'])
|
|
22
|
+
|
|
23
|
+
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
24
|
+
|
|
25
|
+
const withHeaderRow = ref(false)
|
|
26
|
+
|
|
27
|
+
const colHover = ref(0)
|
|
28
|
+
const rowHover = ref(0)
|
|
29
|
+
|
|
30
|
+
function hoverCell(elm: Element, row: number, col: number) {
|
|
31
|
+
rowHover.value = row
|
|
32
|
+
colHover.value = col
|
|
33
|
+
elm.classList.add('tiptapify-insert-table-col-hover')
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function leaveCell(elm: Element) {
|
|
37
|
+
rowHover.value = 0
|
|
38
|
+
colHover.value = 0
|
|
39
|
+
elm.classList.remove('tiptapify-insert-table-col-hover')
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function insertTable(rows: number, cols: number) {
|
|
43
|
+
editor.value.chain().focus().insertTable({ rows, cols, withHeaderRow: withHeaderRow.value }).run()
|
|
44
|
+
|
|
45
|
+
emit('close')
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function printSelection() {
|
|
49
|
+
return rowHover.value && colHover.value ? `${rowHover.value} x ${colHover.value}` : ''
|
|
50
|
+
}
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<VSheet class="pa-2">
|
|
55
|
+
<VCheckbox
|
|
56
|
+
v-model="withHeaderRow"
|
|
57
|
+
density="compact"
|
|
58
|
+
color="primary"
|
|
59
|
+
:label="ucFirst(t('format.tables.insertWithHeaderRow'))" hide-details
|
|
60
|
+
/>
|
|
61
|
+
|
|
62
|
+
<div v-for="rowNum in maxRows" :key="`row-${rowNum}`" class="tiptapify-insert-table-row">
|
|
63
|
+
<div
|
|
64
|
+
v-for="colNum in maxCols"
|
|
65
|
+
class="tiptapify-insert-table-col"
|
|
66
|
+
:class="{'tiptapify-insert-table-col-hovered': rowNum <= rowHover && colNum <= colHover}"
|
|
67
|
+
@click="insertTable(rowNum, colNum)"
|
|
68
|
+
@mouseover="hoverCell($el.querySelector('.tiptapify-insert-table-col'), rowNum, colNum)"
|
|
69
|
+
@mouseout="leaveCell($el.querySelector('.tiptapify-insert-table-col'))"
|
|
70
|
+
>
|
|
71
|
+
<div class="tiptapify-insert-table-col-button"></div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div class="tiptapify-table-builder-info">
|
|
76
|
+
<span>
|
|
77
|
+
{{ ucFirst(t('format.tables.rows')) }}: {{ rowHover }}
|
|
78
|
+
{{ ucFirst(t('format.tables.cols')) }}: {{ colHover }}
|
|
79
|
+
</span>
|
|
80
|
+
<span>
|
|
81
|
+
{{ printSelection() }}
|
|
82
|
+
</span>
|
|
83
|
+
</div>
|
|
84
|
+
</VSheet>
|
|
85
|
+
</template>
|
|
86
|
+
|
|
87
|
+
<style lang="scss">
|
|
88
|
+
:root {
|
|
89
|
+
--tiptapify-table-builder-col-hover: #5454ff88;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
$primaryColor: var(--v-theme-primary-color, var(--tiptapify-table-builder-col-hover));
|
|
93
|
+
$mutedColor: var(--v-theme-muted-color, #888888);
|
|
94
|
+
|
|
95
|
+
.tiptapify-insert-table-row {
|
|
96
|
+
display: flex;
|
|
97
|
+
justify-content: center;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.tiptapify-insert-table-col {
|
|
101
|
+
width: 30px;
|
|
102
|
+
height: 30px;
|
|
103
|
+
background: #fff;
|
|
104
|
+
padding: 2px 0;
|
|
105
|
+
display: flex;
|
|
106
|
+
align-items: center;
|
|
107
|
+
justify-content: center;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.tiptapify-insert-table-col-button {
|
|
111
|
+
margin: 2px;
|
|
112
|
+
width: 100%;
|
|
113
|
+
height: 100%;
|
|
114
|
+
border: 1px solid #888;
|
|
115
|
+
background: #fff;
|
|
116
|
+
border-radius: 4px;
|
|
117
|
+
filter: drop-shadow(2px 2px 4px #88888888);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.tiptapify-insert-table-col-hovered {
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.tiptapify-insert-table-col-hovered > .tiptapify-insert-table-col-button, .tiptapify-insert-table-col-button:hover {
|
|
125
|
+
background: $primaryColor;
|
|
126
|
+
border: 1px solid $primaryColor;
|
|
127
|
+
filter: drop-shadow(2px 2px 4px $primaryColor);
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.tiptapify-table-builder-info {
|
|
132
|
+
display: flex;
|
|
133
|
+
justify-content: space-between;
|
|
134
|
+
margin-top: 10px;
|
|
135
|
+
font-size: 12px;
|
|
136
|
+
color: $mutedColor;
|
|
137
|
+
}
|
|
138
|
+
</style>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Extension } from '@tiptap/core'
|
|
2
|
+
import { Plugin, PluginKey } from '@tiptap/pm/state'
|
|
3
|
+
|
|
4
|
+
const name: string = 'preview'
|
|
5
|
+
|
|
6
|
+
export interface ViewSourceOptions {
|
|
7
|
+
HTMLAttributes: Record<string, any>
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare module '@tiptap/core' {
|
|
11
|
+
interface Commands<ReturnType> {
|
|
12
|
+
preview: {
|
|
13
|
+
/**
|
|
14
|
+
* Показать исходный HTML-код
|
|
15
|
+
*/
|
|
16
|
+
showPreview: () => ReturnType
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const Preview = Extension.create<ViewSourceOptions>({
|
|
22
|
+
name,
|
|
23
|
+
|
|
24
|
+
addOptions() {
|
|
25
|
+
return {
|
|
26
|
+
HTMLAttributes: {},
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
addCommands() {
|
|
31
|
+
return {
|
|
32
|
+
showPreview: () => ({ editor }) => {
|
|
33
|
+
const event = new CustomEvent('tiptapify-show-preview', {
|
|
34
|
+
detail: {
|
|
35
|
+
html: editor.getHTML()
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
window.dispatchEvent(event)
|
|
40
|
+
|
|
41
|
+
return true
|
|
42
|
+
},
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
addProseMirrorPlugins() {
|
|
47
|
+
return [
|
|
48
|
+
new Plugin({
|
|
49
|
+
key: new PluginKey(name),
|
|
50
|
+
}),
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
})
|
|
@@ -30,9 +30,7 @@ export const ViewSource = Extension.create<ViewSourceOptions>({
|
|
|
30
30
|
showSource: () => ({ editor }) => {
|
|
31
31
|
const event = new CustomEvent('tiptapify-show-source', {
|
|
32
32
|
detail: {
|
|
33
|
-
|
|
34
|
-
html: editor.getHTML({ blockSeparator: '\n\n' })
|
|
35
|
-
// html: editor.getText({ blockSeparator: '\n\n' })
|
|
33
|
+
html: editor.getHTML()
|
|
36
34
|
}
|
|
37
35
|
})
|
|
38
36
|
|
package/src/i18n/locales/de.json
CHANGED
|
@@ -1,67 +1,86 @@
|
|
|
1
1
|
{
|
|
2
2
|
"style": {
|
|
3
|
-
"paragraph": "
|
|
4
|
-
"heading": "
|
|
3
|
+
"paragraph": "absatz",
|
|
4
|
+
"heading": "überschrift",
|
|
5
5
|
"headings": {
|
|
6
|
-
"h1": "
|
|
7
|
-
"h2": "
|
|
8
|
-
"h3": "
|
|
9
|
-
"h4": "
|
|
10
|
-
"h5": "
|
|
11
|
-
"h6": "
|
|
6
|
+
"h1": "überschrift ebene 1",
|
|
7
|
+
"h2": "überschrift ebene 2",
|
|
8
|
+
"h3": "überschrift ebene 3",
|
|
9
|
+
"h4": "überschrift ebene 4",
|
|
10
|
+
"h5": "überschrift ebene 5",
|
|
11
|
+
"h6": "überschrift ebene 6"
|
|
12
12
|
},
|
|
13
|
-
"fontFamily": "
|
|
14
|
-
"fontSize": "
|
|
15
|
-
"lineHeight": "
|
|
13
|
+
"fontFamily": "schriftart",
|
|
14
|
+
"fontSize": "schriftgröße",
|
|
15
|
+
"lineHeight": "zeilenhöhe"
|
|
16
16
|
},
|
|
17
17
|
"format": {
|
|
18
|
-
"bold": "
|
|
19
|
-
"italic": "
|
|
20
|
-
"strike": "
|
|
21
|
-
"underline": "
|
|
22
|
-
"sup": "
|
|
23
|
-
"sub": "
|
|
24
|
-
"break": "
|
|
25
|
-
"highlight": "
|
|
26
|
-
"line": "
|
|
27
|
-
"blockquote": "
|
|
28
|
-
"code": "
|
|
29
|
-
"codeblock": "
|
|
30
|
-
"link": "
|
|
31
|
-
"formatClear": "
|
|
18
|
+
"bold": "fett",
|
|
19
|
+
"italic": "kursiv",
|
|
20
|
+
"strike": "durchgestrichen",
|
|
21
|
+
"underline": "unterstrichen",
|
|
22
|
+
"sup": "hochgestellt",
|
|
23
|
+
"sub": "tiefgestellt",
|
|
24
|
+
"break": "zeilenumbruch",
|
|
25
|
+
"highlight": "hervorheben",
|
|
26
|
+
"line": "horizontale linie",
|
|
27
|
+
"blockquote": "zitat",
|
|
28
|
+
"code": "code",
|
|
29
|
+
"codeblock": "codeblock",
|
|
30
|
+
"link": "externer link",
|
|
31
|
+
"formatClear": "formatierung löschen",
|
|
32
|
+
"tables": {
|
|
33
|
+
"table": "tabelle",
|
|
34
|
+
"insertTable": "tabelle einfügen",
|
|
35
|
+
"deleteTable": "tabelle löschen",
|
|
36
|
+
"insertWithHeaderRow": "tabelle mit kopfzeile einfügen",
|
|
37
|
+
"rows": "zeilen",
|
|
38
|
+
"row": "zeile",
|
|
39
|
+
"insertRowBefore": "zeile oberhalb einfügen",
|
|
40
|
+
"insertRowAfter": "zeile unterhalb einfügen",
|
|
41
|
+
"deleteRow": "zeile löschen",
|
|
42
|
+
"cols": "spalten",
|
|
43
|
+
"col": "spalte",
|
|
44
|
+
"insertColBefore": "spalte links einfügen",
|
|
45
|
+
"insertColAfter": "spalte rechts einfügen",
|
|
46
|
+
"deleteCol": "spalte löschen",
|
|
47
|
+
"mergeCells": "zellen verbinden",
|
|
48
|
+
"splitCell": "zelle teilen"
|
|
49
|
+
}
|
|
32
50
|
},
|
|
33
51
|
"action": {
|
|
34
|
-
"undo": "
|
|
35
|
-
"redo": "
|
|
52
|
+
"undo": "rückgängig",
|
|
53
|
+
"redo": "wiederherstellen"
|
|
36
54
|
},
|
|
37
|
-
"alignment": "
|
|
55
|
+
"alignment": "ausrichtung",
|
|
38
56
|
"alignments": {
|
|
39
|
-
"left": "
|
|
40
|
-
"center": "
|
|
41
|
-
"right": "
|
|
42
|
-
"justify": "
|
|
57
|
+
"left": "linksbündig",
|
|
58
|
+
"center": "zentriert",
|
|
59
|
+
"right": "rechtsbündig",
|
|
60
|
+
"justify": "blocksatz"
|
|
43
61
|
},
|
|
44
|
-
"list": "
|
|
62
|
+
"list": "liste",
|
|
45
63
|
"lists": {
|
|
46
|
-
"bullet": "
|
|
47
|
-
"numbered": "
|
|
48
|
-
"task": "
|
|
49
|
-
"indent": "
|
|
50
|
-
"outdent": "
|
|
64
|
+
"bullet": "aufzählungsliste",
|
|
65
|
+
"numbered": "nummerierte liste",
|
|
66
|
+
"task": "aufgabenliste",
|
|
67
|
+
"indent": "einzug vergrößern",
|
|
68
|
+
"outdent": "einzug verkleinern"
|
|
51
69
|
},
|
|
52
70
|
"dialog": {
|
|
53
|
-
"close": "
|
|
54
|
-
"apply": "
|
|
71
|
+
"close": "schließen",
|
|
72
|
+
"apply": "anwenden",
|
|
55
73
|
"link": {
|
|
56
|
-
"title": "
|
|
57
|
-
"placeholder": "
|
|
74
|
+
"title": "link hinzufügen/bearbeiten",
|
|
75
|
+
"placeholder": "linkadresse"
|
|
58
76
|
},
|
|
59
77
|
"source": {
|
|
60
|
-
"title": "
|
|
61
|
-
"prettify": "
|
|
78
|
+
"title": "quellcode anzeigen",
|
|
79
|
+
"prettify": "formatieren"
|
|
62
80
|
}
|
|
63
81
|
},
|
|
64
82
|
"misc": {
|
|
65
|
-
"source": "
|
|
83
|
+
"source": "quellcode anzeigen",
|
|
84
|
+
"preview": "vorschau"
|
|
66
85
|
}
|
|
67
86
|
}
|
package/src/i18n/locales/en.json
CHANGED
|
@@ -28,7 +28,25 @@
|
|
|
28
28
|
"code": "code",
|
|
29
29
|
"codeblock": "code block",
|
|
30
30
|
"link": "external link",
|
|
31
|
-
"formatClear": "format clear"
|
|
31
|
+
"formatClear": "format clear",
|
|
32
|
+
"tables": {
|
|
33
|
+
"table": "table",
|
|
34
|
+
"insertTable": "insert table",
|
|
35
|
+
"deleteTable": "delete table",
|
|
36
|
+
"insertWithHeaderRow": "insert table with header row",
|
|
37
|
+
"rows": "rows",
|
|
38
|
+
"row": "row",
|
|
39
|
+
"insertRowBefore": "insert row before",
|
|
40
|
+
"insertRowAfter": "insert row after",
|
|
41
|
+
"deleteRow": "delete row",
|
|
42
|
+
"cols": "columns",
|
|
43
|
+
"col": "column",
|
|
44
|
+
"insertColBefore": "insert column before",
|
|
45
|
+
"insertColAfter": "insert column after",
|
|
46
|
+
"deleteCol": "delete column",
|
|
47
|
+
"mergeCells": "merge cells",
|
|
48
|
+
"splitCell": "split cell"
|
|
49
|
+
}
|
|
32
50
|
},
|
|
33
51
|
"action": {
|
|
34
52
|
"undo": "undo",
|
|
@@ -62,6 +80,7 @@
|
|
|
62
80
|
}
|
|
63
81
|
},
|
|
64
82
|
"misc": {
|
|
65
|
-
"source": "view source code"
|
|
83
|
+
"source": "view source code",
|
|
84
|
+
"preview": "preview"
|
|
66
85
|
}
|
|
67
86
|
}
|
package/src/i18n/locales/es.json
CHANGED
|
@@ -22,13 +22,31 @@
|
|
|
22
22
|
"sup": "superíndice",
|
|
23
23
|
"sub": "subíndice",
|
|
24
24
|
"break": "salto de línea",
|
|
25
|
-
"highlight": "
|
|
25
|
+
"highlight": "resaltar",
|
|
26
26
|
"line": "línea horizontal",
|
|
27
27
|
"blockquote": "cita",
|
|
28
28
|
"code": "código",
|
|
29
29
|
"codeblock": "bloque de código",
|
|
30
30
|
"link": "enlace externo",
|
|
31
|
-
"formatClear": "
|
|
31
|
+
"formatClear": "borrar formato",
|
|
32
|
+
"tables": {
|
|
33
|
+
"table": "tabla",
|
|
34
|
+
"insertTable": "insertar tabla",
|
|
35
|
+
"deleteTable": "eliminar tabla",
|
|
36
|
+
"insertWithHeaderRow": "insertar tabla con fila de encabezado",
|
|
37
|
+
"rows": "filas",
|
|
38
|
+
"row": "fila",
|
|
39
|
+
"insertRowBefore": "insertar fila antes",
|
|
40
|
+
"insertRowAfter": "insertar fila después",
|
|
41
|
+
"deleteRow": "eliminar fila",
|
|
42
|
+
"cols": "columnas",
|
|
43
|
+
"col": "columna",
|
|
44
|
+
"insertColBefore": "insertar columna antes",
|
|
45
|
+
"insertColAfter": "insertar columna después",
|
|
46
|
+
"deleteCol": "eliminar columna",
|
|
47
|
+
"mergeCells": "combinar celdas",
|
|
48
|
+
"splitCell": "dividir celda"
|
|
49
|
+
}
|
|
32
50
|
},
|
|
33
51
|
"action": {
|
|
34
52
|
"undo": "deshacer",
|
|
@@ -43,25 +61,26 @@
|
|
|
43
61
|
},
|
|
44
62
|
"list": "lista",
|
|
45
63
|
"lists": {
|
|
46
|
-
"bullet": "lista
|
|
64
|
+
"bullet": "lista sin orden",
|
|
47
65
|
"numbered": "lista numerada",
|
|
48
66
|
"task": "lista de tareas",
|
|
49
|
-
"indent": "
|
|
50
|
-
"outdent": "
|
|
67
|
+
"indent": "sangría de elemento",
|
|
68
|
+
"outdent": "reducir sangría"
|
|
51
69
|
},
|
|
52
70
|
"dialog": {
|
|
53
71
|
"close": "cerrar",
|
|
54
72
|
"apply": "aplicar",
|
|
55
73
|
"link": {
|
|
56
|
-
"title": "
|
|
74
|
+
"title": "agregar/editar enlace",
|
|
57
75
|
"placeholder": "dirección del enlace"
|
|
58
76
|
},
|
|
59
77
|
"source": {
|
|
60
78
|
"title": "ver código fuente",
|
|
61
|
-
"prettify": "
|
|
79
|
+
"prettify": "embellecer"
|
|
62
80
|
}
|
|
63
81
|
},
|
|
64
82
|
"misc": {
|
|
65
|
-
"source": "ver código fuente"
|
|
83
|
+
"source": "ver código fuente",
|
|
84
|
+
"preview": "vista previa"
|
|
66
85
|
}
|
|
67
86
|
}
|
package/src/i18n/locales/fr.json
CHANGED
|
@@ -22,13 +22,31 @@
|
|
|
22
22
|
"sup": "exposant",
|
|
23
23
|
"sub": "indice",
|
|
24
24
|
"break": "saut de ligne",
|
|
25
|
-
"highlight": "
|
|
25
|
+
"highlight": "surligner",
|
|
26
26
|
"line": "ligne horizontale",
|
|
27
27
|
"blockquote": "citation",
|
|
28
28
|
"code": "code",
|
|
29
29
|
"codeblock": "bloc de code",
|
|
30
30
|
"link": "lien externe",
|
|
31
|
-
"formatClear": "effacer le
|
|
31
|
+
"formatClear": "effacer le format",
|
|
32
|
+
"tables": {
|
|
33
|
+
"table": "tableau",
|
|
34
|
+
"insertTable": "insérer un tableau",
|
|
35
|
+
"deleteTable": "supprimer le tableau",
|
|
36
|
+
"insertWithHeaderRow": "insérer un tableau avec ligne d'en-tête",
|
|
37
|
+
"rows": "lignes",
|
|
38
|
+
"row": "ligne",
|
|
39
|
+
"insertRowBefore": "insérer une ligne avant",
|
|
40
|
+
"insertRowAfter": "insérer une ligne après",
|
|
41
|
+
"deleteRow": "supprimer la ligne",
|
|
42
|
+
"cols": "colonnes",
|
|
43
|
+
"col": "colonne",
|
|
44
|
+
"insertColBefore": "insérer une colonne avant",
|
|
45
|
+
"insertColAfter": "insérer une colonne après",
|
|
46
|
+
"deleteCol": "supprimer la colonne",
|
|
47
|
+
"mergeCells": "fusionner les cellules",
|
|
48
|
+
"splitCell": "diviser la cellule"
|
|
49
|
+
}
|
|
32
50
|
},
|
|
33
51
|
"action": {
|
|
34
52
|
"undo": "annuler",
|
|
@@ -46,22 +64,23 @@
|
|
|
46
64
|
"bullet": "liste à puces",
|
|
47
65
|
"numbered": "liste numérotée",
|
|
48
66
|
"task": "liste de tâches",
|
|
49
|
-
"indent": "
|
|
50
|
-
"outdent": "
|
|
67
|
+
"indent": "retrait d'élément",
|
|
68
|
+
"outdent": "réduire le retrait"
|
|
51
69
|
},
|
|
52
70
|
"dialog": {
|
|
53
71
|
"close": "fermer",
|
|
54
72
|
"apply": "appliquer",
|
|
55
73
|
"link": {
|
|
56
|
-
"title": "ajouter/modifier
|
|
74
|
+
"title": "ajouter/modifier le lien",
|
|
57
75
|
"placeholder": "adresse du lien"
|
|
58
76
|
},
|
|
59
77
|
"source": {
|
|
60
78
|
"title": "voir le code source",
|
|
61
|
-
"prettify": "
|
|
79
|
+
"prettify": "embellir"
|
|
62
80
|
}
|
|
63
81
|
},
|
|
64
82
|
"misc": {
|
|
65
|
-
"source": "voir le code source"
|
|
83
|
+
"source": "voir le code source",
|
|
84
|
+
"preview": "aperçu"
|
|
66
85
|
}
|
|
67
86
|
}
|