From 33a347920e6599a36e4a9f65f57be6dc4054353e Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 29 Apr 2025 12:19:59 +0200 Subject: [PATCH 1/2] fix: adjust to workflowengine changes and register web component Signed-off-by: Arthur Schiwon --- package-lock.json | 7 +++++++ package.json | 1 + src/main.js | 14 +++++++++++++- src/views/FlowNotify.vue | 18 ++++++++++-------- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index fdba975..1b68276 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.10.0", "license": "AGPL-3.0-or-later", "dependencies": { + "@vue/web-component-wrapper": "^1.3.0", "vue": "^2.6.14" }, "devDependencies": { @@ -3150,6 +3151,12 @@ } } }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "license": "MIT" + }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", diff --git a/package.json b/package.json index 52c5df1..5dbf614 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ }, "homepage": "https://github.com/nextcloud/flow_notifications#readme", "dependencies": { + "@vue/web-component-wrapper": "^1.3.0", "vue": "^2.6.14" }, "browserslist": [ diff --git a/src/main.js b/src/main.js index ab3e90c..2689cc2 100644 --- a/src/main.js +++ b/src/main.js @@ -4,11 +4,23 @@ * @license AGPL-3.0-or-later */ +import wrap from '@vue/web-component-wrapper' +import Vue from 'vue' + import FlowNotify from './views/FlowNotify.vue' +const FlowNotifyComponent = wrap(Vue, FlowNotify) +const customElementId = 'oca-flow_notifications-operation-flow_notify' +window.customElements.define(customElementId, FlowNotifyComponent) + +// In Vue 2, wrap doesn't support disabling shadow :( +// Disable with a hack +Object.defineProperty(FlowNotifyComponent.prototype, 'attachShadow', { value() { return this } }) +Object.defineProperty(FlowNotifyComponent.prototype, 'shadowRoot', { get() { return this } }) + window.OCA.WorkflowEngine.registerOperator({ id: 'OCA\\FlowNotifications\\Flow\\Operation', color: '#f1d340', operation: '', - options: FlowNotify, + element: customElementId, }) diff --git a/src/views/FlowNotify.vue b/src/views/FlowNotify.vue index 35c471f..03a2f7f 100644 --- a/src/views/FlowNotify.vue +++ b/src/views/FlowNotify.vue @@ -1,9 +1,9 @@ @@ -14,11 +14,12 @@ export default { name: 'FlowNotify', components: {}, props: { - value: { - default: JSON.stringify({ inscription: '' }), + modelValue: { + default: '', type: String, }, }, + emits: ['update:model-value'], data() { return { inscription: '', @@ -27,17 +28,18 @@ export default { }, computed: { currentInscription() { - if (!this.value) { + if (!this.modelValue) { return '' } - return JSON.parse(this.value).inscription + return JSON.parse(this.modelValue).inscription }, }, methods: { emitInput(value) { - if (value !== null) { - this.$emit('input', JSON.stringify({ inscription: value.target.value })) + if (value === null) { + return } + this.$emit('update:model-value', JSON.stringify({ inscription: value.target.value })) }, }, } From b25c4dd2afc74de57f0ab9569f0872f42853e717 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Wed, 30 Apr 2025 16:49:35 +0200 Subject: [PATCH 2/2] fix: add backwards compat for NC <= 30.0.8 Signed-off-by: Arthur Schiwon --- package-lock.json | 253 +++++++++++++++------------------------ package.json | 1 + src/main.js | 20 ++-- src/views/FlowNotify.vue | 38 +++--- 4 files changed, 129 insertions(+), 183 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b68276..cf466f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "AGPL-3.0-or-later", "dependencies": { "@vue/web-component-wrapper": "^1.3.0", + "semver": "^7.7.1", "vue": "^2.6.14" }, "devDependencies": { @@ -99,6 +100,17 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/eslint-parser": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.8.tgz", @@ -119,6 +131,17 @@ "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", @@ -184,6 +207,17 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", @@ -209,6 +243,17 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", @@ -228,6 +273,17 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", @@ -1842,6 +1898,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", @@ -2415,19 +2482,6 @@ "eslint": ">=7.0.0" } }, - "node_modules/@nextcloud/eslint-plugin/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@nextcloud/stylelint-config": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@nextcloud/stylelint-config/-/stylelint-config-3.0.1.tgz", @@ -2945,20 +2999,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", @@ -3841,6 +3881,17 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", @@ -4892,20 +4943,6 @@ } } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", @@ -5663,20 +5700,6 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-config-standard": { "version": "17.1.0", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", @@ -5920,6 +5943,17 @@ "node": "*" } }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-jsdoc": { "version": "46.10.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.10.1.tgz", @@ -5959,20 +5993,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-n": { "version": "16.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", @@ -6046,20 +6066,6 @@ "node": "*" } }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-n/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -6132,20 +6138,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-vue/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -8053,20 +8045,6 @@ "semver": "^7.6.3" } }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -10748,14 +10726,15 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { @@ -11662,20 +11641,6 @@ "stylelint": ">=14.0.0" } }, - "node_modules/stylelint-config-recommended-vue/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/stylelint-scss": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.1.tgz", @@ -12203,20 +12168,6 @@ "node": ">=8" } }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-loader/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12697,20 +12648,6 @@ "node": ">=4.0" } }, - "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vue-hot-reload-api": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", diff --git a/package.json b/package.json index 5dbf614..d86d4a6 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "homepage": "https://github.com/nextcloud/flow_notifications#readme", "dependencies": { "@vue/web-component-wrapper": "^1.3.0", + "semver": "^7.7.1", "vue": "^2.6.14" }, "browserslist": [ diff --git a/src/main.js b/src/main.js index 2689cc2..ae89474 100644 --- a/src/main.js +++ b/src/main.js @@ -6,21 +6,27 @@ import wrap from '@vue/web-component-wrapper' import Vue from 'vue' +import semver from 'semver' import FlowNotify from './views/FlowNotify.vue' -const FlowNotifyComponent = wrap(Vue, FlowNotify) -const customElementId = 'oca-flow_notifications-operation-flow_notify' -window.customElements.define(customElementId, FlowNotifyComponent) +let customElementId +// we may only compare first three numbers of the version +if (semver.gt(window.OC.config.version.split('.', 3).join('.'), '30.0.8')) { + const FlowNotifyComponent = wrap(Vue, FlowNotify) + customElementId = 'oca-flow_notifications-operation-flow_notify' + window.customElements.define(customElementId, FlowNotifyComponent) -// In Vue 2, wrap doesn't support disabling shadow :( -// Disable with a hack -Object.defineProperty(FlowNotifyComponent.prototype, 'attachShadow', { value() { return this } }) -Object.defineProperty(FlowNotifyComponent.prototype, 'shadowRoot', { get() { return this } }) + // In Vue 2, wrap doesn't support disabling shadow :( + // Disable with a hack + Object.defineProperty(FlowNotifyComponent.prototype, 'attachShadow', { value() { return this } }) + Object.defineProperty(FlowNotifyComponent.prototype, 'shadowRoot', { get() { return this } }) +} window.OCA.WorkflowEngine.registerOperator({ id: 'OCA\\FlowNotifications\\Flow\\Operation', color: '#f1d340', operation: '', element: customElementId, + options: FlowNotify, }) diff --git a/src/views/FlowNotify.vue b/src/views/FlowNotify.vue index 03a2f7f..93378d4 100644 --- a/src/views/FlowNotify.vue +++ b/src/views/FlowNotify.vue @@ -1,10 +1,9 @@ @@ -18,28 +17,31 @@ export default { default: '', type: String, }, + value: { + default: '', + type: String, + }, }, - emits: ['update:model-value'], + emits: ['input', 'update:model-value'], data() { + const inscription = (this.modelValue || this.value) + ? JSON.parse(this.modelValue || this.value).inscription + : '' return { - inscription: '', + inscription, placeholder: t('flow_notifications', 'Choose a notification title (optional)'), } }, - computed: { - currentInscription() { - if (!this.modelValue) { - return '' - } - return JSON.parse(this.modelValue).inscription + watch: { + modelValue() { + this.inscription = JSON.parse(this.modelValue || this.value).inscription }, - }, - methods: { - emitInput(value) { - if (value === null) { - return - } - this.$emit('update:model-value', JSON.stringify({ inscription: value.target.value })) + value() { + this.inscription = JSON.parse(this.modelValue || this.value).inscription + }, + inscription() { + this.$emit('input', JSON.stringify({ inscription: this.inscription })) + this.$emit('update:model-value', JSON.stringify({ inscription: this.inscription })) }, }, }