Some bugfixes for the editor.

pull/10/head
Jens Pelzetter 2021-10-23 12:51:19 +02:00
parent 0d77ceb594
commit 4d069eb109
10 changed files with 253 additions and 173 deletions

View File

@ -11,60 +11,52 @@
"dev": true "dev": true
}, },
"@tiptap/core": { "@tiptap/core": {
"version": "2.0.0-beta.116", "version": "2.0.0-beta.127",
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.0.0-beta.116.tgz", "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.0.0-beta.127.tgz",
"integrity": "sha512-5x3HkT71IxF56lPEHPSTqOqkm1fVfHgVfyBbiNA3Qsz47npgJCDelDr6PHY8qlzxLCaN4dMDQUXEsvDDAiRouw==", "integrity": "sha512-vUjhvUUHhJcT9Rzg2duQuZ5idQ1AjWhmbAdaeuuethaVUKqOQmkUtEBMaOcZu9Bss5m81ISyuu7cVzn7TPBaGg==",
"requires": { "requires": {
"@types/prosemirror-commands": "^1.0.4", "@types/prosemirror-commands": "^1.0.4",
"@types/prosemirror-inputrules": "^1.0.4",
"@types/prosemirror-keymap": "^1.0.4", "@types/prosemirror-keymap": "^1.0.4",
"@types/prosemirror-model": "^1.13.2", "@types/prosemirror-model": "^1.13.2",
"@types/prosemirror-schema-list": "^1.0.3", "@types/prosemirror-schema-list": "^1.0.3",
"@types/prosemirror-state": "^1.2.7", "@types/prosemirror-state": "^1.2.7",
"@types/prosemirror-transform": "^1.1.4", "@types/prosemirror-transform": "^1.1.4",
"@types/prosemirror-view": "^1.19.1", "@types/prosemirror-view": "^1.19.1",
"prosemirror-commands": "^1.1.10", "prosemirror-commands": "^1.1.11",
"prosemirror-inputrules": "^1.1.3",
"prosemirror-keymap": "^1.1.3", "prosemirror-keymap": "^1.1.3",
"prosemirror-model": "^1.14.3", "prosemirror-model": "^1.14.3",
"prosemirror-schema-list": "^1.1.6", "prosemirror-schema-list": "^1.1.6",
"prosemirror-state": "^1.3.4", "prosemirror-state": "^1.3.4",
"prosemirror-transform": "^1.3.3", "prosemirror-transform": "^1.3.3",
"prosemirror-view": "^1.20.1" "prosemirror-view": "^1.20.3"
} }
}, },
"@tiptap/extension-blockquote": { "@tiptap/extension-blockquote": {
"version": "2.0.0-beta.15", "version": "2.0.0-beta.19",
"resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.15.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.19.tgz",
"integrity": "sha512-Cso44KsYsqKqaNveQmx5KVaLy9krq5AzE9WhGVDBSFqWhvuIJkQYrTRBbOTfUDs/st9VuwJrbjTDD65ow50wEw==", "integrity": "sha512-9y8keXSm4E5mdh/EocdbrJ/H71qyXv2jajRHIsXj1SaJqLaz4JbSQGrX3j2r0ia3KW3YNFFIHl/z33fU70YfGQ=="
"requires": {
"prosemirror-inputrules": "^1.1.3"
}
}, },
"@tiptap/extension-bold": { "@tiptap/extension-bold": {
"version": "2.0.0-beta.15", "version": "2.0.0-beta.19",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.15.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.19.tgz",
"integrity": "sha512-jKyV6iiwhxwa0+7uuKD74jNDVNLNOS1GmU14MgaA95pY5e1fyaRBPPX8Gtt89niz2CLOY711AV17RPZTe/e60w==" "integrity": "sha512-pbYMK3Lz78XFi+1OisdjuGQcjRnzHXeYivh9A4xP1fmSOS6t/lQsu2P2uDhFNXtz45dLcLTOkqnE0j5lj3TGMg=="
}, },
"@tiptap/extension-bullet-list": { "@tiptap/extension-bullet-list": {
"version": "2.0.0-beta.15", "version": "2.0.0-beta.18",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.15.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.18.tgz",
"integrity": "sha512-5i44JzsZOh8Ci6CuYRQy6W3jCpYgX0+VuJKeHvZ6Aomy4Qqrtc9Jk43PBmCj91lNUUtH6Io9l+kDrLCumEFnEg==", "integrity": "sha512-dOf2Wx9bmgpBQIxhw7b+g1GhbIyIox7FIiIEkkSgqDtx8wPPYlnGwHRxopj4a57VbqRkRtspJZp52/vhP3is5w=="
"requires": {
"prosemirror-inputrules": "^1.1.3"
}
}, },
"@tiptap/extension-code": { "@tiptap/extension-code": {
"version": "2.0.0-beta.16", "version": "2.0.0-beta.20",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.0.0-beta.16.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.0.0-beta.20.tgz",
"integrity": "sha512-Kakg/RMiVrxjzIkLVDXtbCzRh/9W8dgSG04IhMZNOI8N9vWn8Z78jdUyxEEDTcL/JyWWcMxn9AsJw2U5ajO3pA==" "integrity": "sha512-25twg/rsg5CxTOfDgYzg1GbwrtdzNX2vCQyYsauXfPI1kbrWXdVBYWeL4iHdJk5WElfH9WUbQ4kMGh13/KCG/g=="
}, },
"@tiptap/extension-code-block": { "@tiptap/extension-code-block": {
"version": "2.0.0-beta.18", "version": "2.0.0-beta.24",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.18.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.24.tgz",
"integrity": "sha512-E2gz7ovl9nXLZzheqLyN3hi7A10fCaodDn4DvIl4wiEbKZpF7WFBNeb+FQetWNay9UWNeDO94SCX9+rT9H+yHA==", "integrity": "sha512-Q6KxBe3FB+dMe/prlfeixXSVqGTmnOmIL2/10B1RzSj7Mj9SgzqQEHZFm3dKVqpYuMOYJ6S6edkW33E0Wq9ahQ==",
"requires": { "requires": {
"prosemirror-inputrules": "^1.1.3" "prosemirror-state": "^1.3.4"
} }
}, },
"@tiptap/extension-document": { "@tiptap/extension-document": {
@ -82,26 +74,23 @@
} }
}, },
"@tiptap/extension-gapcursor": { "@tiptap/extension-gapcursor": {
"version": "2.0.0-beta.23", "version": "2.0.0-beta.28",
"resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.23.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.28.tgz",
"integrity": "sha512-yav1pAZ6YTZ4GzRaY3x0KutghLfC0Z6g/KXFzdE5KD5nxBhLUhid9rZ/kQiVPmZx2R0M/O5C+mdScYS2UzMmqA==", "integrity": "sha512-8JsvzVRh/ZzO+yEj7HtpXOcHo7eYIo2/uSIbFx24RM3f1TZd2/icFHUg8yMlj0tdXk9i6N270t2L/Qs7SysvFA==",
"requires": { "requires": {
"@types/prosemirror-gapcursor": "^1.0.4", "@types/prosemirror-gapcursor": "^1.0.4",
"prosemirror-gapcursor": "^1.2.0" "prosemirror-gapcursor": "^1.2.0"
} }
}, },
"@tiptap/extension-hard-break": { "@tiptap/extension-hard-break": {
"version": "2.0.0-beta.20", "version": "2.0.0-beta.24",
"resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.20.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.24.tgz",
"integrity": "sha512-tLZ53VMse2C1skj23tPFlq0wmdOCQ9vRsukz/KaR8VAFQBany0GOFmazu6QEFpC9+TI2gAckIGijEGFyP9QkMA==" "integrity": "sha512-0oEHUlQKQZRQmrbKARFPBVVRBWdekR27ro+qg+T6nzEHYSRkJ7dWBswGSNul1v1XEp52JqniZ3el0w1xdYMR0w=="
}, },
"@tiptap/extension-heading": { "@tiptap/extension-heading": {
"version": "2.0.0-beta.15", "version": "2.0.0-beta.18",
"resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.15.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.18.tgz",
"integrity": "sha512-UoXDwEdCV9KiPh0wj0jj2Jt6VDqkoTaSU3d9bmEBLwg1Gjgbuv39JDst7oxSqbf9rgbl3txbeOy35wVBKe9CqA==", "integrity": "sha512-JJtB1pNHkqC9z/z/6B+xQpDd1w5EaLp++yG8eoY9NCq3ZCRhwULda+Uq7reA9D0PdEDpASsTSS2qLu8ZAtgUeA=="
"requires": {
"prosemirror-inputrules": "^1.1.3"
}
}, },
"@tiptap/extension-history": { "@tiptap/extension-history": {
"version": "2.0.0-beta.16", "version": "2.0.0-beta.16",
@ -113,17 +102,17 @@
} }
}, },
"@tiptap/extension-horizontal-rule": { "@tiptap/extension-horizontal-rule": {
"version": "2.0.0-beta.20", "version": "2.0.0-beta.24",
"resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.20.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.24.tgz",
"integrity": "sha512-phvZy1ckl4FJ8k6cXce8wOXxv0c50HjU5sA7r6b8u7+Mj0Dc5DZE7enjiDGxoBLP6Yf2lzOgq1phH/r9EihDUQ==", "integrity": "sha512-kRHJySSJl6QgPvnD+MkN3rzwQgInbq5zE4oxPPbgqYkaAcVSL/q7JBQK1dXMMFaslQlYmEgM6Eh3oU5vo9gUdQ==",
"requires": { "requires": {
"prosemirror-state": "^1.3.4" "prosemirror-state": "^1.3.4"
} }
}, },
"@tiptap/extension-italic": { "@tiptap/extension-italic": {
"version": "2.0.0-beta.15", "version": "2.0.0-beta.19",
"resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.15.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.19.tgz",
"integrity": "sha512-ZCz1vCysLdvOUrwODuyBP0BDaemCLh6ib7qTYoSDKdive9kfn0Vc5Fg3o8xgHrtrUfwKIJz/sWOknjDEGIc9cw==" "integrity": "sha512-gEVDqEz25glLuOPW1IOPJy/AIrTgsm164XSi9lnwS1uZa1bmEAKpoALN0+9VzSVaBOmrg2tycMo+iuOhYxFb7w=="
}, },
"@tiptap/extension-list-item": { "@tiptap/extension-list-item": {
"version": "2.0.0-beta.14", "version": "2.0.0-beta.14",
@ -131,12 +120,9 @@
"integrity": "sha512-t6xwEqP+d5443Ul2Jvqz9kXb3ro7bA7yY9HA0vskm3120WxxHW9jxgxZN+82Ot5Tm7nXOAlsN6vuqnt4idnxZQ==" "integrity": "sha512-t6xwEqP+d5443Ul2Jvqz9kXb3ro7bA7yY9HA0vskm3120WxxHW9jxgxZN+82Ot5Tm7nXOAlsN6vuqnt4idnxZQ=="
}, },
"@tiptap/extension-ordered-list": { "@tiptap/extension-ordered-list": {
"version": "2.0.0-beta.16", "version": "2.0.0-beta.19",
"resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.16.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.19.tgz",
"integrity": "sha512-3n0h5FBfQqBrN/zqF/Ngoyd1bZxeIRLwWI7ak4KulpvOg5V/yw3sw5CSxr2f13ZI9AgGaTq8yOsTYs9dkCCnsQ==", "integrity": "sha512-PHC5pA1gohxCJF2xMXOzruPt8XWyWLun3vhJL2AIUUzUoGJmSRhsc8Wreeozdlf8HkKrqnsIuk5tp6IEsau6Pw=="
"requires": {
"prosemirror-inputrules": "^1.1.3"
}
}, },
"@tiptap/extension-paragraph": { "@tiptap/extension-paragraph": {
"version": "2.0.0-beta.17", "version": "2.0.0-beta.17",
@ -144,9 +130,9 @@
"integrity": "sha512-qCQVCf9c2hgaeIdfy22PaoZyW5Vare/1aGkOEAaZma5RjrUbV9hrRKwoW9LsDjnh1EN1fIeKdg02yEhnHWtG8A==" "integrity": "sha512-qCQVCf9c2hgaeIdfy22PaoZyW5Vare/1aGkOEAaZma5RjrUbV9hrRKwoW9LsDjnh1EN1fIeKdg02yEhnHWtG8A=="
}, },
"@tiptap/extension-strike": { "@tiptap/extension-strike": {
"version": "2.0.0-beta.17", "version": "2.0.0-beta.21",
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.17.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.21.tgz",
"integrity": "sha512-+WRd0RuCK4+jFKNVN+4rHTa5VMqqGDO2uc+TknkqhFqWp/z96OAGlpHJOwPrnW1fLbpjEBBQIr1vVYSw6KgcZg==" "integrity": "sha512-uYU5k05MChVtZUwWMXAl+xp3IGx/N/+8VZaeJDlIZfg0hew+ZdEGVjwzgCQc1PAuEZriHhbpPg1yOdcHjWga8Q=="
}, },
"@tiptap/extension-subscript": { "@tiptap/extension-subscript": {
"version": "2.0.0-beta.4", "version": "2.0.0-beta.4",
@ -159,12 +145,12 @@
"integrity": "sha512-rTQCnSnloSf6UN1y3zhu6j41MxrcCVWm5JIPX8VEt60WsOXJLAc/YJHLYi2FWhh/Psq8k78sPrmZbjYUrj3Dkw==" "integrity": "sha512-rTQCnSnloSf6UN1y3zhu6j41MxrcCVWm5JIPX8VEt60WsOXJLAc/YJHLYi2FWhh/Psq8k78sPrmZbjYUrj3Dkw=="
}, },
"@tiptap/extension-table": { "@tiptap/extension-table": {
"version": "2.0.0-beta.31", "version": "2.0.0-beta.35",
"resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.0.0-beta.31.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.0.0-beta.35.tgz",
"integrity": "sha512-yMqnbxaq2DjaZ6EOE9FLSQSO+qHH7oE0rA+ahQkJdy9KycSboKthXBY7P9JeXxariTyD2B/My9x41cuDLWes9w==", "integrity": "sha512-7kdTHgkzZYiFBWN2GyXF+gGo6IodruRs/9f7qeT0i3bhuS2eQ//Tqz3w9w8NdR9APLq6fUgUnQNmdSSqOBzOXA==",
"requires": { "requires": {
"prosemirror-tables": "^1.1.1", "prosemirror-tables": "^1.1.1",
"prosemirror-view": "^1.20.1" "prosemirror-view": "^1.20.3"
} }
}, },
"@tiptap/extension-table-cell": { "@tiptap/extension-table-cell": {
@ -188,28 +174,28 @@
"integrity": "sha512-0EtAwuRldCAoFaL/iXgkRepEeOd55rPg5N4FQUN1xTwZT7PDofukP0DG/2jff/Uj17x4uTaJAa9qlFWuNnDvjw==" "integrity": "sha512-0EtAwuRldCAoFaL/iXgkRepEeOd55rPg5N4FQUN1xTwZT7PDofukP0DG/2jff/Uj17x4uTaJAa9qlFWuNnDvjw=="
}, },
"@tiptap/starter-kit": { "@tiptap/starter-kit": {
"version": "2.0.0-beta.115", "version": "2.0.0-beta.129",
"resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.115.tgz", "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.129.tgz",
"integrity": "sha512-GDkjNkp1zRl8K2U9VaClCvmOAASOqCiJiKMccdWKer8uyEEmjpZVhkdMqIQBflX3z9cDxdbh9Ywkqoysg4NFkw==", "integrity": "sha512-JCM0Upscww5s0N0ZWk9z+2zbDlYebygnxT5kofoBZB5Qs4yFee/AfvuE4KHtbwL5bk3zPlHWNVePivCYhKwz6Q==",
"requires": { "requires": {
"@tiptap/core": "^2.0.0-beta.116", "@tiptap/core": "^2.0.0-beta.127",
"@tiptap/extension-blockquote": "^2.0.0-beta.15", "@tiptap/extension-blockquote": "^2.0.0-beta.19",
"@tiptap/extension-bold": "^2.0.0-beta.15", "@tiptap/extension-bold": "^2.0.0-beta.19",
"@tiptap/extension-bullet-list": "^2.0.0-beta.15", "@tiptap/extension-bullet-list": "^2.0.0-beta.18",
"@tiptap/extension-code": "^2.0.0-beta.16", "@tiptap/extension-code": "^2.0.0-beta.20",
"@tiptap/extension-code-block": "^2.0.0-beta.18", "@tiptap/extension-code-block": "^2.0.0-beta.24",
"@tiptap/extension-document": "^2.0.0-beta.13", "@tiptap/extension-document": "^2.0.0-beta.13",
"@tiptap/extension-dropcursor": "^2.0.0-beta.19", "@tiptap/extension-dropcursor": "^2.0.0-beta.19",
"@tiptap/extension-gapcursor": "^2.0.0-beta.23", "@tiptap/extension-gapcursor": "^2.0.0-beta.28",
"@tiptap/extension-hard-break": "^2.0.0-beta.20", "@tiptap/extension-hard-break": "^2.0.0-beta.24",
"@tiptap/extension-heading": "^2.0.0-beta.15", "@tiptap/extension-heading": "^2.0.0-beta.18",
"@tiptap/extension-history": "^2.0.0-beta.16", "@tiptap/extension-history": "^2.0.0-beta.16",
"@tiptap/extension-horizontal-rule": "^2.0.0-beta.20", "@tiptap/extension-horizontal-rule": "^2.0.0-beta.24",
"@tiptap/extension-italic": "^2.0.0-beta.15", "@tiptap/extension-italic": "^2.0.0-beta.19",
"@tiptap/extension-list-item": "^2.0.0-beta.14", "@tiptap/extension-list-item": "^2.0.0-beta.14",
"@tiptap/extension-ordered-list": "^2.0.0-beta.16", "@tiptap/extension-ordered-list": "^2.0.0-beta.19",
"@tiptap/extension-paragraph": "^2.0.0-beta.17", "@tiptap/extension-paragraph": "^2.0.0-beta.17",
"@tiptap/extension-strike": "^2.0.0-beta.17", "@tiptap/extension-strike": "^2.0.0-beta.21",
"@tiptap/extension-text": "^2.0.0-beta.13" "@tiptap/extension-text": "^2.0.0-beta.13"
} }
}, },
@ -301,15 +287,6 @@
"@types/prosemirror-state": "*" "@types/prosemirror-state": "*"
} }
}, },
"@types/prosemirror-inputrules": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@types/prosemirror-inputrules/-/prosemirror-inputrules-1.0.4.tgz",
"integrity": "sha512-lJIMpOjO47SYozQybUkpV6QmfuQt7GZKHtVrvS+mR5UekA8NMC5HRIVMyaIauJLWhKU6oaNjpVaXdw41kh165g==",
"requires": {
"@types/prosemirror-model": "*",
"@types/prosemirror-state": "*"
}
},
"@types/prosemirror-keymap": { "@types/prosemirror-keymap": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/@types/prosemirror-keymap/-/prosemirror-keymap-1.0.4.tgz", "resolved": "https://registry.npmjs.org/@types/prosemirror-keymap/-/prosemirror-keymap-1.0.4.tgz",
@ -1635,9 +1612,9 @@
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
}, },
"prosemirror-commands": { "prosemirror-commands": {
"version": "1.1.10", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.1.10.tgz", "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.1.11.tgz",
"integrity": "sha512-IWyBBXNAd44RM6NnBPljwq+/CM2oYCQJkF+YhKEAZNwzW0uFdGf4qComhjbKZzqFdu6Iub2ZhNsXgwPibA0lCQ==", "integrity": "sha512-uXDVkOGJbFHocdacMJihrnQCT7tHswO48ewq6ByqLxTwOrI8Y4B4aHvwUbM4epwElv/YjgC+DuqXm/gEHPym4w==",
"requires": { "requires": {
"prosemirror-model": "^1.0.0", "prosemirror-model": "^1.0.0",
"prosemirror-state": "^1.0.0", "prosemirror-state": "^1.0.0",
@ -1675,15 +1652,6 @@
"rope-sequence": "^1.3.0" "rope-sequence": "^1.3.0"
} }
}, },
"prosemirror-inputrules": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.1.3.tgz",
"integrity": "sha512-ZaHCLyBtvbyIHv0f5p6boQTIJjlD6o2NPZiEaZWT2DA+j591zS29QQEMT4lBqwcLW3qRSf7ZvoKNbf05YrsStw==",
"requires": {
"prosemirror-state": "^1.0.0",
"prosemirror-transform": "^1.0.0"
}
},
"prosemirror-keymap": { "prosemirror-keymap": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz", "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz",
@ -1740,9 +1708,9 @@
} }
}, },
"prosemirror-view": { "prosemirror-view": {
"version": "1.20.1", "version": "1.20.3",
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.20.1.tgz", "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.20.3.tgz",
"integrity": "sha512-djWORhy3a706mUH4A2dgEEV0IPZqQd1tFyz/ZVHJNoqhSgq82FwG6dq7uqHeUB2KdVSNfI2yc3rwfqlC/ll2pA==", "integrity": "sha512-2ImL9K/tIEk+aC2GT8shzfmT2U0Y8UQZ13L5AY0A4Tcj09o/ICGE362gKUE3Ze/Xr/nMw61Zv5JMSQUszAj9dw==",
"requires": { "requires": {
"prosemirror-model": "^1.14.3", "prosemirror-model": "^1.14.3",
"prosemirror-state": "^1.0.0", "prosemirror-state": "^1.0.0",

View File

@ -22,14 +22,14 @@
"webpack-cli": "^4.8.0" "webpack-cli": "^4.8.0"
}, },
"dependencies": { "dependencies": {
"@tiptap/core": "^2.0.0-beta.116", "@tiptap/core": "^2.0.0-beta.127",
"@tiptap/extension-subscript": "^2.0.0-beta.4", "@tiptap/extension-subscript": "^2.0.0-beta.4",
"@tiptap/extension-superscript": "^2.0.0-beta.4", "@tiptap/extension-superscript": "^2.0.0-beta.4",
"@tiptap/extension-table": "^2.0.0-beta.31", "@tiptap/extension-table": "^2.0.0-beta.35",
"@tiptap/extension-table-cell": "^2.0.0-beta.15", "@tiptap/extension-table-cell": "^2.0.0-beta.15",
"@tiptap/extension-table-header": "^2.0.0-beta.17", "@tiptap/extension-table-header": "^2.0.0-beta.17",
"@tiptap/extension-table-row": "^2.0.0-beta.14", "@tiptap/extension-table-row": "^2.0.0-beta.14",
"@tiptap/starter-kit": "^2.0.0-beta.115", "@tiptap/starter-kit": "^2.0.0-beta.129",
"acorn": "^8.5.0", "acorn": "^8.5.0",
"bootstrap": "^4.6.0", "bootstrap": "^4.6.0",
"bootstrap-icons": "^1.5.0", "bootstrap-icons": "^1.5.0",

View File

@ -295,9 +295,9 @@ public class Images {
// with the values for width and height) // with the values for width and height)
final int width = parseScaleParameter(widthParam, "width"); final int width = parseScaleParameter(widthParam, "width");
final int height = parseScaleParameter(heightParam, "height"); final int height = parseScaleParameter(heightParam, "height");
final java.awt.Image scaledImage = scaleImage(bufferedImage, final java.awt.Image scaledImage = scaleImage(
width, bufferedImage, width, height
height); );
final ByteArrayOutputStream outputStream final ByteArrayOutputStream outputStream
= new ByteArrayOutputStream(); = new ByteArrayOutputStream();

View File

@ -790,6 +790,16 @@
<small class="form-text text-muted" <small class="form-text text-muted"
id="alttext-help">#{CmsAdminMessages['cms_editor.image_node_view.settings.dialog.alttext.help']}</small> id="alttext-help">#{CmsAdminMessages['cms_editor.image_node_view.settings.dialog.alttext.help']}</small>
</div> </div>
<div class="form-group">
<label for="caption">#{CmsAdminMessages['cms_editor.image_node_view.settings.dialog.caption.label']}</label>
<input aria-describedby="caption-help"
class="form-control"
id="caption"
required="true"
type="text" />
<small class="form-text text-muted"
id="caption-help">#{CmsAdminMessages['cms_editor.image_node_view.settings.dialog.caption.help']}</small>
</div>
<div class="form-group"> <div class="form-group">
<label for="size">#{CmsAdminMessages['cms_editor.image_node_view.settings.dialog.size.label']}</label> <label for="size">#{CmsAdminMessages['cms_editor.image_node_view.settings.dialog.size.label']}</label>
<select aria-describedby="size-help" <select aria-describedby="size-help"
@ -965,6 +975,16 @@
<small class="form-text text-muted" <small class="form-text text-muted"
id="alttext-help">#{CmsAdminMessages['cms_editor.video_node_view.settings.dialog.alttext.help']}</small> id="alttext-help">#{CmsAdminMessages['cms_editor.video_node_view.settings.dialog.alttext.help']}</small>
</div> </div>
<div class="form-group">
<label for="caption">#{CmsAdminMessages['cms_editor.video_node_view.settings.dialog.caption.label']}</label>
<input aria-describedby="caption-help"
class="form-control"
id="caption"
required="true"
type="text" />
<small class="form-text text-muted"
id="caption-help">#{CmsAdminMessages['cms_editor.video_node_view.settings.dialog.caption.help']}</small>
</div>
<div class="form-group"> <div class="form-group">
<label for="size">#{CmsAdminMessages['cms_editor.video_node_view.settings.dialog.size.label']}</label> <label for="size">#{CmsAdminMessages['cms_editor.video_node_view.settings.dialog.size.label']}</label>
<select aria-describedby="size-help" <select aria-describedby="size-help"
@ -1127,6 +1147,16 @@
<small class="form-text text-muted" <small class="form-text text-muted"
id="alttext-help">#{CmsAdminMessages['cms_editor.audio_node_view.settings.dialog.alttext.help']}</small> id="alttext-help">#{CmsAdminMessages['cms_editor.audio_node_view.settings.dialog.alttext.help']}</small>
</div> </div>
<div class="form-group">
<label for="caption">#{CmsAdminMessages['cms_editor.audio_node_view.settings.dialog.caption.label']}</label>
<input aria-describedby="caption-help"
class="form-control"
id="caption"
required="true"
type="text" />
<small class="form-text text-muted"
id="caption-help">#{CmsAdminMessages['cms_editor.audio_node_view.settings.dialog.caption.help']}</small>
</div>
<div class="form-group"> <div class="form-group">
<label for="align">#{CmsAdminMessages['cms_editor.audio_node_view.settings.dialog.align.label']}</label> <label for="align">#{CmsAdminMessages['cms_editor.audio_node_view.settings.dialog.align.label']}</label>
<select aria-describedby="align-help" <select aria-describedby="align-help"

View File

@ -1,6 +1,6 @@
import { CmsEditorBuilder, CmsEditor } from "./cms-editor"; import { CmsEditorBuilder, CmsEditor } from "./cms-editor";
document.addEventListener("DOMContentLoaded", event => { document.addEventListener("DOMContentLoaded", (event) => {
const editorElem = document.querySelector("#cms-article-text-editor"); const editorElem = document.querySelector("#cms-article-text-editor");
if (editorElem) { if (editorElem) {
@ -25,9 +25,10 @@ document.addEventListener("DOMContentLoaded", event => {
builder builder
.buildEditor() .buildEditor()
.then(editor => { .then((editor) => {
// Temporary for development const submitButton = document.querySelector(
const submitButton = document.querySelector(".cms-editor-save-button"); ".cms-editor-save-button"
);
if (submitButton) { if (submitButton) {
submitButton.addEventListener("click", (event) => { submitButton.addEventListener("click", (event) => {
@ -36,11 +37,15 @@ document.addEventListener("DOMContentLoaded", event => {
console.log("HTML output of editor: "); console.log("HTML output of editor: ");
console.log(editor.getEditor().getHTML()); console.log(editor.getEditor().getHTML());
}); });
} else {
console.error("Save button not found.")
}
})
.catch((error) => {
console.error(error);
console.trace(error);
});
} else {
console.error("Editor element not found.")
} }
}
);
}
}); });

View File

@ -1,7 +1,7 @@
import "bootstrap"; import "bootstrap";
import * as $ from "jquery"; import * as $ from "jquery";
import { ChainedCommands, Editor, Node, mergeAttributes } from "@tiptap/core"; import { ChainedCommands, Editor, Node, mergeAttributes } from "@tiptap/core";
import Gapcursor from "@tiptap/extension-gapcursor"; // import Gapcursor from "@tiptap/extension-gapcursor";
import StarterKit from "@tiptap/starter-kit"; import StarterKit from "@tiptap/starter-kit";
import Subscript from "@tiptap/extension-subscript"; import Subscript from "@tiptap/extension-subscript";
import Superscript from "@tiptap/extension-superscript"; import Superscript from "@tiptap/extension-superscript";
@ -709,6 +709,14 @@ class CmsEditor {
body: params, body: params,
}); });
if (response.ok) { if (response.ok) {
console.log(`Save response status: ${response.status}`);
window.location.href = response.url;
// const location = response.headers.get("Location");
// if (location) {
// window.location.href = location;
// } else {
// this.showMessage("#cms-editor-msg-save-successful");
// }
} else { } else {
this.showSaveFailedMessage( this.showSaveFailedMessage(
response.status, response.status,
@ -716,6 +724,8 @@ class CmsEditor {
); );
} }
} catch (error) { } catch (error) {
console.error(error);
console.trace(error);
this.showSaveFailedErrMessage(error as string); this.showSaveFailedErrMessage(error as string);
} }
} }
@ -772,12 +782,14 @@ class CmsEditorBuilder {
} }
const variant = await this.fetchVariant(this.variantUrl); const variant = await this.fetchVariant(this.variantUrl);
console.log(`Got variant: ${variant}`);
try {
const editor: Editor = new Editor({ const editor: Editor = new Editor({
element: canvasElement, element: canvasElement,
extensions: [ extensions: [
AudioNode, AudioNode,
Gapcursor, // Gapcursor,
ImageNode, ImageNode,
StarterKit, StarterKit,
Subscript, Subscript,
@ -797,6 +809,12 @@ class CmsEditorBuilder {
}); });
return new CmsEditor(editor, this.editorElem, this.saveUrl); return new CmsEditor(editor, this.editorElem, this.saveUrl);
} catch (error) {
console.error("Failed to create editor:");
console.trace(error);
throw error;
}
} }
protected async fetchVariant(variantUrl: string): Promise<string> { protected async fetchVariant(variantUrl: string): Promise<string> {
@ -816,6 +834,8 @@ class CmsEditorBuilder {
throw `Failed to load variant. Status: ${response.status}, Status Text: ${response.statusText}`; throw `Failed to load variant. Status: ${response.status}, Status Text: ${response.statusText}`;
} }
} catch (error) { } catch (error) {
console.error(error);
console.trace(error);
this.showLoadVariantFailedErrorMessage(error as string); this.showLoadVariantFailedErrorMessage(error as string);
throw error; throw error;
} }

View File

@ -227,6 +227,11 @@ export const AudioNode = Node.create({
const altTextInput = settingsDialogElem.querySelector( const altTextInput = settingsDialogElem.querySelector(
`input#alttext-${dialogIdNr}` `input#alttext-${dialogIdNr}`
); );
const captionInput = settingsDialogElem.querySelector(
`input#caption-${dialogIdNr}`
);
const alignSelect = settingsDialogElem.querySelector( const alignSelect = settingsDialogElem.querySelector(
`select#align-${dialogIdNr}` `select#align-${dialogIdNr}`
); );
@ -238,6 +243,12 @@ export const AudioNode = Node.create({
console.warn("Input for alt text not found."); console.warn("Input for alt text not found.");
} }
if (captionInput) {
(captionInput as HTMLInputElement).value = node.attrs.figCaption;
} else {
console.warn("Input for caption not found.");
}
if (alignSelect) { if (alignSelect) {
const optionElems = alignSelect.querySelectorAll("option"); const optionElems = alignSelect.querySelectorAll("option");
for (let i = 0; i < optionElems.length; i++) { for (let i = 0; i < optionElems.length; i++) {
@ -254,14 +265,17 @@ export const AudioNode = Node.create({
if (submitButton) { if (submitButton) {
submitButton.addEventListener("click", (event) => { submitButton.addEventListener("click", (event) => {
const inputElem = altTextInput as HTMLInputElement; const altInputElem = altTextInput as HTMLInputElement;
if (altTextInput) { node.attrs.altText = altInputElem.value;
node.attrs.altText = inputElem.value;
if (audioElem) { if (audioElem) {
audioElem.textContent = inputElem.value; audioElem.textContent = altInputElem.value;
} }
} else {
console.warn("Input for alt text not found."); const captionInputElem =
captionInput as HTMLInputElement;
node.attrs.figCaption = captionInputElem.value;
if (figCaptionElem) {
figCaptionElem.textContent = captionInputElem.value;
} }
if (alignSelect) { if (alignSelect) {
@ -335,7 +349,7 @@ export const AudioNode = Node.create({
textContent: node.attrs.altText, textContent: node.attrs.altText,
}, },
], ],
["figcaption", [node.attrs.figCaption]], ["figcaption", node.attrs.figCaption],
]; ];
}, },
}); });

View File

@ -144,7 +144,15 @@ export const ImageNode = Node.create({
const template = templateNode as HTMLTemplateElement; const template = templateNode as HTMLTemplateElement;
const nodeView = template.content.cloneNode(true) as HTMLElement; const nodeView = template.content.cloneNode(true) as HTMLElement;
const imgElem = nodeView.querySelector("img"); const imgElem = nodeView.querySelector("img");
if (imgElem) {
imgElem.src = node.attrs.imgSrc;
imgElem.alt = node.attrs.altText;
} else {
console.error("No img element.");
}
const dialogIdNr = Math.floor(Math.random() * 1000000000); const dialogIdNr = Math.floor(Math.random() * 1000000000);
const selectDialogId = `librecms-image-node-select-image-dialog-${dialogIdNr}`; const selectDialogId = `librecms-image-node-select-image-dialog-${dialogIdNr}`;
@ -266,6 +274,11 @@ export const ImageNode = Node.create({
const altTextInput = settingsDialogElem.querySelector( const altTextInput = settingsDialogElem.querySelector(
`input#alttext-${dialogIdNr}` `input#alttext-${dialogIdNr}`
); );
const captionInput = settingsDialogElem.querySelector(
`input#caption-${dialogIdNr}`
);
const alignSelect = settingsDialogElem.querySelector( const alignSelect = settingsDialogElem.querySelector(
`select#align-${dialogIdNr}` `select#align-${dialogIdNr}`
); );
@ -285,6 +298,13 @@ export const ImageNode = Node.create({
console.warn("Input for alt text not found."); console.warn("Input for alt text not found.");
} }
if (captionInput) {
(captionInput as HTMLInputElement).value =
node.attrs.figCaption;
} else {
console.warn("Input for caption not found.");
}
if (alignSelect) { if (alignSelect) {
const optionElems = alignSelect.querySelectorAll("option"); const optionElems = alignSelect.querySelectorAll("option");
for (let i = 0; i < optionElems.length; i++) { for (let i = 0; i < optionElems.length; i++) {
@ -322,14 +342,17 @@ export const ImageNode = Node.create({
if (submitButton) { if (submitButton) {
submitButton.addEventListener("click", (event) => { submitButton.addEventListener("click", (event) => {
const inputElem = altTextInput as HTMLInputElement; const altInputElem = altTextInput as HTMLInputElement;
if (altTextInput) { node.attrs.altText = altInputElem.value;
node.attrs.altText = inputElem.value;
if (imgElem) { if (imgElem) {
imgElem.alt = inputElem.value; imgElem.alt = altInputElem.value;
} }
} else {
console.warn("Input for alt text not found."); const captionInputElem =
captionInput as HTMLInputElement;
node.attrs.figCaption = captionInputElem.value;
if (figCaptionElem) {
figCaptionElem.textContent = captionInputElem.value;
} }
if (alignSelect) { if (alignSelect) {
@ -434,7 +457,7 @@ export const ImageNode = Node.create({
src: node.attrs.imgSrc, src: node.attrs.imgSrc,
}, },
], ],
["figcaption", [node.attrs.figCaption]], ["figcaption", node.attrs.figCaption],
]; ];
}, },
}); });
@ -532,6 +555,7 @@ function loadImages(
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
console.trace(error);
}); });
} else { } else {
console.error( console.error(
@ -541,5 +565,6 @@ function loadImages(
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
console.trace(error);
}); });
} }

View File

@ -239,6 +239,11 @@ export const VideoNode = Node.create({
const altTextInput = settingsDialogElem.querySelector( const altTextInput = settingsDialogElem.querySelector(
`input#alttext-${dialogIdNr}` `input#alttext-${dialogIdNr}`
); );
const captionInput = settingsDialogElem.querySelector(
`input#caption-${dialogIdNr}`
);
const alignSelect = settingsDialogElem.querySelector( const alignSelect = settingsDialogElem.querySelector(
`select#align-${dialogIdNr}` `select#align-${dialogIdNr}`
); );
@ -254,6 +259,13 @@ export const VideoNode = Node.create({
console.warn("Input for alt text not found."); console.warn("Input for alt text not found.");
} }
if (captionInput) {
(captionInput as HTMLInputElement).value =
node.attrs.figCaption;
} else {
console.warn("Input for caption not found.");
}
if (alignSelect) { if (alignSelect) {
const optionElems = alignSelect.querySelectorAll("option"); const optionElems = alignSelect.querySelectorAll("option");
for (let i = 0; i < optionElems.length; i++) { for (let i = 0; i < optionElems.length; i++) {
@ -284,14 +296,17 @@ export const VideoNode = Node.create({
if (submitButton) { if (submitButton) {
submitButton.addEventListener("click", (event) => { submitButton.addEventListener("click", (event) => {
const inputElem = altTextInput as HTMLInputElement; const altInputElem = altTextInput as HTMLInputElement;
if (altTextInput) { node.attrs.altText = altInputElem.value;
node.attrs.altText = inputElem.value;
if (videoElem) { if (videoElem) {
videoElem.textContent = inputElem.value; videoElem.textContent = altInputElem.value;
} }
} else {
console.warn("Input for alt text not found."); const captionInputElem =
captionInput as HTMLInputElement;
node.attrs.figCaption = captionInputElem.value;
if (figCaptionElem) {
figCaptionElem.textContent = captionInputElem.value;
} }
if (alignSelect) { if (alignSelect) {
@ -383,7 +398,7 @@ export const VideoNode = Node.create({
textContent: node.attrs.altText, textContent: node.attrs.altText,
}, },
], ],
["figcaption", [node.attrs.figCaption]], ["figcaption", node.attrs.figCaption],
]; ];
}, },
}); });

View File

@ -1,6 +1,9 @@
module.exports = { module.exports = {
mode: "production", mode: "development",
devtool: "source-map", devtool: "source-map",
optimization: {
chunkIds: false
},
entry: { entry: {
"cms-admin": "./src/main/typescript/content-sections/cms-admin.ts", "cms-admin": "./src/main/typescript/content-sections/cms-admin.ts",
"article-text-step": "./src/main/typescript/content-sections/article-text-step.ts" "article-text-step": "./src/main/typescript/content-sections/article-text-step.ts"