fix: fix merging options on configure for multiple extension instances
This commit is contained in:
@@ -254,11 +254,13 @@ export class Extension<Options = any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configure(options: Partial<Options> = {}) {
|
configure(options: Partial<Options> = {}) {
|
||||||
this.options = mergeDeep(this.options, options) as Options
|
|
||||||
|
|
||||||
// return a new instance so we can use the same extension
|
// return a new instance so we can use the same extension
|
||||||
// with different calls of `configure`
|
// with different calls of `configure`
|
||||||
return this.extend()
|
const extension = this.extend()
|
||||||
|
|
||||||
|
extension.options = mergeDeep(this.options, options) as Options
|
||||||
|
|
||||||
|
return extension
|
||||||
}
|
}
|
||||||
|
|
||||||
extend<ExtendedOptions = Options>(extendedConfig: Partial<ExtensionConfig<ExtendedOptions>> = {}) {
|
extend<ExtendedOptions = Options>(extendedConfig: Partial<ExtensionConfig<ExtendedOptions>> = {}) {
|
||||||
|
|||||||
@@ -351,11 +351,13 @@ export class Mark<Options = any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configure(options: Partial<Options> = {}) {
|
configure(options: Partial<Options> = {}) {
|
||||||
this.options = mergeDeep(this.options, options) as Options
|
|
||||||
|
|
||||||
// return a new instance so we can use the same extension
|
// return a new instance so we can use the same extension
|
||||||
// with different calls of `configure`
|
// with different calls of `configure`
|
||||||
return this.extend()
|
const extension = this.extend()
|
||||||
|
|
||||||
|
extension.options = mergeDeep(this.options, options) as Options
|
||||||
|
|
||||||
|
return extension
|
||||||
}
|
}
|
||||||
|
|
||||||
extend<ExtendedOptions = Options>(extendedConfig: Partial<MarkConfig<ExtendedOptions>> = {}) {
|
extend<ExtendedOptions = Options>(extendedConfig: Partial<MarkConfig<ExtendedOptions>> = {}) {
|
||||||
|
|||||||
@@ -432,11 +432,13 @@ export class Node<Options = any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configure(options: Partial<Options> = {}) {
|
configure(options: Partial<Options> = {}) {
|
||||||
this.options = mergeDeep(this.options, options) as Options
|
|
||||||
|
|
||||||
// return a new instance so we can use the same extension
|
// return a new instance so we can use the same extension
|
||||||
// with different calls of `configure`
|
// with different calls of `configure`
|
||||||
return this.extend()
|
const extension = this.extend()
|
||||||
|
|
||||||
|
extension.options = mergeDeep(this.options, options) as Options
|
||||||
|
|
||||||
|
return extension
|
||||||
}
|
}
|
||||||
|
|
||||||
extend<ExtendedOptions = Options>(extendedConfig: Partial<NodeConfig<ExtendedOptions>> = {}) {
|
extend<ExtendedOptions = Options>(extendedConfig: Partial<NodeConfig<ExtendedOptions>> = {}) {
|
||||||
|
|||||||
@@ -127,11 +127,13 @@ describe('extension options', () => {
|
|||||||
.create({
|
.create({
|
||||||
defaultOptions: {
|
defaultOptions: {
|
||||||
foo: 1,
|
foo: 1,
|
||||||
|
bar: 2,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const extension1 = extension.configure({
|
const extension1 = extension.configure({
|
||||||
foo: 2,
|
foo: 2,
|
||||||
|
bar: 4,
|
||||||
})
|
})
|
||||||
|
|
||||||
const extension2 = extension.configure({
|
const extension2 = extension.configure({
|
||||||
@@ -140,10 +142,12 @@ describe('extension options', () => {
|
|||||||
|
|
||||||
expect(extension1.options).to.deep.eq({
|
expect(extension1.options).to.deep.eq({
|
||||||
foo: 2,
|
foo: 2,
|
||||||
|
bar: 4,
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(extension2.options).to.deep.eq({
|
expect(extension2.options).to.deep.eq({
|
||||||
foo: 3,
|
foo: 3,
|
||||||
|
bar: 2,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user