Skip to content

Commit

Permalink
fix: resolve Issue #4704 by reverting PR #4191
Browse files Browse the repository at this point in the history
  • Loading branch information
nperez0111 committed Jun 18, 2024
1 parent c6974aa commit 1bec3d9
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 36 deletions.
15 changes: 14 additions & 1 deletion demos/src/Examples/CodeBlockLanguage/React/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,21 @@ export default () => {
addNodeView() {
return ReactNodeViewRenderer(CodeBlockComponent)
},
// addProseMirrorPlugins() {
// console.log('custom', this, this.parent)
// return [
// ...this.parent(),
// ]
// },
})
.configure({ lowlight }),
.configure({ lowlight })
.extend({
addProseMirrorPlugins() {
return [
...this.parent(),
]
},
}),
],
content: `
<p>
Expand Down
22 changes: 11 additions & 11 deletions packages/core/src/Extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -457,17 +457,17 @@ export class Extension<Options = any, Storage = any> {
configure(options: Partial<Options> = {}) {
// return a new instance so we can use the same extension
// with different calls of `configure`
const extension = this.extend()

const extension = this.extend({
...this.config,
addOptions() {
return mergeDeep(this.parent?.() || {}, options) as Options
},
})

// Always preserve the current name
extension.name = this.name
// Set the parent to be our parent
extension.parent = this.parent
extension.options = mergeDeep(this.options as Record<string, any>, options) as Options

extension.storage = callOrReturn(
getExtensionField<AnyConfig['addStorage']>(extension, 'addStorage', {
name: extension.name,
options: extension.options,
}),
)

return extension
}
Expand All @@ -483,7 +483,7 @@ export class Extension<Options = any, Storage = any> {

extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name

if (extendedConfig.defaultOptions) {
if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {
console.warn(
`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${extension.name}".`,
)
Expand Down
24 changes: 12 additions & 12 deletions packages/core/src/Mark.ts
Original file line number Diff line number Diff line change
Expand Up @@ -589,33 +589,33 @@ export class Mark<Options = any, Storage = any> {
configure(options: Partial<Options> = {}) {
// return a new instance so we can use the same extension
// with different calls of `configure`
const extension = this.extend()

const extension = this.extend({
...this.config,
addOptions() {
return mergeDeep(this.parent?.() || {}, options) as Options
},
})

// Always preserve the current name
extension.name = this.name
// Set the parent to be our parent
extension.parent = this.parent
extension.options = mergeDeep(this.options as Record<string, any>, options) as Options

extension.storage = callOrReturn(
getExtensionField<AnyConfig['addStorage']>(extension, 'addStorage', {
name: extension.name,
options: extension.options,
}),
)

return extension
}

extend<ExtendedOptions = Options, ExtendedStorage = Storage>(
extendedConfig: Partial<MarkConfig<ExtendedOptions, ExtendedStorage>> = {},
) {
const extension = new Mark<ExtendedOptions, ExtendedStorage>({ ...this.config, ...extendedConfig })
const extension = new Mark<ExtendedOptions, ExtendedStorage>(extendedConfig)

extension.parent = this

this.child = extension

extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name

if (extendedConfig.defaultOptions) {
if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {
console.warn(
`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${extension.name}".`,
)
Expand Down
24 changes: 12 additions & 12 deletions packages/core/src/Node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -780,33 +780,33 @@ export class Node<Options = any, Storage = any> {
configure(options: Partial<Options> = {}) {
// return a new instance so we can use the same extension
// with different calls of `configure`
const extension = this.extend()

const extension = this.extend({
...this.config,
addOptions() {
return mergeDeep(this.parent?.() || {}, options) as Options
},
})

// Always preserve the current name
extension.name = this.name
// Set the parent to be our parent
extension.parent = this.parent
extension.options = mergeDeep(this.options as Record<string, any>, options) as Options

extension.storage = callOrReturn(
getExtensionField<AnyConfig['addStorage']>(extension, 'addStorage', {
name: extension.name,
options: extension.options,
}),
)

return extension
}

extend<ExtendedOptions = Options, ExtendedStorage = Storage>(
extendedConfig: Partial<NodeConfig<ExtendedOptions, ExtendedStorage>> = {},
) {
const extension = new Node<ExtendedOptions, ExtendedStorage>({ ...this.config, ...extendedConfig })
const extension = new Node<ExtendedOptions, ExtendedStorage>(extendedConfig)

extension.parent = this

this.child = extension

extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name

if (extendedConfig.defaultOptions) {
if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {
console.warn(
`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${extension.name}".`,
)
Expand Down

0 comments on commit 1bec3d9

Please sign in to comment.