@onlyoffice/docspace-plugin-sdk
Version:
Simple plugin system for onlyoffice docspace
75 lines (60 loc) • 1.97 kB
JavaScript
/*
* (c) Copyright Ascensio System SIA 2025
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const IContextMenuPlugin = "IContextMenuPlugin";
const IContextMenuItem = "IContextMenuItem";
const contextMenuItems = `
contextMenuItems: Map<string, IContextMenuItem> = new Map();`;
const addContextMenuItem = `
addContextMenuItem = (item: IContextMenuItem): void => {
this.contextMenuItems.set(item.key, item);
};`;
const getContextMenuItems = `
getContextMenuItems = (): Map<string, IContextMenuItem> => {
return this.contextMenuItems;
};`;
const getContextMenuItemsKeys = `
getContextMenuItemsKeys = (): string[] => {
const keys = Array.from(this.contextMenuItems).map(([key, item]) => key);
return keys;
};`;
const updateContextMenuItem = `
updateContextMenuItem = (item: IContextMenuItem): void => {
this.contextMenuItems.set(item.key, item);
};`;
export const getContextMenuTemp = (withContextMenu) => {
if (!withContextMenu)
return {
IContextMenuPlugin,
IContextMenuItem,
contextMenuVars: "",
contextMenuMeth: "",
};
let contextMenuVars = "";
let contextMenuMeth = "";
contextMenuVars = `
${contextMenuItems}`;
contextMenuMeth = `
${addContextMenuItem}
${getContextMenuItems}
${getContextMenuItemsKeys}
${updateContextMenuItem}`;
return {
IContextMenuPlugin,
IContextMenuItem,
contextMenuVars,
contextMenuMeth,
};
};