import { Node } from '@tempi/core-editor'; import { ROOT } from '@tempi/core-renderer'; //// // case 1: select new blank popup: // => no incomingName // => `POPUP{{number}}` // // case 2: select new data popup: // => have incomingName // => incomingName: `Something` // // case 3: duplicate popup: // => have incomingName // => incomingName: `Something - Copy(n) - Copy(m)` //// export const getNewPopupName = ( nodes: any, query: any, incomingName?: string, ) => { let newPopupName = ''; const allPopupIds = [ ...new Set( nodes[ROOT]?.data.nodes.filter( (key) => nodes[key]?.data?.name === 'PopupEditorV1', ), ), ]; if (incomingName) { // select new data popup or duplicate popup let numberOfCopy = 0; for (const id of allPopupIds) { const nodeName = query.node(id).get()?.data?.props?.name; if ( nodeName === incomingName || nodeName.includes(`${incomingName} - Copy`) ) { numberOfCopy++; } newPopupName = `${incomingName}${ numberOfCopy ? ` - Copy ${numberOfCopy > 1 ? `(${numberOfCopy})` : ''}` : '' }`; } } else { // select new blank popup let maxPopupNumber = 0; allPopupIds.forEach((id) => { const nodeName = query.node(id).get()?.data?.props?.name; if (nodeName.startsWith('POPUP')) { const nodeNameNumber = parseInt(nodeName.split('POPUP')[1], 10); if (nodeNameNumber > maxPopupNumber) maxPopupNumber = nodeNameNumber; } }); newPopupName = `POPUP${maxPopupNumber + 1}`; } return newPopupName; }; export const checkNodePopupIsMain = (node: Node) => { return node.data.props.isMainPopup; };