From 8706bbb0442e205f774a5fa445fc01392a31d0b6 Mon Sep 17 00:00:00 2001 From: Yousef El-Dardiry Date: Wed, 5 May 2021 11:41:27 +0200 Subject: [PATCH] add typeCreatedEventHandler --- src/index.js | 7 +++---- src/types/AbstractType.js | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/index.js b/src/index.js index f2e20b54..bc93ee88 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,7 @@ - export { Doc, Transaction, + observeTypeCreated, YArray as Array, YMap as Map, YText as Text, @@ -25,7 +25,6 @@ export { ContentAny, ContentString, ContentType, - typeRefs, AbstractType, RelativePosition, getTypeChildren, @@ -82,5 +81,5 @@ export { encodeRelativePosition, decodeRelativePosition, diffUpdate, - diffUpdateV2 -} from './internals.js' + diffUpdateV2, +} from "./internals.js"; diff --git a/src/types/AbstractType.js b/src/types/AbstractType.js index 76a88a33..e9fa17fa 100644 --- a/src/types/AbstractType.js +++ b/src/types/AbstractType.js @@ -248,6 +248,21 @@ export const callTypeObservers = (type, transaction, event) => { callEventHandlerListeners(changedType._eH, event, transaction) } +/** + * Event handlers + * @type {EventHandler, undefined>} + */ +const typeCreatedEventHandler = createEventHandler(); + +/** + * Observe all events that are created on this type. + * + * @param {function(AbstractType, undefined):void} f Observer function + */ +export function observeTypeCreated (f) { + addEventHandlerListener(typeCreatedEventHandler, f) +} + /** * @template EventType * Abstract Yjs Type class @@ -285,6 +300,8 @@ export class AbstractType { * @type {null | Array} */ this._searchMarker = null + + callEventHandlerListeners(typeCreatedEventHandler, this, undefined); } /**