feat(lexical): support local image data URLs
Allow the image insertion dialog to select a local image and embed it as a Base64 data URL, while retaining URL-based insertion and leaving video URL-only. Extract shared abortable FileReader handling for clipboard uploads and dialog selection; add English and Simplified Chinese messages plus an interaction test covering file selection through insertion.
This commit is contained in:
@@ -68,18 +68,29 @@ export const messages = {
|
||||
"lexical.media.alignLeft": "Align image left",
|
||||
"lexical.media.alignRight": "Align image right",
|
||||
"lexical.media.caption": "Caption",
|
||||
"lexical.media.chooseImageFile": "Choose image",
|
||||
"lexical.media.controls": "Image controls",
|
||||
"lexical.media.deleteImage": "Delete image",
|
||||
"lexical.media.editCaption": "Edit caption",
|
||||
"lexical.media.imageAlt": "Alternative text",
|
||||
"lexical.media.imageAltDescription": "Leave blank for decorative images; provide it when the image conveys information.",
|
||||
"lexical.media.imageDescription": "Enter a publicly accessible image URL and provide alternative text.",
|
||||
"lexical.media.imageAltDescription":
|
||||
"Leave blank for decorative images; provide it when the image conveys information.",
|
||||
"lexical.media.imageDescription":
|
||||
"Enter an image URL or choose a local image file, then provide alternative text.",
|
||||
"lexical.media.imageFile": "Image file",
|
||||
"lexical.media.imageFileDescription":
|
||||
"Choose an image from your device to embed it as a Base64 data URL.",
|
||||
"lexical.media.imageFileReadError":
|
||||
"The image could not be read. Try selecting it again.",
|
||||
"lexical.media.imageUrl": "Image URL",
|
||||
"lexical.media.readingImageFile": "Reading image…",
|
||||
"lexical.media.uploading": "Uploading image",
|
||||
"lexical.media.uploadingProgress": "Uploading {progress}%",
|
||||
"lexical.media.uploadProgress": "Image upload progress",
|
||||
"lexical.media.urlDescription": "Supports absolute URLs and relative URLs within this site.",
|
||||
"lexical.media.videoDescription": "Enter a publicly accessible video URL in a browser-supported format.",
|
||||
"lexical.media.urlDescription":
|
||||
"Supports absolute URLs and relative URLs within this site.",
|
||||
"lexical.media.videoDescription":
|
||||
"Enter a publicly accessible video URL in a browser-supported format.",
|
||||
"lexical.media.videoPoster": "Video poster URL",
|
||||
"lexical.media.videoUrl": "Video URL",
|
||||
"lexical.resize.east": "Resize image to the right",
|
||||
|
||||
@@ -68,18 +68,27 @@ export const messages = {
|
||||
"lexical.media.alignLeft": "图片左对齐",
|
||||
"lexical.media.alignRight": "图片右对齐",
|
||||
"lexical.media.caption": "图片说明",
|
||||
"lexical.media.chooseImageFile": "选择图片",
|
||||
"lexical.media.controls": "图片操作",
|
||||
"lexical.media.deleteImage": "删除图片",
|
||||
"lexical.media.editCaption": "编辑图片说明",
|
||||
"lexical.media.imageAlt": "替代文本",
|
||||
"lexical.media.imageAltDescription": "纯装饰图片可以留空;有信息含义时请填写。",
|
||||
"lexical.media.imageDescription": "输入可公开访问的图片地址,并补充替代文本。",
|
||||
"lexical.media.imageAltDescription":
|
||||
"纯装饰图片可以留空;有信息含义时请填写。",
|
||||
"lexical.media.imageDescription":
|
||||
"输入图片地址,或选择本地图片,并补充替代文本。",
|
||||
"lexical.media.imageFile": "图片文件",
|
||||
"lexical.media.imageFileDescription":
|
||||
"从设备选择图片,将以 Base64 Data URL 内嵌到内容中。",
|
||||
"lexical.media.imageFileReadError": "无法读取该图片,请重新选择。",
|
||||
"lexical.media.imageUrl": "图片地址",
|
||||
"lexical.media.readingImageFile": "正在读取图片…",
|
||||
"lexical.media.uploading": "正在上传图片",
|
||||
"lexical.media.uploadingProgress": "正在上传 {progress}%",
|
||||
"lexical.media.uploadProgress": "图片上传进度",
|
||||
"lexical.media.urlDescription": "支持绝对地址或站内相对地址。",
|
||||
"lexical.media.videoDescription": "输入可公开访问的视频地址;支持浏览器可播放的格式。",
|
||||
"lexical.media.videoDescription":
|
||||
"输入可公开访问的视频地址;支持浏览器可播放的格式。",
|
||||
"lexical.media.videoPoster": "视频封面地址",
|
||||
"lexical.media.videoUrl": "视频地址",
|
||||
"lexical.resize.east": "向右调整图片尺寸",
|
||||
|
||||
Reference in New Issue
Block a user