WIP
This commit is contained in:
parent
23d524127c
commit
be067e5008
|
@ -11,6 +11,8 @@
|
|||
"dependencies": {
|
||||
"@simplewebauthn/browser": "4.0.0",
|
||||
"@simplewebauthn/typescript-types": "4.0.0",
|
||||
"@tiptap/core": "2.0.0-beta.182",
|
||||
"@tiptap/starter-kit": "2.0.0-beta.191",
|
||||
"@types/dompurify": "2.3.1",
|
||||
"@types/marked": "4.0.3",
|
||||
"@types/papaparse": "5.2.5",
|
||||
|
@ -101,6 +103,285 @@
|
|||
"version": "4.0.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@tiptap/core": {
|
||||
"version": "2.0.0-beta.182",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.0.0-beta.182.tgz",
|
||||
"integrity": "sha512-MZGkMGnVnWhBzjvpBNwQ9zBz38ndi3Irbf90uCTSArR0kaCVkW4vmyuPuOXd+0SO8Yv/l5oyDdOCpaG3rnQYfw==",
|
||||
"dependencies": {
|
||||
"prosemirror-commands": "1.3.0",
|
||||
"prosemirror-keymap": "1.2.0",
|
||||
"prosemirror-model": "1.18.1",
|
||||
"prosemirror-schema-list": "1.2.0",
|
||||
"prosemirror-state": "1.4.1",
|
||||
"prosemirror-transform": "1.6.0",
|
||||
"prosemirror-view": "1.26.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-blockquote": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-zMYT5TtpKWav9VhTn4JLyMvXmhEdbD6on0MdhcTjRm0I5ugyR4ZbJwh2aelM7G9DZVYzB8jZU18OSDJmo7Af7w==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-bold": {
|
||||
"version": "2.0.0-beta.28",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.28.tgz",
|
||||
"integrity": "sha512-DY8GOzw9xjmTFrnvTbgHUNxTnDfKrkDgrhe0SUvdkT2udntWp8umPdhPiD3vczLgHOJw6tX68qMRjbsR1ZPcHQ==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-bullet-list": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-R8VB2l1ZB6VeGWx/t/04nBS5Wg3qjIDEZCpPihj2fccJOw99Lu0Ub2UJg/SfdGmeNNpBh4ZYYFv1g/XjyzlXKg==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-code": {
|
||||
"version": "2.0.0-beta.28",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.0.0-beta.28.tgz",
|
||||
"integrity": "sha512-QPJ2Gwb1+3NgcC1ZIhvVcb+FsnWWDu5VZXTKXM4mz892i9V2x48uHg5anPiUV6pcolXsW1F5VNbXIHGTUUO6CQ==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-code-block": {
|
||||
"version": "2.0.0-beta.42",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.42.tgz",
|
||||
"integrity": "sha512-4wzLup4mI8w9ypIceekUV/8g41cQIPn31qs1iC9u1/JuTkjMj/tA+TFUyp6IMugLxoI/P2DlTztU6/6m7n9DyQ==",
|
||||
"dependencies": {
|
||||
"prosemirror-state": "1.4.1"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-document": {
|
||||
"version": "2.0.0-beta.17",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.0.0-beta.17.tgz",
|
||||
"integrity": "sha512-L6sg0FNchbtIpQkCSjMmItVGs3/vep8Fq56WRtDc1wBSGUSmtHaxQG7F2FZLnNIUMuvzVMRD81m2vYG73WkY6A==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-dropcursor": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-I+joyoFB8pfdXUPLMqdNO08nlB5m2lbu0VQ5dpqdi/HzgVThMZPZA1cW0X8vAUvrALs5/JFRiFoR9hrLN5R5ng==",
|
||||
"dependencies": {
|
||||
"prosemirror-dropcursor": "1.5.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-gapcursor": {
|
||||
"version": "2.0.0-beta.39",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.39.tgz",
|
||||
"integrity": "sha512-oCyz5WEeQXrEIoa1WXaD52yf1EwMFCXaK1cVzFgUj8lkXJ+nJj+O/Zp0Mg+9/MVR0LYu/kifqVorKNXM4AFA/g==",
|
||||
"dependencies": {
|
||||
"prosemirror-gapcursor": "1.3.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-hard-break": {
|
||||
"version": "2.0.0-beta.33",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.33.tgz",
|
||||
"integrity": "sha512-41xf0vSV9hcyTFd01ItLq/CjhjgmOFLCrO3UWN/P2E/cIxuDTyXcvjTE/KXeqRCOV3OYd9fVr0wO91hc8Ij1Yg==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-heading": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-q92jYcsT5bPhvuQaB0h44Z9r+Ii22tDYo082KMVnR4+tknHT/3xx+p4JC8KHjh+/5W8Quyafqy6mS8L8VX0zsQ==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-history": {
|
||||
"version": "2.0.0-beta.26",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.0.0-beta.26.tgz",
|
||||
"integrity": "sha512-ly19uwvdmXG8Fw1KcavXIHi3Qx6JBASOR7394zghOEpW3atpY8nd/8I373rZ8eDUcGOClfaF7bCx2xvIotAAnw==",
|
||||
"dependencies": {
|
||||
"prosemirror-history": "1.3.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-horizontal-rule": {
|
||||
"version": "2.0.0-beta.36",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.36.tgz",
|
||||
"integrity": "sha512-o+Zp7dcn3zAQhtlhZiFB69mTHuH3ZRbGEF7Cbf1D3uX1izotni5zIZbPaFFUT4r6OmVe/vDDt/nopfcGc10ktQ==",
|
||||
"dependencies": {
|
||||
"prosemirror-state": "1.4.1"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-italic": {
|
||||
"version": "2.0.0-beta.28",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.28.tgz",
|
||||
"integrity": "sha512-/pKRiCfewh7nqiXRD3N4hQHfGrGNOiWPFYZfY35bSpvTms7PDb/MF7xT1CWW23hSpY31BBS+R/a66vlR/gqu7Q==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-list-item": {
|
||||
"version": "2.0.0-beta.23",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.23.tgz",
|
||||
"integrity": "sha512-AkzvdELz3ZnrlZM0r9+ritBDOnAjXHR/8zCZhW0ZlWx4zyKPMsNG5ygivY+xr4QT65NEGRT8P8b2zOhXrMjjMQ==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-ordered-list": {
|
||||
"version": "2.0.0-beta.30",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.30.tgz",
|
||||
"integrity": "sha512-GRxGQdq1u0Rp5N8TjthCqoZ//460m343A0HCN7UwfQOnX7Ipv0UJemwNkSHWrl7Pexym9vy3yPWgrn7oRRmgEw==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-paragraph": {
|
||||
"version": "2.0.0-beta.26",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.26.tgz",
|
||||
"integrity": "sha512-WcYsuUa7LLfk0vi7I1dVjdMRu53B52FMMqd+UL1qPdDKVkU3DBsZVwPj+yyfQyqN8Mc/xyg9VacGaiKFLmWNDg==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-strike": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-zqFuY7GfNmZ/KClt6kxQ+msGo3syqucP/Xnlihxi+/h/G+oTvEwyOIXCtDOltvxcsWH/TUsdr5vzLp0j+Mdc6Q==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/extension-text": {
|
||||
"version": "2.0.0-beta.17",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.0.0-beta.17.tgz",
|
||||
"integrity": "sha512-OyKL+pqWJEtjyd9/mrsuY1kZh2b3LWpOQDWKtd4aWR4EA0efmQG+7FPwcIeAVEh7ZoqM+/ABCnPjN6IjzIrSfg==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tiptap/starter-kit": {
|
||||
"version": "2.0.0-beta.191",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.191.tgz",
|
||||
"integrity": "sha512-YRrBCi9W4jiH/xLTJJOCdD7pL4Wb98Ip8qCJ94RElShDj0O1i5tT9wWlgVWoGIU+CRAds5XENRwZ97sJ+YfYyg==",
|
||||
"dependencies": {
|
||||
"@tiptap/core": "^2.0.0-beta.182",
|
||||
"@tiptap/extension-blockquote": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-bold": "^2.0.0-beta.28",
|
||||
"@tiptap/extension-bullet-list": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-code": "^2.0.0-beta.28",
|
||||
"@tiptap/extension-code-block": "^2.0.0-beta.42",
|
||||
"@tiptap/extension-document": "^2.0.0-beta.17",
|
||||
"@tiptap/extension-dropcursor": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-gapcursor": "^2.0.0-beta.39",
|
||||
"@tiptap/extension-hard-break": "^2.0.0-beta.33",
|
||||
"@tiptap/extension-heading": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-history": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-horizontal-rule": "^2.0.0-beta.36",
|
||||
"@tiptap/extension-italic": "^2.0.0-beta.28",
|
||||
"@tiptap/extension-list-item": "^2.0.0-beta.23",
|
||||
"@tiptap/extension-ordered-list": "^2.0.0-beta.30",
|
||||
"@tiptap/extension-paragraph": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-strike": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-text": "^2.0.0-beta.17"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ueberdosis"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/chai": {
|
||||
"version": "4.2.18",
|
||||
"dev": true,
|
||||
|
@ -1226,6 +1507,11 @@
|
|||
"opener": "bin/opener-bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/orderedmap": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.0.0.tgz",
|
||||
"integrity": "sha512-buf4PoAMlh45b8a8gsGy/X6w279TSqkyAS0C0wdTSJwFSU+ljQFJON5I8NfjLHoCXwpSROIo2wr0g33T+kQshQ=="
|
||||
},
|
||||
"node_modules/p-limit": {
|
||||
"version": "3.1.0",
|
||||
"dev": true,
|
||||
|
@ -1339,6 +1625,101 @@
|
|||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"node_modules/prosemirror-commands": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.3.0.tgz",
|
||||
"integrity": "sha512-BwBbZ5OAScPcm0x7H8SPbqjuEJnCU2RJT9LDyOiiIl/3NbL1nJZI4SFNHwU2e/tRr2Xe7JsptpzseqvZvToLBQ==",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-dropcursor": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.5.0.tgz",
|
||||
"integrity": "sha512-vy7i77ddKyXlu8kKBB3nlxLBnsWyKUmQIPB5x8RkYNh01QNp/qqGmdd5yZefJs0s3rtv5r7Izfu2qbtr+tYAMQ==",
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0",
|
||||
"prosemirror-view": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-gapcursor": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.0.tgz",
|
||||
"integrity": "sha512-9Tdx83xB2W4Oqchm12FtCkSizbqvi64cjs1I9TRPblqdA5TUWoVZ4ZI+t71Jh6HSEh4cDMPzx3UwfryJtKlb/w==",
|
||||
"dependencies": {
|
||||
"prosemirror-keymap": "^1.0.0",
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-view": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-history": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.0.tgz",
|
||||
"integrity": "sha512-qo/9Wn4B/Bq89/YD+eNWFbAytu6dmIM85EhID+fz9Jcl9+DfGEo8TTSrRhP15+fFEoaPqpHSxlvSzSEbmlxlUA==",
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.2.2",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
"rope-sequence": "^1.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-keymap": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.0.tgz",
|
||||
"integrity": "sha512-TdSfu+YyLDd54ufN/ZeD1VtBRYpgZnTPnnbY+4R08DDgs84KrIPEPbJL8t1Lm2dkljFx6xeBE26YWH3aIzkPKg==",
|
||||
"dependencies": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"w3c-keyname": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-model": {
|
||||
"version": "1.18.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.18.1.tgz",
|
||||
"integrity": "sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw==",
|
||||
"dependencies": {
|
||||
"orderedmap": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-schema-list": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.2.0.tgz",
|
||||
"integrity": "sha512-8PT/9xOx1HHdC7fDNNfhQ50Z8Mzu7nKyA1KCDltSpcZVZIbB0k7KtsHrnXyuIhbLlScoymBiLZ00c5MH6wdFsA==",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-state": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.1.tgz",
|
||||
"integrity": "sha512-U/LBDW2gNmVa07sz/D229XigSdDQ5CLFwVB1Vb32MJbAHHhWe/6pOc721faI17tqw4pZ49i1xfY/jEZ9tbIhPg==",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-transform": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.6.0.tgz",
|
||||
"integrity": "sha512-MAp7AjsjEGEqQY0sSMufNIUuEyB1ZR9Fqlm8dTwwWwpEJRv/plsKjWXBbx52q3Ml8MtaMcd7ic14zAHVB3WaMw==",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-view": {
|
||||
"version": "1.26.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.26.2.tgz",
|
||||
"integrity": "sha512-CGKw+GadkfSBEwRAJTHCEKJ4DlV6/3IhAdjpwGyZHUHtbP7jX4Ol4zmi7xa2c6GOabDlIJLYXJydoNYLX7lNeQ==",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.16.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/qrcode": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz",
|
||||
|
@ -1554,6 +1935,11 @@
|
|||
"version": "1.0.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/rope-sequence": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.3.tgz",
|
||||
"integrity": "sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q=="
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
|
@ -1723,6 +2109,11 @@
|
|||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"node_modules/w3c-keyname": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz",
|
||||
"integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw=="
|
||||
},
|
||||
"node_modules/whatwg-encoding": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
|
||||
|
@ -1894,6 +2285,164 @@
|
|||
"@simplewebauthn/typescript-types": {
|
||||
"version": "4.0.0"
|
||||
},
|
||||
"@tiptap/core": {
|
||||
"version": "2.0.0-beta.182",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.0.0-beta.182.tgz",
|
||||
"integrity": "sha512-MZGkMGnVnWhBzjvpBNwQ9zBz38ndi3Irbf90uCTSArR0kaCVkW4vmyuPuOXd+0SO8Yv/l5oyDdOCpaG3rnQYfw==",
|
||||
"requires": {
|
||||
"prosemirror-commands": "1.3.0",
|
||||
"prosemirror-keymap": "1.2.0",
|
||||
"prosemirror-model": "1.18.1",
|
||||
"prosemirror-schema-list": "1.2.0",
|
||||
"prosemirror-state": "1.4.1",
|
||||
"prosemirror-transform": "1.6.0",
|
||||
"prosemirror-view": "1.26.2"
|
||||
}
|
||||
},
|
||||
"@tiptap/extension-blockquote": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-zMYT5TtpKWav9VhTn4JLyMvXmhEdbD6on0MdhcTjRm0I5ugyR4ZbJwh2aelM7G9DZVYzB8jZU18OSDJmo7Af7w==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-bold": {
|
||||
"version": "2.0.0-beta.28",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.28.tgz",
|
||||
"integrity": "sha512-DY8GOzw9xjmTFrnvTbgHUNxTnDfKrkDgrhe0SUvdkT2udntWp8umPdhPiD3vczLgHOJw6tX68qMRjbsR1ZPcHQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-bullet-list": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-R8VB2l1ZB6VeGWx/t/04nBS5Wg3qjIDEZCpPihj2fccJOw99Lu0Ub2UJg/SfdGmeNNpBh4ZYYFv1g/XjyzlXKg==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-code": {
|
||||
"version": "2.0.0-beta.28",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.0.0-beta.28.tgz",
|
||||
"integrity": "sha512-QPJ2Gwb1+3NgcC1ZIhvVcb+FsnWWDu5VZXTKXM4mz892i9V2x48uHg5anPiUV6pcolXsW1F5VNbXIHGTUUO6CQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-code-block": {
|
||||
"version": "2.0.0-beta.42",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.42.tgz",
|
||||
"integrity": "sha512-4wzLup4mI8w9ypIceekUV/8g41cQIPn31qs1iC9u1/JuTkjMj/tA+TFUyp6IMugLxoI/P2DlTztU6/6m7n9DyQ==",
|
||||
"requires": {
|
||||
"prosemirror-state": "1.4.1"
|
||||
}
|
||||
},
|
||||
"@tiptap/extension-document": {
|
||||
"version": "2.0.0-beta.17",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.0.0-beta.17.tgz",
|
||||
"integrity": "sha512-L6sg0FNchbtIpQkCSjMmItVGs3/vep8Fq56WRtDc1wBSGUSmtHaxQG7F2FZLnNIUMuvzVMRD81m2vYG73WkY6A==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-dropcursor": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-I+joyoFB8pfdXUPLMqdNO08nlB5m2lbu0VQ5dpqdi/HzgVThMZPZA1cW0X8vAUvrALs5/JFRiFoR9hrLN5R5ng==",
|
||||
"requires": {
|
||||
"prosemirror-dropcursor": "1.5.0"
|
||||
}
|
||||
},
|
||||
"@tiptap/extension-gapcursor": {
|
||||
"version": "2.0.0-beta.39",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.39.tgz",
|
||||
"integrity": "sha512-oCyz5WEeQXrEIoa1WXaD52yf1EwMFCXaK1cVzFgUj8lkXJ+nJj+O/Zp0Mg+9/MVR0LYu/kifqVorKNXM4AFA/g==",
|
||||
"requires": {
|
||||
"prosemirror-gapcursor": "1.3.0"
|
||||
}
|
||||
},
|
||||
"@tiptap/extension-hard-break": {
|
||||
"version": "2.0.0-beta.33",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.33.tgz",
|
||||
"integrity": "sha512-41xf0vSV9hcyTFd01ItLq/CjhjgmOFLCrO3UWN/P2E/cIxuDTyXcvjTE/KXeqRCOV3OYd9fVr0wO91hc8Ij1Yg==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-heading": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-q92jYcsT5bPhvuQaB0h44Z9r+Ii22tDYo082KMVnR4+tknHT/3xx+p4JC8KHjh+/5W8Quyafqy6mS8L8VX0zsQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-history": {
|
||||
"version": "2.0.0-beta.26",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.0.0-beta.26.tgz",
|
||||
"integrity": "sha512-ly19uwvdmXG8Fw1KcavXIHi3Qx6JBASOR7394zghOEpW3atpY8nd/8I373rZ8eDUcGOClfaF7bCx2xvIotAAnw==",
|
||||
"requires": {
|
||||
"prosemirror-history": "1.3.0"
|
||||
}
|
||||
},
|
||||
"@tiptap/extension-horizontal-rule": {
|
||||
"version": "2.0.0-beta.36",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.36.tgz",
|
||||
"integrity": "sha512-o+Zp7dcn3zAQhtlhZiFB69mTHuH3ZRbGEF7Cbf1D3uX1izotni5zIZbPaFFUT4r6OmVe/vDDt/nopfcGc10ktQ==",
|
||||
"requires": {
|
||||
"prosemirror-state": "1.4.1"
|
||||
}
|
||||
},
|
||||
"@tiptap/extension-italic": {
|
||||
"version": "2.0.0-beta.28",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.28.tgz",
|
||||
"integrity": "sha512-/pKRiCfewh7nqiXRD3N4hQHfGrGNOiWPFYZfY35bSpvTms7PDb/MF7xT1CWW23hSpY31BBS+R/a66vlR/gqu7Q==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-list-item": {
|
||||
"version": "2.0.0-beta.23",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.23.tgz",
|
||||
"integrity": "sha512-AkzvdELz3ZnrlZM0r9+ritBDOnAjXHR/8zCZhW0ZlWx4zyKPMsNG5ygivY+xr4QT65NEGRT8P8b2zOhXrMjjMQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-ordered-list": {
|
||||
"version": "2.0.0-beta.30",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.30.tgz",
|
||||
"integrity": "sha512-GRxGQdq1u0Rp5N8TjthCqoZ//460m343A0HCN7UwfQOnX7Ipv0UJemwNkSHWrl7Pexym9vy3yPWgrn7oRRmgEw==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-paragraph": {
|
||||
"version": "2.0.0-beta.26",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.26.tgz",
|
||||
"integrity": "sha512-WcYsuUa7LLfk0vi7I1dVjdMRu53B52FMMqd+UL1qPdDKVkU3DBsZVwPj+yyfQyqN8Mc/xyg9VacGaiKFLmWNDg==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-strike": {
|
||||
"version": "2.0.0-beta.29",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.29.tgz",
|
||||
"integrity": "sha512-zqFuY7GfNmZ/KClt6kxQ+msGo3syqucP/Xnlihxi+/h/G+oTvEwyOIXCtDOltvxcsWH/TUsdr5vzLp0j+Mdc6Q==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/extension-text": {
|
||||
"version": "2.0.0-beta.17",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.0.0-beta.17.tgz",
|
||||
"integrity": "sha512-OyKL+pqWJEtjyd9/mrsuY1kZh2b3LWpOQDWKtd4aWR4EA0efmQG+7FPwcIeAVEh7ZoqM+/ABCnPjN6IjzIrSfg==",
|
||||
"requires": {}
|
||||
},
|
||||
"@tiptap/starter-kit": {
|
||||
"version": "2.0.0-beta.191",
|
||||
"resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.191.tgz",
|
||||
"integrity": "sha512-YRrBCi9W4jiH/xLTJJOCdD7pL4Wb98Ip8qCJ94RElShDj0O1i5tT9wWlgVWoGIU+CRAds5XENRwZ97sJ+YfYyg==",
|
||||
"requires": {
|
||||
"@tiptap/core": "^2.0.0-beta.182",
|
||||
"@tiptap/extension-blockquote": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-bold": "^2.0.0-beta.28",
|
||||
"@tiptap/extension-bullet-list": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-code": "^2.0.0-beta.28",
|
||||
"@tiptap/extension-code-block": "^2.0.0-beta.42",
|
||||
"@tiptap/extension-document": "^2.0.0-beta.17",
|
||||
"@tiptap/extension-dropcursor": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-gapcursor": "^2.0.0-beta.39",
|
||||
"@tiptap/extension-hard-break": "^2.0.0-beta.33",
|
||||
"@tiptap/extension-heading": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-history": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-horizontal-rule": "^2.0.0-beta.36",
|
||||
"@tiptap/extension-italic": "^2.0.0-beta.28",
|
||||
"@tiptap/extension-list-item": "^2.0.0-beta.23",
|
||||
"@tiptap/extension-ordered-list": "^2.0.0-beta.30",
|
||||
"@tiptap/extension-paragraph": "^2.0.0-beta.26",
|
||||
"@tiptap/extension-strike": "^2.0.0-beta.29",
|
||||
"@tiptap/extension-text": "^2.0.0-beta.17"
|
||||
}
|
||||
},
|
||||
"@types/chai": {
|
||||
"version": "4.2.18",
|
||||
"dev": true
|
||||
|
@ -2672,6 +3221,11 @@
|
|||
"opener": {
|
||||
"version": "1.5.2"
|
||||
},
|
||||
"orderedmap": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.0.0.tgz",
|
||||
"integrity": "sha512-buf4PoAMlh45b8a8gsGy/X6w279TSqkyAS0C0wdTSJwFSU+ljQFJON5I8NfjLHoCXwpSROIo2wr0g33T+kQshQ=="
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "3.1.0",
|
||||
"dev": true,
|
||||
|
@ -2744,6 +3298,101 @@
|
|||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"prosemirror-commands": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.3.0.tgz",
|
||||
"integrity": "sha512-BwBbZ5OAScPcm0x7H8SPbqjuEJnCU2RJT9LDyOiiIl/3NbL1nJZI4SFNHwU2e/tRr2Xe7JsptpzseqvZvToLBQ==",
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-dropcursor": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.5.0.tgz",
|
||||
"integrity": "sha512-vy7i77ddKyXlu8kKBB3nlxLBnsWyKUmQIPB5x8RkYNh01QNp/qqGmdd5yZefJs0s3rtv5r7Izfu2qbtr+tYAMQ==",
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0",
|
||||
"prosemirror-view": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-gapcursor": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.0.tgz",
|
||||
"integrity": "sha512-9Tdx83xB2W4Oqchm12FtCkSizbqvi64cjs1I9TRPblqdA5TUWoVZ4ZI+t71Jh6HSEh4cDMPzx3UwfryJtKlb/w==",
|
||||
"requires": {
|
||||
"prosemirror-keymap": "^1.0.0",
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-view": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-history": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.0.tgz",
|
||||
"integrity": "sha512-qo/9Wn4B/Bq89/YD+eNWFbAytu6dmIM85EhID+fz9Jcl9+DfGEo8TTSrRhP15+fFEoaPqpHSxlvSzSEbmlxlUA==",
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.2.2",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
"rope-sequence": "^1.3.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-keymap": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.0.tgz",
|
||||
"integrity": "sha512-TdSfu+YyLDd54ufN/ZeD1VtBRYpgZnTPnnbY+4R08DDgs84KrIPEPbJL8t1Lm2dkljFx6xeBE26YWH3aIzkPKg==",
|
||||
"requires": {
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"w3c-keyname": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-model": {
|
||||
"version": "1.18.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.18.1.tgz",
|
||||
"integrity": "sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw==",
|
||||
"requires": {
|
||||
"orderedmap": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-schema-list": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.2.0.tgz",
|
||||
"integrity": "sha512-8PT/9xOx1HHdC7fDNNfhQ50Z8Mzu7nKyA1KCDltSpcZVZIbB0k7KtsHrnXyuIhbLlScoymBiLZ00c5MH6wdFsA==",
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-state": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.1.tgz",
|
||||
"integrity": "sha512-U/LBDW2gNmVa07sz/D229XigSdDQ5CLFwVB1Vb32MJbAHHhWe/6pOc721faI17tqw4pZ49i1xfY/jEZ9tbIhPg==",
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-transform": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.6.0.tgz",
|
||||
"integrity": "sha512-MAp7AjsjEGEqQY0sSMufNIUuEyB1ZR9Fqlm8dTwwWwpEJRv/plsKjWXBbx52q3Ml8MtaMcd7ic14zAHVB3WaMw==",
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"prosemirror-view": {
|
||||
"version": "1.26.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.26.2.tgz",
|
||||
"integrity": "sha512-CGKw+GadkfSBEwRAJTHCEKJ4DlV6/3IhAdjpwGyZHUHtbP7jX4Ol4zmi7xa2c6GOabDlIJLYXJydoNYLX7lNeQ==",
|
||||
"requires": {
|
||||
"prosemirror-model": "^1.16.0",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"qrcode": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz",
|
||||
|
@ -2911,6 +3560,11 @@
|
|||
"requires-port": {
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"rope-sequence": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.3.tgz",
|
||||
"integrity": "sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q=="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
|
@ -3023,6 +3677,11 @@
|
|||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"w3c-keyname": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz",
|
||||
"integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw=="
|
||||
},
|
||||
"whatwg-encoding": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
"@padloc/locale": "4.0.0",
|
||||
"@simplewebauthn/browser": "4.0.0",
|
||||
"@simplewebauthn/typescript-types": "4.0.0",
|
||||
"@tiptap/core": "2.0.0-beta.182",
|
||||
"@tiptap/starter-kit": "2.0.0-beta.191",
|
||||
"@types/dompurify": "2.3.1",
|
||||
"@types/marked": "4.0.3",
|
||||
"@types/papaparse": "5.2.5",
|
||||
|
|
|
@ -16,6 +16,8 @@ import { randomString, charSets } from "@padloc/core/src/util";
|
|||
import { app } from "../globals";
|
||||
import { descriptionForAudit, iconForAudit, titleTextForAudit } from "../lib/audit";
|
||||
import "./popover";
|
||||
import "./rich-input";
|
||||
import "./rich-content";
|
||||
|
||||
@customElement("pl-field")
|
||||
export class FieldElement extends LitElement {
|
||||
|
@ -214,6 +216,7 @@ export class FieldElement extends LitElement {
|
|||
}
|
||||
|
||||
.value-display {
|
||||
display: block;
|
||||
margin: 0 0.4em 0.4em 1.5em;
|
||||
white-space: pre-wrap;
|
||||
overflow-wrap: break-word;
|
||||
|
@ -221,6 +224,10 @@ export class FieldElement extends LitElement {
|
|||
cursor: text;
|
||||
}
|
||||
|
||||
.value-display.small {
|
||||
margin-left: 1.8em;
|
||||
}
|
||||
|
||||
.move-button {
|
||||
display: flex;
|
||||
--button-padding: 0 0.5em;
|
||||
|
@ -252,6 +259,12 @@ export class FieldElement extends LitElement {
|
|||
return html` <pre class="value-display mono">${format(this.field.value, this._masked)}</pre> `;
|
||||
case "totp":
|
||||
return html` <pl-totp class="mono value-display" .secret=${this.field.value}></pl-totp> `;
|
||||
case "note":
|
||||
return html` <pl-rich-content
|
||||
class="small value-display"
|
||||
type="html"
|
||||
.content=${this.field.value}
|
||||
></pl-rich-content>`;
|
||||
default:
|
||||
return html` <pre class="value-display">${format(this.field.value, this._masked)}</pre> `;
|
||||
}
|
||||
|
@ -261,14 +274,12 @@ export class FieldElement extends LitElement {
|
|||
switch (this.field.type) {
|
||||
case "note":
|
||||
return html`
|
||||
<pl-textarea
|
||||
class="value-input"
|
||||
.placeholder=${$l("Enter Notes Here")}
|
||||
<pl-rich-input
|
||||
class="small value-input"
|
||||
@input=${() => (this.field.value = this._valueInput.value)}
|
||||
autosize
|
||||
.value=${this.field.value}
|
||||
>
|
||||
</pl-textarea>
|
||||
</pl-rich-input>
|
||||
`;
|
||||
|
||||
case "totp":
|
||||
|
|
|
@ -423,7 +423,7 @@ export class PlIcon extends LitElement {
|
|||
}
|
||||
|
||||
:host([icon="note"]) > div::before {
|
||||
content: "\\f036";
|
||||
content: "\\e1da";
|
||||
}
|
||||
|
||||
:host([icon="custom"]) > div::before {
|
||||
|
@ -581,6 +581,62 @@ export class PlIcon extends LitElement {
|
|||
:host([icon="field"]) > div::before {
|
||||
content: "\\e211";
|
||||
}
|
||||
|
||||
:host([icon="heading"]) > div::before {
|
||||
content: "\\f1dc";
|
||||
}
|
||||
|
||||
:host([icon="heading-1"]) > div::before {
|
||||
content: "\\f313";
|
||||
}
|
||||
|
||||
:host([icon="heading-2"]) > div::before {
|
||||
content: "\\f314";
|
||||
}
|
||||
|
||||
:host([icon="heading-3"]) > div::before {
|
||||
content: "\\f315";
|
||||
}
|
||||
|
||||
:host([icon="text"]) > div::before {
|
||||
content: "\\f893";
|
||||
}
|
||||
|
||||
:host([icon="bold"]) > div::before {
|
||||
content: "\\f032";
|
||||
}
|
||||
|
||||
:host([icon="italic"]) > div::before {
|
||||
content: "\\f033";
|
||||
}
|
||||
|
||||
:host([icon="list"]) > div::before {
|
||||
content: "\\f03a";
|
||||
}
|
||||
|
||||
:host([icon="list-ul"]) > div::before {
|
||||
content: "\\f0ca";
|
||||
}
|
||||
|
||||
:host([icon="list-ol"]) > div::before {
|
||||
content: "\\f0cb";
|
||||
}
|
||||
|
||||
:host([icon="list-check"]) > div::before {
|
||||
content: "\\f0ae";
|
||||
}
|
||||
|
||||
:host([icon="blockquote"]) > div::before {
|
||||
content: "\\e0b5";
|
||||
}
|
||||
|
||||
:host([icon="line"]) > div::before {
|
||||
content: "\\f86c";
|
||||
}
|
||||
|
||||
:host([icon="expand"]) > div::before {
|
||||
content: "\\f320";
|
||||
}
|
||||
`,
|
||||
];
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { openExternalUrl } from "@padloc/core/src/platform";
|
||||
import { sanitize } from "dompurify";
|
||||
import { css, html, LitElement } from "lit";
|
||||
import { html, LitElement } from "lit";
|
||||
import { customElement, property } from "lit/decorators.js";
|
||||
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
||||
import { mardownToHtml } from "../lib/markdown";
|
||||
import { mixins, shared } from "../styles";
|
||||
import { content, shared } from "../styles";
|
||||
import { icons } from "../styles/icons";
|
||||
|
||||
@customElement("pl-rich-content")
|
||||
|
@ -12,75 +12,13 @@ export class RichContent extends LitElement {
|
|||
@property()
|
||||
content = "";
|
||||
|
||||
@property()
|
||||
type: "plain" | "markdown" | "html" = "markdown";
|
||||
|
||||
@property({ type: Boolean })
|
||||
sanitize = true;
|
||||
|
||||
static styles = [
|
||||
shared,
|
||||
icons,
|
||||
css`
|
||||
h1 {
|
||||
font-size: var(--font-size-big);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: var(--font-size-large);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: var(--font-size-default);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: disc;
|
||||
padding-left: 1.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
ul.plain {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: var(--button-padding, 0.7em);
|
||||
background: var(--button-background);
|
||||
color: var(--button-color, currentColor);
|
||||
border-width: var(--button-border-width);
|
||||
border-style: var(--button-border-style);
|
||||
border-color: var(--button-border-color);
|
||||
border-radius: var(--button-border-radius, 0.5em);
|
||||
font-weight: inherit;
|
||||
text-align: inherit;
|
||||
transition: transform 0.2s cubic-bezier(0.05, 0.7, 0.03, 3) 0s;
|
||||
--focus-outline-color: var(--button-focus-outline-color);
|
||||
box-shadow: var(--button-shadow);
|
||||
}
|
||||
|
||||
button.primary {
|
||||
background: var(--button-primary-background, var(--button-background));
|
||||
color: var(--button-primary-color, var(--button-color));
|
||||
}
|
||||
|
||||
a.plain {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
${mixins.click("button")};
|
||||
${mixins.hover("button")};
|
||||
`,
|
||||
];
|
||||
static styles = [shared, icons, content];
|
||||
|
||||
updated() {
|
||||
for (const anchor of [...this.renderRoot.querySelectorAll("a[href]")] as HTMLAnchorElement[]) {
|
||||
|
|
|
@ -0,0 +1,187 @@
|
|||
import { css, customElement, html, LitElement } from "lit-element";
|
||||
import { Editor } from "@tiptap/core";
|
||||
import StarterKit from "@tiptap/starter-kit";
|
||||
import { shared, content } from "../styles";
|
||||
import "./button";
|
||||
import "./icon";
|
||||
import "./list";
|
||||
import "./popover";
|
||||
// import { EmojiClickEvent } from "./emoji-picker";
|
||||
// import "./emoji-picker";
|
||||
|
||||
@customElement("pl-rich-input")
|
||||
export class RichInput extends LitElement {
|
||||
get value() {
|
||||
return this._editor.getHTML();
|
||||
}
|
||||
|
||||
set value(content: string) {
|
||||
this._editor.commands.clearContent();
|
||||
this._editor.commands.insertContent(content);
|
||||
}
|
||||
|
||||
private _editor = new Editor({
|
||||
extensions: [StarterKit],
|
||||
onTransaction: () => this.requestUpdate(),
|
||||
onFocus: () => this.classList.add("focused"),
|
||||
onBlur: () => this.classList.remove("focused"),
|
||||
});
|
||||
|
||||
firstUpdated() {
|
||||
this.renderRoot.querySelector(".container")!.append(this._editor.options.element);
|
||||
this.addEventListener("click", () => this._editor.commands.focus());
|
||||
}
|
||||
|
||||
focus() {
|
||||
this._editor.commands.focus();
|
||||
}
|
||||
|
||||
// private _emojiSelected(e: EmojiClickEvent) {
|
||||
// console.log(e);
|
||||
// if (e.detail.unicode) {
|
||||
// this._editor.chain().focus().insertContent(e.detail.unicode).run();
|
||||
// }
|
||||
// }
|
||||
|
||||
static styles = [
|
||||
shared,
|
||||
content,
|
||||
css`
|
||||
:host {
|
||||
position: relative;
|
||||
cursor: text;
|
||||
border: solid 1px var(--color-shade-1);
|
||||
border-radius: 0.5em;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
:host(.focused) {
|
||||
border-color: var(--color-highlight);
|
||||
}
|
||||
`,
|
||||
];
|
||||
|
||||
render() {
|
||||
return html`
|
||||
<div class="small padded half-spacing wrapping horizontal layout border-bottom">
|
||||
<pl-button class="transparent slim">
|
||||
${this._editor?.isActive("heading", { level: 1 })
|
||||
? html` <pl-icon icon="heading-1"></pl-icon> `
|
||||
: this._editor?.isActive("heading", { level: 2 })
|
||||
? html` <pl-icon icon="heading-2"></pl-icon> `
|
||||
: this._editor?.isActive("heading", { level: 3 })
|
||||
? html` <pl-icon icon="heading-3"></pl-icon> `
|
||||
: html` <pl-icon icon="text"></pl-icon> `}
|
||||
|
||||
<pl-icon class="small" icon="dropdown"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<pl-popover hide-on-click>
|
||||
<pl-list>
|
||||
<div
|
||||
class="small double-padded centering horizontal layout list-item hover click"
|
||||
@click=${() => this._editor.chain().focus().setHeading({ level: 1 }).run()}
|
||||
>
|
||||
<pl-icon icon="heading-1"></pl-icon>
|
||||
</div>
|
||||
<div
|
||||
class="small double-padded centering horizontal layout list-item hover click"
|
||||
@click=${() => this._editor.chain().focus().setHeading({ level: 2 }).run()}
|
||||
>
|
||||
<pl-icon icon="heading-2"></pl-icon>
|
||||
</div>
|
||||
<div
|
||||
class="small double-padded centering horizontal layout list-item hover click"
|
||||
@click=${() => this._editor.chain().focus().setHeading({ level: 3 }).run()}
|
||||
>
|
||||
<pl-icon icon="heading-3"></pl-icon>
|
||||
</div>
|
||||
<div
|
||||
class="small double-padded centering horizontal layout list-item hover click"
|
||||
@click=${() => this._editor.chain().focus().setParagraph().run()}
|
||||
>
|
||||
<pl-icon icon="text"></pl-icon>
|
||||
</div>
|
||||
</pl-list>
|
||||
</pl-popover>
|
||||
|
||||
<div class="border-left"></div>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("bold")}
|
||||
@click=${() => this._editor.chain().focus().toggleBold().run()}
|
||||
>
|
||||
<pl-icon icon="bold"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("italic")}
|
||||
@click=${() => this._editor.chain().focus().toggleItalic().run()}
|
||||
>
|
||||
<pl-icon icon="italic"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("strike")}
|
||||
@click=${() => this._editor.chain().focus().toggleStrike().run()}
|
||||
>
|
||||
<pl-icon icon="strikethrough"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<div class="border-left"></div>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("bulletList")}
|
||||
@click=${() => this._editor.chain().focus().toggleBulletList().run()}
|
||||
>
|
||||
<pl-icon icon="list"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("orderedList")}
|
||||
@click=${() => this._editor.chain().focus().toggleOrderedList().run()}
|
||||
>
|
||||
<pl-icon icon="list-ol"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("orderedList")}
|
||||
@click=${() => this._editor.chain().focus().toggleOrderedList().run()}
|
||||
>
|
||||
<pl-icon icon="list-check"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
.toggled=${this._editor?.isActive("blockquote")}
|
||||
@click=${() => this._editor.chain().focus().toggleBlockquote().run()}
|
||||
>
|
||||
<pl-icon icon="blockquote"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<div class="border-left"></div>
|
||||
|
||||
<pl-button
|
||||
class="transparent slim"
|
||||
@click=${() => this._editor.chain().focus().setHorizontalRule().run()}
|
||||
>
|
||||
<pl-icon icon="line"></pl-icon>
|
||||
</pl-button>
|
||||
|
||||
<div class="stretch"></div>
|
||||
|
||||
<pl-button class="transparent slim">
|
||||
<pl-icon icon="expand"></pl-icon>
|
||||
</pl-button>
|
||||
</div>
|
||||
<div class="double-padded container scroller stretch" @click=${(e: Event) => e.stopPropagation()}></div>
|
||||
`;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
import { css } from "lit";
|
||||
import { click, hover } from "./mixins";
|
||||
|
||||
export const content = css`
|
||||
h1 {
|
||||
font-size: var(--font-size-big);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: var(--font-size-large);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: var(--font-size-default);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
p:not(:last-child),
|
||||
blockquote:not(:last-child) {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
padding-left: 1.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: disc;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ul ul,
|
||||
ol ol,
|
||||
ul ol,
|
||||
ol ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul.plain {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li p:not(:last-child) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: var(--button-padding, 0.7em);
|
||||
background: var(--button-background);
|
||||
color: var(--button-color, currentColor);
|
||||
border-width: var(--button-border-width);
|
||||
border-style: var(--button-border-style);
|
||||
border-color: var(--button-border-color);
|
||||
border-radius: var(--button-border-radius, 0.5em);
|
||||
font-weight: inherit;
|
||||
text-align: inherit;
|
||||
transition: transform 0.2s cubic-bezier(0.05, 0.7, 0.03, 3) 0s;
|
||||
--focus-outline-color: var(--button-focus-outline-color);
|
||||
box-shadow: var(--button-shadow);
|
||||
}
|
||||
|
||||
button.primary {
|
||||
background: var(--button-primary-background, var(--button-background));
|
||||
color: var(--button-primary-color, var(--button-color));
|
||||
}
|
||||
|
||||
${click("button")};
|
||||
${hover("button")};
|
||||
|
||||
a.plain {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: solid 2px var(--color-shade-3);
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: none;
|
||||
border-top: solid 1px var(--color-shade-3);
|
||||
}
|
||||
`;
|
|
@ -7,6 +7,7 @@ import { layout } from "./layout";
|
|||
import { animation } from "./animation";
|
||||
import { responsive } from "./responsive";
|
||||
import { misc } from "./misc";
|
||||
import { content } from "./content";
|
||||
|
||||
export const shared = css`
|
||||
${reset}
|
||||
|
@ -17,4 +18,4 @@ export const shared = css`
|
|||
${misc}
|
||||
`;
|
||||
|
||||
export { mixins, config, reset, base, layout, animation, responsive, misc };
|
||||
export { mixins, config, reset, base, layout, animation, responsive, misc, content };
|
||||
|
|
|
@ -141,6 +141,14 @@ export const misc = css`
|
|||
border-top: solid 1px var(--border-color);
|
||||
}
|
||||
|
||||
.border-left {
|
||||
border-left: solid 1px var(--border-color);
|
||||
}
|
||||
|
||||
.border-right {
|
||||
border-right: solid 1px var(--border-color);
|
||||
}
|
||||
|
||||
:not(:hover) > .reveal-on-parent-hover:not(:focus-within) {
|
||||
opacity: 0;
|
||||
}
|
||||
|
|
|
@ -117,6 +117,10 @@ export class PBES2Container extends BaseContainer {
|
|||
this.keyParams.salt = await getProvider().randomBytes(16);
|
||||
}
|
||||
this._key = await getProvider().deriveKey(stringToBytes(password), this.keyParams);
|
||||
// If this container has data already, make sure the derived key properly decrypts it.
|
||||
if (this.encryptedData) {
|
||||
await this.getData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -189,6 +189,9 @@ export const FIELD_DEFS: { [t in FieldType]: FieldDef } = {
|
|||
get name() {
|
||||
return $l("Note");
|
||||
},
|
||||
format(value: string) {
|
||||
return value.replace(/(<([^>]+)>)/gi, " ");
|
||||
},
|
||||
},
|
||||
[FieldType.Text]: {
|
||||
type: FieldType.Text,
|
||||
|
|
|
@ -90,6 +90,9 @@ export class AccountFeatures extends Serializable {
|
|||
|
||||
@AsSerializable(Feature)
|
||||
totpField: Feature = new Feature();
|
||||
|
||||
@AsSerializable(Feature)
|
||||
notesField: Feature = new Feature();
|
||||
}
|
||||
|
||||
export class OrgFeatures extends Serializable {
|
||||
|
@ -118,6 +121,9 @@ export class OrgFeatures extends Serializable {
|
|||
|
||||
@AsSerializable(OrgFeature)
|
||||
totpField: OrgFeature = new OrgFeature();
|
||||
|
||||
@AsSerializable(OrgFeature)
|
||||
notesField: OrgFeature = new OrgFeature();
|
||||
}
|
||||
|
||||
export class AccountProvisioning extends Storable {
|
||||
|
|
Loading…
Reference in New Issue