@nextcloud/vue
Version:
Nextcloud vue components
117 lines (116 loc) • 3.63 kB
JavaScript
if (!window._vue_richtext_widgets) {
window._vue_richtext_widgets = {};
}
const isWidgetRegistered = (id) => {
return !!window._vue_richtext_widgets[id];
};
const hasInteractiveView = (id) => {
return !!window._vue_richtext_widgets[id]?.hasInteractiveView;
};
const hasFullWidth = (id) => {
return !!window._vue_richtext_widgets[id]?.fullWidth;
};
const registerWidget = (id, callback, onDestroy = (el) => {
}, props) => {
const propsWithDefaults = {
hasInteractiveView: true,
fullWidth: false,
...props
};
if (window._vue_richtext_widgets[id]) {
console.error("Widget for id " + id + " already registered");
return;
}
window._vue_richtext_widgets[id] = {
id,
callback,
onDestroy,
...propsWithDefaults
};
};
const renderWidget = (el, { richObjectType, richObject, accessible, interactive }) => {
if (richObjectType === "open-graph") {
return;
}
if (!window._vue_richtext_widgets[richObjectType]) {
console.error("Widget for rich object type " + richObjectType + " not registered");
return;
}
window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible, interactive });
};
const destroyWidget = (richObjectType, el) => {
if (richObjectType === "open-graph") {
return;
}
if (!window._vue_richtext_widgets[richObjectType]) {
return;
}
window._vue_richtext_widgets[richObjectType].onDestroy(el);
};
window._registerWidget = (id, callback, onDestroy, props) => {
registerWidget(id, callback, onDestroy, props);
};
if (!window._vue_richtext_custom_picker_elements) {
window._vue_richtext_custom_picker_elements = {};
}
class NcCustomPickerRenderResult {
/**
* @param {HTMLElement} element The HTML element
* @param {object} object The object
*/
constructor(element, object) {
this.element = element;
this.object = object;
}
}
const isCustomPickerElementRegistered = (id) => {
return !!window._vue_richtext_custom_picker_elements[id];
};
const getCustomPickerElementSize = (id) => {
const size = window._vue_richtext_custom_picker_elements[id]?.size;
if (["small", "normal", "large", "full"].includes(size)) {
return size;
}
return null;
};
const registerCustomPickerElement = (id, callback, onDestroy = (el) => {
}, size = "large") => {
if (window._vue_richtext_custom_picker_elements[id]) {
console.error("Custom reference picker element for id " + id + " already registered");
return;
}
window._vue_richtext_custom_picker_elements[id] = {
id,
callback,
onDestroy,
size
};
};
const renderCustomPickerElement = (el, { providerId, accessible }) => {
if (!window._vue_richtext_custom_picker_elements[providerId]) {
console.error("Custom reference picker element for reference provider ID " + providerId + " not registered");
return;
}
return window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible });
};
const destroyCustomPickerElement = (providerId, el, renderResult) => {
if (!window._vue_richtext_custom_picker_elements[providerId]) {
return;
}
window._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult);
};
window._registerCustomPickerElement = registerCustomPickerElement;
export {
NcCustomPickerRenderResult as N,
renderWidget as a,
registerCustomPickerElement as b,
renderCustomPickerElement as c,
isCustomPickerElementRegistered as d,
hasFullWidth as e,
destroyWidget as f,
destroyCustomPickerElement as g,
hasInteractiveView as h,
isWidgetRegistered as i,
getCustomPickerElementSize as j,
registerWidget as r
};