@jvs-milkdown/components 1.1.4 → 1.1.6
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/lib/__internal__/components/image-input.d.ts.map +1 -1
- package/lib/code-block/index.js +12 -3382
- package/lib/code-block/index.js.map +1 -1
- package/lib/image-block/convert-plugin.d.ts +2 -0
- package/lib/image-block/convert-plugin.d.ts.map +1 -0
- package/lib/image-block/index.d.ts +2 -0
- package/lib/image-block/index.d.ts.map +1 -1
- package/lib/image-block/index.js +345 -75
- package/lib/image-block/index.js.map +1 -1
- package/lib/image-block/paste-rule.d.ts +2 -0
- package/lib/image-block/paste-rule.d.ts.map +1 -0
- package/lib/image-block/schema.d.ts.map +1 -1
- package/lib/image-block/view/components/image-block.d.ts +1 -0
- package/lib/image-block/view/components/image-block.d.ts.map +1 -1
- package/lib/image-block/view/components/image-viewer.d.ts.map +1 -1
- package/lib/image-block/view/index.d.ts.map +1 -1
- package/lib/image-inline/index.js +27 -6
- package/lib/image-inline/index.js.map +1 -1
- package/lib/link-tooltip/edit/component.d.ts.map +1 -1
- package/lib/link-tooltip/index.js +19 -1861
- package/lib/link-tooltip/index.js.map +1 -1
- package/lib/list-item-block/index.js +1 -1857
- package/lib/list-item-block/index.js.map +1 -1
- package/lib/table-block/dnd/drag-over-handler.d.ts.map +1 -1
- package/lib/table-block/index.js +140 -2984
- package/lib/table-block/index.js.map +1 -1
- package/lib/table-block/view/component.d.ts.map +1 -1
- package/lib/table-block/view/drag.d.ts +3 -0
- package/lib/table-block/view/drag.d.ts.map +1 -1
- package/lib/table-block/view/utils.d.ts.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/__internal__/components/image-input.tsx +45 -12
- package/src/image-block/__tests__/paste-rule.spec.ts +20 -0
- package/src/image-block/convert-plugin.ts +147 -0
- package/src/image-block/index.ts +6 -0
- package/src/image-block/paste-rule.ts +138 -0
- package/src/image-block/schema.ts +15 -0
- package/src/image-block/view/components/image-block.tsx +5 -0
- package/src/image-block/view/components/image-viewer.tsx +4 -0
- package/src/image-block/view/index.ts +8 -0
- package/src/link-tooltip/edit/component.tsx +27 -3
- package/src/table-block/dnd/create-drag-handler.ts +5 -1
- package/src/table-block/dnd/drag-over-handler.ts +29 -1
- package/src/table-block/dnd/preview.ts +3 -3
- package/src/table-block/view/component.tsx +121 -39
- package/src/table-block/view/drag.ts +29 -16
- package/src/table-block/view/utils.ts +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/image-block/config.ts","../../src/image-block/remark-plugin.ts","../../src/image-block/schema.ts","../../src/__internal__/keep-alive.ts","../../src/__internal__/components/icon.tsx","../../src/__internal__/components/image-input.tsx","../../src/image-block/view/components/image-viewer.tsx","../../src/image-block/view/components/image-block.tsx","../../src/image-block/view/index.ts","../../src/image-block/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import { $ctx } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport interface ImageBlockConfig {\n imageIcon: string | undefined\n captionIcon: string | undefined\n uploadButton: string | undefined\n confirmButton: string | undefined\n uploadPlaceholderText: string\n captionPlaceholderText: string\n onUpload: (file: File) => Promise<string>\n proxyDomURL?: (url: string) => Promise<string> | string\n onImageLoadError?: (event: Event) => void | Promise<void>\n maxWidth?: number\n maxHeight?: number\n}\n\nexport const defaultImageBlockConfig: ImageBlockConfig = {\n imageIcon: '🌌',\n captionIcon: '💬',\n uploadButton: 'Upload file',\n confirmButton: 'Confirm ⏎',\n uploadPlaceholderText: 'or paste the image link ...',\n captionPlaceholderText: 'Image caption',\n onUpload: (file) => Promise.resolve(URL.createObjectURL(file)),\n}\n\nexport const imageBlockConfig = $ctx(\n defaultImageBlockConfig,\n 'imageBlockConfigCtx'\n)\n\nwithMeta(imageBlockConfig, {\n displayName: 'Config<image-block>',\n group: 'ImageBlock',\n})\n","import type { Node } from '@jvs-milkdown/transformer'\n\nimport { $remark } from '@jvs-milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__/meta'\n\nfunction visitImage(ast: Node) {\n return visit(\n ast,\n 'paragraph',\n (\n node: Node & { children?: Node[] },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n if (node.children?.length !== 1) return\n const firstChild = node.children?.[0]\n if (!firstChild || firstChild.type !== 'image') return\n\n const { url, alt, title } = firstChild as Node & {\n url: string\n alt: string\n title: string\n }\n const newNode = {\n type: 'image-block',\n url,\n alt,\n title,\n }\n\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\nexport const remarkImageBlockPlugin = $remark(\n 'remark-image-block',\n () => () => visitImage\n)\n\nwithMeta(remarkImageBlockPlugin.plugin, {\n displayName: 'Remark<remarkImageBlock>',\n group: 'ImageBlock',\n})\n\nwithMeta(remarkImageBlockPlugin.options, {\n displayName: 'RemarkConfig<remarkImageBlock>',\n group: 'ImageBlock',\n})\n","import { expectDomTypeError } from '@jvs-milkdown/exception'\nimport { $nodeSchema } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport const IMAGE_DATA_TYPE = 'image-block'\n\nexport const imageBlockSchema = $nodeSchema('image-block', () => {\n return {\n inline: false,\n group: 'block',\n selectable: true,\n draggable: true,\n isolating: true,\n marks: '',\n atom: true,\n priority: 100,\n attrs: {\n src: { default: '', validate: 'string' },\n caption: { default: '', validate: 'string' },\n ratio: { default: 1, validate: 'number' },\n },\n parseDOM: [\n {\n tag: `img[data-type=\"${IMAGE_DATA_TYPE}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n src: dom.getAttribute('src') || '',\n caption: dom.getAttribute('caption') || '',\n ratio: Number(dom.getAttribute('ratio') ?? 1),\n }\n },\n },\n ],\n toDOM: (node) => ['img', { 'data-type': IMAGE_DATA_TYPE, ...node.attrs }],\n parseMarkdown: {\n match: ({ type }) => type === 'image-block',\n runner: (state, node, type) => {\n const src = node.url as string\n const caption = node.title as string\n let ratio = Number((node.alt as string) || 1)\n if (Number.isNaN(ratio) || ratio === 0) ratio = 1\n\n state.addNode(type, {\n src,\n caption,\n ratio,\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'image-block',\n runner: (state, node) => {\n state.openNode('paragraph')\n state.addNode('image', undefined, undefined, {\n title: node.attrs.caption,\n url: node.attrs.src,\n alt: `${Number.parseFloat(node.attrs.ratio).toFixed(2)}`,\n })\n state.closeNode()\n },\n },\n }\n})\n\nwithMeta(imageBlockSchema.node, {\n displayName: 'NodeSchema<image-block>',\n group: 'ImageBlock',\n})\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import clsx from 'clsx'\nimport DOMPurify from 'dompurify'\nimport { h } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\n\nkeepAlive(h)\n\ntype IconProps = {\n icon?: string | null\n class?: string\n onClick?: (event: PointerEvent) => void\n}\n\nexport function Icon({ icon, class: className, onClick }: IconProps) {\n return (\n <span\n class={clsx('milkdown-icon', className)}\n onPointerdown={onClick}\n innerHTML={icon ? DOMPurify.sanitize(icon.trim()) : undefined}\n />\n )\n}\n\nIcon.props = {\n icon: {\n type: String,\n required: false,\n },\n class: {\n type: String,\n required: false,\n },\n onClick: {\n type: Function,\n required: false,\n },\n}\n","import clsx from 'clsx'\nimport { customAlphabet } from 'nanoid'\nimport { defineComponent, ref, h, type Ref } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\nimport { Icon } from './icon'\n\nkeepAlive(h)\n\nconst nanoid = customAlphabet('abcdefg', 8)\n\ntype ImageInputProps = {\n src: Ref<string | undefined>\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setLink: (link: string) => void\n\n imageIcon?: string\n uploadButton?: string\n confirmButton?: string\n uploadPlaceholderText?: string\n\n className?: string\n\n onUpload: (file: File) => Promise<string>\n onImageLoadError?: (event: Event) => void | Promise<void>\n}\n\nexport const ImageInput = defineComponent<ImageInputProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setLink: {\n type: Function,\n required: true,\n },\n imageIcon: {\n type: String,\n required: false,\n },\n uploadButton: {\n type: String,\n required: false,\n },\n confirmButton: {\n type: String,\n required: false,\n },\n uploadPlaceholderText: {\n type: String,\n required: false,\n },\n onUpload: {\n type: Function,\n required: true,\n },\n onImageLoadError: {\n type: Function,\n required: false,\n },\n },\n setup({\n readonly,\n src,\n setLink,\n onUpload,\n imageIcon,\n uploadButton,\n confirmButton,\n uploadPlaceholderText,\n className,\n onImageLoadError,\n }) {\n const focusLinkInput = ref(false)\n const linkInputRef = ref<HTMLInputElement>()\n const currentLink = ref(src.value ?? '')\n const uuid = ref(nanoid())\n const hidePlaceholder = ref(src.value?.length !== 0)\n const onEditLink = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n hidePlaceholder.value = value.length !== 0\n currentLink.value = value\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n setLink(linkInputRef.value?.value ?? '')\n }\n }\n\n const onConfirmLinkInput = () => {\n setLink(linkInputRef.value?.value ?? '')\n }\n\n const onUploadFile = (e: Event) => {\n const file = (e.target as HTMLInputElement).files?.[0]\n if (!file) return\n\n onUpload(file)\n .then((url) => {\n if (!url) return\n\n setLink(url)\n hidePlaceholder.value = true\n })\n .catch((err) => {\n console.error('An error occurred while uploading image')\n console.error(err)\n })\n }\n\n return () => {\n return (\n <div class={clsx('image-edit', className)}>\n <Icon icon={imageIcon} class=\"image-icon\" />\n <div class={clsx('link-importer', focusLinkInput.value && 'focus')}>\n <input\n ref={linkInputRef}\n draggable=\"true\"\n onDragstart={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n disabled={readonly.value}\n class=\"link-input-area\"\n value={currentLink.value}\n onInput={onEditLink}\n onKeydown={onKeydown}\n onFocus={() => (focusLinkInput.value = true)}\n onBlur={() => (focusLinkInput.value = false)}\n />\n {!hidePlaceholder.value && (\n <div class=\"placeholder\">\n <input\n disabled={readonly.value}\n class=\"hidden\"\n id={uuid.value}\n type=\"file\"\n accept=\"image/*\"\n onChange={onUploadFile}\n />\n <label class=\"uploader\" for={uuid.value}>\n <Icon icon={uploadButton} />\n </label>\n <span class=\"text\" onClick={() => linkInputRef.value?.focus()}>\n {uploadPlaceholderText}\n </span>\n </div>\n )}\n </div>\n {currentLink.value && (\n <>\n <div class=\"image-preview\">\n <img\n src={currentLink.value}\n alt=\"\"\n onError={(e) =>\n Promise.resolve(onImageLoadError?.(e)).catch(() => {})\n }\n />\n </div>\n <div class=\"confirm\" onClick={() => onConfirmLinkInput()}>\n <Icon icon={confirmButton} />\n </div>\n </>\n )}\n </div>\n )\n }\n },\n})\n","import { defineComponent, ref, h, Fragment } from 'vue'\n\nimport type { MilkdownImageBlockProps } from './image-block'\n\nimport { Icon } from '../../../__internal__/components/icon'\nimport { keepAlive } from '../../../__internal__/keep-alive'\nimport { IMAGE_DATA_TYPE } from '../../schema'\n\nkeepAlive(h, Fragment)\n\nexport const ImageViewer = defineComponent<MilkdownImageBlockProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n caption: {\n type: Object,\n required: true,\n },\n ratio: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setAttr: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n },\n setup({ src, caption, ratio, readonly, setAttr, config }) {\n const imageRef = ref<HTMLImageElement>()\n const showCaption = ref(Boolean(caption.value?.length))\n const timer = ref(0)\n\n let resizeDir = ''\n let startY = 0\n let startX = 0\n let startHeight = 0\n let startWidth = 0\n\n const onImageLoad = () => {\n const image = imageRef.value\n if (!image) return\n const host = image.closest('.milkdown-image-block')\n if (!host) return\n\n let maxWidth = host.getBoundingClientRect().width\n if (!maxWidth) return\n\n if (config.maxWidth && config.maxWidth < maxWidth)\n maxWidth = config.maxWidth\n\n const height = image.naturalHeight\n const width = image.naturalWidth\n let transformedHeight =\n width < maxWidth ? height : maxWidth * (height / width)\n\n if (config.maxHeight && transformedHeight > config.maxHeight)\n transformedHeight = config.maxHeight\n\n const h = (transformedHeight * (ratio.value ?? 1)).toFixed(2)\n image.dataset.origin = transformedHeight.toFixed(2)\n image.dataset.height = h\n image.style.height = `${h}px`\n\n if (config.maxWidth) image.style.maxWidth = `${config.maxWidth}px`\n }\n\n const onToggleCaption = (e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (readonly.value) return\n showCaption.value = !showCaption.value\n }\n\n const onInputCaption = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n if (timer.value) window.clearTimeout(timer.value)\n\n timer.value = window.setTimeout(() => {\n setAttr('caption', value)\n }, 1000)\n }\n\n const onBlurCaption = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n if (timer.value) {\n window.clearTimeout(timer.value)\n timer.value = 0\n }\n\n setAttr('caption', value)\n }\n\n const onResizeHandlePointerMove = (e: PointerEvent) => {\n e.preventDefault()\n const image = imageRef.value\n if (!image) return\n\n const deltaY = e.clientY - startY\n const deltaX = e.clientX - startX\n\n const aspect = startHeight / (startWidth || 1)\n let dhY = resizeDir.includes('bottom') ? deltaY : -deltaY\n let dhX = 0\n if (resizeDir.includes('right')) {\n dhX = deltaX * aspect\n } else if (resizeDir.includes('left')) {\n dhX = -deltaX * aspect\n }\n\n const dh = Math.abs(dhX) > Math.abs(dhY) ? dhX : dhY\n let height = startHeight + dh\n\n if (height < 20) height = 20\n if (config.maxHeight && height > config.maxHeight)\n height = config.maxHeight\n\n const h = Number(height).toFixed(2)\n image.dataset.height = h\n image.style.height = `${h}px`\n }\n\n const onResizeHandlePointerUp = () => {\n window.removeEventListener('pointermove', onResizeHandlePointerMove)\n window.removeEventListener('pointerup', onResizeHandlePointerUp)\n\n const image = imageRef.value\n if (!image) return\n\n const originHeight = Number(image.dataset.origin)\n const currentHeight = Number(image.dataset.height)\n const ratio = Number.parseFloat(\n Number(currentHeight / originHeight).toFixed(2)\n )\n if (Number.isNaN(ratio)) return\n\n setAttr('ratio', ratio)\n }\n\n const onResizeHandlePointerDown = (e: PointerEvent, dir: string) => {\n if (readonly.value) return\n e.preventDefault()\n e.stopPropagation()\n resizeDir = dir\n startY = e.clientY\n startX = e.clientX\n const image = imageRef.value\n if (image) {\n startHeight = image.getBoundingClientRect().height\n startWidth = image.getBoundingClientRect().width\n }\n window.addEventListener('pointermove', onResizeHandlePointerMove)\n window.addEventListener('pointerup', onResizeHandlePointerUp)\n }\n\n return () => {\n return (\n <>\n <div class=\"image-wrapper\">\n <div class=\"operation\">\n <div class=\"operation-item\" onPointerdown={onToggleCaption}>\n <Icon icon={config.captionIcon} />\n </div>\n </div>\n <img\n ref={imageRef}\n data-type={IMAGE_DATA_TYPE}\n onLoad={onImageLoad}\n src={src.value}\n alt={caption.value}\n onError={(e) =>\n Promise.resolve(config.onImageLoadError?.(e)).catch(() => {})\n }\n />\n <div\n class=\"image-resize-handle top-left\"\n onPointerdown={(e) => onResizeHandlePointerDown(e, 'top-left')}\n />\n <div\n class=\"image-resize-handle top-right\"\n onPointerdown={(e) => onResizeHandlePointerDown(e, 'top-right')}\n />\n <div\n class=\"image-resize-handle bottom-left\"\n onPointerdown={(e) => onResizeHandlePointerDown(e, 'bottom-left')}\n />\n <div\n class=\"image-resize-handle bottom-right\"\n onPointerdown={(e) =>\n onResizeHandlePointerDown(e, 'bottom-right')\n }\n />\n </div>\n {showCaption.value && (\n <input\n draggable=\"true\"\n onDragstart={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n class=\"caption-input\"\n placeholder={config?.captionPlaceholderText}\n onInput={onInputCaption}\n onBlur={onBlurCaption}\n value={caption.value}\n />\n )}\n </>\n )\n }\n },\n})\n","import { h, Fragment, type Ref, defineComponent } from 'vue'\n\nimport type { ImageBlockConfig } from '../../config'\n\nimport { ImageInput } from '../../../__internal__/components/image-input'\nimport { keepAlive } from '../../../__internal__/keep-alive'\nimport { ImageViewer } from './image-viewer'\n\nkeepAlive(h, Fragment)\n\ntype Attrs = {\n src: string\n caption: string\n ratio: number\n}\n\nexport type MilkdownImageBlockProps = {\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setAttr: <T extends keyof Attrs>(attr: T, value: Attrs[T]) => void\n config: ImageBlockConfig\n} & {\n [P in keyof Attrs]: Ref<Attrs[P] | undefined>\n}\n\nexport const MilkdownImageBlock = defineComponent<MilkdownImageBlockProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n caption: {\n type: Object,\n required: true,\n },\n ratio: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setAttr: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { src } = props\n\n return () => {\n if (!src.value?.length) {\n return (\n <ImageInput\n src={props.src}\n selected={props.selected}\n readonly={props.readonly}\n setLink={(link) => props.setAttr('src', link)}\n imageIcon={props.config.imageIcon}\n uploadButton={props.config.uploadButton}\n confirmButton={props.config.confirmButton}\n uploadPlaceholderText={props.config.uploadPlaceholderText}\n onUpload={props.config.onUpload}\n onImageLoadError={props.config.onImageLoadError}\n />\n )\n }\n return <ImageViewer {...props} />\n }\n },\n})\n","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { NodeViewConstructor } from '@jvs-milkdown/prose/view'\n\nimport { $view } from '@jvs-milkdown/utils'\nimport DOMPurify from 'dompurify'\nimport { createApp, ref, watchEffect } from 'vue'\n\nimport { withMeta } from '../../__internal__/meta'\nimport { imageBlockConfig } from '../config'\nimport { imageBlockSchema } from '../schema'\nimport { MilkdownImageBlock } from './components/image-block'\n\nexport const imageBlockView = $view(\n imageBlockSchema.node,\n (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n const src = ref(initialNode.attrs.src)\n const caption = ref(initialNode.attrs.caption)\n const ratio = ref(initialNode.attrs.ratio)\n const selected = ref(false)\n const readonly = ref(!view.editable)\n const setAttr = (attr: string, value: unknown) => {\n if (!view.editable) return\n const pos = getPos()\n if (pos == null) return\n view.dispatch(\n view.state.tr.setNodeAttribute(\n pos,\n attr,\n attr === 'src' ? DOMPurify.sanitize(value as string) : value\n )\n )\n }\n const config = ctx.get(imageBlockConfig.key)\n const app = createApp(MilkdownImageBlock, {\n src,\n caption,\n ratio,\n selected,\n readonly,\n setAttr,\n config,\n })\n const dom = document.createElement('div')\n dom.className = 'milkdown-image-block'\n const disposeSelectedWatcher = watchEffect(() => {\n const isSelected = selected.value\n if (isSelected) {\n dom.classList.add('selected')\n } else {\n dom.classList.remove('selected')\n }\n })\n const proxyDomURL = config.proxyDomURL\n const bindAttrs = (node: Node) => {\n if (!proxyDomURL) {\n src.value = node.attrs.src\n } else {\n const proxiedURL = proxyDomURL(node.attrs.src)\n if (typeof proxiedURL === 'string') {\n src.value = proxiedURL\n } else {\n proxiedURL\n .then((url) => {\n src.value = url\n })\n .catch(console.error)\n }\n }\n ratio.value = node.attrs.ratio\n caption.value = node.attrs.caption\n\n readonly.value = !view.editable\n }\n\n bindAttrs(initialNode)\n app.mount(dom)\n\n return {\n dom,\n update: (updatedNode) => {\n if (updatedNode.type !== initialNode.type) return false\n\n bindAttrs(updatedNode)\n return true\n },\n stopEvent: (e) => {\n if (e.target instanceof HTMLInputElement) return true\n\n return false\n },\n selectNode: () => {\n selected.value = true\n },\n deselectNode: () => {\n selected.value = false\n },\n destroy: () => {\n disposeSelectedWatcher()\n app.unmount()\n dom.remove()\n },\n }\n }\n }\n)\n\nwithMeta(imageBlockView, {\n displayName: 'NodeView<image-block>',\n group: 'ImageBlock',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { imageBlockConfig } from './config'\nimport { remarkImageBlockPlugin } from './remark-plugin'\nimport { imageBlockSchema } from './schema'\nimport { imageBlockView } from './view'\n\nexport * from './schema'\nexport * from './remark-plugin'\nexport * from './config'\nexport * from './view'\n\nexport const imageBlockComponent: MilkdownPlugin[] = [\n remarkImageBlockPlugin,\n imageBlockSchema,\n imageBlockView,\n imageBlockConfig,\n].flat()\n"],"names":["__spreadValues","_a","_b","Fragment","h","ratio"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/image-block/config.ts","../../src/image-block/schema.ts","../../src/image-block/convert-plugin.ts","../../src/image-block/paste-rule.ts","../../src/image-block/remark-plugin.ts","../../src/__internal__/keep-alive.ts","../../src/__internal__/components/icon.tsx","../../src/__internal__/components/image-input.tsx","../../src/image-block/view/components/image-viewer.tsx","../../src/image-block/view/components/image-block.tsx","../../src/image-block/view/index.ts","../../src/image-block/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import { $ctx } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport interface ImageBlockConfig {\n imageIcon: string | undefined\n captionIcon: string | undefined\n uploadButton: string | undefined\n confirmButton: string | undefined\n uploadPlaceholderText: string\n captionPlaceholderText: string\n onUpload: (file: File) => Promise<string>\n proxyDomURL?: (url: string) => Promise<string> | string\n onImageLoadError?: (event: Event) => void | Promise<void>\n maxWidth?: number\n maxHeight?: number\n}\n\nexport const defaultImageBlockConfig: ImageBlockConfig = {\n imageIcon: '🌌',\n captionIcon: '💬',\n uploadButton: 'Upload file',\n confirmButton: 'Confirm ⏎',\n uploadPlaceholderText: 'or paste the image link ...',\n captionPlaceholderText: 'Image caption',\n onUpload: (file) => Promise.resolve(URL.createObjectURL(file)),\n}\n\nexport const imageBlockConfig = $ctx(\n defaultImageBlockConfig,\n 'imageBlockConfigCtx'\n)\n\nwithMeta(imageBlockConfig, {\n displayName: 'Config<image-block>',\n group: 'ImageBlock',\n})\n","import { expectDomTypeError } from '@jvs-milkdown/exception'\nimport { $nodeSchema } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport const IMAGE_DATA_TYPE = 'image-block'\n\nexport const imageBlockSchema = $nodeSchema('image-block', () => {\n return {\n inline: false,\n group: 'block',\n selectable: true,\n draggable: true,\n isolating: true,\n marks: '',\n atom: true,\n priority: 100,\n attrs: {\n src: { default: '', validate: 'string' },\n caption: { default: '', validate: 'string' },\n ratio: { default: 1, validate: 'number' },\n align: { default: null },\n },\n parseDOM: [\n {\n tag: `img[data-type=\"${IMAGE_DATA_TYPE}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n src: dom.getAttribute('src') || '',\n caption: dom.getAttribute('caption') || '',\n ratio: Number(dom.getAttribute('ratio') ?? 1),\n align: dom.getAttribute('align') || null,\n }\n },\n },\n {\n tag: 'img[src]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n if (dom.getAttribute('data-type') === IMAGE_DATA_TYPE) return false\n\n return {\n src: dom.getAttribute('src') || '',\n caption: dom.getAttribute('alt') || dom.getAttribute('title') || '',\n ratio: 1,\n }\n },\n },\n ],\n toDOM: (node) => ['img', { 'data-type': IMAGE_DATA_TYPE, ...node.attrs }],\n parseMarkdown: {\n match: ({ type }) => type === 'image-block',\n runner: (state, node, type) => {\n const src = node.url as string\n const caption = node.title as string\n let ratio = Number((node.alt as string) || 1)\n if (Number.isNaN(ratio) || ratio === 0) ratio = 1\n\n state.addNode(type, {\n src,\n caption,\n ratio,\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'image-block',\n runner: (state, node) => {\n state.openNode('paragraph')\n state.addNode('image', undefined, undefined, {\n title: node.attrs.caption,\n url: node.attrs.src,\n alt: `${Number.parseFloat(node.attrs.ratio).toFixed(2)}`,\n })\n state.closeNode()\n },\n },\n }\n})\n\nwithMeta(imageBlockSchema.node, {\n displayName: 'NodeSchema<image-block>',\n group: 'ImageBlock',\n})\n","import type { Node as ProsemirrorNode } from '@jvs-milkdown/prose/model'\n\nimport { imageSchema, paragraphSchema } from '@jvs-milkdown/preset-commonmark'\nimport { Plugin, PluginKey } from '@jvs-milkdown/prose/state'\nimport { $prose } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\nimport { imageBlockConfig } from './config'\nimport { imageBlockSchema } from './schema'\n\nexport const imageBlockConvertPlugin = $prose((ctx) => {\n const imageType = imageSchema.type(ctx)\n const imageBlockType = imageBlockSchema.type(ctx)\n const paragraphType = paragraphSchema.type(ctx)\n\n const pluginKey = new PluginKey('MILKDOWN_IMAGE_BLOCK_CONVERT')\n\n let uploading = false\n\n return new Plugin({\n key: pluginKey,\n appendTransaction(transactions, _oldState, newState) {\n if (!transactions.some((tr) => tr.docChanged)) return null\n\n const replacements: {\n from: number\n to: number\n blocks: ProsemirrorNode[]\n }[] = []\n\n // Debug: log all paragraphs with their children\n let foundImages = 0\n newState.doc.descendants((node, pos) => {\n if (node.type === imageType) foundImages++\n })\n if (foundImages > 0) {\n // inline images found\n }\n\n newState.doc.descendants((node, pos) => {\n if (node.type !== paragraphType) return\n\n const images: ProsemirrorNode[] = []\n let hasOtherContent = false\n\n for (let i = 0; i < node.childCount; i++) {\n const child = node.child(i)\n if (child.type === imageType) {\n images.push(child)\n } else if (child.type.name === 'hardbreak') {\n continue\n } else if (child.isText && child.text?.trim() === '') {\n continue\n } else {\n hasOtherContent = true\n break\n }\n }\n\n if (hasOtherContent || images.length === 0) return\n\n const blocks = images\n .map((img) =>\n imageBlockType.create({\n src: img.attrs.src,\n caption: img.attrs.alt || img.attrs.title || '',\n ratio: 1,\n })\n )\n .filter(Boolean)\n\n if (blocks.length > 0) {\n replacements.push({ from: pos, to: pos + node.nodeSize, blocks })\n }\n })\n\n if (replacements.length === 0) return null\n\n const { tr } = newState\n for (let i = replacements.length - 1; i >= 0; i--) {\n const r = replacements[i]!\n tr.replaceWith(r.from, r.to, r.blocks)\n }\n\n return tr\n },\n view() {\n return {\n update(view) {\n if (uploading) return\n\n const config = ctx.get(imageBlockConfig.key)\n const imagesToUpload: { pos: number; src: string }[] = []\n\n view.state.doc.descendants((node, pos) => {\n if (node.type.name !== 'image-block') return\n const src: string = node.attrs.src\n if (!src || src.startsWith('data:') || src.startsWith('blob:'))\n return\n if (!/^https?:\\/\\//i.test(src)) return\n imagesToUpload.push({ pos, src })\n })\n\n if (imagesToUpload.length === 0) return\n\n uploading = true\n\n void Promise.allSettled(\n imagesToUpload.map(async ({ pos, src }) => {\n const resp = await fetch(src)\n const blob = await resp.blob()\n const ext = blob.type.split('/')[1] || 'png'\n const file = new File([blob], `pasted-image.${ext}`, {\n type: blob.type,\n })\n const uploadedUrl = await config.onUpload(file)\n\n const $pos = view.state.doc.resolve(pos)\n const nodeAtPos = $pos.nodeAfter\n if (\n nodeAtPos &&\n nodeAtPos.type.name === 'image-block' &&\n nodeAtPos.attrs.src === src\n ) {\n view.dispatch(\n view.state.tr\n .setNodeMarkup(pos, undefined, {\n ...nodeAtPos.attrs,\n src: uploadedUrl,\n })\n .setMeta(pluginKey, { uploaded: true })\n )\n }\n })\n ).finally(() => {\n uploading = false\n })\n },\n }\n },\n })\n})\n\nwithMeta(imageBlockConvertPlugin, {\n displayName: 'Prose<image-block-convert>',\n group: 'ImageBlock',\n})\n","import { imageSchema, paragraphSchema } from '@jvs-milkdown/preset-commonmark'\nimport {\n type Fragment as FragmentType,\n Fragment,\n type Node as ProsemirrorNode,\n Slice,\n} from '@jvs-milkdown/prose/model'\nimport { $pasteRule } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\nimport { imageBlockSchema } from './schema'\n\nfunction toImageBlock(\n imageNode: ProsemirrorNode,\n imageBlockType: ProsemirrorNode['type']\n): ProsemirrorNode | null {\n return imageBlockType.create({\n src: imageNode.attrs.src,\n caption: imageNode.attrs.alt || imageNode.attrs.title || '',\n ratio: 1,\n })\n}\n\n/// Check if a paragraph contains only images (and trailing hard_breaks / empty text).\n/// Returns the list of image nodes found, or null if there's other content.\nfunction extractParagraphImages(\n node: ProsemirrorNode,\n imageType: ProsemirrorNode['type']\n): ProsemirrorNode[] | null {\n const images: ProsemirrorNode[] = []\n for (let i = 0; i < node.childCount; i++) {\n const child = node.child(i)\n if (child.type === imageType) {\n images.push(child)\n } else if (child.type.name === 'hardbreak') {\n continue\n } else if (child.isText && child.text?.trim() === '') {\n continue\n } else {\n return null\n }\n }\n return images.length > 0 ? images : null\n}\n\n/// A paste rule that converts standalone inline images to image-block nodes.\n/// Handles the slice structures produced when pasting HTML from external pages\n/// or from another instance of the same editor:\n/// 1. Bare `image` at fragment top-level (after Slice.maxOpen unwraps)\n/// 2. `paragraph > image` (paragraph with single image child)\n/// 3. `paragraph > [image, hard_break, ...]` (image with trailing breaks)\nexport const imageBlockPasteRule = $pasteRule((ctx) => ({\n priority: 90,\n run: (slice, _view, isPlainText) => {\n if (isPlainText) return slice\n\n const paragraphType = paragraphSchema.type(ctx)\n const imageType = imageSchema.type(ctx)\n const imageBlockType = imageBlockSchema.type(ctx)\n\n function convertFragment(fragment: FragmentType): FragmentType {\n const nodes: ProsemirrorNode[] = []\n let changed = false\n\n fragment.forEach((node) => {\n // Case 1: bare inline image at top level (after Slice.maxOpen unwraps paragraph)\n if (node.type === imageType) {\n const imageBlock = toImageBlock(node, imageBlockType)\n if (imageBlock) {\n nodes.push(imageBlock)\n changed = true\n return\n }\n }\n\n // Case 2, 3 & Mixed: Any paragraph containing images\n if (node.type === paragraphType) {\n let hasImage = false\n node.content.forEach((child) => {\n if (child.type === imageType) hasImage = true\n })\n\n if (hasImage) {\n let currentParaNodes: ProsemirrorNode[] = []\n let isFirstInsideParent = nodes.length === 0\n\n node.content.forEach((child) => {\n if (child.type === imageType) {\n // If it's the first element in the parent slice (meaning we might need an openStart anchor)\n // OR we have accumulated text nodes, push a paragraph.\n if (currentParaNodes.length > 0 || isFirstInsideParent) {\n nodes.push(node.copy(Fragment.from(currentParaNodes)))\n currentParaNodes = []\n }\n const imageBlock = toImageBlock(child, imageBlockType)\n if (imageBlock) {\n nodes.push(imageBlock)\n }\n isFirstInsideParent = false\n } else {\n currentParaNodes.push(child)\n }\n })\n // ALWAYS push the trailing paragraph at the end, even if empty.\n // This guarantees that if the fragment replacement ends here, it's a paragraph,\n // which safegaurds openEnd anchors from throwing ProseMirror slice geometry errors.\n nodes.push(node.copy(Fragment.from(currentParaNodes)))\n\n changed = true\n return\n }\n }\n\n // Recurse into children\n if (node.content.size > 0) {\n const fixedContent = convertFragment(node.content)\n if (fixedContent !== node.content) {\n changed = true\n nodes.push(node.copy(fixedContent))\n return\n }\n }\n\n nodes.push(node)\n })\n\n return changed ? Fragment.from(nodes) : fragment\n }\n\n const fragment = convertFragment(slice.content)\n return new Slice(fragment, slice.openStart, slice.openEnd)\n },\n}))\n\nwithMeta(imageBlockPasteRule, {\n displayName: 'PasteRule<image-block>',\n group: 'ImageBlock',\n})\n","import type { Node } from '@jvs-milkdown/transformer'\n\nimport { $remark } from '@jvs-milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__/meta'\n\nfunction visitImage(ast: Node) {\n return visit(\n ast,\n 'paragraph',\n (\n node: Node & { children?: Node[] },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n if (node.children?.length !== 1) return\n const firstChild = node.children?.[0]\n if (!firstChild || firstChild.type !== 'image') return\n\n const { url, alt, title } = firstChild as Node & {\n url: string\n alt: string\n title: string\n }\n const newNode = {\n type: 'image-block',\n url,\n alt,\n title,\n }\n\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\nexport const remarkImageBlockPlugin = $remark(\n 'remark-image-block',\n () => () => visitImage\n)\n\nwithMeta(remarkImageBlockPlugin.plugin, {\n displayName: 'Remark<remarkImageBlock>',\n group: 'ImageBlock',\n})\n\nwithMeta(remarkImageBlockPlugin.options, {\n displayName: 'RemarkConfig<remarkImageBlock>',\n group: 'ImageBlock',\n})\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import clsx from 'clsx'\nimport DOMPurify from 'dompurify'\nimport { h } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\n\nkeepAlive(h)\n\ntype IconProps = {\n icon?: string | null\n class?: string\n onClick?: (event: PointerEvent) => void\n}\n\nexport function Icon({ icon, class: className, onClick }: IconProps) {\n return (\n <span\n class={clsx('milkdown-icon', className)}\n onPointerdown={onClick}\n innerHTML={icon ? DOMPurify.sanitize(icon.trim()) : undefined}\n />\n )\n}\n\nIcon.props = {\n icon: {\n type: String,\n required: false,\n },\n class: {\n type: String,\n required: false,\n },\n onClick: {\n type: Function,\n required: false,\n },\n}\n","import clsx from 'clsx'\nimport { customAlphabet } from 'nanoid'\nimport { defineComponent, ref, h, type Ref } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\nimport { Icon } from './icon'\n\nkeepAlive(h)\n\nconst nanoid = customAlphabet('abcdefg', 8)\n\ntype ImageInputProps = {\n src: Ref<string | undefined>\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setLink: (link: string) => void\n\n imageIcon?: string\n uploadButton?: string\n confirmButton?: string\n uploadPlaceholderText?: string\n\n className?: string\n\n onUpload: (file: File) => Promise<string>\n onImageLoadError?: (event: Event) => void | Promise<void>\n}\n\nexport const ImageInput = defineComponent<ImageInputProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setLink: {\n type: Function,\n required: true,\n },\n imageIcon: {\n type: String,\n required: false,\n },\n uploadButton: {\n type: String,\n required: false,\n },\n confirmButton: {\n type: String,\n required: false,\n },\n uploadPlaceholderText: {\n type: String,\n required: false,\n },\n onUpload: {\n type: Function,\n required: true,\n },\n onImageLoadError: {\n type: Function,\n required: false,\n },\n },\n setup({\n readonly,\n src,\n setLink,\n onUpload,\n imageIcon,\n uploadButton,\n confirmButton,\n uploadPlaceholderText,\n className,\n onImageLoadError,\n }) {\n const focusLinkInput = ref(false)\n const linkInputRef = ref<HTMLInputElement>()\n const currentLink = ref(src.value ?? '')\n const uuid = ref(nanoid())\n const hidePlaceholder = ref(src.value?.length !== 0)\n const onEditLink = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n hidePlaceholder.value = value.length !== 0\n currentLink.value = value\n }\n\n const isValidUrl = (url: string) => {\n if (!url) return false\n const trimmedUrl = url.trim()\n return /^(https?:\\/\\/|\\/|\\.\\.?\\/|data:image\\/|blob:|[a-zA-Z0-9-]+\\.[a-zA-Z]+)/i.test(trimmedUrl)\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n const val = linkInputRef.value?.value?.trim() ?? ''\n\n // Stop bubbling so ProseMirror doesn't handle the Enter key \n // regardless of whether the URL is valid or not.\n e.preventDefault()\n e.stopPropagation()\n\n if (isValidUrl(val)) {\n setLink(val)\n }\n }\n }\n\n const onConfirmLinkInput = () => {\n const val = linkInputRef.value?.value?.trim() ?? ''\n if (isValidUrl(val)) {\n setLink(val)\n }\n }\n\n const onUploadFile = (e: Event) => {\n const file = (e.target as HTMLInputElement).files?.[0]\n if (!file) return\n\n onUpload(file)\n .then((url) => {\n if (!url) return\n\n setLink(url)\n hidePlaceholder.value = true\n })\n .catch((err) => {\n console.error('An error occurred while uploading image')\n console.error(err)\n })\n }\n\n return () => {\n return (\n <div class={clsx('image-edit', className)}>\n <Icon icon={imageIcon} class=\"image-icon\" />\n <div class={clsx('link-importer', focusLinkInput.value && 'focus')}>\n <input\n ref={linkInputRef}\n draggable=\"true\"\n onDragstart={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n disabled={readonly.value}\n class=\"link-input-area\"\n value={currentLink.value}\n onInput={onEditLink}\n onKeydown={onKeydown}\n onFocus={() => (focusLinkInput.value = true)}\n onBlur={() => (focusLinkInput.value = false)}\n />\n {!hidePlaceholder.value && (\n <div class=\"placeholder\">\n <input\n disabled={readonly.value}\n class=\"hidden\"\n id={uuid.value}\n type=\"file\"\n accept=\"image/*\"\n onChange={onUploadFile}\n />\n <label class=\"uploader\" for={uuid.value}>\n <Icon icon={uploadButton} />\n </label>\n <span class=\"text\" onClick={() => linkInputRef.value?.focus()}>\n {uploadPlaceholderText}\n </span>\n </div>\n )}\n </div>\n {currentLink.value && (\n <>\n {isValidUrl(currentLink.value) && (\n <div class=\"image-preview\">\n <img\n src={currentLink.value}\n alt=\"\"\n onError={(e) =>\n Promise.resolve(onImageLoadError?.(e)).catch(() => { })\n }\n />\n </div>\n )}\n <div\n class={clsx('confirm', !isValidUrl(currentLink.value) && 'disabled')}\n onClick={() => onConfirmLinkInput()}\n style={!isValidUrl(currentLink.value) ? { opacity: 0.5, cursor: 'not-allowed' } : undefined}\n >\n <Icon icon={confirmButton} />\n </div>\n </>\n )}\n </div>\n )\n }\n },\n})\n","import { defineComponent, ref, h, Fragment } from 'vue'\n\nimport type { MilkdownImageBlockProps } from './image-block'\n\nimport { Icon } from '../../../__internal__/components/icon'\nimport { keepAlive } from '../../../__internal__/keep-alive'\nimport { IMAGE_DATA_TYPE } from '../../schema'\n\nkeepAlive(h, Fragment)\n\nexport const ImageViewer = defineComponent<MilkdownImageBlockProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n caption: {\n type: Object,\n required: true,\n },\n ratio: {\n type: Object,\n required: true,\n },\n align: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setAttr: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n },\n setup({ src, caption, ratio, readonly, setAttr, config }) {\n const imageRef = ref<HTMLImageElement>()\n const showCaption = ref(Boolean(caption.value?.length))\n const timer = ref(0)\n\n let resizeDir = ''\n let startY = 0\n let startX = 0\n let startHeight = 0\n let startWidth = 0\n\n const onImageLoad = () => {\n const image = imageRef.value\n if (!image) return\n const host = image.closest('.milkdown-image-block')\n if (!host) return\n\n let maxWidth = host.getBoundingClientRect().width\n if (!maxWidth) return\n\n if (config.maxWidth && config.maxWidth < maxWidth)\n maxWidth = config.maxWidth\n\n const height = image.naturalHeight\n const width = image.naturalWidth\n let transformedHeight =\n width < maxWidth ? height : maxWidth * (height / width)\n\n if (config.maxHeight && transformedHeight > config.maxHeight)\n transformedHeight = config.maxHeight\n\n const h = (transformedHeight * (ratio.value ?? 1)).toFixed(2)\n image.dataset.origin = transformedHeight.toFixed(2)\n image.dataset.height = h\n image.style.height = `${h}px`\n\n if (config.maxWidth) image.style.maxWidth = `${config.maxWidth}px`\n }\n\n const onToggleCaption = (e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (readonly.value) return\n showCaption.value = !showCaption.value\n }\n\n const onInputCaption = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n if (timer.value) window.clearTimeout(timer.value)\n\n timer.value = window.setTimeout(() => {\n setAttr('caption', value)\n }, 1000)\n }\n\n const onBlurCaption = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n if (timer.value) {\n window.clearTimeout(timer.value)\n timer.value = 0\n }\n\n setAttr('caption', value)\n }\n\n const onResizeHandlePointerMove = (e: PointerEvent) => {\n e.preventDefault()\n const image = imageRef.value\n if (!image) return\n\n const deltaY = e.clientY - startY\n const deltaX = e.clientX - startX\n\n const aspect = startHeight / (startWidth || 1)\n let dhY = resizeDir.includes('bottom') ? deltaY : -deltaY\n let dhX = 0\n if (resizeDir.includes('right')) {\n dhX = deltaX * aspect\n } else if (resizeDir.includes('left')) {\n dhX = -deltaX * aspect\n }\n\n const dh = Math.abs(dhX) > Math.abs(dhY) ? dhX : dhY\n let height = startHeight + dh\n\n if (height < 20) height = 20\n if (config.maxHeight && height > config.maxHeight)\n height = config.maxHeight\n\n const h = Number(height).toFixed(2)\n image.dataset.height = h\n image.style.height = `${h}px`\n }\n\n const onResizeHandlePointerUp = () => {\n window.removeEventListener('pointermove', onResizeHandlePointerMove)\n window.removeEventListener('pointerup', onResizeHandlePointerUp)\n\n const image = imageRef.value\n if (!image) return\n\n const originHeight = Number(image.dataset.origin)\n const currentHeight = Number(image.dataset.height)\n const ratio = Number.parseFloat(\n Number(currentHeight / originHeight).toFixed(2)\n )\n if (Number.isNaN(ratio)) return\n\n setAttr('ratio', ratio)\n }\n\n const onResizeHandlePointerDown = (e: PointerEvent, dir: string) => {\n if (readonly.value) return\n e.preventDefault()\n e.stopPropagation()\n resizeDir = dir\n startY = e.clientY\n startX = e.clientX\n const image = imageRef.value\n if (image) {\n startHeight = image.getBoundingClientRect().height\n startWidth = image.getBoundingClientRect().width\n }\n window.addEventListener('pointermove', onResizeHandlePointerMove)\n window.addEventListener('pointerup', onResizeHandlePointerUp)\n }\n\n return () => {\n return (\n <>\n <div class=\"image-wrapper\">\n <div class=\"operation\">\n <div class=\"operation-item\" onPointerdown={onToggleCaption}>\n <Icon icon={config.captionIcon} />\n </div>\n </div>\n <img\n ref={imageRef}\n data-type={IMAGE_DATA_TYPE}\n onLoad={onImageLoad}\n src={src.value}\n alt={caption.value}\n onError={(e) =>\n Promise.resolve(config.onImageLoadError?.(e)).catch(() => {})\n }\n />\n <div\n class=\"image-resize-handle top-left\"\n onPointerdown={(e) => onResizeHandlePointerDown(e, 'top-left')}\n />\n <div\n class=\"image-resize-handle top-right\"\n onPointerdown={(e) => onResizeHandlePointerDown(e, 'top-right')}\n />\n <div\n class=\"image-resize-handle bottom-left\"\n onPointerdown={(e) => onResizeHandlePointerDown(e, 'bottom-left')}\n />\n <div\n class=\"image-resize-handle bottom-right\"\n onPointerdown={(e) =>\n onResizeHandlePointerDown(e, 'bottom-right')\n }\n />\n </div>\n {showCaption.value && (\n <input\n draggable=\"true\"\n onDragstart={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n class=\"caption-input\"\n placeholder={config?.captionPlaceholderText}\n onInput={onInputCaption}\n onBlur={onBlurCaption}\n value={caption.value}\n />\n )}\n </>\n )\n }\n },\n})\n","import { h, Fragment, type Ref, defineComponent } from 'vue'\n\nimport type { ImageBlockConfig } from '../../config'\n\nimport { ImageInput } from '../../../__internal__/components/image-input'\nimport { keepAlive } from '../../../__internal__/keep-alive'\nimport { ImageViewer } from './image-viewer'\n\nkeepAlive(h, Fragment)\n\ntype Attrs = {\n src: string\n caption: string\n ratio: number\n align: string | null\n}\n\nexport type MilkdownImageBlockProps = {\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setAttr: <T extends keyof Attrs>(attr: T, value: Attrs[T]) => void\n config: ImageBlockConfig\n} & {\n [P in keyof Attrs]: Ref<Attrs[P] | undefined>\n}\n\nexport const MilkdownImageBlock = defineComponent<MilkdownImageBlockProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n caption: {\n type: Object,\n required: true,\n },\n ratio: {\n type: Object,\n required: true,\n },\n align: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setAttr: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { src } = props\n\n return () => {\n if (!src.value?.length) {\n return (\n <ImageInput\n src={props.src}\n selected={props.selected}\n readonly={props.readonly}\n setLink={(link) => props.setAttr('src', link)}\n imageIcon={props.config.imageIcon}\n uploadButton={props.config.uploadButton}\n confirmButton={props.config.confirmButton}\n uploadPlaceholderText={props.config.uploadPlaceholderText}\n onUpload={props.config.onUpload}\n onImageLoadError={props.config.onImageLoadError}\n />\n )\n }\n return <ImageViewer {...props} />\n }\n },\n})\n","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { NodeViewConstructor } from '@jvs-milkdown/prose/view'\n\nimport { $view } from '@jvs-milkdown/utils'\nimport DOMPurify from 'dompurify'\nimport { createApp, ref, watchEffect } from 'vue'\n\nimport { withMeta } from '../../__internal__/meta'\nimport { imageBlockConfig } from '../config'\nimport { imageBlockSchema } from '../schema'\nimport { MilkdownImageBlock } from './components/image-block'\n\nexport const imageBlockView = $view(\n imageBlockSchema.node,\n (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n const src = ref(initialNode.attrs.src)\n const caption = ref(initialNode.attrs.caption)\n const ratio = ref(initialNode.attrs.ratio)\n const align = ref(initialNode.attrs.align)\n const selected = ref(false)\n const readonly = ref(!view.editable)\n const setAttr = (attr: string, value: unknown) => {\n if (!view.editable) return\n const pos = getPos()\n if (pos == null) return\n view.dispatch(\n view.state.tr.setNodeAttribute(\n pos,\n attr,\n attr === 'src' ? DOMPurify.sanitize(value as string) : value\n )\n )\n }\n const config = ctx.get(imageBlockConfig.key)\n const app = createApp(MilkdownImageBlock, {\n src,\n caption,\n ratio,\n align,\n selected,\n readonly,\n setAttr,\n config,\n })\n const dom = document.createElement('div')\n dom.className = 'milkdown-image-block'\n dom.dataset.align = initialNode.attrs.align || 'center'\n const disposeSelectedWatcher = watchEffect(() => {\n const isSelected = selected.value\n if (isSelected) {\n dom.classList.add('selected')\n } else {\n dom.classList.remove('selected')\n }\n })\n const disposeAlignWatcher = watchEffect(() => {\n dom.dataset.align = align.value || 'center'\n })\n const proxyDomURL = config.proxyDomURL\n const bindAttrs = (node: Node) => {\n if (!proxyDomURL) {\n src.value = node.attrs.src\n } else {\n const proxiedURL = proxyDomURL(node.attrs.src)\n if (typeof proxiedURL === 'string') {\n src.value = proxiedURL\n } else {\n proxiedURL\n .then((url) => {\n src.value = url\n })\n .catch(console.error)\n }\n }\n ratio.value = node.attrs.ratio\n caption.value = node.attrs.caption\n align.value = node.attrs.align\n\n readonly.value = !view.editable\n }\n\n bindAttrs(initialNode)\n app.mount(dom)\n\n return {\n dom,\n update: (updatedNode) => {\n if (updatedNode.type !== initialNode.type) return false\n\n bindAttrs(updatedNode)\n return true\n },\n stopEvent: (e) => {\n if (e.target instanceof HTMLInputElement) return true\n\n return false\n },\n selectNode: () => {\n selected.value = true\n },\n deselectNode: () => {\n selected.value = false\n },\n destroy: () => {\n disposeSelectedWatcher()\n disposeAlignWatcher()\n app.unmount()\n dom.remove()\n },\n }\n }\n }\n)\n\nwithMeta(imageBlockView, {\n displayName: 'NodeView<image-block>',\n group: 'ImageBlock',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { imageBlockConfig } from './config'\nimport { imageBlockConvertPlugin } from './convert-plugin'\nimport { imageBlockPasteRule } from './paste-rule'\nimport { remarkImageBlockPlugin } from './remark-plugin'\nimport { imageBlockSchema } from './schema'\nimport { imageBlockView } from './view'\n\nexport * from './schema'\nexport * from './remark-plugin'\nexport * from './config'\nexport * from './view'\nexport * from './paste-rule'\nexport * from './convert-plugin'\n\nexport const imageBlockComponent: MilkdownPlugin[] = [\n remarkImageBlockPlugin,\n imageBlockSchema,\n imageBlockView,\n imageBlockConfig,\n imageBlockPasteRule,\n imageBlockConvertPlugin,\n].flat()\n"],"names":["__spreadValues","tr","fragment","Fragment","_a","_b","h","ratio"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste-rule.d.ts","sourceRoot":"","sources":["../../src/image-block/paste-rule.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,mBAAmB,0CAiF7B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/image-block/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/image-block/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C,eAAO,MAAM,gBAAgB,0DAyE3B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-block.d.ts","sourceRoot":"","sources":["../../../../src/image-block/view/components/image-block.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,GAAG,EAAmB,MAAM,KAAK,CAAA;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAQpD,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"image-block.d.ts","sourceRoot":"","sources":["../../../../src/image-block/view/components/image-block.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,GAAG,EAAmB,MAAM,KAAK,CAAA;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAQpD,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACtB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACtB,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAClE,MAAM,EAAE,gBAAgB,CAAA;CACzB,GAAG;KACD,CAAC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC9C,CAAA;AAED,eAAO,MAAM,kBAAkB,0TA0D7B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-viewer.d.ts","sourceRoot":"","sources":["../../../../src/image-block/view/components/image-viewer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAQ5D,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"image-viewer.d.ts","sourceRoot":"","sources":["../../../../src/image-block/view/components/image-viewer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAQ5D,eAAO,MAAM,WAAW,0TA4NtB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/image-block/view/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAWnE,eAAO,MAAM,cAAc,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/image-block/view/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAWnE,eAAO,MAAM,cAAc,+FAqG1B,CAAA"}
|
|
@@ -144,15 +144,28 @@ const ImageInput = defineComponent({
|
|
|
144
144
|
hidePlaceholder.value = value.length !== 0;
|
|
145
145
|
currentLink.value = value;
|
|
146
146
|
};
|
|
147
|
+
const isValidUrl = (url) => {
|
|
148
|
+
if (!url) return false;
|
|
149
|
+
const trimmedUrl = url.trim();
|
|
150
|
+
return /^(https?:\/\/|\/|\.\.?\/|data:image\/|blob:|[a-zA-Z0-9-]+\.[a-zA-Z]+)/i.test(trimmedUrl);
|
|
151
|
+
};
|
|
147
152
|
const onKeydown = (e) => {
|
|
148
|
-
var _a2, _b2;
|
|
153
|
+
var _a2, _b2, _c;
|
|
149
154
|
if (e.key === "Enter") {
|
|
150
|
-
|
|
155
|
+
const val = (_c = (_b2 = (_a2 = linkInputRef.value) == null ? void 0 : _a2.value) == null ? void 0 : _b2.trim()) != null ? _c : "";
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
e.stopPropagation();
|
|
158
|
+
if (isValidUrl(val)) {
|
|
159
|
+
setLink(val);
|
|
160
|
+
}
|
|
151
161
|
}
|
|
152
162
|
};
|
|
153
163
|
const onConfirmLinkInput = () => {
|
|
154
|
-
var _a2, _b2;
|
|
155
|
-
|
|
164
|
+
var _a2, _b2, _c;
|
|
165
|
+
const val = (_c = (_b2 = (_a2 = linkInputRef.value) == null ? void 0 : _a2.value) == null ? void 0 : _b2.trim()) != null ? _c : "";
|
|
166
|
+
if (isValidUrl(val)) {
|
|
167
|
+
setLink(val);
|
|
168
|
+
}
|
|
156
169
|
};
|
|
157
170
|
const onUploadFile = (e) => {
|
|
158
171
|
var _a2;
|
|
@@ -198,7 +211,7 @@ const ImageInput = defineComponent({
|
|
|
198
211
|
), /* @__PURE__ */ h("label", { class: "uploader", for: uuid.value }, /* @__PURE__ */ h(Icon, { icon: uploadButton })), /* @__PURE__ */ h("span", { class: "text", onClick: () => {
|
|
199
212
|
var _a2;
|
|
200
213
|
return (_a2 = linkInputRef.value) == null ? void 0 : _a2.focus();
|
|
201
|
-
} }, uploadPlaceholderText))), currentLink.value && /* @__PURE__ */ h(Fragment, null, /* @__PURE__ */ h("div", { class: "image-preview" }, /* @__PURE__ */ h(
|
|
214
|
+
} }, uploadPlaceholderText))), currentLink.value && /* @__PURE__ */ h(Fragment, null, isValidUrl(currentLink.value) && /* @__PURE__ */ h("div", { class: "image-preview" }, /* @__PURE__ */ h(
|
|
202
215
|
"img",
|
|
203
216
|
{
|
|
204
217
|
src: currentLink.value,
|
|
@@ -206,7 +219,15 @@ const ImageInput = defineComponent({
|
|
|
206
219
|
onError: (e) => Promise.resolve(onImageLoadError == null ? void 0 : onImageLoadError(e)).catch(() => {
|
|
207
220
|
})
|
|
208
221
|
}
|
|
209
|
-
)), /* @__PURE__ */ h(
|
|
222
|
+
)), /* @__PURE__ */ h(
|
|
223
|
+
"div",
|
|
224
|
+
{
|
|
225
|
+
class: clsx("confirm", !isValidUrl(currentLink.value) && "disabled"),
|
|
226
|
+
onClick: () => onConfirmLinkInput(),
|
|
227
|
+
style: !isValidUrl(currentLink.value) ? { opacity: 0.5, cursor: "not-allowed" } : void 0
|
|
228
|
+
},
|
|
229
|
+
/* @__PURE__ */ h(Icon, { icon: confirmButton })
|
|
230
|
+
)));
|
|
210
231
|
};
|
|
211
232
|
}
|
|
212
233
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/image-inline/config.ts","../../src/__internal__/keep-alive.ts","../../src/__internal__/components/icon.tsx","../../src/__internal__/components/image-input.tsx","../../src/image-inline/components/image-inline.tsx","../../src/image-inline/view.ts","../../src/image-inline/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import { $ctx } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport interface InlineImageConfig {\n imageIcon: string | undefined\n uploadButton: string | undefined\n confirmButton: string | undefined\n uploadPlaceholderText: string\n onUpload: (file: File) => Promise<string>\n proxyDomURL?: (url: string) => Promise<string> | string\n}\n\nexport const defaultInlineImageConfig: InlineImageConfig = {\n imageIcon: '🌌',\n uploadButton: 'Upload',\n confirmButton: '⏎',\n uploadPlaceholderText: '/Paste',\n onUpload: (file) => Promise.resolve(URL.createObjectURL(file)),\n}\n\nexport const inlineImageConfig = $ctx(\n defaultInlineImageConfig,\n 'inlineImageConfigCtx'\n)\n\nwithMeta(inlineImageConfig, {\n displayName: 'Config<image-inline>',\n group: 'ImageInline',\n})\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import clsx from 'clsx'\nimport DOMPurify from 'dompurify'\nimport { h } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\n\nkeepAlive(h)\n\ntype IconProps = {\n icon?: string | null\n class?: string\n onClick?: (event: PointerEvent) => void\n}\n\nexport function Icon({ icon, class: className, onClick }: IconProps) {\n return (\n <span\n class={clsx('milkdown-icon', className)}\n onPointerdown={onClick}\n innerHTML={icon ? DOMPurify.sanitize(icon.trim()) : undefined}\n />\n )\n}\n\nIcon.props = {\n icon: {\n type: String,\n required: false,\n },\n class: {\n type: String,\n required: false,\n },\n onClick: {\n type: Function,\n required: false,\n },\n}\n","import clsx from 'clsx'\nimport { customAlphabet } from 'nanoid'\nimport { defineComponent, ref, h, type Ref } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\nimport { Icon } from './icon'\n\nkeepAlive(h)\n\nconst nanoid = customAlphabet('abcdefg', 8)\n\ntype ImageInputProps = {\n src: Ref<string | undefined>\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setLink: (link: string) => void\n\n imageIcon?: string\n uploadButton?: string\n confirmButton?: string\n uploadPlaceholderText?: string\n\n className?: string\n\n onUpload: (file: File) => Promise<string>\n onImageLoadError?: (event: Event) => void | Promise<void>\n}\n\nexport const ImageInput = defineComponent<ImageInputProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setLink: {\n type: Function,\n required: true,\n },\n imageIcon: {\n type: String,\n required: false,\n },\n uploadButton: {\n type: String,\n required: false,\n },\n confirmButton: {\n type: String,\n required: false,\n },\n uploadPlaceholderText: {\n type: String,\n required: false,\n },\n onUpload: {\n type: Function,\n required: true,\n },\n onImageLoadError: {\n type: Function,\n required: false,\n },\n },\n setup({\n readonly,\n src,\n setLink,\n onUpload,\n imageIcon,\n uploadButton,\n confirmButton,\n uploadPlaceholderText,\n className,\n onImageLoadError,\n }) {\n const focusLinkInput = ref(false)\n const linkInputRef = ref<HTMLInputElement>()\n const currentLink = ref(src.value ?? '')\n const uuid = ref(nanoid())\n const hidePlaceholder = ref(src.value?.length !== 0)\n const onEditLink = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n hidePlaceholder.value = value.length !== 0\n currentLink.value = value\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n setLink(linkInputRef.value?.value ?? '')\n }\n }\n\n const onConfirmLinkInput = () => {\n setLink(linkInputRef.value?.value ?? '')\n }\n\n const onUploadFile = (e: Event) => {\n const file = (e.target as HTMLInputElement).files?.[0]\n if (!file) return\n\n onUpload(file)\n .then((url) => {\n if (!url) return\n\n setLink(url)\n hidePlaceholder.value = true\n })\n .catch((err) => {\n console.error('An error occurred while uploading image')\n console.error(err)\n })\n }\n\n return () => {\n return (\n <div class={clsx('image-edit', className)}>\n <Icon icon={imageIcon} class=\"image-icon\" />\n <div class={clsx('link-importer', focusLinkInput.value && 'focus')}>\n <input\n ref={linkInputRef}\n draggable=\"true\"\n onDragstart={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n disabled={readonly.value}\n class=\"link-input-area\"\n value={currentLink.value}\n onInput={onEditLink}\n onKeydown={onKeydown}\n onFocus={() => (focusLinkInput.value = true)}\n onBlur={() => (focusLinkInput.value = false)}\n />\n {!hidePlaceholder.value && (\n <div class=\"placeholder\">\n <input\n disabled={readonly.value}\n class=\"hidden\"\n id={uuid.value}\n type=\"file\"\n accept=\"image/*\"\n onChange={onUploadFile}\n />\n <label class=\"uploader\" for={uuid.value}>\n <Icon icon={uploadButton} />\n </label>\n <span class=\"text\" onClick={() => linkInputRef.value?.focus()}>\n {uploadPlaceholderText}\n </span>\n </div>\n )}\n </div>\n {currentLink.value && (\n <>\n <div class=\"image-preview\">\n <img\n src={currentLink.value}\n alt=\"\"\n onError={(e) =>\n Promise.resolve(onImageLoadError?.(e)).catch(() => {})\n }\n />\n </div>\n <div class=\"confirm\" onClick={() => onConfirmLinkInput()}>\n <Icon icon={confirmButton} />\n </div>\n </>\n )}\n </div>\n )\n }\n },\n})\n","import { h, Fragment, type Ref, defineComponent } from 'vue'\n\nimport type { InlineImageConfig } from '../config'\n\nimport { ImageInput } from '../../__internal__/components/image-input'\nimport { keepAlive } from '../../__internal__/keep-alive'\n\nkeepAlive(h, Fragment)\n\ntype Attrs = {\n src: string\n alt: string\n title: string\n}\n\ntype MilkdownImageInlineProps = {\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setAttr: <T extends keyof Attrs>(attr: T, value: Attrs[T]) => void\n config: InlineImageConfig\n} & {\n [P in keyof Attrs]: Ref<Attrs[P] | undefined>\n}\n\nexport const MilkdownImageInline = defineComponent<MilkdownImageInlineProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n alt: {\n type: Object,\n required: true,\n },\n title: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setAttr: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { src, alt, title } = props\n return () => {\n if (!src.value?.length) {\n return (\n <ImageInput\n src={props.src}\n selected={props.selected}\n readonly={props.readonly}\n setLink={(link) => props.setAttr('src', link)}\n imageIcon={props.config.imageIcon}\n uploadButton={props.config.uploadButton}\n confirmButton={props.config.confirmButton}\n uploadPlaceholderText={props.config.uploadPlaceholderText}\n onUpload={props.config.onUpload}\n className=\"empty-image-inline\"\n />\n )\n }\n return (\n <img\n class=\"image-inline\"\n src={src.value}\n alt={alt.value}\n title={title.value}\n />\n )\n }\n },\n})\n","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { NodeViewConstructor } from '@jvs-milkdown/prose/view'\n\nimport { imageSchema } from '@jvs-milkdown/preset-commonmark'\nimport { $view } from '@jvs-milkdown/utils'\nimport DOMPurify from 'dompurify'\nimport { createApp, ref, watchEffect } from 'vue'\n\nimport { withMeta } from '../__internal__/meta'\nimport { MilkdownImageInline } from './components/image-inline'\nimport { inlineImageConfig } from './config'\n\nexport const inlineImageView = $view(\n imageSchema.node,\n (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n const src = ref(initialNode.attrs.src)\n const alt = ref(initialNode.attrs.alt)\n const title = ref(initialNode.attrs.title)\n const selected = ref(false)\n const readonly = ref(!view.editable)\n const setAttr = (attr: string, value: unknown) => {\n if (!view.editable) return\n const pos = getPos()\n if (pos == null) return\n view.dispatch(\n view.state.tr.setNodeAttribute(\n pos,\n attr,\n attr === 'src' ? DOMPurify.sanitize(value as string) : value\n )\n )\n }\n\n const config = ctx.get(inlineImageConfig.key)\n const app = createApp(MilkdownImageInline, {\n src,\n alt,\n title,\n selected,\n readonly,\n setAttr,\n config,\n })\n const dom = document.createElement('span')\n dom.className = 'milkdown-image-inline'\n const disposeSelectedWatcher = watchEffect(() => {\n const isSelected = selected.value\n if (isSelected) {\n dom.classList.add('selected')\n } else {\n dom.classList.remove('selected')\n }\n })\n const proxyDomURL = config.proxyDomURL\n const bindAttrs = (node: Node) => {\n if (!proxyDomURL) {\n src.value = node.attrs.src\n } else {\n const proxiedURL = proxyDomURL(node.attrs.src)\n if (typeof proxiedURL === 'string') {\n src.value = proxiedURL\n } else {\n proxiedURL\n .then((url) => {\n src.value = url\n })\n .catch(console.error)\n }\n }\n alt.value = node.attrs.alt\n title.value = node.attrs.title\n }\n bindAttrs(initialNode)\n app.mount(dom)\n\n return {\n dom,\n update: (updatedNode) => {\n if (updatedNode.type !== initialNode.type) return false\n\n bindAttrs(updatedNode)\n return true\n },\n stopEvent: (e) => {\n if (e.target instanceof HTMLInputElement) return true\n\n return false\n },\n selectNode: () => {\n selected.value = true\n },\n deselectNode: () => {\n selected.value = false\n },\n destroy: () => {\n disposeSelectedWatcher()\n app.unmount()\n dom.remove()\n },\n }\n }\n }\n)\n\nwithMeta(inlineImageView, {\n displayName: 'NodeView<image-inline>',\n group: 'ImageInline',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { inlineImageConfig } from './config'\nimport { inlineImageView } from './view'\n\nexport * from './config'\nexport * from './view'\n\nexport const imageInlineComponent: MilkdownPlugin[] = [\n inlineImageConfig,\n inlineImageView,\n]\n"],"names":["_a","_b","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/image-inline/config.ts","../../src/__internal__/keep-alive.ts","../../src/__internal__/components/icon.tsx","../../src/__internal__/components/image-input.tsx","../../src/image-inline/components/image-inline.tsx","../../src/image-inline/view.ts","../../src/image-inline/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import { $ctx } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport interface InlineImageConfig {\n imageIcon: string | undefined\n uploadButton: string | undefined\n confirmButton: string | undefined\n uploadPlaceholderText: string\n onUpload: (file: File) => Promise<string>\n proxyDomURL?: (url: string) => Promise<string> | string\n}\n\nexport const defaultInlineImageConfig: InlineImageConfig = {\n imageIcon: '🌌',\n uploadButton: 'Upload',\n confirmButton: '⏎',\n uploadPlaceholderText: '/Paste',\n onUpload: (file) => Promise.resolve(URL.createObjectURL(file)),\n}\n\nexport const inlineImageConfig = $ctx(\n defaultInlineImageConfig,\n 'inlineImageConfigCtx'\n)\n\nwithMeta(inlineImageConfig, {\n displayName: 'Config<image-inline>',\n group: 'ImageInline',\n})\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import clsx from 'clsx'\nimport DOMPurify from 'dompurify'\nimport { h } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\n\nkeepAlive(h)\n\ntype IconProps = {\n icon?: string | null\n class?: string\n onClick?: (event: PointerEvent) => void\n}\n\nexport function Icon({ icon, class: className, onClick }: IconProps) {\n return (\n <span\n class={clsx('milkdown-icon', className)}\n onPointerdown={onClick}\n innerHTML={icon ? DOMPurify.sanitize(icon.trim()) : undefined}\n />\n )\n}\n\nIcon.props = {\n icon: {\n type: String,\n required: false,\n },\n class: {\n type: String,\n required: false,\n },\n onClick: {\n type: Function,\n required: false,\n },\n}\n","import clsx from 'clsx'\nimport { customAlphabet } from 'nanoid'\nimport { defineComponent, ref, h, type Ref } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\nimport { Icon } from './icon'\n\nkeepAlive(h)\n\nconst nanoid = customAlphabet('abcdefg', 8)\n\ntype ImageInputProps = {\n src: Ref<string | undefined>\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setLink: (link: string) => void\n\n imageIcon?: string\n uploadButton?: string\n confirmButton?: string\n uploadPlaceholderText?: string\n\n className?: string\n\n onUpload: (file: File) => Promise<string>\n onImageLoadError?: (event: Event) => void | Promise<void>\n}\n\nexport const ImageInput = defineComponent<ImageInputProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setLink: {\n type: Function,\n required: true,\n },\n imageIcon: {\n type: String,\n required: false,\n },\n uploadButton: {\n type: String,\n required: false,\n },\n confirmButton: {\n type: String,\n required: false,\n },\n uploadPlaceholderText: {\n type: String,\n required: false,\n },\n onUpload: {\n type: Function,\n required: true,\n },\n onImageLoadError: {\n type: Function,\n required: false,\n },\n },\n setup({\n readonly,\n src,\n setLink,\n onUpload,\n imageIcon,\n uploadButton,\n confirmButton,\n uploadPlaceholderText,\n className,\n onImageLoadError,\n }) {\n const focusLinkInput = ref(false)\n const linkInputRef = ref<HTMLInputElement>()\n const currentLink = ref(src.value ?? '')\n const uuid = ref(nanoid())\n const hidePlaceholder = ref(src.value?.length !== 0)\n const onEditLink = (e: Event) => {\n const target = e.target as HTMLInputElement\n const value = target.value\n hidePlaceholder.value = value.length !== 0\n currentLink.value = value\n }\n\n const isValidUrl = (url: string) => {\n if (!url) return false\n const trimmedUrl = url.trim()\n return /^(https?:\\/\\/|\\/|\\.\\.?\\/|data:image\\/|blob:|[a-zA-Z0-9-]+\\.[a-zA-Z]+)/i.test(trimmedUrl)\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n const val = linkInputRef.value?.value?.trim() ?? ''\n\n // Stop bubbling so ProseMirror doesn't handle the Enter key \n // regardless of whether the URL is valid or not.\n e.preventDefault()\n e.stopPropagation()\n\n if (isValidUrl(val)) {\n setLink(val)\n }\n }\n }\n\n const onConfirmLinkInput = () => {\n const val = linkInputRef.value?.value?.trim() ?? ''\n if (isValidUrl(val)) {\n setLink(val)\n }\n }\n\n const onUploadFile = (e: Event) => {\n const file = (e.target as HTMLInputElement).files?.[0]\n if (!file) return\n\n onUpload(file)\n .then((url) => {\n if (!url) return\n\n setLink(url)\n hidePlaceholder.value = true\n })\n .catch((err) => {\n console.error('An error occurred while uploading image')\n console.error(err)\n })\n }\n\n return () => {\n return (\n <div class={clsx('image-edit', className)}>\n <Icon icon={imageIcon} class=\"image-icon\" />\n <div class={clsx('link-importer', focusLinkInput.value && 'focus')}>\n <input\n ref={linkInputRef}\n draggable=\"true\"\n onDragstart={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n disabled={readonly.value}\n class=\"link-input-area\"\n value={currentLink.value}\n onInput={onEditLink}\n onKeydown={onKeydown}\n onFocus={() => (focusLinkInput.value = true)}\n onBlur={() => (focusLinkInput.value = false)}\n />\n {!hidePlaceholder.value && (\n <div class=\"placeholder\">\n <input\n disabled={readonly.value}\n class=\"hidden\"\n id={uuid.value}\n type=\"file\"\n accept=\"image/*\"\n onChange={onUploadFile}\n />\n <label class=\"uploader\" for={uuid.value}>\n <Icon icon={uploadButton} />\n </label>\n <span class=\"text\" onClick={() => linkInputRef.value?.focus()}>\n {uploadPlaceholderText}\n </span>\n </div>\n )}\n </div>\n {currentLink.value && (\n <>\n {isValidUrl(currentLink.value) && (\n <div class=\"image-preview\">\n <img\n src={currentLink.value}\n alt=\"\"\n onError={(e) =>\n Promise.resolve(onImageLoadError?.(e)).catch(() => { })\n }\n />\n </div>\n )}\n <div\n class={clsx('confirm', !isValidUrl(currentLink.value) && 'disabled')}\n onClick={() => onConfirmLinkInput()}\n style={!isValidUrl(currentLink.value) ? { opacity: 0.5, cursor: 'not-allowed' } : undefined}\n >\n <Icon icon={confirmButton} />\n </div>\n </>\n )}\n </div>\n )\n }\n },\n})\n","import { h, Fragment, type Ref, defineComponent } from 'vue'\n\nimport type { InlineImageConfig } from '../config'\n\nimport { ImageInput } from '../../__internal__/components/image-input'\nimport { keepAlive } from '../../__internal__/keep-alive'\n\nkeepAlive(h, Fragment)\n\ntype Attrs = {\n src: string\n alt: string\n title: string\n}\n\ntype MilkdownImageInlineProps = {\n selected: Ref<boolean>\n readonly: Ref<boolean>\n setAttr: <T extends keyof Attrs>(attr: T, value: Attrs[T]) => void\n config: InlineImageConfig\n} & {\n [P in keyof Attrs]: Ref<Attrs[P] | undefined>\n}\n\nexport const MilkdownImageInline = defineComponent<MilkdownImageInlineProps>({\n props: {\n src: {\n type: Object,\n required: true,\n },\n alt: {\n type: Object,\n required: true,\n },\n title: {\n type: Object,\n required: true,\n },\n selected: {\n type: Object,\n required: true,\n },\n readonly: {\n type: Object,\n required: true,\n },\n setAttr: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const { src, alt, title } = props\n return () => {\n if (!src.value?.length) {\n return (\n <ImageInput\n src={props.src}\n selected={props.selected}\n readonly={props.readonly}\n setLink={(link) => props.setAttr('src', link)}\n imageIcon={props.config.imageIcon}\n uploadButton={props.config.uploadButton}\n confirmButton={props.config.confirmButton}\n uploadPlaceholderText={props.config.uploadPlaceholderText}\n onUpload={props.config.onUpload}\n className=\"empty-image-inline\"\n />\n )\n }\n return (\n <img\n class=\"image-inline\"\n src={src.value}\n alt={alt.value}\n title={title.value}\n />\n )\n }\n },\n})\n","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { NodeViewConstructor } from '@jvs-milkdown/prose/view'\n\nimport { imageSchema } from '@jvs-milkdown/preset-commonmark'\nimport { $view } from '@jvs-milkdown/utils'\nimport DOMPurify from 'dompurify'\nimport { createApp, ref, watchEffect } from 'vue'\n\nimport { withMeta } from '../__internal__/meta'\nimport { MilkdownImageInline } from './components/image-inline'\nimport { inlineImageConfig } from './config'\n\nexport const inlineImageView = $view(\n imageSchema.node,\n (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n const src = ref(initialNode.attrs.src)\n const alt = ref(initialNode.attrs.alt)\n const title = ref(initialNode.attrs.title)\n const selected = ref(false)\n const readonly = ref(!view.editable)\n const setAttr = (attr: string, value: unknown) => {\n if (!view.editable) return\n const pos = getPos()\n if (pos == null) return\n view.dispatch(\n view.state.tr.setNodeAttribute(\n pos,\n attr,\n attr === 'src' ? DOMPurify.sanitize(value as string) : value\n )\n )\n }\n\n const config = ctx.get(inlineImageConfig.key)\n const app = createApp(MilkdownImageInline, {\n src,\n alt,\n title,\n selected,\n readonly,\n setAttr,\n config,\n })\n const dom = document.createElement('span')\n dom.className = 'milkdown-image-inline'\n const disposeSelectedWatcher = watchEffect(() => {\n const isSelected = selected.value\n if (isSelected) {\n dom.classList.add('selected')\n } else {\n dom.classList.remove('selected')\n }\n })\n const proxyDomURL = config.proxyDomURL\n const bindAttrs = (node: Node) => {\n if (!proxyDomURL) {\n src.value = node.attrs.src\n } else {\n const proxiedURL = proxyDomURL(node.attrs.src)\n if (typeof proxiedURL === 'string') {\n src.value = proxiedURL\n } else {\n proxiedURL\n .then((url) => {\n src.value = url\n })\n .catch(console.error)\n }\n }\n alt.value = node.attrs.alt\n title.value = node.attrs.title\n }\n bindAttrs(initialNode)\n app.mount(dom)\n\n return {\n dom,\n update: (updatedNode) => {\n if (updatedNode.type !== initialNode.type) return false\n\n bindAttrs(updatedNode)\n return true\n },\n stopEvent: (e) => {\n if (e.target instanceof HTMLInputElement) return true\n\n return false\n },\n selectNode: () => {\n selected.value = true\n },\n deselectNode: () => {\n selected.value = false\n },\n destroy: () => {\n disposeSelectedWatcher()\n app.unmount()\n dom.remove()\n },\n }\n }\n }\n)\n\nwithMeta(inlineImageView, {\n displayName: 'NodeView<image-inline>',\n group: 'ImageInline',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { inlineImageConfig } from './config'\nimport { inlineImageView } from './view'\n\nexport * from './config'\nexport * from './view'\n\nexport const imageInlineComponent: MilkdownPlugin[] = [\n inlineImageConfig,\n inlineImageView,\n]\n"],"names":["_a","_b","Fragment"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/link-tooltip/edit/component.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/link-tooltip/edit/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,GAAG,EAAK,MAAM,KAAK,CAAA;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAOlD,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,QAAQ,sSAwFnB,CAAA"}
|