type OridStageKey = 'objective' | 'reflective' | 'interpretive' | 'decisional'; interface OridStageSpec { key: OridStageKey; /** 序列化時輸出的正規關鍵字。 */ keyword: string; /** * 解析時可接受的別名(全小寫;含正規關鍵字本身)。 * * 刻意不收單字母縮寫(o / r / i / d):英文項目常以 "I …" 開頭 * (「I feel anxious about the rollout」),那會被靜靜地當成一個新的 * Interpretive 階段,把後面的項目全接到錯的段落去。省四個字母不值這個風險。 */ aliases: string[]; /** 圓圈數字序號,渲染段落標題用。 */ ordinal: string; /** 預設段落標題(作者未自訂時使用)。 */ zh: string; en: string; /** 一句話說明(hover / 表單提示 / 空欄位 placeholder 共用)。 */ hint: string; } /** * 四階段的單一真相。順序即渲染順序 —— 不論作者用什麼順序書寫, * 一律以 O → R → I → D 呈現(ORID 的價值就在這個固定推進順序)。 */ declare const ORID_STAGES: readonly OridStageSpec[]; /** 由關鍵字(不分大小寫)取階段規格;非階段關鍵字回 undefined。 */ declare function oridStageByKeyword(word: string): OridStageSpec | undefined; declare function oridStageSpec(key: OridStageKey): OridStageSpec; interface OridStage { key: OridStageKey; /** 作者自訂的段落標題;未指定 = 渲染時用 `序號 中文 · English`。 */ heading?: string; items: string[]; } interface OridModel { /** 逐字保留的 YAML frontmatter(含 --- 標記),無則 undefined。 */ frontmatter?: string; /** `title X` 顯示標題。 */ title?: string; /** 作者實際宣告的階段(書寫順序);渲染 / 序列化一律照 ORID_STAGES 正規排序。 */ stages: OridStage[]; /** 解析無法辨識為合法 ORID 時的完整原文(降級防覆寫用)。 */ raw?: string; } /** 空白模型(新建時的起手骨架):四階段齊備,各給一個提示性項目。 */ declare function emptyOridModel(): OridModel; /** 依 ORID 正規順序取出階段;未宣告的階段不補。 */ declare function orderedStages(model: OridModel): OridStage[]; /** * 段落標題的顯示文字。序號一律保留 —— 四段的推進順序正是 ORID 的重點, * 只有其中一兩段被自訂就少了編號的話,漏斗會讀不出節奏。 */ declare function stageHeading(stage: OridStage): string; /** ORID 文字 → 結構化模型。永不拋例外;無法解析時於 raw 保留原文。 */ declare function parseOrid(text: string): OridModel; /** 結構化模型 → ORID 文字。純函式、永遠合法、階段一律正規排序。 */ declare function serializeOrid(model: OridModel): string; /** 一列最多幾個項目;超過就換列(在 LR 階段內形成網格,避免長條圖橫向爆開)。 */ declare const ORID_ITEMS_PER_ROW = 4; /** 首個有意義關鍵字是不是 orid(略過 frontmatter 與 %% 註解)。 */ declare function isOridSource(text: string): boolean; /** 階段內的項目 id:O1 / R2 / I3 …(短、好記,方便 %% @tip / @check 指定)。 */ declare function oridItemId(stage: OridStage, index: number): string; /** 階段容器 id:ORID_O / ORID_R / …。 */ declare function oridStageId(stage: OridStage): string; /** 結構化模型 → mermaid flowchart 原始碼。純函式、永遠輸出合法 mermaid。 */ declare function oridToMermaid(model: OridModel): string; /** * 若 text 是 ORID 就轉成 flowchart,否則原樣回傳。 * 這是所有渲染路徑(lib 的 render-pipeline、VS Code 各 webview、Slack harness) * 唯一需要呼叫的函式 —— 對非 ORID 原始碼是零成本的直通。 */ declare function transpileOrid(text: string): string; interface OridPaletteEntry { /** 項目方塊的底色 / 邊框。 */ itemFill: string; itemStroke: string; /** 階段容器(subgraph)的底色 / 邊框。 */ stageFill: string; stageStroke: string; /** 深色主題下的項目底色(colorful 後處理用;classDef 走淺色版即可)。 */ itemFillDark: string; stageFillDark: string; } /** 項目方塊在淺色底上的文字色(對齊 colorize 的 NODE_TEXT)。 */ declare const ORID_ITEM_TEXT = "#1F2937"; declare const ORID_PALETTE: Record; /** 階段代號字母(節點 id 前綴 / CSS 類名字尾):objective → O。 */ declare const ORID_LETTER: Record; /** 項目方塊的 CSS 類名(mermaid `:::className` → SVG g.node 的 class)。 */ declare const oridItemClass: (key: OridStageKey) => string; /** 階段容器的 CSS 類名(mermaid `class ORID_O oridStageO` → SVG g.cluster 的 class)。 */ declare const oridStageClass: (key: OridStageKey) => string; /** 空階段的佔位方塊類名(虛線、淡色,提醒「這段還沒填」)。 */ declare const ORID_EMPTY_CLASS = "oridEmpty"; /** 空階段佔位方塊的文字。 */ declare const ORID_EMPTY_LABEL = "\uFF08\u5F85\u586B\uFF09"; /** 由 SVG 上的 class 反查階段;非 ORID 類名回 undefined(colorful 後處理用)。 */ declare function oridStageFromClassList(classes: DOMTokenList | string[]): OridStageKey | undefined; export { ORID_EMPTY_CLASS, ORID_EMPTY_LABEL, ORID_ITEMS_PER_ROW, ORID_ITEM_TEXT, ORID_LETTER, ORID_PALETTE, ORID_STAGES, type OridModel, type OridPaletteEntry, type OridStage, type OridStageKey, type OridStageSpec, emptyOridModel, isOridSource, orderedStages, oridItemClass, oridItemId, oridStageByKeyword, oridStageClass, oridStageFromClassList, oridStageId, oridStageSpec, oridToMermaid, parseOrid, serializeOrid, stageHeading, transpileOrid };