{"version":3,"file":"MenuItemRenderer.mjs","names":[],"sources":["../../src/EditorSlashMenu/MenuItemRenderer.tsx"],"sourcesContent":["import type { AutocompleteRootChangeEventDetails } from '@base-ui/react/autocomplete';\nimport { memo } from 'react';\n\nimport {\n  EditorSlashMenuItem,\n  EditorSlashMenuItemContent,\n  EditorSlashMenuItemExtra,\n  EditorSlashMenuItemIcon,\n  EditorSlashMenuItemLabel,\n} from './atoms';\nimport type { EditorSlashMenuOption } from './type';\n\ninterface MenuItemRendererProps {\n  hasAnyIcon: boolean;\n  item: EditorSlashMenuOption;\n  onSelect: (item: EditorSlashMenuOption, details: AutocompleteRootChangeEventDetails) => void;\n  renderItem?: (item: EditorSlashMenuOption) => React.ReactNode;\n  reserveIconSpace: boolean;\n}\n\nconst DefaultItemContent = memo<{\n  hasAnyIcon: boolean;\n  item: EditorSlashMenuOption;\n  reserveIconSpace: boolean;\n}>(({ item, hasAnyIcon, reserveIconSpace }) => (\n  <EditorSlashMenuItemContent>\n    <EditorSlashMenuItemIcon aria-hidden={!hasAnyIcon && !reserveIconSpace}>\n      {item.icon ?? (reserveIconSpace && hasAnyIcon ? <span /> : null)}\n    </EditorSlashMenuItemIcon>\n    <EditorSlashMenuItemLabel>{item.label}</EditorSlashMenuItemLabel>\n    {item.extra ? <EditorSlashMenuItemExtra>{item.extra}</EditorSlashMenuItemExtra> : null}\n  </EditorSlashMenuItemContent>\n));\n\nDefaultItemContent.displayName = 'DefaultItemContent';\n\nexport const MenuItemRenderer = memo<MenuItemRendererProps>(\n  ({ hasAnyIcon, item, onSelect, renderItem, reserveIconSpace }) => {\n    const content = renderItem?.(item) ?? (\n      <DefaultItemContent hasAnyIcon={hasAnyIcon} item={item} reserveIconSpace={reserveIconSpace} />\n    );\n\n    return (\n      <EditorSlashMenuItem\n        danger={item.danger}\n        disabled={item.disabled}\n        key={item.value}\n        value={item as any}\n        onClick={(e) => {\n          if (item.disabled) {\n            e.preventDefault();\n            return;\n          }\n          onSelect(item, { event: e as any, reason: 'item-press' } as any);\n        }}\n      >\n        {content}\n      </EditorSlashMenuItem>\n    );\n  },\n);\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n"],"mappings":";;;;AAoBA,MAAM,qBAAqB,MAIvB,EAAE,MAAM,YAAY,uBACtB,qBAAC,4BAAD,EAAA,UAAA;CACE,oBAAC,yBAAD;EAAyB,eAAa,CAAC,cAAc,CAAC;YACnD,KAAK,SAAS,oBAAoB,aAAa,oBAAC,QAAD,CAAO,CAAA,IAAI;CACpC,CAAA;CACzB,oBAAC,0BAAD,EAAA,UAA2B,KAAK,MAAgC,CAAA;CAC/D,KAAK,QAAQ,oBAAC,0BAAD,EAAA,UAA2B,KAAK,MAAgC,CAAA,IAAI;AACxD,EAAA,CAAA,CAC7B;AAED,mBAAmB,cAAc;AAEjC,MAAa,mBAAmB,MAC7B,EAAE,YAAY,MAAM,UAAU,YAAY,uBAAuB;CAChE,MAAM,UAAU,aAAa,IAAI,KAC/B,oBAAC,oBAAD;EAAgC;EAAkB;EAAwB;CAAmB,CAAA;CAG/F,OACE,oBAAC,qBAAD;EACE,QAAQ,KAAK;EACb,UAAU,KAAK;EAEf,OAAO;EACP,UAAU,MAAM;GACd,IAAI,KAAK,UAAU;IACjB,EAAE,eAAe;IACjB;GACF;GACA,SAAS,MAAM;IAAE,OAAO;IAAU,QAAQ;GAAa,CAAQ;EACjE;YAEC;CACkB,GAXd,KAAK,KAWS;AAEzB,CACF;AAEA,iBAAiB,cAAc"}