UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

42 lines (41 loc) 1.21 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-explicit-any class ADFTraversor { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(doc) { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-explicit-any _defineProperty(this, "subscribers", new Map()); this.doc = doc; } subscribe(type, callback) { const callbacks = this.subscribers.get(type); if (!callbacks) { this.subscribers.set(type, [callback]); } else { callbacks.push(callback); } } exec() { if (!this.doc || !Array.isArray(this.doc.content)) { return; } let candidates = this.doc.content.slice(0); while (candidates.length) { const node = candidates.shift(); if (Array.isArray(node.content)) { candidates = candidates.concat(node.content); } const callbacks = this.subscribers.get(node.type); if (!callbacks) { continue; } for (let i = 0; i < callbacks.length; i++) { callbacks[i](node); } } } } export default ADFTraversor;