@fastkit/vui-wysiwyg 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/pm/changeset.d.ts +1 -0
- package/dist/pm/changeset.mjs +3 -0
- package/dist/pm/changeset.mjs.map +1 -0
- package/dist/pm/collab.d.ts +1 -0
- package/dist/pm/collab.mjs +3 -0
- package/dist/pm/collab.mjs.map +1 -0
- package/dist/pm/commands.d.ts +1 -0
- package/dist/pm/commands.mjs +3 -0
- package/dist/pm/commands.mjs.map +1 -0
- package/dist/pm/dropcursor.d.ts +1 -0
- package/dist/pm/dropcursor.mjs +3 -0
- package/dist/pm/dropcursor.mjs.map +1 -0
- package/dist/pm/gapcursor.d.ts +1 -0
- package/dist/pm/gapcursor.mjs +3 -0
- package/dist/pm/gapcursor.mjs.map +1 -0
- package/dist/pm/history.d.ts +1 -0
- package/dist/pm/history.mjs +3 -0
- package/dist/pm/history.mjs.map +1 -0
- package/dist/pm/inputrules.d.ts +1 -0
- package/dist/pm/inputrules.mjs +3 -0
- package/dist/pm/inputrules.mjs.map +1 -0
- package/dist/pm/keymap.d.ts +1 -0
- package/dist/pm/keymap.mjs +3 -0
- package/dist/pm/keymap.mjs.map +1 -0
- package/dist/pm/markdown.d.ts +1 -0
- package/dist/pm/markdown.mjs +3 -0
- package/dist/pm/markdown.mjs.map +1 -0
- package/dist/pm/menu.d.ts +1 -0
- package/dist/pm/menu.mjs +3 -0
- package/dist/pm/menu.mjs.map +1 -0
- package/dist/pm/model.d.ts +1 -0
- package/dist/pm/model.mjs +3 -0
- package/dist/pm/model.mjs.map +1 -0
- package/dist/pm/schema-basic.d.ts +1 -0
- package/dist/pm/schema-basic.mjs +3 -0
- package/dist/pm/schema-basic.mjs.map +1 -0
- package/dist/pm/schema-list.d.ts +1 -0
- package/dist/pm/schema-list.mjs +3 -0
- package/dist/pm/schema-list.mjs.map +1 -0
- package/dist/pm/state.d.ts +1 -0
- package/dist/pm/state.mjs +3 -0
- package/dist/pm/state.mjs.map +1 -0
- package/dist/pm/tables.d.ts +1 -0
- package/dist/pm/tables.mjs +3 -0
- package/dist/pm/tables.mjs.map +1 -0
- package/dist/pm/trailing-node.d.ts +1 -0
- package/dist/pm/trailing-node.mjs +3 -0
- package/dist/pm/trailing-node.mjs.map +1 -0
- package/dist/pm/transform.d.ts +1 -0
- package/dist/pm/transform.mjs +3 -0
- package/dist/pm/transform.mjs.map +1 -0
- package/dist/pm/view.d.ts +1 -0
- package/dist/pm/view.mjs +3 -0
- package/dist/pm/view.mjs.map +1 -0
- package/dist/tiptap/core.d.ts +1 -0
- package/dist/tiptap/core.mjs +3 -0
- package/dist/tiptap/core.mjs.map +1 -0
- package/dist/tiptap/extensions/bold.d.ts +1 -0
- package/dist/tiptap/extensions/bold.mjs +3 -0
- package/dist/tiptap/extensions/bold.mjs.map +1 -0
- package/dist/tiptap/extensions/bullet-list.d.ts +1 -0
- package/dist/tiptap/extensions/bullet-list.mjs +3 -0
- package/dist/tiptap/extensions/bullet-list.mjs.map +1 -0
- package/dist/tiptap/extensions/history.d.ts +1 -0
- package/dist/tiptap/extensions/history.mjs +3 -0
- package/dist/tiptap/extensions/history.mjs.map +1 -0
- package/dist/tiptap/extensions/italic.d.ts +1 -0
- package/dist/tiptap/extensions/italic.mjs +3 -0
- package/dist/tiptap/extensions/italic.mjs.map +1 -0
- package/dist/tiptap/extensions/link.d.ts +1 -0
- package/dist/tiptap/extensions/link.mjs +3 -0
- package/dist/tiptap/extensions/link.mjs.map +1 -0
- package/dist/tiptap/extensions/ordered-list.d.ts +1 -0
- package/dist/tiptap/extensions/ordered-list.mjs +3 -0
- package/dist/tiptap/extensions/ordered-list.mjs.map +1 -0
- package/dist/tiptap/extensions/text-style.d.ts +1 -0
- package/dist/tiptap/extensions/text-style.mjs +3 -0
- package/dist/tiptap/extensions/text-style.mjs.map +1 -0
- package/dist/tiptap/extensions/underline.d.ts +1 -0
- package/dist/tiptap/extensions/underline.mjs +3 -0
- package/dist/tiptap/extensions/underline.mjs.map +1 -0
- package/dist/vui-wysiwyg.css +271 -0
- package/dist/vui-wysiwyg.css.map +1 -0
- package/dist/vui-wysiwyg.d.ts +415 -0
- package/dist/vui-wysiwyg.mjs +924 -0
- package/dist/vui-wysiwyg.mjs.map +1 -0
- package/package.json +312 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemes.ts","../src/injections.ts","../src/extensions/linter/Linter.tsx","../src/extensions/linter/utils.ts","../src/extensions/linter/LinterPlugin.ts","../src/extensions/linter/plugins/BadWords.tsx","../src/extensions/linter/plugins/HeadingLevel.ts","../src/extensions/linter/plugins/Punctuation.ts","../src/extensions/color.ts","../src/tools/bullet-list.ts","../src/tools/format-bold.ts","../src/tools/format-italic.ts","../src/tools/format-underline.ts","../src/tools/history.ts","../src/tools/link.ts","../src/tools/ordered-list.ts","../src/tools/color.tsx","../src/components/VWysiwygEditor/VWysiwygEditor.tsx"],"names":["_createVNode","Extension","vui","editor"],"mappings":"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","sourcesContent":["import { type VuiService, type IconName } from '@fastkit/vui';\nimport {\n type Editor,\n type Extensions,\n type Node,\n type Extension,\n type Mark,\n type AnyExtension,\n type EditorOptions,\n} from '@tiptap/vue-3';\nimport { VNodeChild } from 'vue';\n\nconst EDITOR_EVENTS = [\n 'beforeCreate',\n 'create',\n 'update',\n 'selectionUpdate',\n 'transaction',\n 'focus',\n 'blur',\n 'destroy',\n] as const;\n\ntype PrefixedEventName<S extends string> = `on${Capitalize<S>}`;\n\nconst prefixedEventName = <S extends string>(\n source: S,\n): PrefixedEventName<S> => {\n return `on${source.charAt(0).toUpperCase()}${source.slice(1)}` as any;\n};\n\nexport type WysiwygEditorEvent = (typeof EDITOR_EVENTS)[number];\n\nexport type WysiwygEditorPrefixedEvent = PrefixedEventName<WysiwygEditorEvent>;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface WysiwygEditorEventsOptions\n extends Partial<Pick<EditorOptions, WysiwygEditorPrefixedEvent>> {}\n\nexport type WysiwygEditorEventsBucket = {\n [EV in WysiwygEditorEvent]: NonNullable<\n WysiwygEditorEventsOptions[PrefixedEventName<EV>]\n >[];\n};\n\nexport class WysiwygEditorInitializeContext {\n readonly listeners: WysiwygEditorEventsBucket = {} as any;\n private readonly _vui: () => VuiService;\n\n get vui() {\n return this._vui();\n }\n\n constructor(\n vuiGetter: () => VuiService,\n opts: WysiwygEditorEventsOptions = {},\n ) {\n this._vui = vuiGetter;\n\n EDITOR_EVENTS.forEach((event) => {\n this.listeners[event] = [];\n const prefixed = prefixedEventName(event);\n const fn = opts[prefixed];\n fn && this.listeners[event].push(fn as any);\n });\n }\n\n on<EV extends WysiwygEditorEvent>(\n ev: EV,\n handler: NonNullable<WysiwygEditorEventsOptions[PrefixedEventName<EV>]>,\n ) {\n this.listeners[ev].push(handler);\n return () => this.off(ev, handler);\n }\n\n off<EV extends WysiwygEditorEvent>(\n ev: EV,\n handler: NonNullable<WysiwygEditorEventsOptions[PrefixedEventName<EV>]>,\n ) {\n this.listeners[ev] = this.listeners[ev].filter(\n (_handler) => _handler !== handler,\n ) as any;\n }\n\n editorOptions() {\n const opts: WysiwygEditorEventsOptions = {};\n\n EDITOR_EVENTS.forEach((event) => {\n const prefixed = prefixedEventName(event);\n opts[prefixed] = (props) => {\n const handlers = this.listeners[event];\n handlers.forEach((handler) => {\n handler(props as any);\n });\n };\n });\n\n return opts;\n }\n}\n\nexport interface WysiwygEditorContext {\n editor: Editor;\n vui: VuiService;\n}\n\nexport type WysiwygExtensionFactory<Options = any, Storage = any> = (\n ctx: WysiwygEditorInitializeContext,\n) =>\n | Extension<Options, Storage>\n | Node<Options, Storage>\n | Mark<Options, Storage>;\n\nexport interface CreatedWysiwygExtension<Options = any, Storage = any> {\n __isCreatedWysiwygExtension: true;\n _configs: Partial<Options>[];\n configure(\n options?: Partial<Options>,\n ): CreatedWysiwygExtension<Options, Storage>;\n raw: WysiwygExtensionSource<Options, Storage>;\n}\n\nexport type WysiwygExtensionSource<Options = any, Storage = any> =\n | Extension<Options, Storage>\n | Node<Options, Storage>\n | Mark<Options, Storage>\n | WysiwygExtensionFactory<Options, Storage>;\n\nexport type RawWysiwygExtension<Options = any, Storage = any> =\n | WysiwygExtensionSource<Options, Storage>\n | CreatedWysiwygExtension<Options, Storage>;\n\n// export function createWysiwygExtension<Options = any, Storage = any>(\n// extension: Extension<Options, Storage>,\n// ): Extension<Options, Storage>;\n// export function createWysiwygExtension<Options = any, Storage = any>(\n// node: Node<Options, Storage>,\n// ): Node<Options, Storage>;\n// export function createWysiwygExtension<Options = any, Storage = any>(\n// mark: Mark<Options, Storage>,\n// ): Mark<Options, Storage>;\n// export function createWysiwygExtension<Options = any, Storage = any>(\n// factory: WysiwygExtensionFactory<Options, Storage>,\n// ): WysiwygExtensionFactory<Options, Storage>;\n\nfunction isCreatedWysiwygExtension<Options = any, Storage = any>(\n source: unknown,\n): source is CreatedWysiwygExtension<Options, Storage> {\n return (\n !!source &&\n typeof source === 'object' &&\n (source as CreatedWysiwygExtension).__isCreatedWysiwygExtension === true\n );\n}\n\nexport function createWysiwygExtension<Options = any, Storage = any>(\n extension: WysiwygExtensionSource<Options, Storage>,\n) {\n const ext: CreatedWysiwygExtension<Options, Storage> = {\n __isCreatedWysiwygExtension: true,\n _configs: [],\n configure: (opts) => {\n opts && ext._configs.push(opts);\n return ext;\n },\n raw: extension,\n };\n return ext;\n}\n\nfunction resolveRawWysiwygExtension(\n raw: RawWysiwygExtension,\n ctx: WysiwygEditorInitializeContext,\n): AnyExtension {\n if (isCreatedWysiwygExtension(raw)) {\n const { raw: _raw, _configs } = raw;\n let ext = typeof _raw === 'function' ? _raw(ctx) : _raw;\n _configs.forEach((config) => {\n ext = ext.configure(config);\n });\n return ext;\n }\n return typeof raw === 'function' ? raw(ctx) : raw;\n}\n\nexport function resolveRawWysiwygExtensions(\n raws: RawWysiwygExtension[],\n ctx: WysiwygEditorInitializeContext,\n) {\n return raws.map((raw) => resolveRawWysiwygExtension(raw, ctx));\n}\n\nexport interface WysiwygEditorTool {\n key: string;\n icon:\n | IconName\n | ((ctx: WysiwygEditorContext) => IconName | (() => VNodeChild));\n active?: boolean | ((ctx: WysiwygEditorContext) => boolean);\n disabled?: boolean | ((ctx: WysiwygEditorContext) => boolean);\n onClick: (ctx: WysiwygEditorContext, ev: MouseEvent) => any;\n floating?: boolean;\n extensions?: Extensions;\n}\n\nexport type WysiwygEditorToolFactory<Options = void> = (\n vui: VuiService,\n options?: Options,\n) => WysiwygEditorTool | WysiwygEditorTool[];\n\nexport type RawWysiwygEditorTool =\n | WysiwygEditorTool\n | WysiwygEditorToolFactory<any>;\n\nfunction resolveRawWysiwygEditorTool(\n raw: RawWysiwygEditorTool,\n vui: VuiService,\n) {\n return typeof raw === 'function' ? raw(vui) : raw;\n}\n\nexport interface ResolvedWysiwygEditorSettings {\n tools: WysiwygEditorTool[];\n extensions: Extensions;\n}\n\nexport function resolveRawWysiwygEditorTools(\n rawTools: RawWysiwygEditorTool[],\n vui: VuiService,\n): ResolvedWysiwygEditorSettings {\n const tools: WysiwygEditorTool[] = [];\n const extensions: Extensions = [];\n\n rawTools.forEach((raw) => {\n let resolved = resolveRawWysiwygEditorTool(raw, vui);\n if (!Array.isArray(resolved)) {\n resolved = [resolved];\n }\n resolved.forEach((tool) => {\n tools.push(tool);\n if (tool.extensions) {\n extensions.push(...tool.extensions);\n }\n });\n });\n\n return {\n tools,\n extensions,\n };\n}\n","export const VUI_WYSIWYG_EDITOR_SYMBOL = 'vui-wysiwyg-editor';\n","import { createVNode as _createVNode } from \"vue\";\nimport './Linter.scss';\nimport { Extension } from '@tiptap/vue-3';\nimport { Decoration, DecorationSet } from '@tiptap/pm/view';\nimport { Plugin, PluginKey, TextSelection } from '@tiptap/pm/state';\nimport { createWysiwygExtension } from '../../schemes';\nconst PROBLEM_CLASS_NAME = 'v-linter__problem';\nconst ISSUE_ICON_CLASS_NAME = 'v-linter__issue-icon';\nconst ISSUE_DATASET_NAME = 'data-issue-id';\nfunction resolveWysiwygLinterFixMessage(message) {\n return typeof message === 'function' ? message() : message;\n}\nfunction renderIcon(view, issue) {\n const {\n level = 'warning'\n } = issue;\n const icon = document.createElement('div');\n const message = resolveWysiwygLinterFixMessage(issue.message);\n icon.className = `${ISSUE_ICON_CLASS_NAME} ${level}-scope`;\n icon.setAttribute(ISSUE_DATASET_NAME, issue.id);\n if (typeof message === 'string') {\n icon.title = message;\n }\n return icon;\n}\nfunction runAllLinterPlugins(doc, plugins) {\n const decorations = [];\n const issues = plugins.map(RegisteredLinterPlugin => {\n return new RegisteredLinterPlugin(doc).scan().getResults();\n }).flat();\n issues.forEach(issue => {\n const {\n level = 'warning',\n icon\n } = issue;\n const message = resolveWysiwygLinterFixMessage(issue.message);\n decorations.push(Decoration.inline(issue.from, issue.to, {\n class: `${PROBLEM_CLASS_NAME} ${level}-scope`,\n 'data-issue-id': issue.id,\n title: typeof message === 'string' ? message : undefined\n }));\n if (icon) {\n decorations.push(Decoration.widget(issue.from, view => renderIcon(view, issue)));\n }\n });\n const decorationSet = DecorationSet.create(doc, decorations);\n return {\n issues,\n decorationSet\n };\n}\nexport const WysiwygLinter = createWysiwygExtension(ctx => {\n function showMenu(view, issue, event) {\n const message = resolveWysiwygLinterFixMessage(issue.message);\n const variant = ctx.vui.setting('containedVariant');\n const scope = ctx.vui.setting(`${issue.level}Scope`);\n return ctx.vui.menu({\n activator: event,\n content: stack => _createVNode(\"div\", {\n \"class\": \"v-linter__issue-menu__body\"\n }, [_createVNode(\"div\", {\n \"class\": ['v-linter__issue-menu__message', `${scope}-scope ${variant}`]\n }, [message]), issue.fix.length && _createVNode(\"div\", {\n \"class\": \"v-linter__issue-menu__fixers\"\n }, [issue.fix.map((fixer, index) => _createVNode(\"div\", {\n \"key\": index,\n \"class\": \"v-linter__issue-menu__fixer\"\n }, [_createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": \"v-linter__issue-menu__fixer__button\",\n \"onClick\": () => {\n stack.close();\n fixer.handler(view, issue);\n }\n }, [_createVNode(\"span\", {\n \"class\": \"v-linter__issue-menu__fixer__button__message\"\n }, [resolveWysiwygLinterFixMessage(fixer.message)])])]))])])\n });\n }\n return Extension.create({\n name: 'linter',\n addOptions() {\n return {\n plugins: []\n };\n },\n addStorage() {\n return {\n issues: []\n };\n },\n addProseMirrorPlugins() {\n const {\n plugins\n } = this.options;\n const {\n storage\n } = this;\n const runAll = doc => {\n const {\n issues,\n decorationSet\n } = runAllLinterPlugins(doc, plugins);\n storage.issues = issues;\n return decorationSet;\n };\n const getIssue = id => storage.issues.find(issue => issue.id === id);\n const getIssueElementByEvent = source => {\n if (!source || !(source instanceof HTMLElement)) {\n return;\n }\n const issueId = source.getAttribute(ISSUE_DATASET_NAME);\n const issue = issueId && getIssue(issueId);\n if (!issue) return;\n return {\n issue\n };\n };\n const linterPlugin = new Plugin({\n key: new PluginKey('linter'),\n state: {\n init(_, {\n doc\n }) {\n return runAll(doc);\n },\n apply(transaction, oldState) {\n return transaction.docChanged ? runAll(transaction.doc) : oldState;\n }\n },\n props: {\n decorations(state) {\n return linterPlugin.getState(state);\n },\n handleClick(view, _, event) {\n const info = getIssueElementByEvent(event.target);\n if (!info) {\n return false;\n }\n const {\n issue\n } = info;\n const {\n from,\n to\n } = issue;\n const focus = () => view.dispatch(view.state.tr.setSelection(TextSelection.create(view.state.doc, from, to)).scrollIntoView());\n focus();\n showMenu(view, issue, event);\n return true;\n }\n }\n });\n return [linterPlugin];\n }\n });\n});","let IDX = 256,\n BUFFER: any;\nconst HEX: any = [];\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function cheepUUID() {\n let i = 0,\n num,\n out = '';\n\n if (!BUFFER || IDX + 16 > 256) {\n BUFFER = Array((i = 256));\n while (i--) BUFFER[i] = (256 * Math.random()) | 0;\n i = IDX = 0;\n }\n\n for (; i < 16; i++) {\n num = BUFFER[IDX + i];\n if (i == 6) out += HEX[(num & 15) | 64];\n else if (i == 8) out += HEX[(num & 63) | 128];\n else out += HEX[num];\n\n if (i & 1 && i > 1 && i < 11) out += '-';\n }\n\n IDX++;\n return out;\n}\n","import { VNodeChild } from 'vue';\nimport { Node as ProsemirrorNode } from '@tiptap/pm/model';\nimport { EditorView } from '@tiptap/pm/view';\nimport { cheepUUID } from './utils';\n\nexport type WysiwygLinterFixFn = (\n view: EditorView,\n issue: WysiwygLinterResult,\n) => any;\n\nexport type WysiwygLinterFixMessage = string | (() => VNodeChild);\n\nexport interface WysiwygLinterFixer {\n message: WysiwygLinterFixMessage;\n handler: WysiwygLinterFixFn;\n}\n\nexport type WysiwygLinterResultLevel = 'warning' | 'error';\n\n// fixers\nexport interface WysiwygLinterResult {\n id: string;\n icon: boolean;\n level: WysiwygLinterResultLevel;\n message: WysiwygLinterFixMessage;\n from: number;\n to: number;\n fix: WysiwygLinterFixer[];\n}\n\nexport interface RawLinterResult\n extends Omit<WysiwygLinterResult, 'level' | 'fix' | 'id' | 'icon'> {\n level?: WysiwygLinterResultLevel;\n icon?: boolean;\n fix?: WysiwygLinterFixer | WysiwygLinterFixer[];\n}\n\nexport class WysiwygLinterPlugin {\n protected doc: ProsemirrorNode;\n\n private results: Array<WysiwygLinterResult> = [];\n\n constructor(doc: ProsemirrorNode) {\n this.doc = doc;\n }\n\n record(result: RawLinterResult) {\n const { fix = [], icon = false } = result;\n this.results.push({\n level: 'error',\n id: cheepUUID(),\n ...result,\n fix: Array.isArray(fix) ? fix : [fix],\n icon,\n });\n }\n\n scan() {\n return this;\n }\n\n getResults() {\n return this.results;\n }\n}\n","import { createTextVNode as _createTextVNode, createVNode as _createVNode } from \"vue\";\nimport { WysiwygLinterPlugin } from '../LinterPlugin';\nexport function WysiwygLinterBadWords(words) {\n const regex = new RegExp(`\\\\b(${words.join('|')})\\\\b`);\n return class WysiwygLinterBadWords extends WysiwygLinterPlugin {\n scan() {\n this.doc.descendants((node, position) => {\n if (!node.isText) {\n return;\n }\n const matches = regex.exec(node.text);\n if (matches) {\n const fixValue = matches[0] + '!!!!!';\n this.record({\n level: 'warning',\n message: `Try not to say '${matches[0]}'`,\n from: position + matches.index,\n to: position + matches.index + matches[0].length,\n fix: [{\n message: () => _createVNode(\"span\", null, [_createVNode(\"code\", null, [fixValue]), _createTextVNode(\"\\u306B\\u4FEE\\u6B63\\u3059\\u308B\\u3002\")]),\n handler: () => {\n console.log('hoge');\n }\n }, {\n message: 'どうにかする',\n handler: () => {\n console.log('hoge');\n }\n }]\n });\n }\n });\n return this;\n }\n };\n}","import { EditorView } from '@tiptap/pm/view';\nimport {\n WysiwygLinterPlugin,\n WysiwygLinterResult as Issue,\n} from '../LinterPlugin';\n\nexport class WysiwygLinterHeadingLevel extends WysiwygLinterPlugin {\n fixHeader(level: number) {\n return function ({ state, dispatch }: EditorView, issue: Issue) {\n dispatch(state.tr.setNodeMarkup(issue.from - 1, undefined, { level }));\n };\n }\n\n scan() {\n let lastHeadLevel: number | null = null;\n\n this.doc.descendants((node, position) => {\n if (node.type.name === 'heading') {\n // Check whether heading levels fit under the current level\n const { level } = node.attrs;\n\n if (lastHeadLevel != null && level > lastHeadLevel + 1) {\n this.record({\n message: `Heading too small (${level} under ${lastHeadLevel})`,\n from: position + 1,\n to: position + 1 + node.content.size,\n fix: {\n message: '修正する',\n handler: this.fixHeader(lastHeadLevel + 1),\n },\n });\n }\n lastHeadLevel = level;\n }\n });\n\n return this;\n }\n}\n","import { EditorView } from '@tiptap/pm/view';\nimport {\n WysiwygLinterPlugin,\n WysiwygLinterResult as Issue,\n} from '../LinterPlugin';\n\nexport class WysiwygLinterPunctuation extends WysiwygLinterPlugin {\n public regex = / ([,.!?:]) ?/g;\n\n fix(replacement: any) {\n return function ({ state, dispatch }: EditorView, issue: Issue) {\n dispatch(\n state.tr.replaceWith(\n issue.from,\n issue.to,\n state.schema.text(replacement),\n ),\n );\n };\n }\n\n scan() {\n this.doc.descendants((node, position) => {\n if (!node.isText) {\n return;\n }\n\n if (!node.text) {\n return;\n }\n\n const matches = this.regex.exec(node.text);\n\n if (matches) {\n this.record({\n message: 'Suspicious spacing around punctuation',\n from: position + matches.index,\n to: position + matches.index + matches[0].length,\n fix: {\n message: 'Fix it!!!',\n handler: this.fix(`${matches[1]} `),\n },\n });\n }\n });\n\n return this;\n }\n}\n","import { Extension } from '@tiptap/vue-3';\nimport '@tiptap/extension-text-style';\n\nexport type WysiwygColorOptions = {\n types: string[];\n};\n\ndeclare module '@tiptap/vue-3' {\n interface Commands<ReturnType> {\n color: {\n /**\n * Set the text color\n */\n setColor: (color: string) => ReturnType;\n /**\n * Unset the text color\n */\n unsetColor: () => ReturnType;\n };\n }\n}\n\nexport const WysiwygColorExtension = Extension.create<WysiwygColorOptions>({\n name: 'color',\n\n addOptions() {\n return {\n types: ['textStyle'],\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n color: {\n default: null,\n parseHTML: (element) => element.style.color.replace(/['\"]+/g, ''),\n renderHTML: (attributes) => {\n if (!attributes.color) {\n return {};\n }\n\n return {\n style: `color: ${attributes.color}`,\n };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setColor:\n (color) =>\n ({ chain }) => {\n return chain().setMark('textStyle', { color }).run();\n },\n unsetColor:\n () =>\n ({ chain }) => {\n return chain()\n .setMark('textStyle', { color: null })\n .removeEmptyTextStyle()\n .run();\n },\n };\n },\n});\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport { BulletList, BulletListOptions } from '@tiptap/extension-bullet-list';\n\nexport const WysiwygBulletListTool: WysiwygEditorToolFactory<\n BulletListOptions\n> = (vui, options) => {\n const tool: WysiwygEditorTool = {\n key: 'bulletList',\n icon: vui.icon('editorformatListBulleted'),\n active: ({ editor }) => editor.isActive('bulletList'),\n onClick: ({ editor }) => {\n editor.chain().focus().toggleBulletList().run();\n },\n floating: true,\n extensions: [BulletList.configure(options)],\n };\n return tool;\n};\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport { Bold, BoldOptions } from '@tiptap/extension-bold';\n\nexport const WysiwygFormatBoldTool: WysiwygEditorToolFactory<BoldOptions> = (\n vui,\n options,\n) => {\n const tool: WysiwygEditorTool = {\n key: 'formatBold',\n icon: vui.icon('editorformatBold'),\n active: ({ editor }) => editor.isActive('bold'),\n onClick: ({ editor }) => {\n editor.chain().focus().toggleBold().run();\n },\n floating: true,\n extensions: [Bold.configure(options)],\n };\n return tool;\n};\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport { Italic, ItalicOptions } from '@tiptap/extension-italic';\n\nexport const WysiwygFormatItalicTool: WysiwygEditorToolFactory<\n ItalicOptions\n> = (vui, options) => {\n const tool: WysiwygEditorTool = {\n key: 'formatItalic',\n icon: vui.icon('editorformatItalic'),\n active: ({ editor }) => editor.isActive('italic'),\n onClick: ({ editor }) => {\n editor.chain().focus().toggleItalic().run();\n },\n floating: true,\n extensions: [Italic.configure(options)],\n };\n return tool;\n};\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport { Underline, UnderlineOptions } from '@tiptap/extension-underline';\n\nexport const WysiwygFormatUnderlineTool: WysiwygEditorToolFactory<\n UnderlineOptions\n> = (vui, options) => {\n const tool: WysiwygEditorTool = {\n key: 'formatUnderline',\n icon: vui.icon('editorformatUnderline'),\n active: ({ editor }) => editor.isActive('underline'),\n onClick: ({ editor }) => {\n editor.chain().focus().toggleUnderline().run();\n },\n floating: true,\n extensions: [Underline.configure(options)],\n };\n return tool;\n};\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport { History, HistoryOptions } from '@tiptap/extension-history';\n\nexport const WysiwygHistoryTool: WysiwygEditorToolFactory<HistoryOptions> = (\n vui,\n options,\n) => {\n const undo: WysiwygEditorTool = {\n key: 'history-undo',\n icon: vui.icon('editorUndo'),\n disabled: ({ editor }) => !editor.can().undo(),\n onClick: ({ editor }) => {\n editor.chain().focus().undo().run();\n },\n extensions: [History.configure(options)],\n };\n const redo: WysiwygEditorTool = {\n key: 'history-redo',\n icon: vui.icon('editorRedo'),\n disabled: ({ editor }) => !editor.can().redo(),\n onClick: ({ editor }) => {\n editor.chain().focus().redo().run();\n },\n };\n return [undo, redo];\n};\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport { Link, LinkOptions } from '@tiptap/extension-link';\nimport { validateIf, url } from '@fastkit/vui';\n\nexport const WysiwygLinkTool: WysiwygEditorToolFactory<LinkOptions> = (\n vui,\n options,\n) => {\n const tool: WysiwygEditorTool = {\n key: 'link',\n // icon: ({ editor }) => {\n // return vui.icon(editor.isActive('link') ? 'editorLinkOff' : 'editorLink');\n // },\n icon: vui.icon('editorLink'),\n active: ({ editor }) => editor.isActive('link'),\n // disabled: ({ editor }) => {\n // const { $from, $to } = editor.view.state.selection;\n // return $to.pos - $from.pos === 0;\n // },\n onClick: async ({ vui, editor }) => {\n const { href = '' } = editor.getAttributes('link');\n const result = await vui.prompt({\n input: {\n label: 'Link URL',\n rules: [validateIf, url],\n initialValue: href,\n size: 'sm',\n autofocus: true,\n },\n });\n\n if (result === undefined || result === false) {\n return;\n }\n\n const range = editor.chain().focus().extendMarkRange('link');\n\n if (!result) {\n range.unsetLink().run();\n } else {\n range\n .setLink({\n href: result,\n })\n .run();\n }\n },\n floating: true,\n extensions: [\n Link.configure({\n openOnClick: false,\n ...options,\n }),\n ],\n };\n return tool;\n};\n","import { WysiwygEditorToolFactory, WysiwygEditorTool } from '../schemes';\nimport {\n OrderedList,\n OrderedListOptions,\n} from '@tiptap/extension-ordered-list';\n\nexport const WysiwygOrderedListTool: WysiwygEditorToolFactory<\n OrderedListOptions\n> = (vui, options) => {\n const tool: WysiwygEditorTool = {\n key: 'orderedList',\n icon: vui.icon('editorformatListNumbered'),\n active: ({ editor }) => editor.isActive('orderedList'),\n onClick: ({ editor }) => {\n editor.chain().focus().toggleOrderedList().run();\n },\n floating: true,\n extensions: [OrderedList.configure(options)],\n };\n return tool;\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport './color.scss';\nimport { WysiwygColorExtension } from '../extensions';\nimport { VIcon } from '@fastkit/vui';\nimport TextStyle from '@tiptap/extension-text-style';\nexport function createWysiwygColorTool(opts) {\n const WysiwygColorTool = vui => {\n const tool = {\n key: 'textColor',\n // active: ({ editor }) => editor.isActive('textStyle'),\n icon: ({\n editor\n }) => () => {\n const color = editor.getAttributes('textStyle').color;\n const style = {\n color\n };\n return _createVNode(\"span\", {\n \"class\": \"v-wysiwyg-color-tool__button\"\n }, [_createVNode(VIcon, {\n \"class\": \"v-wysiwyg-color-tool__button__icon\",\n \"name\": vui.icon('editorTextColor')\n }, null), _createVNode(\"span\", {\n \"class\": \"v-wysiwyg-color-tool__button__bar\",\n \"style\": style\n }, null)]);\n },\n onClick: (ctx, ev) => {\n ctx.vui.menu({\n class: 'v-wysiwyg-color-tool__menu',\n activator: ev,\n content: stack => _createVNode(\"div\", {\n \"class\": ['v-wysiwyg-color-tool__items', {\n 'v-wysiwyg-color-tool__items--with-label': opts.withLabel\n }]\n }, [opts.items.map((item, index) => _createVNode(\"button\", {\n \"key\": item.key == null ? index : item.key,\n \"class\": \"v-wysiwyg-color-tool__item\",\n \"type\": \"button\",\n \"onClick\": () => {\n const {\n color\n } = item;\n let command = ctx.editor.chain().focus();\n if (color) {\n command = command.setColor(color);\n } else {\n command = command.unsetColor();\n }\n command.run();\n stack.close();\n }\n }, [_createVNode(\"span\", {\n \"class\": \"v-wysiwyg-color-tool__item__color\",\n \"style\": item.color ? {\n color: item.color\n } : {}\n }, null), opts.withLabel && _createVNode(\"span\", {\n \"class\": \"v-wysiwyg-color-tool__item__name\"\n }, [item.name])]))])\n });\n },\n floating: true,\n extensions: [TextStyle, WysiwygColorExtension]\n };\n return tool;\n };\n return WysiwygColorTool;\n}","import { resolveDirective as _resolveDirective, mergeProps as _mergeProps, createVNode as _createVNode, isVNode as _isVNode } from \"vue\";\nimport './VWysiwygEditor.scss';\nimport { defineComponent, computed, ref, watch, onBeforeUnmount } from 'vue';\nimport { createFormControlProps, VFormControl, VControlField, createControlFieldProps, createTextableProps, createTextableEmits, TextableControl, createControlProps, useControl, createControlFieldProviderProps, useControlField, VTextCounter, defineSlotsProps, useVui, VButton, VButtonGroup } from '@fastkit/vui';\nimport { VUI_WYSIWYG_EDITOR_SYMBOL } from '../../injections';\nimport { EditorContent, useEditor, BubbleMenu } from '@tiptap/vue-3';\nimport { StarterKit } from '@tiptap/starter-kit';\nimport { resolveRawWysiwygExtensions, resolveRawWysiwygEditorTools,\n// EditorEventsOptions,\nWysiwygEditorInitializeContext } from '../../schemes';\nfunction _isSlot(s) {\n return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);\n}\nexport const VWysiwygEditor = defineComponent({\n name: 'VWysiwygEditor',\n props: {\n ...createTextableProps(),\n ...createFormControlProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...defineSlotsProps(),\n extensions: {\n type: Array,\n default: () => []\n },\n tools: {\n type: Array,\n default: () => []\n },\n floatingToolbar: Boolean,\n disabledMinHeight: Boolean,\n disabledMaxHeight: Boolean\n },\n emits: {\n ...createTextableEmits()\n },\n setup(props, ctx) {\n const vui = useVui();\n const textRef = ref('');\n const toolButtonActiveColor = vui.setting('primaryScope');\n const wysiwygSettings = computed(() => resolveRawWysiwygEditorTools(props.tools, vui));\n const control = useControl(props);\n useControlField(props);\n const inputControl = new TextableControl(props, ctx, {\n nodeType: VUI_WYSIWYG_EDITOR_SYMBOL,\n validationValue: () => textRef.value\n });\n const initializeCtx = new WysiwygEditorInitializeContext(() => vui, {\n onCreate: ({\n editor\n }) => {\n textRef.value = editor.getText();\n updateEditable();\n },\n onFocus: ({\n event\n }) => {\n inputControl.focusHandler(event);\n },\n onBlur: ({\n event\n }) => {\n inputControl.blurHandler(event);\n },\n onUpdate: ({\n editor\n }) => {\n inputControl.value = editor.getHTML();\n textRef.value = editor.getText();\n }\n });\n const extensions = [StarterKit.configure({\n bold: false,\n bulletList: false,\n orderedList: false,\n history: false,\n italic: false\n }),\n // Linter.configure({\n // plugins: [BadWords(['abc', 'evidently']), Punctuation, HeadingLevel],\n // }),\n ...resolveRawWysiwygExtensions(props.extensions, initializeCtx), ...wysiwygSettings.value.extensions];\n const updateEditable = () => {\n if (!editor.value) return;\n editor.value.setEditable(inputControl.canOperation);\n };\n watch(() => inputControl.canOperation, updateEditable);\n watch(() => props.modelValue, modelValue => {\n const $editor = editor.value;\n if (!$editor || $editor.getHTML() === modelValue) return;\n $editor.commands.setContent(modelValue == null ? '' : modelValue, false);\n textRef.value = $editor.getText();\n });\n initializeCtx.on('create', ({\n editor\n }) => {\n textRef.value = editor.getText();\n updateEditable();\n });\n const editor = useEditor({\n ...initializeCtx.editorOptions(),\n autofocus: props.autofocus,\n content: props.modelValue,\n extensions,\n editorProps: {\n attributes: {\n class: 'v-wysiwyg-editor__input__prose'\n }\n }\n });\n\n // editor.value.state.doc.content\n\n const focus = (position, options) => {\n if (!editor.value) return;\n return editor.value.chain().focus(position, options);\n };\n const blur = () => {\n if (!editor.value) return;\n return editor.value.chain().blur();\n };\n const wysiwygContext = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const _editor = editor.value;\n // if (!_editor) {\n // throw new Error('missing editor value');\n // }\n return {\n vui,\n editor: _editor\n };\n });\n const createTools = (bubbleMenu = false) => {\n let _slot;\n const {\n value: settings\n } = wysiwygSettings;\n const {\n value: context\n } = wysiwygContext;\n const tools = bubbleMenu ? settings.tools.filter(t => !!t.floating) : settings.tools;\n const _editor = editor.value;\n const variant = vui.setting(bubbleMenu ? 'containedVariant' : 'plainVariant');\n return _createVNode(VButtonGroup, {\n \"class\": ['v-wysiwyg-editor__toolbar', {\n 'v-wysiwyg-editor__floating-toolbar': props.floatingToolbar\n }],\n \"variant\": variant\n }, _isSlot(_slot = tools.map(({\n key,\n icon,\n onClick,\n disabled,\n active\n }) => {\n const isActive = !!_editor && resolveContextableValue(context, active);\n const isDisabled = !inputControl.canOperation || !!_editor && resolveContextableValue(context, disabled);\n let iconName;\n let child;\n if (typeof icon === 'function') {\n if (_editor) {\n const _child = icon(context);\n if (typeof _child === 'function') {\n child = _child();\n } else {\n iconName = _child;\n }\n }\n } else {\n iconName = icon;\n }\n if (!iconName && child == null) return;\n return _createVNode(VButton, {\n \"tabindex\": -1,\n \"key\": key,\n \"icon\": iconName,\n \"onClick\": ev => onClick(context, ev),\n \"color\": isActive ? toolButtonActiveColor : undefined,\n \"disabled\": isDisabled\n }, _isSlot(child) ? child : {\n default: () => [child]\n });\n })) ? _slot : {\n default: () => [_slot]\n });\n };\n onBeforeUnmount(() => {\n editor.value && editor.value.destroy();\n });\n return {\n editor,\n ...inputControl.expose(),\n ...control,\n focus,\n blur,\n createTools\n };\n },\n render() {\n return _createVNode(VFormControl, {\n \"nodeControl\": this.nodeControl,\n \"focused\": this.nodeControl.focused,\n \"class\": ['v-wysiwyg-editor', this.classes, `v-wysiwyg-editor--${this.size}`, {\n 'v-wysiwyg-editor--disabled-min-heihgt': this.disabledMinHeight,\n 'v-wysiwyg-editor--disabled-max-heihgt': this.disabledMaxHeight\n }],\n \"label\": this.label,\n \"hint\": this.hint,\n \"hinttip\": this.hinttip,\n \"hiddenInfo\": this.hiddenInfo,\n \"requiredChip\": this.requiredChip,\n \"onClickLabel\": ev => {\n this.focus('start', {\n scrollIntoView: true\n });\n }\n }, {\n ...this.$slots,\n default: () => {\n const {\n editor\n } = this;\n return _createVNode(\"div\", {\n \"class\": \"v-wysiwyg-editor__wrapper\"\n }, [!this.isReadonly && this.createTools(), _createVNode(VControlField, {\n \"class\": \"v-wysiwyg-editor__input\",\n \"autoHeight\": true,\n \"startAdornment\": this.startAdornment,\n \"endAdornment\": this.endAdornment,\n \"size\": this.size\n }, {\n ...this.$slots,\n default: () => {\n let _slot2;\n return _createVNode(\"div\", {\n \"class\": \"v-wysiwyg-editor__body\"\n }, [_createVNode(EditorContent, _mergeProps({\n class: 'v-wysiwyg-editor__input__element wysiwyg'\n }, {\n \"editor\": editor\n }), null), !this.floatingToolbar && !!editor && !this.isReadonly && _createVNode(BubbleMenu, _mergeProps({\n class: 'v-wysiwyg-editor__bubble-menu'\n }, {\n \"editor\": editor\n }), _isSlot(_slot2 = this.createTools(true)) ? _slot2 : {\n default: () => [_slot2]\n })]);\n }\n })]);\n },\n infoAppends: () => {\n const {\n counterResult\n } = this;\n if (!counterResult) return;\n return _createVNode(VTextCounter, counterResult, null);\n }\n });\n }\n});\nfunction resolveContextableValue(ctx, source) {\n return typeof source === 'function' ? source(ctx) : source;\n}"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fastkit/vui-wysiwyg",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "vui-wysiwyg",
|
|
5
|
+
"keywords": [],
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/dadajam4/fastkit.git"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"author": "dadajam4",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"exports": {
|
|
14
|
+
"./package.json": "./package.json",
|
|
15
|
+
"./vui-wysiwyg.css": "./dist/vui-wysiwyg.css",
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/vui-wysiwyg.d.ts",
|
|
18
|
+
"import": {
|
|
19
|
+
"default": "./dist/vui-wysiwyg.mjs"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"./tiptap/core": {
|
|
23
|
+
"types": "./dist/tiptap/core.d.ts",
|
|
24
|
+
"import": {
|
|
25
|
+
"default": "./dist/tiptap/core.mjs"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"./pm/view": {
|
|
29
|
+
"types": "./dist/pm/view.d.ts",
|
|
30
|
+
"import": {
|
|
31
|
+
"default": "./dist/pm/view.mjs"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"./pm/transform": {
|
|
35
|
+
"types": "./dist/pm/transform.d.ts",
|
|
36
|
+
"import": {
|
|
37
|
+
"default": "./dist/pm/transform.mjs"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"./pm/trailing-node": {
|
|
41
|
+
"types": "./dist/pm/trailing-node.d.ts",
|
|
42
|
+
"import": {
|
|
43
|
+
"default": "./dist/pm/trailing-node.mjs"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"./pm/tables": {
|
|
47
|
+
"types": "./dist/pm/tables.d.ts",
|
|
48
|
+
"import": {
|
|
49
|
+
"default": "./dist/pm/tables.mjs"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"./pm/state": {
|
|
53
|
+
"types": "./dist/pm/state.d.ts",
|
|
54
|
+
"import": {
|
|
55
|
+
"default": "./dist/pm/state.mjs"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"./pm/schema-list": {
|
|
59
|
+
"types": "./dist/pm/schema-list.d.ts",
|
|
60
|
+
"import": {
|
|
61
|
+
"default": "./dist/pm/schema-list.mjs"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"./pm/schema-basic": {
|
|
65
|
+
"types": "./dist/pm/schema-basic.d.ts",
|
|
66
|
+
"import": {
|
|
67
|
+
"default": "./dist/pm/schema-basic.mjs"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"./pm/model": {
|
|
71
|
+
"types": "./dist/pm/model.d.ts",
|
|
72
|
+
"import": {
|
|
73
|
+
"default": "./dist/pm/model.mjs"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"./pm/menu": {
|
|
77
|
+
"types": "./dist/pm/menu.d.ts",
|
|
78
|
+
"import": {
|
|
79
|
+
"default": "./dist/pm/menu.mjs"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"./pm/markdown": {
|
|
83
|
+
"types": "./dist/pm/markdown.d.ts",
|
|
84
|
+
"import": {
|
|
85
|
+
"default": "./dist/pm/markdown.mjs"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"./pm/keymap": {
|
|
89
|
+
"types": "./dist/pm/keymap.d.ts",
|
|
90
|
+
"import": {
|
|
91
|
+
"default": "./dist/pm/keymap.mjs"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"./pm/inputrules": {
|
|
95
|
+
"types": "./dist/pm/inputrules.d.ts",
|
|
96
|
+
"import": {
|
|
97
|
+
"default": "./dist/pm/inputrules.mjs"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"./pm/history": {
|
|
101
|
+
"types": "./dist/pm/history.d.ts",
|
|
102
|
+
"import": {
|
|
103
|
+
"default": "./dist/pm/history.mjs"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"./pm/gapcursor": {
|
|
107
|
+
"types": "./dist/pm/gapcursor.d.ts",
|
|
108
|
+
"import": {
|
|
109
|
+
"default": "./dist/pm/gapcursor.mjs"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"./pm/dropcursor": {
|
|
113
|
+
"types": "./dist/pm/dropcursor.d.ts",
|
|
114
|
+
"import": {
|
|
115
|
+
"default": "./dist/pm/dropcursor.mjs"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"./pm/commands": {
|
|
119
|
+
"types": "./dist/pm/commands.d.ts",
|
|
120
|
+
"import": {
|
|
121
|
+
"default": "./dist/pm/commands.mjs"
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"./pm/collab": {
|
|
125
|
+
"types": "./dist/pm/collab.d.ts",
|
|
126
|
+
"import": {
|
|
127
|
+
"default": "./dist/pm/collab.mjs"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"./pm/changeset": {
|
|
131
|
+
"types": "./dist/pm/changeset.d.ts",
|
|
132
|
+
"import": {
|
|
133
|
+
"default": "./dist/pm/changeset.mjs"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"./tiptap/extensions/underline": {
|
|
137
|
+
"types": "./dist/tiptap/extensions/underline.d.ts",
|
|
138
|
+
"import": {
|
|
139
|
+
"default": "./dist/tiptap/extensions/underline.mjs"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"./tiptap/extensions/text-style": {
|
|
143
|
+
"types": "./dist/tiptap/extensions/text-style.d.ts",
|
|
144
|
+
"import": {
|
|
145
|
+
"default": "./dist/tiptap/extensions/text-style.mjs"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"./tiptap/extensions/ordered-list": {
|
|
149
|
+
"types": "./dist/tiptap/extensions/ordered-list.d.ts",
|
|
150
|
+
"import": {
|
|
151
|
+
"default": "./dist/tiptap/extensions/ordered-list.mjs"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"./tiptap/extensions/link": {
|
|
155
|
+
"types": "./dist/tiptap/extensions/link.d.ts",
|
|
156
|
+
"import": {
|
|
157
|
+
"default": "./dist/tiptap/extensions/link.mjs"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"./tiptap/extensions/italic": {
|
|
161
|
+
"types": "./dist/tiptap/extensions/italic.d.ts",
|
|
162
|
+
"import": {
|
|
163
|
+
"default": "./dist/tiptap/extensions/italic.mjs"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"./tiptap/extensions/history": {
|
|
167
|
+
"types": "./dist/tiptap/extensions/history.d.ts",
|
|
168
|
+
"import": {
|
|
169
|
+
"default": "./dist/tiptap/extensions/history.mjs"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"./tiptap/extensions/bullet-list": {
|
|
173
|
+
"types": "./dist/tiptap/extensions/bullet-list.d.ts",
|
|
174
|
+
"import": {
|
|
175
|
+
"default": "./dist/tiptap/extensions/bullet-list.mjs"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"./tiptap/extensions/bold": {
|
|
179
|
+
"types": "./dist/tiptap/extensions/bold.d.ts",
|
|
180
|
+
"import": {
|
|
181
|
+
"default": "./dist/tiptap/extensions/bold.mjs"
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"./*": "./dist/*"
|
|
185
|
+
},
|
|
186
|
+
"main": "./dist/vui-wysiwyg.mjs",
|
|
187
|
+
"types": "./dist/vui-wysiwyg.d.ts",
|
|
188
|
+
"typesVersions": {
|
|
189
|
+
"*": {
|
|
190
|
+
".": [
|
|
191
|
+
"./dist/vui-wysiwyg.d.ts"
|
|
192
|
+
],
|
|
193
|
+
"tiptap/core": [
|
|
194
|
+
"./dist/tiptap/core.d.ts"
|
|
195
|
+
],
|
|
196
|
+
"pm/view": [
|
|
197
|
+
"./dist/pm/view.d.ts"
|
|
198
|
+
],
|
|
199
|
+
"pm/transform": [
|
|
200
|
+
"./dist/pm/transform.d.ts"
|
|
201
|
+
],
|
|
202
|
+
"pm/trailing-node": [
|
|
203
|
+
"./dist/pm/trailing-node.d.ts"
|
|
204
|
+
],
|
|
205
|
+
"pm/tables": [
|
|
206
|
+
"./dist/pm/tables.d.ts"
|
|
207
|
+
],
|
|
208
|
+
"pm/state": [
|
|
209
|
+
"./dist/pm/state.d.ts"
|
|
210
|
+
],
|
|
211
|
+
"pm/schema-list": [
|
|
212
|
+
"./dist/pm/schema-list.d.ts"
|
|
213
|
+
],
|
|
214
|
+
"pm/schema-basic": [
|
|
215
|
+
"./dist/pm/schema-basic.d.ts"
|
|
216
|
+
],
|
|
217
|
+
"pm/model": [
|
|
218
|
+
"./dist/pm/model.d.ts"
|
|
219
|
+
],
|
|
220
|
+
"pm/menu": [
|
|
221
|
+
"./dist/pm/menu.d.ts"
|
|
222
|
+
],
|
|
223
|
+
"pm/markdown": [
|
|
224
|
+
"./dist/pm/markdown.d.ts"
|
|
225
|
+
],
|
|
226
|
+
"pm/keymap": [
|
|
227
|
+
"./dist/pm/keymap.d.ts"
|
|
228
|
+
],
|
|
229
|
+
"pm/inputrules": [
|
|
230
|
+
"./dist/pm/inputrules.d.ts"
|
|
231
|
+
],
|
|
232
|
+
"pm/history": [
|
|
233
|
+
"./dist/pm/history.d.ts"
|
|
234
|
+
],
|
|
235
|
+
"pm/gapcursor": [
|
|
236
|
+
"./dist/pm/gapcursor.d.ts"
|
|
237
|
+
],
|
|
238
|
+
"pm/dropcursor": [
|
|
239
|
+
"./dist/pm/dropcursor.d.ts"
|
|
240
|
+
],
|
|
241
|
+
"pm/commands": [
|
|
242
|
+
"./dist/pm/commands.d.ts"
|
|
243
|
+
],
|
|
244
|
+
"pm/collab": [
|
|
245
|
+
"./dist/pm/collab.d.ts"
|
|
246
|
+
],
|
|
247
|
+
"pm/changeset": [
|
|
248
|
+
"./dist/pm/changeset.d.ts"
|
|
249
|
+
],
|
|
250
|
+
"tiptap/extensions/underline": [
|
|
251
|
+
"./dist/tiptap/extensions/underline.d.ts"
|
|
252
|
+
],
|
|
253
|
+
"tiptap/extensions/text-style": [
|
|
254
|
+
"./dist/tiptap/extensions/text-style.d.ts"
|
|
255
|
+
],
|
|
256
|
+
"tiptap/extensions/ordered-list": [
|
|
257
|
+
"./dist/tiptap/extensions/ordered-list.d.ts"
|
|
258
|
+
],
|
|
259
|
+
"tiptap/extensions/link": [
|
|
260
|
+
"./dist/tiptap/extensions/link.d.ts"
|
|
261
|
+
],
|
|
262
|
+
"tiptap/extensions/italic": [
|
|
263
|
+
"./dist/tiptap/extensions/italic.d.ts"
|
|
264
|
+
],
|
|
265
|
+
"tiptap/extensions/history": [
|
|
266
|
+
"./dist/tiptap/extensions/history.d.ts"
|
|
267
|
+
],
|
|
268
|
+
"tiptap/extensions/bullet-list": [
|
|
269
|
+
"./dist/tiptap/extensions/bullet-list.d.ts"
|
|
270
|
+
],
|
|
271
|
+
"tiptap/extensions/bold": [
|
|
272
|
+
"./dist/tiptap/extensions/bold.d.ts"
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"files": [
|
|
277
|
+
"dist"
|
|
278
|
+
],
|
|
279
|
+
"dependencies": {
|
|
280
|
+
"@tiptap/extension-bold": "^2.0.2",
|
|
281
|
+
"@tiptap/extension-bullet-list": "^2.0.2",
|
|
282
|
+
"@tiptap/extension-history": "^2.0.2",
|
|
283
|
+
"@tiptap/extension-italic": "^2.0.2",
|
|
284
|
+
"@tiptap/extension-link": "^2.0.2",
|
|
285
|
+
"@tiptap/extension-ordered-list": "^2.0.2",
|
|
286
|
+
"@tiptap/extension-text-style": "^2.0.2",
|
|
287
|
+
"@tiptap/extension-underline": "^2.0.2",
|
|
288
|
+
"@tiptap/pm": "^2.0.2",
|
|
289
|
+
"@tiptap/starter-kit": "^2.0.2",
|
|
290
|
+
"@tiptap/vue-3": "^2.0.2"
|
|
291
|
+
},
|
|
292
|
+
"devDependencies": {
|
|
293
|
+
"@fastkit/vui": "0.12.10"
|
|
294
|
+
},
|
|
295
|
+
"peerDependencies": {
|
|
296
|
+
"vue": "^3.2.0",
|
|
297
|
+
"@fastkit/vui": "0.12.10"
|
|
298
|
+
},
|
|
299
|
+
"scripts": {
|
|
300
|
+
"build": "plugboy build",
|
|
301
|
+
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
|
|
302
|
+
"eslint": "eslint . --ext ts,tsx,js,vue,html,yaml",
|
|
303
|
+
"eslint:fix": "eslint . --ext ts,tsx,js,vue,html,yaml --fix",
|
|
304
|
+
"format": "pnpm run \"/^(eslint:fix|stylelint:fix)$/\"",
|
|
305
|
+
"lint": "pnpm run \"/^(eslint|stylelint)$/\"",
|
|
306
|
+
"stub": "plugboy stub",
|
|
307
|
+
"stylelint": "stylelint \"**/*.{css,scss,vue,html}\" --allow-empty-input",
|
|
308
|
+
"stylelint:fix": "stylelint \"**/*.{css,scss,vue,html}\" --fix --allow-empty-input",
|
|
309
|
+
"test": "vitest run",
|
|
310
|
+
"typecheck": "tsc --noEmit"
|
|
311
|
+
}
|
|
312
|
+
}
|