diff --git a/libs/horizon/src/dom/DOMPropertiesHandler/UpdateCommonProp.ts b/libs/horizon/src/dom/DOMPropertiesHandler/UpdateCommonProp.ts index e9a6fce1..5ac5e058 100644 --- a/libs/horizon/src/dom/DOMPropertiesHandler/UpdateCommonProp.ts +++ b/libs/horizon/src/dom/DOMPropertiesHandler/UpdateCommonProp.ts @@ -14,9 +14,9 @@ const svgHumpAttr = new Set(['allowReorder', 'autoReverse', 'baseFrequency', 'ba 'maskContentUnits', 'maskUnits', 'numOctaves', 'pathLength', 'patternContentUnits', 'patternTransform,', 'patternUnits', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'referrerPolicy', 'refX', 'refY', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', - 'specularConstant', 'specularExponent', 'spreadMethod', 'startOffset', 'stdDeviation', 'stitchTiles', 'surfaceScale', - 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textLength', 'viewBox', 'viewTarget', 'xChannelSelector', - 'yChannelSelector', 'zoomAndPan']); + 'specularConstant', 'specularExponent', 'spreadMethod', 'startOffset', 'stdDeviation', + 'stitchTiles', 'surfaceScale','systemLanguage', 'tableValues', 'targetX', 'targetY', + 'textLength','viewBox', 'viewTarget', 'xChannelSelector','yChannelSelector', 'zoomAndPan']); /** * 给 dom 设置属性 diff --git a/libs/horizon/src/dom/SelectionRangeHandler.ts b/libs/horizon/src/dom/SelectionRangeHandler.ts index f5bde5bf..f498174d 100644 --- a/libs/horizon/src/dom/SelectionRangeHandler.ts +++ b/libs/horizon/src/dom/SelectionRangeHandler.ts @@ -110,8 +110,8 @@ export interface selectionData { selectionRange: { start: number; end: number; - } -}; + }; +} // 防止选择范围内的信息因为节点删除或其他原因导致的信息丢失 export function resetSelectionRange(preSelectionRangeData: selectionData) { diff --git a/libs/horizon/src/dom/utils/Interface.ts b/libs/horizon/src/dom/utils/Interface.ts index 62887f72..b4805619 100644 --- a/libs/horizon/src/dom/utils/Interface.ts +++ b/libs/horizon/src/dom/utils/Interface.ts @@ -1,5 +1,5 @@ export interface IProperty { - [propName: string]: any + [propName: string]: any; } export interface HorizonSelect extends HTMLSelectElement { diff --git a/libs/horizon/src/dom/validators/PropertiesData.ts b/libs/horizon/src/dom/validators/PropertiesData.ts index c11e5fdf..9eb90b7b 100644 --- a/libs/horizon/src/dom/validators/PropertiesData.ts +++ b/libs/horizon/src/dom/validators/PropertiesData.ts @@ -9,10 +9,10 @@ export enum PROPERTY_TYPE { }; export type PropDetails = { - propName: string, - type: PROPERTY_TYPE, - attrName: string, - attrNS: string | null, + propName: string; + type: PROPERTY_TYPE; + attrName: string; + attrNS: string | null; }; export function getPropDetails(name: string): PropDetails | null { diff --git a/libs/horizon/src/event/HorizonEventMain.ts b/libs/horizon/src/event/HorizonEventMain.ts index 1ee6ba8b..55f34969 100644 --- a/libs/horizon/src/event/HorizonEventMain.ts +++ b/libs/horizon/src/event/HorizonEventMain.ts @@ -1,5 +1,5 @@ -import type {AnyNativeEvent, ProcessingListenerList} from './types'; -import type {VNode} from '../renderer/Types'; +import type { AnyNativeEvent, ProcessingListenerList } from './types'; +import type { VNode } from '../renderer/Types'; import { CommonEventToHorizonMap, @@ -11,20 +11,20 @@ import { throwCaughtEventError, runListenerAndCatchFirstError, } from './EventError'; -import {getListeners as getBeforeInputListeners} from './simulatedEvtHandler/BeforeInputEventHandler'; -import {getListeners as getCompositionListeners} from './simulatedEvtHandler/CompositionEventHandler'; -import {getListeners as getChangeListeners} from './simulatedEvtHandler/ChangeEventHandler'; -import {getListeners as getSelectionListeners} from './simulatedEvtHandler/SelectionEventHandler'; +import { getListeners as getBeforeInputListeners } from './simulatedEvtHandler/BeforeInputEventHandler'; +import { getListeners as getCompositionListeners } from './simulatedEvtHandler/CompositionEventHandler'; +import { getListeners as getChangeListeners } from './simulatedEvtHandler/ChangeEventHandler'; +import { getListeners as getSelectionListeners } from './simulatedEvtHandler/SelectionEventHandler'; import { getCustomEventNameWithOn, uniqueCharCode, getEventTarget } from './utils'; -import {createCommonCustomEvent} from './customEvents/EventFactory'; -import {getListenersFromTree} from './ListenerGetter'; -import {shouldUpdateValue, updateControlledValue} from './ControlledValueUpdater'; -import {asyncUpdates, runDiscreteUpdates} from '../renderer/Renderer'; -import {getExactNode} from '../renderer/vnode/VNodeUtils'; +import { createCommonCustomEvent } from './customEvents/EventFactory'; +import { getListenersFromTree } from './ListenerGetter'; +import { shouldUpdateValue, updateControlledValue } from './ControlledValueUpdater'; +import { asyncUpdates, runDiscreteUpdates } from '../renderer/Renderer'; +import { getExactNode } from '../renderer/vnode/VNodeUtils'; // 获取事件触发的普通事件监听方法队列 function getCommonListeners( @@ -61,7 +61,7 @@ function getCommonListeners( vNode, customEventName, customEvent, - isCapture ? EVENT_TYPE_CAPTURE: EVENT_TYPE_BUBBLE, + isCapture ? EVENT_TYPE_CAPTURE : EVENT_TYPE_BUBBLE, ); } @@ -72,7 +72,7 @@ export function processListeners( processingEventsList.forEach(eventUnitList => { let lastVNode; eventUnitList.forEach(eventUnit => { - const {vNode, currentTarget, listener, event} = eventUnit; + const { vNode, currentTarget, listener, event } = eventUnit; if (vNode !== lastVNode && event.isPropagationStopped()) { return; } @@ -151,7 +151,12 @@ function triggerHorizonEvents( vNode: null | VNode, ): void { const nativeEventTarget = getEventTarget(nativeEvent); - const processingListenerList = getProcessListenersFacade(nativeEvtName, vNode, nativeEvent, nativeEventTarget, isCapture); + const processingListenerList = getProcessListenersFacade( + nativeEvtName, + vNode, + nativeEvent, + nativeEventTarget, + isCapture); // 处理触发的事件队列 processListeners(processingListenerList); diff --git a/libs/horizon/src/event/Types.ts b/libs/horizon/src/event/Types.ts index ac9bab0f..fb67cf86 100644 --- a/libs/horizon/src/event/Types.ts +++ b/libs/horizon/src/event/Types.ts @@ -5,10 +5,10 @@ import {CustomBaseEvent} from './customEvents/CustomBaseEvent'; export type AnyNativeEvent = KeyboardEvent | MouseEvent | TouchEvent | UIEvent | Event; export type ListenerUnit = { - vNode: null | VNode, - listener: Function, - currentTarget: EventTarget, - event: CustomBaseEvent, + vNode: null | VNode; + listener: Function; + currentTarget: EventTarget; + event: CustomBaseEvent; }; export type ListenerUnitList = Array; diff --git a/libs/horizon/src/event/const.ts b/libs/horizon/src/event/const.ts index 2274bc03..20c954ae 100644 --- a/libs/horizon/src/event/const.ts +++ b/libs/horizon/src/event/const.ts @@ -35,7 +35,8 @@ export const horizonEventToNativeMap = new Map([ ['onCompositionUpdate', ['compositionupdate']], ['onBeforeInput', ['compositionend', 'keypress', 'textInput']], ['onChange', ['change', 'click', 'focusout', 'input',]], - ['onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']], + ['onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', + 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']], ['onAnimationEnd', [STYLE_AMT_END]], ['onAnimationIteration', [STYLE_AMT_ITERATION]], diff --git a/libs/horizon/src/event/customEvents/CustomBaseEvent.ts b/libs/horizon/src/event/customEvents/CustomBaseEvent.ts index 0ebce67a..d4595d31 100644 --- a/libs/horizon/src/event/customEvents/CustomBaseEvent.ts +++ b/libs/horizon/src/event/customEvents/CustomBaseEvent.ts @@ -36,7 +36,9 @@ export class CustomBaseEvent { this.target = target; this.timeStamp = nativeEvt.timeStamp || Date.now(); - const defaultPrevented = nativeEvt.defaultPrevented != null ? nativeEvt.defaultPrevented : nativeEvt.returnValue === false; + const defaultPrevented = nativeEvt.defaultPrevented != null ? + nativeEvt.defaultPrevented : + nativeEvt.returnValue === false; this.defaultPrevented = defaultPrevented; this.preventDefault = this.preventDefault.bind(this); @@ -90,11 +92,14 @@ function extendAttribute(target, source) { // FocusEvent 'relatedTarget', // KeyboardEvent - 'key', 'keyCode', 'charCode', 'code', 'location', 'ctrlKey', 'shiftKey', 'altKey', 'metaKey', 'repeat', 'locale', 'getModifierState', 'clipboardData', + 'key', 'keyCode', 'charCode', 'code', 'location', 'ctrlKey', 'shiftKey', + 'altKey', 'metaKey', 'repeat', 'locale', 'getModifierState', 'clipboardData', // MouseEvent - 'button', 'buttons', 'clientX', 'clientY', 'movementX', 'movementY', 'pageX', 'pageY', 'screenX', 'screenY', 'currentTarget', + 'button', 'buttons', 'clientX', 'clientY', 'movementX', 'movementY', + 'pageX', 'pageY', 'screenX', 'screenY', 'currentTarget', // PointerEvent - 'pointerId', 'width', 'height', 'pressure', 'tangentialPressure', 'tiltX', 'tiltY', 'twist', 'pointerType', 'isPrimary', + 'pointerId', 'width', 'height', 'pressure', 'tangentialPressure', + 'tiltX', 'tiltY', 'twist', 'pointerType', 'isPrimary', // TouchEvent 'touches', 'targetTouches', 'changedTouches', // TransitionEvent diff --git a/libs/horizon/src/renderer/hooks/BaseHook.ts b/libs/horizon/src/renderer/hooks/BaseHook.ts index 18e59db1..8c3f3605 100644 --- a/libs/horizon/src/renderer/hooks/BaseHook.ts +++ b/libs/horizon/src/renderer/hooks/BaseHook.ts @@ -1,5 +1,5 @@ -import type {VNode} from '../Types'; -import type {Hook} from './HookType'; +import type { VNode } from '../Types'; +import type { Hook } from './HookType'; let processingVNode: VNode = null; @@ -56,7 +56,9 @@ export function getNextHook(hook: Hook, hooks: Array>) // processing中的hook和上一次执行中的hook,需要同时往前走, // 原因:1.比对hook的数量有没有变化(非必要);2.从上一次执行中的hook获取removeEffect export function getCurrentHook(): Hook { - currentHook = currentHook !== null ? getNextHook(currentHook, processingVNode.hooks) : (processingVNode.hooks[0] || null); + currentHook = currentHook !== null ? + getNextHook(currentHook, processingVNode.hooks) : + (processingVNode.hooks[0] || null); if (lastTimeHook !== null) { lastTimeHook = getNextHook(lastTimeHook, processingVNode.oldHooks); diff --git a/libs/horizon/src/renderer/hooks/UseReducerHook.ts b/libs/horizon/src/renderer/hooks/UseReducerHook.ts index 4c241152..58fbb7f6 100644 --- a/libs/horizon/src/renderer/hooks/UseReducerHook.ts +++ b/libs/horizon/src/renderer/hooks/UseReducerHook.ts @@ -1,4 +1,4 @@ -import type {Hook, Reducer, Trigger, Update} from './HookType'; +import type { Hook, Reducer, Trigger, Update } from './HookType'; import { createHook, getCurrentHook, @@ -8,12 +8,13 @@ import { import { launchUpdateFromVNode } from '../TreeBuilder'; -import {isSame} from '../utils/compare'; -import {setStateChange} from '../render/FunctionComponent'; -import {getHookStage, HookStage} from './HookStage'; -import type {VNode} from '../Types'; +import { isSame } from '../utils/compare'; +import { setStateChange } from '../render/FunctionComponent'; +import { getHookStage, HookStage } from './HookStage'; +import type { VNode } from '../Types'; -export function useReducerImpl(reducer: (S, A) => S, initArg: P, init?: (P) => S, isUseState?: boolean): [S, Trigger] { +export function useReducerImpl(reducer: (S, A) => + S, initArg: P, init?: (P) => S, isUseState?: boolean): [S, Trigger] { const stage = getHookStage(); if (stage === null) { throwNotInFuncError(); diff --git a/libs/horizon/src/renderer/submit/LifeCycleHandler.ts b/libs/horizon/src/renderer/submit/LifeCycleHandler.ts index 5e2fd84b..78a308d4 100644 --- a/libs/horizon/src/renderer/submit/LifeCycleHandler.ts +++ b/libs/horizon/src/renderer/submit/LifeCycleHandler.ts @@ -2,10 +2,10 @@ * 该文件负责把更新应用到界面上 以及 和生命周期的相关调用 */ -import type {Container} from '../../dom/DOMOperator'; -import type {RefType, VNode} from '../Types'; +import type { Container } from '../../dom/DOMOperator'; +import type { RefType, VNode } from '../Types'; -import {listenToPromise, SuspenseChildStatus} from '../render/SuspenseComponent'; +import { listenToPromise, SuspenseChildStatus } from '../render/SuspenseComponent'; import { FunctionComponent, ForwardRef, @@ -17,8 +17,8 @@ import { SuspenseComponent, MemoComponent, } from '../vnode/VNodeTags'; -import {FlagUtils, ResetText} from '../vnode/VNodeFlags'; -import {mergeDefaultProps} from '../render/LazyComponent'; +import { FlagUtils, ResetText } from '../vnode/VNodeFlags'; +import { mergeDefaultProps } from '../render/LazyComponent'; import { submitDomUpdate, clearText, @@ -29,15 +29,20 @@ import { unHideDom, clearContainer, } from '../../dom/DOMOperator'; -import {callEffectRemove, callUseEffects, callUseLayoutEffectCreate, callUseLayoutEffectRemove} from './HookEffectHandler'; -import {handleSubmitError} from '../ErrorHandler'; +import { + callEffectRemove, + callUseEffects, + callUseLayoutEffectCreate, + callUseLayoutEffectRemove +} from './HookEffectHandler'; +import { handleSubmitError } from '../ErrorHandler'; import { travelVNodeTree, clearVNode, isDomVNode, findDomParent, getSiblingDom, } from '../vnode/VNodeUtils'; -import {shouldAutoFocus} from '../../dom/utils/Common'; +import { shouldAutoFocus } from '../../dom/utils/Common'; function callComponentWillUnmount(vNode: VNode, instance: any) { try { @@ -227,7 +232,7 @@ function unmountNestedVNodes(vNode: VNode): void { } function submitAddition(vNode: VNode): void { - const {parent, parentDom} = findDomParent(vNode); + const { parent, parentDom } = findDomParent(vNode); if (parent.flags.ResetText) { // 在insert之前先reset @@ -244,7 +249,7 @@ function insertOrAppendPlacementNode( beforeDom: Element | null, parent: Element | Container, ): void { - const {tag, realNode} = node; + const { tag, realNode } = node; if (isDomVNode(node)) { if (beforeDom) { diff --git a/libs/horizon/src/renderer/vnode/VNode.ts b/libs/horizon/src/renderer/vnode/VNode.ts index 810c7fb5..71c0856e 100644 --- a/libs/horizon/src/renderer/vnode/VNode.ts +++ b/libs/horizon/src/renderer/vnode/VNode.ts @@ -49,17 +49,17 @@ export class VNode { // 因为LazyComponent会修改type属性,为了在diff中判断是否可以复用,需要增加一个lazyType lazyType: any = null; flags: { - Addition?: boolean, - Update?: boolean, - Deletion?: boolean, - ResetText?: boolean, - Callback?: boolean, - DidCapture?: boolean, - Ref?: boolean, - Snapshot?: boolean, - Interrupted?: boolean, - ShouldCapture?: boolean, - ForceUpdate?: boolean, + Addition?: boolean; + Update?: boolean; + Deletion?: boolean; + ResetText?: boolean; + Callback?: boolean; + DidCapture?: boolean; + Ref?: boolean; + Snapshot?: boolean; + Interrupted?: boolean; + ShouldCapture?: boolean; + ForceUpdate?: boolean; } = {}; // one tree相关属性 diff --git a/libs/horizon/src/renderer/vnode/VNodeFlags.ts b/libs/horizon/src/renderer/vnode/VNodeFlags.ts index 15e25131..62e02be1 100644 --- a/libs/horizon/src/renderer/vnode/VNodeFlags.ts +++ b/libs/horizon/src/renderer/vnode/VNodeFlags.ts @@ -19,7 +19,8 @@ export const ShouldCapture = 'ShouldCapture'; // For suspense export const ForceUpdate = 'ForceUpdate'; -const FlagArr = [Addition, Update, Deletion, ResetText, Callback, DidCapture, Ref, Snapshot, Interrupted, ShouldCapture, ForceUpdate]; +const FlagArr = [Addition, Update, Deletion, ResetText, Callback, + DidCapture, Ref, Snapshot, Interrupted, ShouldCapture, ForceUpdate]; const LifecycleEffectArr = [Update, Callback, Ref, Snapshot];