bridgerte 0.9.0

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/dist/bridge.js ADDED
@@ -0,0 +1,37 @@
1
+ const n = 120, d = 100, r = {
2
+ contentChangeDebounceMs: 120,
3
+ heightChangeThrottleMs: 100,
4
+ commandStateChangeDedupe: !0
5
+ }, o = /* @__PURE__ */ new Set([
6
+ "editor.init",
7
+ "editor.executeCommand",
8
+ "editor.setContent",
9
+ "editor.setReadonly",
10
+ "editor.requestContent",
11
+ "editor.payloadPanelResolved",
12
+ "editor.payloadPanelCanceled",
13
+ "editor.uploadResolved",
14
+ "editor.uploadRejected",
15
+ "editor.ready",
16
+ "editor.content",
17
+ "editor.contentChange",
18
+ "editor.selectionChange",
19
+ "editor.commandStateChange",
20
+ "editor.payloadPanelRequest",
21
+ "editor.uploadRequest",
22
+ "editor.heightChange",
23
+ "editor.error"
24
+ ]);
25
+ function i(e) {
26
+ if (typeof e != "object" || e === null)
27
+ return !1;
28
+ const t = e;
29
+ return typeof t.type == "string" && o.has(t.type);
30
+ }
31
+ export {
32
+ n as BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS,
33
+ d as BRIDGE_HEIGHT_CHANGE_THROTTLE_MS,
34
+ r as defaultBridgeEventTiming,
35
+ i as isBridgeMessage
36
+ };
37
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sources":["../../bridge/src/index.ts"],"sourcesContent":["import type { BridgeEventTiming, BridgeMessage } from './type';\n\nexport type * from './type';\n\n/**\n * bridge 高频事件的默认节流策略。\n *\n * 这里先固定协议默认值,真正的 WebView runtime 会在发送消息时使用这些数值。\n */\nexport const BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS = 120;\nexport const BRIDGE_HEIGHT_CHANGE_THROTTLE_MS = 100;\n\nexport const defaultBridgeEventTiming: BridgeEventTiming = {\n contentChangeDebounceMs: BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS,\n heightChangeThrottleMs: BRIDGE_HEIGHT_CHANGE_THROTTLE_MS,\n commandStateChangeDedupe: true\n};\n\n/**\n * bridge 当前支持的全部外层消息类型。\n *\n * `isBridgeMessage()` 只信任这个白名单,避免把未知 `editor.*` 消息误判为合法协议。\n */\nconst bridgeMessageTypes = new Set<BridgeMessage['type']>([\n 'editor.init',\n 'editor.executeCommand',\n 'editor.setContent',\n 'editor.setReadonly',\n 'editor.requestContent',\n 'editor.payloadPanelResolved',\n 'editor.payloadPanelCanceled',\n 'editor.uploadResolved',\n 'editor.uploadRejected',\n 'editor.ready',\n 'editor.content',\n 'editor.contentChange',\n 'editor.selectionChange',\n 'editor.commandStateChange',\n 'editor.payloadPanelRequest',\n 'editor.uploadRequest',\n 'editor.heightChange',\n 'editor.error'\n]);\n\n/**\n * bridge 消息的已知类型守卫。\n *\n * 这里只校验消息外层类型,深层 payload 校验留给具体消息处理器。\n * 这样能在轻量运行时判断和完整业务校验之间保持边界清楚。\n */\nexport function isBridgeMessage(value: unknown): value is BridgeMessage {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n\n const candidate = value as { type?: unknown };\n return typeof candidate.type === 'string'\n && bridgeMessageTypes.has(candidate.type as BridgeMessage['type']);\n}\n"],"names":["BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS","BRIDGE_HEIGHT_CHANGE_THROTTLE_MS","defaultBridgeEventTiming","bridgeMessageTypes","isBridgeMessage","value","candidate"],"mappings":"AASO,MAAMA,IAAoC,KACpCC,IAAmC,KAEnCC,IAA8C;AAAA,EACzD,yBAAyB;AAAA,EACzB,wBAAwB;AAAA,EACxB,0BAA0B;AAC5B,GAOMC,wBAAyB,IAA2B;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAQM,SAASC,EAAgBC,GAAwC;AACtE,MAAI,OAAOA,KAAU,YAAYA,MAAU;AACzC,WAAO;AAGT,QAAMC,IAAYD;AAClB,SAAO,OAAOC,EAAU,QAAS,YAC5BH,EAAmB,IAAIG,EAAU,IAA6B;AACrE;"}
package/dist/core.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-GaS65GL0.cjs"),O=e=>e!==void 0&&Object.keys(e).length>0,T=(e,t)=>{var E,R;const a=(E=t.options)!=null&&E.length?t.options:e,r=new Map(a.map(s=>[s.value,s])),u=(R=t.includeValues)!=null&&R.length?t.includeValues.flatMap(s=>{const l=r.get(s);return l?[l]:[]}):a,S=new Set(t.excludeValues??[]),p=u.filter(s=>!S.has(s.value)).map(s=>{var l,_;return{...s,label:((l=t.optionLabels)==null?void 0:l[s.value])??s.label,value:((_=t.optionValues)==null?void 0:_[s.value])??s.value}});return p.length>0?p:a},n=(e,t)=>({label:t.label??e.label,defaultValue:t.defaultValue??e.defaultValue,placeholder:t.placeholder??e.placeholder}),m=(e,t)=>!t||!O(t)?e:e.type==="select"?{...e,...n(e,t),options:T(e.options,t)}:e.type==="color"?{...e,...n(e,t),options:T(e.options??[],t)}:e.type==="number"?{...e,...n(e,t),min:t.min??e.min,max:t.max??e.max,step:t.step??e.step}:{...e,...n(e,t)},v=(e,t)=>{const a=t==null?void 0:t[e.id];return!a||!O(a)?e:{...e,title:a.title??e.title,description:a.description??e.description,fields:e.fields.map(r=>{var u;return m(r,(u=a.fields)==null?void 0:u[r.name])})}};exports.BRIDGERTE_CONTENT_VERSION=o.BRIDGERTE_CONTENT_VERSION;exports.BRIDGERTE_TABLE_INSERT_MAX_COLS=o.BRIDGERTE_TABLE_INSERT_MAX_COLS;exports.BRIDGERTE_TABLE_INSERT_MAX_ROWS=o.BRIDGERTE_TABLE_INSERT_MAX_ROWS;exports.resolvePayloadPanelSchema=v;
2
+ //# sourceMappingURL=core.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.cjs","sources":["../../core/src/payloadPanel/index.ts"],"sourcesContent":["import type {\n PayloadPanelConfig,\n PayloadPanelField,\n PayloadPanelFieldConfig,\n PayloadPanelOption,\n PayloadPanelSchema\n} from './type';\n\nexport type * from './type';\n\nconst hasOwnConfigKeys = (config: object | undefined) => (\n config !== undefined && Object.keys(config).length > 0\n);\n\nconst resolveOptionList = (\n options: PayloadPanelOption[],\n config: PayloadPanelFieldConfig\n) => {\n const baseOptions = config.options?.length ? config.options : options;\n const optionByValue = new Map(baseOptions.map((option) => [option.value, option]));\n const includedOptions = config.includeValues?.length\n ? config.includeValues.flatMap((value) => {\n const option = optionByValue.get(value);\n\n return option ? [option] : [];\n })\n : baseOptions;\n const excludeValues = new Set(config.excludeValues ?? []);\n const filteredOptions = includedOptions.filter((option) => !excludeValues.has(option.value));\n const nextOptions = filteredOptions.map((option) => ({\n ...option,\n label: config.optionLabels?.[option.value] ?? option.label,\n value: config.optionValues?.[option.value] ?? option.value\n }));\n\n /*\n * 配置写错时不返回空候选,避免默认 DOM 面板、自绘 request 和原生菜单拿到\n * 无法操作的空列表;业务真要完全隐藏菜单应通过菜单 config 排除入口。\n */\n return nextOptions.length > 0 ? nextOptions : baseOptions;\n};\n\nconst resolveFieldBaseOverride = (\n field: PayloadPanelField,\n config: PayloadPanelFieldConfig\n) => ({\n label: config.label ?? field.label,\n defaultValue: config.defaultValue ?? field.defaultValue,\n placeholder: config.placeholder ?? field.placeholder\n});\n\nconst resolvePayloadPanelField = (\n field: PayloadPanelField,\n config: PayloadPanelFieldConfig | undefined\n): PayloadPanelField => {\n if (!config || !hasOwnConfigKeys(config)) return field;\n\n if (field.type === 'select') {\n return {\n ...field,\n ...resolveFieldBaseOverride(field, config),\n options: resolveOptionList(field.options, config)\n };\n }\n\n if (field.type === 'color') {\n return {\n ...field,\n ...resolveFieldBaseOverride(field, config),\n options: resolveOptionList(field.options ?? [], config)\n };\n }\n\n if (field.type === 'number') {\n return {\n ...field,\n ...resolveFieldBaseOverride(field, config),\n min: config.min ?? field.min,\n max: config.max ?? field.max,\n step: config.step ?? field.step\n };\n }\n\n return {\n ...field,\n ...resolveFieldBaseOverride(field, config)\n };\n};\n\n/**\n * 解析参数面板 schema。\n *\n * 这个纯函数只处理 schema 数据,不理解 DOM、Lexical 或具体命令;toolbar、hoverbar、\n * code block header 和 WebView host request 都应先走这里,保证默认 UI 和业务自绘同源。\n */\nexport const resolvePayloadPanelSchema = (\n panel: PayloadPanelSchema,\n config?: PayloadPanelConfig\n): PayloadPanelSchema => {\n const panelConfig = config?.[panel.id];\n\n if (!panelConfig || !hasOwnConfigKeys(panelConfig)) return panel;\n\n return {\n ...panel,\n title: panelConfig.title ?? panel.title,\n description: panelConfig.description ?? panel.description,\n fields: panel.fields.map((field) => resolvePayloadPanelField(\n field,\n panelConfig.fields?.[field.name]\n ))\n };\n};\n"],"names":["hasOwnConfigKeys","config","resolveOptionList","options","baseOptions","_a","optionByValue","option","includedOptions","_b","value","excludeValues","nextOptions","resolveFieldBaseOverride","field","resolvePayloadPanelField","resolvePayloadPanelSchema","panel","panelConfig"],"mappings":"wHAUMA,EAAoBC,GACxBA,IAAW,QAAa,OAAO,KAAKA,CAAM,EAAE,OAAS,EAGjDC,EAAoB,CACxBC,EACAF,IACG,SACH,MAAMG,GAAcC,EAAAJ,EAAO,UAAP,MAAAI,EAAgB,OAASJ,EAAO,QAAUE,EACxDG,EAAgB,IAAI,IAAIF,EAAY,IAAKG,GAAW,CAACA,EAAO,MAAOA,CAAM,CAAC,CAAC,EAC3EC,GAAkBC,EAAAR,EAAO,gBAAP,MAAAQ,EAAsB,OAC1CR,EAAO,cAAc,QAASS,GAAU,CACxC,MAAMH,EAASD,EAAc,IAAII,CAAK,EAEtC,OAAOH,EAAS,CAACA,CAAM,EAAI,CAAA,CAC7B,CAAC,EACCH,EACEO,EAAgB,IAAI,IAAIV,EAAO,eAAiB,CAAA,CAAE,EAElDW,EADkBJ,EAAgB,OAAQD,GAAW,CAACI,EAAc,IAAIJ,EAAO,KAAK,CAAC,EACvD,IAAKA,GAAA,SAAY,OACnD,GAAGA,EACH,QAAOF,EAAAJ,EAAO,eAAP,YAAAI,EAAsBE,EAAO,SAAUA,EAAO,MACrD,QAAOE,EAAAR,EAAO,eAAP,YAAAQ,EAAsBF,EAAO,SAAUA,EAAO,KAAA,EACrD,EAMF,OAAOK,EAAY,OAAS,EAAIA,EAAcR,CAChD,EAEMS,EAA2B,CAC/BC,EACAb,KACI,CACJ,MAAOA,EAAO,OAASa,EAAM,MAC7B,aAAcb,EAAO,cAAgBa,EAAM,aAC3C,YAAab,EAAO,aAAea,EAAM,WAC3C,GAEMC,EAA2B,CAC/BD,EACAb,IAEI,CAACA,GAAU,CAACD,EAAiBC,CAAM,EAAUa,EAE7CA,EAAM,OAAS,SACV,CACL,GAAGA,EACH,GAAGD,EAAyBC,EAAOb,CAAM,EACzC,QAASC,EAAkBY,EAAM,QAASb,CAAM,CAAA,EAIhDa,EAAM,OAAS,QACV,CACL,GAAGA,EACH,GAAGD,EAAyBC,EAAOb,CAAM,EACzC,QAASC,EAAkBY,EAAM,SAAW,CAAA,EAAIb,CAAM,CAAA,EAItDa,EAAM,OAAS,SACV,CACL,GAAGA,EACH,GAAGD,EAAyBC,EAAOb,CAAM,EACzC,IAAKA,EAAO,KAAOa,EAAM,IACzB,IAAKb,EAAO,KAAOa,EAAM,IACzB,KAAMb,EAAO,MAAQa,EAAM,IAAA,EAIxB,CACL,GAAGA,EACH,GAAGD,EAAyBC,EAAOb,CAAM,CAAA,EAUhCe,EAA4B,CACvCC,EACAhB,IACuB,CACvB,MAAMiB,EAAcjB,GAAA,YAAAA,EAASgB,EAAM,IAEnC,MAAI,CAACC,GAAe,CAAClB,EAAiBkB,CAAW,EAAUD,EAEpD,CACL,GAAGA,EACH,MAAOC,EAAY,OAASD,EAAM,MAClC,YAAaC,EAAY,aAAeD,EAAM,YAC9C,OAAQA,EAAM,OAAO,IAAKH,GAAA,OAAU,OAAAC,EAClCD,GACAT,EAAAa,EAAY,SAAZ,YAAAb,EAAqBS,EAAM,KAAI,EAChC,CAAA,CAEL"}