From b2d29b28b03a5b1ee71781f237121f269bf345de Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 14 Nov 2023 11:44:55 +0100 Subject: [PATCH 1/8] yarn add tiptap --- package.json | 6 + yarn.lock | 457 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 462 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 616963604..247533fa2 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,11 @@ "@reach/slider": "^0.17.0", "@sentry/browser": "7.66.0", "@stimulus/polyfills": "^2.0.0", + "@tiptap/core": "^2.1.12", + "@tiptap/extension-mention": "^2.1.12", + "@tiptap/pm": "^2.1.12", + "@tiptap/starter-kit": "^2.1.12", + "@tiptap/suggestion": "^2.1.12", "@tmcw/togeojson": "^5.6.0", "chartkick": "^5.0.1", "core-js": "^3.31.0", @@ -44,6 +49,7 @@ "stimulus-use": "^0.52.0", "terser": "^5.18.2", "tiny-invariant": "^1.3.1", + "tippy.js": "^6.3.7", "trix": "^1.2.3", "turbo-polyfills": "^0.5.0", "use-debounce": "^9.0.4", diff --git a/yarn.lock b/yarn.lock index 2a00dc5dd..7459b9550 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1776,7 +1776,7 @@ picocolors "^1.0.0" tslib "^2.6.0" -"@popperjs/core@^2.11.8": +"@popperjs/core@^2.11.8", "@popperjs/core@^2.9.0": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== @@ -2182,6 +2182,37 @@ tiny-warning "^1.0.3" tslib "^2.3.0" +"@remirror/core-constants@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a" + integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ== + +"@remirror/core-helpers@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@remirror/core-helpers/-/core-helpers-3.0.0.tgz#3a35c2346bc23ebc3cee585b7840b5567755c5f1" + integrity sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A== + dependencies: + "@remirror/core-constants" "^2.0.2" + "@remirror/types" "^1.0.1" + "@types/object.omit" "^3.0.0" + "@types/object.pick" "^1.3.2" + "@types/throttle-debounce" "^2.1.0" + case-anything "^2.1.13" + dash-get "^1.0.2" + deepmerge "^4.3.1" + fast-deep-equal "^3.1.3" + make-error "^1.3.6" + object.omit "^3.0.0" + object.pick "^1.3.0" + throttle-debounce "^3.0.1" + +"@remirror/types@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@remirror/types/-/types-1.0.1.tgz#768502497a0fbbc23338a1586b893f729310cf70" + integrity sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA== + dependencies: + type-fest "^2.19.0" + "@sentry-internal/tracing@7.66.0": version "7.66.0" resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.66.0.tgz#45ea607917d55a5bcaa3229341387ff6ed9b3a2b" @@ -2250,6 +2281,160 @@ eventlistener-polyfill "^1.0.5" mutation-observer-inner-html-shim "^1.0.0" +"@tiptap/core@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.12.tgz#904fdf147e91b5e60561c76e7563c1b5a32f54ab" + integrity sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ== + +"@tiptap/extension-blockquote@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz#97b43419606acf9bfd93b9f482a1827dcac8c3e9" + integrity sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg== + +"@tiptap/extension-bold@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz#5dbf41105fc0fbde8adbff629312187fbebc39b0" + integrity sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg== + +"@tiptap/extension-bullet-list@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz#7c905a577ce30ef2cb335870a23f9d24fd26f6aa" + integrity sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ== + +"@tiptap/extension-code-block@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.1.12.tgz#20416baef1b5fc839490a8416e97fdcbb5fdf918" + integrity sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA== + +"@tiptap/extension-code@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.1.12.tgz#86d2eb5f63725af472c5fd858e5a9c7ccae06ef3" + integrity sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw== + +"@tiptap/extension-document@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.12.tgz#e19e4716dfad60cbeb6abaf2f362fed759963529" + integrity sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw== + +"@tiptap/extension-dropcursor@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz#9da0c275291c9d47497d3db41b4d70d96366b4ff" + integrity sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A== + +"@tiptap/extension-gapcursor@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz#63844c3abd1a38af915839cf0c097b6d2e5a86fe" + integrity sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ== + +"@tiptap/extension-hard-break@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.1.12.tgz#54d0c9996e1173594852394975a9356eec98bc9a" + integrity sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw== + +"@tiptap/extension-heading@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz#05ae4684d6f29ae611495ab114038e14a5d1dff6" + integrity sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w== + +"@tiptap/extension-history@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.12.tgz#03bcb9422e8ea2b82dc45207d1a1b0bc0241b055" + integrity sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg== + +"@tiptap/extension-horizontal-rule@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.12.tgz#2191d4ff68ed39381d65971ad8e2aa1be43e6d6b" + integrity sha512-RRuoK4KxrXRrZNAjJW5rpaxjiP0FJIaqpi7nFbAua2oHXgsCsG8qbW2Y0WkbIoS8AJsvLZ3fNGsQ8gpdliuq3A== + +"@tiptap/extension-italic@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz#e99480eb77f8b4e5444fc236add8a831d5aa2343" + integrity sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A== + +"@tiptap/extension-list-item@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz#3eb28dc998490a98f14765783770b3cf6587d39e" + integrity sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg== + +"@tiptap/extension-mention@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.1.12.tgz#a395e7757b45630ec3047f14b0ba2dde8e1c9c93" + integrity sha512-Nc8wFlyPp+/48IpOFPk2O3hYsF465wizcM3aihMvZM96Ahic7dvv9yVptyOfoOwgpExl2FIn1QPjRDXF60VAUg== + +"@tiptap/extension-ordered-list@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz#f41a45bc66b4d19e379d4833f303f2e0cd6b9d60" + integrity sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA== + +"@tiptap/extension-paragraph@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz#922447b2aa1c7184787d351ceec593a74d24ed03" + integrity sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw== + +"@tiptap/extension-strike@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz#2b049aedf2985e9c9e3c3f1cc0b203a574c85bd8" + integrity sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g== + +"@tiptap/extension-text@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.12.tgz#466e3244bdd9b2db2304c0c9a1d51ce59f5327d0" + integrity sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg== + +"@tiptap/pm@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.12.tgz#88a4b19be0eabb13d42ddd540c19ba1bbe74b322" + integrity sha512-Q3MXXQABG4CZBesSp82yV84uhJh/W0Gag6KPm2HRWPimSFELM09Z9/5WK9RItAYE0aLhe4Krnyiczn9AAa1tQQ== + dependencies: + prosemirror-changeset "^2.2.0" + prosemirror-collab "^1.3.0" + prosemirror-commands "^1.3.1" + prosemirror-dropcursor "^1.5.0" + prosemirror-gapcursor "^1.3.1" + prosemirror-history "^1.3.0" + prosemirror-inputrules "^1.2.0" + prosemirror-keymap "^1.2.0" + prosemirror-markdown "^1.10.1" + prosemirror-menu "^1.2.1" + prosemirror-model "^1.18.1" + prosemirror-schema-basic "^1.2.0" + prosemirror-schema-list "^1.2.2" + prosemirror-state "^1.4.1" + prosemirror-tables "^1.3.0" + prosemirror-trailing-node "^2.0.2" + prosemirror-transform "^1.7.0" + prosemirror-view "^1.28.2" + +"@tiptap/starter-kit@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.1.12.tgz#2bf28091ed08dc8f7b903ba92925e4ffe06257ea" + integrity sha512-+RoP1rWV7rSCit2+3wl2bjvSRiePRJE/7YNKbvH8Faz/+AMO23AFegHoUFynR7U0ouGgYDljGkkj35e0asbSDA== + dependencies: + "@tiptap/core" "^2.1.12" + "@tiptap/extension-blockquote" "^2.1.12" + "@tiptap/extension-bold" "^2.1.12" + "@tiptap/extension-bullet-list" "^2.1.12" + "@tiptap/extension-code" "^2.1.12" + "@tiptap/extension-code-block" "^2.1.12" + "@tiptap/extension-document" "^2.1.12" + "@tiptap/extension-dropcursor" "^2.1.12" + "@tiptap/extension-gapcursor" "^2.1.12" + "@tiptap/extension-hard-break" "^2.1.12" + "@tiptap/extension-heading" "^2.1.12" + "@tiptap/extension-history" "^2.1.12" + "@tiptap/extension-horizontal-rule" "^2.1.12" + "@tiptap/extension-italic" "^2.1.12" + "@tiptap/extension-list-item" "^2.1.12" + "@tiptap/extension-ordered-list" "^2.1.12" + "@tiptap/extension-paragraph" "^2.1.12" + "@tiptap/extension-strike" "^2.1.12" + "@tiptap/extension-text" "^2.1.12" + +"@tiptap/suggestion@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.12.tgz#a13782d1e625ec03b3f61b6839ecc95b6b685d3f" + integrity sha512-rhlLWwVkOodBGRMK0mAmE34l2a+BqM2Y7q1ViuQRBhs/6sZ8d83O4hARHKVwqT5stY4i1l7d7PoemV3uAGI6+g== + "@tmcw/togeojson@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@tmcw/togeojson/-/togeojson-5.6.0.tgz#a6c96971acdf36eef73a1c398cf19a565eb02831" @@ -2344,6 +2529,16 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/object.omit@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.1.tgz#1b9de058cf94344b9284308a41b17e3a356ed18e" + integrity sha512-24XD34UeRWw505TsMNBrQ4bES2s8IxiFC59mmNUFhTz9IX2hAtA7gQ8wVww1i17QmhBYILg5iqYP2y7aqA3pwQ== + +"@types/object.pick@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.2.tgz#9eb28118240ad8f658b9c9c6caf35359fdb37150" + integrity sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg== + "@types/prop-types@*": version "15.7.4" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" @@ -2406,6 +2601,11 @@ dependencies: "@types/estree" "*" +"@types/throttle-debounce@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" + integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== + "@typescript-eslint/eslint-plugin@^6.5.0": version "6.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz#5cee33edf0d45d5ec773e3b3111206b098ac8599" @@ -2964,6 +3164,11 @@ caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz#d2e8fdec6116ffa36284ca2c33ef6d53612fe1c8" integrity sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q== +case-anything@^2.1.13: + version "2.1.13" + resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9" + integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -3141,6 +3346,11 @@ core-util-is@1.0.2: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +crelt@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -3167,6 +3377,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== +dash-get@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dash-get/-/dash-get-1.0.2.tgz#4c9e9ad5ef04c4bf9d3c9a451f6f7997298dcc7c" + integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -3249,6 +3464,11 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + default-browser-id@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" @@ -3418,6 +3638,11 @@ entities@~2.1.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -4576,6 +4801,13 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== +is-extendable@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -4974,6 +5206,13 @@ linkify-it@^3.0.1: dependencies: uc.micro "^1.0.1" +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + local-pkg@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" @@ -5050,6 +5289,11 @@ magic-string@^0.30.1: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -5100,6 +5344,17 @@ markdown-it@^12.2.0: mdurl "^1.0.1" uc.micro "^1.0.5" +markdown-it@^13.0.1: + version "13.0.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" + integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w== + dependencies: + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + marked@^0.3.6: version "0.3.19" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" @@ -5409,6 +5664,20 @@ object.hasown@^1.1.2: define-properties "^1.1.4" es-abstract "^1.20.4" +object.omit@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af" + integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ== + dependencies: + is-extendable "^1.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + object.values@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" @@ -5474,6 +5743,11 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +orderedmap@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" + integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g== + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5715,6 +5989,160 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +prosemirror-changeset@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz#dae94b63aec618fac7bb9061648e6e2a79988383" + integrity sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ== + dependencies: + prosemirror-transform "^1.0.0" + +prosemirror-collab@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz#0e8c91e76e009b53457eb3b3051fb68dad029a33" + integrity sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ== + dependencies: + prosemirror-state "^1.0.0" + +prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz#e94aeea52286f658cd984270de9b4c3fff580852" + integrity sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.0.0" + +prosemirror-dropcursor@^1.5.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz#49b9fb2f583e0d0f4021ff87db825faa2be2832d" + integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw== + dependencies: + prosemirror-state "^1.0.0" + prosemirror-transform "^1.1.0" + prosemirror-view "^1.1.0" + +prosemirror-gapcursor@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz#5fa336b83789c6199a7341c9493587e249215cb4" + integrity sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ== + dependencies: + prosemirror-keymap "^1.0.0" + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-view "^1.0.0" + +prosemirror-history@^1.0.0, prosemirror-history@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.3.2.tgz#ce6ad7ab9db83e761aee716f3040d74738311b15" + integrity sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g== + dependencies: + prosemirror-state "^1.2.2" + prosemirror-transform "^1.0.0" + prosemirror-view "^1.31.0" + rope-sequence "^1.3.0" + +prosemirror-inputrules@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.2.1.tgz#8faf3d78c16150aedac71d326a3e3947417ce557" + integrity sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ== + dependencies: + prosemirror-state "^1.0.0" + prosemirror-transform "^1.0.0" + +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e" + integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ== + dependencies: + prosemirror-state "^1.0.0" + w3c-keyname "^2.2.0" + +prosemirror-markdown@^1.10.1: + version "1.11.2" + resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.11.2.tgz#f6e529e669d11fa3eec859e93c0d2c91788d6c80" + integrity sha512-Eu5g4WPiCdqDTGhdSsG9N6ZjACQRYrsAkrF9KYfdMaCmjIApH75aVncsWYOJvEk2i1B3i8jZppv3J/tnuHGiUQ== + dependencies: + markdown-it "^13.0.1" + prosemirror-model "^1.0.0" + +prosemirror-menu@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz#3cfdc7c06d10f9fbd1bce29082c498bd11a0a79a" + integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA== + dependencies: + crelt "^1.0.0" + prosemirror-commands "^1.0.0" + prosemirror-history "^1.0.0" + prosemirror-state "^1.0.0" + +prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1: + version "1.19.3" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.3.tgz#f0d55285487fefd962d0ac695f716f4ec6705006" + integrity sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ== + dependencies: + orderedmap "^2.0.0" + +prosemirror-schema-basic@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7" + integrity sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw== + dependencies: + prosemirror-model "^1.19.0" + +prosemirror-schema-list@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz#05374702cf35a3ba5e7ec31079e355a488d52519" + integrity sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.7.3" + +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080" + integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-transform "^1.0.0" + prosemirror-view "^1.27.0" + +prosemirror-tables@^1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.3.4.tgz#0b7cc16d49f90c5b834c9f29291c545478ce9ab0" + integrity sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw== + dependencies: + prosemirror-keymap "^1.1.2" + prosemirror-model "^1.8.1" + prosemirror-state "^1.3.1" + prosemirror-transform "^1.2.1" + prosemirror-view "^1.13.3" + +prosemirror-trailing-node@^2.0.2: + version "2.0.7" + resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz#ba782a7929f18bcae650b1c7082a2d10443eab19" + integrity sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q== + dependencies: + "@remirror/core-constants" "^2.0.2" + "@remirror/core-helpers" "^3.0.0" + escape-string-regexp "^4.0.0" + +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz#a47c64a3c373c1bd0ff46e95be3210c8dda0cd11" + integrity sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A== + dependencies: + prosemirror-model "^1.0.0" + +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0: + version "1.32.1" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.1.tgz#bcd0877f1673ffe5f94c1e966b6fbdadcd2d5bbf" + integrity sha512-9SnB4HBgRczzTyIMZLPE1iszegL04hNfUyS8uPtP1RPxNM2NTCiIs8KwNsJU4nbZO9rxJTwVTv7Jm3zU4CR78A== + dependencies: + prosemirror-model "^1.16.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.1.0" + protocol-buffers-schema@^3.3.1: version "3.6.0" resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" @@ -6051,6 +6479,11 @@ rollup@^3.21.0: optionalDependencies: fsevents "~2.3.2" +rope-sequence@^1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425" + integrity sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ== + rrweb-cssom@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" @@ -6460,6 +6893,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" + integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== + tiny-invariant@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -6490,6 +6928,13 @@ tinyspy@^2.1.1: resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.1.1.tgz#9e6371b00c259e5c5b301917ca18c01d40ae558c" integrity sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w== +tippy.js@^6.3.7: + version "6.3.7" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" + integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== + dependencies: + "@popperjs/core" "^2.9.0" + titleize@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" @@ -6623,6 +7068,11 @@ type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -6917,6 +7367,11 @@ vt-pbf@^3.1.1: "@mapbox/vector-tile" "^1.3.1" pbf "^3.2.1" +w3c-keyname@^2.2.0: + version "2.2.8" + resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== + w3c-xmlserializer@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" From f6b10731d3f0c770c35d768887ce53ec044f961e Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 14 Nov 2023 12:38:08 +0100 Subject: [PATCH 2/8] add json_body to attestation template --- ...114113317_add_json_body_column_to_attestation_template.rb | 5 +++++ db/schema.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20231114113317_add_json_body_column_to_attestation_template.rb diff --git a/db/migrate/20231114113317_add_json_body_column_to_attestation_template.rb b/db/migrate/20231114113317_add_json_body_column_to_attestation_template.rb new file mode 100644 index 000000000..4277ac024 --- /dev/null +++ b/db/migrate/20231114113317_add_json_body_column_to_attestation_template.rb @@ -0,0 +1,5 @@ +class AddJSONBodyColumnToAttestationTemplate < ActiveRecord::Migration[7.0] + def change + add_column :attestation_templates, :json_body, :jsonb + end +end diff --git a/db/schema.rb b/db/schema.rb index 9c4e8f408..639538ca5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_11_10_135533) do +ActiveRecord::Schema[7.0].define(version: 2023_11_14_113317) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -145,6 +145,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_11_10_135533) do t.text "body" t.datetime "created_at", precision: 6, null: false t.text "footer" + t.jsonb "json_body" t.integer "procedure_id" t.text "title" t.datetime "updated_at", precision: 6, null: false From f6001c8eae4673b55c75a3efa34fc5bc89b13fa8 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 14 Nov 2023 17:46:52 +0100 Subject: [PATCH 3/8] attestation_template v2: show --- app/assets/config/manifest.js | 1 + app/assets/fonts/marianne-bold.ttf | Bin 0 -> 84524 bytes app/assets/fonts/marianne-regular.ttf | Bin 0 -> 85756 bytes app/assets/fonts/marianne-thin.ttf | Bin 0 -> 83440 bytes app/assets/images/centered_marianne.svg | 1 + app/assets/images/liberte2.svg | 71 +++++++++++ app/assets/stylesheets/attestation.scss | 112 ++++++++++++++++++ .../attestation_template_v2s_controller.rb | 17 +++ .../attestation_template_v2s/show.html.haml | 30 +++++ app/views/layouts/attestation.html.haml | 6 + config/routes.rb | 3 + 11 files changed, 241 insertions(+) create mode 100644 app/assets/fonts/marianne-bold.ttf create mode 100644 app/assets/fonts/marianne-regular.ttf create mode 100644 app/assets/fonts/marianne-thin.ttf create mode 100644 app/assets/images/centered_marianne.svg create mode 100644 app/assets/images/liberte2.svg create mode 100644 app/assets/stylesheets/attestation.scss create mode 100644 app/controllers/administrateurs/attestation_template_v2s_controller.rb create mode 100644 app/views/administrateurs/attestation_template_v2s/show.html.haml create mode 100644 app/views/layouts/attestation.html.haml diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index f9491d53c..d2795649b 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -4,3 +4,4 @@ //= link administrate/application.css //= link administrate/application.js //= link manager.css +//= link attestation.css diff --git a/app/assets/fonts/marianne-bold.ttf b/app/assets/fonts/marianne-bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ffa9711ddf5a608f27197c3611f7e57b46a98a79 GIT binary patch literal 84524 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'tVuLeyB+Y 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.&N+t7HbDnO4Rn6 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 \ No newline at end of file diff --git a/app/assets/images/liberte2.svg b/app/assets/images/liberte2.svg new file mode 100644 index 000000000..8327e2b24 --- /dev/null +++ b/app/assets/images/liberte2.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/stylesheets/attestation.scss b/app/assets/stylesheets/attestation.scss new file mode 100644 index 000000000..2ffdd986c --- /dev/null +++ b/app/assets/stylesheets/attestation.scss @@ -0,0 +1,112 @@ +@font-face { + font-family: "Marianne"; + src: url("marianne-regular.ttf"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Marianne"; + src: url("marianne-bold.ttf"); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: "Marianne"; + src: url("marianne-thin.ttf"); + font-weight: 100; // weasy print n"accepte pas lighter + font-style: normal; +} + +@page { + size: A4; + margin: 17mm 17mm 34mm; // add margin at the bottom to add address + + @bottom-center { + font-size: 8pt; + content: counter(page) " / " counter(pages); + margin-top: 17mm; + } + + @bottom-left { + content: element(footer); + } +} + +#attestation { + @media screen { + max-width: 21cm; + padding: 17mm; + margin: 0 auto; + } + + font-family: Marianne; + + .header { + display: flex; + justify-content: space-between; + } + + .right { + text-align: right; + } + + .bloc-marque { + margin-bottom: 14mm; + } + + .marianne { + height: 4.25mm; + margin-bottom: 1mm; + } + + .intitule { + font-size: 12pt; + font-weight: bold; + margin: 0 0 1mm; + } + + .devise { + height: 8.5mm; + margin: 0; + } + + .issuer { + font-size: 10pt; + margin: 0 0 14mm; // pas sur, pour mettre une marge si issuer plus bas que date + } + + .direction { + font-size: 12pt; + font-weight: bold; + margin: 0 0 23.3mm; + } + + .date { + font-size: 8pt; + margin: 0 0 14mm; + } + + .title { + font-size: 12pt; + font-weight: bold; + text-align: center; + margin: 0 0 12.6mm; + } + + .main { + font-size: 10pt; + } + + .notice { + font-size: 10pt; + font-style: italic; + } + + .footer { + position: running(footer); + font-size: 7pt; + font-weight: 100; + } +} diff --git a/app/controllers/administrateurs/attestation_template_v2s_controller.rb b/app/controllers/administrateurs/attestation_template_v2s_controller.rb new file mode 100644 index 000000000..747da384a --- /dev/null +++ b/app/controllers/administrateurs/attestation_template_v2s_controller.rb @@ -0,0 +1,17 @@ +module Administrateurs + class AttestationTemplateV2sController < AdministrateurController + before_action :retrieve_procedure, :retrieve_attestation_template + + def show + json_body = @attestation_template.json_body&.deep_symbolize_keys + @body = TiptapService.to_html(json_body, {}) + + render layout: 'attestation' + end + + private + + def retrieve_attestation_template + @attestation_template = @procedure.attestation_template || @procedure.build_attestation_template + end +end diff --git a/app/views/administrateurs/attestation_template_v2s/show.html.haml b/app/views/administrateurs/attestation_template_v2s/show.html.haml new file mode 100644 index 000000000..44bf6ba0c --- /dev/null +++ b/app/views/administrateurs/attestation_template_v2s/show.html.haml @@ -0,0 +1,30 @@ += image_tag('centered_marianne.svg', alt: '', class: 'marianne') +.header + .left + .bloc-marque + %p.intitule + PRÉFET
+ DU VAL-
+ DE-MARNE + = image_tag('liberte2.svg', alt: '', class: 'devise') + + %p.issuer + Service Hébergement et Accès au Logement
+ Bureau de l'Accès au Logement + + .right + %p.direction + Direction Régionale et Interdépartementale
+ de l'Hébergement et du Logement
+ DRIHL Val-de-Marne + + %p.date Créteil, le 20 mars 2023 + +%h1.title ATTESTATION + +.main + = sanitize(@body) + +%p.footer + 12/14 rue des Archives 94000 Créteil
+ www.drihl.ile-de-france.developpement-durable.gouv.fr diff --git a/app/views/layouts/attestation.html.haml b/app/views/layouts/attestation.html.haml new file mode 100644 index 000000000..54c440fa1 --- /dev/null +++ b/app/views/layouts/attestation.html.haml @@ -0,0 +1,6 @@ +%html + %head + = stylesheet_link_tag 'attestation', media: 'all' + + %body#attestation + = yield diff --git a/config/routes.rb b/config/routes.rb index 343ef22ce..08004cbe5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -625,6 +625,9 @@ Rails.application.routes.draw do resource :chorus, only: [:edit, :update] do get 'add_champ_engagement_juridique' end + + resource :attestation_template_v2, only: [:show] + resource :dossier_submitted_message, only: [:edit, :update, :create] # ADDED TO ACCESS IT FROM THE IFRAME get 'attestation_template/preview' => 'attestation_templates#preview' From af53a9b9dbde867a84bf927d7a21e0efc530d09a Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 15 Nov 2023 09:53:07 +0100 Subject: [PATCH 4/8] attestation_template v2: edit / update --- .../attestation_template_2_edit.scss | 16 ++ .../attestation_template_v2s_controller.rb | 13 ++ .../controllers/attestation_controller.ts | 175 ++++++++++++++++++ .../attestation_template_v2s/edit.html.haml | 10 + config/routes.rb | 2 +- 5 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 app/assets/stylesheets/attestation_template_2_edit.scss create mode 100644 app/javascript/controllers/attestation_controller.ts create mode 100644 app/views/administrateurs/attestation_template_v2s/edit.html.haml diff --git a/app/assets/stylesheets/attestation_template_2_edit.scss b/app/assets/stylesheets/attestation_template_2_edit.scss new file mode 100644 index 000000000..2ac705fe1 --- /dev/null +++ b/app/assets/stylesheets/attestation_template_2_edit.scss @@ -0,0 +1,16 @@ +#attestation-edit { + .mention { + border: 1px solid var(--text-default-grey); + padding: 8px; + } + + .selected { + border: 1px solid #000000; + } + + .tiptap { + padding: 8px; + + min-height: 300px; + } +} diff --git a/app/controllers/administrateurs/attestation_template_v2s_controller.rb b/app/controllers/administrateurs/attestation_template_v2s_controller.rb index 747da384a..6783ba8f8 100644 --- a/app/controllers/administrateurs/attestation_template_v2s_controller.rb +++ b/app/controllers/administrateurs/attestation_template_v2s_controller.rb @@ -9,9 +9,22 @@ module Administrateurs render layout: 'attestation' end + def edit + end + + def update + @attestation_template + .update(json_body: editor_params) + end + private def retrieve_attestation_template @attestation_template = @procedure.attestation_template || @procedure.build_attestation_template end + + def editor_params + params.permit(content: [:type, content: [:type, :text, attrs: [:id, :label]]]) + end + end end diff --git a/app/javascript/controllers/attestation_controller.ts b/app/javascript/controllers/attestation_controller.ts new file mode 100644 index 000000000..5731105a1 --- /dev/null +++ b/app/javascript/controllers/attestation_controller.ts @@ -0,0 +1,175 @@ +import { ApplicationController } from './application_controller'; +import { Editor } from '@tiptap/core'; +import StarterKit from '@tiptap/starter-kit'; +import Mention from '@tiptap/extension-mention'; +import tippy from 'tippy.js'; +import { httpRequest } from '@utils'; + +export class AttestationController extends ApplicationController { + static values = { + tags: Array, + url: String + }; + + static targets = ['editor', 'bold']; + + declare readonly tagsValue: string[]; + declare readonly urlValue: string; + declare editor: Editor; + declare editorTarget: HTMLElement; + declare boldTarget: HTMLButtonElement; + + connect() { + const conf = { + element: this.editorTarget, + editorProps: { + attributes: { + class: 'fr-input' + } + }, + extensions: [ + StarterKit, + Mention.configure({ + HTMLAttributes: { + class: 'mention' + }, + suggestion: { + items: ({ query }) => { + return this.tagsValue + .filter((item) => + item.toLowerCase().startsWith(query.toLowerCase()) + ) + .slice(0, 5); + }, + + render: () => { + let popup: { setProps: Function, hide: Function, destroy: Function }[]; + let div: HTMLElement; + let selectedIndex = 0; + let items: string[]; + let command: (props: object) => void; + + const makeList = () => { + return items + .map((item, i) => { + if (i == selectedIndex) { + return `

  • ${item}
  • `; + } else { + return `
  • ${item}
  • `; + } + }) + .join(''); + }; + + return { + onStart: (props) => { + items = props.items; + command = props.command; + + div = document.createElement('UL'); + div.innerHTML = makeList(); + + if (!props.clientRect) { + return; + } + + let body: Element = document.body; + + popup = tippy(body, { + getReferenceClientRect: props.clientRect, + appendTo: () => this.element, + content: div, + showOnCreate: true, + interactive: true, + trigger: 'manual', + placement: 'bottom-start' + }); + }, + + onUpdate(props) { + command = props.command; + items = props.items; + + div.innerHTML = makeList(); + + if (!props.clientRect) { + return; + } + + popup[0].setProps({ + getReferenceClientRect: props.clientRect + }); + }, + + onKeyDown(props) { + if (props.event.key === 'Escape') { + popup[0].hide(); + + return true; + } + + if (props.event.key === 'ArrowDown') { + selectedIndex = (selectedIndex + 1) % items.length; + div.innerHTML = makeList(); + return true; + } + + if (props.event.key === 'ArrowUp') { + selectedIndex = + (selectedIndex + items.length - 1) % items.length; + div.innerHTML = makeList(); + return true; + } + + if (props.event.key === 'Enter') { + const item = items[selectedIndex]; + + if (item) { + command({ id: item }); + } + return true; + } + + return false; + }, + + onExit() { + popup[0].destroy(); + div.remove(); + } + }; + } + } + }) + ], + content: + '

    La situation de M. dont la demande de logement social

    ' + }; + + this.editor = new Editor(conf); + + this.editor.on('transaction', () => { + this.boldTarget.disabled = !this.editor + .can() + .chain() + .focus() + .toggleBold() + .run(); + + if (this.editor.isActive('bold')) { + this.boldTarget.classList.add('fr-btn--secondary'); + } else { + this.boldTarget.classList.remove('fr-btn--secondary'); + } + }); + } + + bold() { + this.editor.chain().focus().toggleBold().run(); + } + + send() { + const json = this.editor.getJSON(); + httpRequest(this.urlValue, { method: 'put', json }).json(); + } +} diff --git a/app/views/administrateurs/attestation_template_v2s/edit.html.haml b/app/views/administrateurs/attestation_template_v2s/edit.html.haml new file mode 100644 index 000000000..592c89661 --- /dev/null +++ b/app/views/administrateurs/attestation_template_v2s/edit.html.haml @@ -0,0 +1,10 @@ +#attestation-edit.fr-container.mt-2{ + data: { + controller: 'attestation', + attestation_tags_value: @attestation_template.tags.map { _1[:libelle] }, + attestation_url_value: admin_procedure_attestation_template_v2_path(@procedure)} } + + %button.fr-btn{ data: { action: 'click->attestation#bold', attestation_target: 'bold' } } Gras + .editor.mt-2{ data: { attestation_target: 'editor' } } + + %button.fr-btn.mt-2{ data: { action: 'click->attestation#send' } } Envoyer diff --git a/config/routes.rb b/config/routes.rb index 08004cbe5..0399382cc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -626,7 +626,7 @@ Rails.application.routes.draw do get 'add_champ_engagement_juridique' end - resource :attestation_template_v2, only: [:show] + resource :attestation_template_v2, only: [:show, :edit, :update] resource :dossier_submitted_message, only: [:edit, :update, :create] # ADDED TO ACCESS IT FROM THE IFRAME From e4a48f127043dbd7c5ff8a5d86462b271e3e3a78 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 15 Nov 2023 09:55:10 +0100 Subject: [PATCH 5/8] tiptap service handle empty attestation --- app/services/tiptap_service.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/tiptap_service.rb b/app/services/tiptap_service.rb index 9514dc11c..47d2e6045 100644 --- a/app/services/tiptap_service.rb +++ b/app/services/tiptap_service.rb @@ -1,6 +1,8 @@ class TiptapService class << self def to_html(node, tags) + return '' if node.nil? + children(node[:content], tags) end From 791954af1bbb02346856705521b4c8045b321dcb Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 15 Nov 2023 09:55:33 +0100 Subject: [PATCH 6/8] attestation_template v2: add weasyprint integration --- .../attestation_template_v2s_controller.rb | 16 +++++++++++++++- config/env.example.optional | 3 +++ config/initializers/02_urls.rb | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/controllers/administrateurs/attestation_template_v2s_controller.rb b/app/controllers/administrateurs/attestation_template_v2s_controller.rb index 6783ba8f8..1902221b6 100644 --- a/app/controllers/administrateurs/attestation_template_v2s_controller.rb +++ b/app/controllers/administrateurs/attestation_template_v2s_controller.rb @@ -6,7 +6,21 @@ module Administrateurs json_body = @attestation_template.json_body&.deep_symbolize_keys @body = TiptapService.to_html(json_body, {}) - render layout: 'attestation' + respond_to do |format| + format.html do + render layout: 'attestation' + end + + format.pdf do + html = render_to_string('/administrateurs/attestation_template_v2s/show', layout: 'attestation', formats: [:html]) + + result = Typhoeus.post(WEASYPRINT_URL, + headers: { 'content-type': 'application/json' }, + body: { html: html }.to_json) + + send_data(result.body, filename: 'attestation.pdf', type: 'application/pdf', disposition: 'inline') + end + end end def edit diff --git a/config/env.example.optional b/config/env.example.optional index be5510643..65fcedbd8 100644 --- a/config/env.example.optional +++ b/config/env.example.optional @@ -250,3 +250,6 @@ ADMINS_GROUP_ENABLED="disabled" # Do you want to isolate bulk email (notifications) from transactional ones (ex: reset password). # BULK_EMAIL_QUEUE will host bulk email (notifications) BULK_EMAIL_QUEUE="low_priority" + +# work in progress about attestation_v2 +WEASYPRINT_URL="http://10.33.23.204:5000/pdf" diff --git a/config/initializers/02_urls.rb b/config/initializers/02_urls.rb index dc8c105b7..847c1f427 100644 --- a/config/initializers/02_urls.rb +++ b/config/initializers/02_urls.rb @@ -14,6 +14,7 @@ SENDINBLUE_API_V3_URL = ENV.fetch("SENDINBLUE_API_V3_URL", "https://api.sendinbl UNIVERSIGN_API_URL = ENV.fetch("UNIVERSIGN_API_URL", "https://ws.universign.eu/tsa/post/") CERTIGNA_API_URL = ENV.fetch("CERTIGNA_API_URL", "https://timestamp.dhimyotis.com/api/v1/") FEATURE_UPVOTE_URL = ENV.fetch("FEATURE_UPVOTE_URL", "https://demarches-simplifiees.featureupvote.com") +WEASYPRINT_URL = ENV.fetch("WEASYPRINT_URL", nil) # Internal URLs FOG_OPENSTACK_URL = ENV.fetch("FOG_OPENSTACK_URL", "https://auth.cloud.ovh.net") From 9fc6c3b641f06507b53fec62f9477ea250b00190 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 15 Nov 2023 10:33:48 +0100 Subject: [PATCH 7/8] attestation_template v2 : add feature flag --- .../administrateurs/attestation_template_v2s_controller.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/administrateurs/attestation_template_v2s_controller.rb b/app/controllers/administrateurs/attestation_template_v2s_controller.rb index 1902221b6..685ddde17 100644 --- a/app/controllers/administrateurs/attestation_template_v2s_controller.rb +++ b/app/controllers/administrateurs/attestation_template_v2s_controller.rb @@ -1,6 +1,6 @@ module Administrateurs class AttestationTemplateV2sController < AdministrateurController - before_action :retrieve_procedure, :retrieve_attestation_template + before_action :retrieve_procedure, :retrieve_attestation_template, :ensure_feature_active def show json_body = @attestation_template.json_body&.deep_symbolize_keys @@ -33,6 +33,10 @@ module Administrateurs private + def ensure_feature_active + redirect_to root_path if !@procedure.feature_enabled?(:attestation_v2) + end + def retrieve_attestation_template @attestation_template = @procedure.attestation_template || @procedure.build_attestation_template end From 200cdbd4ef8c4e8c3dd0960674a118f517c7a668 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 15 Nov 2023 15:32:38 +0100 Subject: [PATCH 8/8] fix types --- .../controllers/attestation_controller.ts | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/app/javascript/controllers/attestation_controller.ts b/app/javascript/controllers/attestation_controller.ts index 5731105a1..29d65cbad 100644 --- a/app/javascript/controllers/attestation_controller.ts +++ b/app/javascript/controllers/attestation_controller.ts @@ -2,7 +2,7 @@ import { ApplicationController } from './application_controller'; import { Editor } from '@tiptap/core'; import StarterKit from '@tiptap/starter-kit'; import Mention from '@tiptap/extension-mention'; -import tippy from 'tippy.js'; +import tippy, { type Instance } from 'tippy.js'; import { httpRequest } from '@utils'; export class AttestationController extends ApplicationController { @@ -43,7 +43,7 @@ export class AttestationController extends ApplicationController { }, render: () => { - let popup: { setProps: Function, hide: Function, destroy: Function }[]; + let popup: Instance; let div: HTMLElement; let selectedIndex = 0; let items: string[]; @@ -73,10 +73,14 @@ export class AttestationController extends ApplicationController { return; } - let body: Element = document.body; - - popup = tippy(body, { - getReferenceClientRect: props.clientRect, + popup = tippy(document.body, { + getReferenceClientRect: () => { + const domrect = props.clientRect?.(); + if (!domrect) { + throw new Error('No client rect'); + } + return domrect; + }, appendTo: () => this.element, content: div, showOnCreate: true, @@ -96,14 +100,20 @@ export class AttestationController extends ApplicationController { return; } - popup[0].setProps({ - getReferenceClientRect: props.clientRect + popup.setProps({ + getReferenceClientRect: () => { + const domrect = props.clientRect?.(); + if (!domrect) { + throw new Error('No client rect'); + } + return domrect; + } }); }, onKeyDown(props) { if (props.event.key === 'Escape') { - popup[0].hide(); + popup.hide(); return true; } @@ -134,7 +144,7 @@ export class AttestationController extends ApplicationController { }, onExit() { - popup[0].destroy(); + popup.destroy(); div.remove(); } };