bridgerte 0.9.11 → 0.9.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"native-spec.js","sources":["../../native-spec/src/menuSchema/payloadPanels.ts","../../native-spec/src/menuSchema/tableHeaderMenuItems.ts","../../native-spec/src/menuSchema/defaultMenuSchema.ts","../../native-spec/src/commandState/index.ts","../../native-spec/src/toolbarConfig/index.ts"],"sourcesContent":["import {\n BRIDGERTE_TABLE_INSERT_MAX_COLS,\n BRIDGERTE_TABLE_INSERT_MAX_ROWS,\n type PayloadPanelSchema\n} from '@bridgerte/core';\n\n/**\n * 代码块语言列表给 DOM 代码块顶部控制栏和原生侧自绘使用。\n *\n * 空字符串表示纯文本;默认候选按 Shiki 高频技术文档语言维护。业务如需裁剪语言、\n * 调整顺序或接入更多 Shiki 语言,传入自己的 `codeBlockLanguagePanel` 即可。\n */\nexport const codeBlockLanguagePanel: PayloadPanelSchema = {\n id: 'code-block-language',\n title: '代码语言',\n fields: [\n {\n type: 'select',\n name: 'language',\n label: '语言',\n defaultValue: '',\n options: [\n { label: '纯文本', value: '' },\n { label: 'Bash', value: 'shellscript' },\n { label: 'C', value: 'c' },\n { label: 'C++', value: 'cpp' },\n { label: 'C#', value: 'csharp' },\n { label: 'CSS', value: 'css' },\n { label: 'Dart', value: 'dart' },\n { label: 'Dockerfile', value: 'docker' },\n { label: 'Go', value: 'go' },\n { label: 'HTML', value: 'html' },\n { label: 'Java', value: 'java' },\n { label: 'JavaScript', value: 'javascript' },\n { label: 'JSON', value: 'json' },\n { label: 'Kotlin', value: 'kotlin' },\n { label: 'Markdown', value: 'markdown' },\n { label: 'PHP', value: 'php' },\n { label: 'Python', value: 'python' },\n { label: 'Rust', value: 'rust' },\n { label: 'SQL', value: 'sql' },\n { label: 'Swift', value: 'swift' },\n { label: 'TOML', value: 'toml' },\n { label: 'TSX', value: 'tsx' },\n { label: 'TypeScript', value: 'typescript' },\n { label: 'Vue', value: 'vue' },\n { label: 'XML', value: 'xml' },\n { label: 'YAML', value: 'yaml' }\n ]\n }\n ]\n};\n\n/**\n * 兼容旧导出名。\n *\n * 代码块语言现在由代码块 header 触发,不再代表 toolbar 菜单 payload。\n */\nexport const codeBlockLanguagePayloadPanel = codeBlockLanguagePanel;\n\n/**\n * 颜色菜单使用 color 字段而不是预设色列表。\n *\n * DOM 默认面板可以渲染内置颜色控件,RN/Flutter/WebView 或业务自绘层仍读取同一份 schema。\n */\nexport const textColorPanel: PayloadPanelSchema = {\n id: 'text-color',\n title: '文字颜色',\n fields: [\n {\n type: 'color',\n name: 'value',\n label: '颜色'\n }\n ]\n};\n\nexport const backgroundColorPanel: PayloadPanelSchema = {\n id: 'background-color',\n title: '背景色',\n fields: [\n {\n type: 'color',\n name: 'value',\n label: '背景'\n }\n ]\n};\n\nexport const fontSizePanel: PayloadPanelSchema = {\n id: 'font-size',\n title: '字号',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '字号',\n defaultValue: '16px',\n options: [\n { label: '小号 14px', value: '14px' },\n { label: '正文 16px', value: '16px' },\n { label: '强调 18px', value: '18px' },\n { label: '标题 20px', value: '20px' },\n { label: '大标题 24px', value: '24px' }\n ]\n }\n ]\n};\n\nexport const fontFamilyPanel: PayloadPanelSchema = {\n id: 'font-family',\n title: '字体',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '字体',\n defaultValue: '',\n options: [\n { label: '跟随页面', value: '' },\n { label: '无衬线', value: 'sans-serif' },\n { label: '衬线', value: 'serif' },\n { label: '等宽', value: 'monospace' }\n ]\n }\n ]\n};\n\nexport const lineHeightPanel: PayloadPanelSchema = {\n id: 'line-height',\n title: '行高',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '行高',\n defaultValue: '1.7',\n options: [\n { label: '紧凑 1.4', value: '1.4' },\n { label: '常规 1.7', value: '1.7' },\n { label: '舒展 2', value: '2' }\n ]\n }\n ]\n};\n\n/**\n * 表格插入使用 number 字段收集行列。\n *\n * DOM 默认面板、H5 自绘和 RN/Flutter 原生表单都读取同一份 schema;真正的表格进阶操作\n * 仍放后续表格菜单阶段继续扩展。\n */\nexport const tableInsertPanel: PayloadPanelSchema = {\n id: 'table-insert',\n title: '插入表格',\n fields: [\n {\n type: 'number',\n name: 'rows',\n label: '行数',\n defaultValue: '3',\n min: 1,\n max: BRIDGERTE_TABLE_INSERT_MAX_ROWS,\n step: 1\n },\n {\n type: 'number',\n name: 'cols',\n label: '列数',\n defaultValue: '3',\n min: 1,\n max: BRIDGERTE_TABLE_INSERT_MAX_COLS,\n step: 1\n }\n ]\n};\n","import type { MenuItem } from './type';\n\n/*\n * 表格 header 和后续表格浮动菜单共用这组操作入口。\n * 这些菜单默认不进入 toolbar 排列,但仍放在 native-spec,保证 DOM/RN/Flutter 自绘读取同一份\n * command/label/icon 协议。\n */\nexport const tableHeaderMenuItems: MenuItem[] = [\n {\n id: 'table-insert-row-after',\n command: { type: 'table.insertRow', direction: 'after' },\n label: '插入行',\n icon: 'rows-plus'\n },\n {\n id: 'table-delete-row',\n command: { type: 'table.deleteRow' },\n label: '删除行',\n icon: 'rows-minus'\n },\n {\n id: 'table-insert-column-after',\n command: { type: 'table.insertColumn', direction: 'after' },\n label: '插入列',\n icon: 'columns-plus'\n },\n {\n id: 'table-delete-column',\n command: { type: 'table.deleteColumn' },\n label: '删除列',\n icon: 'columns-minus'\n },\n {\n id: 'table-delete',\n command: { type: 'table.delete' },\n label: '删除表格',\n icon: 'table-delete'\n }\n];\n","import type { MenuItem } from './type';\nimport {\n backgroundColorPanel,\n fontFamilyPanel,\n fontSizePanel,\n lineHeightPanel,\n tableInsertPanel,\n textColorPanel\n} from './payloadPanels';\nimport { tableHeaderMenuItems } from './tableHeaderMenuItems';\n\n/**\n * 默认菜单 schema 覆盖 wangEditor 常用入口。\n *\n * RN/Flutter 基于 id、icon、label 和 command 自绘菜单;显示分组和分割线由 toolbarConfig 决定。\n */\nexport const defaultMenuSchema: MenuItem[] = [\n {\n id: 'bold',\n command: { type: 'format.bold' },\n label: '加粗',\n icon: 'bold'\n },\n {\n id: 'italic',\n command: { type: 'format.italic' },\n label: '斜体',\n icon: 'italic'\n },\n {\n id: 'underline',\n command: { type: 'format.underline' },\n label: '下划线',\n icon: 'underline'\n },\n {\n id: 'strike',\n command: { type: 'format.strike' },\n label: '删除线',\n icon: 'strikethrough'\n },\n {\n id: 'inline-code',\n command: { type: 'format.inlineCode' },\n label: '行内代码',\n icon: 'code'\n },\n {\n id: 'superscript',\n command: { type: 'format.superscript' },\n label: '上标',\n icon: 'superscript'\n },\n {\n id: 'subscript',\n command: { type: 'format.subscript' },\n label: '下标',\n icon: 'subscript'\n },\n {\n id: 'clear-style',\n command: { type: 'format.clear' },\n label: '清除样式',\n icon: 'remove-formatting'\n },\n {\n id: 'color',\n command: { type: 'format.color', value: '' },\n label: '文字颜色',\n icon: 'palette',\n requiresPayload: true,\n payloadPanel: textColorPanel\n },\n {\n id: 'background-color',\n command: { type: 'format.backgroundColor', value: '' },\n label: '背景色',\n icon: 'paint-bucket',\n requiresPayload: true,\n payloadPanel: backgroundColorPanel\n },\n {\n id: 'font-size',\n command: { type: 'format.fontSize', value: '' },\n label: '字号',\n icon: 'case-sensitive',\n requiresPayload: true,\n payloadPanel: fontSizePanel\n },\n {\n id: 'font-family',\n command: { type: 'format.fontFamily', value: '' },\n label: '字体',\n icon: 'type',\n requiresPayload: true,\n payloadPanel: fontFamilyPanel\n },\n {\n id: 'line-height',\n command: { type: 'format.lineHeight', value: '' },\n label: '行高',\n icon: 'wrap-text',\n requiresPayload: true,\n payloadPanel: lineHeightPanel\n },\n {\n id: 'paragraph',\n command: { type: 'block.paragraph' },\n label: '正文',\n icon: 'pilcrow'\n },\n {\n id: 'heading-1',\n command: { type: 'block.heading', level: 1 },\n label: '一级标题',\n icon: 'heading-1'\n },\n {\n id: 'heading-2',\n command: { type: 'block.heading', level: 2 },\n label: '二级标题',\n icon: 'heading-2'\n },\n {\n id: 'heading-3',\n command: { type: 'block.heading', level: 3 },\n label: '三级标题',\n icon: 'heading-3'\n },\n {\n id: 'heading-4',\n command: { type: 'block.heading', level: 4 },\n label: '四级标题',\n icon: 'heading-4'\n },\n {\n id: 'heading-5',\n command: { type: 'block.heading', level: 5 },\n label: '五级标题',\n icon: 'heading-5'\n },\n {\n id: 'heading-6',\n command: { type: 'block.heading', level: 6 },\n label: '六级标题',\n icon: 'heading-6'\n },\n {\n id: 'quote',\n command: { type: 'block.quote' },\n label: '引用',\n icon: 'quote'\n },\n {\n id: 'divider',\n command: { type: 'block.divider' },\n label: '分割线',\n icon: 'minus'\n },\n {\n id: 'code-block',\n command: { type: 'block.code' },\n label: '代码块',\n icon: 'square-code'\n },\n {\n id: 'ordered-list',\n command: { type: 'list.ordered' },\n label: '有序列表',\n icon: 'list-ordered'\n },\n {\n id: 'unordered-list',\n command: { type: 'list.unordered' },\n label: '无序列表',\n icon: 'list'\n },\n {\n id: 'todo-list',\n command: { type: 'list.todo' },\n label: '待办列表',\n icon: 'list-todo'\n },\n {\n id: 'align-left',\n command: { type: 'align', value: 'left' },\n label: '左对齐',\n icon: 'align-left'\n },\n {\n id: 'align-center',\n command: { type: 'align', value: 'center' },\n label: '居中',\n icon: 'align-center'\n },\n {\n id: 'align-right',\n command: { type: 'align', value: 'right' },\n label: '右对齐',\n icon: 'align-right'\n },\n {\n id: 'align-justify',\n command: { type: 'align', value: 'justify' },\n label: '两端对齐',\n icon: 'align-justify'\n },\n {\n id: 'indent-increase',\n command: { type: 'indent.increase' },\n label: '增加缩进',\n icon: 'indent-increase'\n },\n {\n id: 'indent-decrease',\n command: { type: 'indent.decrease' },\n label: '减少缩进',\n icon: 'indent-decrease'\n },\n {\n id: 'mention',\n command: { type: 'mention.insert', item: { id: '', label: '', value: '' } },\n label: '@ 提及',\n icon: 'at-sign',\n requiresPayload: true\n },\n {\n id: 'upload-image',\n command: { type: 'media.pickImage' },\n label: '上传图片',\n icon: 'upload-image'\n },\n {\n id: 'upload-video',\n command: { type: 'media.pickVideo' },\n label: '上传视频',\n icon: 'upload-video'\n },\n {\n id: 'table',\n command: { type: 'table.insert', rows: 3, cols: 3 },\n label: '表格',\n icon: 'table',\n requiresPayload: true,\n payloadPanel: tableInsertPanel\n },\n ...tableHeaderMenuItems,\n {\n id: 'slash-command',\n command: { type: 'slash.open' },\n label: '/ 命令',\n icon: 'list-plus'\n },\n {\n id: 'undo',\n command: { type: 'history.undo' },\n label: '撤销',\n icon: 'undo'\n },\n {\n id: 'redo',\n command: { type: 'history.redo' },\n label: '重做',\n icon: 'redo'\n },\n {\n id: 'clear',\n command: { type: 'content.clear' },\n label: '清空',\n icon: 'trash-2'\n },\n {\n id: 'fullscreen',\n command: { type: 'fullscreen.toggle' },\n label: '全屏',\n icon: 'maximize'\n }\n];\n","import type { CommandState, EditorCommand } from '@bridgerte/core';\nimport type { MenuItem } from '../menuSchema';\nimport { defaultMenuSchema } from '../menuSchema';\n\nconst commandStateValueByType: Partial<Record<EditorCommand['type'], (command: EditorCommand) => (\n CommandState['value'] | undefined\n)>> = {\n align: (command) => command.type === 'align' ? command.value : undefined,\n 'block.heading': (command) => command.type === 'block.heading' ? command.level : undefined,\n 'block.setCodeLanguage': (command) => (\n command.type === 'block.setCodeLanguage' ? command.language : undefined\n )\n};\n\n/**\n * 取出菜单命令用于匹配 `CommandState.value` 的稳定值。\n *\n * 同类命令存在多个菜单项时使用这个值区分,比如对齐方式和标题级别。\n */\nexport const getCommandStateMatchValue = (\n command: EditorCommand\n): CommandState['value'] | undefined => commandStateValueByType[command.type]?.(command);\n\n/**\n * 判断某条命令状态是否对应一个完整命令 payload。\n */\nexport const isCommandStateForCommand = (\n command: EditorCommand,\n state: CommandState\n): boolean => {\n const matchValue = getCommandStateMatchValue(command);\n\n return state.command === command.type\n && (matchValue === undefined || state.value === matchValue);\n};\n\n/**\n * 判断某条命令状态是否对应一个菜单项。\n *\n * 原生 toolbar 可以用它把 `CommandState[]` 映射回具体按钮 active/disabled 状态。\n */\nexport const isMenuItemCommandState = (item: MenuItem, state: CommandState): boolean => (\n isCommandStateForCommand(item.command, state)\n);\n\n/**\n * 为给定菜单生成默认禁用状态。\n *\n * 编辑器未 ready 或无选区时,原生 toolbar 可以先使用这组状态兜底。\n */\nexport function createDisabledCommandStates(menuSchema = defaultMenuSchema): CommandState[] {\n return menuSchema.map((item) => ({\n command: item.command.type,\n active: false,\n disabled: true,\n value: getCommandStateMatchValue(item.command)\n }));\n}\n","import type { ToolbarConfig, ToolbarGroupConfig, ToolbarKey } from '@bridgerte/core';\nimport type { MenuItem } from '../menuSchema';\nimport { defaultMenuSchema } from '../menuSchema';\nimport type { ResolvedToolbarItem } from './type';\n\nexport type * from './type';\n\n/**\n * 默认 DOM toolbar 配置。\n *\n * 这里只选择已实现或带参数面板的基础按钮;完整菜单全集仍由 `defaultMenuSchema` 维护。\n */\nexport const defaultToolbarConfig: ToolbarConfig = {\n toolbarKeys: [\n 'undo',\n 'redo',\n 'clear',\n '|',\n 'paragraph',\n 'heading-1',\n 'heading-2',\n 'heading-3',\n 'heading-4',\n 'heading-5',\n 'heading-6',\n 'quote',\n 'divider',\n 'code-block',\n '|',\n 'bold',\n 'italic',\n 'underline',\n 'strike',\n 'inline-code',\n 'superscript',\n 'subscript',\n 'clear-style',\n 'color',\n 'background-color',\n 'font-size',\n 'font-family',\n 'line-height',\n '|',\n 'ordered-list',\n 'unordered-list',\n 'todo-list',\n '|',\n 'upload-image',\n 'upload-video',\n '|',\n 'table',\n '|',\n 'align-left',\n 'align-center',\n 'align-right',\n 'align-justify',\n 'indent-increase',\n 'indent-decrease',\n '|',\n 'fullscreen'\n ]\n};\n\nconst isToolbarGroupConfig = (key: ToolbarKey): key is ToolbarGroupConfig => (\n typeof key === 'object' && Array.isArray(key.menuKeys)\n);\n\nconst createMenuMap = (menuSchema: MenuItem[]) => new Map(\n menuSchema.map((item) => [item.id, item])\n);\n\nconst shouldExcludeToolbarKey = (\n key: ToolbarKey,\n excludeKeys: Set<string>\n) => {\n if (typeof key === 'string') return key !== '|' && excludeKeys.has(key);\n\n return excludeKeys.has(key.key) || key.menuKeys.every((menuKey) => excludeKeys.has(menuKey));\n};\n\nconst applyToolbarConfigOverrides = (\n baseKeys: ToolbarKey[],\n toolbarConfig?: ToolbarConfig\n): ToolbarKey[] => {\n const excludeKeys = new Set(toolbarConfig?.excludeKeys ?? []);\n /*\n * 先排除再插入,等价于“在用户最终想保留的默认菜单里加东西”。\n * insert index 做夹取,避免业务传入负数或超长下标时破坏默认 toolbar。\n */\n const filteredKeys = baseKeys.filter((key) => !shouldExcludeToolbarKey(key, excludeKeys));\n\n if (!toolbarConfig?.insertKeys) return filteredKeys;\n\n const insertIndex = Math.max(0, Math.min(toolbarConfig.insertKeys.index, filteredKeys.length));\n\n return [\n ...filteredKeys.slice(0, insertIndex),\n ...toolbarConfig.insertKeys.keys,\n ...filteredKeys.slice(insertIndex)\n ];\n};\n\nconst resolveToolbarKey = (\n key: ToolbarKey,\n menuMap: Map<string, MenuItem>,\n excludeKeys: Set<string>,\n separatorIndex: number\n): ResolvedToolbarItem[] => {\n if (key === '|') {\n return [{ type: 'separator', key: `separator-${separatorIndex}` }];\n }\n\n if (typeof key === 'string') {\n const item = menuMap.get(key);\n\n // 未知 key 直接忽略;需要 payload 但没有 panel 的菜单暂不渲染,避免按钮点击后无法生成合法命令。\n if (!item || (item.requiresPayload && !item.payloadPanel) || excludeKeys.has(item.id)) {\n return [];\n }\n\n return [{ type: 'button', item }];\n }\n\n if (isToolbarGroupConfig(key)) {\n const items = key.menuKeys\n .filter((menuKey) => !excludeKeys.has(menuKey))\n .map((menuKey) => menuMap.get(menuKey))\n .filter((item): item is MenuItem => (\n item !== undefined && (!item.requiresPayload || item.payloadPanel !== undefined)\n ));\n\n return items.length > 0 ? [{\n type: 'group',\n key: key.key,\n title: key.title,\n icon: key.icon,\n items\n }] : [];\n }\n\n return [];\n};\n\nconst shouldKeepResolvedToolbarItem = (\n item: ResolvedToolbarItem,\n items: ResolvedToolbarItem[]\n) => {\n if (item.type !== 'separator') return true;\n\n const previousItem = items[items.length - 1];\n\n return previousItem !== undefined && previousItem.type !== 'separator';\n};\n\nconst trimTrailingToolbarSeparators = (items: ResolvedToolbarItem[]) => {\n while (items.at(-1)?.type === 'separator') {\n items.pop();\n }\n\n return items;\n};\n\n/**\n * 把 wangEditor 风格的 JSON 配置解析成 DOM/RN/Flutter 都能消费的菜单结构。\n *\n * 未知 key 和缺少 payloadPanel 的 requiresPayload 菜单会被忽略,避免默认 toolbar 渲染无法处理的按钮。\n * 分割线会自动去掉开头、结尾和连续项,避免被跳过的菜单留下空分隔。\n */\nexport const resolveToolbarMenu = (\n toolbarConfig: ToolbarConfig = defaultToolbarConfig,\n menuSchema: MenuItem[] = defaultMenuSchema\n): ResolvedToolbarItem[] => {\n const menuMap = createMenuMap(menuSchema);\n const baseKeys = toolbarConfig.toolbarKeys ?? defaultToolbarConfig.toolbarKeys ?? [];\n const toolbarKeys = applyToolbarConfigOverrides(baseKeys, toolbarConfig);\n const excludeKeys = new Set(toolbarConfig.excludeKeys ?? []);\n let separatorIndex = 0;\n\n const resolvedItems = toolbarKeys.reduce<ResolvedToolbarItem[]>((items, key) => {\n const nextItems = resolveToolbarKey(key, menuMap, excludeKeys, separatorIndex);\n\n if (key === '|') separatorIndex += 1;\n\n nextItems.forEach((item) => {\n if (shouldKeepResolvedToolbarItem(item, items)) {\n items.push(item);\n }\n });\n\n return items;\n }, []);\n\n return trimTrailingToolbarSeparators(resolvedItems);\n};\n"],"names":["codeBlockLanguagePanel","codeBlockLanguagePayloadPanel","textColorPanel","backgroundColorPanel","fontSizePanel","fontFamilyPanel","lineHeightPanel","tableInsertPanel","BRIDGERTE_TABLE_INSERT_MAX_ROWS","BRIDGERTE_TABLE_INSERT_MAX_COLS","tableHeaderMenuItems","defaultMenuSchema","commandStateValueByType","command","getCommandStateMatchValue","_a","isCommandStateForCommand","state","matchValue","isMenuItemCommandState","item","createDisabledCommandStates","menuSchema","defaultToolbarConfig","isToolbarGroupConfig","key","createMenuMap","shouldExcludeToolbarKey","excludeKeys","menuKey","applyToolbarConfigOverrides","baseKeys","toolbarConfig","filteredKeys","insertIndex","resolveToolbarKey","menuMap","separatorIndex","items","shouldKeepResolvedToolbarItem","previousItem","trimTrailingToolbarSeparators","resolveToolbarMenu","toolbarKeys","resolvedItems","nextItems"],"mappings":"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"}
1
+ {"version":3,"file":"native-spec.js","sources":["../../native-spec/src/menuSchema/payloadPanels.ts","../../native-spec/src/menuSchema/tableHeaderMenuItems.ts","../../native-spec/src/menuSchema/defaultMenuSchema.ts","../../native-spec/src/commandState/index.ts","../../native-spec/src/toolbarConfig/index.ts"],"sourcesContent":["import {\n BRIDGERTE_TABLE_INSERT_MAX_COLS,\n BRIDGERTE_TABLE_INSERT_MAX_ROWS,\n type PayloadPanelSchema\n} from '@bridgerte/core';\n\n/**\n * 代码块语言列表给 DOM 代码块顶部控制栏和原生侧自绘使用。\n *\n * 空字符串表示纯文本;默认候选按 Shiki 高频技术文档语言维护。业务如需裁剪语言、\n * 调整顺序或接入更多 Shiki 语言,传入自己的 `codeBlockLanguagePanel` 即可。\n */\nexport const codeBlockLanguagePanel: PayloadPanelSchema = {\n id: 'code-block-language',\n title: '代码语言',\n fields: [\n {\n type: 'select',\n name: 'language',\n label: '语言',\n defaultValue: '',\n options: [\n { label: '纯文本', value: '' },\n { label: 'Bash', value: 'shellscript' },\n { label: 'C', value: 'c' },\n { label: 'C++', value: 'cpp' },\n { label: 'C#', value: 'csharp' },\n { label: 'CSS', value: 'css' },\n { label: 'Dart', value: 'dart' },\n { label: 'Dockerfile', value: 'docker' },\n { label: 'Go', value: 'go' },\n { label: 'HTML', value: 'html' },\n { label: 'Java', value: 'java' },\n { label: 'JavaScript', value: 'javascript' },\n { label: 'JSON', value: 'json' },\n { label: 'Kotlin', value: 'kotlin' },\n { label: 'Markdown', value: 'markdown' },\n { label: 'PHP', value: 'php' },\n { label: 'Python', value: 'python' },\n { label: 'Rust', value: 'rust' },\n { label: 'SQL', value: 'sql' },\n { label: 'Swift', value: 'swift' },\n { label: 'TOML', value: 'toml' },\n { label: 'TSX', value: 'tsx' },\n { label: 'TypeScript', value: 'typescript' },\n { label: 'Vue', value: 'vue' },\n { label: 'XML', value: 'xml' },\n { label: 'YAML', value: 'yaml' }\n ]\n }\n ]\n};\n\n/**\n * 兼容旧导出名。\n *\n * 代码块语言现在由代码块 header 触发,不再代表 toolbar 菜单 payload。\n */\nexport const codeBlockLanguagePayloadPanel = codeBlockLanguagePanel;\n\n/**\n * 颜色菜单使用 color 字段而不是预设色列表。\n *\n * DOM 默认面板可以渲染内置颜色控件,RN/Flutter/WebView 或业务自绘层仍读取同一份 schema。\n */\nexport const textColorPanel: PayloadPanelSchema = {\n id: 'text-color',\n title: '文字颜色',\n fields: [\n {\n type: 'color',\n name: 'value',\n label: '颜色'\n }\n ]\n};\n\nexport const backgroundColorPanel: PayloadPanelSchema = {\n id: 'background-color',\n title: '背景色',\n fields: [\n {\n type: 'color',\n name: 'value',\n label: '背景'\n }\n ]\n};\n\nexport const fontSizePanel: PayloadPanelSchema = {\n id: 'font-size',\n title: '字号',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '字号',\n defaultValue: '16px',\n options: [\n { label: '小号 14px', value: '14px' },\n { label: '正文 16px', value: '16px' },\n { label: '强调 18px', value: '18px' },\n { label: '标题 20px', value: '20px' },\n { label: '大标题 24px', value: '24px' }\n ]\n }\n ]\n};\n\nexport const fontFamilyPanel: PayloadPanelSchema = {\n id: 'font-family',\n title: '字体',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '字体',\n defaultValue: '',\n options: [\n { label: '跟随页面', value: '' },\n { label: '无衬线', value: 'sans-serif' },\n { label: '衬线', value: 'serif' },\n { label: '等宽', value: 'monospace' }\n ]\n }\n ]\n};\n\nexport const lineHeightPanel: PayloadPanelSchema = {\n id: 'line-height',\n title: '行高',\n fields: [\n {\n type: 'select',\n name: 'value',\n label: '行高',\n defaultValue: '1.7',\n options: [\n { label: '紧凑 1.4', value: '1.4' },\n { label: '常规 1.7', value: '1.7' },\n { label: '舒展 2', value: '2' }\n ]\n }\n ]\n};\n\n/**\n * 表格插入使用 number 字段收集行列。\n *\n * DOM 默认面板、H5 自绘和 RN/Flutter 原生表单都读取同一份 schema;真正的表格进阶操作\n * 仍放后续表格菜单阶段继续扩展。\n */\nexport const tableInsertPanel: PayloadPanelSchema = {\n id: 'table-insert',\n title: '插入表格',\n fields: [\n {\n type: 'number',\n name: 'rows',\n label: '行数',\n defaultValue: '3',\n min: 1,\n max: BRIDGERTE_TABLE_INSERT_MAX_ROWS,\n step: 1\n },\n {\n type: 'number',\n name: 'cols',\n label: '列数',\n defaultValue: '3',\n min: 1,\n max: BRIDGERTE_TABLE_INSERT_MAX_COLS,\n step: 1\n }\n ]\n};\n","import type { MenuItem } from './type';\r\n\r\n/*\r\n * 表格 header 和后续表格浮动菜单共用这组操作入口。\r\n * 这些菜单默认不进入 toolbar 排列,但仍放在 native-spec,保证 DOM/RN/Flutter 自绘读取同一份\r\n * command/label/icon 协议。\r\n */\r\nexport const tableHeaderMenuItems: MenuItem[] = [\r\n {\r\n id: 'table-insert-row-after',\r\n command: { type: 'table.insertRow', direction: 'after' },\r\n label: '插入行',\r\n icon: 'rows-plus'\r\n },\r\n {\r\n id: 'table-delete-row',\r\n command: { type: 'table.deleteRow' },\r\n label: '删除行',\r\n icon: 'rows-minus'\r\n },\r\n {\r\n id: 'table-insert-column-after',\r\n command: { type: 'table.insertColumn', direction: 'after' },\r\n label: '插入列',\r\n icon: 'columns-plus'\r\n },\r\n {\r\n id: 'table-delete-column',\r\n command: { type: 'table.deleteColumn' },\r\n label: '删除列',\r\n icon: 'columns-minus'\r\n },\r\n {\r\n id: 'table-delete',\r\n command: { type: 'table.delete' },\r\n label: '删除表格',\r\n icon: 'table-delete'\r\n }\r\n];\r\n","import type { MenuItem } from './type';\r\nimport {\r\n backgroundColorPanel,\r\n fontFamilyPanel,\r\n fontSizePanel,\r\n lineHeightPanel,\r\n tableInsertPanel,\r\n textColorPanel\r\n} from './payloadPanels';\r\nimport { tableHeaderMenuItems } from './tableHeaderMenuItems';\r\n\r\n/**\r\n * 默认菜单 schema 覆盖 wangEditor 常用入口。\r\n *\r\n * RN/Flutter 基于 id、icon、label 和 command 自绘菜单;显示分组和分割线由 toolbarConfig 决定。\n */\r\nexport const defaultMenuSchema: MenuItem[] = [\r\n {\r\n id: 'bold',\r\n command: { type: 'format.bold' },\r\n label: '加粗',\r\n icon: 'bold'\r\n },\r\n {\r\n id: 'italic',\r\n command: { type: 'format.italic' },\r\n label: '斜体',\r\n icon: 'italic'\r\n },\r\n {\r\n id: 'underline',\r\n command: { type: 'format.underline' },\r\n label: '下划线',\r\n icon: 'underline'\r\n },\r\n {\r\n id: 'strike',\r\n command: { type: 'format.strike' },\r\n label: '删除线',\r\n icon: 'strikethrough'\r\n },\r\n {\r\n id: 'inline-code',\r\n command: { type: 'format.inlineCode' },\r\n label: '行内代码',\r\n icon: 'code'\r\n },\r\n {\r\n id: 'superscript',\r\n command: { type: 'format.superscript' },\r\n label: '上标',\r\n icon: 'superscript'\r\n },\r\n {\r\n id: 'subscript',\r\n command: { type: 'format.subscript' },\r\n label: '下标',\r\n icon: 'subscript'\r\n },\r\n {\r\n id: 'clear-style',\r\n command: { type: 'format.clear' },\r\n label: '清除样式',\r\n icon: 'remove-formatting'\r\n },\r\n {\r\n id: 'color',\r\n command: { type: 'format.color', value: '' },\r\n label: '文字颜色',\r\n icon: 'palette',\r\n requiresPayload: true,\r\n payloadPanel: textColorPanel\r\n },\r\n {\r\n id: 'background-color',\r\n command: { type: 'format.backgroundColor', value: '' },\r\n label: '背景色',\r\n icon: 'paint-bucket',\r\n requiresPayload: true,\r\n payloadPanel: backgroundColorPanel\r\n },\r\n {\r\n id: 'font-size',\r\n command: { type: 'format.fontSize', value: '' },\r\n label: '字号',\r\n icon: 'case-sensitive',\r\n requiresPayload: true,\r\n payloadPanel: fontSizePanel\r\n },\r\n {\r\n id: 'font-family',\r\n command: { type: 'format.fontFamily', value: '' },\r\n label: '字体',\r\n icon: 'type',\r\n requiresPayload: true,\r\n payloadPanel: fontFamilyPanel\r\n },\r\n {\r\n id: 'line-height',\r\n command: { type: 'format.lineHeight', value: '' },\r\n label: '行高',\r\n icon: 'wrap-text',\r\n requiresPayload: true,\r\n payloadPanel: lineHeightPanel\r\n },\r\n {\r\n id: 'paragraph',\r\n command: { type: 'block.paragraph' },\r\n label: '正文',\r\n icon: 'pilcrow'\r\n },\r\n {\r\n id: 'heading-1',\r\n command: { type: 'block.heading', level: 1 },\r\n label: '一级标题',\r\n icon: 'heading-1'\r\n },\r\n {\r\n id: 'heading-2',\r\n command: { type: 'block.heading', level: 2 },\r\n label: '二级标题',\r\n icon: 'heading-2'\r\n },\r\n {\r\n id: 'heading-3',\r\n command: { type: 'block.heading', level: 3 },\r\n label: '三级标题',\r\n icon: 'heading-3'\r\n },\r\n {\r\n id: 'heading-4',\r\n command: { type: 'block.heading', level: 4 },\r\n label: '四级标题',\r\n icon: 'heading-4'\r\n },\r\n {\r\n id: 'heading-5',\r\n command: { type: 'block.heading', level: 5 },\r\n label: '五级标题',\r\n icon: 'heading-5'\r\n },\r\n {\r\n id: 'heading-6',\r\n command: { type: 'block.heading', level: 6 },\r\n label: '六级标题',\r\n icon: 'heading-6'\r\n },\r\n {\r\n id: 'quote',\r\n command: { type: 'block.quote' },\r\n label: '引用',\r\n icon: 'quote'\r\n },\r\n {\r\n id: 'divider',\r\n command: { type: 'block.divider' },\r\n label: '分割线',\r\n icon: 'minus'\r\n },\r\n {\r\n id: 'code-block',\r\n command: { type: 'block.code' },\r\n label: '代码块',\r\n icon: 'square-code'\r\n },\r\n {\r\n id: 'ordered-list',\r\n command: { type: 'list.ordered' },\r\n label: '有序列表',\r\n icon: 'list-ordered'\r\n },\r\n {\r\n id: 'unordered-list',\r\n command: { type: 'list.unordered' },\r\n label: '无序列表',\r\n icon: 'list'\r\n },\r\n {\r\n id: 'todo-list',\r\n command: { type: 'list.todo' },\r\n label: '待办列表',\r\n icon: 'list-todo'\r\n },\r\n {\r\n id: 'align-left',\r\n command: { type: 'align', value: 'left' },\r\n label: '左对齐',\r\n icon: 'align-left'\r\n },\r\n {\r\n id: 'align-center',\r\n command: { type: 'align', value: 'center' },\r\n label: '居中',\r\n icon: 'align-center'\r\n },\r\n {\r\n id: 'align-right',\r\n command: { type: 'align', value: 'right' },\r\n label: '右对齐',\r\n icon: 'align-right'\r\n },\r\n {\r\n id: 'align-justify',\r\n command: { type: 'align', value: 'justify' },\r\n label: '两端对齐',\r\n icon: 'align-justify'\r\n },\r\n {\r\n id: 'indent-increase',\r\n command: { type: 'indent.increase' },\r\n label: '增加缩进',\r\n icon: 'indent-increase'\r\n },\r\n {\r\n id: 'indent-decrease',\r\n command: { type: 'indent.decrease' },\r\n label: '减少缩进',\r\n icon: 'indent-decrease'\r\n },\r\n {\r\n id: 'mention',\r\n command: { type: 'mention.insert', item: { id: '', label: '', value: '' } },\r\n label: '@ 提及',\r\n icon: 'at-sign',\r\n requiresPayload: true\r\n },\r\n {\r\n id: 'upload-image',\r\n command: { type: 'media.pickImage' },\r\n label: '上传图片',\r\n icon: 'upload-image'\r\n },\r\n {\r\n id: 'upload-video',\r\n command: { type: 'media.pickVideo' },\r\n label: '上传视频',\r\n icon: 'upload-video'\r\n },\r\n {\r\n id: 'table',\r\n command: { type: 'table.insert', rows: 3, cols: 3 },\r\n label: '表格',\r\n icon: 'table',\r\n requiresPayload: true,\r\n payloadPanel: tableInsertPanel\r\n },\r\n ...tableHeaderMenuItems,\r\n {\r\n id: 'slash-command',\r\n command: { type: 'slash.open' },\r\n label: '/ 命令',\r\n icon: 'list-plus'\r\n },\r\n {\r\n id: 'undo',\r\n command: { type: 'history.undo' },\r\n label: '撤销',\r\n icon: 'undo'\r\n },\r\n {\r\n id: 'redo',\r\n command: { type: 'history.redo' },\r\n label: '重做',\r\n icon: 'redo'\r\n },\r\n {\r\n id: 'clear',\r\n command: { type: 'content.clear' },\r\n label: '清空',\r\n icon: 'trash-2'\r\n },\r\n {\r\n id: 'fullscreen',\r\n command: { type: 'fullscreen.toggle' },\r\n label: '全屏',\r\n icon: 'maximize'\r\n }\r\n];\r\n","import type { CommandState, EditorCommand } from '@bridgerte/core';\r\nimport type { MenuItem } from '../menuSchema';\r\nimport { defaultMenuSchema } from '../menuSchema';\r\n\r\nconst commandStateValueByType: Partial<Record<EditorCommand['type'], (command: EditorCommand) => (\r\n CommandState['value'] | undefined\r\n)>> = {\r\n align: (command) => command.type === 'align' ? command.value : undefined,\r\n 'block.heading': (command) => command.type === 'block.heading' ? command.level : undefined,\r\n 'block.setCodeLanguage': (command) => (\r\n command.type === 'block.setCodeLanguage' ? command.language : undefined\r\n )\r\n};\r\n\r\n/**\r\n * 取出菜单命令用于匹配 `CommandState.value` 的稳定值。\r\n *\r\n * 同类命令存在多个菜单项时使用这个值区分,比如对齐方式和标题级别。\r\n */\r\nexport const getCommandStateMatchValue = (\r\n command: EditorCommand\r\n): CommandState['value'] | undefined => commandStateValueByType[command.type]?.(command);\r\n\r\n/**\r\n * 判断某条命令状态是否对应一个完整命令 payload。\r\n */\r\nexport const isCommandStateForCommand = (\r\n command: EditorCommand,\r\n state: CommandState\r\n): boolean => {\r\n const matchValue = getCommandStateMatchValue(command);\r\n\r\n return state.command === command.type\r\n && (matchValue === undefined || state.value === matchValue);\r\n};\r\n\r\n/**\r\n * 判断某条命令状态是否对应一个菜单项。\r\n *\r\n * 原生 toolbar 可以用它把 `CommandState[]` 映射回具体按钮 active/disabled 状态。\r\n */\r\nexport const isMenuItemCommandState = (item: MenuItem, state: CommandState): boolean => (\r\n isCommandStateForCommand(item.command, state)\r\n);\r\n\r\n/**\r\n * 为给定菜单生成默认禁用状态。\r\n *\r\n * 编辑器未 ready 或无选区时,原生 toolbar 可以先使用这组状态兜底。\r\n */\r\nexport function createDisabledCommandStates(menuSchema = defaultMenuSchema): CommandState[] {\r\n return menuSchema.map((item) => ({\r\n command: item.command.type,\r\n active: false,\r\n disabled: true,\r\n value: getCommandStateMatchValue(item.command)\r\n }));\r\n}\r\n","import type { ToolbarConfig, ToolbarGroupConfig, ToolbarKey } from '@bridgerte/core';\r\nimport type { MenuItem } from '../menuSchema';\r\nimport { defaultMenuSchema } from '../menuSchema';\r\nimport type { ResolvedToolbarItem } from './type';\r\n\r\nexport type * from './type';\r\n\r\n/**\r\n * 默认 DOM toolbar 配置。\r\n *\r\n * 这里只选择已实现或带参数面板的基础按钮;完整菜单全集仍由 `defaultMenuSchema` 维护。\r\n */\r\nexport const defaultToolbarConfig: ToolbarConfig = {\r\n toolbarKeys: [\r\n 'undo',\r\n 'redo',\r\n 'clear',\r\n '|',\r\n 'paragraph',\r\n 'heading-1',\r\n 'heading-2',\r\n 'heading-3',\r\n 'heading-4',\r\n 'heading-5',\r\n 'heading-6',\r\n 'quote',\r\n 'divider',\r\n 'code-block',\r\n '|',\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strike',\r\n 'inline-code',\r\n 'superscript',\r\n 'subscript',\r\n 'clear-style',\r\n 'color',\r\n 'background-color',\r\n 'font-size',\r\n 'font-family',\r\n 'line-height',\r\n '|',\r\n 'ordered-list',\n 'unordered-list',\n 'todo-list',\n '|',\n 'upload-image',\n 'upload-video',\n '|',\n 'table',\n '|',\n 'align-left',\r\n 'align-center',\r\n 'align-right',\r\n 'align-justify',\r\n 'indent-increase',\r\n 'indent-decrease',\r\n '|',\r\n 'fullscreen'\r\n ]\r\n};\r\n\r\nconst isToolbarGroupConfig = (key: ToolbarKey): key is ToolbarGroupConfig => (\r\n typeof key === 'object' && Array.isArray(key.menuKeys)\r\n);\r\n\r\nconst createMenuMap = (menuSchema: MenuItem[]) => new Map(\r\n menuSchema.map((item) => [item.id, item])\r\n);\r\n\r\nconst shouldExcludeToolbarKey = (\r\n key: ToolbarKey,\r\n excludeKeys: Set<string>\r\n) => {\r\n if (typeof key === 'string') return key !== '|' && excludeKeys.has(key);\r\n\r\n return excludeKeys.has(key.key) || key.menuKeys.every((menuKey) => excludeKeys.has(menuKey));\r\n};\r\n\r\nconst applyToolbarConfigOverrides = (\r\n baseKeys: ToolbarKey[],\r\n toolbarConfig?: ToolbarConfig\r\n): ToolbarKey[] => {\r\n const excludeKeys = new Set(toolbarConfig?.excludeKeys ?? []);\r\n /*\r\n * 先排除再插入,等价于“在用户最终想保留的默认菜单里加东西”。\r\n * insert index 做夹取,避免业务传入负数或超长下标时破坏默认 toolbar。\r\n */\r\n const filteredKeys = baseKeys.filter((key) => !shouldExcludeToolbarKey(key, excludeKeys));\r\n\r\n if (!toolbarConfig?.insertKeys) return filteredKeys;\r\n\r\n const insertIndex = Math.max(0, Math.min(toolbarConfig.insertKeys.index, filteredKeys.length));\r\n\r\n return [\r\n ...filteredKeys.slice(0, insertIndex),\r\n ...toolbarConfig.insertKeys.keys,\r\n ...filteredKeys.slice(insertIndex)\r\n ];\r\n};\r\n\r\nconst resolveToolbarKey = (\r\n key: ToolbarKey,\r\n menuMap: Map<string, MenuItem>,\r\n excludeKeys: Set<string>,\r\n separatorIndex: number\r\n): ResolvedToolbarItem[] => {\r\n if (key === '|') {\r\n return [{ type: 'separator', key: `separator-${separatorIndex}` }];\r\n }\r\n\r\n if (typeof key === 'string') {\r\n const item = menuMap.get(key);\r\n\r\n // 未知 key 直接忽略;需要 payload 但没有 panel 的菜单暂不渲染,避免按钮点击后无法生成合法命令。\r\n if (!item || (item.requiresPayload && !item.payloadPanel) || excludeKeys.has(item.id)) {\r\n return [];\r\n }\r\n\r\n return [{ type: 'button', item }];\r\n }\r\n\r\n if (isToolbarGroupConfig(key)) {\r\n const items = key.menuKeys\r\n .filter((menuKey) => !excludeKeys.has(menuKey))\r\n .map((menuKey) => menuMap.get(menuKey))\r\n .filter((item): item is MenuItem => (\r\n item !== undefined && (!item.requiresPayload || item.payloadPanel !== undefined)\r\n ));\r\n\r\n return items.length > 0 ? [{\r\n type: 'group',\r\n key: key.key,\r\n title: key.title,\r\n icon: key.icon,\r\n items\r\n }] : [];\r\n }\r\n\r\n return [];\r\n};\r\n\r\nconst shouldKeepResolvedToolbarItem = (\r\n item: ResolvedToolbarItem,\r\n items: ResolvedToolbarItem[]\r\n) => {\r\n if (item.type !== 'separator') return true;\r\n\r\n const previousItem = items[items.length - 1];\r\n\r\n return previousItem !== undefined && previousItem.type !== 'separator';\r\n};\r\n\r\nconst trimTrailingToolbarSeparators = (items: ResolvedToolbarItem[]) => {\r\n while (items.at(-1)?.type === 'separator') {\r\n items.pop();\r\n }\r\n\r\n return items;\r\n};\r\n\r\n/**\r\n * 把 wangEditor 风格的 JSON 配置解析成 DOM/RN/Flutter 都能消费的菜单结构。\r\n *\r\n * 未知 key 和缺少 payloadPanel 的 requiresPayload 菜单会被忽略,避免默认 toolbar 渲染无法处理的按钮。\r\n * 分割线会自动去掉开头、结尾和连续项,避免被跳过的菜单留下空分隔。\r\n */\r\nexport const resolveToolbarMenu = (\r\n toolbarConfig: ToolbarConfig = defaultToolbarConfig,\r\n menuSchema: MenuItem[] = defaultMenuSchema\r\n): ResolvedToolbarItem[] => {\r\n const menuMap = createMenuMap(menuSchema);\r\n const baseKeys = toolbarConfig.toolbarKeys ?? defaultToolbarConfig.toolbarKeys ?? [];\r\n const toolbarKeys = applyToolbarConfigOverrides(baseKeys, toolbarConfig);\r\n const excludeKeys = new Set(toolbarConfig.excludeKeys ?? []);\r\n let separatorIndex = 0;\r\n\r\n const resolvedItems = toolbarKeys.reduce<ResolvedToolbarItem[]>((items, key) => {\r\n const nextItems = resolveToolbarKey(key, menuMap, excludeKeys, separatorIndex);\r\n\r\n if (key === '|') separatorIndex += 1;\r\n\r\n nextItems.forEach((item) => {\r\n if (shouldKeepResolvedToolbarItem(item, items)) {\r\n items.push(item);\r\n }\r\n });\r\n\r\n return items;\r\n }, []);\r\n\r\n return trimTrailingToolbarSeparators(resolvedItems);\r\n};\r\n"],"names":["codeBlockLanguagePanel","codeBlockLanguagePayloadPanel","textColorPanel","backgroundColorPanel","fontSizePanel","fontFamilyPanel","lineHeightPanel","tableInsertPanel","BRIDGERTE_TABLE_INSERT_MAX_ROWS","BRIDGERTE_TABLE_INSERT_MAX_COLS","tableHeaderMenuItems","defaultMenuSchema","commandStateValueByType","command","getCommandStateMatchValue","_a","isCommandStateForCommand","state","matchValue","isMenuItemCommandState","item","createDisabledCommandStates","menuSchema","defaultToolbarConfig","isToolbarGroupConfig","key","createMenuMap","shouldExcludeToolbarKey","excludeKeys","menuKey","applyToolbarConfigOverrides","baseKeys","toolbarConfig","filteredKeys","insertIndex","resolveToolbarKey","menuMap","separatorIndex","items","shouldKeepResolvedToolbarItem","previousItem","trimTrailingToolbarSeparators","resolveToolbarMenu","toolbarKeys","resolvedItems","nextItems"],"mappings":"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"}
package/dist/webview.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-B5xR6zve.cjs");exports.createWebViewBridgeRuntime=e.createWebViewBridgeRuntime;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BBzHVrSi.cjs");exports.createWebViewBridgeRuntime=e.createWebViewBridgeRuntime;
2
2
  //# sourceMappingURL=webview.cjs.map
package/dist/webview.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b as i } from "./index-DNqqQycS.js";
1
+ import { b as i } from "./index-DDfgjstx.js";
2
2
  export {
3
3
  i as createWebViewBridgeRuntime
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bridgerte",
3
- "version": "0.9.11",
3
+ "version": "0.9.13",
4
4
  "description": "Cross-platform rich text editor with WebView bridge support.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1,4 +0,0 @@
1
- "use strict";var Sn=Object.defineProperty;var Nn=(e,t,n)=>t in e?Sn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ae=(e,t,n)=>Nn(e,typeof t!="symbol"?t+"":t,n);const Le=require("./bridge.cjs"),Y=require("./index-GaS65GL0.cjs"),h=require("lexical"),te=require("@lexical/rich-text"),O=require("@lexical/code"),V=require("@lexical/list"),D=require("@lexical/table"),F=require("@lexical/link"),Ut=require("@lexical/history"),Xe=require("@lexical/html"),G=require("@lexical/selection"),Re=require("@lexical/utils"),z=require("./native-spec.cjs"),jt=require("./index-DF8OhKI4.cjs"),U=require("@lexical/code-shiki"),oe=require("@floating-ui/dom"),ct="bridgerte-media",Kt="Loading",dt=(e,t)=>`${e}:${t}`,ae=e=>typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):void 0,ut=e=>typeof e=="number"&&Number.isFinite(e)?Math.min(Math.max(e,0),100):void 0,Ln=e=>e===20||e===50||e===100,gt=e=>Ln(e)?e:void 0,mt=e=>e==="center"||e==="right"?e:void 0,Rn=e=>e.status==="error"?e.errorMessage??"媒体加载失败":Kt,Pn=(e,t)=>!t||e.status===void 0||e.status==="success",Be=(e,t,n)=>{n&&e.setAttribute(t,n)},ht=(e,t,n)=>{n!==void 0&&e.setAttribute(t,String(n))};class ce extends h.DecoratorNode{constructor(n,r){super(r);Ae(this,"__payload");this.__payload={...n,assetId:n.assetId??dt(n.mediaType,n.url),width:ae(n.width),height:ae(n.height),duration:ae(n.duration),progress:ut(n.progress),displayWidthPercent:gt(n.displayWidthPercent),align:mt(n.align)},this.__payload.displayWidthPercent===void 0&&delete this.__payload.displayWidthPercent,this.__payload.align===void 0&&delete this.__payload.align}static getType(){return ct}static clone(n){return new ce(n.__payload,n.__key)}createDOM(n){return this.createMediaElement(!0)}updateDOM(n,r){if(n.__payload===this.__payload)return!1;const o=this.createMediaElement(!0);return r.replaceWith(o),!0}exportDOM(n){return{element:this.createMediaElement(!1)}}static importDOM(){return{img:()=>({conversion:In,priority:1}),video:()=>({conversion:$n,priority:1})}}static importJSON(n){return de(n).updateFromJSON(n)}exportJSON(){return{...super.exportJSON(),...this.__payload,type:ct}}getTextContent(){return this.__payload.title??this.__payload.alt??this.__payload.url}isInline(){return!1}getAsset(){const n=this.__payload,r={id:n.assetId??dt(n.mediaType,n.url),type:n.mediaType,url:n.url,status:n.status,progress:n.progress,poster:n.poster,width:n.width,height:n.height,duration:n.duration,mimeType:n.mimeType,size:n.size,errorMessage:n.errorMessage,external:!0};return n.displayWidthPercent!==void 0&&(r.displayWidthPercent=n.displayWidthPercent),n.align!==void 0&&(r.align=n.align),r}updatePayload(n){const r=this.getWritable();r.__payload={...r.__payload,...n,width:ae(n.width??r.__payload.width),height:ae(n.height??r.__payload.height),duration:ae(n.duration??r.__payload.duration),progress:ut(n.progress??r.__payload.progress),displayWidthPercent:Object.prototype.hasOwnProperty.call(n,"displayWidthPercent")?gt(n.displayWidthPercent):r.__payload.displayWidthPercent,align:Object.prototype.hasOwnProperty.call(n,"align")?mt(n.align):r.__payload.align},r.__payload.displayWidthPercent===void 0&&delete r.__payload.displayWidthPercent,r.__payload.align===void 0&&delete r.__payload.align}createMediaElement(n){const r=this.__payload,o=document.createElement("figure"),a=r.mediaType==="image"?document.createElement("img"):document.createElement("video"),s=()=>{o.dataset.loadState="loaded"};o.className=`bridgerte__media bridgerte__media--${r.mediaType}`,o.contentEditable="false",o.dataset.assetId=r.assetId,o.dataset.mediaType=r.mediaType,o.dataset.status=r.status??"success",n&&(o.dataset.loadState=r.status==="error"?"error":"loading"),r.progress!==void 0&&(o.dataset.progress=String(r.progress)),r.align!==void 0&&(o.dataset.align=r.align),r.displayWidthPercent!==void 0&&(o.dataset.displayWidthPercent=String(r.displayWidthPercent),o.style.setProperty("--bridgerte-media-display-width",`${r.displayWidthPercent}%`)),r.width!==void 0&&r.height!==void 0&&o.style.setProperty("--bridgerte-media-aspect-ratio",`${r.width} / ${r.height}`),a.className="bridgerte__media-element",n&&(a.addEventListener(r.mediaType==="image"?"load":"loadedmetadata",s,{once:!0}),a.addEventListener("error",()=>{o.dataset.loadState="error"},{once:!0}));const c=Pn(r,n);if(r.mediaType==="image"?(c&&a.setAttribute("src",r.url),a.setAttribute("loading","lazy"),Be(a,"alt",r.alt??r.title)):(c&&a.setAttribute("src",r.url),a.setAttribute("controls","true"),a.setAttribute("preload","metadata"),Be(a,"poster",r.poster)),Be(a,"title",r.title),ht(a,"width",r.width),ht(a,"height",r.height),n){const d=document.createElement("div"),l=document.createElement("span"),p=document.createElement("span");d.className="bridgerte__media-placeholder",d.setAttribute("aria-hidden","true"),l.className="bridgerte__media-placeholder-icon",l.textContent=r.mediaType==="image"?"IMG":"VIDEO",p.className="bridgerte__media-placeholder-text",p.textContent=Rn(r),d.append(l,p),o.append(d)}if(o.append(a),r.status==="uploading"||r.status==="error"){const d=document.createElement("figcaption");d.className="bridgerte__media-status",d.textContent=r.status==="error"?r.errorMessage??"上传失败":Kt,o.append(d)}return o}}const In=e=>{const t=e instanceof HTMLImageElement?e:null;return{node:t!=null&&t.src?de({mediaType:"image",url:t.src,alt:t.alt,title:t.title,width:t.width,height:t.height,status:"success"}):null}},$n=e=>{const t=e instanceof HTMLVideoElement?e:null;return{node:t!=null&&t.src?de({mediaType:"video",url:t.src,poster:t.poster,title:t.title,width:t.videoWidth||t.width,height:t.videoHeight||t.height,status:"success"}):null}},de=e=>h.$applyNodeReplacement(new ce(e)),An=e=>de({mediaType:"image",url:e.url,alt:e.alt,title:e.title,width:e.width,height:e.height,displayWidthPercent:e.displayWidthPercent,align:e.align,assetId:e.assetId,status:"success"}),Bn=e=>de({mediaType:"video",url:e.url,poster:e.poster,title:e.title,width:e.width,height:e.height,displayWidthPercent:e.displayWidthPercent,align:e.align,assetId:e.assetId,status:"success"}),Gt=e=>e instanceof ce,he=e=>{const t=n=>{if(Gt(n)&&n.getAsset().id===e)return n;if(!h.$isElementNode(n))return null;for(const r of n.getChildren()){const o=t(r);if(o)return o}return null};return t(h.$getRoot())},Yt={root:{type:"root",version:1,children:[]}};function Ve(e={}){return{html:e.html??"",json:e.json??Yt,plainText:e.plainText??"",assets:e.assets??[],version:e.version??Y.BRIDGERTE_CONTENT_VERSION}}const Dn=e=>e.toJSON(),On=e=>{var t;return((t=e.root.children)==null?void 0:t.length)===0},Hn=e=>e.read(()=>{const t=new Map,n=r=>{h.$isElementNode(r)&&r.getChildren().forEach(o=>{if(Gt(o)){const a=o.getAsset();t.set(a.id,a);return}h.$isElementNode(o)&&n(o)})};return n(h.$getRoot()),[...t.values()]}),Xt=(e,t)=>{const n=t.read(()=>Xe.$generateHtmlFromNodes(t)),r=e.read(()=>h.$getRoot().getTextContent()),o=Hn(e);return{html:n,json:Dn(e),plainText:r,assets:o,version:Y.BRIDGERTE_CONTENT_VERSION}},Fn=(e,t)=>{const n=Ve(t);return Jt(e,n),Xt(e.getEditorState(),e)},Jt=(e,t)=>{if(t.json!==Yt&&!On(t.json)){const o=t.json;e.setEditorState(e.parseEditorState(o));return}if(!t.html){e.update(()=>{const o=h.$getRoot();o.clear(),o.append(h.$createParagraphNode())},{discrete:!0});return}const r=new DOMParser().parseFromString(t.html,"text/html");e.update(()=>{const o=h.$getRoot(),a=Xe.$generateNodesFromDOM(e,r);o.clear(),o.append(...a)},{discrete:!0})};class pe extends h.DecoratorNode{static getType(){return"bridgerte-divider"}static clone(t){return new pe(t.__key)}constructor(t){super(t)}createDOM(t){const n=document.createElement("hr");return n.className="bridgerte__divider",n}updateDOM(){return!1}exportDOM(t){const n=document.createElement("hr");return n.className="bridgerte__divider",{element:n}}static importDOM(){return{hr:()=>({conversion:zn,priority:0})}}static importJSON(t){return Je().updateFromJSON(t)}exportJSON(){return{...super.exportJSON(),type:pe.getType()}}getTextContent(){return`
2
- `}isInline(){return!1}}const zn=e=>({node:Je()}),Je=()=>h.$applyNodeReplacement(new pe),pt="bridgerte-mention",Qe="mention",Qt=e=>e.label.startsWith("@")?e.label:`@${e.label}`,Wn=e=>{const t=document.createElement("span");return t.className="bridgerte__mention",t.dataset.type=Qe,t.dataset.id=e.id,t.dataset.value=e.value,t.contentEditable="false",t.textContent=Qt(e),e.description&&(t.dataset.description=e.description),t};class ye extends h.TextNode{constructor(n,r=Qt(n),o){super(r,o);Ae(this,"__item");this.__item=n}static getType(){return pt}static clone(n){return new ye(n.__item,n.__text,n.__key)}createDOM(n){const r=super.createDOM(n);return r.className="bridgerte__mention",r.dataset.type=Qe,r.dataset.id=this.__item.id,r.dataset.value=this.__item.value,r.contentEditable="false",this.__item.description&&(r.dataset.description=this.__item.description),r}updateDOM(n,r,o){return super.updateDOM(n,r,o)?!0:(r.dataset.id=this.__item.id,r.dataset.value=this.__item.value,this.__item.description?r.dataset.description=this.__item.description:delete r.dataset.description,!1)}exportDOM(n){return{element:Wn(this.__item)}}static importDOM(){return{span:()=>({conversion:Vn,priority:2})}}static importJSON(n){return Ze(n).updateFromJSON(n)}exportJSON(){return{...super.exportJSON(),...this.__item,type:pt}}isTextEntity(){return!0}isToken(){return!0}getMentionItem(){return this.__item}}const Vn=e=>{var a;const t=e instanceof HTMLElement?e:null;if(!t||t.dataset.type!==Qe)return{node:null};const n=((a=t.textContent)==null?void 0:a.replace(/^@/,""))||t.dataset.value||"",r=t.dataset.id||t.dataset.value||n,o=t.dataset.value||r;return!n||!r||!o?{node:null}:{node:Ze({id:r,label:n,value:o,description:t.dataset.description})}},Ze=e=>h.$applyNodeReplacement(new ye(e).setMode("token")),ft=e=>e instanceof ye,qn="请输入内容",Un=()=>{const t=h.$getRoot().getChildren();if(t.length===0)return!0;if(t.length>1)return!1;const n=t[0];return h.$isParagraphNode(n)&&n.getChildrenSize()===0},jn=({editor:e,contentElement:t})=>{const n=e.getEditorState().read(Un);t.dataset.empty=String(n)},Kn=({editor:e,contentElement:t,isReadonly:n})=>{const r=o=>{n()||t.dataset.empty!=="true"||o.button===0&&(o.preventDefault(),e.focus(()=>{e.update(()=>{h.$getRoot().selectStart()})}))};return t.addEventListener("pointerdown",r),()=>{t.removeEventListener("pointerdown",r)}},Gn=[{command:"format.bold",format:"bold"},{command:"format.italic",format:"italic"},{command:"format.underline",format:"underline"},{command:"format.strike",format:"strikethrough"},{command:"format.inlineCode",format:"code"},{command:"format.superscript",format:"superscript"},{command:"format.subscript",format:"subscript"}],Yn=[{command:"format.color",property:"color"},{command:"format.backgroundColor",property:"background-color"},{command:"format.fontSize",property:"font-size"},{command:"format.fontFamily",property:"font-family"},{command:"format.lineHeight",property:"line-height"}],Xn=[{command:"list.ordered",listType:"ordered"},{command:"list.unordered",listType:"unordered"},{command:"list.todo",listType:"todo"}],Jn=["media.pickImage","media.pickVideo"],Zt=()=>{const e=h.$getSelection();if(!h.$isRangeSelection(e))return null;const t=e.anchor.getNode();return t.getKey()==="root"?t:t.getTopLevelElementOrThrow()},Qn=()=>{const e=Zt();if(!e)return null;if(te.$isHeadingNode(e)){const t=Number(e.getTag().replace("h",""));return{command:"block.heading",value:Number.isNaN(t)?void 0:t}}if(te.$isQuoteNode(e))return{command:"block.quote"};if(O.$isCodeNode(e)){const t=e.getLatest();return{command:"block.code",value:O.$isCodeNode(t)?t.getLanguage()??"":""}}return{command:"block.paragraph"}},Zn=()=>{const e=Zt();if(!e||!("getFormatType"in e))return;const t=e.getFormatType();return t===""?void 0:t},er=()=>{const e=h.$getSelection();if(!h.$isRangeSelection(e))return null;const t=e.anchor.getNode(),n=V.$isListNode(t)?t:Re.$getNearestNodeOfType(t,V.ListNode);return n?n.getListType()==="check"?"todo":n.getTag()==="ol"?"ordered":"unordered":null},tr=e=>{const t=h.$getSelection();if(!h.$isRangeSelection(t))return;const n=G.$getSelectionStyleValueForProperty(t,e);return n===""?void 0:n},nr=()=>{const e=h.$getSelection();if(!h.$isRangeSelection(e))return!1;const t=e.anchor.getNode(),n=t.getParent();return F.$isLinkNode(t)||F.$isLinkNode(n)},rr=e=>{const t=h.$getSelection(),n=h.$isRangeSelection(t),r=Qn(),o=er(),a=Zn(),s=nr(),c=e.readonly||!n,d=Gn.map(C=>({command:C.command,active:n&&t.hasFormat(C.format),disabled:c})),l=Yn.map(C=>{const S=tr(C.property);return{command:C.command,active:S!==void 0,disabled:c,value:S}}),p=Xn.map(C=>({command:C.command,active:o===C.listType,disabled:c})),w=Jn.map(C=>({command:C,active:!1,disabled:e.readonly||!e.canUploadMedia}));return[...d,{command:"format.clear",active:!1,disabled:c},...l,{command:"block.heading",active:(r==null?void 0:r.command)==="block.heading",disabled:c,value:(r==null?void 0:r.command)==="block.heading"?r.value:void 0},{command:"block.paragraph",active:(r==null?void 0:r.command)==="block.paragraph",disabled:c},{command:"block.quote",active:(r==null?void 0:r.command)==="block.quote",disabled:c},{command:"block.divider",active:!1,disabled:e.readonly},{command:"block.code",active:(r==null?void 0:r.command)==="block.code",disabled:e.readonly,value:(r==null?void 0:r.command)==="block.code"?r.value:void 0},...p,{command:"align",active:a!==void 0,disabled:c,value:a},{command:"link.set",active:s,disabled:c},{command:"link.unset",active:!1,disabled:c||!s},{command:"link.open",active:!1,disabled:e.readonly||!s},{command:"indent.increase",active:!1,disabled:c},{command:"indent.decrease",active:!1,disabled:c},{command:"history.undo",active:!1,disabled:e.readonly||!e.canUndo},{command:"history.redo",active:!1,disabled:e.readonly||!e.canRedo},{command:"content.clear",active:!1,disabled:e.readonly},...w,{command:"table.insert",active:!1,disabled:e.readonly},{command:"fullscreen.toggle",active:!1,disabled:!1}]},or=(e,t)=>e.length===t.length&&e.every((n,r)=>{const o=t[r];return o!==void 0&&n.command===o.command&&n.active===o.active&&n.disabled===o.disabled&&n.value===o.value}),j=(e,t,n,r)=>{var o;try{(o=e.onError)==null||o.call(e,{code:t,message:n,cause:r})}catch(a){console.error("[BridgeRTE] onError callback failed.",a)}},ar=(e,t)=>{var n;try{(n=e.onChange)==null||n.call(e,t)}catch(r){j(e,"callback.onChange","onChange callback failed.",r)}},sr=(e,t)=>{var n;try{(n=e.onContentChange)==null||n.call(e,t)}catch(r){j(e,"callback.onContentChange","onContentChange callback failed.",r)}},ir=(e,t)=>{var n;try{(n=e.onCommandStateChange)==null||n.call(e,[...t])}catch(r){j(e,"callback.onCommandStateChange","onCommandStateChange callback failed.",r)}},lr=e=>{var t;try{(t=e.onFocus)==null||t.call(e)}catch(n){j(e,"callback.onFocus","onFocus callback failed.",n)}},cr=e=>{var t;try{(t=e.onBlur)==null||t.call(e)}catch(n){j(e,"callback.onBlur","onBlur callback failed.",n)}},dr=(e,t)=>{var n;try{(n=e.onReady)==null||n.call(e,t)}catch(r){j(e,"callback.onReady","onReady callback failed.",r)}},ur=({lexicalEditor:e,options:t,isDestroyed:n,canUploadMedia:r,isReadonly:o})=>{let a=!1,s=!1,c=[];const d=new Set,l=()=>{const w=[...c];d.forEach(C=>{try{C(w)}catch(S){j(t,"callback.commandStateSubscriber","Command state subscriber failed.",S)}})},p=(w=!0)=>{if(n())return;const C=c;e.getEditorState().read(()=>{c=rr({canUndo:a,canRedo:s,readonly:o(),canUploadMedia:r()})}),w&&!or(C,c)&&(ir(t,c),l())};return{refreshCommandStates:p,getCommandStates(){return p(!1),[...c]},subscribeCommandStateChange(w){return n()?()=>{}:(d.add(w),w([...c]),()=>{d.delete(w)})},setCanUndo(w){a=w,p()},setCanRedo(w){s=w,p()},setHistoryAvailability(w,C){a=w,s=C,p()},destroy(){d.clear()}}},gr=e=>`upload:${e}:${Date.now()}:${Math.random().toString(36).slice(2)}`,mr=e=>typeof URL.createObjectURL=="function"?URL.createObjectURL(e):e.name,ve=e=>{typeof URL.revokeObjectURL=="function"&&e.startsWith("blob:")&&URL.revokeObjectURL(e)},bt=e=>({name:e.name,mimeType:e.type||void 0,size:e.size,data:e}),hr=e=>typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError",pr=e=>new Promise(t=>{const n=new Image,r=()=>{n.onload=null,n.onerror=null};n.onload=()=>{const o={width:n.naturalWidth||void 0,height:n.naturalHeight||void 0};r(),t(o)},n.onerror=()=>{r(),t({})},n.src=e}),fr=e=>new Promise(t=>{const n=document.createElement("video"),r=()=>{n.removeAttribute("src"),n.load(),n.onloadedmetadata=null,n.onerror=null};n.preload="metadata",n.onloadedmetadata=()=>{const o={width:n.videoWidth||void 0,height:n.videoHeight||void 0,duration:Number.isFinite(n.duration)?n.duration:void 0};r(),t(o)},n.onerror=()=>{r(),t({})},n.src=e,n.load()}),br=(e,t)=>t.startsWith("blob:")?e==="image"?pr(t):fr(t):Promise.resolve({}),yr=(e,t)=>({...e,width:e.width??t.width,height:e.height??t.height,duration:e.duration??t.duration}),vr=({container:e,lexicalEditor:t,options:n,isDestroyed:r})=>{const o=new Map;let a=0;const s=(g,f)=>{t.update(()=>{var E;(E=he(g))==null||E.updatePayload(f)})},c=g=>{let f=null;return t.update(()=>{const E=he(g);if(!E)return;const k=E.getAsset();f={mediaType:k.type,url:k.url,assetId:k.id,status:k.status,progress:k.progress,poster:k.poster,width:k.width,height:k.height,duration:k.duration,mimeType:k.mimeType,size:k.size,displayWidthPercent:k.displayWidthPercent,align:k.align,errorMessage:k.errorMessage},E.remove()}),f},d=(g,f)=>{const E=o.get(g);return(E==null?void 0:E.runId)===f},l=g=>{var f;(f=g.abortController)==null||f.abort()},p=(g,f)=>{const E=o.get(g);return E?(l(E),ve(E.previewUrl),o.delete(g),!0):!1},w=(g,f,E,k)=>{t.update(()=>{const P=de({mediaType:g,url:k,assetId:E,status:"uploading",progress:0,title:f.name,mimeType:f.type||void 0,size:f.size}),I=h.$createParagraphNode();h.$getSelection()||h.$getRoot().selectEnd(),h.$insertNodes([P,I]),I.selectStart()},{discrete:!0})},C=(g,f,E,k)=>{s(f,{mediaType:g,url:k.url,poster:k.poster,width:k.width,height:k.height,duration:k.duration,mimeType:k.mimeType,size:k.size,status:"success",progress:100,errorMessage:void 0}),ve(E)},S=(g,f,E)=>{var k;hr(E)||(s(f,{mediaType:g,status:"error",errorMessage:"上传失败"}),(k=n.onUploadError)==null||k.call(n,{assetId:f,type:g,cause:E}))},b=g=>{const f=n.uploadAdapter;if(!f)return;const E=typeof AbortController=="function"?new AbortController:null,k=a+1;a=k,g.runId=k,g.abortController=E,o.set(g.assetId,g);const P={assetId:g.assetId,signal:E==null?void 0:E.signal,onProgress:i=>{!d(g.assetId,k)||r()||s(g.assetId,{mediaType:g.type,status:"uploading",progress:i})}};let I={};const N=br(g.type,g.previewUrl);let _;try{_=g.type==="image"?f.uploadImage(bt(g.file),P):f.uploadVideo(bt(g.file),P)}catch(i){d(g.assetId,k)&&S(g.type,g.assetId,i);return}N.then(i=>{I=i,!(r()||!d(g.assetId,k))&&(i.width===void 0&&i.height===void 0||s(g.assetId,{mediaType:g.type,width:i.width,height:i.height,duration:i.duration}))}),_.then(i=>{r()||!d(g.assetId,k)||(C(g.type,g.assetId,g.previewUrl,yr(i,I)),o.delete(g.assetId))}).catch(i=>{r()||!d(g.assetId,k)||S(g.type,g.assetId,i)})},v=(g,f)=>{if(!n.uploadAdapter)return;const E=gr(g),k=mr(f),P={assetId:E,type:g,file:f,previewUrl:k,runId:0,abortController:null};w(g,f,E,k),b(P)};return{pickMediaFile:g=>{if(!n.uploadAdapter)return;const f=e.ownerDocument.createElement("input");f.type="file",f.accept=g==="image"?"image/*":"video/*",f.style.display="none",f.addEventListener("change",()=>{var k;const E=(k=f.files)==null?void 0:k[0];f.remove(),E&&v(g,E)},{once:!0}),e.append(f),f.click()},uploadMediaFile:v,removeMedia(g){const f=c(g);!p(g)&&(f!=null&&f.url.startsWith("blob:"))&&ve(f.url)},retryMedia(g){const f=o.get(g);!f||!n.uploadAdapter||(l(f),s(g,{mediaType:f.type,url:f.previewUrl,status:"uploading",progress:0,errorMessage:void 0}),b(f))},destroy(){o.forEach(g=>{l(g),ve(g.previewUrl)}),o.clear()}}},en=e=>O.$createCodeNode(e),wr={1:"h1",2:"h2",3:"h3",4:"h4",5:"h5",6:"h6"},Cr={code:"bridgerte__code-block",codeHighlight:{attr:"bridgerte__code-token bridgerte__code-token--attr","attr-name":"bridgerte__code-token bridgerte__code-token--attr-name","attr-value":"bridgerte__code-token bridgerte__code-token--attr-value",boolean:"bridgerte__code-token bridgerte__code-token--boolean",builtin:"bridgerte__code-token bridgerte__code-token--builtin","class-name":"bridgerte__code-token bridgerte__code-token--class-name",comment:"bridgerte__code-token bridgerte__code-token--comment",constant:"bridgerte__code-token bridgerte__code-token--constant",deleted:"bridgerte__code-token bridgerte__code-token--deleted",function:"bridgerte__code-token bridgerte__code-token--function",inserted:"bridgerte__code-token bridgerte__code-token--inserted",keyword:"bridgerte__code-token bridgerte__code-token--keyword",namespace:"bridgerte__code-token bridgerte__code-token--namespace",number:"bridgerte__code-token bridgerte__code-token--number",operator:"bridgerte__code-token bridgerte__code-token--operator",prefix:"bridgerte__code-token bridgerte__code-token--prefix",property:"bridgerte__code-token bridgerte__code-token--property",punctuation:"bridgerte__code-token bridgerte__code-token--punctuation",regex:"bridgerte__code-token bridgerte__code-token--regex",selector:"bridgerte__code-token bridgerte__code-token--selector",string:"bridgerte__code-token bridgerte__code-token--string",tag:"bridgerte__code-token bridgerte__code-token--tag",unchanged:"bridgerte__code-token bridgerte__code-token--unchanged",url:"bridgerte__code-token bridgerte__code-token--url",variable:"bridgerte__code-token bridgerte__code-token--variable"},heading:{h1:"bridgerte__heading bridgerte__heading--h1",h2:"bridgerte__heading bridgerte__heading--h2",h3:"bridgerte__heading bridgerte__heading--h3",h4:"bridgerte__heading bridgerte__heading--h4",h5:"bridgerte__heading bridgerte__heading--h5",h6:"bridgerte__heading bridgerte__heading--h6"},list:{checklist:"bridgerte__list bridgerte__list--todo",ol:"bridgerte__list",ul:"bridgerte__list",listitem:"bridgerte__list-item",listitemChecked:"bridgerte__list-item bridgerte__list-item--checked",listitemUnchecked:"bridgerte__list-item bridgerte__list-item--unchecked"},paragraph:"bridgerte__paragraph",quote:"bridgerte__quote",root:"bridgerte__content-root",text:{bold:"bridgerte__text--bold",code:"bridgerte__code",italic:"bridgerte__text--italic",strikethrough:"bridgerte__text--strike",underline:"bridgerte__text--underline",underlineStrikethrough:"bridgerte__text--underline-strike"},table:"bridgerte__table",tableCell:"bridgerte__table-cell",tableCellHeader:"bridgerte__table-cell bridgerte__table-cell--header",tableRow:"bridgerte__table-row",tableScrollableWrapper:"bridgerte__table-wrapper"},_r=e=>({setBlockHeading:l=>{e.update(()=>{const p=h.$getSelection();h.$isRangeSelection(p)&&G.$setBlocksType(p,()=>te.$createHeadingNode(wr[l]))})},setParagraphBlock:()=>{e.update(()=>{const l=h.$getSelection();h.$isRangeSelection(l)&&G.$setBlocksType(l,()=>h.$createParagraphNode())})},setQuoteBlock:()=>{e.update(()=>{const l=h.$getSelection();h.$isRangeSelection(l)&&G.$setBlocksType(l,()=>te.$createQuoteNode())})},insertDividerBlock:()=>{e.update(()=>{const l=h.$createParagraphNode();h.$insertNodes([Je(),l]),l.selectStart()})},insertCodeBlock:l=>{e.update(()=>{const p=en(l),w=h.$createParagraphNode();h.$insertNodes([p,w]),p.selectEnd()})},setSelectedCodeBlockLanguage:l=>{e.update(()=>{const p=h.$getSelection();if(!h.$isRangeSelection(p))return;const w=p.anchor.getNode(),C=w.getKey()==="root"?w:w.getTopLevelElementOrThrow();O.$isCodeNode(C)&&C.setLanguage(l)})},clearContent:()=>{e.update(()=>{const l=h.$getRoot();l.clear(),l.append(h.$createParagraphNode())})},formatAlign:l=>{e.dispatchCommand(h.FORMAT_ELEMENT_COMMAND,l)}}),kr=e=>({setLink:(o,a)=>{e.update(()=>{const s=h.$getSelection(),c=F.formatUrl(o),d=(a==null?void 0:a.trim())||o.trim();if(!(!h.$isRangeSelection(s)||!o.trim())){if(s.isCollapsed()){const l=F.$createLinkNode(c,{rel:"noreferrer noopener",target:"_blank"});l.append(h.$createTextNode(d)),h.$insertNodes([l]);return}F.$toggleLink(c,{rel:"noreferrer noopener",target:"_blank"})}})},unsetLink:()=>{e.update(()=>{F.$toggleLink(null)})},openSelectedLink:()=>{if(typeof window>"u")return;const o=e.getEditorState().read(()=>{const a=h.$getSelection();if(!h.$isRangeSelection(a))return null;const s=a.anchor.getNode(),c=F.$isLinkNode(s)?s:Re.$findMatchingParent(s,F.$isLinkNode);return c?{target:c.getTarget()??"_blank",url:c.sanitizeUrl(c.getURL())}:null});o&&window.open(o.url,o.target,"noopener,noreferrer")}}),Er=e=>({insertImage:s=>{s.url.trim()&&e.update(()=>{const c=h.$createParagraphNode();h.$insertNodes([An(s),c]),c.selectStart()})},insertVideo:s=>{s.url.trim()&&e.update(()=>{const c=h.$createParagraphNode();h.$insertNodes([Bn(s),c]),c.selectStart()})},resizeMedia:s=>{e.update(()=>{var c;(c=he(s.assetId))==null||c.updatePayload({displayWidthPercent:s.widthPercent})})},resetMediaSize:s=>{e.update(()=>{var c;(c=he(s))==null||c.updatePayload({displayWidthPercent:void 0})})},alignMedia:s=>{e.update(()=>{var c;(c=he(s.assetId))==null||c.updatePayload({align:s.value==="left"?void 0:s.value})})}}),xr=e=>({insertMention:n=>{e.update(()=>{const r=h.$getSelection();h.$isRangeSelection(r)&&h.$insertNodes([Ze(n),h.$createTextNode(" ")])})}}),Mr=e=>({clearSelectionFormat:()=>{e.update(()=>{const r=h.$getSelection();h.$isRangeSelection(r)&&(r.setFormat(0),G.$patchStyleText(r,{color:null,"background-color":null,"font-size":null,"font-family":null,"line-height":null}))})},setSelectionStyle:(r,o)=>{e.update(()=>{const a=h.$getSelection();h.$isRangeSelection(a)&&G.$patchStyleText(a,{[r]:o===""?null:o})})}}),Tr=20,yt=(e,t)=>Number.isFinite(e)&&e>0?Math.min(Math.floor(e),t):1,we=e=>Number.isFinite(e)&&(e??0)>0?Math.min(Math.floor(e??1),Tr):1,Ce=()=>{const e=h.$getSelection();return!h.$isRangeSelection(e)&&!D.$isTableSelection(e)?!1:D.$findCellNode(e.anchor.getNode())!==null},Sr=e=>({insertTable:(c,d)=>{const l=yt(c,Y.BRIDGERTE_TABLE_INSERT_MAX_ROWS),p=yt(d,Y.BRIDGERTE_TABLE_INSERT_MAX_COLS);e.dispatchCommand(D.INSERT_TABLE_COMMAND,{rows:String(l),columns:String(p),includeHeaders:{rows:!0,columns:!1}})},insertTableRow:c=>{e.update(()=>{if(!Ce())return;const d=we(c.count);for(let l=0;l<d;l+=1)D.$insertTableRowAtSelection(c.direction!=="before")})},insertTableColumn:c=>{e.update(()=>{if(!Ce())return;const d=we(c.count);for(let l=0;l<d;l+=1)D.$insertTableColumnAtSelection(c.direction!=="before")})},deleteTableRow:c=>{e.update(()=>{const d=we(c.count);for(let l=0;l<d;l+=1){if(!Ce())return;D.$deleteTableRowAtSelection()}})},deleteTableColumn:c=>{e.update(()=>{const d=we(c.count);for(let l=0;l<d;l+=1){if(!Ce())return;D.$deleteTableColumnAtSelection()}})},deleteTable:()=>{e.update(()=>{const c=h.$getSelection();if(!h.$isRangeSelection(c)&&!D.$isTableSelection(c))return;const d=D.$findTableNode(c.anchor.getNode());if(!d)return;const l=h.$createParagraphNode();d.insertAfter(l),d.remove(),l.selectStart()})}}),Nr=e=>{const t=Sr(e);return{insertTable:n=>{t.insertTable(n.rows,n.cols)},insertTableRow:n=>{t.insertTableRow(n)},insertTableColumn:n=>{t.insertTableColumn(n)},deleteTableRow:n=>{t.deleteTableRow(n)},deleteTableColumn:n=>{t.deleteTableColumn(n)},deleteTable:()=>{t.deleteTable()}}},Lr={"format.bold":"bold","format.italic":"italic","format.underline":"underline","format.strike":"strikethrough","format.inlineCode":"code","format.superscript":"superscript","format.subscript":"subscript"},Rr={"list.ordered":V.INSERT_ORDERED_LIST_COMMAND,"list.unordered":V.INSERT_UNORDERED_LIST_COMMAND,"list.todo":V.INSERT_CHECK_LIST_COMMAND},Pr={"indent.increase":h.INDENT_CONTENT_COMMAND,"indent.decrease":h.OUTDENT_CONTENT_COMMAND,"history.undo":h.UNDO_COMMAND,"history.redo":h.REDO_COMMAND},Ir={"format.color":"color","format.backgroundColor":"background-color","format.fontSize":"font-size","format.fontFamily":"font-family","format.lineHeight":"line-height"},$r=({container:e,lexicalEditor:t,options:n,isDestroyed:r,isReadonly:o,reportError:a})=>{const s=vr({container:e,lexicalEditor:t,options:n,isDestroyed:r}),c=_r(t),d=kr(t),l=Er(t),p=xr(t),w=Mr(t),C=Nr(t),S=()=>{var M,g;if(document.fullscreenElement){(M=document.exitFullscreen)==null||M.call(document).catch(f=>{a(n,"fullscreen.exit","Exit fullscreen failed.",f)});return}(g=e.requestFullscreen)==null||g.call(e).catch(f=>{a(n,"fullscreen.enter","Enter fullscreen failed.",f)})},b=(v=>{if(r()||o())return;const M=Lr[v.type];if(M){t.dispatchCommand(h.FORMAT_TEXT_COMMAND,M);return}const g=Rr[v.type];if(g){t.dispatchCommand(g,void 0);return}const f=Pr[v.type];if(f){t.dispatchCommand(f,void 0);return}const E=Ir[v.type];if(E&&"value"in v){w.setSelectionStyle(E,v.value);return}switch(v.type){case"format.clear":w.clearSelectionFormat();return;case"block.heading":c.setBlockHeading(v.level);return;case"block.paragraph":c.setParagraphBlock();return;case"block.quote":c.setQuoteBlock();return;case"block.divider":c.insertDividerBlock();return;case"block.code":c.insertCodeBlock(v.language);return;case"block.setCodeLanguage":c.setSelectedCodeBlockLanguage(v.language);return;case"align":c.formatAlign(v.value);return;case"link.set":d.setLink(v.href,v.text);return;case"link.unset":d.unsetLink();return;case"link.open":d.openSelectedLink();return;case"mention.insert":p.insertMention(v.item);return;case"content.clear":c.clearContent();return;case"table.insert":C.insertTable(v);return;case"table.insertRow":C.insertTableRow(v);return;case"table.insertColumn":C.insertTableColumn(v);return;case"table.deleteRow":C.deleteTableRow(v);return;case"table.deleteColumn":C.deleteTableColumn(v);return;case"table.delete":C.deleteTable();return;case"media.insertImage":l.insertImage(v);return;case"media.insertVideo":l.insertVideo(v);return;case"media.pickImage":s.pickMediaFile("image");return;case"media.pickVideo":s.pickMediaFile("video");return;case"media.retry":s.retryMedia(v.assetId);return;case"media.remove":s.removeMedia(v.assetId);return;case"media.resize":l.resizeMedia(v);return;case"media.align":l.alignMedia(v);return;case"media.resetSize":l.resetMediaSize(v.assetId);return;case"fullscreen.toggle":S();return}});return b.uploadMediaFile=s.uploadMediaFile,b.destroy=()=>{s.destroy()},b},Ar=300,Br="BridgeRTE",vt=({editor:e,overflowLength:t})=>{if(t<=0)return!1;const n=h.$getSelection();if(h.$isRangeSelection(n))return G.$trimTextContentFromAnchor(e,n.anchor,t),!0;h.$getRoot().selectEnd();const r=h.$getSelection();return h.$isRangeSelection(r)?(G.$trimTextContentFromAnchor(e,r.anchor,t),!0):!1},Dr=({lexicalEditor:e,options:t,isDestroyed:n,setContent:r,syncPlaceholder:o})=>{let a=0,s=null;const c=()=>{s&&(clearTimeout(s),s=null)},d=g=>{if(n())return;const f=Xt(e.getEditorState(),e);r(f),g&&ar(t,f)},l=g=>{const f=t.maxLength!==void 0&&t.maxLength>=0?t.maxLength:void 0;return{dirty:!0,plainTextLength:g,version:Y.BRIDGERTE_CONTENT_VERSION,maxLength:f,isOverMaxLength:f===void 0?!1:g>f}},p=g=>{sr(t,l(g))},w=()=>{t.onChange&&(c(),s=setTimeout(()=>{d(!0)},Le.BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS))},C=g=>{if(a>0){a-=1;return}p(g),w()},S=()=>e.getEditorState().read(()=>h.$getRoot().getTextContent().length),b=g=>t.maxLength===void 0||t.maxLength<0?0:g-t.maxLength,v=g=>g<=0?!1:(e.update(()=>{vt({editor:e,overflowLength:g})},{discrete:!0}),!0);return{clearContentChangeTimer:c,enforceCurrentMaxLength:()=>{t.maxLength===void 0||t.maxLength<0||e.update(()=>{const g=h.$getRoot().getTextContent().length-(t.maxLength??0);vt({editor:e,overflowLength:g})},{discrete:!0})},syncContent:d,suppressNextChange(){a+=1},syncAfterEditorUpdate(){const g=S();if(v(b(g))){o();return}o(),C(g)}}},Pe="data-language",tn="纯文本",Or="language",Hr=new Set(["plain","plaintext","text","txt"]),Fr=new Set(U.getCodeLanguageOptions().map(([e])=>e)),zr=[Pe,"data-lang","data-code-language","data-highlight-language","lang","language"],Wr=/^[a-z][a-z0-9_+#.-]{0,31}$/i,Vr=/^(?:language|lang)-([a-z][a-z0-9_+#.-]{0,31})$/i,qr=/^brush:\s*([a-z][a-z0-9_+#.-]{0,31})$/i,Ur=new Map([["dockerfile","docker"],["shell","shellscript"],["sh","shellscript"],["bash","shellscript"],["js","javascript"],["jsx","jsx"],["py","python"],["rb","ruby"],["rs","rust"],["ts","typescript"],["tsx","tsx"],["yml","yaml"]]),jr=e=>e.type==="select",wt=e=>e.find(t=>t.name===Or&&jr(t)),ne=e=>{const t=e==null?void 0:e.trim().toLowerCase();if(!t||!Wr.test(t))return null;if(Hr.has(t))return"";const n=Ur.get(t)??U.normalizeCodeLanguage(t);return Fr.has(n)?n:null},Kr=e=>{for(const t of zr){const n=ne(e.getAttribute(t));if(n)return n}return null},Gr=e=>{const[,t]=e.match(qr)??[],n=ne(t);if(n)return n;for(const r of e.split(/\s+/)){const[,o]=r.match(Vr)??[],a=ne(o);if(a)return a}return null},nn=(e=z.codeBlockLanguagePanel)=>{var t,n;return((t=wt(e.fields))==null?void 0:t.options)??((n=wt(z.codeBlockLanguagePanel.fields))==null?void 0:n.options)??[{label:tn,value:""}]},rn=(e,t)=>{var n,r,o;return((n=e.find(a=>a.value===t))==null?void 0:n.label)??((r=e.find(a=>ne(a.value)===ne(t)))==null?void 0:r.label)??((o=e[0])==null?void 0:o.label)??tn};nn();const Yr=e=>{[...e.querySelectorAll("pre,code")].forEach(t=>{const n=Kr(t)??Gr(t.className),r=t.tagName==="PRE"?t:t.closest("pre");r&&n&&r.setAttribute(Pe,n)})},Xr=e=>{e.querySelectorAll("pre").forEach(t=>{[...t.children].forEach(r=>{r.tagName==="CODE"&&r.replaceWith(...r.childNodes)})})},Jr=(e,t)=>{const n=[...t.querySelectorAll("pre[data-language]")];let r=0;e.forEach(o=>{if(!O.$isCodeNode(o))return;const a=n[r];if(r+=1,!a)return;const s=a.getAttribute(Pe);s&&!o.getLanguage()&&o.setLanguage(s)})},on="one-light",J={keyword:"#a626a4",function:"#4078f2",operator:"#0184bc",tag:"#c18401",property:"#e45649",string:"#50a14f",attrName:"#986801"},Qr={[J.keyword]:"keyword",[J.function]:"function",[J.operator]:"operator",[J.tag]:"tag",[J.property]:"property",[J.string]:"string",[J.attrName]:"attr-name"},Zr=e=>{const[,t]=e.match(/(?:^|;)color:\s*(#[0-9a-f]{3,8})/i)??[];return t?Qr[t.toLowerCase()]:void 0},eo={...U.ShikiTokenizer,defaultLanguage:null,defaultTheme:on,$tokenize(e,t){const n=U.ShikiTokenizer.$tokenize.call(this,e,t);return e.getStyle()&&e.setStyle(""),n.map(r=>O.$isCodeHighlightNode(r)?O.$createCodeHighlightNode(r.getTextContent(),Zr(r.getStyle())):r)}},to=1200,fe=new Set,Te=new Set,qe=new Set,Se=[];let Q=0,se=null,_e=!1,ke=null,Ct=!1;const no=e=>"requestIdleCallback"in window?{id:window.requestIdleCallback(e,{timeout:to}),kind:"idle"}:{id:globalThis.setTimeout(()=>{e({didTimeout:!0,timeRemaining:()=>0})},0),kind:"timeout"},ro=e=>{if(e.kind==="idle"){window.cancelIdleCallback(e.id);return}globalThis.clearTimeout(e.id)},oo=e=>e.map(t=>t.value).filter(t=>t!==""),ao=e=>{oo(e).forEach(t=>{if(fe.has(t)||Te.has(t)||qe.has(t)||U.isCodeLanguageLoaded(t)){fe.add(t);return}qe.add(t),Se.push(t)})},so=()=>{for(;Se.length>0;){const e=Se.shift();if(e&&(qe.delete(e),!(fe.has(e)||Te.has(e)))){if(U.isCodeLanguageLoaded(e)){fe.add(e);continue}return e}}},io=async()=>{if(!Ct){if(!ke){const e=U.loadCodeTheme(on);ke=Promise.resolve(e??void 0).then(()=>{Ct=!0}).catch(()=>{}).finally(()=>{ke=null})}await ke}},lo=e=>{Q+=1,ao(e);const t=async()=>{if(!(Q<=0||_e)){_e=!0;try{if(await io(),Q<=0)return;const r=so();if(!r)return;Te.add(r),await Promise.resolve(U.loadCodeLanguage(r)??void 0).then(()=>{fe.add(r)}).catch(()=>{}).finally(()=>{Te.delete(r)})}finally{_e=!1,n()}}},n=()=>{Q<=0||se!==null||_e||Se.length===0||(se=no(()=>{se=null,t()}))};return n(),()=>{Q=Math.max(0,Q-1),Q===0&&se!==null&&(ro(se),se=null)}},ie=12,_t=6,kt=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),co=()=>{const e=window.visualViewport;return{left:(e==null?void 0:e.offsetLeft)??0,top:(e==null?void 0:e.offsetTop)??0,width:(e==null?void 0:e.width)??window.innerWidth,height:(e==null?void 0:e.height)??window.innerHeight}},uo=e=>{const t=e.style.visibility,n=e.style.pointerEvents,r=e.style.display;e.style.visibility="hidden",e.style.pointerEvents="none",e.style.display="grid";const o=e.getBoundingClientRect();return e.style.visibility=t,e.style.pointerEvents=n,e.style.display=r,o},go=(e,t,n)=>{const r=uo(e),o=co(),a=t.getBoundingClientRect(),s=a.left+ie,c=a.top+ie,d=n?n.x:s,l=n?n.y+n.height+_t:c,p=n?n.y-r.height-_t:l,w=o.left+ie,C=o.top+ie,S=o.left+o.width-r.width-ie,b=o.top+o.height-r.height-ie,v=l>b?p:l;return{left:kt(d,w,S),top:kt(v,C,b),viewportHeight:o.height}},an=e=>{var d,l;const t=document.createElement("div"),n=document.createElement("div"),r=document.createElement("div");let o;const a=()=>{t.dataset.visible="false",n.dataset.visible="false",o=void 0},s=()=>{const p=go(n,e.root,o);n.style.left=`${p.left}px`,n.style.top=`${p.top}px`,n.style.setProperty("--bridgerte-dialog-visible-height",`${p.viewportHeight}px`)},c=p=>{o=p,p?n.style.setProperty("--bridgerte-dialog-anchor-width",`${p.width}px`):n.style.removeProperty("--bridgerte-dialog-anchor-width"),s(),t.dataset.visible="true",n.dataset.visible="true"};return t.className="bridgerte__dialog-backdrop",t.dataset.visible="false",n.className=`bridgerte__dialog ${e.className}`,n.dataset.visible="false",r.className="bridgerte__dialog-content",n.append(r),e.root.append(t,n),t.addEventListener("click",()=>{var p;(p=e.onBackdropClick)==null||p.call(e),a()}),(d=window.visualViewport)==null||d.addEventListener("resize",s),(l=window.visualViewport)==null||l.addEventListener("scroll",s),window.addEventListener("resize",s),{element:n,content:r,open:c,close:a,destroy(){var p,w;a(),(p=window.visualViewport)==null||p.removeEventListener("resize",s),(w=window.visualViewport)==null||w.removeEventListener("scroll",s),window.removeEventListener("resize",s),t.remove(),n.remove()}}},Ne=e=>typeof requestAnimationFrame=="function"?requestAnimationFrame(e):window.setTimeout(e,0),et=e=>{if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(e);return}window.clearTimeout(e)},W=(e,t={})=>{let n=null;const r=s=>{const c=n??e;if(!(!s&&!n)){if(s){c.dataset.pressed="true";return}delete c.dataset.pressed,n=null}},o=s=>{if(s.pointerType==="mouse")return;const c=s.target;n=c instanceof HTMLElement&&t.targetSelector?c.closest(t.targetSelector):e,n&&r(!0)},a=()=>{r(!1)};return e.addEventListener("pointerdown",o),e.addEventListener("pointerup",a),e.addEventListener("pointercancel",a),e.addEventListener("lostpointercapture",a),()=>{a(),e.removeEventListener("pointerdown",o),e.removeEventListener("pointerup",a),e.removeEventListener("pointercancel",a),e.removeEventListener("lostpointercapture",a)}},mo=(e,t,n)=>{e.update(t,{tag:h.SKIP_SCROLL_INTO_VIEW_TAG,onUpdate:n})},Et="language",ho="bridgerte-code-block-language",xt=8;let Mt=0;const po=()=>(Mt+=1,`${ho}-${Mt}`),fo=(e,t,n)=>{const r=e.querySelector(".bridgerte__code-block-control-label");e.dataset.language=n??"",r&&(r.textContent=rn(t,n))},bo=(e,t)=>{const n=document.createElement("button"),r=document.createElement("span"),o=document.createElement("span");return n.type="button",n.className="bridgerte__code-block-control",n.contentEditable="false",n.dataset.language=t??"",n.setAttribute("aria-label","选择代码块语言"),r.className="bridgerte__code-block-control-label",r.textContent=rn(e,t),o.className="bridgerte__code-block-control-arrow",n.append(r,o),n},yo=e=>{const t=document.createElement("div"),n=e.root.querySelector(".bridgerte__content")??e.root,r=jt.resolvePayloadPanelSchema(e.languagePanel??z.codeBlockLanguagePanel,e.payloadPanelConfig),o=nn(r);let a=null,s=null,c=null;const d=new Map,l=new Map,p=()=>{c??(c=lo(o))},w=()=>{a==null||a.close()},C=(i,u)=>{e.isReadonly()||mo(e.editor,()=>{const m=h.$getNodeByKey(i);O.$isCodeNode(m)&&m.setLanguage(u)})},S=(i,u)=>{Ne(()=>{C(i,u)})},b=(i,u,m)=>{var y;return((y=e.onRequest)==null?void 0:y.call(e,{id:po(),readonly:e.isReadonly(),menuId:"code-block-language",command:{type:"block.setCodeLanguage",language:m},panel:r,anchorRect:{x:u.left,y:u.top,width:u.width,height:u.height},currentValues:{[Et]:m},submit:T=>{w(),S(i,T[Et]??"")},cancel:w}))===!0},v=(i,u)=>{const m=e.root.getBoundingClientRect(),y=u.getBoundingClientRect(),T=y.bottom<m.top||y.top>m.bottom;i.hidden=T,i.style.transform=`translate(${y.left-m.left+xt}px, ${y.top-m.top+xt}px)`},M=i=>{var $;const u=e.editor.getElementByKey(i);if(!u){($=d.get(i))==null||$.remove(),d.delete(i);return}p(),u.dataset.lexicalKey=i;const m=u.getAttribute("data-language"),y=d.get(i);if(y){fo(y,o,m),v(y,u);return}const T=bo(o,m),R=W(T);T.dataset.lexicalKey=i,d.set(i,T),l.set(T,R),t.append(T),v(T,u)},g=()=>{s=null,d.forEach((i,u)=>{M(u)})},f=()=>{s===null&&(s=Ne(g))},E=(i,u)=>{const m=i.getBoundingClientRect(),y=i.dataset.language??"";if(b(u,m,y))return;if(e.isReadonly()){w();return}a||(a=an({root:e.root,className:"bridgerte__code-block-menu",onBackdropClick:w}));const T=document.createElement("div");a.content.replaceChildren(),a.element.style.minWidth="180px",T.className="bridgerte__code-block-menu-list",o.forEach(R=>{const $=document.createElement("button");$.type="button",$.className="bridgerte__menu-item bridgerte__code-block-menu-item",$.textContent=R.label,W($),$.addEventListener("pointerdown",B=>{B.preventDefault()}),$.addEventListener("click",()=>{w(),S(u,R.value)}),T.append($)}),a.content.append(T),a.open({x:m.left,y:m.top,width:180,height:m.height})};t.className="bridgerte__code-block-controls-layer",e.root.append(t);const k=e.editor.registerMutationListener(O.CodeNode,i=>{i.forEach((u,m)=>{if(u==="destroyed"){const y=d.get(m);if(y){const T=l.get(y);T==null||T(),l.delete(y),y.remove()}d.delete(m);return}M(m)})}),P=e.editor.registerUpdateListener(f),I=i=>{const u=i.target;if(!(u instanceof HTMLElement))return;const m=u.closest(".bridgerte__code-block-control");if(!(m instanceof HTMLElement))return;const y=m.dataset.lexicalKey;y&&(i.preventDefault(),i.stopPropagation(),E(m,y))},N=i=>{const u=i.target;u instanceof HTMLElement&&u.closest(".bridgerte__code-block-control")&&i.preventDefault()},_=i=>{const u=i.target;if(!(u instanceof HTMLElement))return;if(!u.closest(".bridgerte__code-block")){w();return}const m=u.closest(".bridgerte__code-block");if(!m||m.textContent)return;const y=m.dataset.lexicalKey;y&&(e.editor.update(()=>{const T=h.$getNodeByKey(y);O.$isCodeNode(T)&&T.selectEnd()}),e.editor.focus())};return t.addEventListener("pointerdown",N),t.addEventListener("click",I),n.addEventListener("pointerdown",_),n.addEventListener("scroll",f,{passive:!0}),window.addEventListener("resize",f),{destroy(){k(),P(),c==null||c(),c=null,s!==null&&(et(s),s=null),t.removeEventListener("pointerdown",N),t.removeEventListener("click",I),n.removeEventListener("pointerdown",_),n.removeEventListener("scroll",f),window.removeEventListener("resize",f),d.forEach(i=>{var u;(u=l.get(i))==null||u(),i.remove()}),d.clear(),l.clear(),t.remove(),a==null||a.destroy(),a=null}}},sn=e=>{const t=o=>{const a=e.getBlockFromTarget(o.target);if(a){e.activateBlock(a);return}e.clearBlock()},n=o=>{const a=e.getBlockFromTarget(o.target);a&&e.activateBlock(a)},r=o=>{const a=o.target;a instanceof Node&&e.root.contains(a)||e.clearBlock()};return e.content.addEventListener("pointerdown",t),e.content.addEventListener("focusin",n),document.addEventListener("pointerdown",r),{destroy(){e.content.removeEventListener("pointerdown",t),e.content.removeEventListener("focusin",n),document.removeEventListener("pointerdown",r)}}},Ie=(e,t={})=>e.map(n=>{var a;const r=(a=t.menuLabels)==null?void 0:a[n.id],o=n.payloadPanel?jt.resolvePayloadPanelSchema(n.payloadPanel,t.payloadPanelConfig):void 0;return{...n,...r===void 0?{}:{label:r},...o===void 0?{}:{payloadPanel:o}}}),ln=(e,t)=>{const n=t.find(r=>r.command===e.command.type);return(n==null?void 0:n.value)===void 0?void 0:{value:String(n.value)}},cn=(e,t)=>{const n=t.find(o=>z.isCommandStateForCommand(e.command,o)),r=t.find(o=>o.command===e.command.type);return{active:(n==null?void 0:n.active)===!0,disabled:e.payloadPanel?(r==null?void 0:r.disabled)===!0:(n==null?void 0:n.disabled)===!0||(r==null?void 0:r.disabled)===!0}},be=["media-resize-20","media-resize-50","media-resize-100"],vo=["media-align-left","media-align-center","media-align-right","|",...be,"|","media-remove"],wo=["media-retry","|","media-remove"],Co=[{id:"media-align-left",command:{type:"media.align",assetId:"",value:"left"},label:"左",icon:"align-left"},{id:"media-align-center",command:{type:"media.align",assetId:"",value:"center"},label:"中",icon:"align-center"},{id:"media-align-right",command:{type:"media.align",assetId:"",value:"right"},label:"右",icon:"align-right"},{id:"media-resize-20",command:{type:"media.resize",assetId:"",widthPercent:20},label:"20%",icon:"media-resize-20"},{id:"media-resize-50",command:{type:"media.resize",assetId:"",widthPercent:50},label:"50%",icon:"media-resize-50"},{id:"media-resize-100",command:{type:"media.resize",assetId:"",widthPercent:100},label:"100%",icon:"media-resize-100"},{id:"media-retry",command:{type:"media.retry",assetId:""},label:"重试",icon:"refresh-cw"},{id:"media-remove",command:{type:"media.remove",assetId:""},label:"删除",icon:"trash-2"}],dn=e=>be.includes(e),_o=e=>typeof e=="object"&&Array.isArray(e.menuKeys),ko=e=>new Set(e.flatMap(t=>t==="|"?[]:typeof t=="string"?[t]:_o(t)?[t.key,...t.menuKeys]:[])),De=e=>typeof e=="string"&&dn(e),Eo=e=>{const t=e.findIndex(r=>r==="media-remove"),n=t===-1?e.length:t;return[...e.slice(0,n),"|",...be,"|",...e.slice(n)]},xo=e=>{const t=ko(e);if(be.filter(o=>!t.has(o)).length===0)return e;const r=e.findIndex(De);return r===-1?Eo(e):[...e.slice(0,r).filter(o=>!De(o)),...be,...e.slice(r+1).filter(o=>!De(o))]},Mo=e=>{var r;const t=(e==null?void 0:e.toolbarKeys)??vo;return{...e,toolbarKeys:xo(t),excludeKeys:(r=e==null?void 0:e.excludeKeys)==null?void 0:r.filter(o=>!dn(o))}},To=(e,t)=>{switch(e.command.type){case"media.retry":return{...e.command,assetId:t};case"media.remove":return{...e.command,assetId:t};case"media.resize":return{...e.command,assetId:t};case"media.align":return{...e.command,assetId:t};default:return null}},So=(e,t,n)=>e.command.type==="media.resize"?e.command.widthPercent===t:e.command.type==="media.align"&&e.command.value===n,un=(e,t={})=>{const n=Ie(Co,{menuLabels:t.menuLabels}),r=e==="error"?{toolbarKeys:wo}:Mo(t.config);return z.resolveToolbarMenu(r,n)},le=8,ue="bridgerte__media-controls-button",No=e=>e.querySelector(".bridgerte__content")??e,Lo=e=>e instanceof Element?e.closest(".bridgerte__media"):null,Ro=(e,t=!1)=>{const n=document.createElement("button");return n.type="button",n.className=ue,n.textContent=e.label,n.dataset.menuItemId=e.id,n.dataset.action=e.id.replace(/^media-/,""),t&&(n.dataset.active="true"),n.setAttribute("aria-label",e.label),n},gn=e=>e.flatMap(t=>t.type==="button"?[t.item]:t.type==="group"?t.items:[]),Po=(e,t,n,r)=>{if(t.type==="separator"){const a=document.createElement("span");a.className="bridgerte__media-controls-separator",a.dataset.separatorId=t.key,a.setAttribute("aria-hidden","true"),e.append(a);return}(t.type==="button"?[t.item]:t.items).forEach(a=>{e.append(Ro(a,So(a,n,r)))})},Io=(e,t,n)=>{const r=document.createElement("div"),o=e.dataset.status,a=Number(e.dataset.displayWidthPercent??t),s=e.dataset.align??"left",c=un(o,{config:n.mediaControlsConfig,menuLabels:n.menuLabels});return r.className="bridgerte__media-controls",r.contentEditable="false",r.setAttribute("aria-label","媒体操作"),r.dataset.status=o??"success",r.dataset.displayWidthPercent=e.dataset.displayWidthPercent??"",r.dataset.align=e.dataset.align??"",r.dataset.menuItemIds=gn(c).map(d=>d.id).join("|"),c.forEach(d=>{Po(r,d,a,s)}),r},$o=e=>{const t=document.createElement("div"),n=No(e.root),r=new Map,o=new Map,a=new Map;let s=null,c=null,d=!1,l=null;const p=i=>{var m;const u=r.get(i);u&&((m=o.get(u))==null||m(),o.delete(u),u.remove(),r.delete(i),l===i&&(l=null))},w=(i,u)=>u.dataset.status==="error"||l===i,C=(i,u)=>{const m=e.root.getBoundingClientRect(),y=u.getBoundingClientRect(),T=y.bottom<m.top||y.top>m.bottom,R=Math.max(le,m.width-i.offsetWidth-le),$=Math.min(Math.max(y.left-m.left+le,le),R),B=Math.max(le,y.top-m.top-i.offsetHeight-le);i.hidden=T,i.style.transform=`translate(${$}px, ${B}px)`},S=i=>{const u=e.editor.getElementByKey(i);if(!u){p(i);return}u.dataset.lexicalKey=i,a.set(u,i);const m=r.get(i);if(!w(i,u)){p(i);return}if(m){const R=u.dataset.status==="error",$=m.querySelector('[data-action="retry"]')!==null,B=u.dataset.displayWidthPercent??"",q=u.dataset.align??"";if(R===$&&m.dataset.displayWidthPercent===B&&m.dataset.align===q){C(m,u);return}p(i)}const y=Io(u,e.defaultWidthPercent,e),T=W(y,{targetSelector:`.${ue}`});y.dataset.lexicalKey=i,y.dataset.assetId=u.dataset.assetId,r.set(i,y),o.set(y,T),t.append(y),C(y,u)},b=()=>{s=null,a.forEach((i,u)=>{e.root.contains(u)||(a.delete(u),p(i))}),e.root.querySelectorAll(".bridgerte__media").forEach(i=>{const u=i.dataset.lexicalKey;u&&(a.set(i,u),S(u))}),r.forEach((i,u)=>{S(u)}),l!==null&&S(l)},v=()=>{s===null&&(s=Ne(b))},M=(i,u)=>{const m=u.dataset.assetId,y=gn(un(u.dataset.status,{config:e.mediaControlsConfig,menuLabels:e.menuLabels})).find(R=>R.id===i.dataset.menuItemId);if(!m||!y)return;const T=To(y,m);T&&e.executeCommand(T)},g=i=>{if(!i){const y=l;l=null,y!==null&&S(y);return}const u=i.dataset.lexicalKey?i.dataset.lexicalKey:a.get(i)??null;if(!u||l===u)return;const m=l;l=u,m!==null&&S(m),S(u)},f=i=>{const u=i.target;if(!(u instanceof HTMLElement))return;const m=u.closest(`.${ue}`);m&&(i.preventDefault(),c=i.pointerType==="mouse"?null:m)},E=i=>{if(i.pointerType==="mouse"||!c)return;const u=i.target,m=u instanceof HTMLElement?u.closest(".bridgerte__media-controls"):null,y=u instanceof HTMLElement?u.closest(`.${ue}`):null;y===c&&m&&(i.preventDefault(),i.stopPropagation(),M(y,m),d=!0),c=null},k=()=>{c=null},P=i=>{if(d){d=!1,i.preventDefault(),i.stopPropagation();return}const u=i.target;if(!(u instanceof HTMLElement))return;const m=u.closest(`.${ue}`),y=u.closest(".bridgerte__media-controls");!m||!y||(i.preventDefault(),i.stopPropagation(),M(m,y))},I=e.editor.registerMutationListener(ce,i=>{i.forEach((u,m)=>{if(u==="destroyed"){p(m);return}S(m)})}),N=e.editor.registerUpdateListener(v),_=sn({root:e.root,content:n,getBlockFromTarget:Lo,activateBlock:g,clearBlock:()=>g(null)});return t.className="bridgerte__media-controls-layer",e.root.append(t),t.addEventListener("pointerdown",f),t.addEventListener("pointerup",E),t.addEventListener("pointercancel",k),t.addEventListener("click",P),n.addEventListener("scroll",v,{passive:!0}),window.addEventListener("resize",v),{destroy(){I(),N(),s!==null&&(et(s),s=null),t.removeEventListener("pointerdown",f),t.removeEventListener("pointerup",E),t.removeEventListener("pointercancel",k),t.removeEventListener("click",P),_.destroy(),n.removeEventListener("scroll",v),window.removeEventListener("resize",v),r.forEach(i=>{var u;(u=o.get(i))==null||u(),i.remove()}),r.clear(),o.clear(),a.clear(),t.remove()}}},Ao=["width","height"],K=(e,t)=>{var r;const n=(r=e[t])==null?void 0:r.trim();return n||void 0},Ue=(e,t)=>{const n=Number.parseInt(e[t]??"",10);return Number.isFinite(n)&&n>0?n:void 0},Tt=(e,t)=>Ao.reduce((n,r)=>{const o=Ue(t,r);return o===void 0?n:{...n,[r]:o}},e),Bo=(e,t)=>{if(e.type==="format.color"||e.type==="format.backgroundColor"||e.type==="format.fontSize"||e.type==="format.fontFamily"||e.type==="format.lineHeight")return t.value!==void 0?{...e,value:t.value}:e;if(e.type==="link.set"){const n=K(t,"href"),r=K(t,"text");return n?{...e,href:n,text:r}:null}if(e.type==="block.code")return t.language?{type:"block.code",language:t.language}:e;if(e.type==="block.setCodeLanguage")return t.language!==void 0?{...e,language:t.language}:e;if(e.type==="table.insert"){const n=Ue(t,"rows"),r=Ue(t,"cols");return n&&r?{type:"table.insert",rows:n,cols:r}:null}if(e.type==="media.insertImage"){const n=K(t,"url");return n?Tt({...e,url:n,alt:K(t,"alt"),title:K(t,"title")},t):null}if(e.type==="media.insertVideo"){const n=K(t,"url");return n?Tt({...e,url:n,poster:K(t,"poster"),title:K(t,"title")},t):null}return e},Z=e=>Math.min(Math.max(Math.round(e),0),255),je=({r:e,g:t,b:n})=>`#${[e,t,n].map(r=>Z(r).toString(16).padStart(2,"0")).join("")}`,mn=e=>{const n=e.trim().match(/^#([0-9a-f]{6})$/i);if(!n)return null;const r=n[1]??"";return{r:Number.parseInt(r.slice(0,2),16),g:Number.parseInt(r.slice(2,4),16),b:Number.parseInt(r.slice(4,6),16)}},Do=e=>{const t=e.trim().match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i);return t?{r:Z(Number(t[1])),g:Z(Number(t[2])),b:Z(Number(t[3]))}:null},Oe=e=>{const t=mn(e)??Do(e);return t?je(t):null},hn=e=>Math.min(Math.max(e,0),1),Oo=({r:e,g:t,b:n})=>{const r=Z(e)/255,o=Z(t)/255,a=Z(n)/255,s=Math.max(r,o,a),c=Math.min(r,o,a),d=s-c;let l=0;return d!==0&&(s===r?l=60*((o-a)/d%6):s===o?l=60*((a-r)/d+2):l=60*((r-o)/d+4)),{h:l<0?l+360:l,s:s===0?0:d/s,v:s}},St=({h:e,s:t,v:n})=>{const r=n*t,o=r*(1-Math.abs(e/60%2-1)),a=n-r;let s=0,c=0,d=0;return e<60?(s=r,c=o):e<120?(s=o,c=r):e<180?(c=r,d=o):e<240?(c=o,d=r):e<300?(s=o,d=r):(s=r,d=o),{r:(s+a)*255,g:(c+a)*255,b:(d+a)*255}},Ho=({h:e,s:t})=>{const n=e*Math.PI/180,r=hn(t)*50;return{x:50+Math.cos(n)*r,y:50+Math.sin(n)*r}},Nt=(e,t)=>{const n=t.getBoundingClientRect(),r=n.left+n.width/2,o=n.top+n.height/2,a=e.clientX-r,s=e.clientY-o,c=Math.min(Math.sqrt(a*a+s*s),n.width/2),d=Math.atan2(s,a)*180/Math.PI;return{h:d<0?d+360:d,s:hn(c/(n.width/2)),v:1}},Fo=["#000000","#ffffff"],zo=e=>{var t;return(t=e.options)!=null&&t.length?e.options:Fo.map(n=>({label:n,value:n}))},pn=()=>{const e=document.createElement("section");return e.className="bridgerte__payload-panel-field",e},Wo=(e,t,n)=>{const r=pn(),o=document.createElement("div");return o.className="bridgerte__payload-panel-option-list",e.options.forEach(a=>{const s=document.createElement("button");s.type="button",s.className="bridgerte__payload-panel-option",s.textContent=a.label,s.dataset.bridgertePayloadOption=a.value,s.dataset.active=t[e.name]===a.value?"true":"false",W(s),s.addEventListener("pointerdown",c=>{c.preventDefault()}),s.addEventListener("click",()=>{n({...t,[e.name]:a.value})}),o.append(s)}),r.append(o),r},Vo=(e,t,n)=>{const r=pn(),o=document.createElement("div"),a=document.createElement("div"),s=document.createElement("span"),c=document.createElement("div"),d=document.createElement("div"),l=zo(e),p=l.length===2;let w={h:0,s:0,v:1},C=null;const S=g=>{const f=Oe(g);return!!(f&&l.some(E=>Oe(E.value)===f))},b=(g,f=!0)=>{const E=Oe(g);if(!E)return;t[e.name]=E,d.style.background=E,w=Oo(mn(E)??{r:255,g:255,b:255});const k=Ho(w);a.dataset.active=f?"true":"false",d.dataset.empty="false",f&&(s.style.left=`${k.x}%`,s.style.top=`${k.y}%`)},v=()=>{const g=t[e.name];g&&n({...t,[e.name]:g})};r.className="bridgerte__payload-panel-field",o.className="bridgerte__payload-panel-color-picker",a.className="bridgerte__payload-panel-color-wheel",a.setAttribute("aria-label",`${e.label}选择区域`),s.className="bridgerte__payload-panel-color-wheel-handle",c.className="bridgerte__payload-panel-color-actions",c.dataset.layout=p?"sides":"grid",d.className="bridgerte__payload-panel-color-preview",d.dataset.empty="true",a.append(s),l.forEach(g=>{const f=document.createElement("button"),E=g.value;f.type="button",f.className="bridgerte__payload-panel-color-swatch",f.dataset.value=E,f.style.background=E,f.setAttribute("aria-label",`选择颜色 ${g.label}`),W(f),f.addEventListener("pointerdown",k=>{k.preventDefault()}),f.addEventListener("click",()=>{b(E,!1),v()}),c.append(f)}),a.addEventListener("pointerdown",g=>{C=g.pointerId,a.setPointerCapture(g.pointerId),w=Nt(g,a),b(je(St(w))),g.preventDefault()}),a.addEventListener("pointermove",g=>{C===g.pointerId&&(w=Nt(g,a),b(je(St(w))))}),a.addEventListener("pointerup",g=>{C===g.pointerId&&(C=null,a.releasePointerCapture(g.pointerId),v())}),a.addEventListener("pointercancel",g=>{C===g.pointerId&&(C=null,a.releasePointerCapture(g.pointerId))});const M=t[e.name];return M&&b(M,!(p&&S(M))),o.append(a,c),r.append(o,d),r},qo=(e,t,n)=>{const r=document.createElement("label"),o=document.createElement("input");return r.className="bridgerte__payload-panel-text-field",r.textContent=e.label,o.type=e.name==="href"||e.name==="url"?"url":"text",o.className="bridgerte__payload-panel-text-input",o.value=t[e.name]??"",o.placeholder=e.placeholder??"",o.spellcheck=!1,o.addEventListener("input",()=>{t[e.name]=o.value}),o.addEventListener("keydown",a=>{a.key==="Enter"&&(a.preventDefault(),n(t))}),r.append(o),r},Uo=(e,t,n)=>{const r=document.createElement("label"),o=document.createElement("input");return r.className="bridgerte__payload-panel-text-field",r.textContent=e.label,o.type="number",o.className="bridgerte__payload-panel-text-input",o.value=t[e.name]??"",o.placeholder=e.placeholder??"",e.min!==void 0&&(o.min=String(e.min)),e.max!==void 0&&(o.max=String(e.max)),e.step!==void 0&&(o.step=String(e.step)),o.addEventListener("input",()=>{t[e.name]=o.value}),o.addEventListener("keydown",a=>{a.key==="Enter"&&(a.preventDefault(),n(t))}),r.append(o),r},jo=({field:e,values:t,onSubmit:n})=>e.type==="color"?Vo(e,t,n):e.type==="text"?qo(e,t,n):e.type==="number"?Uo(e,t,n):Wo(e,t,n),Ko=e=>{var t,n,r;return e.defaultValue??(e.type==="select"?(t=e.options[0])==null?void 0:t.value:void 0)??(e.type==="color"?(r=(n=e.options)==null?void 0:n[0])==null?void 0:r.value:void 0)??""},Go=(e,t)=>(t==null?void 0:t[e.name])??(e.type==="color"?"":Ko(e)),Lt=e=>e.some(t=>t.type==="text"||t.type==="number"),Yo=e=>{const t=e.querySelector(".bridgerte__payload-panel-text-input");queueMicrotask(()=>{t==null||t.focus(),t==null||t.select()})},Xo=(e,t,n)=>{const r=document.createElement("div"),o=document.createElement("span"),a=(n==null?void 0:n(e))??null;if(r.className="bridgerte__payload-panel-title",o.textContent=e.panel.title,r.append(o),a){const s=document.createElement("button");s.type="button",s.className="bridgerte__payload-panel-clear",s.textContent="清除",s.setAttribute("aria-label",`清除${e.panel.title}`),W(s),s.addEventListener("pointerdown",c=>{c.preventDefault()}),s.addEventListener("click",()=>{t(a)}),r.append(s)}return r},Jo=e=>e==="font-size"||e==="font-family"||e==="line-height"?"180px":"220px",Qo=3,Zo=3,ea=10,fn=10,ta=16,na=2,ra=24,oa=()=>{var e;return typeof window<"u"&&((e=window.matchMedia)==null?void 0:e.call(window,"(hover: hover) and (pointer: fine)").matches)===!0},ge=(e,t)=>{const n=Number.parseInt(e??"",10);return Number.isFinite(n)?Math.min(Math.max(n,t.min),t.max):t.defaultValue},aa=(e,t)=>e.type==="number"&&e.name===t,Rt=(e,t)=>typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):t,Pt=(e,t,n,r)=>{const o=e.find(p=>aa(p,t)),a=Rt(o==null?void 0:o.min,1),s=Rt(o==null?void 0:o.max,n),c=Math.max(a,s),d=Math.min(Math.max(r,a),c),l=ge(o==null?void 0:o.defaultValue,{min:a,max:c,defaultValue:d});return{min:a,max:c,defaultValue:l}},bn=e=>({rows:Pt(e,"rows",Y.BRIDGERTE_TABLE_INSERT_MAX_ROWS,Qo),cols:Pt(e,"cols",Y.BRIDGERTE_TABLE_INSERT_MAX_COLS,Zo)}),sa=e=>{const t=Math.min(e.cols.max,fn);return`${t*ta+Math.max(t-1,0)*na+ra}px`},ia=({fields:e,values:t,onSubmit:n})=>{const r=bn(e),o=document.createElement("section"),a=document.createElement("div"),s=document.createElement("div"),c=[],d=oa(),l=Math.min(r.rows.max,ea),p=Math.min(r.cols.max,fn),w={...r.rows,max:l,defaultValue:Math.min(r.rows.defaultValue,l)},C={...r.cols,max:p,defaultValue:Math.min(r.cols.defaultValue,p)};let S=ge(t.rows,w),b=ge(t.cols,C),v=null;const M=(N,_)=>{S=N,b=_,t.rows=String(N),t.cols=String(_),s.textContent=`${N} x ${_}`,c.forEach(i=>{const u=Number.parseInt(i.dataset.rows??"0",10),m=Number.parseInt(i.dataset.cols??"0",10);i.dataset.active=String(u<=N&&m<=_)})},g=N=>{var _;return((_=document.elementFromPoint(N.clientX,N.clientY))==null?void 0:_.closest(".bridgerte__payload-panel-table-cell"))??null},f=N=>{if(!N)return;const _=ge(N.dataset.rows,w),i=ge(N.dataset.cols,C);M(_,i)},E=()=>{n({...t,rows:String(S),cols:String(b)})},k=()=>{v=null},P=()=>{window.setTimeout(k,0)},I=(N,_)=>{if(N.detail>0&&v!==_){N.preventDefault(),N.stopPropagation();return}k(),f(_),E()};for(let N=1;N<=l;N+=1)for(let _=1;_<=p;_+=1){const i=document.createElement("button");i.type="button",i.className="bridgerte__payload-panel-table-cell",i.dataset.rows=String(N),i.dataset.cols=String(_),i.setAttribute("aria-label",`插入 ${N} 行 ${_} 列表格`),W(i),i.addEventListener("pointerdown",u=>{v=i,f(i),u.preventDefault()}),i.addEventListener("pointerup",P),i.addEventListener("pointercancel",k),i.addEventListener("click",u=>{I(u,i)}),d&&i.addEventListener("pointerenter",()=>{f(i)}),c.push(i),a.append(i)}return o.className="bridgerte__payload-panel-field",a.className="bridgerte__payload-panel-table-grid",a.setAttribute("aria-label","选择表格行列"),a.style.setProperty("--bridgerte-payload-panel-table-cols",String(p)),s.className="bridgerte__payload-panel-table-status",s.setAttribute("aria-live","polite"),a.addEventListener("pointermove",N=>{d||f(g(N))}),M(S,b),o.append(a,s),o},la="bridgerte-payload-panel";let It=0;const ca=()=>(It+=1,`${la}-${It}`),Ee=e=>e.panel.id==="table-insert",da=(e,t)=>{const n=document.createElement("button");return n.type="button",n.className="bridgerte__payload-panel-submit",n.textContent="应用",W(n),n.addEventListener("pointerdown",r=>{r.preventDefault()}),n.addEventListener("click",()=>{t(e)}),n},ua=e=>{let t=null,n={};const r=an({root:e.editorRoot,className:"bridgerte__payload-panel",onBackdropClick:()=>{o()}});function o(){t=null,n={},r.close(),r.content.replaceChildren()}const a=l=>{var w;if(!t||t.readonly||e.isReadonly())return;const p=Bo(t.command,l);p&&((w=e.restoreEditorFocus)==null||w.call(e,()=>{o(),e.isReadonly()||e.executeCommand(p)}))},s=l=>{var p;!t||t.readonly||e.isReadonly()||(p=e.restoreEditorFocus)==null||p.call(e,()=>{o(),e.isReadonly()||e.executeCommand(l)})},c=l=>{n=l.panel.fields.reduce((w,C)=>(w[C.name]=Go(C,l.currentValues),w),{});const p=Ee(l)?sa(bn(l.panel.fields)):Jo(l.panel.id);r.element.style.width=`min(${p}, calc(100vw - 24px))`,r.content.append(Xo(l,s,e.getClearCommand)),Ee(l)?r.content.append(ia({fields:l.panel.fields,values:n,onSubmit:a})):l.panel.fields.forEach(w=>{r.content.append(jo({field:w,values:n,onSubmit:a}))}),!Ee(l)&&Lt(l.panel.fields)&&r.content.append(da(n,a)),r.open(l.anchorRect),!Ee(l)&&Lt(l.panel.fields)&&Yo(r.content)};return{open:l=>{var C;o();const p={...l,id:ca(),readonly:e.isReadonly(),submit:a,cancel:o};if(t=p,((C=e.onRequest)==null?void 0:C.call(e,p))!==!0){if(p.readonly){o();return}c(l)}},close:o,destroy(){o(),r.destroy()}}},me="bridgerte__table-controls-button",ga=["table-insert-row-after","table-delete-row","table-insert-column-after","table-delete-column","table-delete"],ma=()=>{const e=new Map(z.defaultMenuSchema.map(t=>[t.id,t]));return ga.map(t=>z.tableHeaderMenuItems.find(n=>n.id===t)??e.get(t)).filter(t=>t!==void 0)},yn=ma(),ha=new Map(yn.map(e=>[e.id,e])),pa=e=>e.matches(".bridgerte__table")?e:e.querySelector(".bridgerte__table")??e,fa=(e,t)=>e.classList.contains("bridgerte__table-wrapper")?e:t.parentElement instanceof HTMLElement?t.parentElement:t,ba=e=>e.querySelector(".bridgerte__content")??e,ya=e=>e instanceof Element?e.closest(".bridgerte__table-wrapper"):null,va=e=>{const t=e.getFirstChild();if(!D.$isTableRowNode(t))return null;const n=t.getFirstChild();return D.$isTableCellNode(n)?n:null},wa=e=>{const t=document.createElement("button");return t.type="button",t.className=me,t.textContent=e.label,t.dataset.menuItemId=e.id,t.setAttribute("aria-label",e.label),t},Ca=()=>{const e=document.createElement("div");return e.className="bridgerte__table-controls",e.contentEditable="false",e.setAttribute("aria-label","表格操作"),yn.forEach(t=>{e.append(wa(t))}),e},_a=e=>{const t=document.createElement("div"),n=ba(e.root),r=new Map,o=new Map,a=new Map;let s=null,c=null,d=!1,l=null;const p=(m,y)=>{const T=e.root.getBoundingClientRect(),R=y.getBoundingClientRect(),$=R.bottom<T.top||R.top>T.bottom,B=Math.max(8,T.width-m.offsetWidth-8),q=Math.min(Math.max(R.left-T.left+8,8),B),L=Math.max(8,R.top-T.top-m.offsetHeight-8);m.hidden=$,m.style.transform=`translate(${q}px, ${L}px)`},w=m=>l===m,C=m=>{const y=e.editor.getElementByKey(m);if(!y){S(m);return}y.dataset.lexicalKey=m;const T=pa(y),R=fa(y,T);a.set(R,m);const $=r.get(m);if(!w(m)){S(m);return}if($){p($,R);return}const B=Ca(),q=W(B,{targetSelector:`.${me}`});B.dataset.lexicalKey=m,r.set(m,B),o.set(B,q),t.append(B),p(B,R)},S=m=>{var T;const y=r.get(m);y&&((T=o.get(y))==null||T(),o.delete(y),y.remove(),r.delete(m),l===m&&(l=null))},b=()=>{s=null,a.forEach((m,y)=>{e.root.contains(y)||(a.delete(y),S(m))}),e.root.querySelectorAll(".bridgerte__table-wrapper").forEach(m=>{const y=m.dataset.lexicalKey;y&&(a.set(m,y),C(y))}),r.forEach((m,y)=>{C(y)}),l!==null&&C(l)},v=()=>{s===null&&(s=Ne(b))},M=m=>{e.editor.update(()=>{var T;const y=h.$getNodeByKey(m);y instanceof D.TableNode&&((T=va(y))==null||T.selectStart())}),e.editor.focus()},g=(m,y)=>{M(m),e.executeCommand(y)},f=(m,y)=>{const T=y.dataset.lexicalKey,R=m.dataset.menuItemId,$=R?ha.get(R):void 0;!T||!$||g(T,$.command)},E=m=>{if(!m){const R=l;l=null,R!==null&&C(R);return}const y=m.dataset.lexicalKey?m.dataset.lexicalKey:a.get(m)??null;if(!y||l===y)return;const T=l;l=y,T!==null&&C(T),C(y)},k=m=>{const y=m.target;if(!(y instanceof HTMLElement))return;const T=y.closest(`.${me}`);T&&(m.preventDefault(),c=m.pointerType==="mouse"?null:T)},P=m=>{if(m.pointerType==="mouse"||!c)return;const y=m.target,T=y instanceof HTMLElement?y.closest(".bridgerte__table-controls"):null,R=y instanceof HTMLElement?y.closest(`.${me}`):null;R===c&&T&&(m.preventDefault(),m.stopPropagation(),f(R,T),d=!0),c=null},I=()=>{c=null},N=m=>{if(d){d=!1,m.preventDefault(),m.stopPropagation();return}const y=m.target;if(!(y instanceof HTMLElement))return;const T=y.closest(`.${me}`),R=y.closest(".bridgerte__table-controls");!T||!R||(m.preventDefault(),m.stopPropagation(),f(T,R))},_=e.editor.registerMutationListener(D.TableNode,m=>{m.forEach((y,T)=>{if(y==="destroyed"){S(T);return}C(T)})}),i=e.editor.registerUpdateListener(v),u=sn({root:e.root,content:n,getBlockFromTarget:ya,activateBlock:E,clearBlock:()=>E(null)});return t.className="bridgerte__table-controls-layer",e.root.append(t),t.addEventListener("pointerdown",k),t.addEventListener("pointerup",P),t.addEventListener("pointercancel",I),t.addEventListener("click",N),n.addEventListener("scroll",v,{passive:!0}),window.addEventListener("resize",v),{destroy(){_(),i(),s!==null&&(et(s),s=null),t.removeEventListener("pointerdown",k),t.removeEventListener("pointerup",P),t.removeEventListener("pointercancel",I),t.removeEventListener("click",N),u.destroy(),n.removeEventListener("scroll",v),window.removeEventListener("resize",v),r.forEach(m=>{var y;(y=o.get(m))==null||y(),m.remove()}),r.clear(),o.clear(),a.clear(),t.remove()}}},ka=e=>{const t=ua({editorRoot:e.editorRoot,isReadonly:e.isReadonly,restoreEditorFocus:e.restoreEditorFocus,executeCommand:e.executeCommand,getClearCommand:e.getClearCommand,onRequest:e.onRequest}),n=yo({editor:e.lexicalEditor,root:e.editorRoot,isReadonly:e.isReadonly,languagePanel:e.codeBlockLanguagePanel,payloadPanelConfig:e.payloadPanelConfig,onRequest:e.onRequest}),r=_a({editor:e.lexicalEditor,root:e.editorRoot,executeCommand:e.executeCommand}),o=$o({editor:e.lexicalEditor,root:e.editorRoot,defaultWidthPercent:e.defaultMediaWidthPercent,executeCommand:e.executeCommand,mediaControlsConfig:e.mediaControlsConfig,menuLabels:e.menuLabels});return{payloadPanelController:t,codeBlockController:n,tableHeaderController:r,mediaControlsController:o,destroy(){t.destroy(),n.destroy(),r.destroy(),o.destroy()}}},Ea=(e,t)=>{const n=document.createElement("div"),r=document.createElement("div"),o=document.createElement("div");return e.classList.add("bridgerte"),e.textContent="",n.className="bridgerte__editor",r.className="bridgerte__body",o.className="bridgerte__content",o.dataset.placeholder=t.placeholder,o.setAttribute("role","textbox"),o.setAttribute("aria-multiline","true"),r.append(o),n.append(r),e.append(n),{rootElement:n,bodyElement:r,contentElement:o}},xa=({editor:e})=>{let t=null;return{capture(){e.getEditorState().read(()=>{var n;t=((n=h.$getSelection())==null?void 0:n.clone())??null})},restore(){t&&e.update(()=>{h.$setSelection((t==null?void 0:t.clone())??null)})},clear(){t=null}}},Ma=/((https?:\/\/|www\.)[^\s<>()]+[^\s<>().,;:!?])/i,Ta=/([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})/i,Sa={changeHandlers:[],excludeParents:[],matchers:[F.createLinkMatcherWithRegExp(Ma,e=>e.startsWith("http://")||e.startsWith("https://")?e:`https://${e}`),F.createLinkMatcherWithRegExp(Ta,e=>`mailto:${e}`)]},Na=({editor:e})=>F.registerAutoLink(e,Sa),La=[".bridgerte__code-header",".bridgerte__code-block-control",".bridgerte__code-block-controls-layer",".bridgerte__code-block-menu",".bridgerte__table-controls-layer",".bridgerte__table-controls",".bridgerte__media-controls-layer",".bridgerte__media-controls",".bridgerte__dialog-backdrop",".bridgerte__dialog",".bridgerte__payload-panel"].join(","),Ra=(e,t)=>{const n=e.anchorNode,r=e.focusNode;return n!==null&&r!==null&&t.contains(n)&&t.contains(r)},Pa=e=>{e.querySelectorAll(La).forEach(t=>{t.remove()}),e.querySelectorAll('[contenteditable="false"]').forEach(t=>{t.classList.contains("bridgerte__media")||t.remove()})},Ia=e=>{const t=e.ownerDocument.getSelection();if(!t||t.rangeCount===0||!Ra(t,e))return null;const n=t.getRangeAt(0).cloneContents();Pa(n);const r=e.ownerDocument.createElement("div");return r.append(n),{html:r.innerHTML,text:r.textContent??""}},$a=({target:e,isReadonly:t})=>{const n=o=>{const a=Ia(e);!a||!o.clipboardData||(o.clipboardData.setData("text/html",a.html),o.clipboardData.setData("text/plain",a.text),o.preventDefault(),o.stopImmediatePropagation())},r=o=>{if(t()){n(o);return}n(o)};return e.addEventListener("copy",n,{capture:!0}),e.addEventListener("cut",r,{capture:!0}),()=>{e.removeEventListener("copy",n,{capture:!0}),e.removeEventListener("cut",r,{capture:!0})}},xe=8,Aa=()=>{const e=window.visualViewport;return{left:(e==null?void 0:e.offsetLeft)??0,top:(e==null?void 0:e.offsetTop)??0,width:(e==null?void 0:e.width)??window.innerWidth,height:(e==null?void 0:e.height)??window.innerHeight}},$t=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n));function tt(e,t,n={}){const r=n.placement??"bottom-start",o=n.offset??8,a=n.shiftPadding??8,s=n.strategy??"absolute";let c=null,d=!1;const l=()=>{t.style.position=s,t.style.left="0px",t.style.top="0px",t.style.opacity="0",t.style.pointerEvents="none"},p=(b,v)=>{const M=Aa(),g=t.getBoundingClientRect(),f=M.left+xe,E=M.top+xe,k=M.left+M.width-g.width-xe,P=M.top+M.height-g.height-xe;t.style.left=`${$t(b,f,k)}px`,t.style.top=`${$t(v,E,P)}px`,t.style.opacity="",t.style.pointerEvents=""},w=async()=>{const b=await oe.computePosition(e,t,{placement:r,strategy:s,platform:oe.platform,middleware:[oe.offset(o),oe.flip(),oe.shift({padding:a})]});p(b.x,b.y)},C=()=>{c==null||c(),c=null},S=b=>{if(d!==b){if(d=b,C(),d){l(),t.hidden=!1,c=oe.autoUpdate(e,t,w),w();return}t.hidden=!0,t.style.opacity="",t.style.pointerEvents=""}};return l(),t.hidden=!0,{update:w,setOpen:S,destroy(){C(),t.hidden=!0}}}const nt={"align-center":'<svg aria-hidden="true" class="lucide lucide-align-center" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 5H3" /> <path d="M17 12H7" /> <path d="M19 19H5" /> </svg>',"align-justify":'<svg aria-hidden="true" class="lucide lucide-align-justify" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M3 5h18" /> <path d="M3 12h18" /> <path d="M3 19h18" /> </svg>',"align-left":'<svg aria-hidden="true" class="lucide lucide-align-left" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 5H3" /> <path d="M15 12H3" /> <path d="M17 19H3" /> </svg>',"align-right":'<svg aria-hidden="true" class="lucide lucide-align-right" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 5H3" /> <path d="M21 12H9" /> <path d="M21 19H7" /> </svg>',"at-sign":'<svg aria-hidden="true" class="lucide lucide-at-sign" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="4" /> <path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8" /> </svg>',bold:'<svg aria-hidden="true" class="lucide lucide-bold" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" /> </svg>',"case-sensitive":'<svg aria-hidden="true" class="lucide lucide-case-sensitive" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16" /> <path d="M22 9v7" /> <path d="M3.304 13h6.392" /> <circle cx="18.5" cy="12.5" r="3.5" /> </svg>',code:'<svg aria-hidden="true" class="lucide lucide-code" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m16 18 6-6-6-6" /> <path d="m8 6-6 6 6 6" /> </svg>',"columns-minus":'<svg aria-hidden="true" class="lucide lucide-between-vertical-end" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="7" height="13" x="3" y="3" rx="1" /> <path d="m9 22 3-3 3 3" /> <rect width="7" height="13" x="14" y="3" rx="1" /> </svg>',"columns-plus":'<svg aria-hidden="true" class="lucide lucide-between-vertical-start" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="7" height="13" x="3" y="8" rx="1" /> <path d="m15 2-3 3-3-3" /> <rect width="7" height="13" x="14" y="8" rx="1" /> </svg>',"heading-1":'<svg aria-hidden="true" class="lucide lucide-heading-1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 12h8" /> <path d="M4 18V6" /> <path d="M12 18V6" /> <path d="m17 12 3-2v8" /> </svg>',"heading-2":'<svg aria-hidden="true" class="lucide lucide-heading-2" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 12h8" /> <path d="M4 18V6" /> <path d="M12 18V6" /> <path d="M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1" /> </svg>',"heading-3":'<svg aria-hidden="true" class="lucide lucide-heading-3" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 12h8" /> <path d="M4 18V6" /> <path d="M12 18V6" /> <path d="M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2" /> <path d="M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2" /> </svg>',"heading-4":'<svg aria-hidden="true" class="lucide lucide-heading-4" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 18V6" /> <path d="M17 10v3a1 1 0 0 0 1 1h3" /> <path d="M21 10v8" /> <path d="M4 12h8" /> <path d="M4 18V6" /> </svg>',"heading-5":'<svg aria-hidden="true" class="lucide lucide-heading-5" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 12h8" /> <path d="M4 18V6" /> <path d="M12 18V6" /> <path d="M17 13v-3h4" /> <path d="M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17" /> </svg>',"heading-6":'<svg aria-hidden="true" class="lucide lucide-heading-6" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 12h8" /> <path d="M4 18V6" /> <path d="M12 18V6" /> <circle cx="19" cy="16" r="2" /> <path d="M20 10c-2 2-3 3.5-3 6" /> </svg>',"indent-decrease":'<svg aria-hidden="true" class="lucide lucide-indent-decrease" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 5H11" /> <path d="M21 12H11" /> <path d="M21 19H11" /> <path d="m7 8-4 4 4 4" /> </svg>',"indent-increase":'<svg aria-hidden="true" class="lucide lucide-indent-increase" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 5H11" /> <path d="M21 12H11" /> <path d="M21 19H11" /> <path d="m3 8 4 4-4 4" /> </svg>',italic:'<svg aria-hidden="true" class="lucide lucide-italic" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <line x1="19" x2="10" y1="4" y2="4" /> <line x1="14" x2="5" y1="20" y2="20" /> <line x1="15" x2="9" y1="4" y2="20" /> </svg>',"list-ordered":'<svg aria-hidden="true" class="lucide lucide-list-ordered" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M11 5h10" /> <path d="M11 12h10" /> <path d="M11 19h10" /> <path d="M4 4h1v5" /> <path d="M4 9h2" /> <path d="M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02" /> </svg>',"list-plus":'<svg aria-hidden="true" class="lucide lucide-list-plus" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M16 5H3" /> <path d="M11 12H3" /> <path d="M16 19H3" /> <path d="M18 9v6" /> <path d="M21 12h-6" /> </svg>',"list-todo":'<svg aria-hidden="true" class="lucide lucide-list-todo" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M13 5h8" /> <path d="M13 12h8" /> <path d="M13 19h8" /> <path d="m3 17 2 2 4-4" /> <rect x="3" y="4" width="6" height="6" rx="1" /> </svg>',list:'<svg aria-hidden="true" class="lucide lucide-list" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M3 5h.01" /> <path d="M3 12h.01" /> <path d="M3 19h.01" /> <path d="M8 5h13" /> <path d="M8 12h13" /> <path d="M8 19h13" /> </svg>',maximize:'<svg aria-hidden="true" class="lucide lucide-maximize" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M8 3H5a2 2 0 0 0-2 2v3" /> <path d="M21 8V5a2 2 0 0 0-2-2h-3" /> <path d="M3 16v3a2 2 0 0 0 2 2h3" /> <path d="M16 21h3a2 2 0 0 0 2-2v-3" /> </svg>',minus:'<svg aria-hidden="true" class="lucide lucide-minus" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14" /> </svg>',"paint-bucket":'<svg aria-hidden="true" class="lucide lucide-paint-bucket" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M11 7 6 2" /> <path d="M18.992 12H2.041" /> <path d="M21.145 18.38A3.34 3.34 0 0 1 20 16.5a3.3 3.3 0 0 1-1.145 1.88c-.575.46-.855 1.02-.855 1.595A2 2 0 0 0 20 22a2 2 0 0 0 2-2.025c0-.58-.285-1.13-.855-1.595" /> <path d="m8.5 4.5 2.148-2.148a1.205 1.205 0 0 1 1.704 0l7.296 7.296a1.205 1.205 0 0 1 0 1.704l-7.592 7.592a3.615 3.615 0 0 1-5.112 0l-3.888-3.888a3.615 3.615 0 0 1 0-5.112L5.67 7.33" /> </svg>',palette:'<svg aria-hidden="true" class="lucide lucide-palette" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z" /> <circle cx="13.5" cy="6.5" r=".5" fill="currentColor" /> <circle cx="17.5" cy="10.5" r=".5" fill="currentColor" /> <circle cx="6.5" cy="12.5" r=".5" fill="currentColor" /> <circle cx="8.5" cy="7.5" r=".5" fill="currentColor" /> </svg>',pilcrow:'<svg aria-hidden="true" class="lucide lucide-pilcrow" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M13 4v16" /> <path d="M17 4v16" /> <path d="M19 4H9.5a4.5 4.5 0 0 0 0 9H13" /> </svg>',quote:'<svg aria-hidden="true" class="lucide lucide-quote" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" /> <path d="M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" /> </svg>',redo:'<svg aria-hidden="true" class="lucide lucide-redo" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 7v6h-6" /> <path d="M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7" /> </svg>',"remove-formatting":'<svg aria-hidden="true" class="lucide lucide-remove-formatting" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 7V4h16v3" /> <path d="M5 20h6" /> <path d="M13 4 8 20" /> <path d="m15 15 5 5" /> <path d="m20 15-5 5" /> </svg>',"rows-minus":'<svg aria-hidden="true" class="lucide lucide-between-horizontal-end" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="13" height="7" x="3" y="3" rx="1" /> <path d="m22 15-3-3 3-3" /> <rect width="13" height="7" x="3" y="14" rx="1" /> </svg>',"rows-plus":'<svg aria-hidden="true" class="lucide lucide-between-horizontal-start" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="13" height="7" x="8" y="3" rx="1" /> <path d="m2 9 3 3-3 3" /> <rect width="13" height="7" x="8" y="14" rx="1" /> </svg>',"square-code":'<svg aria-hidden="true" class="lucide lucide-square-code" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m10 9-3 3 3 3" /> <path d="m14 15 3-3-3-3" /> <rect x="3" y="3" width="18" height="18" rx="2" /> </svg>',strikethrough:'<svg aria-hidden="true" class="lucide lucide-strikethrough" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M16 4H9a3 3 0 0 0-2.83 4" /> <path d="M14 12a4 4 0 0 1 0 8H6" /> <line x1="4" x2="20" y1="12" y2="12" /> </svg>',subscript:'<svg aria-hidden="true" class="lucide lucide-subscript" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m4 5 8 8" /> <path d="m12 5-8 8" /> <path d="M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" /> </svg>',superscript:'<svg aria-hidden="true" class="lucide lucide-superscript" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m4 19 8-8" /> <path d="m12 19-8-8" /> <path d="M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06" /> </svg>',"table-delete":'<svg aria-hidden="true" class="lucide lucide-table" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 3v18" /> <rect width="18" height="18" x="3" y="3" rx="2" /> <path d="M3 9h18" /> <path d="M3 15h18" /> </svg>',table:'<svg aria-hidden="true" class="lucide lucide-table" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 3v18" /> <rect width="18" height="18" x="3" y="3" rx="2" /> <path d="M3 9h18" /> <path d="M3 15h18" /> </svg>',"trash-2":'<svg aria-hidden="true" class="lucide lucide-trash-2" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M10 11v6" /> <path d="M14 11v6" /> <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" /> <path d="M3 6h18" /> <path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" /> </svg>',type:'<svg aria-hidden="true" class="lucide lucide-type" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 4v16" /> <path d="M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2" /> <path d="M9 20h6" /> </svg>',underline:'<svg aria-hidden="true" class="lucide lucide-underline" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M6 4v6a6 6 0 0 0 12 0V4" /> <line x1="4" x2="20" y1="20" y2="20" /> </svg>',undo:'<svg aria-hidden="true" class="lucide lucide-undo" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M3 7v6h6" /> <path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13" /> </svg>',"upload-image":'<svg aria-hidden="true" class="lucide lucide-image" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="18" height="18" x="3" y="3" rx="2" ry="2" /> <circle cx="9" cy="9" r="2" /> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" /> </svg>',"upload-video":'<svg aria-hidden="true" class="lucide lucide-video" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5" /> <rect x="2" y="6" width="14" height="12" rx="2" /> </svg>',"wrap-text":'<svg aria-hidden="true" class="lucide lucide-wrap-text" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m16 16-3 3 3 3" /> <path d="M3 12h14.5a1 1 0 0 1 0 7H13" /> <path d="M3 19h6" /> <path d="M3 5h18" /> </svg>'},Ba=e=>{const t=document.createElement("span");return t.className="bridgerte__menu-icon-text",t.textContent=e,t},rt=(e,t,n)=>{if(t){e.innerHTML=t;return}e.append(Ba(n))},Ke=()=>{const e=window.getSelection(),t=e!=null&&e.rangeCount?e.getRangeAt(0):null,n=t==null?void 0:t.getBoundingClientRect();return!n||n.width===0&&n.height===0?null:n},Da=160,Oa={toolbarKeys:["bold","italic","underline","strike","inline-code","clear-style","|","color","background-color","font-size","font-family","line-height"]},Ha=()=>{const e=h.$getSelection();return h.$isRangeSelection(e)&&!e.isCollapsed()},At=(e,t)=>e.target instanceof Node&&t.contains(e.target),Bt=e=>e instanceof Element?e.closest(".bridgerte__hoverbar-button"):null,Fa=e=>e.flatMap(t=>t.type==="button"?[t.item]:t.type==="group"?t.items:[]),za=e=>{const t=document.createElement("span");return t.className="bridgerte__hoverbar-separator",t.dataset.separatorId=e.key,t.setAttribute("aria-hidden","true"),t},Wa=(e,t,n)=>{const r=cn(e,t),o=document.createElement("button");return o.type="button",o.className="bridgerte__hoverbar-button",o.dataset.hoverbarItemId=e.id,o.dataset.active=String(r.active),o.disabled=r.disabled,o.setAttribute("aria-label",e.label),o.setAttribute("aria-pressed",String(r.active)),rt(o,n[e.icon]??nt[e.icon],e.label),o},Va=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,executeCommand:o,requestPayloadPanel:a,getCommandStates:s,menuSchema:c,hoverbarConfig:d,menuLabels:l,payloadPanelConfig:p,icons:w={}})=>{const C=Ie(c??z.defaultMenuSchema,{menuLabels:l,payloadPanelConfig:p}),S=z.resolveToolbarMenu(d??Oa,C),b=Fa(S),v=document.createElement("span"),M=document.createElement("div");let g=null,f=!1,E=null;const k=W(M,{targetSelector:".bridgerte__hoverbar-button"});v.className="bridgerte__hoverbar-anchor",v.setAttribute("aria-hidden","true"),M.className="bridgerte__floating-menu bridgerte__hoverbar",M.setAttribute("role","toolbar"),M.setAttribute("aria-label","BridgeRTE hoverbar"),e.append(v,M),g=tt(v,M,{placement:"top",offset:8,strategy:"fixed"});const P=()=>{E&&(window.clearTimeout(E),E=null)},I=()=>{P(),f=!1,M.replaceChildren(),M.dataset.visible="false",g==null||g.setOpen(!1)},N=()=>{const L=Ke(),x=t.getBoundingClientRect();v.style.left=`${(L==null?void 0:L.left)??x.left}px`,v.style.top=`${(L==null?void 0:L.top)??x.top}px`,v.style.width=`${(L==null?void 0:L.width)||1}px`,v.style.height=`${(L==null?void 0:L.height)||1}px`},_=()=>{const L=s();M.replaceChildren(...S.flatMap(x=>x.type==="separator"?[za(x)]:(x.type==="button"?[x.item]:x.items).map(H=>Wa(H,L,w)))),N(),f=!0,M.dataset.visible="true",g==null||g.setOpen(!0),g==null||g.update()},i=()=>r()?!1:n.getEditorState().read(Ha),u=(L=!1)=>{if(P(),!i()){I();return}if(L){_();return}f&&I(),E=window.setTimeout(()=>{E=null,i()&&_()},Da)},m=L=>{const x=b.find(A=>A.id===L.dataset.hoverbarItemId);if(!(!x||L.disabled)){if(x.payloadPanel){const A=L.getBoundingClientRect();a({menuId:x.id,command:x.command,panel:x.payloadPanel,currentValues:ln(x,s()),anchorRect:{x:A.left,y:A.top,width:A.width,height:A.height}}),u(!0);return}o(x.command),u(!0)}},y=L=>{Bt(L.target)&&L.preventDefault()},T=L=>{const x=Bt(L.target);x&&(L.preventDefault(),m(x))},R=L=>{!f||At(L,M)||At(L,t)||I()},$=n.registerCommand(h.SELECTION_CHANGE_COMMAND,()=>(u(),!1),h.COMMAND_PRIORITY_LOW),B=n.registerUpdateListener(()=>{u()}),q=n.registerCommand(h.KEY_ESCAPE_COMMAND,L=>f?(L==null||L.preventDefault(),I(),!0):!1,h.COMMAND_PRIORITY_LOW);return M.addEventListener("pointerdown",y),M.addEventListener("click",T),document.addEventListener("pointerdown",R,!0),()=>{P(),$(),B(),q(),M.removeEventListener("pointerdown",y),M.removeEventListener("click",T),document.removeEventListener("pointerdown",R,!0),k(),g==null||g.destroy(),v.remove(),M.remove()}},qa=e=>e.metaKey||e.ctrlKey,Ua={b:{type:"format.bold"},i:{type:"format.italic"},u:{type:"format.underline"},"\\":{type:"format.clear"}},ja={x:{type:"format.strike"},l:{type:"align",value:"left"},e:{type:"align",value:"center"},r:{type:"align",value:"right"},j:{type:"align",value:"justify"}},Ka={0:{type:"block.paragraph"},1:{type:"block.heading",level:1},2:{type:"block.heading",level:2},3:{type:"block.heading",level:3},4:{type:"block.heading",level:4},5:{type:"block.heading",level:5},6:{type:"block.heading",level:6}},Ga=e=>{const t=e.key.toLowerCase(),n=e.code;if(!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey||!qa(e))return null;if(e.altKey){if(e.shiftKey)return null;if(t==="c"||n==="KeyC")return{type:"block.code"};const r=n.startsWith("Digit")?n.slice(5):t;return Ka[r]??null}return e.shiftKey?t==="z"?{type:"history.redo"}:t==="."||t===">"||n==="Period"?{type:"block.quote"}:t==="7"||t==="&"||n==="Digit7"?{type:"list.ordered"}:t==="8"||t==="*"||n==="Digit8"?{type:"list.unordered"}:t==="9"||t==="("||n==="Digit9"?{type:"list.todo"}:t==="-"||t==="_"||n==="Minus"?{type:"block.divider"}:ja[t]??null:t==="z"?{type:"history.undo"}:t==="y"&&e.ctrlKey&&!e.metaKey?{type:"history.redo"}:t==="`"||t==="~"||n==="Backquote"?{type:"format.inlineCode"}:Ua[t]??null},Ya=({target:e,isReadonly:t,executeCommand:n})=>{const r=o=>{if(t())return;const a=Ga(o);a&&(o.preventDefault(),n(a))};return e.addEventListener("keydown",r),()=>{e.removeEventListener("keydown",r)}},Xa=(e,t)=>{const n=t.offsetTop,r=n+t.offsetHeight,o=e.scrollTop,a=o+e.clientHeight;if(n<o){e.scrollTop=n;return}r>a&&(e.scrollTop=r-e.clientHeight)},ot=(e,t)=>{var n;if(e instanceof Text&&t<=(((n=e.textContent)==null?void 0:n.length)??0))return e;for(const r of Array.from((e==null?void 0:e.childNodes)??[])){const o=ot(r,t);if(o)return o}return null},vn=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,menu:o,anchor:a,itemSelector:s,getCurrentTrigger:c,getTriggerRect:d,resolveItems:l,renderItem:p,renderStatus:w,onStateChange:C,onSelect:S})=>{let b=null,v=0;const M=W(o,{targetSelector:s}),g=tt(a,o,{placement:"bottom-start",offset:2,strategy:"fixed"});e.append(a,o);const f=()=>{const x=b?d(b.trigger)??Ke():Ke(),A=t.getBoundingClientRect();return x??A},E=()=>{const x=f();a.style.left=`${x.left}px`,a.style.top=`${x.top}px`,a.style.height=`${x.height||1}px`},k=(x=!0)=>{b=null,o.dataset.visible="false",x&&o.replaceChildren(),g.setOpen(!1)},P=()=>{const x=o.querySelector(`${s}[data-active="true"]`);x&&Xa(o,x)},I=(x,A)=>{!b||b.requestId!==A.requestId||(k(),S(x,A.trigger))},N=()=>{if(!b){k();return}const x=b,A=f();if((C==null?void 0:C(x,{anchorRect:A,close:k,selectItem:re=>I(re,x)}))===!0){o.replaceChildren(),o.dataset.visible="false",g.setOpen(!1);return}if(x.status==="success")o.replaceChildren(...x.items.map((re,lt)=>p(re,lt,lt===x.activeIndex)));else{const re=w==null?void 0:w(x.status,x.trigger.query,x.error);o.replaceChildren(...re?[re]:[])}const X=o.children.length>0;o.dataset.visible=String(X),E(),g.setOpen(X),P(),g.update()},_=async(x,A)=>{let H;try{H=await Promise.resolve(l(x))}catch(X){(b==null?void 0:b.requestId)===A&&(b={...b,items:[],activeIndex:0,status:"error",error:X},N());return}!b||A!==b.requestId||(b={...b,items:H,activeIndex:Math.min(b.activeIndex,Math.max(H.length-1,0)),status:H.length>0?"success":"empty",error:void 0},N())},i=()=>{if(r()){k();return}const x=n.getEditorState().read(c);if(!x){k(!1);return}v+=1,b={trigger:x,items:[],activeIndex:0,requestId:v,status:"loading",error:void 0},N(),_(x.query,v)},u=()=>{if(!b||b.status!=="success")return!1;const x=b.items[b.activeIndex],A=b.trigger;return x?(k(),S(x,A),!0):!1},m=x=>!b||b.status!=="success"||b.items.length===0?!1:(b={...b,activeIndex:(b.activeIndex+x+b.items.length)%b.items.length},N(),!0),y=x=>{const A=x.target,H=A instanceof HTMLElement?A.closest(s):null,X=H!=null&&H.dataset.index?Number.parseInt(H.dataset.index,10):Number.NaN;!b||b.status!=="success"||Number.isNaN(X)||(b={...b,activeIndex:X},x.preventDefault(),u())},T=x=>{const A=x.target;A instanceof HTMLElement&&A.closest(s)&&x.preventDefault()},R=n.registerUpdateListener(()=>{i()}),$=n.registerCommand(h.KEY_ARROW_DOWN_COMMAND,x=>m(1)?(x==null||x.preventDefault(),!0):!1,h.COMMAND_PRIORITY_LOW),B=n.registerCommand(h.KEY_ARROW_UP_COMMAND,x=>m(-1)?(x==null||x.preventDefault(),!0):!1,h.COMMAND_PRIORITY_LOW),q=n.registerCommand(h.KEY_ENTER_COMMAND,x=>u()?(x==null||x.preventDefault(),!0):!1,h.COMMAND_PRIORITY_LOW),L=n.registerCommand(h.KEY_ESCAPE_COMMAND,x=>b?(x==null||x.preventDefault(),k(),!0):!1,h.COMMAND_PRIORITY_LOW);return o.addEventListener("click",y),o.addEventListener("pointerdown",T),{close:k,destroy(){R(),$(),B(),q(),L(),o.removeEventListener("click",y),o.removeEventListener("pointerdown",T),M(),g.destroy(),a.remove(),o.remove()}}},Ja={labelField:"label",descriptionField:"description",avatarField:"avatar",iconField:"data.icon",showAvatar:!0,showIcon:!0,showDescription:!0,loadingText:"加载中",emptyText:"没有匹配的提及",errorText:"提及加载失败"},Qa=e=>({...Ja,...e}),Za=(e,t)=>{var o;const n=t.slice(5),r=(o=e.data)==null?void 0:o[n];return typeof r=="string"&&r?r:void 0},Me=(e,t)=>{if(t.startsWith("data."))return Za(e,t);const n=t==="id"?e.id:t==="label"?e.label:t==="value"?e.value:t==="avatar"?e.avatar:e.description;return typeof n=="string"&&n?n:void 0},es=e=>e.startsWith("@")?e:`@${e}`,wn=(e,t)=>{const n=Me(e,t.labelField)??e.label??e.value??e.id,r=t.showDescription?Me(e,t.descriptionField)??e.description:void 0,o=t.showAvatar?Me(e,t.avatarField)??e.avatar:void 0,a=t.showIcon&&!o?Me(e,t.iconField):void 0;return{item:e,label:es(n),...r?{description:r}:{},...o?{avatar:o}:{},...a?{icon:a}:{}}},ts=(e,t)=>e.map(n=>wn(n,t)),Ge=e=>e instanceof h.TextNode&&e.getTextContent().startsWith(" "),ns=e=>{const n=e.getTextContent().slice(1);if(!n){e.remove();return}e.setTextContent(n)},rs=(e,t)=>{const n=e.getPreviousSibling(),r=e.getNextSibling(),o=Ge(r)?r.getNextSibling():r;if(Ge(r)&&ns(r),e.remove(),t){n==null||n.selectEnd();return}o==null||o.selectStart()},os=e=>{const t=h.$getSelection();if(!h.$isRangeSelection(t)||!t.isCollapsed())return null;const n=t.anchor,r=n.getNode();if(ft(r))return r;if(!(r instanceof h.TextNode))return null;const o=r.getTextContentSize(),a=r.getPreviousSibling(),s=r.getNextSibling(),c=Ge(r)&&n.offset===1,d=e?n.offset===0||c?a:null:n.offset===o?s:null;return ft(d)?d:null},as=(e,t,n)=>{const r=a=>{if(t())return!1;const s=os(a);return s?(rs(s,a),n(),!0):!1},o=(a,s)=>{const c=r(s);return c&&a.preventDefault(),c};return[e.registerCommand(h.KEY_BACKSPACE_COMMAND,a=>o(a,!0),h.COMMAND_PRIORITY_HIGH),e.registerCommand(h.KEY_DELETE_COMMAND,a=>o(a,!1),h.COMMAND_PRIORITY_HIGH),e.registerCommand(h.DELETE_CHARACTER_COMMAND,a=>r(a),h.COMMAND_PRIORITY_HIGH)]},ss=/(?:^|\s)@([\p{L}\p{N}_-]*)$/u,Dt=[{id:"bridgerte-team",label:"BridgeRTE Team",value:"bridgerte-team"},{id:"frontend",label:"Frontend",value:"frontend"},{id:"designer",label:"Designer",value:"designer"}],is=e=>e.trim().toLowerCase(),ls=e=>[e.label,e.value,e.description].filter(Boolean).join(" ").toLowerCase(),cs=e=>{const t=is(e);return t?Dt.filter(n=>ls(n).includes(t)):Dt},ds=()=>{const e=h.$getSelection();if(!h.$isRangeSelection(e)||!e.isCollapsed())return null;const t=e.anchor,n=t.getNode();if(!(n instanceof h.TextNode))return null;const o=n.getTextContent().slice(0,t.offset).match(ss);if(!o)return null;const a=o[1]??"",s=o[0]??"",c=s.startsWith("@")?0:1,d=t.offset-s.length+c;return{query:a,nodeKey:n.getKey(),startOffset:d,endOffset:t.offset}},us=()=>{const e=document.createElement("div");return e.className="bridgerte__floating-menu bridgerte__mention-menu",e.dataset.visible="false",e},gs=()=>{const e=document.createElement("span");return e.className="bridgerte__mention-anchor",e.setAttribute("aria-hidden","true"),e},ms=(e,t)=>{var s;const n=e.getElementByKey(t.nodeKey),r=ot(n,t.startOffset+1);if(!(r instanceof Text))return null;const o=document.createRange(),a=Math.min(t.startOffset+1,((s=r.textContent)==null?void 0:s.length)??0);return a<=t.startOffset?null:(o.setStart(r,t.startOffset),o.setEnd(r,a),o.getBoundingClientRect())},hs=(e,t,n)=>{const r=document.createElement("button"),o=document.createElement("span");if(r.type="button",r.className="bridgerte__menu-item bridgerte__mention-item",r.dataset.mentionId=e.item.id,r.dataset.index=String(t),r.dataset.active=String(n),e.avatar){const a=document.createElement("img");a.className="bridgerte__mention-item-avatar",a.src=e.avatar,a.alt="",a.setAttribute("aria-hidden","true"),r.append(a)}else if(e.icon){const a=document.createElement("span");a.className="bridgerte__mention-item-icon",a.setAttribute("aria-hidden","true"),a.textContent=e.icon,r.append(a)}if(o.className="bridgerte__mention-item-title",o.textContent=e.label,r.append(o),e.description){const a=document.createElement("span");a.className="bridgerte__mention-item-description",a.textContent=e.description,r.append(a)}return r},ps=(e,t)=>{const n=document.createElement("div");return n.className="bridgerte__mention-status",n.dataset.status=e,n.textContent=t,n},fs=(e,t)=>{switch(e){case"loading":return t.loadingText;case"empty":return t.emptyText;case"error":return t.errorText}},bs=e=>e?{x:e.x,y:e.y,width:e.width,height:e.height}:void 0,ys=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,executeCommand:o,mentionProvider:a,mentionMenuConfig:s,onMentionMenuRequest:c})=>{const d=us(),l=gs(),p=Qa(s),w=(b,v)=>{n.update(()=>{const M=h.$getNodeByKey(v.nodeKey);M instanceof h.TextNode&&(M.spliceText(v.startOffset,v.endOffset-v.startOffset,""),M.select(v.startOffset,v.startOffset))}),o({type:"mention.insert",item:b})},C=vn({editorRoot:e,contentElement:t,editor:n,isReadonly:r,menu:d,anchor:l,itemSelector:".bridgerte__mention-item",getCurrentTrigger:ds,getTriggerRect:b=>ms(n,b),resolveItems:async b=>{const v=await Promise.resolve(a?a(b):cs(b));return ts(v,p)},renderItem:hs,renderStatus:b=>ps(b,fs(b,p)),onStateChange:c?(b,v)=>c({id:`bridgerte-mention-menu-${b.requestId}`,query:b.trigger.query,status:b.status,items:b.items,config:p,readonly:r(),anchorRect:bs(v.anchorRect),...b.error?{error:b.error}:{},submit:M=>v.selectItem(wn(M,p)),cancel:v.close}):void 0,onSelect:(b,v)=>w(b.item,v)}),S=h.mergeRegister(...as(n,r,()=>C.close(!1)));return()=>{S(),C.destroy()}},vs=["script","style","iframe","object","embed","meta","link","xml","svg","math","canvas","form","input","button","select","textarea"].join(","),ws=[".bridgerte__code-header",".bridgerte__code-block-control",".bridgerte__code-block-controls-layer",".bridgerte__code-block-menu",".bridgerte__table-controls-layer",".bridgerte__table-controls",".bridgerte__media-controls-layer",".bridgerte__media-controls",".bridgerte__dialog-backdrop",".bridgerte__dialog",".bridgerte__payload-panel",'[data-bridgerte-clipboard-ui="true"]'].join(","),Cs=new Set(["A","B","BLOCKQUOTE","BR","CODE","DEL","DIV","EM","H1","H2","H3","H4","H5","H6","FONT","I","LI","OL","P","PRE","S","SPAN","STRIKE","STRONG","SUB","SUP","TABLE","TBODY","TFOOT","TD","TH","THEAD","TR","TT","U","UL"]),_s=new Set(["http:","https:","mailto:"]),ks="p,div,blockquote,pre,h1,h2,h3,h4,h5,h6,ul,ol,table",Es="p,blockquote,pre,h1,h2,h3,h4,h5,h6,ul,ol,table",xs=new Set(["colspan","rowspan"]),Ms=new Set(["TD","TH"]),Ts=new Set(["M","O","V","W"]),Ss=new Set(["SPAN"]),Ns=new Set(["color","background-color"]),Ls=/^#([\da-f]{3}|[\da-f]{6}|[\da-f]{8})$/i,Ot=new Map([["B","strong"],["DEL","s"],["I","em"],["STRIKE","s"],["TT","code"]]),Rs=e=>{try{const t=new URL(e,window.location.href);return _s.has(t.protocol)}catch{return!1}},at=e=>{e.replaceWith(...e.childNodes)},st=(e,t)=>{const n=e.ownerDocument.createElement(t);return n.append(...e.childNodes),e.replaceWith(n),n},Ps=e=>{const t=e.tagName.split(":")[0]??"";return e.tagName.includes(":")&&Ts.has(t)},Cn=e=>{[...e.childNodes].forEach(t=>{if(t.nodeType===Node.COMMENT_NODE){t.remove();return}Cn(t)})},_n=e=>{[...e.childNodes].forEach(t=>{if(t.nodeType===Node.TEXT_NODE){const n=t.parentElement,r=!!(n!=null&&n.closest("pre,code,textarea")),o=(t.textContent??"").replace(/[\u200B-\u200D\uFEFF]/g,"").replace(/\u00A0/g,r?" ":" ");if(r){t.textContent=o;return}let a=o.replace(/\s+/g," ");t.previousSibling||(a=a.trimStart()),t.nextSibling||(a=a.trimEnd()),t.textContent=a;return}_n(t)})},Is=e=>/^[1-9]\d*$/.test(e.trim()),it=e=>{const t=e.trim().toLowerCase(),[,n]=t.match(Ls)??[];return n?n.length===8?`#${n.slice(2)}`:t:null},$s=(e,t)=>{if(!Ss.has(e))return null;const n=t.split(";").flatMap(r=>{const[o,...a]=r.split(":"),s=o==null?void 0:o.trim().toLowerCase(),c=it(a.join(":"));return!s||!c||!Ns.has(s)?[]:[`${s}: ${c}`]});return n.length>0?`${n.join("; ")};`:null},As=e=>{if(Ps(e)){e.remove();return}if(!Cs.has(e.tagName)){at(e);return}[...e.attributes].forEach(t=>{const n=t.name.toLowerCase();if(n.startsWith("on")){e.removeAttribute(t.name);return}if(n==="style"){const r=$s(e.tagName,t.value);if(r){e.setAttribute(t.name,r);return}e.removeAttribute(t.name);return}if(e.tagName==="A"&&n==="href"){if(Rs(t.value))return;e.removeAttribute(t.name);return}if(!(e.tagName==="A"&&["target","rel","title"].includes(n))){if(e.tagName==="PRE"&&n===Pe){const r=ne(t.value);if(r){e.setAttribute(t.name,r);return}e.removeAttribute(t.name);return}if(e.tagName==="FONT"&&n==="color"){if(it(t.value))return;e.removeAttribute(t.name);return}Ms.has(e.tagName)&&xs.has(n)&&Is(t.value)||e.removeAttribute(t.name)}})},Bs=e=>{[...e.querySelectorAll("font")].forEach(t=>{const n=t.getAttribute("color"),r=n?it(n):null,o=st(t,"span");r&&o.setAttribute("style",`color: ${r};`)})},Ds=e=>{[...e.querySelectorAll([...Ot.keys()].join(","))].forEach(t=>{const n=Ot.get(t.tagName);n&&st(t,n)})},Os=e=>{[...e.querySelectorAll("div")].reverse().forEach(t=>{if(t.querySelector(Es)){at(t);return}st(t,"p")})},Hs=e=>{[...e.querySelectorAll("span")].forEach(t=>{t.attributes.length===0&&at(t)})},Fs=e=>!["P","DIV","SPAN"].includes(e.tagName)||e.querySelector("br,table,ul,ol")?!1:!(e.textContent??"").trim(),Ht=e=>{[...e.querySelectorAll("p,div,span")].reverse().forEach(t=>{Fs(t)&&t.remove()})},zs=e=>{var t;return e.nodeType===Node.TEXT_NODE?!!((t=e.textContent)!=null&&t.trim()):e.nodeType!==Node.ELEMENT_NODE?!1:!e.matches(ks)},Ws=e=>{let t=[];const n=()=>{if(t.length===0)return;const r=e.ownerDocument.createElement("p"),o=t[0];o&&(e.insertBefore(r,o),t.forEach(a=>{r.append(a)}),t=[])};[...e.childNodes].forEach(r=>{var o;if(r.nodeType===Node.TEXT_NODE&&!((o=r.textContent)!=null&&o.trim())){r.remove();return}if(zs(r)){t.push(r);return}n()}),n()},Vs=e=>{const t=document.createElement("template");t.innerHTML=e,t.content.querySelectorAll(vs).forEach(r=>{r.remove()}),t.content.querySelectorAll(ws).forEach(r=>{r.remove()}),Cn(t.content),Yr(t.content),[...t.content.querySelectorAll("*")].forEach(As),_n(t.content),Bs(t.content),Ds(t.content),Os(t.content),Hs(t.content),Ht(t.content);const n=document.createElement("div");return n.append(t.content.cloneNode(!0)),Ws(n),Ht(n),n.innerHTML},qs=/^https?:\/\/[^\s<>"']+\.[^\s<>"']+$/i,Us=/^www\.[^\s<>"']+\.[^\s<>"']+$/i,js=new RegExp(`^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+(?:/[^\\s<>"']*)?$`,"i"),Ks=/^[^\s@]+@[^\s@]+\.[^\s@]+$/i,Gs=/^\s*```([a-z0-9_+#.-]+)\s*\n([\s\S]*?)\n?```\s*$/i,Ys=e=>e.type.startsWith("image/")?"image":e.type.startsWith("video/")?"video":null,kn=e=>e?[...e].flatMap(t=>{const n=Ys(t);return n?[{type:n,file:t}]:[]}):[],$e=e=>({text:(e==null?void 0:e.getData("text/plain"))??"",html:(e==null?void 0:e.getData("text/html"))??"",files:e!=null&&e.files?[...e.files]:[]}),Xs=e=>({name:e.name,mimeType:e.type||void 0,size:e.size,data:e}),Js=e=>{const[,t,n]=e.replace(/\r\n/g,`
3
- `).match(Gs)??[],r=ne(t);return n!==void 0&&r!==null?{code:n,language:r}:null},Qs=e=>{const t=e.trim();return!t||/\s/.test(t)||t.includes("<")||t.includes(">")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!/^https?:\/\//i.test(t)||Ks.test(t)?!1:qs.test(t)||Us.test(t)||js.test(t)},En=(e,{isReadonly:t,executeCommand:n})=>t()||!Qs(e.text)?!1:(n({type:"link.set",href:e.text.trim()}),!0),Ye=(e,{isReadonly:t,canUploadMedia:n,uploadMediaFile:r})=>{if(t()||!n())return!1;const o=kn(e.files);return o.length===0?!1:(o.forEach(({type:a,file:s})=>{r(a,s)}),!0)},Zs=(e,t)=>{const r=new DOMParser().parseFromString(t,"text/html");Xr(r.body);const o=Xe.$generateNodesFromDOM(e,r);return Jr(o,r.body),o},ei=(e,t)=>{const n=Zs(e,t);if(n.length===0)return!1;if(h.$getSelection()||h.$getRoot().selectEnd(),n.some(O.$isCodeNode)){n.forEach(o=>{Re.$insertNodeToNearestRoot(o)});const r=n[n.length-1];return r&&O.$isCodeNode(r)&&h.$insertNodes([h.$createParagraphNode()]),!0}return h.$insertNodes(n),!0},ti=(e,{editor:t,isReadonly:n})=>{if(n())return!1;if(!e.html.trim())return ri(e,{editor:t,isReadonly:n});const r=Vs(e.html);return r.trim()?(t.update(()=>{ei(t,r)}),!0):!1},ni=(e,{editor:t,isReadonly:n})=>{if(n()||e.html.trim()||!e.text.trim())return!1;const r=Js(e.text);return r?(t.update(()=>{const o=en(r.language||void 0),a=h.$createParagraphNode();h.$getSelection()||h.$getRoot().selectEnd(),o.append(h.$createTextNode(r.code)),Re.$insertNodeToNearestRoot(o),h.$insertNodes([a]),a.selectStart()}),!0):!1},ri=(e,{editor:t,isReadonly:n})=>n()||e.html.trim()||!e.text?!1:(t.update(()=>{h.$getSelection()||h.$getRoot().selectEnd(),h.$insertNodes([h.$createTextNode(e.text)])}),!0),xn=(e,t)=>ni(e,t)||ti(e,t),ee=e=>{e.preventDefault(),e.stopImmediatePropagation()},oi=(e,t)=>Ye(e,t)||En(e,t)||xn(e,t),ai=e=>{const t=n=>{n.defaultPrevented||En($e(n.clipboardData),e)&&ee(n)};return e.target.addEventListener("paste",t,{capture:!0}),()=>{e.target.removeEventListener("paste",t,{capture:!0})}},si=e=>{const t=o=>{o.defaultPrevented||Ye($e(o.clipboardData),e)&&ee(o)},n=o=>{var s;if(e.isReadonly()||!e.canUploadMedia())return;const a=(s=o.dataTransfer)!=null&&s.files?[...o.dataTransfer.files]:[];kn(a).length!==0&&(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="copy"))},r=o=>{var s;const a={files:(s=o.dataTransfer)!=null&&s.files?[...o.dataTransfer.files]:[]};Ye(a,e)&&ee(o)};return e.target.addEventListener("paste",t,{capture:!0}),e.target.addEventListener("dragover",n),e.target.addEventListener("drop",r),()=>{e.target.removeEventListener("paste",t,{capture:!0}),e.target.removeEventListener("dragover",n),e.target.removeEventListener("drop",r)}},ii=e=>{const t=n=>{n.defaultPrevented||!xn($e(n.clipboardData),e)||ee(n)};return e.target.addEventListener("paste",t,{capture:!0}),()=>{e.target.removeEventListener("paste",t,{capture:!0})}},li=({target:e,isReadonly:t,onPaste:n,canUploadMedia:r,uploadMediaFile:o,executeCommand:a,editor:s})=>{const c=(l,p)=>oi({text:p.text??l.text,html:p.html??l.html,files:l.files},{isReadonly:t,canUploadMedia:r,uploadMediaFile:o,executeCommand:a,editor:s}),d=l=>{if(t()||!n)return;const p=$e(l.clipboardData),w=n({text:p.text,html:p.html,files:p.files.map(Xs)});if(w instanceof Promise){ee(l),w.then(C=>{C!==!0&&C&&c(p,C)});return}if(w===!0){ee(l);return}w&&(ee(l),c(p,w))};return e.addEventListener("paste",d,{capture:!0}),()=>{e.removeEventListener("paste",d,{capture:!0})}},ci=["paragraph","heading-1","heading-2","heading-3","quote","code-block","ordered-list","unordered-list","todo-list","divider","upload-image","upload-video","table"],di={showIcon:!0,loadingText:"加载中",emptyText:"没有匹配的命令",errorText:"命令加载失败"},ui=e=>({...di,...e}),gi=e=>e.flatMap(t=>t.type==="button"?[t.item]:t.type==="group"?t.items:[]),mi=e=>({...e,toolbarKeys:(e==null?void 0:e.toolbarKeys)??ci}),hi=e=>({id:e.id,label:e.label,command:e.command,icon:e.icon,requiresPayload:e.requiresPayload,payloadPanel:e.payloadPanel,source:"schema"}),pi=(e,t)=>gi(z.resolveToolbarMenu(mi(t),e)).map(hi),Mn=e=>({...e,source:"provider"}),fi=/(?:^|\s)\/([\p{L}\p{N}_-]*)$/u,bi=e=>e.trim().toLowerCase(),yi=e=>[e.label,e.id,e.description,...e.keywords??[]].filter(Boolean).join(" ").toLowerCase(),vi=(e,t)=>{const n=bi(t);return n?e.filter(r=>yi(r).includes(n)):e},wi=async(e,t)=>(await Promise.resolve((t==null?void 0:t(e))??[])).map(Mn),Ci=e=>"source"in e?e:Mn(e),_i=({menuSchema:e,slashCommandConfig:t})=>e!==void 0||t!==void 0,ki=()=>{const e=h.$getSelection();if(!h.$isRangeSelection(e)||!e.isCollapsed())return null;const t=e.anchor,n=t.getNode();if(!(n instanceof h.TextNode))return null;const o=n.getTextContent().slice(0,t.offset).match(fi);if(!o)return null;const a=o[1]??"",s=o[0]??"",c=s.startsWith("/")?0:1,d=t.offset-s.length+c;return{query:a,nodeKey:n.getKey(),startOffset:d,endOffset:t.offset}},Ei=()=>{const e=document.createElement("div");return e.className="bridgerte__floating-menu bridgerte__slash-command-menu",e.dataset.visible="false",e},xi=()=>{const e=document.createElement("span");return e.className="bridgerte__slash-command-anchor",e.setAttribute("aria-hidden","true"),e},Ft=(e,t)=>{var s;const n=e.getElementByKey(t.nodeKey),r=ot(n,t.startOffset+1);if(!(r instanceof Text))return null;const o=document.createRange(),a=Math.min(t.startOffset+1,((s=r.textContent)==null?void 0:s.length)??0);return a<=t.startOffset?null:(o.setStart(r,t.startOffset),o.setEnd(r,a),o.getBoundingClientRect())},Mi=(e,t,n,r,o)=>{const a=document.createElement("button"),s=document.createElement("span");if(a.type="button",a.className="bridgerte__menu-item bridgerte__slash-command-item",a.dataset.commandId=e.id,a.dataset.index=String(t),a.dataset.active=String(n),r.showIcon&&e.icon){const c=document.createElement("span");c.className="bridgerte__slash-command-item-icon",c.setAttribute("aria-hidden","true"),rt(c,o[e.icon]??nt[e.icon],e.label),a.append(c)}if(s.className="bridgerte__slash-command-item-title",s.textContent=e.label,a.append(s),e.description){const c=document.createElement("span");c.className="bridgerte__slash-command-item-description",c.textContent=e.description,a.append(c)}return a},Ti=(e,t)=>{const n=document.createElement("div");return n.className="bridgerte__slash-command-status",n.dataset.status=e,n.textContent=t,n},Si=(e,t)=>{switch(e){case"loading":return t.loadingText;case"empty":return t.emptyText;case"error":return t.errorText}},zt=e=>e?{x:e.x,y:e.y,width:e.width,height:e.height}:void 0,Ni=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,executeCommand:o,requestPayloadPanel:a,menuSchema:s,slashCommandConfig:c,icons:d={},menuLabels:l,payloadPanelConfig:p,slashCommandMenuConfig:w,onSlashCommandMenuRequest:C,slashCommandProvider:S})=>{const b=Ei(),v=xi(),M=ui(w),g=Ie(s??z.defaultMenuSchema,{menuLabels:l,payloadPanelConfig:p}),f=pi(g,c),E=new Map(g.map(i=>[i.id,i])),k=_i({menuSchema:s,slashCommandConfig:c}),P=i=>{n.update(()=>{const u=h.$getNodeByKey(i.nodeKey);u instanceof h.TextNode&&(u.spliceText(i.startOffset,i.endOffset-i.startOffset,""),u.select(i.startOffset,i.startOffset))})};return vn({editorRoot:e,contentElement:t,editor:n,isReadonly:r,menu:b,anchor:v,itemSelector:".bridgerte__slash-command-item",getCurrentTrigger:ki,getTriggerRect:i=>Ft(n,i),resolveItems:async i=>{const u=k||!S?vi(f,i):[];try{const m=await wi(i,S);return[...u,...m]}catch(m){if(u.length>0)return u;throw m}},renderItem:(i,u,m)=>Mi(i,u,m,M,d),renderStatus:i=>Ti(i,Si(i,M)),onStateChange:C?(i,u)=>C({id:`bridgerte-slash-command-menu-${i.requestId}`,query:i.trigger.query,status:i.status,items:i.items,config:M,readonly:r(),anchorRect:zt(u.anchorRect),...i.error?{error:i.error}:{},submit:m=>u.selectItem(Ci(m)),cancel:u.close}):void 0,onSelect:(i,u)=>{P(u);const m=i.source==="schema"?E.get(i.id):void 0;if(m!=null&&m.payloadPanel){const y=Ft(n,u);a({menuId:m.id,command:m.command,panel:m.payloadPanel,anchorRect:zt(y??void 0)});return}o(i.command)}}).destroy},Wt=32,He=e=>{var t;return e instanceof HTMLElement&&e.getAttribute("role")==="checkbox"&&((t=e.parentElement)==null?void 0:t.classList.contains("bridgerte__list--todo"))===!0},Fe=e=>e instanceof HTMLElement?e.closest('[role="checkbox"]'):null,Li=e=>h.$getNearestNodeFromDOMNode(e),Vt=e=>e.button===0,ze=(e,t)=>{const n=t.getBoundingClientRect();return t.dir==="rtl"?e.clientX>=n.right-Wt&&e.clientX<=n.right:e.clientX>=n.left&&e.clientX<=n.left+Wt},qt=e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()},Ri=({contentElement:e,editor:t,isReadonly:n})=>{let r=0;const o=d=>{if(n()||!Vt(d))return;const l=Fe(d.target);!l||!He(l)||ze(d,l)&&qt(d)},a=(d,l)=>{qt(d),t.update(()=>{const p=Li(l);V.$isListItemNode(p)&&p.toggleChecked()})},s=d=>{if(n()||!Vt(d)||Date.now()-r<700)return;const l=Fe(d.target);!l||!He(l)||ze(d,l)&&a(d,l)},c=d=>{if(n()||d.pointerType!=="touch")return;const l=Fe(d.target);!l||!He(l)||ze(d,l)&&(r=Date.now(),a(d,l))};return e.addEventListener("pointerdown",o,!0),e.addEventListener("pointerup",c,!0),e.addEventListener("click",s,!0),()=>{e.removeEventListener("pointerdown",o,!0),e.removeEventListener("pointerup",c,!0),e.removeEventListener("click",s,!0)}},We=(e,t)=>{var n;return((n=e.floatingMenus)==null?void 0:n[t])!==!1},Pi=({options:e,lexicalEditor:t,editorRoot:n,contentElement:r,historyState:o,isReadonly:a,executeCommand:s,requestPayloadPanel:c,uploadMediaFile:d,canUploadMedia:l,syncAfterEditorUpdate:p,refreshCommandStates:w,getCommandStates:C,setCanUndo:S,setCanRedo:b,enableKeyboardShortcuts:v})=>{const M=We(e,"mention"),g=We(e,"slash"),f=We(e,"hoverbar"),E=h.mergeRegister(li({target:r,isReadonly:a,onPaste:e.onPaste,canUploadMedia:l,uploadMediaFile:d,executeCommand:s,editor:t}),si({target:r,isReadonly:a,canUploadMedia:l,uploadMediaFile:d}),ai({target:r,isReadonly:a,executeCommand:s}),ii({target:r,editor:t,isReadonly:a}),$a({target:r,isReadonly:a}),te.registerRichText(t),U.registerCodeHighlighting(t,eo),Ut.registerHistory(t,o,Ar),V.registerList(t),V.registerCheckList(t),Ri({contentElement:r,editor:t,isReadonly:a}),M?ys({editorRoot:n,contentElement:r,editor:t,isReadonly:a,executeCommand:s,mentionProvider:e.mentionProvider,mentionMenuConfig:e.mentionMenuConfig,onMentionMenuRequest:e.onMentionMenuRequest}):()=>{},f?Va({editorRoot:n,contentElement:r,editor:t,isReadonly:a,executeCommand:s,requestPayloadPanel:c,getCommandStates:C,menuSchema:e.menuSchema,hoverbarConfig:e.hoverbarConfig,icons:e.icons,menuLabels:e.menuLabels,payloadPanelConfig:e.payloadPanelConfig}):()=>{},D.registerTablePlugin(t),Na({editor:t}),g?Ni({editorRoot:n,contentElement:r,editor:t,isReadonly:a,executeCommand:s,requestPayloadPanel:c,menuSchema:e.menuSchema,slashCommandConfig:e.slashCommandConfig,icons:e.icons,menuLabels:e.menuLabels,payloadPanelConfig:e.payloadPanelConfig,slashCommandMenuConfig:e.slashCommandMenuConfig,onSlashCommandMenuRequest:e.onSlashCommandMenuRequest,slashCommandProvider:e.slashCommandProvider}):()=>{},Kn({editor:t,contentElement:r,isReadonly:a}),v?Ya({target:r,isReadonly:a,executeCommand:s}):()=>{},t.registerUpdateListener(()=>{p(),w()}),t.registerCommand(h.SELECTION_CHANGE_COMMAND,()=>(w(),!1),h.COMMAND_PRIORITY_LOW),t.registerCommand(h.CAN_UNDO_COMMAND,k=>(S(k),!1),h.COMMAND_PRIORITY_LOW),t.registerCommand(h.CAN_REDO_COMMAND,k=>(b(k),!1),h.COMMAND_PRIORITY_LOW));return{destroy(){E()}}};function Tn(e,t={}){const n=Ut.createEmptyHistoryState(),r=t.mediaDefaultWidthPercent??50,{contentElement:o}=Ea(e,{placeholder:t.placeholder??qn}),a=t.keyboardShortcuts===!0;let s=t.readonly??!1,c=!1,d=Ve(t.value);const l=h.createEditor({namespace:Br,editable:!s,nodes:[te.HeadingNode,te.QuoteNode,O.CodeNode,O.CodeHighlightNode,V.ListNode,V.ListItemNode,D.TableNode,D.TableRowNode,D.TableCellNode,F.LinkNode,F.AutoLinkNode,pe,ce,ye],theme:Cr,onError:i=>{j(t,"lexical.runtime","Lexical runtime error.",i)}});D.setScrollableTablesActive(l,!0);const p=()=>c,w=()=>s,C=()=>{p()||jn({editor:l,contentElement:o})},S=xa({editor:l}),b=Dr({lexicalEditor:l,options:t,isDestroyed:p,setContent:i=>{d=i},syncPlaceholder:C}),v=ur({lexicalEditor:l,options:t,isDestroyed:p,canUploadMedia:()=>t.uploadAdapter!==void 0,isReadonly:w}),M=$r({container:e,lexicalEditor:l,options:t,isDestroyed:p,isReadonly:w,reportError:j}),g=()=>{o.contentEditable=String(!s),l.setEditable(!s)},E=ka({editorRoot:e,lexicalEditor:l,isReadonly:w,restoreEditorFocus:i=>{S.restore(),l.focus(i)},executeCommand:M,getClearCommand:i=>{switch(i.command.type){case"format.color":case"format.backgroundColor":case"format.fontSize":case"format.fontFamily":case"format.lineHeight":return{...i.command,value:""};default:return null}},codeBlockLanguagePanel:t.codeBlockLanguagePanel,payloadPanelConfig:t.payloadPanelConfig,mediaControlsConfig:t.mediaControlsConfig,menuLabels:t.menuLabels,onRequest:t.onPayloadPanelRequest,defaultMediaWidthPercent:r}),k=()=>lr(t),P=()=>cr(t),I=i=>{p()||(S.capture(),E.payloadPanelController.open(i))};e.dataset.readonly=String(s),e.addEventListener("focusin",k),e.addEventListener("focusout",P),e.style.setProperty("--bridgerte-media-display-width",`${r}%`);const N=Pi({options:t,lexicalEditor:l,editorRoot:e,contentElement:o,historyState:n,isReadonly:w,executeCommand:M,requestPayloadPanel:I,uploadMediaFile:M.uploadMediaFile,canUploadMedia:()=>t.uploadAdapter!==void 0,syncAfterEditorUpdate:b.syncAfterEditorUpdate,refreshCommandStates:v.refreshCommandStates,getCommandStates:v.getCommandStates,setCanUndo:v.setCanUndo,setCanRedo:v.setCanRedo,enableKeyboardShortcuts:a});l.setRootElement(o),b.suppressNextChange(),d=Fn(l,t.value),g();const _={getContent(){return p()||(b.clearContentChangeTimer(),b.syncContent(!1)),d},setContent(i){p()||(b.clearContentChangeTimer(),d=Ve(i),b.suppressNextChange(),Jt(l,d),b.enforceCurrentMaxLength(),C(),l.dispatchCommand(h.CLEAR_HISTORY_COMMAND,void 0),v.setHistoryAvailability(!1,!1),b.syncContent(!0))},executeCommand(i){M(i)},requestPayloadPanel:I,getCommandStates:v.getCommandStates,subscribeCommandStateChange:v.subscribeCommandStateChange,setReadonly(i){p()||(s=i,e.dataset.readonly=String(s),g(),v.refreshCommandStates())},focus(){p()||l.focus()},blur(){p()||o.blur()},destroy(){p()||(c=!0,b.clearContentChangeTimer(),E.destroy(),M.destroy(),v.destroy(),S.clear(),N.destroy(),l.setRootElement(null),e.removeEventListener("focusin",k),e.removeEventListener("focusout",P),e.classList.remove("bridgerte"),e.textContent="",delete e.dataset.readonly)}};return b.syncContent(!1),C(),v.refreshCommandStates(),dr(t,_),_}const Ii=e=>!Le.isBridgeMessage(e)||!("id"in e)?!1:e.type==="editor.init"||e.type==="editor.executeCommand"||e.type==="editor.setContent"||e.type==="editor.setReadonly"||e.type==="editor.requestContent"||e.type==="editor.payloadPanelResolved"||e.type==="editor.payloadPanelCanceled"||e.type==="editor.uploadResolved"||e.type==="editor.uploadRejected",$i=e=>({id:e,type:"editor.ready",payload:{menuSchema:z.defaultMenuSchema,eventTiming:Le.defaultBridgeEventTiming,version:Y.BRIDGERTE_CONTENT_VERSION}}),Ai=e=>`native-upload:${e}:${Date.now()}:${Math.random().toString(36).slice(2)}`,Bi=({container:e,transport:t})=>{var N;let n=null,r=!1,o=null,a=null,s=null,c=0;const d=new Map,l=new Map,p=_=>{r||t.postMessage(_)},w=()=>{s&&(clearTimeout(s),s=null)},C=()=>{w(),s=setTimeout(()=>{if(r)return;const _=Math.ceil(e.getBoundingClientRect().height);_!==c&&(c=_,p({type:"editor.heightChange",payload:{height:_}}))},Le.BRIDGE_HEIGHT_CHANGE_THROTTLE_MS)},S=_=>{if(!n)return;const i=n.getContent();p({id:_,type:"editor.content",payload:i}),p({id:_,type:"editor.contentChange",payload:i})},b=_=>{const i=_.payload,u=d.get(i.assetId);if(u){if(d.delete(i.assetId),u.source==="uploadAdapter"){u.resolve(i.result);return}n==null||n.executeCommand({type:u.type==="image"?"media.insertImage":"media.insertVideo",url:i.result.url,poster:i.result.poster,width:i.result.width,height:i.result.height,displayWidthPercent:50,assetId:i.assetId})}},v=_=>{const i=_.payload,u=d.get(i.assetId);if(u){if(d.delete(i.assetId),u.source==="uploadAdapter"){u.reject(new Error(i.message));return}p({id:_.id,type:"editor.error",payload:{code:"bridge.uploadRejected",message:i.message}})}},M=(_,i)=>new Promise((u,m)=>{d.set(i,{type:_,assetId:i,source:"uploadAdapter",resolve:u,reject:m}),p({type:"editor.uploadRequest",payload:{assetId:i,type:_,accept:_==="image"?"image/*":"video/*"}})}),g=_=>{const i=Ai(_);d.set(i,{type:_,assetId:i,source:"nativePicker"}),p({type:"editor.uploadRequest",payload:{assetId:i,type:_,accept:_==="image"?"image/*":"video/*"}})},f=_=>{const i=l.get(_.payload.requestId);i&&(l.delete(_.payload.requestId),i.request.submit(_.payload.values))},E=_=>{const i=l.get(_.payload.requestId);i&&(l.delete(_.payload.requestId),i.request.cancel())},k=(_,i)=>{n==null||n.destroy(),o==null||o(),d.clear(),l.clear(),n=Tn(e,{...i,uploadAdapter:{uploadImage(u,m){return M("image",m.assetId)},uploadVideo(u,m){return M("video",m.assetId)}},onContentChange:u=>{p({type:"editor.contentChange",payload:u}),C()},onCommandStateChange:u=>{p({type:"editor.commandStateChange",payload:u})},onPayloadPanelRequest:u=>(l.set(u.id,{request:u}),p({type:"editor.payloadPanelRequest",payload:{menuId:u.menuId,command:u.command,panel:u.panel,anchorRect:u.anchorRect,currentValues:u.currentValues,id:u.id,readonly:u.readonly}}),!0),onError:u=>{p({type:"editor.error",payload:u})}}),o=n.subscribeCommandStateChange(u=>{p({type:"editor.commandStateChange",payload:u})}),p($i(_)),C()},P=_=>{if(_.type==="media.pickImage"){g("image");return}if(_.type==="media.pickVideo"){g("video");return}n==null||n.executeCommand(_)},I=_=>{if(!(r||!Ii(_)))switch(_.type){case"editor.init":k(_.id,_.payload);return;case"editor.executeCommand":P(_.payload);return;case"editor.setContent":n==null||n.setContent(_.payload);return;case"editor.setReadonly":n==null||n.setReadonly(_.payload.readonly);return;case"editor.requestContent":S(_.id);return;case"editor.payloadPanelResolved":f(_);return;case"editor.payloadPanelCanceled":E(_);return;case"editor.uploadResolved":b(_);return;case"editor.uploadRejected":v(_);return}};return a=((N=t.addMessageListener)==null?void 0:N.call(t,I))??null,{receive:I,destroy(){r||(r=!0,w(),a==null||a(),o==null||o(),d.clear(),l.clear(),n==null||n.destroy(),n=null)}}};exports.appendMenuIcon=rt;exports.bindTouchPressedState=W;exports.createFloatingLayer=tt;exports.createRichTextEditor=Tn;exports.createWebViewBridgeRuntime=Bi;exports.defaultMenuIcons=nt;exports.getMenuStateForItem=cn;exports.getPayloadPanelCurrentValues=ln;exports.resolveMenuSchemaForDom=Ie;
4
- //# sourceMappingURL=index-B5xR6zve.cjs.map