MCPcopy Index your code
hub / github.com/alibaba/lowcode-engine / parseContextMenuProperties

Function parseContextMenuProperties

packages/utils/src/context-menu.tsx:124–179  ·  view source on GitHub ↗
(menus: (IPublicTypeContextMenuAction | Omit<IPublicTypeContextMenuAction, 'items'>)[], options: IOptions & {
  event?: MouseEvent;
}, level = 1)

Source from the content-addressed store, hash-verified

122}
123
124export function parseContextMenuProperties(menus: (IPublicTypeContextMenuAction | Omit<IPublicTypeContextMenuAction, 'items'>)[], options: IOptions & {
125 event?: MouseEvent;
126}, level = 1): IPublicTypeContextMenuItem[] {
127 destroyFn?.();
128
129 const { nodes, destroy } = options;
130 if (level > MAX_LEVEL) {
131 logger.warn('context menu level is too deep, please check your context menu config');
132 return [];
133 }
134
135 return menus
136 .filter(menu => !menu.condition || (menu.condition && menu.condition(nodes || [])))
137 .map((menu) => {
138 const {
139 name,
140 title,
141 type = IPublicEnumContextMenuType.MENU_ITEM,
142 help,
143 } = menu;
144
145 const result: IPublicTypeContextMenuItem = {
146 name,
147 title,
148 type,
149 help,
150 action: () => {
151 destroy?.();
152 menu.action?.(nodes || [], options.event);
153 },
154 disabled: menu.disabled && menu.disabled(nodes || []) || false,
155 };
156
157 if ('items' in menu && menu.items) {
158 result.items = parseContextMenuProperties(
159 typeof menu.items === 'function' ? menu.items(nodes || []) : menu.items,
160 options,
161 level + 1,
162 );
163 }
164
165 return result;
166 })
167 .reduce((menus: IPublicTypeContextMenuItem[], currentMenu: IPublicTypeContextMenuItem) => {
168 if (!currentMenu.name) {
169 return menus.concat([currentMenu]);
170 }
171
172 const index = menus.find(item => item.name === currentMenu.name);
173 if (!index) {
174 return menus.concat([currentMenu]);
175 } else {
176 return menus;
177 }
178 }, []);
179}
180
181let cachedMenuItemHeight: string | undefined;

Callers 4

ContextMenuFunction · 0.85
context-menu.tsxFile · 0.85
ContextMenuActionsClass · 0.85

Calls 11

conditionMethod · 0.80
concatMethod · 0.80
warnMethod · 0.65
reduceMethod · 0.65
mapMethod · 0.65
filterMethod · 0.65
itemsMethod · 0.65
findMethod · 0.65
destroyFunction · 0.50
actionMethod · 0.45
disabledMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…