拓展 / ModeStore
接口: ModeStore
保持模式轨道状态的微小可观察量。导轨、上下文工具面板和设置弹出窗口订阅它;点击/按键绑定分派给它。 Setter 是幂等的——它们只在值实际发生变化时发出通知——并且每个通知都带有新的快照,因此侦听器无法改变存储的内部状态。
四种内置模式始终存在。通过 addRailMode 注册的模式会添加 registerMode 并保持状态,就像内置模式一样。
subscribe 仅在 * 发生变化* 时触发;首先从 getState 渲染初始状态,然后订阅更新。
方法
armTool()
armTool(
mode,tool):void
以指针模式装备工具(导轨槽反映它)。幂等。
参数
mode
string
tool
string | null
返回值
void
dispose()
dispose():
void
删除每个订阅者(在 UI 拆卸时调用)。
返回值
void
getArmedTool()
getArmedTool(
mode):string|null
用于指针模式的武装工具('pointer'/null = 默认)。
参数
mode
string
返回值
string | null
getDefaultTool()
getDefaultTool(
mode):string|null
当没有特殊装备时,模式所依赖的工具。
参数
mode
string
返回值
string | null
getMode()
getMode():
string
返回值
string
getState()
getState():
Readonly<ModeState>
当前状态的副本(安全读取;突变不会泄漏)。
返回值
Readonly<ModeState>
hasMode()
hasMode(
mode):boolean
当前是否已注册模式(四个内置函数始终是)。
参数
mode
string
返回值
boolean
isFlyoutActive()
isFlyoutActive(
mode):boolean
弹出按钮是否打开(即其模式为活动模式)。
参数
mode
string
返回值
boolean
isPanelOpen()
isPanelOpen(
mode):boolean
指针模式的工具面板当前是否已展开。
参数
mode
string
返回值
boolean
isPointerMode()
isPointerMode(
mode):boolean
模式是否拥有工具面板。未知模式不是指针模式。
参数
mode
string
返回值
boolean
isViewActive()
isViewActive():
boolean
返回值
boolean
Deprecated
使用 isFlyoutActive('view') — 轨道现在有多个弹出窗口。
registerMode()
registerMode(
mode,kind,defaultTool,panelOpen):void
将模式的状态添加到存储中。由铁路模式注册表调用;四个内置插件已经存在。重新注册 ID 会覆盖其记录,但会保留其已有的任何工具/面板状态。
参数
mode
string
kind
defaultTool
string | null
panelOpen
boolean = true
返回值
void
setMode()
setMode(
mode):void
参数
mode
string
返回值
void
setPanelOpen()
setPanelOpen(
mode,open):void
展开/折叠指针模式的工具面板。幂等。
参数
mode
string
open
boolean
返回值
void
subscribe()
subscribe(
listener): () =>void
订阅状态更改。返回取消订阅 fn(传递给 UIComponent.track)。
参数
listener
ModeListener
返回值
():
void
返回值
void
toggleFlyout()
toggleFlyout(
mode):void
打开弹出模式,或将其关闭回上一个指针模式。
参数
mode
string
返回值
void
toggleToolPanel()
toggleToolPanel(
mode):void
打开/关闭指针模式的工具面板。
参数
mode
string
返回值
void
toggleView()
toggleView():
void
返回值
void
Deprecated
使用 toggleFlyout('view') — 轨道现在有多个弹出窗口。
unregisterMode()
unregisterMode(
mode):void
删除模式的状态。呼叫者负责先将其移走——商店不会决定激活什么。
参数
mode
string
返回值
void