Methods
binarySearch(items, fGetValue) → {Object}
- Description:
二元搜索法(Binary Search),通過fGetValue(index)取值,求最靠近0但小於0的值,並回傳值與所在的index與所查得的數據items[index]
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
items |
Array | 輸入欲搜尋陣列 |
fGetValue |
function | 輸入取值函數,傳入index |
Returns:
回傳物件index,最靠近0但小於0的值、所在的index與所查得的數據items[index]
- Type
- Object
convertColor(color) → {String}
- Description:
轉換描述color為hex顏色字串
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
color |
String | 輸入描述顏色字串 |
Returns:
hex 回傳hex顏色字串
- Type
- String
createDetectDirective(def) → {Object}
- Description:
建立偵測類自訂指令(v-domresize、v-dommutation、v-domstable、v-domvisible)之共同生命週期
各指令只提供可用設定鍵、設定正規化與「以設定建立偵測器」, 屬性、指令值解析、重建或重新比較、事件轉發與清除皆由此處理, 使同一規則只寫一處 綁定以元件實例(元件標籤上之指令)或元素(元素上之指令)識別, 兩者皆跨重繪不變: 元件標籤與其根元素為同一DOM元素, 若以元素或其屬性識別兩者會互相覆蓋(事件送錯處理函式、解除其一時清掉另一個) 宿主重繪後(componentUpdated, 子節點已更新): 觸發器改用新vnode之監聽物件; 設定快照改變(啟停、設定之值、函數設定之有無)則解除舊偵測器後重建; 快照未變而重新比較鍵之值改變者, 延至本批更新之後(microtask)並合併請偵測器重新比較; 其餘不動作 宿主重繪不自動重新比較: 重新比較會呼叫使用端函數(如getBase), 於hook內呼叫會使其讀取之反應式狀態成為宿主之依賴, 且多實例共用比較基準時互相觸發而永不收斂 函數設定一律呼叫最新指令值中之同名函數; 其拋錯時每個綁定之每個鍵以console.error提示一次, 再交回偵測器原本之處理 每次建立之偵測器各自一個閘門, 解除或重建時關閉, 故舊偵測器已排定之事件不會送達
- Source:
Parameters:
| Name | Type | Description | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
def |
Object | 輸入指令定義物件 Properties
|
Returns:
回傳Vue 2自訂指令定義物件, 含bind、componentUpdated、unbind
- Type
- Object
createVnodeEmitter(vnode, name, dirName, optopt) → {Object}
- Description:
自訂指令觸發所在vnode之v-on事件處理函式, 每個綁定建立一個, 解除綁定時dispose
呼叫Vue建立之監聽器(invoker)本身而非其fns: invoker會依序呼叫多個處理函式(陣列), 並經Vue之錯誤處理(祖先errorCaptured、Vue.config.errorHandler)處理同步錯誤與Promise拒絕 只保留監聽物件而不保留整個vnode, 避免持有綁定當下之子樹; 指令於宿主重繪後以update換成新vnode之監聽物件, 故綁定後才新增、移除或改名之監聽亦會跟隨 元件標籤同名兩者皆有時只呼叫自訂事件, 沒有自訂事件時才呼叫.native監聽 dispose後不再呼叫, 以處理解除綁定後才完成之非同步偵測
- Source:
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
vnode |
Object | 輸入指令所在之vnode |
||
name |
String | 輸入事件名稱字串 |
||
dirName |
String | 輸入指令名稱字串, 用於警告訊息 |
||
opt |
Object |
<optional> |
{}
|
輸入設定物件, opt.warn給false時不檢查錯誤寫法(供重建時避免重複警告), 預設true |
Returns:
回傳物件, emit(data)觸發事件, update(vnode)改用新vnode之監聽物件, dispose()作廢
- Type
- Object
domDragDrop() → {Object}
- Description:
自訂指令v-domdragdrop, 同群組元素間拖放時觸發@domdragdrop
指令值: 非空物件為啟用, 須給group(群組鍵字串, 未給拋錯), 其餘鍵(attIdentify、attGroup、attIndex、previewOpacity、previewDisabledOpacity、previewBackground、previewBorderWidth、previewBorderColor、timeDragStartDelay)轉給wsemi domDrag; 其他值為停用 宿主每次重繪皆解除後依最新指令值重建; 拖曳中重建者拖曳延續, 後續事件送達新實例(wsemi domDrag)
事件內容為物件, evName為'start'、'move'、'enter'、'leave'或'drop', 其餘為domDrag之事件內容 處理函式經Vue之監聽器(invoker)呼叫: 多個處理函式依序執行, 同步錯誤與Promise拒絕交Vue之錯誤處理(自處理函式所屬元件之$parent起經errorCaptured, 再Vue.config.errorHandler), 與原生v-on相同 元件標籤上同時有@domdragdrop與@domdragdrop.native時只呼叫前者, 無前者時呼叫後者; 停用或解除綁定後不再觸發 不支援.once、.capture、.passive, 事件名須小寫(@domdragdrop), 元素上之.native無效, 以上於綁定時警告; .ctrl、.shift、.alt、.meta使處理函式不被呼叫, .stop、.prevent、.left、.right與按鍵修飾字使處理函式拋錯, 皆無法於執行期警告 綁定時於元素設ev-dragdrop屬性, 解除時改為'null'
- Source:
Returns:
回傳Vue 2自訂指令定義物件, 以Vue.directive('domdragdrop', domDragDrop())或元件directives註冊
- Type
- Object
domMutation() → {Object}
- Description:
自訂指令v-dommutation, 元素(預設含其子孫)之屬性或子節點變更時觸發@dommutation
指令值: 未給或true為啟用並使用預設設定{attributes:true,childList:true,subtree:true}; false或null為停用(不建立偵測器、不觸發); 其他型別視同未給並警告 指令值為物件時原樣作為MutationObserver之設定(不與預設合併), 可用鍵attributes、attributeFilter、attributeOldValue、characterData、characterDataOldValue、childList、subtree, 設定無效時警告並不偵測, 其他鍵不採用並警告 宿主重繪後設定改變則重建偵測器; 重建時舊偵測器已記錄而尚未送達之異動不送出
事件內容為物件{ele,mutations}, ele為元素, mutations為MutationRecord陣列 處理函式經Vue之監聽器(invoker)呼叫: 多個處理函式依序執行, 同步錯誤與Promise拒絕交Vue之錯誤處理(自處理函式所屬元件之$parent起經errorCaptured, 再Vue.config.errorHandler), 與原生v-on相同 監聽之新增、移除或改名於宿主重繪後跟隨; 元件標籤上同時有@dommutation與@dommutation.native時只呼叫前者, 無前者時呼叫後者; 解除綁定後不再觸發 不支援.once、.capture、.passive, 事件名須小寫(@dommutation), 元素上之.native無效, 以上於綁定時警告; .ctrl、.shift、.alt、.meta使處理函式不被呼叫, .stop、.prevent、.left、.right與按鍵修飾字使處理函式拋錯, 皆無法於執行期警告 綁定時於元素設ev-mutation屬性, 解除時改為'null'
- Source:
Returns:
回傳Vue 2自訂指令定義物件, 以Vue.directive('dommutation', domMutation())或元件directives註冊
- Type
- Object
domResize() → {Object}
- Description:
自訂指令v-domresize, 元素尺寸或視窗尺寸改變時觸發@domresize
指令值: 未給或true為啟用並使用預設設定; false或null為停用(不建立偵測器、不觸發); 其他型別視同未給並警告 指令值為物件時為設定: event給'resize'時只轉發元素尺寸之事件(不含視窗事件), 未給為'resizeWithWindow'; refreshKey見下; mode、timeInterval、tolerancePixel、toleranceBounce、sync、watchIdentity、getSize、getBase、throttle原樣作為wsemi domDetect之opt, 意義與預設見domDetect; 其他鍵不採用並警告 宿主重繪後: 設定改變(啟停、event、設定之值、getSize或getBase之有無)則重建偵測器, 重建後之首次量測必觸發(sold為0、該軸smode為'larger'); 物件字面值每次重繪產生新物件, 內容相同者不重建 getSize、getBase一律呼叫最新指令值中之同名函數; getBase須回傳該實例自身目前套用之尺寸, 並於處理函式內更新, 不可跨實例共用 比較基準因尺寸以外之原因改變時(例如getBase之固定寬度被取消), 改變refreshKey之值(任意值, 以內容比較), 即於本批更新之後重新量測比較(不重建); 宿主重繪不會自動重新比較 設定物件原地修改時, Vue 2會因指令讀過該鍵而重繪宿主並生效, 惟建議以新物件取代(Vue 3不追蹤指令內之讀取)
事件內容為domDetect之事件物件: sold、snew、smode、ele(視窗事件無), from為'dom'或'window'(僅resizeWithWindow) 處理函式經Vue之監聽器(invoker)呼叫: 多個處理函式依序執行, 同步錯誤與Promise拒絕交Vue之錯誤處理(自處理函式所屬元件之$parent起經errorCaptured, 再Vue.config.errorHandler), 與原生v-on相同 監聽之新增、移除或改名於宿主重繪後跟隨; 元件標籤上同時有@domresize與@domresize.native時只呼叫前者, 無前者時呼叫後者; 解除綁定後不再觸發; keep-alive停用期間元素移出頁面, 不觸發 不支援.once、.capture、.passive, 事件名須小寫(@domresize), 元素上之.native無效, 以上於綁定時警告; .ctrl、.shift、.alt、.meta使處理函式不被呼叫, .stop、.prevent、.left、.right與按鍵修飾字使處理函式拋錯, 皆無法於執行期警告 綁定時於元素設ev-resize屬性, 解除時改為'null'
- Source:
Returns:
回傳Vue 2自訂指令定義物件, 以Vue.directive('domresize', domResize())或元件directives註冊
- Type
- Object
domStable() → {Object}
- Description:
自訂指令v-domstable, 元素(及其子元素)位置、尺寸與動畫之穩定狀態轉變時觸發@domstable
指令值: 未給或true為啟用並使用預設設定; false或null為停用(不建立偵測器、不觸發); 其他型別視同未給並警告 指令值為物件時為設定, 可用鍵tolerance、timeDiff、timeDetect轉給wsemi domIsStable(mode固定為event), 其值之檢查與預設依domIsStable(無效者用預設), 其他鍵不採用並警告 宿主重繪後設定改變則重建偵測器, 重建後重新自不穩定起算 元素未被繪製(未插入或display:none)時位置恆為0而判為穩定, 此為domIsStable之已知限制
事件內容為布林值, 初始視為不穩定, 故第一次穩定時觸發true 處理函式經Vue之監聽器(invoker)呼叫: 多個處理函式依序執行, 同步錯誤與Promise拒絕交Vue之錯誤處理(自處理函式所屬元件之$parent起經errorCaptured, 再Vue.config.errorHandler), 與原生v-on相同 監聽之新增、移除或改名於宿主重繪後跟隨; 元件標籤上同時有@domstable與@domstable.native時只呼叫前者, 無前者時呼叫後者; 解除綁定後不再觸發 不支援.once、.capture、.passive, 事件名須小寫(@domstable), 元素上之.native無效, 以上於綁定時警告; .ctrl、.shift、.alt、.meta使處理函式不被呼叫, .stop、.prevent、.left、.right、.middle與按鍵修飾字使處理函式拋錯, 皆無法於執行期警告 綁定時於元素設ev-stable屬性, 解除時改為'null'
- Source:
Returns:
回傳Vue 2自訂指令定義物件, 以Vue.directive('domstable', domStable())或元件directives註冊
- Type
- Object
domVisible() → {Object}
- Description:
自訂指令v-domvisible, 元素與視窗可視區相交與否之狀態改變時觸發@domvisible
指令值: 未給、true或物件為啟用(目前無可用設定鍵, 物件之鍵不採用並警告); false或null為停用(不建立偵測器、不觸發); 其他型別視同未給並警告 以wsemi domIsVisible之event模式偵測(單一IntersectionObserver), 初始視為不可見, 故初始即可見者觸發一次true; 捲出視窗、自身或祖先display:none、移出頁面(含keep-alive停用)時觸發false, 再次相交時觸發true; 判定為與視窗相交, 故visibility:hidden、opacity:0仍為true; 無IntersectionObserver之環境不觸發
事件內容為布林值 處理函式經Vue之監聽器(invoker)呼叫: 多個處理函式依序執行, 同步錯誤與Promise拒絕交Vue之錯誤處理(自處理函式所屬元件之$parent起經errorCaptured, 再Vue.config.errorHandler), 與原生v-on相同 監聽之新增、移除或改名於宿主重繪後跟隨; 元件標籤上同時有@domvisible與@domvisible.native時只呼叫前者, 無前者時呼叫後者; 解除綁定後不再觸發 不支援.once、.capture、.passive, 事件名須小寫(@domvisible), 元素上之.native無效, 以上於綁定時警告; .ctrl、.shift、.alt、.meta使處理函式不被呼叫, .stop、.prevent、.left、.right、.middle與按鍵修飾字使處理函式拋錯, 皆無法於執行期警告 綁定時於元素設ev-visible屬性, 解除時改為'null'
- Source:
Returns:
回傳Vue 2自訂指令定義物件, 以Vue.directive('domvisible', domVisible())或元件directives註冊
- Type
- Object
parseDetectValue(value, specopt) → {Object}
- Description:
解析偵測類指令(v-domresize、v-dommutation、v-domstable、v-domvisible)之指令值
未給或true為啟用並使用預設設定, false或null為停用, 純物件為啟用並以其鍵作為設定, 其他型別(字串、數字、陣列、函數)視同未給並給警告 物件只採用該指令之可用鍵, 其他鍵不採用並給警告: 模板物件字面值每次重繪皆為新物件, 未知鍵之值若為物件或函數而列入比較, 每次重繪皆判為改變而重建 snap為判斷是否須重建偵測器之快照: 非函數設定之值(深拷貝, 故原地修改之陣列等亦可比出差異)與函數設定之鍵名(函數本身於呼叫時取最新指令值, 其更換不需重建) 重新比較鍵(spec.refreshKey)之值不列入快照、不作為設定, 另以rkey回傳, 其改變只請偵測器重新比較
- Source:
Parameters:
| Name | Type | Attributes | Default | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
value |
* | 輸入指令值 |
||||||||||||||||||||||
spec |
Object |
<optional> |
{}
|
輸入指令規格物件 Properties
|
Returns:
回傳物件, enabled為是否啟用, cfg為設定物件, funs為函數設定之鍵名陣列, snap為快照(停用時為null), rkey為重新比較鍵之值(深拷貝, 未給為undefined), warns為警告訊息字串陣列
- Type
- Object