Files
AFFiNE-Mirror/blocksuite/affine/fragments/adapter-panel/src/config.ts
T
donteatfriedrice a828c74f87 feat(editor): add experimental feature adapter panel to AFFiNE canary (#12489)
Closes: [BS-2539](https://linear.app/affine-design/issue/BS-2539/为-affine-添加-ef,并且支持在-affine-预览对应的功能)

> [!warning]
> This feature is only available in the canary build and is intended for debugging purposes.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced an "Adapter Panel" feature with a new sidebar tab for previewing document content in multiple formats (Markdown, PlainText, HTML, Snapshot), controllable via a feature flag.
  - Added a fully integrated adapter panel component with reactive UI elements for selecting adapters, toggling HTML preview modes, and updating content.
  - Provided a customizable adapter panel for both main app and playground environments, supporting content transformation pipelines and export previews.
  - Enabled seamless toggling and live updating of adapter panel content through intuitive menus and controls.

- **Localization**
  - Added English translations and descriptive settings for the Adapter Panel feature.

- **Chores**
  - Added new package and workspace dependencies along with TypeScript project references to support the Adapter Panel modules and components.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-23 14:08:12 +00:00

29 lines
780 B
TypeScript

import type { DocSnapshot } from '@blocksuite/store';
import { createContext } from '@lit/context';
import type { Signal } from '@preact/signals-core';
export type AdapterItem = {
id: string;
label: string;
};
export const ADAPTERS: AdapterItem[] = [
{ id: 'markdown', label: 'Markdown' },
{ id: 'plaintext', label: 'PlainText' },
{ id: 'html', label: 'HTML' },
{ id: 'snapshot', label: 'Snapshot' },
];
export type AdapterPanelContext = {
activeAdapter$: Signal<AdapterItem>;
isHtmlPreview$: Signal<boolean>;
docSnapshot$: Signal<DocSnapshot | null>;
htmlContent$: Signal<string>;
markdownContent$: Signal<string>;
plainTextContent$: Signal<string>;
};
export const adapterPanelContext = createContext<AdapterPanelContext>(
'adapterPanelContext'
);