bridgerte 0.9.1 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -96,8 +96,9 @@ window.addEventListener('beforeunload', () => {
96
96
  `placement: 'top' | 'bottom'` 只影响菜单语义、默认样式状态和无障碍命名;DOM 放在哪里、
97
97
  是否吸顶、吸底或跟随键盘,由业务自己的布局决定。销毁时建议先销毁 toolbar,再销毁 editor。
98
98
 
99
- WebView / RN / Flutter 也是同一心智:WebView 内的 editor 只提供内容和命令能力,原生菜单读取
100
- ready payload 中的 schema / command state 后自行渲染,并通过 bridge 发送命令。
99
+ WebView / RN / Flutter 也是同一心智:WebView 内的 editor 只提供内容和命令能力;原生菜单先读取
100
+ ready payload 中的 `menuSchema`,再订阅后续 `editor.commandStateChange` 自行渲染,并通过
101
+ bridge 发送命令。
101
102
 
102
103
  ## 基础配置
103
104
 
@@ -344,10 +345,34 @@ toolbar.update();
344
345
  `toolbarConfig` 规则:
345
346
 
346
347
  - `toolbarKeys`:完整控制显示顺序。
348
+ - 字符串项使用 `MenuItem.id`;`'|'` 只渲染分割线,不执行命令。
349
+ - 分组项使用 `{ key, title, icon, menuKeys }`;DOM toolbar 会渲染一个分组按钮,点击后打开
350
+ Y 轴纵向收纳菜单,例如上面的配置会显示 `[历史]` 按钮,菜单里是 `[撤销]`、`[重做]`。
351
+ - `key` 是分组入口的稳定 id,`title` 是按钮文案和 `aria-label`,`icon` 用于分组按钮图标;
352
+ `menuKeys` 继续引用已有 `MenuItem.id`,不要为收纳菜单重新声明一套命令。
347
353
  - `insertKeys`:在默认菜单基础上插入。
348
354
  - `excludeKeys`:隐藏默认菜单。
349
- - `'|'`:分割线。
350
- - 分组项使用 `{ key, title, icon, menuKeys }`。
355
+
356
+ 把几个功能收进“更多样式”菜单时,可以这样声明:
357
+
358
+ ```ts
359
+ createRichTextToolbar(toolbarContainer, {
360
+ editor,
361
+ toolbarConfig: {
362
+ toolbarKeys: [
363
+ {
364
+ key: 'more-style-group',
365
+ title: '更多样式',
366
+ icon: 'more',
367
+ menuKeys: ['inline-code', 'clear-style']
368
+ },
369
+ '|',
370
+ 'undo',
371
+ 'redo'
372
+ ]
373
+ }
374
+ });
375
+ ```
351
376
 
352
377
  独立 toolbar:
353
378
 
@@ -545,7 +570,9 @@ createRichTextEditor(container, {
545
570
  name: 'language',
546
571
  label: '语言',
547
572
  options: [
548
- { label: '纯文本', value: 'plain' },
573
+ { label: '纯文本', value: '' },
574
+ { label: 'Go', value: 'go' },
575
+ { label: 'TSX', value: 'tsx' },
549
576
  { label: 'TypeScript', value: 'typescript' },
550
577
  { label: 'JSON', value: 'json' }
551
578
  ]
@@ -555,6 +582,16 @@ createRichTextEditor(container, {
555
582
  });
556
583
  ```
557
584
 
585
+ 默认代码块高亮使用 `@lexical/code-shiki`,语言 schema 只放技术文档高频候选;业务可以继续用
586
+ `codeBlockLanguagePanel` 完整替换。HTML 粘贴会按 Shiki 支持的语言归一化显式 `language-*` /
587
+ `data-language` 标记,纯文本 fenced code 只在带语言时接管。
588
+
589
+ 当前内置语言候选包括:纯文本、Bash、C、C++、C#、CSS、Dart、Dockerfile、Go、HTML、Java、
590
+ JavaScript、JSON、Kotlin、Markdown、PHP、Python、Rust、SQL、Swift、TOML、TSX、TypeScript、
591
+ Vue、XML、YAML。粘贴 fenced code 时也会识别常见 alias,
592
+ 例如 `bash`/`sh` 会归一到 `shellscript`,`js` 到 `javascript`,`ts` 到 `typescript`,
593
+ `yml` 到 `yaml`。
594
+
558
595
  ## 图片、视频和上传
559
596
 
560
597
  BridgeRTE 不内置上传后端。图片/视频上传必须由业务实现 `uploadAdapter`。
@@ -601,6 +638,7 @@ createRichTextEditor(container, {
601
638
 
602
639
  - 默认 toolbar 提供本地上传图片/视频入口。
603
640
  - URL 图片/视频插入使用 `media.insertImage` / `media.insertVideo` 命令。
641
+ - 图片/视频加载前会显示占位和 loading 状态,资源加载完成后再显示真实媒体。
604
642
  - 上传失败时可以重试或删除。
605
643
  - 成功态 controls 支持左/中/右对齐、`20%`、`50%`、`100%` 显示比例和删除。
606
644
  - `mediaDefaultWidthPercent` 可设为 `20 | 50 | 100`,默认 `50`。
@@ -690,6 +728,7 @@ createRichTextEditor(container, {
690
728
  toolbarKeys: ['heading-1', 'heading-2', '|', 'quote', 'code-block', 'table']
691
729
  },
692
730
  slashCommandMenuConfig: {
731
+ showIcon: true,
693
732
  loadingText: '加载命令中',
694
733
  emptyText: '没有匹配命令',
695
734
  errorText: '命令加载失败'
@@ -697,6 +736,17 @@ createRichTextEditor(container, {
697
736
  });
698
737
  ```
699
738
 
739
+ `slashCommandMenuConfig.showIcon` 只控制默认 DOM `/` 菜单是否展示图标;schema 和 provider
740
+ 候选里的 `icon` key 仍会保留,业务自绘菜单可以继续读取它。想做成纯文字候选:
741
+
742
+ ```ts
743
+ createRichTextEditor(container, {
744
+ slashCommandMenuConfig: {
745
+ showIcon: false
746
+ }
747
+ });
748
+ ```
749
+
700
750
  追加动态候选:
701
751
 
702
752
  ```ts
@@ -726,6 +776,8 @@ createRichTextEditor(container, {
726
776
  - 传入 `slashCommandConfig` 或自定义 `menuSchema` 后,provider 作为动态候选追加。
727
777
  - provider 失败时,如果静态候选可用,仍显示静态候选。
728
778
  - 表格这类需要参数的命令会继续走参数面板。
779
+ - `slashCommandConfig` 复用 toolbar 的显示规则,`toolbarKeys`、`insertKeys`、`excludeKeys`
780
+ 的语义一致;未知 key 会被忽略,首尾或连续分割线会在解析阶段清理。
729
781
 
730
782
  自绘 slash command:
731
783
 
@@ -804,7 +856,6 @@ runtime.receive(messageFromNative);
804
856
  - `editor.ready`
805
857
  - `editor.content`
806
858
  - `editor.contentChange`
807
- - `editor.selectionChange`
808
859
  - `editor.commandStateChange`
809
860
  - `editor.payloadPanelRequest`
810
861
  - `editor.uploadRequest`
package/dist/bridge.d.ts CHANGED
@@ -170,8 +170,8 @@ export type PasteHook = (request: PasteRequest) => PasteHookResult | Promise<Pas
170
170
  /**
171
171
  * toolbar JSON 配置里的菜单组。
172
172
  *
173
- * `menuKeys` 使用菜单 schema 的稳定 id,DOM 先按简单横向分组渲染;
174
- * 后续需要下拉菜单时,可以继续复用这份结构。
173
+ * `menuKeys` 使用菜单 schema 的稳定 id,DOM 渲染为一个分组入口,
174
+ * 点击后打开纵向收纳菜单;RN/Flutter/WebView 可按同一结构自绘平台菜单。
175
175
  */
176
176
  export type ToolbarGroupConfig = {
177
177
  key: string;
@@ -283,7 +283,7 @@ export type FormatClearScope = 'selection' | 'block';
283
283
  /**
284
284
  * 代码块语言标识。
285
285
  *
286
- * 保持 string 是为了兼容 highlight.js、Prism 或业务自定义语言表。
286
+ * 保持 string 是为了兼容 Shiki、highlight.js 或业务自定义语言表。
287
287
  */
288
288
  export type CodeBlockLanguage = string;
289
289
  /**
@@ -527,7 +527,14 @@ export type SlashCommandMenuAnchorRect = {
527
527
  width: number;
528
528
  height: number;
529
529
  };
530
+ /**
531
+ * slash command 菜单展示配置。
532
+ *
533
+ * `showIcon` 只决定默认候选菜单是否展示 icon;候选数据仍保留 icon key,方便 DOM、
534
+ * WebView 或业务自绘层按自己的 UI 策略渲染。
535
+ */
530
536
  export type SlashCommandMenuConfig = {
537
+ showIcon?: boolean;
531
538
  loadingText?: string;
532
539
  emptyText?: string;
533
540
  errorText?: string;
package/dist/core.d.ts CHANGED
@@ -170,8 +170,8 @@ export type PasteHook = (request: PasteRequest) => PasteHookResult | Promise<Pas
170
170
  /**
171
171
  * toolbar JSON 配置里的菜单组。
172
172
  *
173
- * `menuKeys` 使用菜单 schema 的稳定 id,DOM 先按简单横向分组渲染;
174
- * 后续需要下拉菜单时,可以继续复用这份结构。
173
+ * `menuKeys` 使用菜单 schema 的稳定 id,DOM 渲染为一个分组入口,
174
+ * 点击后打开纵向收纳菜单;RN/Flutter/WebView 可按同一结构自绘平台菜单。
175
175
  */
176
176
  export type ToolbarGroupConfig = {
177
177
  key: string;
@@ -283,7 +283,7 @@ export type FormatClearScope = 'selection' | 'block';
283
283
  /**
284
284
  * 代码块语言标识。
285
285
  *
286
- * 保持 string 是为了兼容 highlight.js、Prism 或业务自定义语言表。
286
+ * 保持 string 是为了兼容 Shiki、highlight.js 或业务自定义语言表。
287
287
  */
288
288
  export type CodeBlockLanguage = string;
289
289
  /**
@@ -527,7 +527,14 @@ export type SlashCommandMenuAnchorRect = {
527
527
  width: number;
528
528
  height: number;
529
529
  };
530
+ /**
531
+ * slash command 菜单展示配置。
532
+ *
533
+ * `showIcon` 只决定默认候选菜单是否展示 icon;候选数据仍保留 icon key,方便 DOM、
534
+ * WebView 或业务自绘层按自己的 UI 策略渲染。
535
+ */
530
536
  export type SlashCommandMenuConfig = {
537
+ showIcon?: boolean;
531
538
  loadingText?: string;
532
539
  emptyText?: string;
533
540
  errorText?: string;
package/dist/dom.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Bui5UnkQ.cjs"),t=require("./index-DAlyGWXO.cjs");exports.createFloatingLayer=e.createFloatingLayer;exports.createRichTextEditor=e.createRichTextEditor;exports.createWebViewBridgeRuntime=e.createWebViewBridgeRuntime;exports.createRichTextToolbar=t.createRichTextToolbar;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BaOlPu8L.cjs"),t=require("./index-hd9Zi2DV.cjs");exports.createFloatingLayer=e.createFloatingLayer;exports.createRichTextEditor=e.createRichTextEditor;exports.createWebViewBridgeRuntime=e.createWebViewBridgeRuntime;exports.createRichTextToolbar=t.createRichTextToolbar;
2
2
  //# sourceMappingURL=dom.cjs.map
package/dist/dom.d.ts CHANGED
@@ -170,8 +170,8 @@ export type PasteHook = (request: PasteRequest) => PasteHookResult | Promise<Pas
170
170
  /**
171
171
  * toolbar JSON 配置里的菜单组。
172
172
  *
173
- * `menuKeys` 使用菜单 schema 的稳定 id,DOM 先按简单横向分组渲染;
174
- * 后续需要下拉菜单时,可以继续复用这份结构。
173
+ * `menuKeys` 使用菜单 schema 的稳定 id,DOM 渲染为一个分组入口,
174
+ * 点击后打开纵向收纳菜单;RN/Flutter/WebView 可按同一结构自绘平台菜单。
175
175
  */
176
176
  export type ToolbarGroupConfig = {
177
177
  key: string;
@@ -283,7 +283,7 @@ export type FormatClearScope = 'selection' | 'block';
283
283
  /**
284
284
  * 代码块语言标识。
285
285
  *
286
- * 保持 string 是为了兼容 highlight.js、Prism 或业务自定义语言表。
286
+ * 保持 string 是为了兼容 Shiki、highlight.js 或业务自定义语言表。
287
287
  */
288
288
  export type CodeBlockLanguage = string;
289
289
  /**
@@ -527,7 +527,14 @@ export type SlashCommandMenuAnchorRect = {
527
527
  width: number;
528
528
  height: number;
529
529
  };
530
+ /**
531
+ * slash command 菜单展示配置。
532
+ *
533
+ * `showIcon` 只决定默认候选菜单是否展示 icon;候选数据仍保留 icon key,方便 DOM、
534
+ * WebView 或业务自绘层按自己的 UI 策略渲染。
535
+ */
530
536
  export type SlashCommandMenuConfig = {
537
+ showIcon?: boolean;
531
538
  loadingText?: string;
532
539
  emptyText?: string;
533
540
  errorText?: string;
@@ -923,6 +930,16 @@ export type ToolbarDragState = {
923
930
  hasDragged: boolean;
924
931
  startButton?: HTMLButtonElement;
925
932
  };
933
+ /**
934
+ * toolbar 分组收纳菜单打开状态。
935
+ *
936
+ * groupKey 对应 ToolbarGroupConfig.key;触发按钮用于定位固定浮层,menu 保存当前组内可执行子项。
937
+ */
938
+ export type ToolbarGroupMenuState = {
939
+ groupKey: string;
940
+ button: HTMLButtonElement;
941
+ items: MenuItem[];
942
+ };
926
943
  /**
927
944
  * toolbar 挂载方向。
928
945
  *
package/dist/dom.js CHANGED
@@ -1,5 +1,5 @@
1
- import { c as r, a as t, b as c } from "./index-BQAzp56J.js";
2
- import { c as i } from "./index-CeYJbOQi.js";
1
+ import { c as r, a as t, b as c } from "./index-BwZ0II4h.js";
2
+ import { c as i } from "./index-bN5Hs6-3.js";
3
3
  export {
4
4
  r as createFloatingLayer,
5
5
  t as createRichTextEditor,
@@ -0,0 +1,4 @@
1
+ "use strict";var xn=Object.defineProperty;var Mn=(e,t,n)=>t in e?xn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var $e=(e,t,n)=>Mn(e,typeof t!="symbol"?t+"":t,n);const Ne=require("./bridge.cjs"),Y=require("./index-GaS65GL0.cjs"),g=require("lexical"),te=require("@lexical/rich-text"),H=require("@lexical/code"),q=require("@lexical/list"),B=require("@lexical/table"),z=require("@lexical/link"),Ut=require("@lexical/history"),Ke=require("@lexical/html"),G=require("@lexical/selection"),Le=require("@lexical/utils"),W=require("./native-spec.cjs"),jt=require("./core.cjs"),U=require("@lexical/code-shiki"),oe=require("@floating-ui/dom"),it="bridgerte-media",lt=(e,t)=>`${e}:${t}`,ae=e=>typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):void 0,ct=e=>typeof e=="number"&&Number.isFinite(e)?Math.min(Math.max(e,0),100):void 0,Tn=e=>e===20||e===50||e===100,dt=e=>Tn(e)?e:void 0,ut=e=>e==="center"||e==="right"?e:void 0,Sn=e=>e.status==="error"?e.errorMessage??"媒体加载失败":e.status==="uploading"?`上传中 ${e.progress??0}%`:e.mediaType==="image"?"图片加载中":"视频加载中",Ae=(e,t,n)=>{n&&e.setAttribute(t,n)},gt=(e,t,n)=>{n!==void 0&&e.setAttribute(t,String(n))};class ce extends g.DecoratorNode{constructor(n,r){super(r);$e(this,"__payload");this.__payload={...n,assetId:n.assetId??lt(n.mediaType,n.url),width:ae(n.width),height:ae(n.height),duration:ae(n.duration),progress:ct(n.progress),displayWidthPercent:dt(n.displayWidthPercent),align:ut(n.align)},this.__payload.displayWidthPercent===void 0&&delete this.__payload.displayWidthPercent,this.__payload.align===void 0&&delete this.__payload.align}static getType(){return it}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:Nn,priority:1}),video:()=>({conversion:Ln,priority:1})}}static importJSON(n){return de(n).updateFromJSON(n)}exportJSON(){return{...super.exportJSON(),...this.__payload,type:it}}getTextContent(){return this.__payload.title??this.__payload.alt??this.__payload.url}isInline(){return!1}getAsset(){const n=this.__payload,r={id:n.assetId??lt(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:ct(n.progress??r.__payload.progress),displayWidthPercent:Object.prototype.hasOwnProperty.call(n,"displayWidthPercent")?dt(n.displayWidthPercent):r.__payload.displayWidthPercent,align:Object.prototype.hasOwnProperty.call(n,"align")?ut(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"};if(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})),r.mediaType==="image"?(a.setAttribute("src",r.url),a.setAttribute("loading","lazy"),Ae(a,"alt",r.alt??r.title)):(a.setAttribute("src",r.url),a.setAttribute("controls","true"),a.setAttribute("preload","metadata"),Ae(a,"poster",r.poster)),Ae(a,"title",r.title),gt(a,"width",r.width),gt(a,"height",r.height),n){const l=document.createElement("div"),d=document.createElement("span"),i=document.createElement("span");l.className="bridgerte__media-placeholder",l.setAttribute("aria-hidden","true"),d.className="bridgerte__media-placeholder-icon",d.textContent=r.mediaType==="image"?"IMG":"VIDEO",i.className="bridgerte__media-placeholder-text",i.textContent=Sn(r),l.append(d,i),o.append(l)}if(o.append(a),r.status==="uploading"||r.status==="error"){const l=document.createElement("figcaption");l.className="bridgerte__media-status",l.textContent=r.status==="error"?r.errorMessage??"上传失败":`上传中 ${r.progress??0}%`,o.append(l)}return o}}const Nn=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}},Ln=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=>g.$applyNodeReplacement(new ce(e)),Rn=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"}),Pn=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"}),Kt=e=>e instanceof ce,he=e=>{const t=n=>{if(Kt(n)&&n.getAsset().id===e)return n;if(!g.$isElementNode(n))return null;for(const r of n.getChildren()){const o=t(r);if(o)return o}return null};return t(g.$getRoot())},Gt={root:{type:"root",version:1,children:[]}};function Fe(e={}){return{html:e.html??"",json:e.json??Gt,plainText:e.plainText??"",assets:e.assets??[],version:e.version??Y.BRIDGERTE_CONTENT_VERSION}}const In=e=>e.toJSON(),$n=e=>{var t;return((t=e.root.children)==null?void 0:t.length)===0},An=e=>e.read(()=>{const t=new Map,n=r=>{g.$isElementNode(r)&&r.getChildren().forEach(o=>{if(Kt(o)){const a=o.getAsset();t.set(a.id,a);return}g.$isElementNode(o)&&n(o)})};return n(g.$getRoot()),[...t.values()]}),Yt=(e,t)=>{const n=t.read(()=>Ke.$generateHtmlFromNodes(t)),r=e.read(()=>g.$getRoot().getTextContent()),o=An(e);return{html:n,json:In(e),plainText:r,assets:o,version:Y.BRIDGERTE_CONTENT_VERSION}},Bn=(e,t)=>{const n=Fe(t);return Xt(e,n),Yt(e.getEditorState(),e)},Xt=(e,t)=>{if(t.json!==Gt&&!$n(t.json)){const o=t.json;e.setEditorState(e.parseEditorState(o));return}if(!t.html){e.update(()=>{const o=g.$getRoot();o.clear(),o.append(g.$createParagraphNode())},{discrete:!0});return}const r=new DOMParser().parseFromString(t.html,"text/html");e.update(()=>{const o=g.$getRoot(),a=Ke.$generateNodesFromDOM(e,r);o.clear(),o.append(...a)},{discrete:!0})};class pe extends g.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:Dn,priority:0})}}static importJSON(t){return Ge().updateFromJSON(t)}exportJSON(){return{...super.exportJSON(),type:pe.getType()}}getTextContent(){return`
2
+ `}isInline(){return!1}}const Dn=e=>({node:Ge()}),Ge=()=>g.$applyNodeReplacement(new pe),mt="bridgerte-mention",Ye="mention",Jt=e=>e.label.startsWith("@")?e.label:`@${e.label}`,On=e=>{const t=document.createElement("span");return t.className="bridgerte__mention",t.dataset.type=Ye,t.dataset.id=e.id,t.dataset.value=e.value,t.contentEditable="false",t.textContent=Jt(e),e.description&&(t.dataset.description=e.description),t};class be extends g.TextNode{constructor(n,r=Jt(n),o){super(r,o);$e(this,"__item");this.__item=n}static getType(){return mt}static clone(n){return new be(n.__item,n.__text,n.__key)}createDOM(n){const r=super.createDOM(n);return r.className="bridgerte__mention",r.dataset.type=Ye,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:On(this.__item)}}static importDOM(){return{span:()=>({conversion:Hn,priority:2})}}static importJSON(n){return Xe(n).updateFromJSON(n)}exportJSON(){return{...super.exportJSON(),...this.__item,type:mt}}isTextEntity(){return!0}isToken(){return!0}getMentionItem(){return this.__item}}const Hn=e=>{var a;const t=e instanceof HTMLElement?e:null;if(!t||t.dataset.type!==Ye)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:Xe({id:r,label:n,value:o,description:t.dataset.description})}},Xe=e=>g.$applyNodeReplacement(new be(e).setMode("token")),ht=e=>e instanceof be,Fn="请输入内容",zn=()=>{const t=g.$getRoot().getChildren();if(t.length===0)return!0;if(t.length>1)return!1;const n=t[0];return g.$isParagraphNode(n)&&n.getChildrenSize()===0},Wn=({editor:e,contentElement:t})=>{const n=e.getEditorState().read(zn);t.dataset.empty=String(n)},Vn=({editor:e,contentElement:t,isReadonly:n})=>{const r=o=>{n()||t.dataset.empty!=="true"||o.button===0&&(o.preventDefault(),e.focus(()=>{e.update(()=>{g.$getRoot().selectStart()})}))};return t.addEventListener("pointerdown",r),()=>{t.removeEventListener("pointerdown",r)}},qn=[{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"}],Un=[{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"}],jn=[{command:"list.ordered",listType:"ordered"},{command:"list.unordered",listType:"unordered"},{command:"list.todo",listType:"todo"}],Kn=["media.pickImage","media.pickVideo"],Qt=()=>{const e=g.$getSelection();if(!g.$isRangeSelection(e))return null;const t=e.anchor.getNode();return t.getKey()==="root"?t:t.getTopLevelElementOrThrow()},Gn=()=>{const e=Qt();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(H.$isCodeNode(e)){const t=e.getLatest();return{command:"block.code",value:H.$isCodeNode(t)?t.getLanguage()??"":""}}return{command:"block.paragraph"}},Yn=()=>{const e=Qt();if(!e||!("getFormatType"in e))return;const t=e.getFormatType();return t===""?void 0:t},Xn=()=>{const e=g.$getSelection();if(!g.$isRangeSelection(e))return null;const t=e.anchor.getNode(),n=q.$isListNode(t)?t:Le.$getNearestNodeOfType(t,q.ListNode);return n?n.getListType()==="check"?"todo":n.getTag()==="ol"?"ordered":"unordered":null},Jn=e=>{const t=g.$getSelection();if(!g.$isRangeSelection(t))return;const n=G.$getSelectionStyleValueForProperty(t,e);return n===""?void 0:n},Qn=()=>{const e=g.$getSelection();if(!g.$isRangeSelection(e))return!1;const t=e.anchor.getNode(),n=t.getParent();return z.$isLinkNode(t)||z.$isLinkNode(n)},Zn=e=>{const t=g.$getSelection(),n=g.$isRangeSelection(t),r=Gn(),o=Xn(),a=Yn(),s=Qn(),l=e.readonly||!n,d=qn.map(_=>({command:_.command,active:n&&t.hasFormat(_.format),disabled:l})),i=Un.map(_=>{const x=Jn(_.property);return{command:_.command,active:x!==void 0,disabled:l,value:x}}),m=jn.map(_=>({command:_.command,active:o===_.listType,disabled:l})),C=Kn.map(_=>({command:_,active:!1,disabled:e.readonly||!e.canUploadMedia}));return[...d,{command:"format.clear",active:!1,disabled:l},...i,{command:"block.heading",active:(r==null?void 0:r.command)==="block.heading",disabled:l,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:l},{command:"block.quote",active:(r==null?void 0:r.command)==="block.quote",disabled:l},{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},...m,{command:"align",active:a!==void 0,disabled:l,value:a},{command:"link.set",active:s,disabled:l},{command:"link.unset",active:!1,disabled:l||!s},{command:"link.open",active:!1,disabled:e.readonly||!s},{command:"indent.increase",active:!1,disabled:l},{command:"indent.decrease",active:!1,disabled:l},{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},...C,{command:"table.insert",active:!1,disabled:e.readonly},{command:"fullscreen.toggle",active:!1,disabled:!1}]},er=(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)}},tr=(e,t)=>{var n;try{(n=e.onChange)==null||n.call(e,t)}catch(r){j(e,"callback.onChange","onChange callback failed.",r)}},nr=(e,t)=>{var n;try{(n=e.onContentChange)==null||n.call(e,t)}catch(r){j(e,"callback.onContentChange","onContentChange callback failed.",r)}},rr=(e,t)=>{var n;try{(n=e.onCommandStateChange)==null||n.call(e,[...t])}catch(r){j(e,"callback.onCommandStateChange","onCommandStateChange callback failed.",r)}},or=e=>{var t;try{(t=e.onFocus)==null||t.call(e)}catch(n){j(e,"callback.onFocus","onFocus callback failed.",n)}},ar=e=>{var t;try{(t=e.onBlur)==null||t.call(e)}catch(n){j(e,"callback.onBlur","onBlur callback failed.",n)}},sr=(e,t)=>{var n;try{(n=e.onReady)==null||n.call(e,t)}catch(r){j(e,"callback.onReady","onReady callback failed.",r)}},ir=({lexicalEditor:e,options:t,isDestroyed:n,canUploadMedia:r,isReadonly:o})=>{let a=!1,s=!1,l=[];const d=new Set,i=()=>{const C=[...l];d.forEach(_=>{try{_(C)}catch(x){j(t,"callback.commandStateSubscriber","Command state subscriber failed.",x)}})},m=(C=!0)=>{if(n())return;const _=l;e.getEditorState().read(()=>{l=Zn({canUndo:a,canRedo:s,readonly:o(),canUploadMedia:r()})}),C&&!er(_,l)&&(rr(t,l),i())};return{refreshCommandStates:m,getCommandStates(){return m(!1),[...l]},subscribeCommandStateChange(C){return n()?()=>{}:(d.add(C),C([...l]),()=>{d.delete(C)})},setCanUndo(C){a=C,m()},setCanRedo(C){s=C,m()},setHistoryAvailability(C,_){a=C,s=_,m()},destroy(){d.clear()}}},lr=e=>`upload:${e}:${Date.now()}:${Math.random().toString(36).slice(2)}`,cr=e=>typeof URL.createObjectURL=="function"?URL.createObjectURL(e):e.name,ye=e=>{typeof URL.revokeObjectURL=="function"&&e.startsWith("blob:")&&URL.revokeObjectURL(e)},pt=e=>({name:e.name,mimeType:e.type||void 0,size:e.size,data:e}),dr=e=>typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError",ur=({container:e,lexicalEditor:t,options:n,isDestroyed:r})=>{const o=new Map;let a=0;const s=(p,w)=>{t.update(()=>{var S;(S=he(p))==null||S.updatePayload(w)})},l=p=>{let w=null;return t.update(()=>{const S=he(p);if(!S)return;const M=S.getAsset();w={mediaType:M.type,url:M.url,assetId:M.id,status:M.status,progress:M.progress,poster:M.poster,width:M.width,height:M.height,duration:M.duration,mimeType:M.mimeType,size:M.size,displayWidthPercent:M.displayWidthPercent,align:M.align,errorMessage:M.errorMessage},S.remove()}),w},d=(p,w)=>{const S=o.get(p);return(S==null?void 0:S.runId)===w},i=p=>{var w;(w=p.abortController)==null||w.abort()},m=(p,w)=>{const S=o.get(p);return S?(i(S),ye(S.previewUrl),o.delete(p),!0):!1},C=(p,w,S,M)=>{t.update(()=>{const I=de({mediaType:p,url:M,assetId:S,status:"uploading",progress:0,title:w.name,mimeType:w.type||void 0,size:w.size}),$=g.$createParagraphNode();g.$getSelection()||g.$getRoot().selectEnd(),g.$insertNodes([I,$]),$.selectStart()},{discrete:!0})},_=(p,w,S,M)=>{s(w,{mediaType:p,url:M.url,poster:M.poster,width:M.width,height:M.height,duration:M.duration,mimeType:M.mimeType,size:M.size,status:"success",progress:100,errorMessage:void 0}),ye(S)},x=(p,w,S)=>{var M;dr(S)||(s(w,{mediaType:p,status:"error",errorMessage:"上传失败"}),(M=n.onUploadError)==null||M.call(n,{assetId:w,type:p,cause:S}))},f=p=>{const w=n.uploadAdapter;if(!w)return;const S=typeof AbortController=="function"?new AbortController:null,M=a+1;a=M,p.runId=M,p.abortController=S,o.set(p.assetId,p);const I={assetId:p.assetId,signal:S==null?void 0:S.signal,onProgress:N=>{!d(p.assetId,M)||r()||s(p.assetId,{mediaType:p.type,status:"uploading",progress:N})}};let $;try{$=p.type==="image"?w.uploadImage(pt(p.file),I):w.uploadVideo(pt(p.file),I)}catch(N){d(p.assetId,M)&&x(p.type,p.assetId,N);return}$.then(N=>{r()||!d(p.assetId,M)||(_(p.type,p.assetId,p.previewUrl,N),o.delete(p.assetId))}).catch(N=>{r()||!d(p.assetId,M)||x(p.type,p.assetId,N)})},y=(p,w)=>{if(!n.uploadAdapter)return;const S=lr(p),M=cr(w),I={assetId:S,type:p,file:w,previewUrl:M,runId:0,abortController:null};C(p,w,S,M),f(I)};return{pickMediaFile:p=>{if(!n.uploadAdapter)return;const w=e.ownerDocument.createElement("input");w.type="file",w.accept=p==="image"?"image/*":"video/*",w.style.display="none",w.addEventListener("change",()=>{var M;const S=(M=w.files)==null?void 0:M[0];w.remove(),S&&y(p,S)},{once:!0}),e.append(w),w.click()},uploadMediaFile:y,removeMedia(p){const w=l(p);!m(p)&&(w!=null&&w.url.startsWith("blob:"))&&ye(w.url)},retryMedia(p){const w=o.get(p);!w||!n.uploadAdapter||(i(w),s(p,{mediaType:w.type,url:w.previewUrl,status:"uploading",progress:0,errorMessage:void 0}),f(w))},destroy(){o.forEach(p=>{i(p),ye(p.previewUrl)}),o.clear()}}},Zt=e=>H.$createCodeNode(e),gr={1:"h1",2:"h2",3:"h3",4:"h4",5:"h5",6:"h6"},mr={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"},hr=e=>({setBlockHeading:i=>{e.update(()=>{const m=g.$getSelection();g.$isRangeSelection(m)&&G.$setBlocksType(m,()=>te.$createHeadingNode(gr[i]))})},setParagraphBlock:()=>{e.update(()=>{const i=g.$getSelection();g.$isRangeSelection(i)&&G.$setBlocksType(i,()=>g.$createParagraphNode())})},setQuoteBlock:()=>{e.update(()=>{const i=g.$getSelection();g.$isRangeSelection(i)&&G.$setBlocksType(i,()=>te.$createQuoteNode())})},insertDividerBlock:()=>{e.update(()=>{const i=g.$createParagraphNode();g.$insertNodes([Ge(),i]),i.selectStart()})},insertCodeBlock:i=>{e.update(()=>{const m=Zt(i),C=g.$createParagraphNode();g.$insertNodes([m,C]),m.selectEnd()})},setSelectedCodeBlockLanguage:i=>{e.update(()=>{const m=g.$getSelection();if(!g.$isRangeSelection(m))return;const C=m.anchor.getNode(),_=C.getKey()==="root"?C:C.getTopLevelElementOrThrow();H.$isCodeNode(_)&&_.setLanguage(i)})},clearContent:()=>{e.update(()=>{const i=g.$getRoot();i.clear(),i.append(g.$createParagraphNode())})},formatAlign:i=>{e.dispatchCommand(g.FORMAT_ELEMENT_COMMAND,i)}}),pr=e=>({setLink:(o,a)=>{e.update(()=>{const s=g.$getSelection(),l=z.formatUrl(o),d=(a==null?void 0:a.trim())||o.trim();if(!(!g.$isRangeSelection(s)||!o.trim())){if(s.isCollapsed()){const i=z.$createLinkNode(l,{rel:"noreferrer noopener",target:"_blank"});i.append(g.$createTextNode(d)),g.$insertNodes([i]);return}z.$toggleLink(l,{rel:"noreferrer noopener",target:"_blank"})}})},unsetLink:()=>{e.update(()=>{z.$toggleLink(null)})},openSelectedLink:()=>{if(typeof window>"u")return;const o=e.getEditorState().read(()=>{const a=g.$getSelection();if(!g.$isRangeSelection(a))return null;const s=a.anchor.getNode(),l=z.$isLinkNode(s)?s:Le.$findMatchingParent(s,z.$isLinkNode);return l?{target:l.getTarget()??"_blank",url:l.sanitizeUrl(l.getURL())}:null});o&&window.open(o.url,o.target,"noopener,noreferrer")}}),fr=e=>({insertImage:s=>{s.url.trim()&&e.update(()=>{const l=g.$createParagraphNode();g.$insertNodes([Rn(s),l]),l.selectStart()})},insertVideo:s=>{s.url.trim()&&e.update(()=>{const l=g.$createParagraphNode();g.$insertNodes([Pn(s),l]),l.selectStart()})},resizeMedia:s=>{e.update(()=>{var l;(l=he(s.assetId))==null||l.updatePayload({displayWidthPercent:s.widthPercent})})},resetMediaSize:s=>{e.update(()=>{var l;(l=he(s))==null||l.updatePayload({displayWidthPercent:void 0})})},alignMedia:s=>{e.update(()=>{var l;(l=he(s.assetId))==null||l.updatePayload({align:s.value==="left"?void 0:s.value})})}}),br=e=>({insertMention:n=>{e.update(()=>{const r=g.$getSelection();g.$isRangeSelection(r)&&g.$insertNodes([Xe(n),g.$createTextNode(" ")])})}}),yr=e=>({clearSelectionFormat:()=>{e.update(()=>{const r=g.$getSelection();g.$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=g.$getSelection();g.$isRangeSelection(a)&&G.$patchStyleText(a,{[r]:o===""?null:o})})}}),vr=20,ft=(e,t)=>Number.isFinite(e)&&e>0?Math.min(Math.floor(e),t):1,ve=e=>Number.isFinite(e)&&(e??0)>0?Math.min(Math.floor(e??1),vr):1,we=()=>{const e=g.$getSelection();return!g.$isRangeSelection(e)&&!B.$isTableSelection(e)?!1:B.$findCellNode(e.anchor.getNode())!==null},wr=e=>({insertTable:(l,d)=>{const i=ft(l,Y.BRIDGERTE_TABLE_INSERT_MAX_ROWS),m=ft(d,Y.BRIDGERTE_TABLE_INSERT_MAX_COLS);e.dispatchCommand(B.INSERT_TABLE_COMMAND,{rows:String(i),columns:String(m),includeHeaders:{rows:!0,columns:!1}})},insertTableRow:l=>{e.update(()=>{if(!we())return;const d=ve(l.count);for(let i=0;i<d;i+=1)B.$insertTableRowAtSelection(l.direction!=="before")})},insertTableColumn:l=>{e.update(()=>{if(!we())return;const d=ve(l.count);for(let i=0;i<d;i+=1)B.$insertTableColumnAtSelection(l.direction!=="before")})},deleteTableRow:l=>{e.update(()=>{const d=ve(l.count);for(let i=0;i<d;i+=1){if(!we())return;B.$deleteTableRowAtSelection()}})},deleteTableColumn:l=>{e.update(()=>{const d=ve(l.count);for(let i=0;i<d;i+=1){if(!we())return;B.$deleteTableColumnAtSelection()}})},deleteTable:()=>{e.update(()=>{const l=g.$getSelection();if(!g.$isRangeSelection(l)&&!B.$isTableSelection(l))return;const d=B.$findTableNode(l.anchor.getNode());if(!d)return;const i=g.$createParagraphNode();d.insertAfter(i),d.remove(),i.selectStart()})}}),Cr=e=>{const t=wr(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()}}},_r={"format.bold":"bold","format.italic":"italic","format.underline":"underline","format.strike":"strikethrough","format.inlineCode":"code","format.superscript":"superscript","format.subscript":"subscript"},Er={"list.ordered":q.INSERT_ORDERED_LIST_COMMAND,"list.unordered":q.INSERT_UNORDERED_LIST_COMMAND,"list.todo":q.INSERT_CHECK_LIST_COMMAND},kr={"indent.increase":g.INDENT_CONTENT_COMMAND,"indent.decrease":g.OUTDENT_CONTENT_COMMAND,"history.undo":g.UNDO_COMMAND,"history.redo":g.REDO_COMMAND},xr={"format.color":"color","format.backgroundColor":"background-color","format.fontSize":"font-size","format.fontFamily":"font-family","format.lineHeight":"line-height"},Mr=({container:e,lexicalEditor:t,options:n,isDestroyed:r,isReadonly:o,reportError:a})=>{const s=ur({container:e,lexicalEditor:t,options:n,isDestroyed:r}),l=hr(t),d=pr(t),i=fr(t),m=br(t),C=yr(t),_=Cr(t),x=()=>{var T,p;if(document.fullscreenElement){(T=document.exitFullscreen)==null||T.call(document).catch(w=>{a(n,"fullscreen.exit","Exit fullscreen failed.",w)});return}(p=e.requestFullscreen)==null||p.call(e).catch(w=>{a(n,"fullscreen.enter","Enter fullscreen failed.",w)})},f=(y=>{if(r()||o())return;const T=_r[y.type];if(T){t.dispatchCommand(g.FORMAT_TEXT_COMMAND,T);return}const p=Er[y.type];if(p){t.dispatchCommand(p,void 0);return}const w=kr[y.type];if(w){t.dispatchCommand(w,void 0);return}const S=xr[y.type];if(S&&"value"in y){C.setSelectionStyle(S,y.value);return}switch(y.type){case"format.clear":C.clearSelectionFormat();return;case"block.heading":l.setBlockHeading(y.level);return;case"block.paragraph":l.setParagraphBlock();return;case"block.quote":l.setQuoteBlock();return;case"block.divider":l.insertDividerBlock();return;case"block.code":l.insertCodeBlock(y.language);return;case"block.setCodeLanguage":l.setSelectedCodeBlockLanguage(y.language);return;case"align":l.formatAlign(y.value);return;case"link.set":d.setLink(y.href,y.text);return;case"link.unset":d.unsetLink();return;case"link.open":d.openSelectedLink();return;case"mention.insert":m.insertMention(y.item);return;case"content.clear":l.clearContent();return;case"table.insert":_.insertTable(y);return;case"table.insertRow":_.insertTableRow(y);return;case"table.insertColumn":_.insertTableColumn(y);return;case"table.deleteRow":_.deleteTableRow(y);return;case"table.deleteColumn":_.deleteTableColumn(y);return;case"table.delete":_.deleteTable();return;case"media.insertImage":i.insertImage(y);return;case"media.insertVideo":i.insertVideo(y);return;case"media.pickImage":s.pickMediaFile("image");return;case"media.pickVideo":s.pickMediaFile("video");return;case"media.retry":s.retryMedia(y.assetId);return;case"media.remove":s.removeMedia(y.assetId);return;case"media.resize":i.resizeMedia(y);return;case"media.align":i.alignMedia(y);return;case"media.resetSize":i.resetMediaSize(y.assetId);return;case"fullscreen.toggle":x();return}});return f.uploadMediaFile=s.uploadMediaFile,f.destroy=()=>{s.destroy()},f},Tr=300,Sr="BridgeRTE",bt=({editor:e,overflowLength:t})=>{if(t<=0)return!1;const n=g.$getSelection();if(g.$isRangeSelection(n))return G.$trimTextContentFromAnchor(e,n.anchor,t),!0;g.$getRoot().selectEnd();const r=g.$getSelection();return g.$isRangeSelection(r)?(G.$trimTextContentFromAnchor(e,r.anchor,t),!0):!1},Nr=({lexicalEditor:e,options:t,isDestroyed:n,setContent:r,syncPlaceholder:o})=>{let a=0,s=null;const l=()=>{s&&(clearTimeout(s),s=null)},d=p=>{if(n())return;const w=Yt(e.getEditorState(),e);r(w),p&&tr(t,w)},i=p=>{const w=t.maxLength!==void 0&&t.maxLength>=0?t.maxLength:void 0;return{dirty:!0,plainTextLength:p,version:Y.BRIDGERTE_CONTENT_VERSION,maxLength:w,isOverMaxLength:w===void 0?!1:p>w}},m=p=>{nr(t,i(p))},C=()=>{t.onChange&&(l(),s=setTimeout(()=>{d(!0)},Ne.BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS))},_=p=>{if(a>0){a-=1;return}m(p),C()},x=()=>e.getEditorState().read(()=>g.$getRoot().getTextContent().length),f=p=>t.maxLength===void 0||t.maxLength<0?0:p-t.maxLength,y=p=>p<=0?!1:(e.update(()=>{bt({editor:e,overflowLength:p})},{discrete:!0}),!0);return{clearContentChangeTimer:l,enforceCurrentMaxLength:()=>{t.maxLength===void 0||t.maxLength<0||e.update(()=>{const p=g.$getRoot().getTextContent().length-(t.maxLength??0);bt({editor:e,overflowLength:p})},{discrete:!0})},syncContent:d,suppressNextChange(){a+=1},syncAfterEditorUpdate(){const p=x();if(y(f(p))){o();return}o(),_(p)}}},Re="data-language",en="纯文本",Lr="language",Rr=new Set(["plain","plaintext","text","txt"]),Pr=new Set(U.getCodeLanguageOptions().map(([e])=>e)),Ir=[Re,"data-lang","data-code-language","data-highlight-language","lang","language"],$r=/^[a-z][a-z0-9_+#.-]{0,31}$/i,Ar=/^(?:language|lang)-([a-z][a-z0-9_+#.-]{0,31})$/i,Br=/^brush:\s*([a-z][a-z0-9_+#.-]{0,31})$/i,Dr=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"]]),Or=e=>e.type==="select",yt=e=>e.find(t=>t.name===Lr&&Or(t)),ne=e=>{const t=e==null?void 0:e.trim().toLowerCase();if(!t||!$r.test(t))return null;if(Rr.has(t))return"";const n=Dr.get(t)??U.normalizeCodeLanguage(t);return Pr.has(n)?n:null},Hr=e=>{for(const t of Ir){const n=ne(e.getAttribute(t));if(n)return n}return null},Fr=e=>{const[,t]=e.match(Br)??[],n=ne(t);if(n)return n;for(const r of e.split(/\s+/)){const[,o]=r.match(Ar)??[],a=ne(o);if(a)return a}return null},tn=(e=W.codeBlockLanguagePanel)=>{var t,n;return((t=yt(e.fields))==null?void 0:t.options)??((n=yt(W.codeBlockLanguagePanel.fields))==null?void 0:n.options)??[{label:en,value:""}]},nn=(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)??en};tn();const zr=e=>{[...e.querySelectorAll("pre,code")].forEach(t=>{const n=Hr(t)??Fr(t.className),r=t.tagName==="PRE"?t:t.closest("pre");r&&n&&r.setAttribute(Re,n)})},Wr=e=>{e.querySelectorAll("pre").forEach(t=>{[...t.children].forEach(r=>{r.tagName==="CODE"&&r.replaceWith(...r.childNodes)})})},Vr=(e,t)=>{const n=[...t.querySelectorAll("pre[data-language]")];let r=0;e.forEach(o=>{if(!H.$isCodeNode(o))return;const a=n[r];if(r+=1,!a)return;const s=a.getAttribute(Re);s&&!o.getLanguage()&&o.setLanguage(s)})},rn="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"},Ur=e=>{const[,t]=e.match(/(?:^|;)color:\s*(#[0-9a-f]{3,8})/i)??[];return t?qr[t.toLowerCase()]:void 0},jr={...U.ShikiTokenizer,defaultLanguage:null,defaultTheme:rn,$tokenize(e,t){const n=U.ShikiTokenizer.$tokenize.call(this,e,t);return e.getStyle()&&e.setStyle(""),n.map(r=>H.$isCodeHighlightNode(r)?H.$createCodeHighlightNode(r.getTextContent(),Ur(r.getStyle())):r)}},Kr=1200,fe=new Set,Me=new Set,ze=new Set,Te=[];let Q=0,se=null,Ce=!1,_e=null,vt=!1;const Gr=e=>"requestIdleCallback"in window?{id:window.requestIdleCallback(e,{timeout:Kr}),kind:"idle"}:{id:globalThis.setTimeout(()=>{e({didTimeout:!0,timeRemaining:()=>0})},0),kind:"timeout"},Yr=e=>{if(e.kind==="idle"){window.cancelIdleCallback(e.id);return}globalThis.clearTimeout(e.id)},Xr=e=>e.map(t=>t.value).filter(t=>t!==""),Jr=e=>{Xr(e).forEach(t=>{if(fe.has(t)||Me.has(t)||ze.has(t)||U.isCodeLanguageLoaded(t)){fe.add(t);return}ze.add(t),Te.push(t)})},Qr=()=>{for(;Te.length>0;){const e=Te.shift();if(e&&(ze.delete(e),!(fe.has(e)||Me.has(e)))){if(U.isCodeLanguageLoaded(e)){fe.add(e);continue}return e}}},Zr=async()=>{if(!vt){if(!_e){const e=U.loadCodeTheme(rn);_e=Promise.resolve(e??void 0).then(()=>{vt=!0}).catch(()=>{}).finally(()=>{_e=null})}await _e}},eo=e=>{Q+=1,Jr(e);const t=async()=>{if(!(Q<=0||Ce)){Ce=!0;try{if(await Zr(),Q<=0)return;const r=Qr();if(!r)return;Me.add(r),await Promise.resolve(U.loadCodeLanguage(r)??void 0).then(()=>{fe.add(r)}).catch(()=>{}).finally(()=>{Me.delete(r)})}finally{Ce=!1,n()}}},n=()=>{Q<=0||se!==null||Ce||Te.length===0||(se=Gr(()=>{se=null,t()}))};return n(),()=>{Q=Math.max(0,Q-1),Q===0&&se!==null&&(Yr(se),se=null)}},ie=12,wt=6,Ct=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),to=()=>{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}},no=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},ro=(e,t,n)=>{const r=no(e),o=to(),a=t.getBoundingClientRect(),s=a.left+ie,l=a.top+ie,d=n?n.x:s,i=n?n.y+n.height+wt:l,m=n?n.y-r.height-wt:i,C=o.left+ie,_=o.top+ie,x=o.left+o.width-r.width-ie,f=o.top+o.height-r.height-ie,y=i>f?m:i;return{left:Ct(d,C,x),top:Ct(y,_,f),viewportHeight:o.height}},on=e=>{var d,i;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 m=ro(n,e.root,o);n.style.left=`${m.left}px`,n.style.top=`${m.top}px`,n.style.setProperty("--bridgerte-dialog-visible-height",`${m.viewportHeight}px`)},l=m=>{o=m,m?n.style.setProperty("--bridgerte-dialog-anchor-width",`${m.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 m;(m=e.onBackdropClick)==null||m.call(e),a()}),(d=window.visualViewport)==null||d.addEventListener("resize",s),(i=window.visualViewport)==null||i.addEventListener("scroll",s),window.addEventListener("resize",s),{element:n,content:r,open:l,close:a,destroy(){var m,C;a(),(m=window.visualViewport)==null||m.removeEventListener("resize",s),(C=window.visualViewport)==null||C.removeEventListener("scroll",s),window.removeEventListener("resize",s),t.remove(),n.remove()}}},Se=e=>typeof requestAnimationFrame=="function"?requestAnimationFrame(e):window.setTimeout(e,0),Je=e=>{if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(e);return}window.clearTimeout(e)},V=(e,t={})=>{let n=null;const r=s=>{const l=n??e;if(!(!s&&!n)){if(s){l.dataset.pressed="true";return}delete l.dataset.pressed,n=null}},o=s=>{if(s.pointerType==="mouse")return;const l=s.target;n=l instanceof HTMLElement&&t.targetSelector?l.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)}},oo=(e,t,n)=>{e.update(t,{tag:g.SKIP_SCROLL_INTO_VIEW_TAG,onUpdate:n})},_t="language",ao="bridgerte-code-block-language",Et=8;let kt=0;const so=()=>(kt+=1,`${ao}-${kt}`),io=(e,t,n)=>{const r=e.querySelector(".bridgerte__code-block-control-label");e.dataset.language=n??"",r&&(r.textContent=nn(t,n))},lo=(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=nn(e,t),o.className="bridgerte__code-block-control-arrow",n.append(r,o),n},co=e=>{const t=document.createElement("div"),n=e.root.querySelector(".bridgerte__content")??e.root,r=jt.resolvePayloadPanelSchema(e.languagePanel??W.codeBlockLanguagePanel,e.payloadPanelConfig),o=tn(r);let a=null,s=null,l=null;const d=new Map,i=new Map,m=()=>{l??(l=eo(o))},C=()=>{a==null||a.close()},_=(u,c)=>{e.isReadonly()||oo(e.editor,()=>{const b=g.$getNodeByKey(u);H.$isCodeNode(b)&&b.setLanguage(c)})},x=(u,c)=>{Se(()=>{_(u,c)})},f=(u,c,b)=>{var h;return((h=e.onRequest)==null?void 0:h.call(e,{id:so(),readonly:e.isReadonly(),menuId:"code-block-language",command:{type:"block.setCodeLanguage",language:b},panel:r,anchorRect:{x:c.left,y:c.top,width:c.width,height:c.height},currentValues:{[_t]:b},submit:v=>{C(),x(u,v[_t]??"")},cancel:C}))===!0},y=(u,c)=>{const b=e.root.getBoundingClientRect(),h=c.getBoundingClientRect(),v=h.bottom<b.top||h.top>b.bottom;u.hidden=v,u.style.transform=`translate(${h.left-b.left+Et}px, ${h.top-b.top+Et}px)`},T=u=>{var R;const c=e.editor.getElementByKey(u);if(!c){(R=d.get(u))==null||R.remove(),d.delete(u);return}m(),c.dataset.lexicalKey=u;const b=c.getAttribute("data-language"),h=d.get(u);if(h){io(h,o,b),y(h,c);return}const v=lo(o,b),L=V(v);v.dataset.lexicalKey=u,d.set(u,v),i.set(v,L),t.append(v),y(v,c)},p=()=>{s=null,d.forEach((u,c)=>{T(c)})},w=()=>{s===null&&(s=Se(p))},S=(u,c)=>{const b=u.getBoundingClientRect(),h=u.dataset.language??"";if(f(c,b,h))return;if(e.isReadonly()){C();return}a||(a=on({root:e.root,className:"bridgerte__code-block-menu",onBackdropClick:C}));const v=document.createElement("div");a.content.replaceChildren(),a.element.style.minWidth="180px",v.className="bridgerte__code-block-menu-list",o.forEach(L=>{const R=document.createElement("button");R.type="button",R.className="bridgerte__menu-item bridgerte__code-block-menu-item",R.textContent=L.label,V(R),R.addEventListener("pointerdown",D=>{D.preventDefault()}),R.addEventListener("click",()=>{C(),x(c,L.value)}),v.append(R)}),a.content.append(v),a.open({x:b.left,y:b.top,width:180,height:b.height})};t.className="bridgerte__code-block-controls-layer",e.root.append(t);const M=e.editor.registerMutationListener(H.CodeNode,u=>{u.forEach((c,b)=>{if(c==="destroyed"){const h=d.get(b);if(h){const v=i.get(h);v==null||v(),i.delete(h),h.remove()}d.delete(b);return}T(b)})}),I=e.editor.registerUpdateListener(w),$=u=>{const c=u.target;if(!(c instanceof HTMLElement))return;const b=c.closest(".bridgerte__code-block-control");if(!(b instanceof HTMLElement))return;const h=b.dataset.lexicalKey;h&&(u.preventDefault(),u.stopPropagation(),S(b,h))},N=u=>{const c=u.target;c instanceof HTMLElement&&c.closest(".bridgerte__code-block-control")&&u.preventDefault()},E=u=>{const c=u.target;if(!(c instanceof HTMLElement))return;if(!c.closest(".bridgerte__code-block")){C();return}const b=c.closest(".bridgerte__code-block");if(!b||b.textContent)return;const h=b.dataset.lexicalKey;h&&(e.editor.update(()=>{const v=g.$getNodeByKey(h);H.$isCodeNode(v)&&v.selectEnd()}),e.editor.focus())};return t.addEventListener("pointerdown",N),t.addEventListener("click",$),n.addEventListener("pointerdown",E),n.addEventListener("scroll",w,{passive:!0}),window.addEventListener("resize",w),{destroy(){M(),I(),l==null||l(),l=null,s!==null&&(Je(s),s=null),t.removeEventListener("pointerdown",N),t.removeEventListener("click",$),n.removeEventListener("pointerdown",E),n.removeEventListener("scroll",w),window.removeEventListener("resize",w),d.forEach(u=>{var c;(c=i.get(u))==null||c(),u.remove()}),d.clear(),i.clear(),t.remove(),a==null||a.destroy(),a=null}}},Pe=(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}}}),an=(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)}},sn=(e,t)=>{const n=t.find(o=>W.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}},Qe=["media-resize-20","media-resize-50","media-resize-100"],uo=["media-align-left","media-align-center","media-align-right","|",...Qe,"|","media-remove"],go=["media-retry","|","media-remove"],mo=[{id:"media-align-left",command:{type:"media.align",assetId:"",value:"left"},label:"左",icon:"align-left",group:"media"},{id:"media-align-center",command:{type:"media.align",assetId:"",value:"center"},label:"中",icon:"align-center",group:"media"},{id:"media-align-right",command:{type:"media.align",assetId:"",value:"right"},label:"右",icon:"align-right",group:"media"},{id:"media-resize-20",command:{type:"media.resize",assetId:"",widthPercent:20},label:"20%",icon:"media-resize-20",group:"media"},{id:"media-resize-50",command:{type:"media.resize",assetId:"",widthPercent:50},label:"50%",icon:"media-resize-50",group:"media"},{id:"media-resize-100",command:{type:"media.resize",assetId:"",widthPercent:100},label:"100%",icon:"media-resize-100",group:"media"},{id:"media-retry",command:{type:"media.retry",assetId:""},label:"重试",icon:"refresh-cw",group:"media"},{id:"media-remove",command:{type:"media.remove",assetId:""},label:"删除",icon:"trash-2",group:"media"}],ho=e=>Qe.includes(e),po=e=>typeof e=="object"&&Array.isArray(e.menuKeys),fo=e=>new Set(e.flatMap(t=>t==="|"?[]:typeof t=="string"?[t]:po(t)?[t.key,...t.menuKeys]:[])),bo=e=>{const t=fo(e),n=Qe.filter(r=>!t.has(r));return n.length===0?e:[...e,"|",...n]},yo=e=>{var r;const t=(e==null?void 0:e.toolbarKeys)??uo;return{...e,toolbarKeys:bo(t),excludeKeys:(r=e==null?void 0:e.excludeKeys)==null?void 0:r.filter(o=>!ho(o))}},vo=(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}},wo=(e,t,n)=>e.command.type==="media.resize"?e.command.widthPercent===t:e.command.type==="media.align"&&e.command.value===n,ln=(e,t={})=>{const n=Pe(mo,{menuLabels:t.menuLabels}),r=e==="error"?{toolbarKeys:go}:yo(t.config);return W.resolveToolbarMenu(r,n)},le=8,ue="bridgerte__media-controls-button",Co=e=>e.querySelector(".bridgerte__content")??e,xt=e=>e instanceof Element?e.closest(".bridgerte__media"):null,_o=(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},cn=e=>e.flatMap(t=>t.type==="button"?[t.item]:t.type==="group"?t.items:[]),Eo=(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(_o(a,wo(a,n,r)))})},ko=(e,t,n)=>{const r=document.createElement("div"),o=e.dataset.status,a=Number(e.dataset.displayWidthPercent??t),s=e.dataset.align??"left",l=ln(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=cn(l).map(d=>d.id).join("|"),l.forEach(d=>{Eo(r,d,a,s)}),r},xo=e=>{const t=document.createElement("div"),n=Co(e.root),r=new Map,o=new Map,a=new Map;let s=null,l=null,d=!1,i=null;const m=c=>{var h;const b=r.get(c);b&&((h=o.get(b))==null||h(),o.delete(b),b.remove(),r.delete(c),i===c&&(i=null))},C=(c,b)=>b.dataset.status==="error"||i===c,_=(c,b)=>{const h=e.root.getBoundingClientRect(),v=b.getBoundingClientRect(),L=v.bottom<h.top||v.top>h.bottom,R=Math.max(le,h.width-c.offsetWidth-le),D=Math.min(Math.max(v.left-h.left+le,le),R),O=Math.max(le,v.top-h.top-c.offsetHeight-le);c.hidden=L,c.style.transform=`translate(${D}px, ${O}px)`},x=c=>{const b=e.editor.getElementByKey(c);if(!b){m(c);return}b.dataset.lexicalKey=c,a.set(b,c);const h=r.get(c);if(!C(c,b)){m(c);return}if(h){const R=b.dataset.status==="error",D=h.querySelector('[data-action="retry"]')!==null,O=b.dataset.displayWidthPercent??"",P=b.dataset.align??"";if(R===D&&h.dataset.displayWidthPercent===O&&h.dataset.align===P){_(h,b);return}m(c)}const v=ko(b,e.defaultWidthPercent,e),L=V(v,{targetSelector:`.${ue}`});v.dataset.lexicalKey=c,v.dataset.assetId=b.dataset.assetId,r.set(c,v),o.set(v,L),t.append(v),_(v,b)},f=()=>{s=null,a.forEach((c,b)=>{e.root.contains(b)||(a.delete(b),m(c))}),e.root.querySelectorAll(".bridgerte__media").forEach(c=>{const b=c.dataset.lexicalKey;b&&(a.set(c,b),x(b))}),r.forEach((c,b)=>{x(b)}),i!==null&&x(i)},y=()=>{s===null&&(s=Se(f))},T=(c,b)=>{const h=b.dataset.assetId,v=cn(ln(b.dataset.status,{config:e.mediaControlsConfig,menuLabels:e.menuLabels})).find(R=>R.id===c.dataset.menuItemId);if(!h||!v)return;const L=vo(v,h);L&&e.executeCommand(L)},p=c=>{if(!c){const v=i;i=null,v!==null&&x(v);return}const b=c.dataset.lexicalKey?c.dataset.lexicalKey:a.get(c)??null;if(!b||i===b)return;const h=i;i=b,h!==null&&x(h),x(b)},w=c=>{const b=xt(c.target);p(b)},S=c=>{p(xt(c.target))},M=c=>{const b=c.target;if(!(b instanceof HTMLElement))return;const h=b.closest(`.${ue}`);h&&(c.preventDefault(),l=c.pointerType==="mouse"?null:h)},I=c=>{if(c.pointerType==="mouse"||!l)return;const b=c.target,h=b instanceof HTMLElement?b.closest(".bridgerte__media-controls"):null,v=b instanceof HTMLElement?b.closest(`.${ue}`):null;v===l&&h&&(c.preventDefault(),c.stopPropagation(),T(v,h),d=!0),l=null},$=()=>{l=null},N=c=>{if(d){d=!1,c.preventDefault(),c.stopPropagation();return}const b=c.target;if(!(b instanceof HTMLElement))return;const h=b.closest(`.${ue}`),v=b.closest(".bridgerte__media-controls");!h||!v||(c.preventDefault(),c.stopPropagation(),T(h,v))},E=e.editor.registerMutationListener(ce,c=>{c.forEach((b,h)=>{if(b==="destroyed"){m(h);return}x(h)})}),u=e.editor.registerUpdateListener(y);return t.className="bridgerte__media-controls-layer",e.root.append(t),t.addEventListener("pointerdown",M),t.addEventListener("pointerup",I),t.addEventListener("pointercancel",$),t.addEventListener("click",N),n.addEventListener("pointerdown",w),n.addEventListener("focusin",S),n.addEventListener("scroll",y,{passive:!0}),window.addEventListener("resize",y),{destroy(){E(),u(),s!==null&&(Je(s),s=null),t.removeEventListener("pointerdown",M),t.removeEventListener("pointerup",I),t.removeEventListener("pointercancel",$),t.removeEventListener("click",N),n.removeEventListener("pointerdown",w),n.removeEventListener("focusin",S),n.removeEventListener("scroll",y),window.removeEventListener("resize",y),r.forEach(c=>{var b;(b=o.get(c))==null||b(),c.remove()}),r.clear(),o.clear(),a.clear(),t.remove()}}},Mo=["width","height"],K=(e,t)=>{var r;const n=(r=e[t])==null?void 0:r.trim();return n||void 0},We=(e,t)=>{const n=Number.parseInt(e[t]??"",10);return Number.isFinite(n)&&n>0?n:void 0},Mt=(e,t)=>Mo.reduce((n,r)=>{const o=We(t,r);return o===void 0?n:{...n,[r]:o}},e),To=(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=We(t,"rows"),r=We(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?Mt({...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?Mt({...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),Ve=({r:e,g:t,b:n})=>`#${[e,t,n].map(r=>Z(r).toString(16).padStart(2,"0")).join("")}`,dn=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)}},So=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},No=e=>{const t=dn(e)??So(e);return t?Ve(t):null},un=e=>Math.min(Math.max(e,0),1),Lo=({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),l=Math.min(r,o,a),d=s-l;let i=0;return d!==0&&(s===r?i=60*((o-a)/d%6):s===o?i=60*((a-r)/d+2):i=60*((r-o)/d+4)),{h:i<0?i+360:i,s:s===0?0:d/s,v:s}},Tt=({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,l=0,d=0;return e<60?(s=r,l=o):e<120?(s=o,l=r):e<180?(l=r,d=o):e<240?(l=o,d=r):e<300?(s=o,d=r):(s=r,d=o),{r:(s+a)*255,g:(l+a)*255,b:(d+a)*255}},Ro=({h:e,s:t})=>{const n=e*Math.PI/180,r=un(t)*50;return{x:50+Math.cos(n)*r,y:50+Math.sin(n)*r}},St=(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,l=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:un(l/(n.width/2)),v:1}},Po=["#000000","#ffffff"],Io=e=>{var t;return(t=e.options)!=null&&t.length?e.options:Po.map(n=>({label:n,value:n}))},gn=()=>{const e=document.createElement("section");return e.className="bridgerte__payload-panel-field",e},$o=(e,t,n)=>{const r=gn(),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",V(s),s.addEventListener("pointerdown",l=>{l.preventDefault()}),s.addEventListener("click",()=>{n({...t,[e.name]:a.value})}),o.append(s)}),r.append(o),r},Ao=(e,t,n)=>{const r=gn(),o=document.createElement("div"),a=document.createElement("span"),s=document.createElement("div"),l=document.createElement("div");let d={h:0,s:0,v:1},i=null;const m=x=>{const f=No(x);if(!f)return;t[e.name]=f,l.style.background=f,d=Lo(dn(f)??{r:255,g:255,b:255});const y=Ro(d);o.dataset.active="true",l.dataset.empty="false",a.style.left=`${y.x}%`,a.style.top=`${y.y}%`},C=()=>{const x=t[e.name];x&&n({...t,[e.name]:x})};r.className="bridgerte__payload-panel-field",o.className="bridgerte__payload-panel-color-wheel",o.setAttribute("aria-label",`${e.label}选择区域`),a.className="bridgerte__payload-panel-color-wheel-handle",s.className="bridgerte__payload-panel-color-actions",l.className="bridgerte__payload-panel-color-preview",l.dataset.empty="true",o.append(a),Io(e).forEach(x=>{const f=document.createElement("button"),y=x.value;f.type="button",f.className="bridgerte__payload-panel-color-swatch",f.dataset.value=y,f.style.background=y,f.setAttribute("aria-label",`选择颜色 ${x.label}`),V(f),f.addEventListener("pointerdown",T=>{T.preventDefault()}),f.addEventListener("click",()=>{m(y),C()}),s.append(f)}),o.addEventListener("pointerdown",x=>{i=x.pointerId,o.setPointerCapture(x.pointerId),d=St(x,o),m(Ve(Tt(d))),x.preventDefault()}),o.addEventListener("pointermove",x=>{i===x.pointerId&&(d=St(x,o),m(Ve(Tt(d))))}),o.addEventListener("pointerup",x=>{i===x.pointerId&&(i=null,o.releasePointerCapture(x.pointerId),C())}),o.addEventListener("pointercancel",x=>{i===x.pointerId&&(i=null,o.releasePointerCapture(x.pointerId))});const _=t[e.name];return _&&m(_),r.append(o,l,s),r},Bo=(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},Do=(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},Oo=({field:e,values:t,onSubmit:n})=>e.type==="color"?Ao(e,t,n):e.type==="text"?Bo(e,t,n):e.type==="number"?Do(e,t,n):$o(e,t,n),Ho=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)??""},Fo=(e,t)=>(t==null?void 0:t[e.name])??(e.type==="color"?"":Ho(e)),Nt=e=>e.some(t=>t.type==="text"||t.type==="number"),zo=e=>{const t=e.querySelector(".bridgerte__payload-panel-text-input");queueMicrotask(()=>{t==null||t.focus(),t==null||t.select()})},Wo=(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}`),V(s),s.addEventListener("pointerdown",l=>{l.preventDefault()}),s.addEventListener("click",()=>{t(a)}),r.append(s)}return r},Vo=e=>e==="font-size"||e==="font-family"||e==="line-height"?"180px":"220px",qo=3,Uo=3,jo=10,mn=10,Ko=16,Go=2,Yo=24,Xo=()=>{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},Jo=(e,t)=>e.type==="number"&&e.name===t,Lt=(e,t)=>typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):t,Rt=(e,t,n,r)=>{const o=e.find(m=>Jo(m,t)),a=Lt(o==null?void 0:o.min,1),s=Lt(o==null?void 0:o.max,n),l=Math.max(a,s),d=Math.min(Math.max(r,a),l),i=ge(o==null?void 0:o.defaultValue,{min:a,max:l,defaultValue:d});return{min:a,max:l,defaultValue:i}},hn=e=>({rows:Rt(e,"rows",Y.BRIDGERTE_TABLE_INSERT_MAX_ROWS,qo),cols:Rt(e,"cols",Y.BRIDGERTE_TABLE_INSERT_MAX_COLS,Uo)}),Qo=e=>{const t=Math.min(e.cols.max,mn);return`${t*Ko+Math.max(t-1,0)*Go+Yo}px`},Zo=({fields:e,values:t,onSubmit:n})=>{const r=hn(e),o=document.createElement("section"),a=document.createElement("div"),s=document.createElement("div"),l=[],d=Xo(),i=Math.min(r.rows.max,jo),m=Math.min(r.cols.max,mn),C={...r.rows,max:i,defaultValue:Math.min(r.rows.defaultValue,i)},_={...r.cols,max:m,defaultValue:Math.min(r.cols.defaultValue,m)};let x=ge(t.rows,C),f=ge(t.cols,_),y=null;const T=(N,E)=>{x=N,f=E,t.rows=String(N),t.cols=String(E),s.textContent=`${N} x ${E}`,l.forEach(u=>{const c=Number.parseInt(u.dataset.rows??"0",10),b=Number.parseInt(u.dataset.cols??"0",10);u.dataset.active=String(c<=N&&b<=E)})},p=N=>{var E;return((E=document.elementFromPoint(N.clientX,N.clientY))==null?void 0:E.closest(".bridgerte__payload-panel-table-cell"))??null},w=N=>{if(!N)return;const E=ge(N.dataset.rows,C),u=ge(N.dataset.cols,_);T(E,u)},S=()=>{n({...t,rows:String(x),cols:String(f)})},M=()=>{y=null},I=()=>{window.setTimeout(M,0)},$=(N,E)=>{if(N.detail>0&&y!==E){N.preventDefault(),N.stopPropagation();return}M(),w(E),S()};for(let N=1;N<=i;N+=1)for(let E=1;E<=m;E+=1){const u=document.createElement("button");u.type="button",u.className="bridgerte__payload-panel-table-cell",u.dataset.rows=String(N),u.dataset.cols=String(E),u.setAttribute("aria-label",`插入 ${N} 行 ${E} 列表格`),V(u),u.addEventListener("pointerdown",c=>{y=u,w(u),c.preventDefault()}),u.addEventListener("pointerup",I),u.addEventListener("pointercancel",M),u.addEventListener("click",c=>{$(c,u)}),d&&u.addEventListener("pointerenter",()=>{w(u)}),l.push(u),a.append(u)}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(m)),s.className="bridgerte__payload-panel-table-status",s.setAttribute("aria-live","polite"),a.addEventListener("pointermove",N=>{d||w(p(N))}),T(x,f),o.append(a,s),o},ea="bridgerte-payload-panel";let Pt=0;const ta=()=>(Pt+=1,`${ea}-${Pt}`),Ee=e=>e.panel.id==="table-insert",na=(e,t)=>{const n=document.createElement("button");return n.type="button",n.className="bridgerte__payload-panel-submit",n.textContent="应用",V(n),n.addEventListener("pointerdown",r=>{r.preventDefault()}),n.addEventListener("click",()=>{t(e)}),n},ra=e=>{let t=null,n={};const r=on({root:e.editorRoot,className:"bridgerte__payload-panel",onBackdropClick:()=>{o()}});function o(){t=null,n={},r.close(),r.content.replaceChildren()}const a=i=>{var C;if(!t||t.readonly||e.isReadonly())return;const m=To(t.command,i);m&&((C=e.restoreEditorFocus)==null||C.call(e,()=>{o(),e.isReadonly()||e.executeCommand(m)}))},s=i=>{var m;!t||t.readonly||e.isReadonly()||(m=e.restoreEditorFocus)==null||m.call(e,()=>{o(),e.isReadonly()||e.executeCommand(i)})},l=i=>{n=i.panel.fields.reduce((C,_)=>(C[_.name]=Fo(_,i.currentValues),C),{});const m=Ee(i)?Qo(hn(i.panel.fields)):Vo(i.panel.id);r.element.style.width=`min(${m}, calc(100vw - 24px))`,r.content.append(Wo(i,s,e.getClearCommand)),Ee(i)?r.content.append(Zo({fields:i.panel.fields,values:n,onSubmit:a})):i.panel.fields.forEach(C=>{r.content.append(Oo({field:C,values:n,onSubmit:a}))}),!Ee(i)&&Nt(i.panel.fields)&&r.content.append(na(n,a)),r.open(i.anchorRect),!Ee(i)&&Nt(i.panel.fields)&&zo(r.content)};return{open:i=>{var _;o();const m={...i,id:ta(),readonly:e.isReadonly(),submit:a,cancel:o};if(t=m,((_=e.onRequest)==null?void 0:_.call(e,m))!==!0){if(m.readonly){o();return}l(i)}},close:o,destroy(){o(),r.destroy()}}},me="bridgerte__table-controls-button",oa=["table-insert-row-after","table-delete-row","table-insert-column-after","table-delete-column","table-delete"],aa=()=>{const e=new Map(W.defaultMenuSchema.map(t=>[t.id,t]));return oa.map(t=>W.tableHeaderMenuItems.find(n=>n.id===t)??e.get(t)).filter(t=>t!==void 0)},pn=aa(),sa=new Map(pn.map(e=>[e.id,e])),ia=e=>e.matches(".bridgerte__table")?e:e.querySelector(".bridgerte__table")??e,la=(e,t)=>e.classList.contains("bridgerte__table-wrapper")?e:t.parentElement instanceof HTMLElement?t.parentElement:t,ca=e=>e.querySelector(".bridgerte__content")??e,It=e=>e instanceof Element?e.closest(".bridgerte__table-wrapper"):null,da=e=>{const t=e.getFirstChild();if(!B.$isTableRowNode(t))return null;const n=t.getFirstChild();return B.$isTableCellNode(n)?n:null},ua=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},ga=()=>{const e=document.createElement("div");return e.className="bridgerte__table-controls",e.contentEditable="false",e.setAttribute("aria-label","表格操作"),pn.forEach(t=>{e.append(ua(t))}),e},ma=e=>{const t=document.createElement("div"),n=ca(e.root),r=new Map,o=new Map,a=new Map;let s=null,l=null,d=!1,i=null;const m=(h,v)=>{const L=e.root.getBoundingClientRect(),R=v.getBoundingClientRect(),D=R.bottom<L.top||R.top>L.bottom,O=Math.max(8,L.width-h.offsetWidth-8),P=Math.min(Math.max(R.left-L.left+8,8),O),k=Math.max(8,R.top-L.top-h.offsetHeight-8);h.hidden=D,h.style.transform=`translate(${P}px, ${k}px)`},C=h=>i===h,_=h=>{const v=e.editor.getElementByKey(h);if(!v){x(h);return}v.dataset.lexicalKey=h;const L=ia(v),R=la(v,L);a.set(R,h);const D=r.get(h);if(!C(h)){x(h);return}if(D){m(D,R);return}const O=ga(),P=V(O,{targetSelector:`.${me}`});O.dataset.lexicalKey=h,r.set(h,O),o.set(O,P),t.append(O),m(O,R)},x=h=>{var L;const v=r.get(h);v&&((L=o.get(v))==null||L(),o.delete(v),v.remove(),r.delete(h),i===h&&(i=null))},f=()=>{s=null,a.forEach((h,v)=>{e.root.contains(v)||(a.delete(v),x(h))}),e.root.querySelectorAll(".bridgerte__table-wrapper").forEach(h=>{const v=h.dataset.lexicalKey;v&&(a.set(h,v),_(v))}),r.forEach((h,v)=>{_(v)}),i!==null&&_(i)},y=()=>{s===null&&(s=Se(f))},T=h=>{e.editor.update(()=>{var L;const v=g.$getNodeByKey(h);v instanceof B.TableNode&&((L=da(v))==null||L.selectStart())}),e.editor.focus()},p=(h,v)=>{T(h),e.executeCommand(v)},w=(h,v)=>{const L=v.dataset.lexicalKey,R=h.dataset.menuItemId,D=R?sa.get(R):void 0;!L||!D||p(L,D.command)},S=h=>{if(!h){const R=i;i=null,R!==null&&_(R);return}const v=h.dataset.lexicalKey?h.dataset.lexicalKey:a.get(h)??null;if(!v||i===v)return;const L=i;i=v,L!==null&&_(L),_(v)},M=h=>{S(It(h.target))},I=h=>{S(It(h.target))},$=h=>{const v=h.target;if(!(v instanceof HTMLElement))return;const L=v.closest(`.${me}`);L&&(h.preventDefault(),l=h.pointerType==="mouse"?null:L)},N=h=>{if(h.pointerType==="mouse"||!l)return;const v=h.target,L=v instanceof HTMLElement?v.closest(".bridgerte__table-controls"):null,R=v instanceof HTMLElement?v.closest(`.${me}`):null;R===l&&L&&(h.preventDefault(),h.stopPropagation(),w(R,L),d=!0),l=null},E=()=>{l=null},u=h=>{if(d){d=!1,h.preventDefault(),h.stopPropagation();return}const v=h.target;if(!(v instanceof HTMLElement))return;const L=v.closest(`.${me}`),R=v.closest(".bridgerte__table-controls");!L||!R||(h.preventDefault(),h.stopPropagation(),w(L,R))},c=e.editor.registerMutationListener(B.TableNode,h=>{h.forEach((v,L)=>{if(v==="destroyed"){x(L);return}_(L)})}),b=e.editor.registerUpdateListener(y);return t.className="bridgerte__table-controls-layer",e.root.append(t),t.addEventListener("pointerdown",$),t.addEventListener("pointerup",N),t.addEventListener("pointercancel",E),t.addEventListener("click",u),n.addEventListener("pointerdown",M),n.addEventListener("focusin",I),n.addEventListener("scroll",y,{passive:!0}),window.addEventListener("resize",y),{destroy(){c(),b(),s!==null&&(Je(s),s=null),t.removeEventListener("pointerdown",$),t.removeEventListener("pointerup",N),t.removeEventListener("pointercancel",E),t.removeEventListener("click",u),n.removeEventListener("pointerdown",M),n.removeEventListener("focusin",I),n.removeEventListener("scroll",y),window.removeEventListener("resize",y),r.forEach(h=>{var v;(v=o.get(h))==null||v(),h.remove()}),r.clear(),o.clear(),a.clear(),t.remove()}}},ha=e=>{const t=ra({editorRoot:e.editorRoot,isReadonly:e.isReadonly,restoreEditorFocus:e.restoreEditorFocus,executeCommand:e.executeCommand,getClearCommand:e.getClearCommand,onRequest:e.onRequest}),n=co({editor:e.lexicalEditor,root:e.editorRoot,isReadonly:e.isReadonly,languagePanel:e.codeBlockLanguagePanel,payloadPanelConfig:e.payloadPanelConfig,onRequest:e.onRequest}),r=ma({editor:e.lexicalEditor,root:e.editorRoot,executeCommand:e.executeCommand}),o=xo({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()}}},pa=(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}},fa=({editor:e})=>{let t=null;return{capture(){e.getEditorState().read(()=>{var n;t=((n=g.$getSelection())==null?void 0:n.clone())??null})},restore(){t&&e.update(()=>{g.$setSelection((t==null?void 0:t.clone())??null)})},clear(){t=null}}},ba=/((https?:\/\/|www\.)[^\s<>()]+[^\s<>().,;:!?])/i,ya=/([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})/i,va={changeHandlers:[],excludeParents:[],matchers:[z.createLinkMatcherWithRegExp(ba,e=>e.startsWith("http://")||e.startsWith("https://")?e:`https://${e}`),z.createLinkMatcherWithRegExp(ya,e=>`mailto:${e}`)]},wa=({editor:e})=>z.registerAutoLink(e,va),Ca=[".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(","),_a=(e,t)=>{const n=e.anchorNode,r=e.focusNode;return n!==null&&r!==null&&t.contains(n)&&t.contains(r)},Ea=e=>{e.querySelectorAll(Ca).forEach(t=>{t.remove()}),e.querySelectorAll('[contenteditable="false"]').forEach(t=>{t.classList.contains("bridgerte__media")||t.remove()})},ka=e=>{const t=e.ownerDocument.getSelection();if(!t||t.rangeCount===0||!_a(t,e))return null;const n=t.getRangeAt(0).cloneContents();Ea(n);const r=e.ownerDocument.createElement("div");return r.append(n),{html:r.innerHTML,text:r.textContent??""}},xa=({target:e,isReadonly:t})=>{const n=o=>{const a=ka(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})}},ke=8,Ma=()=>{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 Ze(e,t,n={}){const r=n.placement??"bottom-start",o=n.offset??8,a=n.shiftPadding??8,s=n.strategy??"absolute";let l=null,d=!1;const i=()=>{t.style.position=s,t.style.left="0px",t.style.top="0px",t.style.opacity="0",t.style.pointerEvents="none"},m=(f,y)=>{const T=Ma(),p=t.getBoundingClientRect(),w=T.left+ke,S=T.top+ke,M=T.left+T.width-p.width-ke,I=T.top+T.height-p.height-ke;t.style.left=`${$t(f,w,M)}px`,t.style.top=`${$t(y,S,I)}px`,t.style.opacity="",t.style.pointerEvents=""},C=async()=>{const f=await oe.computePosition(e,t,{placement:r,strategy:s,platform:oe.platform,middleware:[oe.offset(o),oe.flip(),oe.shift({padding:a})]});m(f.x,f.y)},_=()=>{l==null||l(),l=null},x=f=>{if(d!==f){if(d=f,_(),d){i(),t.hidden=!1,l=oe.autoUpdate(e,t,C),C();return}t.hidden=!0,t.style.opacity="",t.style.pointerEvents=""}};return i(),t.hidden=!0,{update:C,setOpen:x,destroy(){_(),t.hidden=!0}}}const et={"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>'},Ta=e=>{const t=document.createElement("span");return t.className="bridgerte__menu-icon-text",t.textContent=e,t},tt=(e,t,n)=>{if(t){e.innerHTML=t;return}e.append(Ta(n))},qe=()=>{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},Sa=160,Na={toolbarKeys:["bold","italic","underline","strike","inline-code","clear-style","|","color","background-color","font-size","font-family","line-height"]},La=()=>{const e=g.$getSelection();return g.$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,Ra=e=>e.flatMap(t=>t.type==="button"?[t.item]:t.type==="group"?t.items:[]),Pa=e=>{const t=document.createElement("span");return t.className="bridgerte__hoverbar-separator",t.dataset.separatorId=e.key,t.setAttribute("aria-hidden","true"),t},Ia=(e,t,n)=>{const r=sn(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)),tt(o,n[e.icon]??et[e.icon],e.label),o},$a=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,executeCommand:o,requestPayloadPanel:a,getCommandStates:s,menuSchema:l,hoverbarConfig:d,menuLabels:i,payloadPanelConfig:m,icons:C={}})=>{const _=Pe(l??W.defaultMenuSchema,{menuLabels:i,payloadPanelConfig:m}),x=W.resolveToolbarMenu(d??Na,_),f=Ra(x),y=document.createElement("span"),T=document.createElement("div");let p=null,w=!1,S=null;const M=V(T,{targetSelector:".bridgerte__hoverbar-button"});y.className="bridgerte__hoverbar-anchor",y.setAttribute("aria-hidden","true"),T.className="bridgerte__floating-menu bridgerte__hoverbar",T.setAttribute("role","toolbar"),T.setAttribute("aria-label","BridgeRTE hoverbar"),e.append(y,T),p=Ze(y,T,{placement:"top",offset:8,strategy:"fixed"});const I=()=>{S&&(window.clearTimeout(S),S=null)},$=()=>{I(),w=!1,T.replaceChildren(),T.dataset.visible="false",p==null||p.setOpen(!1)},N=()=>{const P=qe(),k=t.getBoundingClientRect();y.style.left=`${(P==null?void 0:P.left)??k.left}px`,y.style.top=`${(P==null?void 0:P.top)??k.top}px`,y.style.width=`${(P==null?void 0:P.width)||1}px`,y.style.height=`${(P==null?void 0:P.height)||1}px`},E=()=>{const P=s();T.replaceChildren(...x.flatMap(k=>k.type==="separator"?[Pa(k)]:(k.type==="button"?[k.item]:k.items).map(F=>Ia(F,P,C)))),N(),w=!0,T.dataset.visible="true",p==null||p.setOpen(!0),p==null||p.update()},u=()=>r()?!1:n.getEditorState().read(La),c=(P=!1)=>{if(I(),!u()){$();return}if(P){E();return}w&&$(),S=window.setTimeout(()=>{S=null,u()&&E()},Sa)},b=P=>{const k=f.find(A=>A.id===P.dataset.hoverbarItemId);if(!(!k||P.disabled)){if(k.payloadPanel){const A=P.getBoundingClientRect();a({menuId:k.id,command:k.command,panel:k.payloadPanel,currentValues:an(k,s()),anchorRect:{x:A.left,y:A.top,width:A.width,height:A.height}}),c(!0);return}o(k.command),c(!0)}},h=P=>{Bt(P.target)&&P.preventDefault()},v=P=>{const k=Bt(P.target);k&&(P.preventDefault(),b(k))},L=P=>{!w||At(P,T)||At(P,t)||$()},R=n.registerCommand(g.SELECTION_CHANGE_COMMAND,()=>(c(),!1),g.COMMAND_PRIORITY_LOW),D=n.registerUpdateListener(()=>{c()}),O=n.registerCommand(g.KEY_ESCAPE_COMMAND,P=>w?(P==null||P.preventDefault(),$(),!0):!1,g.COMMAND_PRIORITY_LOW);return T.addEventListener("pointerdown",h),T.addEventListener("click",v),document.addEventListener("pointerdown",L,!0),()=>{I(),R(),D(),O(),T.removeEventListener("pointerdown",h),T.removeEventListener("click",v),document.removeEventListener("pointerdown",L,!0),M(),p==null||p.destroy(),y.remove(),T.remove()}},Aa=e=>e.metaKey||e.ctrlKey,Ba={b:{type:"format.bold"},i:{type:"format.italic"},u:{type:"format.underline"},"\\":{type:"format.clear"}},Da={x:{type:"format.strike"},l:{type:"align",value:"left"},e:{type:"align",value:"center"},r:{type:"align",value:"right"},j:{type:"align",value:"justify"}},Oa={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}},Ha=e=>{const t=e.key.toLowerCase(),n=e.code;if(!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey||!Aa(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 Oa[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"}:Da[t]??null:t==="z"?{type:"history.undo"}:t==="y"&&e.ctrlKey&&!e.metaKey?{type:"history.redo"}:t==="`"||t==="~"||n==="Backquote"?{type:"format.inlineCode"}:Ba[t]??null},Fa=({target:e,isReadonly:t,executeCommand:n})=>{const r=o=>{if(t())return;const a=Ha(o);a&&(o.preventDefault(),n(a))};return e.addEventListener("keydown",r),()=>{e.removeEventListener("keydown",r)}},za=(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)},nt=(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=nt(r,t);if(o)return o}return null},fn=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,menu:o,anchor:a,itemSelector:s,getCurrentTrigger:l,getTriggerRect:d,resolveItems:i,renderItem:m,renderStatus:C,onStateChange:_,onSelect:x})=>{let f=null,y=0;const T=V(o,{targetSelector:s}),p=Ze(a,o,{placement:"bottom-start",offset:2,strategy:"fixed"});e.append(a,o);const w=()=>{const k=f?d(f.trigger)??qe():qe(),A=t.getBoundingClientRect();return k??A},S=()=>{const k=w();a.style.left=`${k.left}px`,a.style.top=`${k.top}px`,a.style.height=`${k.height||1}px`},M=(k=!0)=>{f=null,o.dataset.visible="false",k&&o.replaceChildren(),p.setOpen(!1)},I=()=>{const k=o.querySelector(`${s}[data-active="true"]`);k&&za(o,k)},$=(k,A)=>{!f||f.requestId!==A.requestId||(M(),x(k,A.trigger))},N=()=>{if(!f){M();return}const k=f,A=w();if((_==null?void 0:_(k,{anchorRect:A,close:M,selectItem:re=>$(re,k)}))===!0){o.replaceChildren(),o.dataset.visible="false",p.setOpen(!1);return}if(k.status==="success")o.replaceChildren(...k.items.map((re,st)=>m(re,st,st===k.activeIndex)));else{const re=C==null?void 0:C(k.status,k.trigger.query,k.error);o.replaceChildren(...re?[re]:[])}const X=o.children.length>0;o.dataset.visible=String(X),S(),p.setOpen(X),I(),p.update()},E=async(k,A)=>{let F;try{F=await Promise.resolve(i(k))}catch(X){(f==null?void 0:f.requestId)===A&&(f={...f,items:[],activeIndex:0,status:"error",error:X},N());return}!f||A!==f.requestId||(f={...f,items:F,activeIndex:Math.min(f.activeIndex,Math.max(F.length-1,0)),status:F.length>0?"success":"empty",error:void 0},N())},u=()=>{if(r()){M();return}const k=n.getEditorState().read(l);if(!k){M(!1);return}y+=1,f={trigger:k,items:[],activeIndex:0,requestId:y,status:"loading",error:void 0},N(),E(k.query,y)},c=()=>{if(!f||f.status!=="success")return!1;const k=f.items[f.activeIndex],A=f.trigger;return k?(M(),x(k,A),!0):!1},b=k=>!f||f.status!=="success"||f.items.length===0?!1:(f={...f,activeIndex:(f.activeIndex+k+f.items.length)%f.items.length},N(),!0),h=k=>{const A=k.target,F=A instanceof HTMLElement?A.closest(s):null,X=F!=null&&F.dataset.index?Number.parseInt(F.dataset.index,10):Number.NaN;!f||f.status!=="success"||Number.isNaN(X)||(f={...f,activeIndex:X},k.preventDefault(),c())},v=k=>{const A=k.target;A instanceof HTMLElement&&A.closest(s)&&k.preventDefault()},L=n.registerUpdateListener(()=>{u()}),R=n.registerCommand(g.KEY_ARROW_DOWN_COMMAND,k=>b(1)?(k==null||k.preventDefault(),!0):!1,g.COMMAND_PRIORITY_LOW),D=n.registerCommand(g.KEY_ARROW_UP_COMMAND,k=>b(-1)?(k==null||k.preventDefault(),!0):!1,g.COMMAND_PRIORITY_LOW),O=n.registerCommand(g.KEY_ENTER_COMMAND,k=>c()?(k==null||k.preventDefault(),!0):!1,g.COMMAND_PRIORITY_LOW),P=n.registerCommand(g.KEY_ESCAPE_COMMAND,k=>f?(k==null||k.preventDefault(),M(),!0):!1,g.COMMAND_PRIORITY_LOW);return o.addEventListener("click",h),o.addEventListener("pointerdown",v),{close:M,destroy(){L(),R(),D(),O(),P(),o.removeEventListener("click",h),o.removeEventListener("pointerdown",v),T(),p.destroy(),a.remove(),o.remove()}}},Wa={labelField:"label",descriptionField:"description",avatarField:"avatar",iconField:"data.icon",showAvatar:!0,showIcon:!0,showDescription:!0,loadingText:"加载中",emptyText:"没有匹配的提及",errorText:"提及加载失败"},Va=e=>({...Wa,...e}),qa=(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},xe=(e,t)=>{if(t.startsWith("data."))return qa(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},Ua=e=>e.startsWith("@")?e:`@${e}`,bn=(e,t)=>{const n=xe(e,t.labelField)??e.label??e.value??e.id,r=t.showDescription?xe(e,t.descriptionField)??e.description:void 0,o=t.showAvatar?xe(e,t.avatarField)??e.avatar:void 0,a=t.showIcon&&!o?xe(e,t.iconField):void 0;return{item:e,label:Ua(n),...r?{description:r}:{},...o?{avatar:o}:{},...a?{icon:a}:{}}},ja=(e,t)=>e.map(n=>bn(n,t)),Ue=e=>e instanceof g.TextNode&&e.getTextContent().startsWith(" "),Ka=e=>{const n=e.getTextContent().slice(1);if(!n){e.remove();return}e.setTextContent(n)},Ga=(e,t)=>{const n=e.getPreviousSibling(),r=e.getNextSibling(),o=Ue(r)?r.getNextSibling():r;if(Ue(r)&&Ka(r),e.remove(),t){n==null||n.selectEnd();return}o==null||o.selectStart()},Ya=e=>{const t=g.$getSelection();if(!g.$isRangeSelection(t)||!t.isCollapsed())return null;const n=t.anchor,r=n.getNode();if(ht(r))return r;if(!(r instanceof g.TextNode))return null;const o=r.getTextContentSize(),a=r.getPreviousSibling(),s=r.getNextSibling(),l=Ue(r)&&n.offset===1,d=e?n.offset===0||l?a:null:n.offset===o?s:null;return ht(d)?d:null},Xa=(e,t,n)=>{const r=a=>{if(t())return!1;const s=Ya(a);return s?(Ga(s,a),n(),!0):!1},o=(a,s)=>{const l=r(s);return l&&a.preventDefault(),l};return[e.registerCommand(g.KEY_BACKSPACE_COMMAND,a=>o(a,!0),g.COMMAND_PRIORITY_HIGH),e.registerCommand(g.KEY_DELETE_COMMAND,a=>o(a,!1),g.COMMAND_PRIORITY_HIGH),e.registerCommand(g.DELETE_CHARACTER_COMMAND,a=>r(a),g.COMMAND_PRIORITY_HIGH)]},Ja=/(?:^|\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"}],Qa=e=>e.trim().toLowerCase(),Za=e=>[e.label,e.value,e.description].filter(Boolean).join(" ").toLowerCase(),es=e=>{const t=Qa(e);return t?Dt.filter(n=>Za(n).includes(t)):Dt},ts=()=>{const e=g.$getSelection();if(!g.$isRangeSelection(e)||!e.isCollapsed())return null;const t=e.anchor,n=t.getNode();if(!(n instanceof g.TextNode))return null;const o=n.getTextContent().slice(0,t.offset).match(Ja);if(!o)return null;const a=o[1]??"",s=o[0]??"",l=s.startsWith("@")?0:1,d=t.offset-s.length+l;return{query:a,nodeKey:n.getKey(),startOffset:d,endOffset:t.offset}},ns=()=>{const e=document.createElement("div");return e.className="bridgerte__floating-menu bridgerte__mention-menu",e.dataset.visible="false",e},rs=()=>{const e=document.createElement("span");return e.className="bridgerte__mention-anchor",e.setAttribute("aria-hidden","true"),e},os=(e,t)=>{var s;const n=e.getElementByKey(t.nodeKey),r=nt(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())},as=(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},ss=(e,t)=>{const n=document.createElement("div");return n.className="bridgerte__mention-status",n.dataset.status=e,n.textContent=t,n},is=(e,t)=>{switch(e){case"loading":return t.loadingText;case"empty":return t.emptyText;case"error":return t.errorText}},ls=e=>e?{x:e.x,y:e.y,width:e.width,height:e.height}:void 0,cs=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,executeCommand:o,mentionProvider:a,mentionMenuConfig:s,onMentionMenuRequest:l})=>{const d=ns(),i=rs(),m=Va(s),C=(f,y)=>{n.update(()=>{const T=g.$getNodeByKey(y.nodeKey);T instanceof g.TextNode&&(T.spliceText(y.startOffset,y.endOffset-y.startOffset,""),T.select(y.startOffset,y.startOffset))}),o({type:"mention.insert",item:f})},_=fn({editorRoot:e,contentElement:t,editor:n,isReadonly:r,menu:d,anchor:i,itemSelector:".bridgerte__mention-item",getCurrentTrigger:ts,getTriggerRect:f=>os(n,f),resolveItems:async f=>{const y=await Promise.resolve(a?a(f):es(f));return ja(y,m)},renderItem:as,renderStatus:f=>ss(f,is(f,m)),onStateChange:l?(f,y)=>l({id:`bridgerte-mention-menu-${f.requestId}`,query:f.trigger.query,status:f.status,items:f.items,config:m,readonly:r(),anchorRect:ls(y.anchorRect),...f.error?{error:f.error}:{},submit:T=>y.selectItem(bn(T,m)),cancel:y.close}):void 0,onSelect:(f,y)=>C(f.item,y)}),x=g.mergeRegister(...Xa(n,r,()=>_.close(!1)));return()=>{x(),_.destroy()}},ds=["script","style","iframe","object","embed","meta","link","xml","svg","math","canvas","form","input","button","select","textarea"].join(","),us=[".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(","),gs=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"]),ms=new Set(["http:","https:","mailto:"]),hs="p,div,blockquote,pre,h1,h2,h3,h4,h5,h6,ul,ol,table",ps="p,blockquote,pre,h1,h2,h3,h4,h5,h6,ul,ol,table",fs=new Set(["colspan","rowspan"]),bs=new Set(["TD","TH"]),ys=new Set(["M","O","V","W"]),vs=new Set(["SPAN"]),ws=new Set(["color","background-color"]),Cs=/^#([\da-f]{3}|[\da-f]{6}|[\da-f]{8})$/i,Ot=new Map([["B","strong"],["DEL","s"],["I","em"],["STRIKE","s"],["TT","code"]]),_s=e=>{try{const t=new URL(e,window.location.href);return ms.has(t.protocol)}catch{return!1}},rt=e=>{e.replaceWith(...e.childNodes)},ot=(e,t)=>{const n=e.ownerDocument.createElement(t);return n.append(...e.childNodes),e.replaceWith(n),n},Es=e=>{const t=e.tagName.split(":")[0]??"";return e.tagName.includes(":")&&ys.has(t)},yn=e=>{[...e.childNodes].forEach(t=>{if(t.nodeType===Node.COMMENT_NODE){t.remove();return}yn(t)})},vn=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}vn(t)})},ks=e=>/^[1-9]\d*$/.test(e.trim()),at=e=>{const t=e.trim().toLowerCase(),[,n]=t.match(Cs)??[];return n?n.length===8?`#${n.slice(2)}`:t:null},xs=(e,t)=>{if(!vs.has(e))return null;const n=t.split(";").flatMap(r=>{const[o,...a]=r.split(":"),s=o==null?void 0:o.trim().toLowerCase(),l=at(a.join(":"));return!s||!l||!ws.has(s)?[]:[`${s}: ${l}`]});return n.length>0?`${n.join("; ")};`:null},Ms=e=>{if(Es(e)){e.remove();return}if(!gs.has(e.tagName)){rt(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=xs(e.tagName,t.value);if(r){e.setAttribute(t.name,r);return}e.removeAttribute(t.name);return}if(e.tagName==="A"&&n==="href"){if(_s(t.value))return;e.removeAttribute(t.name);return}if(!(e.tagName==="A"&&["target","rel","title"].includes(n))){if(e.tagName==="PRE"&&n===Re){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(at(t.value))return;e.removeAttribute(t.name);return}bs.has(e.tagName)&&fs.has(n)&&ks(t.value)||e.removeAttribute(t.name)}})},Ts=e=>{[...e.querySelectorAll("font")].forEach(t=>{const n=t.getAttribute("color"),r=n?at(n):null,o=ot(t,"span");r&&o.setAttribute("style",`color: ${r};`)})},Ss=e=>{[...e.querySelectorAll([...Ot.keys()].join(","))].forEach(t=>{const n=Ot.get(t.tagName);n&&ot(t,n)})},Ns=e=>{[...e.querySelectorAll("div")].reverse().forEach(t=>{if(t.querySelector(ps)){rt(t);return}ot(t,"p")})},Ls=e=>{[...e.querySelectorAll("span")].forEach(t=>{t.attributes.length===0&&rt(t)})},Rs=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=>{Rs(t)&&t.remove()})},Ps=e=>{var t;return e.nodeType===Node.TEXT_NODE?!!((t=e.textContent)!=null&&t.trim()):e.nodeType!==Node.ELEMENT_NODE?!1:!e.matches(hs)},Is=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(Ps(r)){t.push(r);return}n()}),n()},$s=e=>{const t=document.createElement("template");t.innerHTML=e,t.content.querySelectorAll(ds).forEach(r=>{r.remove()}),t.content.querySelectorAll(us).forEach(r=>{r.remove()}),yn(t.content),zr(t.content),[...t.content.querySelectorAll("*")].forEach(Ms),vn(t.content),Ts(t.content),Ss(t.content),Ns(t.content),Ls(t.content),Ht(t.content);const n=document.createElement("div");return n.append(t.content.cloneNode(!0)),Is(n),Ht(n),n.innerHTML},As=/^https?:\/\/[^\s<>"']+\.[^\s<>"']+$/i,Bs=/^www\.[^\s<>"']+\.[^\s<>"']+$/i,Ds=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"),Os=/^[^\s@]+@[^\s@]+\.[^\s@]+$/i,Hs=/^\s*```([a-z0-9_+#.-]+)\s*\n([\s\S]*?)\n?```\s*$/i,Fs=e=>e.type.startsWith("image/")?"image":e.type.startsWith("video/")?"video":null,wn=e=>e?[...e].flatMap(t=>{const n=Fs(t);return n?[{type:n,file:t}]:[]}):[],Ie=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]:[]}),zs=e=>({name:e.name,mimeType:e.type||void 0,size:e.size,data:e}),Ws=e=>{const[,t,n]=e.replace(/\r\n/g,`
3
+ `).match(Hs)??[],r=ne(t);return n!==void 0&&r!==null?{code:n,language:r}:null},Vs=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)||Os.test(t)?!1:As.test(t)||Bs.test(t)||Ds.test(t)},Cn=(e,{isReadonly:t,executeCommand:n})=>t()||!Vs(e.text)?!1:(n({type:"link.set",href:e.text.trim()}),!0),je=(e,{isReadonly:t,canUploadMedia:n,uploadMediaFile:r})=>{if(t()||!n())return!1;const o=wn(e.files);return o.length===0?!1:(o.forEach(({type:a,file:s})=>{r(a,s)}),!0)},qs=(e,t)=>{const r=new DOMParser().parseFromString(t,"text/html");Wr(r.body);const o=Ke.$generateNodesFromDOM(e,r);return Vr(o,r.body),o},Us=(e,t)=>{const n=qs(e,t);if(n.length===0)return!1;if(g.$getSelection()||g.$getRoot().selectEnd(),n.some(H.$isCodeNode)){n.forEach(o=>{Le.$insertNodeToNearestRoot(o)});const r=n[n.length-1];return r&&H.$isCodeNode(r)&&g.$insertNodes([g.$createParagraphNode()]),!0}return g.$insertNodes(n),!0},js=(e,{editor:t,isReadonly:n})=>{if(n())return!1;if(!e.html.trim())return Gs(e,{editor:t,isReadonly:n});const r=$s(e.html);return r.trim()?(t.update(()=>{Us(t,r)}),!0):!1},Ks=(e,{editor:t,isReadonly:n})=>{if(n()||e.html.trim()||!e.text.trim())return!1;const r=Ws(e.text);return r?(t.update(()=>{const o=Zt(r.language||void 0),a=g.$createParagraphNode();g.$getSelection()||g.$getRoot().selectEnd(),o.append(g.$createTextNode(r.code)),Le.$insertNodeToNearestRoot(o),g.$insertNodes([a]),a.selectStart()}),!0):!1},Gs=(e,{editor:t,isReadonly:n})=>n()||e.html.trim()||!e.text?!1:(t.update(()=>{g.$getSelection()||g.$getRoot().selectEnd(),g.$insertNodes([g.$createTextNode(e.text)])}),!0),_n=(e,t)=>Ks(e,t)||js(e,t),ee=e=>{e.preventDefault(),e.stopImmediatePropagation()},Ys=(e,t)=>je(e,t)||Cn(e,t)||_n(e,t),Xs=e=>{const t=n=>{n.defaultPrevented||Cn(Ie(n.clipboardData),e)&&ee(n)};return e.target.addEventListener("paste",t,{capture:!0}),()=>{e.target.removeEventListener("paste",t,{capture:!0})}},Js=e=>{const t=o=>{o.defaultPrevented||je(Ie(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]:[];wn(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]:[]};je(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)}},Qs=e=>{const t=n=>{n.defaultPrevented||!_n(Ie(n.clipboardData),e)||ee(n)};return e.target.addEventListener("paste",t,{capture:!0}),()=>{e.target.removeEventListener("paste",t,{capture:!0})}},Zs=({target:e,isReadonly:t,onPaste:n,canUploadMedia:r,uploadMediaFile:o,executeCommand:a,editor:s})=>{const l=(i,m)=>Ys({text:m.text??i.text,html:m.html??i.html,files:i.files},{isReadonly:t,canUploadMedia:r,uploadMediaFile:o,executeCommand:a,editor:s}),d=i=>{if(t()||!n)return;const m=Ie(i.clipboardData),C=n({text:m.text,html:m.html,files:m.files.map(zs)});if(C instanceof Promise){ee(i),C.then(_=>{_!==!0&&_&&l(m,_)});return}if(C===!0){ee(i);return}C&&(ee(i),l(m,C))};return e.addEventListener("paste",d,{capture:!0}),()=>{e.removeEventListener("paste",d,{capture:!0})}},ei=["paragraph","heading-1","heading-2","heading-3","quote","code-block","ordered-list","unordered-list","todo-list","divider","upload-image","upload-video","table"],ti={showIcon:!0,loadingText:"加载中",emptyText:"没有匹配的命令",errorText:"命令加载失败"},ni=e=>({...ti,...e}),ri=e=>e.flatMap(t=>t.type==="button"?[t.item]:t.type==="group"?t.items:[]),oi=e=>({...e,toolbarKeys:(e==null?void 0:e.toolbarKeys)??ei}),ai=e=>({id:e.id,label:e.label,command:e.command,icon:e.icon,requiresPayload:e.requiresPayload,payloadPanel:e.payloadPanel,group:e.group,source:"schema"}),si=(e,t)=>ri(W.resolveToolbarMenu(oi(t),e)).map(ai),En=e=>({...e,source:"provider"}),ii=/(?:^|\s)\/([\p{L}\p{N}_-]*)$/u,li=e=>e.trim().toLowerCase(),ci=e=>[e.label,e.id,e.description,e.group,...e.keywords??[]].filter(Boolean).join(" ").toLowerCase(),di=(e,t)=>{const n=li(t);return n?e.filter(r=>ci(r).includes(n)):e},ui=async(e,t)=>(await Promise.resolve((t==null?void 0:t(e))??[])).map(En),gi=e=>"source"in e?e:En(e),mi=({menuSchema:e,slashCommandConfig:t})=>e!==void 0||t!==void 0,hi=()=>{const e=g.$getSelection();if(!g.$isRangeSelection(e)||!e.isCollapsed())return null;const t=e.anchor,n=t.getNode();if(!(n instanceof g.TextNode))return null;const o=n.getTextContent().slice(0,t.offset).match(ii);if(!o)return null;const a=o[1]??"",s=o[0]??"",l=s.startsWith("/")?0:1,d=t.offset-s.length+l;return{query:a,nodeKey:n.getKey(),startOffset:d,endOffset:t.offset}},pi=()=>{const e=document.createElement("div");return e.className="bridgerte__floating-menu bridgerte__slash-command-menu",e.dataset.visible="false",e},fi=()=>{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=nt(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())},bi=(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 l=document.createElement("span");l.className="bridgerte__slash-command-item-icon",l.setAttribute("aria-hidden","true"),tt(l,o[e.icon]??et[e.icon],e.label),a.append(l)}if(s.className="bridgerte__slash-command-item-title",s.textContent=e.label,a.append(s),e.description){const l=document.createElement("span");l.className="bridgerte__slash-command-item-description",l.textContent=e.description,a.append(l)}return a},yi=(e,t)=>{const n=document.createElement("div");return n.className="bridgerte__slash-command-status",n.dataset.status=e,n.textContent=t,n},vi=(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,wi=({editorRoot:e,contentElement:t,editor:n,isReadonly:r,executeCommand:o,requestPayloadPanel:a,menuSchema:s,slashCommandConfig:l,icons:d={},menuLabels:i,payloadPanelConfig:m,slashCommandMenuConfig:C,onSlashCommandMenuRequest:_,slashCommandProvider:x})=>{const f=pi(),y=fi(),T=ni(C),p=Pe(s??W.defaultMenuSchema,{menuLabels:i,payloadPanelConfig:m}),w=si(p,l),S=new Map(p.map(u=>[u.id,u])),M=mi({menuSchema:s,slashCommandConfig:l}),I=u=>{n.update(()=>{const c=g.$getNodeByKey(u.nodeKey);c instanceof g.TextNode&&(c.spliceText(u.startOffset,u.endOffset-u.startOffset,""),c.select(u.startOffset,u.startOffset))})};return fn({editorRoot:e,contentElement:t,editor:n,isReadonly:r,menu:f,anchor:y,itemSelector:".bridgerte__slash-command-item",getCurrentTrigger:hi,getTriggerRect:u=>Ft(n,u),resolveItems:async u=>{const c=M||!x?di(w,u):[];try{const b=await ui(u,x);return[...c,...b]}catch(b){if(c.length>0)return c;throw b}},renderItem:(u,c,b)=>bi(u,c,b,T,d),renderStatus:u=>yi(u,vi(u,T)),onStateChange:_?(u,c)=>_({id:`bridgerte-slash-command-menu-${u.requestId}`,query:u.trigger.query,status:u.status,items:u.items,config:T,readonly:r(),anchorRect:zt(c.anchorRect),...u.error?{error:u.error}:{},submit:b=>c.selectItem(gi(b)),cancel:c.close}):void 0,onSelect:(u,c)=>{I(c);const b=u.source==="schema"?S.get(u.id):void 0;if(b!=null&&b.payloadPanel){const h=Ft(n,c);a({menuId:b.id,command:b.command,panel:b.payloadPanel,anchorRect:zt(h??void 0)});return}o(u.command)}}).destroy},Wt=32,Be=e=>{var t;return e instanceof HTMLElement&&e.getAttribute("role")==="checkbox"&&((t=e.parentElement)==null?void 0:t.classList.contains("bridgerte__list--todo"))===!0},De=e=>e instanceof HTMLElement?e.closest('[role="checkbox"]'):null,Ci=e=>g.$getNearestNodeFromDOMNode(e),Vt=e=>e.button===0,Oe=(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()},_i=({contentElement:e,editor:t,isReadonly:n})=>{let r=0;const o=d=>{if(n()||!Vt(d))return;const i=De(d.target);!i||!Be(i)||Oe(d,i)&&qt(d)},a=(d,i)=>{qt(d),t.update(()=>{const m=Ci(i);q.$isListItemNode(m)&&m.toggleChecked()})},s=d=>{if(n()||!Vt(d)||Date.now()-r<700)return;const i=De(d.target);!i||!Be(i)||Oe(d,i)&&a(d,i)},l=d=>{if(n()||d.pointerType!=="touch")return;const i=De(d.target);!i||!Be(i)||Oe(d,i)&&(r=Date.now(),a(d,i))};return e.addEventListener("pointerdown",o,!0),e.addEventListener("pointerup",l,!0),e.addEventListener("click",s,!0),()=>{e.removeEventListener("pointerdown",o,!0),e.removeEventListener("pointerup",l,!0),e.removeEventListener("click",s,!0)}},He=(e,t)=>{var n;return((n=e.floatingMenus)==null?void 0:n[t])!==!1},Ei=({options:e,lexicalEditor:t,editorRoot:n,contentElement:r,historyState:o,isReadonly:a,executeCommand:s,requestPayloadPanel:l,uploadMediaFile:d,canUploadMedia:i,syncAfterEditorUpdate:m,refreshCommandStates:C,getCommandStates:_,setCanUndo:x,setCanRedo:f,enableKeyboardShortcuts:y})=>{const T=He(e,"mention"),p=He(e,"slash"),w=He(e,"hoverbar"),S=g.mergeRegister(Zs({target:r,isReadonly:a,onPaste:e.onPaste,canUploadMedia:i,uploadMediaFile:d,executeCommand:s,editor:t}),Js({target:r,isReadonly:a,canUploadMedia:i,uploadMediaFile:d}),Xs({target:r,isReadonly:a,executeCommand:s}),Qs({target:r,editor:t,isReadonly:a}),xa({target:r,isReadonly:a}),te.registerRichText(t),U.registerCodeHighlighting(t,jr),Ut.registerHistory(t,o,Tr),q.registerList(t),q.registerCheckList(t),_i({contentElement:r,editor:t,isReadonly:a}),T?cs({editorRoot:n,contentElement:r,editor:t,isReadonly:a,executeCommand:s,mentionProvider:e.mentionProvider,mentionMenuConfig:e.mentionMenuConfig,onMentionMenuRequest:e.onMentionMenuRequest}):()=>{},w?$a({editorRoot:n,contentElement:r,editor:t,isReadonly:a,executeCommand:s,requestPayloadPanel:l,getCommandStates:_,menuSchema:e.menuSchema,hoverbarConfig:e.hoverbarConfig,icons:e.icons,menuLabels:e.menuLabels,payloadPanelConfig:e.payloadPanelConfig}):()=>{},B.registerTablePlugin(t),wa({editor:t}),p?wi({editorRoot:n,contentElement:r,editor:t,isReadonly:a,executeCommand:s,requestPayloadPanel:l,menuSchema:e.menuSchema,slashCommandConfig:e.slashCommandConfig,icons:e.icons,menuLabels:e.menuLabels,payloadPanelConfig:e.payloadPanelConfig,slashCommandMenuConfig:e.slashCommandMenuConfig,onSlashCommandMenuRequest:e.onSlashCommandMenuRequest,slashCommandProvider:e.slashCommandProvider}):()=>{},Vn({editor:t,contentElement:r,isReadonly:a}),y?Fa({target:r,isReadonly:a,executeCommand:s}):()=>{},t.registerUpdateListener(()=>{m(),C()}),t.registerCommand(g.SELECTION_CHANGE_COMMAND,()=>(C(),!1),g.COMMAND_PRIORITY_LOW),t.registerCommand(g.CAN_UNDO_COMMAND,M=>(x(M),!1),g.COMMAND_PRIORITY_LOW),t.registerCommand(g.CAN_REDO_COMMAND,M=>(f(M),!1),g.COMMAND_PRIORITY_LOW));return{destroy(){S()}}};function kn(e,t={}){const n=Ut.createEmptyHistoryState(),r=t.mediaDefaultWidthPercent??50,{contentElement:o}=pa(e,{placeholder:t.placeholder??Fn}),a=t.keyboardShortcuts===!0;let s=t.readonly??!1,l=!1,d=Fe(t.value);const i=g.createEditor({namespace:Sr,editable:!s,nodes:[te.HeadingNode,te.QuoteNode,H.CodeNode,H.CodeHighlightNode,q.ListNode,q.ListItemNode,B.TableNode,B.TableRowNode,B.TableCellNode,z.LinkNode,z.AutoLinkNode,pe,ce,be],theme:mr,onError:u=>{j(t,"lexical.runtime","Lexical runtime error.",u)}});B.setScrollableTablesActive(i,!0);const m=()=>l,C=()=>s,_=()=>{m()||Wn({editor:i,contentElement:o})},x=fa({editor:i}),f=Nr({lexicalEditor:i,options:t,isDestroyed:m,setContent:u=>{d=u},syncPlaceholder:_}),y=ir({lexicalEditor:i,options:t,isDestroyed:m,canUploadMedia:()=>t.uploadAdapter!==void 0,isReadonly:C}),T=Mr({container:e,lexicalEditor:i,options:t,isDestroyed:m,isReadonly:C,reportError:j}),p=()=>{o.contentEditable=String(!s),i.setEditable(!s)},S=ha({editorRoot:e,lexicalEditor:i,isReadonly:C,restoreEditorFocus:u=>{x.restore(),i.focus(u)},executeCommand:T,getClearCommand:u=>{switch(u.command.type){case"format.color":case"format.backgroundColor":case"format.fontSize":case"format.fontFamily":case"format.lineHeight":return{...u.command,value:""};default:return null}},codeBlockLanguagePanel:t.codeBlockLanguagePanel,payloadPanelConfig:t.payloadPanelConfig,mediaControlsConfig:t.mediaControlsConfig,menuLabels:t.menuLabels,onRequest:t.onPayloadPanelRequest,defaultMediaWidthPercent:r}),M=()=>or(t),I=()=>ar(t),$=u=>{m()||(x.capture(),S.payloadPanelController.open(u))};e.dataset.readonly=String(s),e.addEventListener("focusin",M),e.addEventListener("focusout",I),e.style.setProperty("--bridgerte-media-display-width",`${r}%`);const N=Ei({options:t,lexicalEditor:i,editorRoot:e,contentElement:o,historyState:n,isReadonly:C,executeCommand:T,requestPayloadPanel:$,uploadMediaFile:T.uploadMediaFile,canUploadMedia:()=>t.uploadAdapter!==void 0,syncAfterEditorUpdate:f.syncAfterEditorUpdate,refreshCommandStates:y.refreshCommandStates,getCommandStates:y.getCommandStates,setCanUndo:y.setCanUndo,setCanRedo:y.setCanRedo,enableKeyboardShortcuts:a});i.setRootElement(o),f.suppressNextChange(),d=Bn(i,t.value),p();const E={getContent(){return m()||(f.clearContentChangeTimer(),f.syncContent(!1)),d},setContent(u){m()||(f.clearContentChangeTimer(),d=Fe(u),f.suppressNextChange(),Xt(i,d),f.enforceCurrentMaxLength(),_(),i.dispatchCommand(g.CLEAR_HISTORY_COMMAND,void 0),y.setHistoryAvailability(!1,!1),f.syncContent(!0))},executeCommand(u){T(u)},requestPayloadPanel:$,getCommandStates:y.getCommandStates,subscribeCommandStateChange:y.subscribeCommandStateChange,setReadonly(u){m()||(s=u,e.dataset.readonly=String(s),p(),y.refreshCommandStates())},focus(){m()||i.focus()},blur(){m()||o.blur()},destroy(){m()||(l=!0,f.clearContentChangeTimer(),S.destroy(),T.destroy(),y.destroy(),x.clear(),N.destroy(),i.setRootElement(null),e.removeEventListener("focusin",M),e.removeEventListener("focusout",I),e.classList.remove("bridgerte"),e.textContent="",delete e.dataset.readonly)}};return f.syncContent(!1),_(),y.refreshCommandStates(),sr(t,E),E}const ki=e=>!Ne.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",xi=e=>({id:e,type:"editor.ready",payload:{menuSchema:W.defaultMenuSchema,eventTiming:Ne.defaultBridgeEventTiming,version:Y.BRIDGERTE_CONTENT_VERSION}}),Mi=e=>`native-upload:${e}:${Date.now()}:${Math.random().toString(36).slice(2)}`,Ti=({container:e,transport:t})=>{var N;let n=null,r=!1,o=null,a=null,s=null,l=0;const d=new Map,i=new Map,m=E=>{r||t.postMessage(E)},C=()=>{s&&(clearTimeout(s),s=null)},_=()=>{C(),s=setTimeout(()=>{if(r)return;const E=Math.ceil(e.getBoundingClientRect().height);E!==l&&(l=E,m({type:"editor.heightChange",payload:{height:E}}))},Ne.BRIDGE_HEIGHT_CHANGE_THROTTLE_MS)},x=E=>{if(!n)return;const u=n.getContent();m({id:E,type:"editor.content",payload:u}),m({id:E,type:"editor.contentChange",payload:u})},f=E=>{const u=E.payload,c=d.get(u.assetId);if(c){if(d.delete(u.assetId),c.source==="uploadAdapter"){c.resolve(u.result);return}n==null||n.executeCommand({type:c.type==="image"?"media.insertImage":"media.insertVideo",url:u.result.url,poster:u.result.poster,width:u.result.width,height:u.result.height,displayWidthPercent:50,assetId:u.assetId})}},y=E=>{const u=E.payload,c=d.get(u.assetId);if(c){if(d.delete(u.assetId),c.source==="uploadAdapter"){c.reject(new Error(u.message));return}m({id:E.id,type:"editor.error",payload:{code:"bridge.uploadRejected",message:u.message}})}},T=(E,u)=>new Promise((c,b)=>{d.set(u,{type:E,assetId:u,source:"uploadAdapter",resolve:c,reject:b}),m({type:"editor.uploadRequest",payload:{assetId:u,type:E,accept:E==="image"?"image/*":"video/*"}})}),p=E=>{const u=Mi(E);d.set(u,{type:E,assetId:u,source:"nativePicker"}),m({type:"editor.uploadRequest",payload:{assetId:u,type:E,accept:E==="image"?"image/*":"video/*"}})},w=E=>{const u=i.get(E.payload.requestId);u&&(i.delete(E.payload.requestId),u.request.submit(E.payload.values))},S=E=>{const u=i.get(E.payload.requestId);u&&(i.delete(E.payload.requestId),u.request.cancel())},M=(E,u)=>{n==null||n.destroy(),o==null||o(),d.clear(),i.clear(),n=kn(e,{...u,uploadAdapter:{uploadImage(c,b){return T("image",b.assetId)},uploadVideo(c,b){return T("video",b.assetId)}},onContentChange:c=>{m({type:"editor.contentChange",payload:c}),_()},onCommandStateChange:c=>{m({type:"editor.commandStateChange",payload:c})},onPayloadPanelRequest:c=>(i.set(c.id,{request:c}),m({type:"editor.payloadPanelRequest",payload:{menuId:c.menuId,command:c.command,panel:c.panel,anchorRect:c.anchorRect,currentValues:c.currentValues,id:c.id,readonly:c.readonly}}),!0),onError:c=>{m({type:"editor.error",payload:c})}}),o=n.subscribeCommandStateChange(c=>{m({type:"editor.commandStateChange",payload:c})}),m(xi(E)),_()},I=E=>{if(E.type==="media.pickImage"){p("image");return}if(E.type==="media.pickVideo"){p("video");return}n==null||n.executeCommand(E)},$=E=>{if(!(r||!ki(E)))switch(E.type){case"editor.init":M(E.id,E.payload);return;case"editor.executeCommand":I(E.payload);return;case"editor.setContent":n==null||n.setContent(E.payload);return;case"editor.setReadonly":n==null||n.setReadonly(E.payload.readonly);return;case"editor.requestContent":x(E.id);return;case"editor.payloadPanelResolved":w(E);return;case"editor.payloadPanelCanceled":S(E);return;case"editor.uploadResolved":f(E);return;case"editor.uploadRejected":y(E);return}};return a=((N=t.addMessageListener)==null?void 0:N.call(t,$))??null,{receive:$,destroy(){r||(r=!0,C(),a==null||a(),o==null||o(),d.clear(),i.clear(),n==null||n.destroy(),n=null)}}};exports.appendMenuIcon=tt;exports.bindTouchPressedState=V;exports.createFloatingLayer=Ze;exports.createRichTextEditor=kn;exports.createWebViewBridgeRuntime=Ti;exports.defaultMenuIcons=et;exports.getMenuStateForItem=sn;exports.getPayloadPanelCurrentValues=an;exports.resolveMenuSchemaForDom=Pe;
4
+ //# sourceMappingURL=index-BaOlPu8L.cjs.map