AIO 編輯器

Bubble Menu

七種情境的浮動選單。

依游標位置浮現的操作選單。不走 extensionsConfig——由 config.bubbles 設定,key 為 AioEditorBubbleKind:false 停用該情境、物件覆寫預設;掛載預設跟隨 features 宣告,設 true 或物件可單獨啟用未宣告 feature 的情境。唯讀(editable: false)時一律不顯示。定位以 floating-ui 實作(自製 BubbleMenuView 子類,支援 arrow 與表格虛擬定位)。

  • config key:config.bubbles 設定(預設全數啟用)
  • 來源:自製(基於 @tiptap/extension-bubble-menu)

七種情境

kind觸發時機內建按鈕
CodeBlock游標在程式碼區塊內語言切換下拉(自動偵測+ 10 種語言)、刪除程式碼區塊
Image圖片被選取更新圖片(走 toolbarOptions.requestUrl)、另開分頁開啟、刪除圖片
LinkTips游標在連結內開啟連結、編輯連結、移除連結
List游標在清單項內刪除清單項
Table游標在表格內合併 / 拆分(僅可合併時顯示,合併中高亮)、標題儲存格(active 高亮)、垂直對齊(上 / 中 / 下,當前值高亮)、刪除表格
TableRow點擊列 grip 整列選取上 / 下插入列、刪除列
TableColumn點擊欄 grip 整欄選取左 / 右插入欄、刪除欄

共同選項(BubbleMenuConfigType)

欄位型別預設值說明
pluginKeystring各情境固定值plugin 識別,覆寫時勿與其他 bubble 重複
updateDelaynumber250更新節流(ms)
resizeDelaynumber60resize 節流(ms)
shouldShow(props) => boolean各情境內建顯示條件(如 editor.isActive('table'))
targetElement(props) => HTMLElement 或 null各情境內建定位錨點;未提供時以選取範圍定位
isTableGridbooleanfalse表格列 / 欄選取之虛擬定位(CellSelection 之範圍矩形)
options.placementPlacement各情境內建floating-ui 位置(top-end、right、bottom…)
options.strategy'absolute' 或 'fixed''absolute'定位策略
options.offset / flip / shift / size / autoPlacement / hide / inlineboolean 或 middleware 參數各情境內建floating-ui middleware:false 停用、物件傳參數
options.arrow(() => HTMLElement) 或 falsefalse箭頭元素
options.onShow / onHide / onUpdate / onDestroy() => void—生命週期 hooks

覆寫範例

const config: AioEditorConfig = {  bubbles: {    List: false, // 停用清單 bubble    Table: {      options: { placement: 'top-end' }    }  }}

element 欄位由 UI 層注入(Teleport 掛載),consumer 不需設定。