breadcrumbs-panel.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { isSplitTestEnabled } from '@/utils/splitTestUtils'
  2. import { EditorView, showPanel } from '@codemirror/view'
  3. export function createBreadcrumbsPanel() {
  4. const dom = document.createElement('div')
  5. dom.classList.add('ol-cm-breadcrumbs-portal')
  6. return { dom, top: true }
  7. }
  8. const breadcrumbsTheme = EditorView.baseTheme({
  9. '.ol-cm-breadcrumbs': {
  10. display: 'flex',
  11. alignItems: 'center',
  12. gap: 'var(--spacing-01)',
  13. fontSize: 'var(--font-size-01)',
  14. padding: 'var(--spacing-02)',
  15. overflow: 'auto',
  16. scrollbarWidth: 'thin',
  17. '& > *': {
  18. flexShrink: '0',
  19. },
  20. },
  21. '&light .ol-cm-breadcrumbs': {
  22. color: 'var(--content-secondary)',
  23. backgroundColor: 'var(--bg-light-primary)',
  24. borderBottom: '1px solid #ddd',
  25. },
  26. '&light .ol-cm-breadcrumb-chevron': {
  27. color: 'var(--neutral-30)',
  28. },
  29. '&dark .ol-cm-breadcrumbs': {
  30. color: 'var(--content-secondary-dark)',
  31. backgroundColor: 'var(--bg-dark-primary)',
  32. },
  33. '&dark .ol-cm-breadcrumb-chevron': {
  34. color: 'var(--neutral-50)',
  35. },
  36. })
  37. /**
  38. * A panel which contains the editor breadcrumbs
  39. */
  40. export const breadcrumbPanel = () => {
  41. if (!isSplitTestEnabled('editor-redesign')) {
  42. return []
  43. }
  44. return [showPanel.of(createBreadcrumbsPanel), breadcrumbsTheme]
  45. }