/** * Vue 2 어댑터 (2.6 / 2.7). `v-model` 을 그대로 지원한다. * * Vue 2 컴포넌트는 순수 옵션 객체이므로 이 모듈은 `vue` 를 import 하지 * **않는다**. 따라서 Vue 3 를 devDependency 로 가진 이 저장소에서도 Vue 2 용 * 산출물을 정확히 만들 수 있고, 소비자 쪽 Vue 2 버전과의 이중 인스턴스 문제도 * 생기지 않는다. * * Vue 2 관례에 따라 `v-model` 은 `value` prop + `input` 이벤트를 쓴다. * * @example * import { AerizEditor } from '@aeriz/wysiwyg/vue2'; * import '@aeriz/wysiwyg/style.css'; * * export default { * components: { AerizEditor }, * data: () => ({ html: '

안녕하세요

' }), * template: '', * }; */ import type { AerizEditor as AerizEditorCore, AerizViewer as AerizViewerCore, BlockSnapshot, ToolbarConfig } from '@aeriz/wysiwyg'; import type { AerizEditorController, AerizEditorProps, AerizViewerController, AerizViewerProps } from './shared.js'; type Theme = 'light' | 'dark'; type Locale = 'en' | 'ko' | 'ja' | 'zh'; type HtmlStyles = 'inline' | 'class'; type UploadFn = (file: File) => Promise; /** * Vue 2 런타임이 컴포넌트 메서드에 주입하는 `this` 의 최소 형태. * * `vue` 패키지를 참조하지 않기 위해 필요한 멤버만 구조적으로 선언한다. * Vue 2 인스턴스는 이 멤버들을 모두 갖고 있으므로 호환된다. */ interface Vue2Host

{ $el: HTMLElement; $props: P; $emit(event: string, ...args: unknown[]): void; $watch(getter: () => unknown, cb: () => void, options?: { deep?: boolean; immediate?: boolean; }): () => void; } /** Vue 2 의 `createElement` (render 함수 인자 `h`) 최소 형태. */ type CreateElement = (tag: string) => unknown; interface EditorProps { value?: string; initialHTML?: string; placeholder?: string; toolbar?: ToolbarConfig | false; theme?: Theme; locale?: Locale; htmlStyles?: HtmlStyles; onImageUpload?: UploadFn; imageUploadUrl?: string; onFileUpload?: UploadFn; fileUploadUrl?: string; } interface EditorHost extends Vue2Host { aerizController: AerizEditorController | null; aerizProps(): AerizEditorProps; } interface ViewerProps { blocks?: BlockSnapshot[]; html?: string; theme?: Theme; htmlStyles?: HtmlStyles; } interface ViewerHost extends Vue2Host { aerizController: AerizViewerController | null; aerizProps(): AerizViewerProps; } export declare const AerizEditor: { name: string; props: { /** `v-model` 바인딩 값 (HTML). */ value: { type: StringConstructor; default: undefined; }; initialHTML: { type: StringConstructor; default: undefined; }; placeholder: { type: StringConstructor; default: undefined; }; toolbar: { type: (ObjectConstructor | BooleanConstructor)[]; default: undefined; }; theme: { type: StringConstructor; default: undefined; }; locale: { type: StringConstructor; default: undefined; }; /** `getHTML()` · `onChange` 출력 전략. 기본 `'inline'`. */ htmlStyles: { type: StringConstructor; default: undefined; }; onImageUpload: { type: FunctionConstructor; default: undefined; }; imageUploadUrl: { type: StringConstructor; default: undefined; }; onFileUpload: { type: FunctionConstructor; default: undefined; }; fileUploadUrl: { type: StringConstructor; default: undefined; }; }; data(): { aerizController: AerizEditorController | null; }; methods: { aerizProps(this: EditorHost): AerizEditorProps; /** 코어 인스턴스. `this.$refs.editor.getEditor()` 로 접근한다. */ getEditor(this: EditorHost): AerizEditorCore | null; getHTML(this: EditorHost): string; setHTML(this: EditorHost, html: string): void; focus(this: EditorHost): void; }; mounted(this: EditorHost): void; beforeDestroy(this: EditorHost): void; render(this: EditorHost, h: CreateElement): unknown; }; export declare const AerizViewer: { name: string; props: { blocks: { type: ArrayConstructor; default: undefined; }; html: { type: StringConstructor; default: undefined; }; theme: { type: StringConstructor; default: undefined; }; /** `getHTML()` 출력 전략. 기본 `'inline'`. */ htmlStyles: { type: StringConstructor; default: undefined; }; }; data(): { aerizController: AerizViewerController | null; }; methods: { aerizProps(this: ViewerHost): AerizViewerProps; getViewer(this: ViewerHost): AerizViewerCore | null; }; mounted(this: ViewerHost): void; beforeDestroy(this: ViewerHost): void; render(this: ViewerHost, h: CreateElement): unknown; }; /** `Vue.use(AerizWysiwygPlugin)` 로 두 컴포넌트를 전역 등록한다. */ export declare const AerizWysiwygPlugin: { install(Vue: { component(name: string, def: unknown): unknown; }): void; }; export type { AerizEditorProps, AerizViewerProps } from './shared.js'; //# sourceMappingURL=vue2.d.ts.map