@flogeez/angular-tiptap-editor 3.5.4 → 3.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/esm2022/lib/components/bubble-menus/color/ate-color-bubble-menu.component.mjs +12 -2
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +7 -4
- package/esm2022/lib/utils/ate-equality.utils.mjs +14 -0
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +30 -4
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/lib/components/bubble-menus/color/ate-color-bubble-menu.component.d.ts +1 -0
- package/lib/utils/ate-equality.utils.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function shallowArrayEqual(a, b) {
|
|
2
|
+
return a === b || (a.length === b.length && a.every((item, i) => item === b[i]));
|
|
3
|
+
}
|
|
4
|
+
export function shallowObjectEqual(a, b) {
|
|
5
|
+
if (a === b) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
const aKeys = Object.keys(a);
|
|
9
|
+
const bKeys = Object.keys(b);
|
|
10
|
+
return (aKeys.length === bKeys.length &&
|
|
11
|
+
aKeys.every(key => Object.prototype.hasOwnProperty.call(b, key) &&
|
|
12
|
+
a[key] === b[key]));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVxdWFsaXR5LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvdXRpbHMvYXRlLWVxdWFsaXR5LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxDQUFlLEVBQUUsQ0FBZTtJQUNuRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQW1CLENBQUksRUFBRSxDQUFJO0lBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLE9BQU8sQ0FDTCxLQUFLLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNO1FBQzdCLEtBQUssQ0FBQyxLQUFLLENBQ1QsR0FBRyxDQUFDLEVBQUUsQ0FDSixNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztZQUMzQyxDQUE2QixDQUFDLEdBQUcsQ0FBQyxLQUFNLENBQTZCLENBQUMsR0FBRyxDQUFDLENBQzlFLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc2hhbGxvd0FycmF5RXF1YWw8VD4oYTogcmVhZG9ubHkgVFtdLCBiOiByZWFkb25seSBUW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIGEgPT09IGIgfHwgKGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KChpdGVtLCBpKSA9PiBpdGVtID09PSBiW2ldKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93T2JqZWN0RXF1YWw8VCBleHRlbmRzIG9iamVjdD4oYTogVCwgYjogVCk6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gIGNvbnN0IGJLZXlzID0gT2JqZWN0LmtleXMoYik7XG4gIHJldHVybiAoXG4gICAgYUtleXMubGVuZ3RoID09PSBiS2V5cy5sZW5ndGggJiZcbiAgICBhS2V5cy5ldmVyeShcbiAgICAgIGtleSA9PlxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5KSAmJlxuICAgICAgICAoYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9PT0gKGIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV1cbiAgICApXG4gICk7XG59XG4iXX0=
|
|
@@ -7297,6 +7297,16 @@ class AteColorBubbleMenuComponent extends AteBaseSubBubbleMenu {
|
|
|
7297
7297
|
}
|
|
7298
7298
|
return false;
|
|
7299
7299
|
}
|
|
7300
|
+
findColoredElementInContent(start, contentRoot) {
|
|
7301
|
+
let current = start;
|
|
7302
|
+
while (current && current !== contentRoot && contentRoot.contains(current)) {
|
|
7303
|
+
if (current.matches('[style*="color"], [style*="background"], mark')) {
|
|
7304
|
+
return current;
|
|
7305
|
+
}
|
|
7306
|
+
current = current.parentElement;
|
|
7307
|
+
}
|
|
7308
|
+
return null;
|
|
7309
|
+
}
|
|
7300
7310
|
getSelectionRect() {
|
|
7301
7311
|
const trigger = this.colorPickerSvc.menuTrigger();
|
|
7302
7312
|
const ed = this.editor();
|
|
@@ -7316,7 +7326,7 @@ class AteColorBubbleMenuComponent extends AteBaseSubBubbleMenu {
|
|
|
7316
7326
|
try {
|
|
7317
7327
|
const { node } = ed.view.domAtPos(from);
|
|
7318
7328
|
const element = node instanceof Element ? node : node.parentElement;
|
|
7319
|
-
const colorElement = element
|
|
7329
|
+
const colorElement = this.findColoredElementInContent(element, ed.view.dom);
|
|
7320
7330
|
if (colorElement) {
|
|
7321
7331
|
return colorElement.getBoundingClientRect();
|
|
7322
7332
|
}
|
|
@@ -8848,6 +8858,20 @@ const AteBlockControlsExtension = Extension.create({
|
|
|
8848
8858
|
},
|
|
8849
8859
|
});
|
|
8850
8860
|
|
|
8861
|
+
function shallowArrayEqual(a, b) {
|
|
8862
|
+
return a === b || (a.length === b.length && a.every((item, i) => item === b[i]));
|
|
8863
|
+
}
|
|
8864
|
+
function shallowObjectEqual(a, b) {
|
|
8865
|
+
if (a === b) {
|
|
8866
|
+
return true;
|
|
8867
|
+
}
|
|
8868
|
+
const aKeys = Object.keys(a);
|
|
8869
|
+
const bKeys = Object.keys(b);
|
|
8870
|
+
return (aKeys.length === bKeys.length &&
|
|
8871
|
+
aKeys.every(key => Object.prototype.hasOwnProperty.call(b, key) &&
|
|
8872
|
+
a[key] === b[key]));
|
|
8873
|
+
}
|
|
8874
|
+
|
|
8851
8875
|
function transformBooleanInput(val) {
|
|
8852
8876
|
if (val === undefined || val === null) {
|
|
8853
8877
|
return undefined;
|
|
@@ -9133,10 +9157,12 @@ class AngularTiptapEditorComponent {
|
|
|
9133
9157
|
this.finalShowWordCount = computed(() => this.showWordCount() ?? this.effectiveConfig().showWordCount ?? true);
|
|
9134
9158
|
this.finalLocale = computed(() => this.locale() ?? this.effectiveConfig().locale);
|
|
9135
9159
|
// Extensions & Options
|
|
9136
|
-
this.finalTiptapExtensions = computed(() => this.tiptapExtensions() ?? this.effectiveConfig().tiptapExtensions ?? []);
|
|
9137
|
-
this.finalTiptapOptions = computed(() => this.tiptapOptions() ?? this.effectiveConfig().tiptapOptions ?? {});
|
|
9160
|
+
this.finalTiptapExtensions = computed(() => this.tiptapExtensions() ?? this.effectiveConfig().tiptapExtensions ?? [], { equal: shallowArrayEqual });
|
|
9161
|
+
this.finalTiptapOptions = computed(() => this.tiptapOptions() ?? this.effectiveConfig().tiptapOptions ?? {}, { equal: shallowObjectEqual });
|
|
9138
9162
|
this.finalStateCalculators = computed(() => this.stateCalculators() ?? this.effectiveConfig().stateCalculators ?? []);
|
|
9139
|
-
this.finalAngularNodesConfig = computed(() => this.effectiveConfig().angularNodes ?? []
|
|
9163
|
+
this.finalAngularNodesConfig = computed(() => this.effectiveConfig().angularNodes ?? [], {
|
|
9164
|
+
equal: shallowArrayEqual,
|
|
9165
|
+
});
|
|
9140
9166
|
// Image Upload
|
|
9141
9167
|
this.finalImageUploadConfig = computed(() => {
|
|
9142
9168
|
const fromInput = this.imageUpload();
|