onChange(prop, callback) {
    if (!__privateGet(this, _propChangeCallbacks)[prop]) __privateGet(this, _propChangeCallbacks)[prop] = { _nextRef: 1 };
    else __privateGet(this, _propChangeCallbacks)[prop]._nextRef++;
    const nextCbRef = __privateGet(this, _propChangeCallbacks)[prop]._nextRef;
    const propChangeCallback = __privateGet(this, _propChangeCallbacks)[prop][nextCbRef] = function propChangeCallback2(e) {
      if (prop === e.detail.prop) {
        const value2 = e.detail.value;
        callback.call(value2, value2);
      }
    };
    document.addEventListener("uibuilder:propertyChanged", propChangeCallback);
    return nextCbRef;
  }
Register on-change event listeners for uibuilder tracked properties
Make it possible to register a function that will be run when the property changes.
Note that you can create listeners for non-existant properties
@example uibuilder.onChange('msg', (msg) => { console.log('uibuilder.msg changed! It is now: ', msg) })

@param {string} prop The property of uibuilder that we want to monitor
@param {Function} callback The function that will run when the property changes, parameter is the new value of the property after change
@returns {number} A reference to the callback to cancel, save and pass to uibuilder.cancelChange if you need to remove a listener