{"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,EAAQ,CAAA,GAAG;EACnC,CAAA;CAC1B,oBAAC,0BAAD,EAAA,UAA2B,KAAK,OAAiC,CAAA;CAChE,KAAK,QAAQ,oBAAC,0BAAD,EAAA,UAA2B,KAAK,OAAiC,CAAA,GAAG;CACvD,EAAA,CAAA,CAC7B;AAEF,mBAAmB,cAAc;AAEjC,MAAa,mBAAmB,MAC7B,EAAE,YAAY,MAAM,UAAU,YAAY,uBAAuB;CAChE,MAAM,UAAU,aAAa,KAAK,IAChC,oBAAC,oBAAD;EAAgC;EAAkB;EAAwB;EAAoB,CAAA;AAGhG,QACE,oBAAC,qBAAD;EACE,QAAQ,KAAK;EACb,UAAU,KAAK;EAEf,OAAO;EACP,UAAU,MAAM;AACd,OAAI,KAAK,UAAU;AACjB,MAAE,gBAAgB;AAClB;;AAEF,YAAS,MAAM;IAAE,OAAO;IAAU,QAAQ;IAAc,CAAQ;;YAGjE;EACmB,EAXf,KAAK,MAWU;EAG3B;AAED,iBAAiB,cAAc"}