From 3a776a970422427cdc76cbf1a82f8a1be216dc78 Mon Sep 17 00:00:00 2001 From: Jack Sleight Date: Sun, 26 Sep 2021 16:40:11 +0100 Subject: [PATCH 1/9] Support replacing built-in Bard TipTap extensions --- resources/js/components/Bard.js | 25 +++++++++++++++++-- .../fieldtypes/bard/BardFieldtype.vue | 20 ++++++++++++--- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/resources/js/components/Bard.js b/resources/js/components/Bard.js index 0c9714b0fc2..6078fc79ada 100644 --- a/resources/js/components/Bard.js +++ b/resources/js/components/Bard.js @@ -1,24 +1,45 @@ import * as core from 'tiptap'; import * as commands from 'tiptap-commands'; import * as utils from 'tiptap-utils'; +import * as extensions from 'tiptap-extensions'; +import Link from './fieldtypes/bard/Link'; +import Image from './fieldtypes/bard/Image'; +import Subscript from './fieldtypes/bard/Subscript'; +import Superscript from './fieldtypes/bard/Superscript'; class Bard { constructor(instance) { this.instance = instance; this.extensionCallbacks = []; - this.buttonCallbacks = []; + this.extensionReplacementCallbacks = []; + this.buttonCallbacks = []; } extend(callback) { this.extensionCallbacks.push(callback); } + extendReplace(callback) { + this.extensionReplacementCallbacks.push(callback); + } + buttons(callback) { this.buttonCallbacks.push(callback); } get tiptap() { - return { core, commands, utils }; + return { + core, + commands, + utils, + extensions: { + ...extensions, + Link, + Image, + Subscript, + Superscript, + }, + }; } } diff --git a/resources/js/components/fieldtypes/bard/BardFieldtype.vue b/resources/js/components/fieldtypes/bard/BardFieldtype.vue index cdcbd01da2d..25d1d84f4a6 100644 --- a/resources/js/components/fieldtypes/bard/BardFieldtype.vue +++ b/resources/js/components/fieldtypes/bard/BardFieldtype.vue @@ -89,7 +89,7 @@