@leafer-in/state 1.9.7 → 1.9.9

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/state.cjs CHANGED
@@ -341,6 +341,18 @@ core.UI.addAttr("placeholderStyle", undefined, stateStyleType);
341
341
 
342
342
  core.UI.addAttr("button", false, core.dataType);
343
343
 
344
+ ui.set = function(data, transition) {
345
+ if (data) {
346
+ if (transition) {
347
+ if (transition === "temp") {
348
+ this.lockNormalStyle = true;
349
+ Object.assign(this, data);
350
+ this.lockNormalStyle = false;
351
+ } else this.animate(data, transition);
352
+ } else Object.assign(this, data);
353
+ }
354
+ };
355
+
344
356
  ui.focus = function(value = true) {
345
357
  this.waitLeafer(() => {
346
358
  let {focusData: focusData} = this.app.interaction;
package/dist/state.esm.js CHANGED
@@ -339,6 +339,18 @@ UI.addAttr("placeholderStyle", undefined, stateStyleType);
339
339
 
340
340
  UI.addAttr("button", false, dataType);
341
341
 
342
+ ui.set = function(data, transition) {
343
+ if (data) {
344
+ if (transition) {
345
+ if (transition === "temp") {
346
+ this.lockNormalStyle = true;
347
+ Object.assign(this, data);
348
+ this.lockNormalStyle = false;
349
+ } else this.animate(data, transition);
350
+ } else Object.assign(this, data);
351
+ }
352
+ };
353
+
342
354
  ui.focus = function(value = true) {
343
355
  this.waitLeafer(() => {
344
356
  let {focusData: focusData} = this.app.interaction;
@@ -1,2 +1,2 @@
1
- import{decorateLeafAttr as t,attr as e,State as n,MathHelper as s,isObject as i,isNull as o,isUndefined as l,PointerEvent as a,Plugin as r,UI as c,dataType as u,Text as d,defineKey as f,getDescriptor as y,doBoundsType as S}from"@leafer-ui/core";function h(s,i){return t(s,t=>e({set(e){this.__setAttr(t,e),this.leaferIsReady?i?n.setStyleName(this,i,e):n.set(this,e):this.__layout.stateStyleChanged=!0}}))}function p(n){return t(n,t=>e({set(e){this.__setAttr(t,e),this.__layout.stateStyleChanged=!0}}))}function m(t,e){if(e&&!0!==e)return e;if(!t.button){let{parent:e}=t;for(let t=0;t<2;t++)if(e){if(e.button)return e;e=e.parent}}return null}function v(t,e){i(e)||(e=void 0),_(t,e,"in")}function b(t,e){const{normalStyle:n}=t;i(e)||(e=void 0),n&&(e||(e=n),_(t,e,"out"))}const A={};function _(t,e,i){const{normalStyle:l}=t;e||(e=A),e.scale&&(s.assignScale(e,e.scale),delete e.scale),e!==A&&n.canAnimate||(i=null);let a=!!i&&function(t,e,n){let s="in"===t?"transition":"transitionOut";"out"===t&&o(n[s])&&o(e[s])&&(s="transition");return o(e[s])?n[s]:e[s]}(i,e,t);const r=a?function(t,e){const n=P(e,t),s=t.animate();s&&P(n,t,s.fromStyle);return n}(t,e):void 0;n.canAnimate&&g(t)&&t.killAnimate("transition"),l&&t.set(l,"temp");const c=g(t);if(c){const{animation:n}=c;if(n){const s=t.animate(n,void 0,"animation",!0);Object.assign(c,s.endingStyle),"in"!==i||e.animation!==n?s.kill():a=!1,delete c.animation}t.normalStyle=O(c,t),t.set(c,"temp")}else t.normalStyle=void 0;if(a){const e=O(r,t);t.set(r,"temp"),t.animate([r,e],a,"transition",!0)}t.__layout.stateStyleChanged=!1}function g(t){let e;const s={},i=m(t),o=i?t.state||i.state:t.state,l=o&&t.states[o];l&&n.isState(o,t,i)&&(e=k(s,l));const a=s.selectedStyle||t.selectedStyle;a&&n.isSelected(t,i)&&(e=k(s,a));const r=s.placeholderStyle||t.placeholderStyle;if(r&&n.isPlacehold(t,i)&&(e=k(s,r)),n.isDisabled(t,i)){const n=s.disabledStyle||t.disabledStyle;n&&(e=k(s,n))}else{const o=s.focusStyle||t.focusStyle;o&&n.isFocus(t,i)&&(e=k(s,o));const l=s.hoverStyle||t.hoverStyle;l&&n.isHover(t,i)&&(e=k(s,l));const a=s.pressStyle||t.pressStyle;a&&n.isPress(t,i)&&(e=k(s,a))}return e?s:void 0}function O(t,e,s,i){const o=s?t:{},l=s||t;for(let t in l)i&&n.animateExcludes[t]||(o[t]=e[t]);return o}function P(t,e,n){return O(t,e,n,!0)}function k(t,e){return Object.assign(t,e),!0}function D(t,e){const n=t[e];n&&v(t,n),t.button&&x(t.children,e)}function E(t,e,n){n||(n=t.states[e]),v(t,n),t.button&&x(t.children,null,e)}function x(t,e,s){if(!t)return;let i,o;for(let a=0,r=t.length;a<r;a++){if(i=t[a],e){switch(o=!0,e){case"hoverStyle":n.isHover(i)&&(o=!1);break;case"pressStyle":n.isPress(i)&&(o=!1);break;case"focusStyle":n.isFocus(i)&&(o=!1)}o&&D(i,e)}else l(s)||E(i,s);i.isBranch&&x(i.children,e,s)}}function j(t,e){const n=t[e];n&&b(t,n),t.button&&F(t.children,e)}function C(t,e,n){b(t,n),t.button&&F(t.children,null,e)}function F(t,e,n){if(!t)return;let s;for(let i=0,o=t.length;i<o;i++)s=t[i],e?j(s,e):l(n)||C(s,n),s.isBranch&&F(s.children,e,n)}function H(t,e,n){let s;const i=e.leafer?e.leafer.interaction:null;if(i&&(s=i[t](e),!s&&n)){const o=m(e,n);o&&(s=i[t](o))}return s}function N(t,e,n){let s=e[t];if(!s&&n){const i=m(e,n);i&&(s=i[t])}return s}r.add("state"),n.animateExcludes={animation:1,animationOut:1,transition:1,transitionOut:1,states:1,state:1,placeholder:1,normalStyle:1,hoverStyle:1,pressStyle:1,focusStyle:1,selectedStyle:1,disabledStyle:1,placeholderStyle:1},n.isState=function(t,e,n){return function(t,e,n){let s=e.states[t];if(!s&&n){const i=m(e,n);i&&(s=i.states[t])}return!!s}(t,e,n)},n.isSelected=function(t,e){return N("selected",t,e)},n.isDisabled=function(t,e){return N("disabled",t,e)},n.isFocus=function(t,e){return H("isFocus",t,e)},n.isHover=function(t,e){return H("isHover",t,e)},n.isPress=function(t,e){return H("isPress",t,e)},n.isPlacehold=function(t,e){return t.__.__isPlacehold},n.isDrag=function(t,e){return H("isDrag",t,e)},n.setStyleName=function(t,e,n){n?E(t,e,t[e]):C(t,e,t[e])},n.set=function(t,e){const n=t.states[e];n?E(t,e,n):C(t,e,n)},n.getStyle=g,n.updateStyle=_,n.updateEventStyle=function(t,e){switch(e){case a.ENTER:D(t,"hoverStyle");break;case a.LEAVE:j(t,"hoverStyle");break;case a.DOWN:D(t,"pressStyle");break;case a.UP:j(t,"pressStyle")}};const w=c.prototype;c.addAttr("selected",!1,h,"selectedStyle"),c.addAttr("disabled",!1,h,"disabledStyle"),c.addAttr("states",{},p),c.addAttr("state","",h),c.addAttr("normalStyle",void 0,u),c.addAttr("hoverStyle",void 0,p),c.addAttr("pressStyle",void 0,p),c.addAttr("focusStyle",void 0,p),c.addAttr("selectedStyle",void 0,p),c.addAttr("disabledStyle",void 0,p),c.addAttr("placeholderStyle",void 0,p),c.addAttr("button",!1,u),w.focus=function(t=!0){this.waitLeafer(()=>{let{focusData:e}=this.app.interaction;t?(e&&e.focus(!1),e=this):e=null,this.app.interaction.focusData=e,t?D(this,"focusStyle"):j(this,"focusStyle")})},w.updateState=function(){n.updateStyle(this,void 0,"in")};const B=d.prototype,L="text";f(B,L,Object.assign(Object.assign({},y(B,L)),{set(t){const e=this,n=e.text;e.__setAttr(L,t)&&(S(e),e.placeholderStyle&&e.placeholder&&(""===n||""===t)&&(e.__layout.stateStyleChanged=!0))}}));export{p as stateStyleType,h as stateType};
1
+ import{decorateLeafAttr as t,attr as e,State as n,MathHelper as s,isObject as i,isNull as o,isUndefined as l,PointerEvent as a,Plugin as r,UI as c,dataType as u,Text as d,defineKey as f,getDescriptor as y,doBoundsType as S}from"@leafer-ui/core";function h(s,i){return t(s,t=>e({set(e){this.__setAttr(t,e),this.leaferIsReady?i?n.setStyleName(this,i,e):n.set(this,e):this.__layout.stateStyleChanged=!0}}))}function p(n){return t(n,t=>e({set(e){this.__setAttr(t,e),this.__layout.stateStyleChanged=!0}}))}function m(t,e){if(e&&!0!==e)return e;if(!t.button){let{parent:e}=t;for(let t=0;t<2;t++)if(e){if(e.button)return e;e=e.parent}}return null}function b(t,e){i(e)||(e=void 0),_(t,e,"in")}function v(t,e){const{normalStyle:n}=t;i(e)||(e=void 0),n&&(e||(e=n),_(t,e,"out"))}const A={};function _(t,e,i){const{normalStyle:l}=t;e||(e=A),e.scale&&(s.assignScale(e,e.scale),delete e.scale),e!==A&&n.canAnimate||(i=null);let a=!!i&&function(t,e,n){let s="in"===t?"transition":"transitionOut";"out"===t&&o(n[s])&&o(e[s])&&(s="transition");return o(e[s])?n[s]:e[s]}(i,e,t);const r=a?function(t,e){const n=k(e,t),s=t.animate();s&&k(n,t,s.fromStyle);return n}(t,e):void 0;n.canAnimate&&g(t)&&t.killAnimate("transition"),l&&t.set(l,"temp");const c=g(t);if(c){const{animation:n}=c;if(n){const s=t.animate(n,void 0,"animation",!0);Object.assign(c,s.endingStyle),"in"!==i||e.animation!==n?s.kill():a=!1,delete c.animation}t.normalStyle=O(c,t),t.set(c,"temp")}else t.normalStyle=void 0;if(a){const e=O(r,t);t.set(r,"temp"),t.animate([r,e],a,"transition",!0)}t.__layout.stateStyleChanged=!1}function g(t){let e;const s={},i=m(t),o=i?t.state||i.state:t.state,l=o&&t.states[o];l&&n.isState(o,t,i)&&(e=P(s,l));const a=s.selectedStyle||t.selectedStyle;a&&n.isSelected(t,i)&&(e=P(s,a));const r=s.placeholderStyle||t.placeholderStyle;if(r&&n.isPlacehold(t,i)&&(e=P(s,r)),n.isDisabled(t,i)){const n=s.disabledStyle||t.disabledStyle;n&&(e=P(s,n))}else{const o=s.focusStyle||t.focusStyle;o&&n.isFocus(t,i)&&(e=P(s,o));const l=s.hoverStyle||t.hoverStyle;l&&n.isHover(t,i)&&(e=P(s,l));const a=s.pressStyle||t.pressStyle;a&&n.isPress(t,i)&&(e=P(s,a))}return e?s:void 0}function O(t,e,s,i){const o=s?t:{},l=s||t;for(let t in l)i&&n.animateExcludes[t]||(o[t]=e[t]);return o}function k(t,e,n){return O(t,e,n,!0)}function P(t,e){return Object.assign(t,e),!0}function D(t,e){const n=t[e];n&&b(t,n),t.button&&j(t.children,e)}function E(t,e,n){n||(n=t.states[e]),b(t,n),t.button&&j(t.children,null,e)}function j(t,e,s){if(!t)return;let i,o;for(let a=0,r=t.length;a<r;a++){if(i=t[a],e){switch(o=!0,e){case"hoverStyle":n.isHover(i)&&(o=!1);break;case"pressStyle":n.isPress(i)&&(o=!1);break;case"focusStyle":n.isFocus(i)&&(o=!1)}o&&D(i,e)}else l(s)||E(i,s);i.isBranch&&j(i.children,e,s)}}function N(t,e){const n=t[e];n&&v(t,n),t.button&&C(t.children,e)}function x(t,e,n){v(t,n),t.button&&C(t.children,null,e)}function C(t,e,n){if(!t)return;let s;for(let i=0,o=t.length;i<o;i++)s=t[i],e?N(s,e):l(n)||x(s,n),s.isBranch&&C(s.children,e,n)}function F(t,e,n){let s;const i=e.leafer?e.leafer.interaction:null;if(i&&(s=i[t](e),!s&&n)){const o=m(e,n);o&&(s=i[t](o))}return s}function H(t,e,n){let s=e[t];if(!s&&n){const i=m(e,n);i&&(s=i[t])}return s}r.add("state"),n.animateExcludes={animation:1,animationOut:1,transition:1,transitionOut:1,states:1,state:1,placeholder:1,normalStyle:1,hoverStyle:1,pressStyle:1,focusStyle:1,selectedStyle:1,disabledStyle:1,placeholderStyle:1},n.isState=function(t,e,n){return function(t,e,n){let s=e.states[t];if(!s&&n){const i=m(e,n);i&&(s=i.states[t])}return!!s}(t,e,n)},n.isSelected=function(t,e){return H("selected",t,e)},n.isDisabled=function(t,e){return H("disabled",t,e)},n.isFocus=function(t,e){return F("isFocus",t,e)},n.isHover=function(t,e){return F("isHover",t,e)},n.isPress=function(t,e){return F("isPress",t,e)},n.isPlacehold=function(t,e){return t.__.__isPlacehold},n.isDrag=function(t,e){return F("isDrag",t,e)},n.setStyleName=function(t,e,n){n?E(t,e,t[e]):x(t,e,t[e])},n.set=function(t,e){const n=t.states[e];n?E(t,e,n):x(t,e,n)},n.getStyle=g,n.updateStyle=_,n.updateEventStyle=function(t,e){switch(e){case a.ENTER:D(t,"hoverStyle");break;case a.LEAVE:N(t,"hoverStyle");break;case a.DOWN:D(t,"pressStyle");break;case a.UP:N(t,"pressStyle")}};const w=c.prototype;c.addAttr("selected",!1,h,"selectedStyle"),c.addAttr("disabled",!1,h,"disabledStyle"),c.addAttr("states",{},p),c.addAttr("state","",h),c.addAttr("normalStyle",void 0,u),c.addAttr("hoverStyle",void 0,p),c.addAttr("pressStyle",void 0,p),c.addAttr("focusStyle",void 0,p),c.addAttr("selectedStyle",void 0,p),c.addAttr("disabledStyle",void 0,p),c.addAttr("placeholderStyle",void 0,p),c.addAttr("button",!1,u),w.set=function(t,e){t&&(e?"temp"===e?(this.lockNormalStyle=!0,Object.assign(this,t),this.lockNormalStyle=!1):this.animate(t,e):Object.assign(this,t))},w.focus=function(t=!0){this.waitLeafer(()=>{let{focusData:e}=this.app.interaction;t?(e&&e.focus(!1),e=this):e=null,this.app.interaction.focusData=e,t?D(this,"focusStyle"):N(this,"focusStyle")})},w.updateState=function(){n.updateStyle(this,void 0,"in")};const B=d.prototype,L="text";f(B,L,Object.assign(Object.assign({},y(B,L)),{set(t){const e=this,n=e.text;e.__setAttr(L,t)&&(S(e),e.placeholderStyle&&e.placeholder&&(""===n||""===t)&&(e.__layout.stateStyleChanged=!0))}}));export{p as stateStyleType,h as stateType};
2
2
  //# sourceMappingURL=state.esm.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.esm.min.js","sources":["../../../../../../src/in/packages/state/src/decorator.ts","../../../../../../src/in/packages/state/src/helper.ts","../../../../../../src/in/packages/state/src/style.ts","../../../../../../src/in/packages/state/src/set.ts","../../../../../../src/in/packages/state/src/unset.ts","../../../../../../src/in/packages/state/src/check.ts","../../../../../../src/in/packages/state/src/index.ts","../../../../../../src/in/packages/state/src/event.ts"],"sourcesContent":["import { IValue } from '@leafer-ui/interface'\nimport { decorateLeafAttr, attr, State } from '@leafer-ui/core'\n\nexport function stateType(defaultValue?: IValue, styleName?: string) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n if (this.leaferIsReady) styleName ? State.setStyleName(this, styleName, value) : State.set(this, value)\n else this.__layout.stateStyleChanged = true\n }\n }))\n}\n\nexport function stateStyleType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n this.__layout.stateStyleChanged = true\n }\n }))\n}","import { IUI } from '@leafer-ui/interface'\n\n\nexport function findParentButton(leaf: IUI, button?: IUI | boolean): IUI {\n if (button && button !== true) return button\n if (!leaf.button) {\n let { parent } = leaf\n for (let i = 0; i < 2; i++) {\n if (parent) {\n if (parent.button) return parent\n parent = parent.parent\n }\n }\n }\n return null\n}","import { IUI, IObject, IUIInputData, IStateStyle, IScaleData, ITransition } from '@leafer-ui/interface'\nimport { State, MathHelper, isNull, isObject } from '@leafer-ui/core'\n\nimport { findParentButton } from './helper'\n\n\nexport function setStyle(leaf: IUI, style: IStateStyle): void {\n if (!isObject(style)) style = undefined\n updateStyle(leaf, style, 'in')\n}\n\nexport function unsetStyle(leaf: IUI, style?: IStateStyle): void {\n const { normalStyle } = leaf\n if (!isObject(style)) style = undefined\n if (normalStyle) {\n if (!style) style = normalStyle\n updateStyle(leaf, style, 'out')\n }\n}\n\nconst emprtyStyle = {}\n\nexport function updateStyle(leaf: IUI, style?: IStateStyle, type?: 'in' | 'out'): void {\n const { normalStyle } = leaf\n\n if (!style) style = emprtyStyle\n\n if (style.scale) {\n MathHelper.assignScale(style as IScaleData, style.scale)\n delete style.scale\n }\n\n if (style === emprtyStyle || !State.canAnimate) type = null\n let transition = type ? getTransition(type, style, leaf) : false\n const fromStyle = transition ? getFromStyle(leaf, style) : undefined\n\n // 回到正常状态\n const nextStyle = State.canAnimate && getStyle(leaf)\n if (nextStyle) leaf.killAnimate('transition')\n if (normalStyle) leaf.set(normalStyle, 'temp')\n\n\n const statesStyle = getStyle(leaf) // 必须在回到正常状态之后获取\n if (statesStyle) {\n\n const { animation } = statesStyle\n if (animation) {\n const animate = leaf.animate(animation, undefined, 'animation', true)\n Object.assign(statesStyle, animate.endingStyle) // 加上最终的动画样式\n\n if (type !== 'in' || style.animation !== animation) animate.kill()\n else transition = false\n\n delete statesStyle.animation\n }\n\n\n leaf.normalStyle = filterStyle(statesStyle, leaf)\n leaf.set(statesStyle, 'temp')\n } else {\n leaf.normalStyle = undefined\n }\n\n if (transition) {\n const toStyle = filterStyle(fromStyle, leaf)\n leaf.set(fromStyle, 'temp')\n leaf.animate([fromStyle, toStyle], transition, 'transition', true)\n }\n\n leaf.__layout.stateStyleChanged = false\n}\n\nexport function getStyle(leaf: IUI): IStateStyle {\n\n // 从低到高依次覆盖: states < selected < placeholder < focus < hover < press < disabled\n\n let exist: boolean\n const style: IUIInputData = {}, button = findParentButton(leaf)\n const state = button ? (leaf.state || button.state) : leaf.state\n\n const stateStyle = state && leaf.states[state]\n if (stateStyle && State.isState(state, leaf, button)) exist = assign(style, stateStyle)\n\n const selectedStyle = style.selectedStyle || leaf.selectedStyle\n if (selectedStyle && State.isSelected(leaf, button)) exist = assign(style, selectedStyle)\n\n const placeholderStyle = style.placeholderStyle || leaf.placeholderStyle\n if (placeholderStyle && State.isPlacehold(leaf, button)) exist = assign(style, placeholderStyle)\n\n if (State.isDisabled(leaf, button)) {\n\n const disabledStyle = style.disabledStyle || leaf.disabledStyle\n if (disabledStyle) exist = assign(style, disabledStyle)\n\n } else {\n\n const focusStyle = style.focusStyle || leaf.focusStyle\n if (focusStyle && State.isFocus(leaf, button)) exist = assign(style, focusStyle)\n\n const hoverStyle = style.hoverStyle || leaf.hoverStyle\n if (hoverStyle && State.isHover(leaf, button)) exist = assign(style, hoverStyle)\n\n const pressStyle = style.pressStyle || leaf.pressStyle\n if (pressStyle && State.isPress(leaf, button)) exist = assign(style, pressStyle)\n\n }\n\n return exist ? style : undefined\n}\n\n\nfunction filterStyle(style: IObject, data: IObject, addStyle?: IObject, useAnimateExcludes?: boolean): IObject {\n const to: IObject = addStyle ? style : {}, forStyle = addStyle || style\n for (let key in forStyle) {\n if (useAnimateExcludes) {\n if (!State.animateExcludes[key]) to[key] = data[key]\n } else to[key] = data[key]\n }\n return to\n}\n\nfunction filterAnimateStyle(style: IObject, data: IObject, addStyle?: IObject): IObject {\n return filterStyle(style, data, addStyle, true)\n}\n\nfunction getFromStyle(leaf: IUI, style: IObject): IObject {\n const fromStyle = filterAnimateStyle(style, leaf), animate = leaf.animate()\n if (animate) filterAnimateStyle(fromStyle, leaf, animate.fromStyle)\n return fromStyle\n}\n\nfunction getTransition(type: 'in' | 'out', style: IStateStyle, data: IUI): ITransition {\n let name: 'transition' | 'transitionOut' = type === 'in' ? 'transition' : 'transitionOut'\n if (type === 'out' && isNull(data[name]) && isNull(style[name])) name = 'transition'\n return isNull(style[name]) ? data[name] : style[name]\n}\n\nfunction assign(style: IStateStyle, stateStyle: IStateStyle): boolean {\n Object.assign(style, stateStyle)\n return true\n}","import { IUI, IStateStyle, IStateStyleType, IStateName } from '@leafer-ui/interface'\nimport { State, isUndefined } from '@leafer-ui/core'\n\nimport { setStyle } from './style'\n\n\nexport function setPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) setStyle(leaf, style)\n if (leaf.button) setChildrenState(leaf.children, stateName)\n}\n\nexport function setState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n if (!stateStyle) stateStyle = leaf.states[stateName]\n setStyle(leaf, stateStyle)\n if (leaf.button) setChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction setChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI, update: boolean\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) {\n\n update = true\n switch (stateType) {\n case 'hoverStyle':\n if (State.isHover(leaf)) update = false\n break\n case 'pressStyle':\n if (State.isPress(leaf)) update = false\n break\n case 'focusStyle':\n if (State.isFocus(leaf)) update = false\n }\n if (update) setPointerState(leaf, stateType)\n\n } else if (!isUndefined(stateName)) setState(leaf, stateName)\n\n if (leaf.isBranch) setChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateStyleType, IStateStyle, IStateName } from '@leafer-ui/interface'\nimport { isUndefined } from '@leafer-ui/core'\n\nimport { unsetStyle } from './style'\n\n\nexport function unsetPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) unsetStyle(leaf, style)\n if (leaf.button) unsetChildrenState(leaf.children, stateName)\n}\n\nexport function unsetState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n unsetStyle(leaf, stateStyle)\n if (leaf.button) unsetChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction unsetChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) unsetPointerState(leaf, stateType)\n else if (!isUndefined(stateName)) unsetState(leaf, stateName)\n\n if (leaf.isBranch) unsetChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateName, } from '@leafer-ui/interface'\n\nimport { findParentButton } from './helper'\n\n\nexport function checkPointerState(fnName: 'isHover' | 'isPress' | 'isFocus' | 'isDrag', leaf: IUI, button?: IUI | boolean): boolean {\n let find: boolean\n const interaction = leaf.leafer ? leaf.leafer.interaction : null\n if (interaction) {\n find = interaction[fnName](leaf)\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = interaction[fnName](parentButton)\n }\n }\n return find\n}\n\nexport function checkFixedState(attrName: 'selected' | 'disabled', leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf[attrName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton[attrName]\n }\n return find\n}\n\nexport function checkState(stateName: IStateName, leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf.states[stateName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton.states[stateName]\n }\n return !!find\n}\n","export { stateType, stateStyleType } from './decorator'\n\nimport { IUI, IStateStyleType, IStateName, IText } from '@leafer-ui/interface'\nimport { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'\n\nimport { setPointerState, setState } from './set'\nimport { unsetPointerState, unsetState } from './unset'\nimport { updateEventStyle } from './event'\nimport { checkPointerState, checkFixedState, checkState } from './check'\nimport { getStyle, updateStyle } from './style'\nimport { stateType, stateStyleType } from './decorator'\n\n\nPlugin.add('state')\n\n\nState.animateExcludes = {\n animation: 1,\n animationOut: 1,\n\n transition: 1,\n transitionOut: 1,\n\n states: 1,\n state: 1,\n\n placeholder: 1,\n\n normalStyle: 1,\n hoverStyle: 1,\n pressStyle: 1,\n focusStyle: 1,\n selectedStyle: 1,\n disabledStyle: 1,\n placeholderStyle: 1\n}\n\n\nState.isState = function (state: IStateName, leaf: IUI, button?: IUI | boolean): boolean { return checkState(state, leaf, button) }\nState.isSelected = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('selected', leaf, button) }\nState.isDisabled = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('disabled', leaf, button) }\n\nState.isFocus = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isFocus', leaf, button) }\nState.isHover = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isHover', leaf, button) }\nState.isPress = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isPress', leaf, button) }\nState.isPlacehold = function (leaf: IUI, _button?: IUI | boolean): boolean { return (leaf as IText).__.__isPlacehold }\n\nState.isDrag = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isDrag', leaf, button) }\n\nState.setStyleName = function (leaf: IUI, stateType: IStateStyleType, value: boolean): void { value ? setState(leaf, stateType, leaf[stateType]) : unsetState(leaf, stateType, leaf[stateType]) }\nState.set = function (leaf: IUI, stateName: string): void { const style = leaf.states[stateName]; style ? setState(leaf, stateName, style) : unsetState(leaf, stateName, style) }\n\nState.getStyle = getStyle\nState.updateStyle = updateStyle\nState.updateEventStyle = updateEventStyle\n\n\nconst ui = UI.prototype\n\n// addAttr\nUI.addAttr('selected', false, stateType, 'selectedStyle')\nUI.addAttr('disabled', false, stateType, 'disabledStyle')\n\nUI.addAttr('states', {}, stateStyleType)\nUI.addAttr('state', '', stateType)\n\nUI.addAttr('normalStyle', undefined, dataType)\nUI.addAttr('hoverStyle', undefined, stateStyleType)\nUI.addAttr('pressStyle', undefined, stateStyleType)\nUI.addAttr('focusStyle', undefined, stateStyleType)\nUI.addAttr('selectedStyle', undefined, stateStyleType)\nUI.addAttr('disabledStyle', undefined, stateStyleType)\nUI.addAttr('placeholderStyle', undefined, stateStyleType)\n\nUI.addAttr('button', false, dataType)\n\nui.focus = function (value: boolean = true): void {\n this.waitLeafer(() => {\n let { focusData } = this.app.interaction\n if (value) {\n if (focusData) focusData.focus(false)\n focusData = this\n } else focusData = null\n this.app.interaction.focusData = focusData\n value ? setPointerState(this, 'focusStyle') : unsetPointerState(this, 'focusStyle')\n })\n}\n\nui.updateState = function (): void {\n State.updateStyle(this, undefined, 'in')\n}\n\n\nconst text = Text.prototype, textKey = 'text'\n\ndefineKey(text, textKey, {\n ...getDescriptor(text, textKey),\n set(value: string) {\n const t = this as Text, oldValue = t.text\n if (t.__setAttr(textKey, value)) {\n doBoundsType(t)\n if (t.placeholderStyle && t.placeholder && (oldValue === '' || value === '')) t.__layout.stateStyleChanged = true\n }\n }\n})\n","import { IUI } from '@leafer-ui/interface'\nimport { PointerEvent } from '@leafer-ui/core'\n\nimport { setPointerState } from './set'\nimport { unsetPointerState } from './unset'\n\n\nexport function updateEventStyle(leaf: IUI, eventType: string): void {\n switch (eventType) {\n case PointerEvent.ENTER:\n setPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.LEAVE:\n unsetPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.DOWN:\n setPointerState(leaf, 'pressStyle')\n break\n case PointerEvent.UP:\n unsetPointerState(leaf, 'pressStyle')\n break\n }\n}"],"names":["stateType","defaultValue","styleName","decorateLeafAttr","key","attr","set","value","this","__setAttr","leaferIsReady","State","setStyleName","__layout","stateStyleChanged","stateStyleType","findParentButton","leaf","button","parent","i","setStyle","style","isObject","undefined","updateStyle","unsetStyle","normalStyle","emprtyStyle","type","scale","MathHelper","assignScale","canAnimate","transition","data","name","isNull","getTransition","fromStyle","filterAnimateStyle","animate","getFromStyle","getStyle","killAnimate","statesStyle","animation","Object","assign","endingStyle","kill","filterStyle","toStyle","exist","state","stateStyle","states","isState","selectedStyle","isSelected","placeholderStyle","isPlacehold","isDisabled","disabledStyle","focusStyle","isFocus","hoverStyle","isHover","pressStyle","isPress","addStyle","useAnimateExcludes","to","forStyle","animateExcludes","setPointerState","stateName","setChildrenState","children","setState","update","len","length","isUndefined","isBranch","unsetPointerState","unsetChildrenState","unsetState","checkPointerState","fnName","find","interaction","leafer","parentButton","checkFixedState","attrName","Plugin","add","animationOut","transitionOut","placeholder","checkState","_button","__","__isPlacehold","isDrag","updateEventStyle","eventType","PointerEvent","ENTER","LEAVE","DOWN","UP","ui","UI","prototype","addAttr","dataType","focus","waitLeafer","focusData","app","updateState","text","Text","textKey","defineKey","getDescriptor","t","oldValue","doBoundsType"],"mappings":"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"}
1
+ {"version":3,"file":"state.esm.min.js","sources":["../../../../../../src/in/packages/state/src/decorator.ts","../../../../../../src/in/packages/state/src/helper.ts","../../../../../../src/in/packages/state/src/style.ts","../../../../../../src/in/packages/state/src/set.ts","../../../../../../src/in/packages/state/src/unset.ts","../../../../../../src/in/packages/state/src/check.ts","../../../../../../src/in/packages/state/src/index.ts","../../../../../../src/in/packages/state/src/event.ts"],"sourcesContent":["import { IValue } from '@leafer-ui/interface'\nimport { decorateLeafAttr, attr, State } from '@leafer-ui/core'\n\nexport function stateType(defaultValue?: IValue, styleName?: string) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n if (this.leaferIsReady) styleName ? State.setStyleName(this, styleName, value) : State.set(this, value)\n else this.__layout.stateStyleChanged = true\n }\n }))\n}\n\nexport function stateStyleType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n this.__layout.stateStyleChanged = true\n }\n }))\n}","import { IUI } from '@leafer-ui/interface'\n\n\nexport function findParentButton(leaf: IUI, button?: IUI | boolean): IUI {\n if (button && button !== true) return button\n if (!leaf.button) {\n let { parent } = leaf\n for (let i = 0; i < 2; i++) {\n if (parent) {\n if (parent.button) return parent\n parent = parent.parent\n }\n }\n }\n return null\n}","import { IUI, IObject, IUIInputData, IStateStyle, IScaleData, ITransition } from '@leafer-ui/interface'\nimport { State, MathHelper, isNull, isObject } from '@leafer-ui/core'\n\nimport { findParentButton } from './helper'\n\n\nexport function setStyle(leaf: IUI, style: IStateStyle): void {\n if (!isObject(style)) style = undefined\n updateStyle(leaf, style, 'in')\n}\n\nexport function unsetStyle(leaf: IUI, style?: IStateStyle): void {\n const { normalStyle } = leaf\n if (!isObject(style)) style = undefined\n if (normalStyle) {\n if (!style) style = normalStyle\n updateStyle(leaf, style, 'out')\n }\n}\n\nconst emprtyStyle = {}\n\nexport function updateStyle(leaf: IUI, style?: IStateStyle, type?: 'in' | 'out'): void {\n const { normalStyle } = leaf\n\n if (!style) style = emprtyStyle\n\n if (style.scale) {\n MathHelper.assignScale(style as IScaleData, style.scale)\n delete style.scale\n }\n\n if (style === emprtyStyle || !State.canAnimate) type = null\n let transition = type ? getTransition(type, style, leaf) : false\n const fromStyle = transition ? getFromStyle(leaf, style) : undefined\n\n // 回到正常状态\n const nextStyle = State.canAnimate && getStyle(leaf)\n if (nextStyle) leaf.killAnimate('transition')\n if (normalStyle) leaf.set(normalStyle, 'temp')\n\n\n const statesStyle = getStyle(leaf) // 必须在回到正常状态之后获取\n if (statesStyle) {\n\n const { animation } = statesStyle\n if (animation) {\n const animate = leaf.animate(animation, undefined, 'animation', true)\n Object.assign(statesStyle, animate.endingStyle) // 加上最终的动画样式\n\n if (type !== 'in' || style.animation !== animation) animate.kill()\n else transition = false\n\n delete statesStyle.animation\n }\n\n\n leaf.normalStyle = filterStyle(statesStyle, leaf)\n leaf.set(statesStyle, 'temp')\n } else {\n leaf.normalStyle = undefined\n }\n\n if (transition) {\n const toStyle = filterStyle(fromStyle, leaf)\n leaf.set(fromStyle, 'temp')\n leaf.animate([fromStyle, toStyle], transition, 'transition', true)\n }\n\n leaf.__layout.stateStyleChanged = false\n}\n\nexport function getStyle(leaf: IUI): IStateStyle {\n\n // 从低到高依次覆盖: states < selected < placeholder < focus < hover < press < disabled\n\n let exist: boolean\n const style: IUIInputData = {}, button = findParentButton(leaf)\n const state = button ? (leaf.state || button.state) : leaf.state\n\n const stateStyle = state && leaf.states[state]\n if (stateStyle && State.isState(state, leaf, button)) exist = assign(style, stateStyle)\n\n const selectedStyle = style.selectedStyle || leaf.selectedStyle\n if (selectedStyle && State.isSelected(leaf, button)) exist = assign(style, selectedStyle)\n\n const placeholderStyle = style.placeholderStyle || leaf.placeholderStyle\n if (placeholderStyle && State.isPlacehold(leaf, button)) exist = assign(style, placeholderStyle)\n\n if (State.isDisabled(leaf, button)) {\n\n const disabledStyle = style.disabledStyle || leaf.disabledStyle\n if (disabledStyle) exist = assign(style, disabledStyle)\n\n } else {\n\n const focusStyle = style.focusStyle || leaf.focusStyle\n if (focusStyle && State.isFocus(leaf, button)) exist = assign(style, focusStyle)\n\n const hoverStyle = style.hoverStyle || leaf.hoverStyle\n if (hoverStyle && State.isHover(leaf, button)) exist = assign(style, hoverStyle)\n\n const pressStyle = style.pressStyle || leaf.pressStyle\n if (pressStyle && State.isPress(leaf, button)) exist = assign(style, pressStyle)\n\n }\n\n return exist ? style : undefined\n}\n\n\nfunction filterStyle(style: IObject, data: IObject, addStyle?: IObject, useAnimateExcludes?: boolean): IObject {\n const to: IObject = addStyle ? style : {}, forStyle = addStyle || style\n for (let key in forStyle) {\n if (useAnimateExcludes) {\n if (!State.animateExcludes[key]) to[key] = data[key]\n } else to[key] = data[key]\n }\n return to\n}\n\nfunction filterAnimateStyle(style: IObject, data: IObject, addStyle?: IObject): IObject {\n return filterStyle(style, data, addStyle, true)\n}\n\nfunction getFromStyle(leaf: IUI, style: IObject): IObject {\n const fromStyle = filterAnimateStyle(style, leaf), animate = leaf.animate()\n if (animate) filterAnimateStyle(fromStyle, leaf, animate.fromStyle)\n return fromStyle\n}\n\nfunction getTransition(type: 'in' | 'out', style: IStateStyle, data: IUI): ITransition {\n let name: 'transition' | 'transitionOut' = type === 'in' ? 'transition' : 'transitionOut'\n if (type === 'out' && isNull(data[name]) && isNull(style[name])) name = 'transition'\n return isNull(style[name]) ? data[name] : style[name]\n}\n\nfunction assign(style: IStateStyle, stateStyle: IStateStyle): boolean {\n Object.assign(style, stateStyle)\n return true\n}","import { IUI, IStateStyle, IStateStyleType, IStateName } from '@leafer-ui/interface'\nimport { State, isUndefined } from '@leafer-ui/core'\n\nimport { setStyle } from './style'\n\n\nexport function setPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) setStyle(leaf, style)\n if (leaf.button) setChildrenState(leaf.children, stateName)\n}\n\nexport function setState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n if (!stateStyle) stateStyle = leaf.states[stateName]\n setStyle(leaf, stateStyle)\n if (leaf.button) setChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction setChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI, update: boolean\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) {\n\n update = true\n switch (stateType) {\n case 'hoverStyle':\n if (State.isHover(leaf)) update = false\n break\n case 'pressStyle':\n if (State.isPress(leaf)) update = false\n break\n case 'focusStyle':\n if (State.isFocus(leaf)) update = false\n }\n if (update) setPointerState(leaf, stateType)\n\n } else if (!isUndefined(stateName)) setState(leaf, stateName)\n\n if (leaf.isBranch) setChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateStyleType, IStateStyle, IStateName } from '@leafer-ui/interface'\nimport { isUndefined } from '@leafer-ui/core'\n\nimport { unsetStyle } from './style'\n\n\nexport function unsetPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) unsetStyle(leaf, style)\n if (leaf.button) unsetChildrenState(leaf.children, stateName)\n}\n\nexport function unsetState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n unsetStyle(leaf, stateStyle)\n if (leaf.button) unsetChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction unsetChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) unsetPointerState(leaf, stateType)\n else if (!isUndefined(stateName)) unsetState(leaf, stateName)\n\n if (leaf.isBranch) unsetChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateName, } from '@leafer-ui/interface'\n\nimport { findParentButton } from './helper'\n\n\nexport function checkPointerState(fnName: 'isHover' | 'isPress' | 'isFocus' | 'isDrag', leaf: IUI, button?: IUI | boolean): boolean {\n let find: boolean\n const interaction = leaf.leafer ? leaf.leafer.interaction : null\n if (interaction) {\n find = interaction[fnName](leaf)\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = interaction[fnName](parentButton)\n }\n }\n return find\n}\n\nexport function checkFixedState(attrName: 'selected' | 'disabled', leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf[attrName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton[attrName]\n }\n return find\n}\n\nexport function checkState(stateName: IStateName, leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf.states[stateName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton.states[stateName]\n }\n return !!find\n}\n","export { stateType, stateStyleType } from './decorator'\n\nimport { IUI, IStateStyleType, IStateName, IText, IUIInputData, ITransition } from '@leafer-ui/interface'\nimport { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'\n\nimport { setPointerState, setState } from './set'\nimport { unsetPointerState, unsetState } from './unset'\nimport { updateEventStyle } from './event'\nimport { checkPointerState, checkFixedState, checkState } from './check'\nimport { getStyle, updateStyle } from './style'\nimport { stateType, stateStyleType } from './decorator'\n\n\nPlugin.add('state')\n\n\nState.animateExcludes = {\n animation: 1,\n animationOut: 1,\n\n transition: 1,\n transitionOut: 1,\n\n states: 1,\n state: 1,\n\n placeholder: 1,\n\n normalStyle: 1,\n hoverStyle: 1,\n pressStyle: 1,\n focusStyle: 1,\n selectedStyle: 1,\n disabledStyle: 1,\n placeholderStyle: 1\n}\n\n\nState.isState = function (state: IStateName, leaf: IUI, button?: IUI | boolean): boolean { return checkState(state, leaf, button) }\nState.isSelected = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('selected', leaf, button) }\nState.isDisabled = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('disabled', leaf, button) }\n\nState.isFocus = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isFocus', leaf, button) }\nState.isHover = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isHover', leaf, button) }\nState.isPress = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isPress', leaf, button) }\nState.isPlacehold = function (leaf: IUI, _button?: IUI | boolean): boolean { return (leaf as IText).__.__isPlacehold }\n\nState.isDrag = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isDrag', leaf, button) }\n\nState.setStyleName = function (leaf: IUI, stateType: IStateStyleType, value: boolean): void { value ? setState(leaf, stateType, leaf[stateType]) : unsetState(leaf, stateType, leaf[stateType]) }\nState.set = function (leaf: IUI, stateName: string): void { const style = leaf.states[stateName]; style ? setState(leaf, stateName, style) : unsetState(leaf, stateName, style) }\n\nState.getStyle = getStyle\nState.updateStyle = updateStyle\nState.updateEventStyle = updateEventStyle\n\n\nconst ui = UI.prototype\n\n// addAttr\nUI.addAttr('selected', false, stateType, 'selectedStyle')\nUI.addAttr('disabled', false, stateType, 'disabledStyle')\n\nUI.addAttr('states', {}, stateStyleType)\nUI.addAttr('state', '', stateType)\n\nUI.addAttr('normalStyle', undefined, dataType)\nUI.addAttr('hoverStyle', undefined, stateStyleType)\nUI.addAttr('pressStyle', undefined, stateStyleType)\nUI.addAttr('focusStyle', undefined, stateStyleType)\nUI.addAttr('selectedStyle', undefined, stateStyleType)\nUI.addAttr('disabledStyle', undefined, stateStyleType)\nUI.addAttr('placeholderStyle', undefined, stateStyleType)\n\nUI.addAttr('button', false, dataType)\n\n// @leafer-in/animate will rewrite\nui.set = function (data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (transition) {\n if (transition === 'temp') {\n this.lockNormalStyle = true\n Object.assign(this, data)\n this.lockNormalStyle = false\n } else this.animate(data, transition)\n } else Object.assign(this, data)\n }\n}\n\nui.focus = function (value: boolean = true): void {\n this.waitLeafer(() => {\n let { focusData } = this.app.interaction\n if (value) {\n if (focusData) focusData.focus(false)\n focusData = this\n } else focusData = null\n this.app.interaction.focusData = focusData\n value ? setPointerState(this, 'focusStyle') : unsetPointerState(this, 'focusStyle')\n })\n}\n\nui.updateState = function (): void {\n State.updateStyle(this, undefined, 'in')\n}\n\n\nconst text = Text.prototype, textKey = 'text'\n\ndefineKey(text, textKey, {\n ...getDescriptor(text, textKey),\n set(value: string) {\n const t = this as Text, oldValue = t.text\n if (t.__setAttr(textKey, value)) {\n doBoundsType(t)\n if (t.placeholderStyle && t.placeholder && (oldValue === '' || value === '')) t.__layout.stateStyleChanged = true\n }\n }\n})\n","import { IUI } from '@leafer-ui/interface'\nimport { PointerEvent } from '@leafer-ui/core'\n\nimport { setPointerState } from './set'\nimport { unsetPointerState } from './unset'\n\n\nexport function updateEventStyle(leaf: IUI, eventType: string): void {\n switch (eventType) {\n case PointerEvent.ENTER:\n setPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.LEAVE:\n unsetPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.DOWN:\n setPointerState(leaf, 'pressStyle')\n break\n case PointerEvent.UP:\n unsetPointerState(leaf, 'pressStyle')\n break\n }\n}"],"names":["stateType","defaultValue","styleName","decorateLeafAttr","key","attr","set","value","this","__setAttr","leaferIsReady","State","setStyleName","__layout","stateStyleChanged","stateStyleType","findParentButton","leaf","button","parent","i","setStyle","style","isObject","undefined","updateStyle","unsetStyle","normalStyle","emprtyStyle","type","scale","MathHelper","assignScale","canAnimate","transition","data","name","isNull","getTransition","fromStyle","filterAnimateStyle","animate","getFromStyle","getStyle","killAnimate","statesStyle","animation","Object","assign","endingStyle","kill","filterStyle","toStyle","exist","state","stateStyle","states","isState","selectedStyle","isSelected","placeholderStyle","isPlacehold","isDisabled","disabledStyle","focusStyle","isFocus","hoverStyle","isHover","pressStyle","isPress","addStyle","useAnimateExcludes","to","forStyle","animateExcludes","setPointerState","stateName","setChildrenState","children","setState","update","len","length","isUndefined","isBranch","unsetPointerState","unsetChildrenState","unsetState","checkPointerState","fnName","find","interaction","leafer","parentButton","checkFixedState","attrName","Plugin","add","animationOut","transitionOut","placeholder","checkState","_button","__","__isPlacehold","isDrag","updateEventStyle","eventType","PointerEvent","ENTER","LEAVE","DOWN","UP","ui","UI","prototype","addAttr","dataType","lockNormalStyle","focus","waitLeafer","focusData","app","updateState","text","Text","textKey","defineKey","getDescriptor","t","oldValue","doBoundsType"],"mappings":"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"}
package/dist/state.js CHANGED
@@ -290,6 +290,17 @@ this.LeaferIN.state = function(exports, core) {
290
290
  core.UI.addAttr("disabledStyle", undefined, stateStyleType);
291
291
  core.UI.addAttr("placeholderStyle", undefined, stateStyleType);
292
292
  core.UI.addAttr("button", false, core.dataType);
293
+ ui.set = function(data, transition) {
294
+ if (data) {
295
+ if (transition) {
296
+ if (transition === "temp") {
297
+ this.lockNormalStyle = true;
298
+ Object.assign(this, data);
299
+ this.lockNormalStyle = false;
300
+ } else this.animate(data, transition);
301
+ } else Object.assign(this, data);
302
+ }
303
+ };
293
304
  ui.focus = function(value = true) {
294
305
  this.waitLeafer(() => {
295
306
  let {focusData: focusData} = this.app.interaction;
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("@leafer-ui/core");function e(e,n){return t.decorateLeafAttr(e,e=>t.attr({set(s){this.__setAttr(e,s),this.leaferIsReady?n?t.State.setStyleName(this,n,s):t.State.set(this,s):this.__layout.stateStyleChanged=!0}}))}function n(e){return t.decorateLeafAttr(e,e=>t.attr({set(t){this.__setAttr(e,t),this.__layout.stateStyleChanged=!0}}))}function s(t,e){if(e&&!0!==e)return e;if(!t.button){let{parent:e}=t;for(let t=0;t<2;t++)if(e){if(e.button)return e;e=e.parent}}return null}function a(e,n){t.isObject(n)||(n=void 0),l(e,n,"in")}function i(e,n){const{normalStyle:s}=e;t.isObject(n)||(n=void 0),s&&(n||(n=s),l(e,n,"out"))}const o={};function l(e,n,s){const{normalStyle:a}=e;n||(n=o),n.scale&&(t.MathHelper.assignScale(n,n.scale),delete n.scale),n!==o&&t.State.canAnimate||(s=null);let i=!!s&&function(e,n,s){let a="in"===e?"transition":"transitionOut";"out"===e&&t.isNull(s[a])&&t.isNull(n[a])&&(a="transition");return t.isNull(n[a])?s[a]:n[a]}(s,n,e);const l=i?function(t,e){const n=u(e,t),s=t.animate();s&&u(n,t,s.fromStyle);return n}(e,n):void 0;t.State.canAnimate&&r(e)&&e.killAnimate("transition"),a&&e.set(a,"temp");const d=r(e);if(d){const{animation:t}=d;if(t){const a=e.animate(t,void 0,"animation",!0);Object.assign(d,a.endingStyle),"in"!==s||n.animation!==t?a.kill():i=!1,delete d.animation}e.normalStyle=c(d,e),e.set(d,"temp")}else e.normalStyle=void 0;if(i){const t=c(l,e);e.set(l,"temp"),e.animate([l,t],i,"transition",!0)}e.__layout.stateStyleChanged=!1}function r(e){let n;const a={},i=s(e),o=i?e.state||i.state:e.state,l=o&&e.states[o];l&&t.State.isState(o,e,i)&&(n=d(a,l));const r=a.selectedStyle||e.selectedStyle;r&&t.State.isSelected(e,i)&&(n=d(a,r));const c=a.placeholderStyle||e.placeholderStyle;if(c&&t.State.isPlacehold(e,i)&&(n=d(a,c)),t.State.isDisabled(e,i)){const t=a.disabledStyle||e.disabledStyle;t&&(n=d(a,t))}else{const s=a.focusStyle||e.focusStyle;s&&t.State.isFocus(e,i)&&(n=d(a,s));const o=a.hoverStyle||e.hoverStyle;o&&t.State.isHover(e,i)&&(n=d(a,o));const l=a.pressStyle||e.pressStyle;l&&t.State.isPress(e,i)&&(n=d(a,l))}return n?a:void 0}function c(e,n,s,a){const i=s?e:{},o=s||e;for(let e in o)a&&t.State.animateExcludes[e]||(i[e]=n[e]);return i}function u(t,e,n){return c(t,e,n,!0)}function d(t,e){return Object.assign(t,e),!0}function S(t,e){const n=t[e];n&&a(t,n),t.button&&y(t.children,e)}function f(t,e,n){n||(n=t.states[e]),a(t,n),t.button&&y(t.children,null,e)}function y(e,n,s){if(!e)return;let a,i;for(let o=0,l=e.length;o<l;o++){if(a=e[o],n){switch(i=!0,n){case"hoverStyle":t.State.isHover(a)&&(i=!1);break;case"pressStyle":t.State.isPress(a)&&(i=!1);break;case"focusStyle":t.State.isFocus(a)&&(i=!1)}i&&S(a,n)}else t.isUndefined(s)||f(a,s);a.isBranch&&y(a.children,n,s)}}function h(t,e){const n=t[e];n&&i(t,n),t.button&&v(t.children,e)}function p(t,e,n){i(t,n),t.button&&v(t.children,null,e)}function v(e,n,s){if(!e)return;let a;for(let i=0,o=e.length;i<o;i++)a=e[i],n?h(a,n):t.isUndefined(s)||p(a,s),a.isBranch&&v(a.children,n,s)}function b(t,e,n){let a;const i=e.leafer?e.leafer.interaction:null;if(i&&(a=i[t](e),!a&&n)){const o=s(e,n);o&&(a=i[t](o))}return a}function m(t,e,n){let a=e[t];if(!a&&n){const i=s(e,n);i&&(a=i[t])}return a}t.Plugin.add("state"),t.State.animateExcludes={animation:1,animationOut:1,transition:1,transitionOut:1,states:1,state:1,placeholder:1,normalStyle:1,hoverStyle:1,pressStyle:1,focusStyle:1,selectedStyle:1,disabledStyle:1,placeholderStyle:1},t.State.isState=function(t,e,n){return function(t,e,n){let a=e.states[t];if(!a&&n){const i=s(e,n);i&&(a=i.states[t])}return!!a}(t,e,n)},t.State.isSelected=function(t,e){return m("selected",t,e)},t.State.isDisabled=function(t,e){return m("disabled",t,e)},t.State.isFocus=function(t,e){return b("isFocus",t,e)},t.State.isHover=function(t,e){return b("isHover",t,e)},t.State.isPress=function(t,e){return b("isPress",t,e)},t.State.isPlacehold=function(t,e){return t.__.__isPlacehold},t.State.isDrag=function(t,e){return b("isDrag",t,e)},t.State.setStyleName=function(t,e,n){n?f(t,e,t[e]):p(t,e,t[e])},t.State.set=function(t,e){const n=t.states[e];n?f(t,e,n):p(t,e,n)},t.State.getStyle=r,t.State.updateStyle=l,t.State.updateEventStyle=function(e,n){switch(n){case t.PointerEvent.ENTER:S(e,"hoverStyle");break;case t.PointerEvent.LEAVE:h(e,"hoverStyle");break;case t.PointerEvent.DOWN:S(e,"pressStyle");break;case t.PointerEvent.UP:h(e,"pressStyle")}};const A=t.UI.prototype;t.UI.addAttr("selected",!1,e,"selectedStyle"),t.UI.addAttr("disabled",!1,e,"disabledStyle"),t.UI.addAttr("states",{},n),t.UI.addAttr("state","",e),t.UI.addAttr("normalStyle",void 0,t.dataType),t.UI.addAttr("hoverStyle",void 0,n),t.UI.addAttr("pressStyle",void 0,n),t.UI.addAttr("focusStyle",void 0,n),t.UI.addAttr("selectedStyle",void 0,n),t.UI.addAttr("disabledStyle",void 0,n),t.UI.addAttr("placeholderStyle",void 0,n),t.UI.addAttr("button",!1,t.dataType),A.focus=function(t=!0){this.waitLeafer(()=>{let{focusData:e}=this.app.interaction;t?(e&&e.focus(!1),e=this):e=null,this.app.interaction.focusData=e,t?S(this,"focusStyle"):h(this,"focusStyle")})},A.updateState=function(){t.State.updateStyle(this,void 0,"in")};const _=t.Text.prototype,g="text";t.defineKey(_,g,Object.assign(Object.assign({},t.getDescriptor(_,g)),{set(e){const n=this,s=n.text;n.__setAttr(g,e)&&(t.doBoundsType(n),n.placeholderStyle&&n.placeholder&&(""===s||""===e)&&(n.__layout.stateStyleChanged=!0))}})),exports.stateStyleType=n,exports.stateType=e;
1
+ "use strict";var t=require("@leafer-ui/core");function e(e,n){return t.decorateLeafAttr(e,e=>t.attr({set(s){this.__setAttr(e,s),this.leaferIsReady?n?t.State.setStyleName(this,n,s):t.State.set(this,s):this.__layout.stateStyleChanged=!0}}))}function n(e){return t.decorateLeafAttr(e,e=>t.attr({set(t){this.__setAttr(e,t),this.__layout.stateStyleChanged=!0}}))}function s(t,e){if(e&&!0!==e)return e;if(!t.button){let{parent:e}=t;for(let t=0;t<2;t++)if(e){if(e.button)return e;e=e.parent}}return null}function i(e,n){t.isObject(n)||(n=void 0),l(e,n,"in")}function a(e,n){const{normalStyle:s}=e;t.isObject(n)||(n=void 0),s&&(n||(n=s),l(e,n,"out"))}const o={};function l(e,n,s){const{normalStyle:i}=e;n||(n=o),n.scale&&(t.MathHelper.assignScale(n,n.scale),delete n.scale),n!==o&&t.State.canAnimate||(s=null);let a=!!s&&function(e,n,s){let i="in"===e?"transition":"transitionOut";"out"===e&&t.isNull(s[i])&&t.isNull(n[i])&&(i="transition");return t.isNull(n[i])?s[i]:n[i]}(s,n,e);const l=a?function(t,e){const n=u(e,t),s=t.animate();s&&u(n,t,s.fromStyle);return n}(e,n):void 0;t.State.canAnimate&&r(e)&&e.killAnimate("transition"),i&&e.set(i,"temp");const d=r(e);if(d){const{animation:t}=d;if(t){const i=e.animate(t,void 0,"animation",!0);Object.assign(d,i.endingStyle),"in"!==s||n.animation!==t?i.kill():a=!1,delete d.animation}e.normalStyle=c(d,e),e.set(d,"temp")}else e.normalStyle=void 0;if(a){const t=c(l,e);e.set(l,"temp"),e.animate([l,t],a,"transition",!0)}e.__layout.stateStyleChanged=!1}function r(e){let n;const i={},a=s(e),o=a?e.state||a.state:e.state,l=o&&e.states[o];l&&t.State.isState(o,e,a)&&(n=d(i,l));const r=i.selectedStyle||e.selectedStyle;r&&t.State.isSelected(e,a)&&(n=d(i,r));const c=i.placeholderStyle||e.placeholderStyle;if(c&&t.State.isPlacehold(e,a)&&(n=d(i,c)),t.State.isDisabled(e,a)){const t=i.disabledStyle||e.disabledStyle;t&&(n=d(i,t))}else{const s=i.focusStyle||e.focusStyle;s&&t.State.isFocus(e,a)&&(n=d(i,s));const o=i.hoverStyle||e.hoverStyle;o&&t.State.isHover(e,a)&&(n=d(i,o));const l=i.pressStyle||e.pressStyle;l&&t.State.isPress(e,a)&&(n=d(i,l))}return n?i:void 0}function c(e,n,s,i){const a=s?e:{},o=s||e;for(let e in o)i&&t.State.animateExcludes[e]||(a[e]=n[e]);return a}function u(t,e,n){return c(t,e,n,!0)}function d(t,e){return Object.assign(t,e),!0}function S(t,e){const n=t[e];n&&i(t,n),t.button&&y(t.children,e)}function f(t,e,n){n||(n=t.states[e]),i(t,n),t.button&&y(t.children,null,e)}function y(e,n,s){if(!e)return;let i,a;for(let o=0,l=e.length;o<l;o++){if(i=e[o],n){switch(a=!0,n){case"hoverStyle":t.State.isHover(i)&&(a=!1);break;case"pressStyle":t.State.isPress(i)&&(a=!1);break;case"focusStyle":t.State.isFocus(i)&&(a=!1)}a&&S(i,n)}else t.isUndefined(s)||f(i,s);i.isBranch&&y(i.children,n,s)}}function h(t,e){const n=t[e];n&&a(t,n),t.button&&v(t.children,e)}function p(t,e,n){a(t,n),t.button&&v(t.children,null,e)}function v(e,n,s){if(!e)return;let i;for(let a=0,o=e.length;a<o;a++)i=e[a],n?h(i,n):t.isUndefined(s)||p(i,s),i.isBranch&&v(i.children,n,s)}function m(t,e,n){let i;const a=e.leafer?e.leafer.interaction:null;if(a&&(i=a[t](e),!i&&n)){const o=s(e,n);o&&(i=a[t](o))}return i}function b(t,e,n){let i=e[t];if(!i&&n){const a=s(e,n);a&&(i=a[t])}return i}t.Plugin.add("state"),t.State.animateExcludes={animation:1,animationOut:1,transition:1,transitionOut:1,states:1,state:1,placeholder:1,normalStyle:1,hoverStyle:1,pressStyle:1,focusStyle:1,selectedStyle:1,disabledStyle:1,placeholderStyle:1},t.State.isState=function(t,e,n){return function(t,e,n){let i=e.states[t];if(!i&&n){const a=s(e,n);a&&(i=a.states[t])}return!!i}(t,e,n)},t.State.isSelected=function(t,e){return b("selected",t,e)},t.State.isDisabled=function(t,e){return b("disabled",t,e)},t.State.isFocus=function(t,e){return m("isFocus",t,e)},t.State.isHover=function(t,e){return m("isHover",t,e)},t.State.isPress=function(t,e){return m("isPress",t,e)},t.State.isPlacehold=function(t,e){return t.__.__isPlacehold},t.State.isDrag=function(t,e){return m("isDrag",t,e)},t.State.setStyleName=function(t,e,n){n?f(t,e,t[e]):p(t,e,t[e])},t.State.set=function(t,e){const n=t.states[e];n?f(t,e,n):p(t,e,n)},t.State.getStyle=r,t.State.updateStyle=l,t.State.updateEventStyle=function(e,n){switch(n){case t.PointerEvent.ENTER:S(e,"hoverStyle");break;case t.PointerEvent.LEAVE:h(e,"hoverStyle");break;case t.PointerEvent.DOWN:S(e,"pressStyle");break;case t.PointerEvent.UP:h(e,"pressStyle")}};const A=t.UI.prototype;t.UI.addAttr("selected",!1,e,"selectedStyle"),t.UI.addAttr("disabled",!1,e,"disabledStyle"),t.UI.addAttr("states",{},n),t.UI.addAttr("state","",e),t.UI.addAttr("normalStyle",void 0,t.dataType),t.UI.addAttr("hoverStyle",void 0,n),t.UI.addAttr("pressStyle",void 0,n),t.UI.addAttr("focusStyle",void 0,n),t.UI.addAttr("selectedStyle",void 0,n),t.UI.addAttr("disabledStyle",void 0,n),t.UI.addAttr("placeholderStyle",void 0,n),t.UI.addAttr("button",!1,t.dataType),A.set=function(t,e){t&&(e?"temp"===e?(this.lockNormalStyle=!0,Object.assign(this,t),this.lockNormalStyle=!1):this.animate(t,e):Object.assign(this,t))},A.focus=function(t=!0){this.waitLeafer(()=>{let{focusData:e}=this.app.interaction;t?(e&&e.focus(!1),e=this):e=null,this.app.interaction.focusData=e,t?S(this,"focusStyle"):h(this,"focusStyle")})},A.updateState=function(){t.State.updateStyle(this,void 0,"in")};const g=t.Text.prototype,_="text";t.defineKey(g,_,Object.assign(Object.assign({},t.getDescriptor(g,_)),{set(e){const n=this,s=n.text;n.__setAttr(_,e)&&(t.doBoundsType(n),n.placeholderStyle&&n.placeholder&&(""===s||""===e)&&(n.__layout.stateStyleChanged=!0))}})),exports.stateStyleType=n,exports.stateType=e;
2
2
  //# sourceMappingURL=state.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.min.cjs","sources":["../../../../../../src/in/packages/state/src/decorator.ts","../../../../../../src/in/packages/state/src/helper.ts","../../../../../../src/in/packages/state/src/style.ts","../../../../../../src/in/packages/state/src/set.ts","../../../../../../src/in/packages/state/src/unset.ts","../../../../../../src/in/packages/state/src/check.ts","../../../../../../src/in/packages/state/src/index.ts","../../../../../../src/in/packages/state/src/event.ts"],"sourcesContent":["import { IValue } from '@leafer-ui/interface'\nimport { decorateLeafAttr, attr, State } from '@leafer-ui/core'\n\nexport function stateType(defaultValue?: IValue, styleName?: string) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n if (this.leaferIsReady) styleName ? State.setStyleName(this, styleName, value) : State.set(this, value)\n else this.__layout.stateStyleChanged = true\n }\n }))\n}\n\nexport function stateStyleType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n this.__layout.stateStyleChanged = true\n }\n }))\n}","import { IUI } from '@leafer-ui/interface'\n\n\nexport function findParentButton(leaf: IUI, button?: IUI | boolean): IUI {\n if (button && button !== true) return button\n if (!leaf.button) {\n let { parent } = leaf\n for (let i = 0; i < 2; i++) {\n if (parent) {\n if (parent.button) return parent\n parent = parent.parent\n }\n }\n }\n return null\n}","import { IUI, IObject, IUIInputData, IStateStyle, IScaleData, ITransition } from '@leafer-ui/interface'\nimport { State, MathHelper, isNull, isObject } from '@leafer-ui/core'\n\nimport { findParentButton } from './helper'\n\n\nexport function setStyle(leaf: IUI, style: IStateStyle): void {\n if (!isObject(style)) style = undefined\n updateStyle(leaf, style, 'in')\n}\n\nexport function unsetStyle(leaf: IUI, style?: IStateStyle): void {\n const { normalStyle } = leaf\n if (!isObject(style)) style = undefined\n if (normalStyle) {\n if (!style) style = normalStyle\n updateStyle(leaf, style, 'out')\n }\n}\n\nconst emprtyStyle = {}\n\nexport function updateStyle(leaf: IUI, style?: IStateStyle, type?: 'in' | 'out'): void {\n const { normalStyle } = leaf\n\n if (!style) style = emprtyStyle\n\n if (style.scale) {\n MathHelper.assignScale(style as IScaleData, style.scale)\n delete style.scale\n }\n\n if (style === emprtyStyle || !State.canAnimate) type = null\n let transition = type ? getTransition(type, style, leaf) : false\n const fromStyle = transition ? getFromStyle(leaf, style) : undefined\n\n // 回到正常状态\n const nextStyle = State.canAnimate && getStyle(leaf)\n if (nextStyle) leaf.killAnimate('transition')\n if (normalStyle) leaf.set(normalStyle, 'temp')\n\n\n const statesStyle = getStyle(leaf) // 必须在回到正常状态之后获取\n if (statesStyle) {\n\n const { animation } = statesStyle\n if (animation) {\n const animate = leaf.animate(animation, undefined, 'animation', true)\n Object.assign(statesStyle, animate.endingStyle) // 加上最终的动画样式\n\n if (type !== 'in' || style.animation !== animation) animate.kill()\n else transition = false\n\n delete statesStyle.animation\n }\n\n\n leaf.normalStyle = filterStyle(statesStyle, leaf)\n leaf.set(statesStyle, 'temp')\n } else {\n leaf.normalStyle = undefined\n }\n\n if (transition) {\n const toStyle = filterStyle(fromStyle, leaf)\n leaf.set(fromStyle, 'temp')\n leaf.animate([fromStyle, toStyle], transition, 'transition', true)\n }\n\n leaf.__layout.stateStyleChanged = false\n}\n\nexport function getStyle(leaf: IUI): IStateStyle {\n\n // 从低到高依次覆盖: states < selected < placeholder < focus < hover < press < disabled\n\n let exist: boolean\n const style: IUIInputData = {}, button = findParentButton(leaf)\n const state = button ? (leaf.state || button.state) : leaf.state\n\n const stateStyle = state && leaf.states[state]\n if (stateStyle && State.isState(state, leaf, button)) exist = assign(style, stateStyle)\n\n const selectedStyle = style.selectedStyle || leaf.selectedStyle\n if (selectedStyle && State.isSelected(leaf, button)) exist = assign(style, selectedStyle)\n\n const placeholderStyle = style.placeholderStyle || leaf.placeholderStyle\n if (placeholderStyle && State.isPlacehold(leaf, button)) exist = assign(style, placeholderStyle)\n\n if (State.isDisabled(leaf, button)) {\n\n const disabledStyle = style.disabledStyle || leaf.disabledStyle\n if (disabledStyle) exist = assign(style, disabledStyle)\n\n } else {\n\n const focusStyle = style.focusStyle || leaf.focusStyle\n if (focusStyle && State.isFocus(leaf, button)) exist = assign(style, focusStyle)\n\n const hoverStyle = style.hoverStyle || leaf.hoverStyle\n if (hoverStyle && State.isHover(leaf, button)) exist = assign(style, hoverStyle)\n\n const pressStyle = style.pressStyle || leaf.pressStyle\n if (pressStyle && State.isPress(leaf, button)) exist = assign(style, pressStyle)\n\n }\n\n return exist ? style : undefined\n}\n\n\nfunction filterStyle(style: IObject, data: IObject, addStyle?: IObject, useAnimateExcludes?: boolean): IObject {\n const to: IObject = addStyle ? style : {}, forStyle = addStyle || style\n for (let key in forStyle) {\n if (useAnimateExcludes) {\n if (!State.animateExcludes[key]) to[key] = data[key]\n } else to[key] = data[key]\n }\n return to\n}\n\nfunction filterAnimateStyle(style: IObject, data: IObject, addStyle?: IObject): IObject {\n return filterStyle(style, data, addStyle, true)\n}\n\nfunction getFromStyle(leaf: IUI, style: IObject): IObject {\n const fromStyle = filterAnimateStyle(style, leaf), animate = leaf.animate()\n if (animate) filterAnimateStyle(fromStyle, leaf, animate.fromStyle)\n return fromStyle\n}\n\nfunction getTransition(type: 'in' | 'out', style: IStateStyle, data: IUI): ITransition {\n let name: 'transition' | 'transitionOut' = type === 'in' ? 'transition' : 'transitionOut'\n if (type === 'out' && isNull(data[name]) && isNull(style[name])) name = 'transition'\n return isNull(style[name]) ? data[name] : style[name]\n}\n\nfunction assign(style: IStateStyle, stateStyle: IStateStyle): boolean {\n Object.assign(style, stateStyle)\n return true\n}","import { IUI, IStateStyle, IStateStyleType, IStateName } from '@leafer-ui/interface'\nimport { State, isUndefined } from '@leafer-ui/core'\n\nimport { setStyle } from './style'\n\n\nexport function setPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) setStyle(leaf, style)\n if (leaf.button) setChildrenState(leaf.children, stateName)\n}\n\nexport function setState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n if (!stateStyle) stateStyle = leaf.states[stateName]\n setStyle(leaf, stateStyle)\n if (leaf.button) setChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction setChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI, update: boolean\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) {\n\n update = true\n switch (stateType) {\n case 'hoverStyle':\n if (State.isHover(leaf)) update = false\n break\n case 'pressStyle':\n if (State.isPress(leaf)) update = false\n break\n case 'focusStyle':\n if (State.isFocus(leaf)) update = false\n }\n if (update) setPointerState(leaf, stateType)\n\n } else if (!isUndefined(stateName)) setState(leaf, stateName)\n\n if (leaf.isBranch) setChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateStyleType, IStateStyle, IStateName } from '@leafer-ui/interface'\nimport { isUndefined } from '@leafer-ui/core'\n\nimport { unsetStyle } from './style'\n\n\nexport function unsetPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) unsetStyle(leaf, style)\n if (leaf.button) unsetChildrenState(leaf.children, stateName)\n}\n\nexport function unsetState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n unsetStyle(leaf, stateStyle)\n if (leaf.button) unsetChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction unsetChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) unsetPointerState(leaf, stateType)\n else if (!isUndefined(stateName)) unsetState(leaf, stateName)\n\n if (leaf.isBranch) unsetChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateName, } from '@leafer-ui/interface'\n\nimport { findParentButton } from './helper'\n\n\nexport function checkPointerState(fnName: 'isHover' | 'isPress' | 'isFocus' | 'isDrag', leaf: IUI, button?: IUI | boolean): boolean {\n let find: boolean\n const interaction = leaf.leafer ? leaf.leafer.interaction : null\n if (interaction) {\n find = interaction[fnName](leaf)\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = interaction[fnName](parentButton)\n }\n }\n return find\n}\n\nexport function checkFixedState(attrName: 'selected' | 'disabled', leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf[attrName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton[attrName]\n }\n return find\n}\n\nexport function checkState(stateName: IStateName, leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf.states[stateName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton.states[stateName]\n }\n return !!find\n}\n","export { stateType, stateStyleType } from './decorator'\n\nimport { IUI, IStateStyleType, IStateName, IText } from '@leafer-ui/interface'\nimport { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'\n\nimport { setPointerState, setState } from './set'\nimport { unsetPointerState, unsetState } from './unset'\nimport { updateEventStyle } from './event'\nimport { checkPointerState, checkFixedState, checkState } from './check'\nimport { getStyle, updateStyle } from './style'\nimport { stateType, stateStyleType } from './decorator'\n\n\nPlugin.add('state')\n\n\nState.animateExcludes = {\n animation: 1,\n animationOut: 1,\n\n transition: 1,\n transitionOut: 1,\n\n states: 1,\n state: 1,\n\n placeholder: 1,\n\n normalStyle: 1,\n hoverStyle: 1,\n pressStyle: 1,\n focusStyle: 1,\n selectedStyle: 1,\n disabledStyle: 1,\n placeholderStyle: 1\n}\n\n\nState.isState = function (state: IStateName, leaf: IUI, button?: IUI | boolean): boolean { return checkState(state, leaf, button) }\nState.isSelected = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('selected', leaf, button) }\nState.isDisabled = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('disabled', leaf, button) }\n\nState.isFocus = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isFocus', leaf, button) }\nState.isHover = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isHover', leaf, button) }\nState.isPress = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isPress', leaf, button) }\nState.isPlacehold = function (leaf: IUI, _button?: IUI | boolean): boolean { return (leaf as IText).__.__isPlacehold }\n\nState.isDrag = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isDrag', leaf, button) }\n\nState.setStyleName = function (leaf: IUI, stateType: IStateStyleType, value: boolean): void { value ? setState(leaf, stateType, leaf[stateType]) : unsetState(leaf, stateType, leaf[stateType]) }\nState.set = function (leaf: IUI, stateName: string): void { const style = leaf.states[stateName]; style ? setState(leaf, stateName, style) : unsetState(leaf, stateName, style) }\n\nState.getStyle = getStyle\nState.updateStyle = updateStyle\nState.updateEventStyle = updateEventStyle\n\n\nconst ui = UI.prototype\n\n// addAttr\nUI.addAttr('selected', false, stateType, 'selectedStyle')\nUI.addAttr('disabled', false, stateType, 'disabledStyle')\n\nUI.addAttr('states', {}, stateStyleType)\nUI.addAttr('state', '', stateType)\n\nUI.addAttr('normalStyle', undefined, dataType)\nUI.addAttr('hoverStyle', undefined, stateStyleType)\nUI.addAttr('pressStyle', undefined, stateStyleType)\nUI.addAttr('focusStyle', undefined, stateStyleType)\nUI.addAttr('selectedStyle', undefined, stateStyleType)\nUI.addAttr('disabledStyle', undefined, stateStyleType)\nUI.addAttr('placeholderStyle', undefined, stateStyleType)\n\nUI.addAttr('button', false, dataType)\n\nui.focus = function (value: boolean = true): void {\n this.waitLeafer(() => {\n let { focusData } = this.app.interaction\n if (value) {\n if (focusData) focusData.focus(false)\n focusData = this\n } else focusData = null\n this.app.interaction.focusData = focusData\n value ? setPointerState(this, 'focusStyle') : unsetPointerState(this, 'focusStyle')\n })\n}\n\nui.updateState = function (): void {\n State.updateStyle(this, undefined, 'in')\n}\n\n\nconst text = Text.prototype, textKey = 'text'\n\ndefineKey(text, textKey, {\n ...getDescriptor(text, textKey),\n set(value: string) {\n const t = this as Text, oldValue = t.text\n if (t.__setAttr(textKey, value)) {\n doBoundsType(t)\n if (t.placeholderStyle && t.placeholder && (oldValue === '' || value === '')) t.__layout.stateStyleChanged = true\n }\n }\n})\n","import { IUI } from '@leafer-ui/interface'\nimport { PointerEvent } from '@leafer-ui/core'\n\nimport { setPointerState } from './set'\nimport { unsetPointerState } from './unset'\n\n\nexport function updateEventStyle(leaf: IUI, eventType: string): void {\n switch (eventType) {\n case PointerEvent.ENTER:\n setPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.LEAVE:\n unsetPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.DOWN:\n setPointerState(leaf, 'pressStyle')\n break\n case PointerEvent.UP:\n unsetPointerState(leaf, 'pressStyle')\n break\n }\n}"],"names":["stateType","defaultValue","styleName","decorateLeafAttr","key","attr","set","value","this","__setAttr","leaferIsReady","State","setStyleName","__layout","stateStyleChanged","stateStyleType","findParentButton","leaf","button","parent","i","setStyle","style","isObject","undefined","updateStyle","unsetStyle","normalStyle","emprtyStyle","type","scale","MathHelper","assignScale","canAnimate","transition","data","name","isNull","getTransition","fromStyle","filterAnimateStyle","animate","getFromStyle","getStyle","killAnimate","statesStyle","animation","Object","assign","endingStyle","kill","filterStyle","toStyle","exist","state","stateStyle","states","isState","selectedStyle","isSelected","placeholderStyle","isPlacehold","isDisabled","disabledStyle","focusStyle","isFocus","hoverStyle","isHover","pressStyle","isPress","addStyle","useAnimateExcludes","to","forStyle","animateExcludes","setPointerState","stateName","setChildrenState","children","setState","update","len","length","isUndefined","isBranch","unsetPointerState","unsetChildrenState","unsetState","checkPointerState","fnName","find","interaction","leafer","parentButton","checkFixedState","attrName","Plugin","add","animationOut","transitionOut","placeholder","checkState","_button","__","__isPlacehold","isDrag","updateEventStyle","eventType","PointerEvent","ENTER","LEAVE","DOWN","UP","ui","UI","prototype","addAttr","dataType","focus","waitLeafer","focusData","app","updateState","text","Text","textKey","defineKey","getDescriptor","t","oldValue","doBoundsType"],"mappings":"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"}
1
+ {"version":3,"file":"state.min.cjs","sources":["../../../../../../src/in/packages/state/src/decorator.ts","../../../../../../src/in/packages/state/src/helper.ts","../../../../../../src/in/packages/state/src/style.ts","../../../../../../src/in/packages/state/src/set.ts","../../../../../../src/in/packages/state/src/unset.ts","../../../../../../src/in/packages/state/src/check.ts","../../../../../../src/in/packages/state/src/index.ts","../../../../../../src/in/packages/state/src/event.ts"],"sourcesContent":["import { IValue } from '@leafer-ui/interface'\nimport { decorateLeafAttr, attr, State } from '@leafer-ui/core'\n\nexport function stateType(defaultValue?: IValue, styleName?: string) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n if (this.leaferIsReady) styleName ? State.setStyleName(this, styleName, value) : State.set(this, value)\n else this.__layout.stateStyleChanged = true\n }\n }))\n}\n\nexport function stateStyleType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n this.__layout.stateStyleChanged = true\n }\n }))\n}","import { IUI } from '@leafer-ui/interface'\n\n\nexport function findParentButton(leaf: IUI, button?: IUI | boolean): IUI {\n if (button && button !== true) return button\n if (!leaf.button) {\n let { parent } = leaf\n for (let i = 0; i < 2; i++) {\n if (parent) {\n if (parent.button) return parent\n parent = parent.parent\n }\n }\n }\n return null\n}","import { IUI, IObject, IUIInputData, IStateStyle, IScaleData, ITransition } from '@leafer-ui/interface'\nimport { State, MathHelper, isNull, isObject } from '@leafer-ui/core'\n\nimport { findParentButton } from './helper'\n\n\nexport function setStyle(leaf: IUI, style: IStateStyle): void {\n if (!isObject(style)) style = undefined\n updateStyle(leaf, style, 'in')\n}\n\nexport function unsetStyle(leaf: IUI, style?: IStateStyle): void {\n const { normalStyle } = leaf\n if (!isObject(style)) style = undefined\n if (normalStyle) {\n if (!style) style = normalStyle\n updateStyle(leaf, style, 'out')\n }\n}\n\nconst emprtyStyle = {}\n\nexport function updateStyle(leaf: IUI, style?: IStateStyle, type?: 'in' | 'out'): void {\n const { normalStyle } = leaf\n\n if (!style) style = emprtyStyle\n\n if (style.scale) {\n MathHelper.assignScale(style as IScaleData, style.scale)\n delete style.scale\n }\n\n if (style === emprtyStyle || !State.canAnimate) type = null\n let transition = type ? getTransition(type, style, leaf) : false\n const fromStyle = transition ? getFromStyle(leaf, style) : undefined\n\n // 回到正常状态\n const nextStyle = State.canAnimate && getStyle(leaf)\n if (nextStyle) leaf.killAnimate('transition')\n if (normalStyle) leaf.set(normalStyle, 'temp')\n\n\n const statesStyle = getStyle(leaf) // 必须在回到正常状态之后获取\n if (statesStyle) {\n\n const { animation } = statesStyle\n if (animation) {\n const animate = leaf.animate(animation, undefined, 'animation', true)\n Object.assign(statesStyle, animate.endingStyle) // 加上最终的动画样式\n\n if (type !== 'in' || style.animation !== animation) animate.kill()\n else transition = false\n\n delete statesStyle.animation\n }\n\n\n leaf.normalStyle = filterStyle(statesStyle, leaf)\n leaf.set(statesStyle, 'temp')\n } else {\n leaf.normalStyle = undefined\n }\n\n if (transition) {\n const toStyle = filterStyle(fromStyle, leaf)\n leaf.set(fromStyle, 'temp')\n leaf.animate([fromStyle, toStyle], transition, 'transition', true)\n }\n\n leaf.__layout.stateStyleChanged = false\n}\n\nexport function getStyle(leaf: IUI): IStateStyle {\n\n // 从低到高依次覆盖: states < selected < placeholder < focus < hover < press < disabled\n\n let exist: boolean\n const style: IUIInputData = {}, button = findParentButton(leaf)\n const state = button ? (leaf.state || button.state) : leaf.state\n\n const stateStyle = state && leaf.states[state]\n if (stateStyle && State.isState(state, leaf, button)) exist = assign(style, stateStyle)\n\n const selectedStyle = style.selectedStyle || leaf.selectedStyle\n if (selectedStyle && State.isSelected(leaf, button)) exist = assign(style, selectedStyle)\n\n const placeholderStyle = style.placeholderStyle || leaf.placeholderStyle\n if (placeholderStyle && State.isPlacehold(leaf, button)) exist = assign(style, placeholderStyle)\n\n if (State.isDisabled(leaf, button)) {\n\n const disabledStyle = style.disabledStyle || leaf.disabledStyle\n if (disabledStyle) exist = assign(style, disabledStyle)\n\n } else {\n\n const focusStyle = style.focusStyle || leaf.focusStyle\n if (focusStyle && State.isFocus(leaf, button)) exist = assign(style, focusStyle)\n\n const hoverStyle = style.hoverStyle || leaf.hoverStyle\n if (hoverStyle && State.isHover(leaf, button)) exist = assign(style, hoverStyle)\n\n const pressStyle = style.pressStyle || leaf.pressStyle\n if (pressStyle && State.isPress(leaf, button)) exist = assign(style, pressStyle)\n\n }\n\n return exist ? style : undefined\n}\n\n\nfunction filterStyle(style: IObject, data: IObject, addStyle?: IObject, useAnimateExcludes?: boolean): IObject {\n const to: IObject = addStyle ? style : {}, forStyle = addStyle || style\n for (let key in forStyle) {\n if (useAnimateExcludes) {\n if (!State.animateExcludes[key]) to[key] = data[key]\n } else to[key] = data[key]\n }\n return to\n}\n\nfunction filterAnimateStyle(style: IObject, data: IObject, addStyle?: IObject): IObject {\n return filterStyle(style, data, addStyle, true)\n}\n\nfunction getFromStyle(leaf: IUI, style: IObject): IObject {\n const fromStyle = filterAnimateStyle(style, leaf), animate = leaf.animate()\n if (animate) filterAnimateStyle(fromStyle, leaf, animate.fromStyle)\n return fromStyle\n}\n\nfunction getTransition(type: 'in' | 'out', style: IStateStyle, data: IUI): ITransition {\n let name: 'transition' | 'transitionOut' = type === 'in' ? 'transition' : 'transitionOut'\n if (type === 'out' && isNull(data[name]) && isNull(style[name])) name = 'transition'\n return isNull(style[name]) ? data[name] : style[name]\n}\n\nfunction assign(style: IStateStyle, stateStyle: IStateStyle): boolean {\n Object.assign(style, stateStyle)\n return true\n}","import { IUI, IStateStyle, IStateStyleType, IStateName } from '@leafer-ui/interface'\nimport { State, isUndefined } from '@leafer-ui/core'\n\nimport { setStyle } from './style'\n\n\nexport function setPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) setStyle(leaf, style)\n if (leaf.button) setChildrenState(leaf.children, stateName)\n}\n\nexport function setState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n if (!stateStyle) stateStyle = leaf.states[stateName]\n setStyle(leaf, stateStyle)\n if (leaf.button) setChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction setChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI, update: boolean\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) {\n\n update = true\n switch (stateType) {\n case 'hoverStyle':\n if (State.isHover(leaf)) update = false\n break\n case 'pressStyle':\n if (State.isPress(leaf)) update = false\n break\n case 'focusStyle':\n if (State.isFocus(leaf)) update = false\n }\n if (update) setPointerState(leaf, stateType)\n\n } else if (!isUndefined(stateName)) setState(leaf, stateName)\n\n if (leaf.isBranch) setChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateStyleType, IStateStyle, IStateName } from '@leafer-ui/interface'\nimport { isUndefined } from '@leafer-ui/core'\n\nimport { unsetStyle } from './style'\n\n\nexport function unsetPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) unsetStyle(leaf, style)\n if (leaf.button) unsetChildrenState(leaf.children, stateName)\n}\n\nexport function unsetState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n unsetStyle(leaf, stateStyle)\n if (leaf.button) unsetChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction unsetChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) unsetPointerState(leaf, stateType)\n else if (!isUndefined(stateName)) unsetState(leaf, stateName)\n\n if (leaf.isBranch) unsetChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateName, } from '@leafer-ui/interface'\n\nimport { findParentButton } from './helper'\n\n\nexport function checkPointerState(fnName: 'isHover' | 'isPress' | 'isFocus' | 'isDrag', leaf: IUI, button?: IUI | boolean): boolean {\n let find: boolean\n const interaction = leaf.leafer ? leaf.leafer.interaction : null\n if (interaction) {\n find = interaction[fnName](leaf)\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = interaction[fnName](parentButton)\n }\n }\n return find\n}\n\nexport function checkFixedState(attrName: 'selected' | 'disabled', leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf[attrName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton[attrName]\n }\n return find\n}\n\nexport function checkState(stateName: IStateName, leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf.states[stateName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton.states[stateName]\n }\n return !!find\n}\n","export { stateType, stateStyleType } from './decorator'\n\nimport { IUI, IStateStyleType, IStateName, IText, IUIInputData, ITransition } from '@leafer-ui/interface'\nimport { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'\n\nimport { setPointerState, setState } from './set'\nimport { unsetPointerState, unsetState } from './unset'\nimport { updateEventStyle } from './event'\nimport { checkPointerState, checkFixedState, checkState } from './check'\nimport { getStyle, updateStyle } from './style'\nimport { stateType, stateStyleType } from './decorator'\n\n\nPlugin.add('state')\n\n\nState.animateExcludes = {\n animation: 1,\n animationOut: 1,\n\n transition: 1,\n transitionOut: 1,\n\n states: 1,\n state: 1,\n\n placeholder: 1,\n\n normalStyle: 1,\n hoverStyle: 1,\n pressStyle: 1,\n focusStyle: 1,\n selectedStyle: 1,\n disabledStyle: 1,\n placeholderStyle: 1\n}\n\n\nState.isState = function (state: IStateName, leaf: IUI, button?: IUI | boolean): boolean { return checkState(state, leaf, button) }\nState.isSelected = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('selected', leaf, button) }\nState.isDisabled = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('disabled', leaf, button) }\n\nState.isFocus = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isFocus', leaf, button) }\nState.isHover = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isHover', leaf, button) }\nState.isPress = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isPress', leaf, button) }\nState.isPlacehold = function (leaf: IUI, _button?: IUI | boolean): boolean { return (leaf as IText).__.__isPlacehold }\n\nState.isDrag = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isDrag', leaf, button) }\n\nState.setStyleName = function (leaf: IUI, stateType: IStateStyleType, value: boolean): void { value ? setState(leaf, stateType, leaf[stateType]) : unsetState(leaf, stateType, leaf[stateType]) }\nState.set = function (leaf: IUI, stateName: string): void { const style = leaf.states[stateName]; style ? setState(leaf, stateName, style) : unsetState(leaf, stateName, style) }\n\nState.getStyle = getStyle\nState.updateStyle = updateStyle\nState.updateEventStyle = updateEventStyle\n\n\nconst ui = UI.prototype\n\n// addAttr\nUI.addAttr('selected', false, stateType, 'selectedStyle')\nUI.addAttr('disabled', false, stateType, 'disabledStyle')\n\nUI.addAttr('states', {}, stateStyleType)\nUI.addAttr('state', '', stateType)\n\nUI.addAttr('normalStyle', undefined, dataType)\nUI.addAttr('hoverStyle', undefined, stateStyleType)\nUI.addAttr('pressStyle', undefined, stateStyleType)\nUI.addAttr('focusStyle', undefined, stateStyleType)\nUI.addAttr('selectedStyle', undefined, stateStyleType)\nUI.addAttr('disabledStyle', undefined, stateStyleType)\nUI.addAttr('placeholderStyle', undefined, stateStyleType)\n\nUI.addAttr('button', false, dataType)\n\n// @leafer-in/animate will rewrite\nui.set = function (data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (transition) {\n if (transition === 'temp') {\n this.lockNormalStyle = true\n Object.assign(this, data)\n this.lockNormalStyle = false\n } else this.animate(data, transition)\n } else Object.assign(this, data)\n }\n}\n\nui.focus = function (value: boolean = true): void {\n this.waitLeafer(() => {\n let { focusData } = this.app.interaction\n if (value) {\n if (focusData) focusData.focus(false)\n focusData = this\n } else focusData = null\n this.app.interaction.focusData = focusData\n value ? setPointerState(this, 'focusStyle') : unsetPointerState(this, 'focusStyle')\n })\n}\n\nui.updateState = function (): void {\n State.updateStyle(this, undefined, 'in')\n}\n\n\nconst text = Text.prototype, textKey = 'text'\n\ndefineKey(text, textKey, {\n ...getDescriptor(text, textKey),\n set(value: string) {\n const t = this as Text, oldValue = t.text\n if (t.__setAttr(textKey, value)) {\n doBoundsType(t)\n if (t.placeholderStyle && t.placeholder && (oldValue === '' || value === '')) t.__layout.stateStyleChanged = true\n }\n }\n})\n","import { IUI } from '@leafer-ui/interface'\nimport { PointerEvent } from '@leafer-ui/core'\n\nimport { setPointerState } from './set'\nimport { unsetPointerState } from './unset'\n\n\nexport function updateEventStyle(leaf: IUI, eventType: string): void {\n switch (eventType) {\n case PointerEvent.ENTER:\n setPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.LEAVE:\n unsetPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.DOWN:\n setPointerState(leaf, 'pressStyle')\n break\n case PointerEvent.UP:\n unsetPointerState(leaf, 'pressStyle')\n break\n }\n}"],"names":["stateType","defaultValue","styleName","decorateLeafAttr","key","attr","set","value","this","__setAttr","leaferIsReady","State","setStyleName","__layout","stateStyleChanged","stateStyleType","findParentButton","leaf","button","parent","i","setStyle","style","isObject","undefined","updateStyle","unsetStyle","normalStyle","emprtyStyle","type","scale","MathHelper","assignScale","canAnimate","transition","data","name","isNull","getTransition","fromStyle","filterAnimateStyle","animate","getFromStyle","getStyle","killAnimate","statesStyle","animation","Object","assign","endingStyle","kill","filterStyle","toStyle","exist","state","stateStyle","states","isState","selectedStyle","isSelected","placeholderStyle","isPlacehold","isDisabled","disabledStyle","focusStyle","isFocus","hoverStyle","isHover","pressStyle","isPress","addStyle","useAnimateExcludes","to","forStyle","animateExcludes","setPointerState","stateName","setChildrenState","children","setState","update","len","length","isUndefined","isBranch","unsetPointerState","unsetChildrenState","unsetState","checkPointerState","fnName","find","interaction","leafer","parentButton","checkFixedState","attrName","Plugin","add","animationOut","transitionOut","placeholder","checkState","_button","__","__isPlacehold","isDrag","updateEventStyle","eventType","PointerEvent","ENTER","LEAVE","DOWN","UP","ui","UI","prototype","addAttr","dataType","lockNormalStyle","focus","waitLeafer","focusData","app","updateState","text","Text","textKey","defineKey","getDescriptor","t","oldValue","doBoundsType"],"mappings":"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"}
package/dist/state.min.js CHANGED
@@ -1,2 +1,2 @@
1
- this.LeaferIN=this.LeaferIN||{},this.LeaferIN.state=function(t,e){"use strict";function n(t,n){return e.decorateLeafAttr(t,t=>e.attr({set(s){this.__setAttr(t,s),this.leaferIsReady?n?e.State.setStyleName(this,n,s):e.State.set(this,s):this.__layout.stateStyleChanged=!0}}))}function s(t){return e.decorateLeafAttr(t,t=>e.attr({set(e){this.__setAttr(t,e),this.__layout.stateStyleChanged=!0}}))}function a(t,e){if(e&&!0!==e)return e;if(!t.button){let{parent:e}=t;for(let t=0;t<2;t++)if(e){if(e.button)return e;e=e.parent}}return null}function i(t,n){e.isObject(n)||(n=void 0),r(t,n,"in")}function o(t,n){const{normalStyle:s}=t;e.isObject(n)||(n=void 0),s&&(n||(n=s),r(t,n,"out"))}const l={};function r(t,n,s){const{normalStyle:a}=t;n||(n=l),n.scale&&(e.MathHelper.assignScale(n,n.scale),delete n.scale),n!==l&&e.State.canAnimate||(s=null);let i=!!s&&function(t,n,s){let a="in"===t?"transition":"transitionOut";"out"===t&&e.isNull(s[a])&&e.isNull(n[a])&&(a="transition");return e.isNull(n[a])?s[a]:n[a]}(s,n,t);const o=i?function(t,e){const n=d(e,t),s=t.animate();s&&d(n,t,s.fromStyle);return n}(t,n):void 0;e.State.canAnimate&&c(t)&&t.killAnimate("transition"),a&&t.set(a,"temp");const r=c(t);if(r){const{animation:e}=r;if(e){const a=t.animate(e,void 0,"animation",!0);Object.assign(r,a.endingStyle),"in"!==s||n.animation!==e?a.kill():i=!1,delete r.animation}t.normalStyle=u(r,t),t.set(r,"temp")}else t.normalStyle=void 0;if(i){const e=u(o,t);t.set(o,"temp"),t.animate([o,e],i,"transition",!0)}t.__layout.stateStyleChanged=!1}function c(t){let n;const s={},i=a(t),o=i?t.state||i.state:t.state,l=o&&t.states[o];l&&e.State.isState(o,t,i)&&(n=S(s,l));const r=s.selectedStyle||t.selectedStyle;r&&e.State.isSelected(t,i)&&(n=S(s,r));const c=s.placeholderStyle||t.placeholderStyle;if(c&&e.State.isPlacehold(t,i)&&(n=S(s,c)),e.State.isDisabled(t,i)){const e=s.disabledStyle||t.disabledStyle;e&&(n=S(s,e))}else{const a=s.focusStyle||t.focusStyle;a&&e.State.isFocus(t,i)&&(n=S(s,a));const o=s.hoverStyle||t.hoverStyle;o&&e.State.isHover(t,i)&&(n=S(s,o));const l=s.pressStyle||t.pressStyle;l&&e.State.isPress(t,i)&&(n=S(s,l))}return n?s:void 0}function u(t,n,s,a){const i=s?t:{},o=s||t;for(let t in o)a&&e.State.animateExcludes[t]||(i[t]=n[t]);return i}function d(t,e,n){return u(t,e,n,!0)}function S(t,e){return Object.assign(t,e),!0}function f(t,e){const n=t[e];n&&i(t,n),t.button&&h(t.children,e)}function y(t,e,n){n||(n=t.states[e]),i(t,n),t.button&&h(t.children,null,e)}function h(t,n,s){if(!t)return;let a,i;for(let o=0,l=t.length;o<l;o++){if(a=t[o],n){switch(i=!0,n){case"hoverStyle":e.State.isHover(a)&&(i=!1);break;case"pressStyle":e.State.isPress(a)&&(i=!1);break;case"focusStyle":e.State.isFocus(a)&&(i=!1)}i&&f(a,n)}else e.isUndefined(s)||y(a,s);a.isBranch&&h(a.children,n,s)}}function p(t,e){const n=t[e];n&&o(t,n),t.button&&b(t.children,e)}function v(t,e,n){o(t,n),t.button&&b(t.children,null,e)}function b(t,n,s){if(!t)return;let a;for(let i=0,o=t.length;i<o;i++)a=t[i],n?p(a,n):e.isUndefined(s)||v(a,s),a.isBranch&&b(a.children,n,s)}function m(t,e,n){let s;const i=e.leafer?e.leafer.interaction:null;if(i&&(s=i[t](e),!s&&n)){const o=a(e,n);o&&(s=i[t](o))}return s}function A(t,e,n){let s=e[t];if(!s&&n){const i=a(e,n);i&&(s=i[t])}return s}e.Plugin.add("state"),e.State.animateExcludes={animation:1,animationOut:1,transition:1,transitionOut:1,states:1,state:1,placeholder:1,normalStyle:1,hoverStyle:1,pressStyle:1,focusStyle:1,selectedStyle:1,disabledStyle:1,placeholderStyle:1},e.State.isState=function(t,e,n){return function(t,e,n){let s=e.states[t];if(!s&&n){const i=a(e,n);i&&(s=i.states[t])}return!!s}(t,e,n)},e.State.isSelected=function(t,e){return A("selected",t,e)},e.State.isDisabled=function(t,e){return A("disabled",t,e)},e.State.isFocus=function(t,e){return m("isFocus",t,e)},e.State.isHover=function(t,e){return m("isHover",t,e)},e.State.isPress=function(t,e){return m("isPress",t,e)},e.State.isPlacehold=function(t,e){return t.__.__isPlacehold},e.State.isDrag=function(t,e){return m("isDrag",t,e)},e.State.setStyleName=function(t,e,n){n?y(t,e,t[e]):v(t,e,t[e])},e.State.set=function(t,e){const n=t.states[e];n?y(t,e,n):v(t,e,n)},e.State.getStyle=c,e.State.updateStyle=r,e.State.updateEventStyle=function(t,n){switch(n){case e.PointerEvent.ENTER:f(t,"hoverStyle");break;case e.PointerEvent.LEAVE:p(t,"hoverStyle");break;case e.PointerEvent.DOWN:f(t,"pressStyle");break;case e.PointerEvent.UP:p(t,"pressStyle")}};const I=e.UI.prototype;e.UI.addAttr("selected",!1,n,"selectedStyle"),e.UI.addAttr("disabled",!1,n,"disabledStyle"),e.UI.addAttr("states",{},s),e.UI.addAttr("state","",n),e.UI.addAttr("normalStyle",void 0,e.dataType),e.UI.addAttr("hoverStyle",void 0,s),e.UI.addAttr("pressStyle",void 0,s),e.UI.addAttr("focusStyle",void 0,s),e.UI.addAttr("selectedStyle",void 0,s),e.UI.addAttr("disabledStyle",void 0,s),e.UI.addAttr("placeholderStyle",void 0,s),e.UI.addAttr("button",!1,e.dataType),I.focus=function(t=!0){this.waitLeafer(()=>{let{focusData:e}=this.app.interaction;t?(e&&e.focus(!1),e=this):e=null,this.app.interaction.focusData=e,t?f(this,"focusStyle"):p(this,"focusStyle")})},I.updateState=function(){e.State.updateStyle(this,void 0,"in")};const _=e.Text.prototype,g="text";return e.defineKey(_,g,Object.assign(Object.assign({},e.getDescriptor(_,g)),{set(t){const n=this,s=n.text;n.__setAttr(g,t)&&(e.doBoundsType(n),n.placeholderStyle&&n.placeholder&&(""===s||""===t)&&(n.__layout.stateStyleChanged=!0))}})),t.stateStyleType=s,t.stateType=n,t}({},LeaferUI);
1
+ this.LeaferIN=this.LeaferIN||{},this.LeaferIN.state=function(t,e){"use strict";function n(t,n){return e.decorateLeafAttr(t,t=>e.attr({set(s){this.__setAttr(t,s),this.leaferIsReady?n?e.State.setStyleName(this,n,s):e.State.set(this,s):this.__layout.stateStyleChanged=!0}}))}function s(t){return e.decorateLeafAttr(t,t=>e.attr({set(e){this.__setAttr(t,e),this.__layout.stateStyleChanged=!0}}))}function i(t,e){if(e&&!0!==e)return e;if(!t.button){let{parent:e}=t;for(let t=0;t<2;t++)if(e){if(e.button)return e;e=e.parent}}return null}function a(t,n){e.isObject(n)||(n=void 0),r(t,n,"in")}function o(t,n){const{normalStyle:s}=t;e.isObject(n)||(n=void 0),s&&(n||(n=s),r(t,n,"out"))}const l={};function r(t,n,s){const{normalStyle:i}=t;n||(n=l),n.scale&&(e.MathHelper.assignScale(n,n.scale),delete n.scale),n!==l&&e.State.canAnimate||(s=null);let a=!!s&&function(t,n,s){let i="in"===t?"transition":"transitionOut";"out"===t&&e.isNull(s[i])&&e.isNull(n[i])&&(i="transition");return e.isNull(n[i])?s[i]:n[i]}(s,n,t);const o=a?function(t,e){const n=d(e,t),s=t.animate();s&&d(n,t,s.fromStyle);return n}(t,n):void 0;e.State.canAnimate&&c(t)&&t.killAnimate("transition"),i&&t.set(i,"temp");const r=c(t);if(r){const{animation:e}=r;if(e){const i=t.animate(e,void 0,"animation",!0);Object.assign(r,i.endingStyle),"in"!==s||n.animation!==e?i.kill():a=!1,delete r.animation}t.normalStyle=u(r,t),t.set(r,"temp")}else t.normalStyle=void 0;if(a){const e=u(o,t);t.set(o,"temp"),t.animate([o,e],a,"transition",!0)}t.__layout.stateStyleChanged=!1}function c(t){let n;const s={},a=i(t),o=a?t.state||a.state:t.state,l=o&&t.states[o];l&&e.State.isState(o,t,a)&&(n=S(s,l));const r=s.selectedStyle||t.selectedStyle;r&&e.State.isSelected(t,a)&&(n=S(s,r));const c=s.placeholderStyle||t.placeholderStyle;if(c&&e.State.isPlacehold(t,a)&&(n=S(s,c)),e.State.isDisabled(t,a)){const e=s.disabledStyle||t.disabledStyle;e&&(n=S(s,e))}else{const i=s.focusStyle||t.focusStyle;i&&e.State.isFocus(t,a)&&(n=S(s,i));const o=s.hoverStyle||t.hoverStyle;o&&e.State.isHover(t,a)&&(n=S(s,o));const l=s.pressStyle||t.pressStyle;l&&e.State.isPress(t,a)&&(n=S(s,l))}return n?s:void 0}function u(t,n,s,i){const a=s?t:{},o=s||t;for(let t in o)i&&e.State.animateExcludes[t]||(a[t]=n[t]);return a}function d(t,e,n){return u(t,e,n,!0)}function S(t,e){return Object.assign(t,e),!0}function f(t,e){const n=t[e];n&&a(t,n),t.button&&h(t.children,e)}function y(t,e,n){n||(n=t.states[e]),a(t,n),t.button&&h(t.children,null,e)}function h(t,n,s){if(!t)return;let i,a;for(let o=0,l=t.length;o<l;o++){if(i=t[o],n){switch(a=!0,n){case"hoverStyle":e.State.isHover(i)&&(a=!1);break;case"pressStyle":e.State.isPress(i)&&(a=!1);break;case"focusStyle":e.State.isFocus(i)&&(a=!1)}a&&f(i,n)}else e.isUndefined(s)||y(i,s);i.isBranch&&h(i.children,n,s)}}function p(t,e){const n=t[e];n&&o(t,n),t.button&&v(t.children,e)}function m(t,e,n){o(t,n),t.button&&v(t.children,null,e)}function v(t,n,s){if(!t)return;let i;for(let a=0,o=t.length;a<o;a++)i=t[a],n?p(i,n):e.isUndefined(s)||m(i,s),i.isBranch&&v(i.children,n,s)}function b(t,e,n){let s;const a=e.leafer?e.leafer.interaction:null;if(a&&(s=a[t](e),!s&&n)){const o=i(e,n);o&&(s=a[t](o))}return s}function A(t,e,n){let s=e[t];if(!s&&n){const a=i(e,n);a&&(s=a[t])}return s}e.Plugin.add("state"),e.State.animateExcludes={animation:1,animationOut:1,transition:1,transitionOut:1,states:1,state:1,placeholder:1,normalStyle:1,hoverStyle:1,pressStyle:1,focusStyle:1,selectedStyle:1,disabledStyle:1,placeholderStyle:1},e.State.isState=function(t,e,n){return function(t,e,n){let s=e.states[t];if(!s&&n){const a=i(e,n);a&&(s=a.states[t])}return!!s}(t,e,n)},e.State.isSelected=function(t,e){return A("selected",t,e)},e.State.isDisabled=function(t,e){return A("disabled",t,e)},e.State.isFocus=function(t,e){return b("isFocus",t,e)},e.State.isHover=function(t,e){return b("isHover",t,e)},e.State.isPress=function(t,e){return b("isPress",t,e)},e.State.isPlacehold=function(t,e){return t.__.__isPlacehold},e.State.isDrag=function(t,e){return b("isDrag",t,e)},e.State.setStyleName=function(t,e,n){n?y(t,e,t[e]):m(t,e,t[e])},e.State.set=function(t,e){const n=t.states[e];n?y(t,e,n):m(t,e,n)},e.State.getStyle=c,e.State.updateStyle=r,e.State.updateEventStyle=function(t,n){switch(n){case e.PointerEvent.ENTER:f(t,"hoverStyle");break;case e.PointerEvent.LEAVE:p(t,"hoverStyle");break;case e.PointerEvent.DOWN:f(t,"pressStyle");break;case e.PointerEvent.UP:p(t,"pressStyle")}};const g=e.UI.prototype;e.UI.addAttr("selected",!1,n,"selectedStyle"),e.UI.addAttr("disabled",!1,n,"disabledStyle"),e.UI.addAttr("states",{},s),e.UI.addAttr("state","",n),e.UI.addAttr("normalStyle",void 0,e.dataType),e.UI.addAttr("hoverStyle",void 0,s),e.UI.addAttr("pressStyle",void 0,s),e.UI.addAttr("focusStyle",void 0,s),e.UI.addAttr("selectedStyle",void 0,s),e.UI.addAttr("disabledStyle",void 0,s),e.UI.addAttr("placeholderStyle",void 0,s),e.UI.addAttr("button",!1,e.dataType),g.set=function(t,e){t&&(e?"temp"===e?(this.lockNormalStyle=!0,Object.assign(this,t),this.lockNormalStyle=!1):this.animate(t,e):Object.assign(this,t))},g.focus=function(t=!0){this.waitLeafer(()=>{let{focusData:e}=this.app.interaction;t?(e&&e.focus(!1),e=this):e=null,this.app.interaction.focusData=e,t?f(this,"focusStyle"):p(this,"focusStyle")})},g.updateState=function(){e.State.updateStyle(this,void 0,"in")};const I=e.Text.prototype,_="text";return e.defineKey(I,_,Object.assign(Object.assign({},e.getDescriptor(I,_)),{set(t){const n=this,s=n.text;n.__setAttr(_,t)&&(e.doBoundsType(n),n.placeholderStyle&&n.placeholder&&(""===s||""===t)&&(n.__layout.stateStyleChanged=!0))}})),t.stateStyleType=s,t.stateType=n,t}({},LeaferUI);
2
2
  //# sourceMappingURL=state.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.min.js","sources":["../../../../../../src/in/packages/state/src/decorator.ts","../../../../../../src/in/packages/state/src/helper.ts","../../../../../../src/in/packages/state/src/style.ts","../../../../../../src/in/packages/state/src/set.ts","../../../../../../src/in/packages/state/src/unset.ts","../../../../../../src/in/packages/state/src/check.ts","../../../../../../src/in/packages/state/src/index.ts","../../../../../../src/in/packages/state/src/event.ts"],"sourcesContent":["import { IValue } from '@leafer-ui/interface'\nimport { decorateLeafAttr, attr, State } from '@leafer-ui/core'\n\nexport function stateType(defaultValue?: IValue, styleName?: string) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n if (this.leaferIsReady) styleName ? State.setStyleName(this, styleName, value) : State.set(this, value)\n else this.__layout.stateStyleChanged = true\n }\n }))\n}\n\nexport function stateStyleType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n this.__layout.stateStyleChanged = true\n }\n }))\n}","import { IUI } from '@leafer-ui/interface'\n\n\nexport function findParentButton(leaf: IUI, button?: IUI | boolean): IUI {\n if (button && button !== true) return button\n if (!leaf.button) {\n let { parent } = leaf\n for (let i = 0; i < 2; i++) {\n if (parent) {\n if (parent.button) return parent\n parent = parent.parent\n }\n }\n }\n return null\n}","import { IUI, IObject, IUIInputData, IStateStyle, IScaleData, ITransition } from '@leafer-ui/interface'\nimport { State, MathHelper, isNull, isObject } from '@leafer-ui/core'\n\nimport { findParentButton } from './helper'\n\n\nexport function setStyle(leaf: IUI, style: IStateStyle): void {\n if (!isObject(style)) style = undefined\n updateStyle(leaf, style, 'in')\n}\n\nexport function unsetStyle(leaf: IUI, style?: IStateStyle): void {\n const { normalStyle } = leaf\n if (!isObject(style)) style = undefined\n if (normalStyle) {\n if (!style) style = normalStyle\n updateStyle(leaf, style, 'out')\n }\n}\n\nconst emprtyStyle = {}\n\nexport function updateStyle(leaf: IUI, style?: IStateStyle, type?: 'in' | 'out'): void {\n const { normalStyle } = leaf\n\n if (!style) style = emprtyStyle\n\n if (style.scale) {\n MathHelper.assignScale(style as IScaleData, style.scale)\n delete style.scale\n }\n\n if (style === emprtyStyle || !State.canAnimate) type = null\n let transition = type ? getTransition(type, style, leaf) : false\n const fromStyle = transition ? getFromStyle(leaf, style) : undefined\n\n // 回到正常状态\n const nextStyle = State.canAnimate && getStyle(leaf)\n if (nextStyle) leaf.killAnimate('transition')\n if (normalStyle) leaf.set(normalStyle, 'temp')\n\n\n const statesStyle = getStyle(leaf) // 必须在回到正常状态之后获取\n if (statesStyle) {\n\n const { animation } = statesStyle\n if (animation) {\n const animate = leaf.animate(animation, undefined, 'animation', true)\n Object.assign(statesStyle, animate.endingStyle) // 加上最终的动画样式\n\n if (type !== 'in' || style.animation !== animation) animate.kill()\n else transition = false\n\n delete statesStyle.animation\n }\n\n\n leaf.normalStyle = filterStyle(statesStyle, leaf)\n leaf.set(statesStyle, 'temp')\n } else {\n leaf.normalStyle = undefined\n }\n\n if (transition) {\n const toStyle = filterStyle(fromStyle, leaf)\n leaf.set(fromStyle, 'temp')\n leaf.animate([fromStyle, toStyle], transition, 'transition', true)\n }\n\n leaf.__layout.stateStyleChanged = false\n}\n\nexport function getStyle(leaf: IUI): IStateStyle {\n\n // 从低到高依次覆盖: states < selected < placeholder < focus < hover < press < disabled\n\n let exist: boolean\n const style: IUIInputData = {}, button = findParentButton(leaf)\n const state = button ? (leaf.state || button.state) : leaf.state\n\n const stateStyle = state && leaf.states[state]\n if (stateStyle && State.isState(state, leaf, button)) exist = assign(style, stateStyle)\n\n const selectedStyle = style.selectedStyle || leaf.selectedStyle\n if (selectedStyle && State.isSelected(leaf, button)) exist = assign(style, selectedStyle)\n\n const placeholderStyle = style.placeholderStyle || leaf.placeholderStyle\n if (placeholderStyle && State.isPlacehold(leaf, button)) exist = assign(style, placeholderStyle)\n\n if (State.isDisabled(leaf, button)) {\n\n const disabledStyle = style.disabledStyle || leaf.disabledStyle\n if (disabledStyle) exist = assign(style, disabledStyle)\n\n } else {\n\n const focusStyle = style.focusStyle || leaf.focusStyle\n if (focusStyle && State.isFocus(leaf, button)) exist = assign(style, focusStyle)\n\n const hoverStyle = style.hoverStyle || leaf.hoverStyle\n if (hoverStyle && State.isHover(leaf, button)) exist = assign(style, hoverStyle)\n\n const pressStyle = style.pressStyle || leaf.pressStyle\n if (pressStyle && State.isPress(leaf, button)) exist = assign(style, pressStyle)\n\n }\n\n return exist ? style : undefined\n}\n\n\nfunction filterStyle(style: IObject, data: IObject, addStyle?: IObject, useAnimateExcludes?: boolean): IObject {\n const to: IObject = addStyle ? style : {}, forStyle = addStyle || style\n for (let key in forStyle) {\n if (useAnimateExcludes) {\n if (!State.animateExcludes[key]) to[key] = data[key]\n } else to[key] = data[key]\n }\n return to\n}\n\nfunction filterAnimateStyle(style: IObject, data: IObject, addStyle?: IObject): IObject {\n return filterStyle(style, data, addStyle, true)\n}\n\nfunction getFromStyle(leaf: IUI, style: IObject): IObject {\n const fromStyle = filterAnimateStyle(style, leaf), animate = leaf.animate()\n if (animate) filterAnimateStyle(fromStyle, leaf, animate.fromStyle)\n return fromStyle\n}\n\nfunction getTransition(type: 'in' | 'out', style: IStateStyle, data: IUI): ITransition {\n let name: 'transition' | 'transitionOut' = type === 'in' ? 'transition' : 'transitionOut'\n if (type === 'out' && isNull(data[name]) && isNull(style[name])) name = 'transition'\n return isNull(style[name]) ? data[name] : style[name]\n}\n\nfunction assign(style: IStateStyle, stateStyle: IStateStyle): boolean {\n Object.assign(style, stateStyle)\n return true\n}","import { IUI, IStateStyle, IStateStyleType, IStateName } from '@leafer-ui/interface'\nimport { State, isUndefined } from '@leafer-ui/core'\n\nimport { setStyle } from './style'\n\n\nexport function setPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) setStyle(leaf, style)\n if (leaf.button) setChildrenState(leaf.children, stateName)\n}\n\nexport function setState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n if (!stateStyle) stateStyle = leaf.states[stateName]\n setStyle(leaf, stateStyle)\n if (leaf.button) setChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction setChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI, update: boolean\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) {\n\n update = true\n switch (stateType) {\n case 'hoverStyle':\n if (State.isHover(leaf)) update = false\n break\n case 'pressStyle':\n if (State.isPress(leaf)) update = false\n break\n case 'focusStyle':\n if (State.isFocus(leaf)) update = false\n }\n if (update) setPointerState(leaf, stateType)\n\n } else if (!isUndefined(stateName)) setState(leaf, stateName)\n\n if (leaf.isBranch) setChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateStyleType, IStateStyle, IStateName } from '@leafer-ui/interface'\nimport { isUndefined } from '@leafer-ui/core'\n\nimport { unsetStyle } from './style'\n\n\nexport function unsetPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) unsetStyle(leaf, style)\n if (leaf.button) unsetChildrenState(leaf.children, stateName)\n}\n\nexport function unsetState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n unsetStyle(leaf, stateStyle)\n if (leaf.button) unsetChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction unsetChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) unsetPointerState(leaf, stateType)\n else if (!isUndefined(stateName)) unsetState(leaf, stateName)\n\n if (leaf.isBranch) unsetChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateName, } from '@leafer-ui/interface'\n\nimport { findParentButton } from './helper'\n\n\nexport function checkPointerState(fnName: 'isHover' | 'isPress' | 'isFocus' | 'isDrag', leaf: IUI, button?: IUI | boolean): boolean {\n let find: boolean\n const interaction = leaf.leafer ? leaf.leafer.interaction : null\n if (interaction) {\n find = interaction[fnName](leaf)\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = interaction[fnName](parentButton)\n }\n }\n return find\n}\n\nexport function checkFixedState(attrName: 'selected' | 'disabled', leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf[attrName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton[attrName]\n }\n return find\n}\n\nexport function checkState(stateName: IStateName, leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf.states[stateName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton.states[stateName]\n }\n return !!find\n}\n","export { stateType, stateStyleType } from './decorator'\n\nimport { IUI, IStateStyleType, IStateName, IText } from '@leafer-ui/interface'\nimport { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'\n\nimport { setPointerState, setState } from './set'\nimport { unsetPointerState, unsetState } from './unset'\nimport { updateEventStyle } from './event'\nimport { checkPointerState, checkFixedState, checkState } from './check'\nimport { getStyle, updateStyle } from './style'\nimport { stateType, stateStyleType } from './decorator'\n\n\nPlugin.add('state')\n\n\nState.animateExcludes = {\n animation: 1,\n animationOut: 1,\n\n transition: 1,\n transitionOut: 1,\n\n states: 1,\n state: 1,\n\n placeholder: 1,\n\n normalStyle: 1,\n hoverStyle: 1,\n pressStyle: 1,\n focusStyle: 1,\n selectedStyle: 1,\n disabledStyle: 1,\n placeholderStyle: 1\n}\n\n\nState.isState = function (state: IStateName, leaf: IUI, button?: IUI | boolean): boolean { return checkState(state, leaf, button) }\nState.isSelected = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('selected', leaf, button) }\nState.isDisabled = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('disabled', leaf, button) }\n\nState.isFocus = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isFocus', leaf, button) }\nState.isHover = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isHover', leaf, button) }\nState.isPress = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isPress', leaf, button) }\nState.isPlacehold = function (leaf: IUI, _button?: IUI | boolean): boolean { return (leaf as IText).__.__isPlacehold }\n\nState.isDrag = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isDrag', leaf, button) }\n\nState.setStyleName = function (leaf: IUI, stateType: IStateStyleType, value: boolean): void { value ? setState(leaf, stateType, leaf[stateType]) : unsetState(leaf, stateType, leaf[stateType]) }\nState.set = function (leaf: IUI, stateName: string): void { const style = leaf.states[stateName]; style ? setState(leaf, stateName, style) : unsetState(leaf, stateName, style) }\n\nState.getStyle = getStyle\nState.updateStyle = updateStyle\nState.updateEventStyle = updateEventStyle\n\n\nconst ui = UI.prototype\n\n// addAttr\nUI.addAttr('selected', false, stateType, 'selectedStyle')\nUI.addAttr('disabled', false, stateType, 'disabledStyle')\n\nUI.addAttr('states', {}, stateStyleType)\nUI.addAttr('state', '', stateType)\n\nUI.addAttr('normalStyle', undefined, dataType)\nUI.addAttr('hoverStyle', undefined, stateStyleType)\nUI.addAttr('pressStyle', undefined, stateStyleType)\nUI.addAttr('focusStyle', undefined, stateStyleType)\nUI.addAttr('selectedStyle', undefined, stateStyleType)\nUI.addAttr('disabledStyle', undefined, stateStyleType)\nUI.addAttr('placeholderStyle', undefined, stateStyleType)\n\nUI.addAttr('button', false, dataType)\n\nui.focus = function (value: boolean = true): void {\n this.waitLeafer(() => {\n let { focusData } = this.app.interaction\n if (value) {\n if (focusData) focusData.focus(false)\n focusData = this\n } else focusData = null\n this.app.interaction.focusData = focusData\n value ? setPointerState(this, 'focusStyle') : unsetPointerState(this, 'focusStyle')\n })\n}\n\nui.updateState = function (): void {\n State.updateStyle(this, undefined, 'in')\n}\n\n\nconst text = Text.prototype, textKey = 'text'\n\ndefineKey(text, textKey, {\n ...getDescriptor(text, textKey),\n set(value: string) {\n const t = this as Text, oldValue = t.text\n if (t.__setAttr(textKey, value)) {\n doBoundsType(t)\n if (t.placeholderStyle && t.placeholder && (oldValue === '' || value === '')) t.__layout.stateStyleChanged = true\n }\n }\n})\n","import { IUI } from '@leafer-ui/interface'\nimport { PointerEvent } from '@leafer-ui/core'\n\nimport { setPointerState } from './set'\nimport { unsetPointerState } from './unset'\n\n\nexport function updateEventStyle(leaf: IUI, eventType: string): void {\n switch (eventType) {\n case PointerEvent.ENTER:\n setPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.LEAVE:\n unsetPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.DOWN:\n setPointerState(leaf, 'pressStyle')\n break\n case PointerEvent.UP:\n unsetPointerState(leaf, 'pressStyle')\n break\n }\n}"],"names":["stateType","defaultValue","styleName","decorateLeafAttr","key","attr","set","value","this","__setAttr","leaferIsReady","State","setStyleName","__layout","stateStyleChanged","stateStyleType","findParentButton","leaf","button","parent","i","setStyle","style","isObject","undefined","updateStyle","unsetStyle","normalStyle","emprtyStyle","type","scale","MathHelper","assignScale","canAnimate","transition","data","name","isNull","getTransition","fromStyle","filterAnimateStyle","animate","getFromStyle","getStyle","killAnimate","statesStyle","animation","Object","assign","endingStyle","kill","filterStyle","toStyle","exist","state","stateStyle","states","isState","selectedStyle","isSelected","placeholderStyle","isPlacehold","isDisabled","disabledStyle","focusStyle","isFocus","hoverStyle","isHover","pressStyle","isPress","addStyle","useAnimateExcludes","to","forStyle","animateExcludes","setPointerState","stateName","setChildrenState","children","setState","update","len","length","isUndefined","isBranch","unsetPointerState","unsetChildrenState","unsetState","checkPointerState","fnName","find","interaction","leafer","parentButton","checkFixedState","attrName","Plugin","add","animationOut","transitionOut","placeholder","checkState","_button","__","__isPlacehold","isDrag","updateEventStyle","eventType","PointerEvent","ENTER","LEAVE","DOWN","UP","ui","UI","prototype","addAttr","dataType","focus","waitLeafer","focusData","app","updateState","text","Text","textKey","defineKey","getDescriptor","t","oldValue","doBoundsType"],"mappings":"+EAGM,SAAUA,EAAUC,EAAuBC,GAC7C,OAAOC,mBAAiBF,EAAeG,GAAgBC,EAAAA,KAAK,CACxD,GAAAC,CAAIC,GACAC,KAAKC,UAAUL,EAAKG,GAChBC,KAAKE,cAAeR,EAAYS,EAAAA,MAAMC,aAAaJ,KAAMN,EAAWK,GAASI,QAAML,IAAIE,KAAMD,GAC5FC,KAAKK,SAASC,mBAAoB,CAC3C,IAER,CAEM,SAAUC,EAAed,GAC3B,OAAOE,mBAAiBF,EAAeG,GAAgBC,EAAAA,KAAK,CACxD,GAAAC,CAAIC,GACAC,KAAKC,UAAUL,EAAKG,GACpBC,KAAKK,SAASC,mBAAoB,CACtC,IAER,CCjBM,SAAUE,EAAiBC,EAAWC,GACxC,GAAIA,IAAqB,IAAXA,EAAiB,OAAOA,EACtC,IAAKD,EAAKC,OAAQ,CACd,IAAIC,OAAEA,GAAWF,EACjB,IAAK,IAAIG,EAAI,EAAGA,EAAI,EAAGA,IACnB,GAAID,EAAQ,CACR,GAAIA,EAAOD,OAAQ,OAAOC,EAC1BA,EAASA,EAAOA,MACpB,CAER,CACA,OAAO,IACX,CCTM,SAAUE,EAASJ,EAAWK,GAC3BC,EAAAA,SAASD,KAAQA,OAAQE,GAC9BC,EAAYR,EAAMK,EAAO,KAC7B,CAEM,SAAUI,EAAWT,EAAWK,GAClC,MAAMK,YAAEA,GAAgBV,EACnBM,EAAAA,SAASD,KAAQA,OAAQE,GAC1BG,IACKL,IAAOA,EAAQK,GACpBF,EAAYR,EAAMK,EAAO,OAEjC,CAEA,MAAMM,EAAc,CAAA,WAEJH,EAAYR,EAAWK,EAAqBO,GACxD,MAAMF,YAAEA,GAAgBV,EAEnBK,IAAOA,EAAQM,GAEhBN,EAAMQ,QACNC,EAAAA,WAAWC,YAAYV,EAAqBA,EAAMQ,cAC3CR,EAAMQ,OAGbR,IAAUM,GAAgBjB,EAAAA,MAAMsB,aAAYJ,EAAO,MACvD,IAAIK,IAAaL,GAkGrB,SAAuBA,EAAoBP,EAAoBa,GAC3D,IAAIC,EAAgD,OAATP,EAAgB,aAAe,gBAC7D,QAATA,GAAkBQ,EAAAA,OAAOF,EAAKC,KAAUC,EAAAA,OAAOf,EAAMc,MAAQA,EAAO,cACxE,OAAOC,EAAAA,OAAOf,EAAMc,IAASD,EAAKC,GAAQd,EAAMc,EACpD,CAtG4BE,CAAcT,EAAMP,EAAOL,GACnD,MAAMsB,EAAYL,EA2FtB,SAAsBjB,EAAWK,GAC7B,MAAMiB,EAAYC,EAAmBlB,EAAOL,GAAOwB,EAAUxB,EAAKwB,UAC9DA,GAASD,EAAmBD,EAAWtB,EAAMwB,EAAQF,WACzD,OAAOA,CACX,CA/FmCG,CAAazB,EAAMK,QAASE,EAGzCb,EAAAA,MAAMsB,YAAcU,EAAS1B,IAChCA,EAAK2B,YAAY,cAC5BjB,GAAaV,EAAKX,IAAIqB,EAAa,QAGvC,MAAMkB,EAAcF,EAAS1B,GAC7B,GAAI4B,EAAa,CAEb,MAAMC,UAAEA,GAAcD,EACtB,GAAIC,EAAW,CACX,MAAML,EAAUxB,EAAKwB,QAAQK,OAAWtB,EAAW,aAAa,GAChEuB,OAAOC,OAAOH,EAAaJ,EAAQQ,aAEtB,OAATpB,GAAiBP,EAAMwB,YAAcA,EAAWL,EAAQS,OACvDhB,GAAa,SAEXW,EAAYC,SACvB,CAGA7B,EAAKU,YAAcwB,EAAYN,EAAa5B,GAC5CA,EAAKX,IAAIuC,EAAa,OAC1B,MACI5B,EAAKU,iBAAcH,EAGvB,GAAIU,EAAY,CACZ,MAAMkB,EAAUD,EAAYZ,EAAWtB,GACvCA,EAAKX,IAAIiC,EAAW,QACpBtB,EAAKwB,QAAQ,CAACF,EAAWa,GAAUlB,EAAY,cAAc,EACjE,CAEAjB,EAAKJ,SAASC,mBAAoB,CACtC,CAEM,SAAU6B,EAAS1B,GAIrB,IAAIoC,EACJ,MAAM/B,EAAsB,CAAA,EAAIJ,EAASF,EAAiBC,GACpDqC,EAAQpC,EAAUD,EAAKqC,OAASpC,EAAOoC,MAASrC,EAAKqC,MAErDC,EAAaD,GAASrC,EAAKuC,OAAOF,GACpCC,GAAc5C,EAAAA,MAAM8C,QAAQH,EAAOrC,EAAMC,KAASmC,EAAQL,EAAO1B,EAAOiC,IAE5E,MAAMG,EAAgBpC,EAAMoC,eAAiBzC,EAAKyC,cAC9CA,GAAiB/C,EAAAA,MAAMgD,WAAW1C,EAAMC,KAASmC,EAAQL,EAAO1B,EAAOoC,IAE3E,MAAME,EAAmBtC,EAAMsC,kBAAoB3C,EAAK2C,iBAGxD,GAFIA,GAAoBjD,EAAAA,MAAMkD,YAAY5C,EAAMC,KAASmC,EAAQL,EAAO1B,EAAOsC,IAE3EjD,QAAMmD,WAAW7C,EAAMC,GAAS,CAEhC,MAAM6C,EAAgBzC,EAAMyC,eAAiB9C,EAAK8C,cAC9CA,IAAeV,EAAQL,EAAO1B,EAAOyC,GAE7C,KAAO,CAEH,MAAMC,EAAa1C,EAAM0C,YAAc/C,EAAK+C,WACxCA,GAAcrD,EAAAA,MAAMsD,QAAQhD,EAAMC,KAASmC,EAAQL,EAAO1B,EAAO0C,IAErE,MAAME,EAAa5C,EAAM4C,YAAcjD,EAAKiD,WACxCA,GAAcvD,EAAAA,MAAMwD,QAAQlD,EAAMC,KAASmC,EAAQL,EAAO1B,EAAO4C,IAErE,MAAME,EAAa9C,EAAM8C,YAAcnD,EAAKmD,WACxCA,GAAczD,EAAAA,MAAM0D,QAAQpD,EAAMC,KAASmC,EAAQL,EAAO1B,EAAO8C,GAEzE,CAEA,OAAOf,EAAQ/B,OAAQE,CAC3B,CAGA,SAAS2B,EAAY7B,EAAgBa,EAAemC,EAAoBC,GACpE,MAAMC,EAAcF,EAAWhD,EAAQ,CAAA,EAAImD,EAAWH,GAAYhD,EAClE,IAAK,IAAIlB,KAAOqE,EACRF,GACK5D,EAAAA,MAAM+D,gBAAgBtE,KACxBoE,EAAGpE,GAAO+B,EAAK/B,IAE1B,OAAOoE,CACX,CAEA,SAAShC,EAAmBlB,EAAgBa,EAAemC,GACvD,OAAOnB,EAAY7B,EAAOa,EAAMmC,GAAU,EAC9C,CAcA,SAAStB,EAAO1B,EAAoBiC,GAEhC,OADAR,OAAOC,OAAO1B,EAAOiC,IACd,CACX,CCtIM,SAAUoB,EAAgB1D,EAAW2D,GACvC,MAAMtD,EAAQL,EAAK2D,GACftD,GAAOD,EAASJ,EAAMK,GACtBL,EAAKC,QAAQ2D,EAAiB5D,EAAK6D,SAAUF,EACrD,UAEgBG,EAAS9D,EAAW2D,EAAmBrB,GAC9CA,IAAYA,EAAatC,EAAKuC,OAAOoB,IAC1CvD,EAASJ,EAAMsC,GACXtC,EAAKC,QAAQ2D,EAAiB5D,EAAK6D,SAAU,KAAMF,EAC3D,CAGA,SAASC,EAAiBC,EAAiB9E,EAA4B4E,GACnE,IAAKE,EAAU,OAEf,IAAI7D,EAAW+D,EACf,IAAK,IAAI5D,EAAI,EAAG6D,EAAMH,EAASI,OAAQ9D,EAAI6D,EAAK7D,IAAK,CAEjD,GADAH,EAAO6D,EAAS1D,GACZpB,EAAW,CAGX,OADAgF,GAAS,EACDhF,GACJ,IAAK,aACGW,EAAAA,MAAMwD,QAAQlD,KAAO+D,GAAS,GAClC,MACJ,IAAK,aACGrE,EAAAA,MAAM0D,QAAQpD,KAAO+D,GAAS,GAClC,MACJ,IAAK,aACGrE,EAAAA,MAAMsD,QAAQhD,KAAO+D,GAAS,GAEtCA,GAAQL,EAAgB1D,EAAMjB,EAEtC,MAAYmF,EAAAA,YAAYP,IAAYG,EAAS9D,EAAM2D,GAE/C3D,EAAKmE,UAAUP,EAAiB5D,EAAK6D,SAAU9E,EAAW4E,EAClE,CACJ,CCtCM,SAAUS,EAAkBpE,EAAW2D,GACzC,MAAMtD,EAAQL,EAAK2D,GACftD,GAAOI,EAAWT,EAAMK,GACxBL,EAAKC,QAAQoE,EAAmBrE,EAAK6D,SAAUF,EACvD,UAEgBW,EAAWtE,EAAW2D,EAAmBrB,GACrD7B,EAAWT,EAAMsC,GACbtC,EAAKC,QAAQoE,EAAmBrE,EAAK6D,SAAU,KAAMF,EAC7D,CAGA,SAASU,EAAmBR,EAAiB9E,EAA4B4E,GACrE,IAAKE,EAAU,OAEf,IAAI7D,EACJ,IAAK,IAAIG,EAAI,EAAG6D,EAAMH,EAASI,OAAQ9D,EAAI6D,EAAK7D,IAC5CH,EAAO6D,EAAS1D,GACZpB,EAAWqF,EAAkBpE,EAAMjB,GAC7BmF,EAAAA,YAAYP,IAAYW,EAAWtE,EAAM2D,GAE/C3D,EAAKmE,UAAUE,EAAmBrE,EAAK6D,SAAU9E,EAAW4E,EAExE,UCxBgBY,EAAkBC,EAAsDxE,EAAWC,GAC/F,IAAIwE,EACJ,MAAMC,EAAc1E,EAAK2E,OAAS3E,EAAK2E,OAAOD,YAAc,KAC5D,GAAIA,IACAD,EAAOC,EAAYF,GAAQxE,IACtByE,GAAQxE,GAAQ,CACjB,MAAM2E,EAAe7E,EAAiBC,EAAMC,GACxC2E,IAAcH,EAAOC,EAAYF,GAAQI,GACjD,CAEJ,OAAOH,CACX,UAEgBI,EAAgBC,EAAmC9E,EAAWC,GAC1E,IAAIwE,EAAOzE,EAAK8E,GAChB,IAAKL,GAAQxE,EAAQ,CACjB,MAAM2E,EAAe7E,EAAiBC,EAAMC,GACxC2E,IAAcH,EAAOG,EAAaE,GAC1C,CACA,OAAOL,CACX,CCZAM,EAAAA,OAAOC,IAAI,SAGXtF,EAAAA,MAAM+D,gBAAkB,CACpB5B,UAAW,EACXoD,aAAc,EAEdhE,WAAY,EACZiE,cAAe,EAEf3C,OAAQ,EACRF,MAAO,EAEP8C,YAAa,EAEbzE,YAAa,EACbuC,WAAY,EACZE,WAAY,EACZJ,WAAY,EACZN,cAAe,EACfK,cAAe,EACfH,iBAAkB,GAItBjD,EAAAA,MAAM8C,QAAU,SAAUH,EAAmBrC,EAAWC,GAAmC,gBDXhE0D,EAAuB3D,EAAWC,GACzD,IAAIwE,EAAOzE,EAAKuC,OAAOoB,GACvB,IAAKc,GAAQxE,EAAQ,CACjB,MAAM2E,EAAe7E,EAAiBC,EAAMC,GACxC2E,IAAcH,EAAOG,EAAarC,OAAOoB,GACjD,CACA,QAASc,CACb,CCIkGW,CAAW/C,EAAOrC,EAAMC,EAAQ,EAClIP,EAAAA,MAAMgD,WAAa,SAAU1C,EAAWC,GAAmC,OAAO4E,EAAgB,WAAY7E,EAAMC,EAAQ,EAC5HP,EAAAA,MAAMmD,WAAa,SAAU7C,EAAWC,GAAmC,OAAO4E,EAAgB,WAAY7E,EAAMC,EAAQ,EAE5HP,EAAAA,MAAMsD,QAAU,SAAUhD,EAAWC,GAAmC,OAAOsE,EAAkB,UAAWvE,EAAMC,EAAQ,EAC1HP,EAAAA,MAAMwD,QAAU,SAAUlD,EAAWC,GAAmC,OAAOsE,EAAkB,UAAWvE,EAAMC,EAAQ,EAC1HP,EAAAA,MAAM0D,QAAU,SAAUpD,EAAWC,GAAmC,OAAOsE,EAAkB,UAAWvE,EAAMC,EAAQ,EAC1HP,EAAAA,MAAMkD,YAAc,SAAU5C,EAAWqF,GAAoC,OAAQrF,EAAesF,GAAGC,aAAc,EAErH7F,EAAAA,MAAM8F,OAAS,SAAUxF,EAAWC,GAAmC,OAAOsE,EAAkB,SAAUvE,EAAMC,EAAQ,EAExHP,EAAAA,MAAMC,aAAe,SAAUK,EAAWjB,EAA4BO,GAAwBA,EAAQwE,EAAS9D,EAAMjB,EAAWiB,EAAKjB,IAAcuF,EAAWtE,EAAMjB,EAAWiB,EAAKjB,GAAY,EAChMW,EAAAA,MAAML,IAAM,SAAUW,EAAW2D,GAA2B,MAAMtD,EAAQL,EAAKuC,OAAOoB,GAAYtD,EAAQyD,EAAS9D,EAAM2D,EAAWtD,GAASiE,EAAWtE,EAAM2D,EAAWtD,EAAO,EAEhLX,EAAAA,MAAMgC,SAAWA,EACjBhC,EAAAA,MAAMc,YAAcA,EACpBd,EAAAA,MAAM+F,iBC/CA,SAA2BzF,EAAW0F,GACxC,OAAQA,GACJ,KAAKC,EAAAA,aAAaC,MACdlC,EAAgB1D,EAAM,cACtB,MACJ,KAAK2F,EAAAA,aAAaE,MACdzB,EAAkBpE,EAAM,cACxB,MACJ,KAAK2F,EAAAA,aAAaG,KACdpC,EAAgB1D,EAAM,cACtB,MACJ,KAAK2F,EAAAA,aAAaI,GACd3B,EAAkBpE,EAAM,cAGpC,EDmCA,MAAMgG,EAAKC,EAAAA,GAAGC,UAGdD,EAAAA,GAAGE,QAAQ,YAAY,EAAOpH,EAAW,iBACzCkH,EAAAA,GAAGE,QAAQ,YAAY,EAAOpH,EAAW,iBAEzCkH,EAAAA,GAAGE,QAAQ,SAAU,CAAA,EAAIrG,GACzBmG,EAAAA,GAAGE,QAAQ,QAAS,GAAIpH,GAExBkH,EAAAA,GAAGE,QAAQ,mBAAe5F,EAAW6F,YACrCH,EAAAA,GAAGE,QAAQ,kBAAc5F,EAAWT,GACpCmG,EAAAA,GAAGE,QAAQ,kBAAc5F,EAAWT,GACpCmG,EAAAA,GAAGE,QAAQ,kBAAc5F,EAAWT,GACpCmG,EAAAA,GAAGE,QAAQ,qBAAiB5F,EAAWT,GACvCmG,EAAAA,GAAGE,QAAQ,qBAAiB5F,EAAWT,GACvCmG,EAAAA,GAAGE,QAAQ,wBAAoB5F,EAAWT,GAE1CmG,EAAAA,GAAGE,QAAQ,UAAU,EAAOC,YAE5BJ,EAAGK,MAAQ,SAAU/G,GAAiB,GAClCC,KAAK+G,WAAW,KACZ,IAAIC,UAAEA,GAAchH,KAAKiH,IAAI9B,YACzBpF,GACIiH,GAAWA,EAAUF,OAAM,GAC/BE,EAAYhH,MACTgH,EAAY,KACnBhH,KAAKiH,IAAI9B,YAAY6B,UAAYA,EACjCjH,EAAQoE,EAAgBnE,KAAM,cAAgB6E,EAAkB7E,KAAM,eAE9E,EAEAyG,EAAGS,YAAc,WACb/G,EAAAA,MAAMc,YAAYjB,UAAMgB,EAAW,KACvC,EAGA,MAAMmG,EAAOC,EAAAA,KAAKT,UAAWU,EAAU,cAEvCC,EAAAA,UAAUH,EAAME,iCACTE,EAAAA,cAAcJ,EAAME,IAAQ,CAC/B,GAAAvH,CAAIC,GACA,MAAMyH,EAAIxH,KAAcyH,EAAWD,EAAEL,KACjCK,EAAEvH,UAAUoH,EAAStH,KACrB2H,EAAAA,aAAaF,GACTA,EAAEpE,kBAAoBoE,EAAE5B,cAA6B,KAAb6B,GAA6B,KAAV1H,KAAeyH,EAAEnH,SAASC,mBAAoB,GAErH"}
1
+ {"version":3,"file":"state.min.js","sources":["../../../../../../src/in/packages/state/src/decorator.ts","../../../../../../src/in/packages/state/src/helper.ts","../../../../../../src/in/packages/state/src/style.ts","../../../../../../src/in/packages/state/src/set.ts","../../../../../../src/in/packages/state/src/unset.ts","../../../../../../src/in/packages/state/src/check.ts","../../../../../../src/in/packages/state/src/index.ts","../../../../../../src/in/packages/state/src/event.ts"],"sourcesContent":["import { IValue } from '@leafer-ui/interface'\nimport { decorateLeafAttr, attr, State } from '@leafer-ui/core'\n\nexport function stateType(defaultValue?: IValue, styleName?: string) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n if (this.leaferIsReady) styleName ? State.setStyleName(this, styleName, value) : State.set(this, value)\n else this.__layout.stateStyleChanged = true\n }\n }))\n}\n\nexport function stateStyleType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: any) {\n this.__setAttr(key, value)\n this.__layout.stateStyleChanged = true\n }\n }))\n}","import { IUI } from '@leafer-ui/interface'\n\n\nexport function findParentButton(leaf: IUI, button?: IUI | boolean): IUI {\n if (button && button !== true) return button\n if (!leaf.button) {\n let { parent } = leaf\n for (let i = 0; i < 2; i++) {\n if (parent) {\n if (parent.button) return parent\n parent = parent.parent\n }\n }\n }\n return null\n}","import { IUI, IObject, IUIInputData, IStateStyle, IScaleData, ITransition } from '@leafer-ui/interface'\nimport { State, MathHelper, isNull, isObject } from '@leafer-ui/core'\n\nimport { findParentButton } from './helper'\n\n\nexport function setStyle(leaf: IUI, style: IStateStyle): void {\n if (!isObject(style)) style = undefined\n updateStyle(leaf, style, 'in')\n}\n\nexport function unsetStyle(leaf: IUI, style?: IStateStyle): void {\n const { normalStyle } = leaf\n if (!isObject(style)) style = undefined\n if (normalStyle) {\n if (!style) style = normalStyle\n updateStyle(leaf, style, 'out')\n }\n}\n\nconst emprtyStyle = {}\n\nexport function updateStyle(leaf: IUI, style?: IStateStyle, type?: 'in' | 'out'): void {\n const { normalStyle } = leaf\n\n if (!style) style = emprtyStyle\n\n if (style.scale) {\n MathHelper.assignScale(style as IScaleData, style.scale)\n delete style.scale\n }\n\n if (style === emprtyStyle || !State.canAnimate) type = null\n let transition = type ? getTransition(type, style, leaf) : false\n const fromStyle = transition ? getFromStyle(leaf, style) : undefined\n\n // 回到正常状态\n const nextStyle = State.canAnimate && getStyle(leaf)\n if (nextStyle) leaf.killAnimate('transition')\n if (normalStyle) leaf.set(normalStyle, 'temp')\n\n\n const statesStyle = getStyle(leaf) // 必须在回到正常状态之后获取\n if (statesStyle) {\n\n const { animation } = statesStyle\n if (animation) {\n const animate = leaf.animate(animation, undefined, 'animation', true)\n Object.assign(statesStyle, animate.endingStyle) // 加上最终的动画样式\n\n if (type !== 'in' || style.animation !== animation) animate.kill()\n else transition = false\n\n delete statesStyle.animation\n }\n\n\n leaf.normalStyle = filterStyle(statesStyle, leaf)\n leaf.set(statesStyle, 'temp')\n } else {\n leaf.normalStyle = undefined\n }\n\n if (transition) {\n const toStyle = filterStyle(fromStyle, leaf)\n leaf.set(fromStyle, 'temp')\n leaf.animate([fromStyle, toStyle], transition, 'transition', true)\n }\n\n leaf.__layout.stateStyleChanged = false\n}\n\nexport function getStyle(leaf: IUI): IStateStyle {\n\n // 从低到高依次覆盖: states < selected < placeholder < focus < hover < press < disabled\n\n let exist: boolean\n const style: IUIInputData = {}, button = findParentButton(leaf)\n const state = button ? (leaf.state || button.state) : leaf.state\n\n const stateStyle = state && leaf.states[state]\n if (stateStyle && State.isState(state, leaf, button)) exist = assign(style, stateStyle)\n\n const selectedStyle = style.selectedStyle || leaf.selectedStyle\n if (selectedStyle && State.isSelected(leaf, button)) exist = assign(style, selectedStyle)\n\n const placeholderStyle = style.placeholderStyle || leaf.placeholderStyle\n if (placeholderStyle && State.isPlacehold(leaf, button)) exist = assign(style, placeholderStyle)\n\n if (State.isDisabled(leaf, button)) {\n\n const disabledStyle = style.disabledStyle || leaf.disabledStyle\n if (disabledStyle) exist = assign(style, disabledStyle)\n\n } else {\n\n const focusStyle = style.focusStyle || leaf.focusStyle\n if (focusStyle && State.isFocus(leaf, button)) exist = assign(style, focusStyle)\n\n const hoverStyle = style.hoverStyle || leaf.hoverStyle\n if (hoverStyle && State.isHover(leaf, button)) exist = assign(style, hoverStyle)\n\n const pressStyle = style.pressStyle || leaf.pressStyle\n if (pressStyle && State.isPress(leaf, button)) exist = assign(style, pressStyle)\n\n }\n\n return exist ? style : undefined\n}\n\n\nfunction filterStyle(style: IObject, data: IObject, addStyle?: IObject, useAnimateExcludes?: boolean): IObject {\n const to: IObject = addStyle ? style : {}, forStyle = addStyle || style\n for (let key in forStyle) {\n if (useAnimateExcludes) {\n if (!State.animateExcludes[key]) to[key] = data[key]\n } else to[key] = data[key]\n }\n return to\n}\n\nfunction filterAnimateStyle(style: IObject, data: IObject, addStyle?: IObject): IObject {\n return filterStyle(style, data, addStyle, true)\n}\n\nfunction getFromStyle(leaf: IUI, style: IObject): IObject {\n const fromStyle = filterAnimateStyle(style, leaf), animate = leaf.animate()\n if (animate) filterAnimateStyle(fromStyle, leaf, animate.fromStyle)\n return fromStyle\n}\n\nfunction getTransition(type: 'in' | 'out', style: IStateStyle, data: IUI): ITransition {\n let name: 'transition' | 'transitionOut' = type === 'in' ? 'transition' : 'transitionOut'\n if (type === 'out' && isNull(data[name]) && isNull(style[name])) name = 'transition'\n return isNull(style[name]) ? data[name] : style[name]\n}\n\nfunction assign(style: IStateStyle, stateStyle: IStateStyle): boolean {\n Object.assign(style, stateStyle)\n return true\n}","import { IUI, IStateStyle, IStateStyleType, IStateName } from '@leafer-ui/interface'\nimport { State, isUndefined } from '@leafer-ui/core'\n\nimport { setStyle } from './style'\n\n\nexport function setPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) setStyle(leaf, style)\n if (leaf.button) setChildrenState(leaf.children, stateName)\n}\n\nexport function setState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n if (!stateStyle) stateStyle = leaf.states[stateName]\n setStyle(leaf, stateStyle)\n if (leaf.button) setChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction setChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI, update: boolean\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) {\n\n update = true\n switch (stateType) {\n case 'hoverStyle':\n if (State.isHover(leaf)) update = false\n break\n case 'pressStyle':\n if (State.isPress(leaf)) update = false\n break\n case 'focusStyle':\n if (State.isFocus(leaf)) update = false\n }\n if (update) setPointerState(leaf, stateType)\n\n } else if (!isUndefined(stateName)) setState(leaf, stateName)\n\n if (leaf.isBranch) setChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateStyleType, IStateStyle, IStateName } from '@leafer-ui/interface'\nimport { isUndefined } from '@leafer-ui/core'\n\nimport { unsetStyle } from './style'\n\n\nexport function unsetPointerState(leaf: IUI, stateName: IStateStyleType): void {\n const style = leaf[stateName]\n if (style) unsetStyle(leaf, style)\n if (leaf.button) unsetChildrenState(leaf.children, stateName)\n}\n\nexport function unsetState(leaf: IUI, stateName: string, stateStyle?: IStateStyle): void {\n unsetStyle(leaf, stateStyle)\n if (leaf.button) unsetChildrenState(leaf.children, null, stateName)\n}\n\n\nfunction unsetChildrenState(children: IUI[], stateType: IStateStyleType, stateName?: IStateName): void {\n if (!children) return\n\n let leaf: IUI\n for (let i = 0, len = children.length; i < len; i++) {\n leaf = children[i]\n if (stateType) unsetPointerState(leaf, stateType)\n else if (!isUndefined(stateName)) unsetState(leaf, stateName)\n\n if (leaf.isBranch) unsetChildrenState(leaf.children, stateType, stateName)\n }\n}","import { IUI, IStateName, } from '@leafer-ui/interface'\n\nimport { findParentButton } from './helper'\n\n\nexport function checkPointerState(fnName: 'isHover' | 'isPress' | 'isFocus' | 'isDrag', leaf: IUI, button?: IUI | boolean): boolean {\n let find: boolean\n const interaction = leaf.leafer ? leaf.leafer.interaction : null\n if (interaction) {\n find = interaction[fnName](leaf)\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = interaction[fnName](parentButton)\n }\n }\n return find\n}\n\nexport function checkFixedState(attrName: 'selected' | 'disabled', leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf[attrName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton[attrName]\n }\n return find\n}\n\nexport function checkState(stateName: IStateName, leaf: IUI, button?: IUI | boolean): boolean {\n let find = leaf.states[stateName]\n if (!find && button) {\n const parentButton = findParentButton(leaf, button)\n if (parentButton) find = parentButton.states[stateName]\n }\n return !!find\n}\n","export { stateType, stateStyleType } from './decorator'\n\nimport { IUI, IStateStyleType, IStateName, IText, IUIInputData, ITransition } from '@leafer-ui/interface'\nimport { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'\n\nimport { setPointerState, setState } from './set'\nimport { unsetPointerState, unsetState } from './unset'\nimport { updateEventStyle } from './event'\nimport { checkPointerState, checkFixedState, checkState } from './check'\nimport { getStyle, updateStyle } from './style'\nimport { stateType, stateStyleType } from './decorator'\n\n\nPlugin.add('state')\n\n\nState.animateExcludes = {\n animation: 1,\n animationOut: 1,\n\n transition: 1,\n transitionOut: 1,\n\n states: 1,\n state: 1,\n\n placeholder: 1,\n\n normalStyle: 1,\n hoverStyle: 1,\n pressStyle: 1,\n focusStyle: 1,\n selectedStyle: 1,\n disabledStyle: 1,\n placeholderStyle: 1\n}\n\n\nState.isState = function (state: IStateName, leaf: IUI, button?: IUI | boolean): boolean { return checkState(state, leaf, button) }\nState.isSelected = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('selected', leaf, button) }\nState.isDisabled = function (leaf: IUI, button?: IUI | boolean): boolean { return checkFixedState('disabled', leaf, button) }\n\nState.isFocus = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isFocus', leaf, button) }\nState.isHover = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isHover', leaf, button) }\nState.isPress = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isPress', leaf, button) }\nState.isPlacehold = function (leaf: IUI, _button?: IUI | boolean): boolean { return (leaf as IText).__.__isPlacehold }\n\nState.isDrag = function (leaf: IUI, button?: IUI | boolean): boolean { return checkPointerState('isDrag', leaf, button) }\n\nState.setStyleName = function (leaf: IUI, stateType: IStateStyleType, value: boolean): void { value ? setState(leaf, stateType, leaf[stateType]) : unsetState(leaf, stateType, leaf[stateType]) }\nState.set = function (leaf: IUI, stateName: string): void { const style = leaf.states[stateName]; style ? setState(leaf, stateName, style) : unsetState(leaf, stateName, style) }\n\nState.getStyle = getStyle\nState.updateStyle = updateStyle\nState.updateEventStyle = updateEventStyle\n\n\nconst ui = UI.prototype\n\n// addAttr\nUI.addAttr('selected', false, stateType, 'selectedStyle')\nUI.addAttr('disabled', false, stateType, 'disabledStyle')\n\nUI.addAttr('states', {}, stateStyleType)\nUI.addAttr('state', '', stateType)\n\nUI.addAttr('normalStyle', undefined, dataType)\nUI.addAttr('hoverStyle', undefined, stateStyleType)\nUI.addAttr('pressStyle', undefined, stateStyleType)\nUI.addAttr('focusStyle', undefined, stateStyleType)\nUI.addAttr('selectedStyle', undefined, stateStyleType)\nUI.addAttr('disabledStyle', undefined, stateStyleType)\nUI.addAttr('placeholderStyle', undefined, stateStyleType)\n\nUI.addAttr('button', false, dataType)\n\n// @leafer-in/animate will rewrite\nui.set = function (data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (transition) {\n if (transition === 'temp') {\n this.lockNormalStyle = true\n Object.assign(this, data)\n this.lockNormalStyle = false\n } else this.animate(data, transition)\n } else Object.assign(this, data)\n }\n}\n\nui.focus = function (value: boolean = true): void {\n this.waitLeafer(() => {\n let { focusData } = this.app.interaction\n if (value) {\n if (focusData) focusData.focus(false)\n focusData = this\n } else focusData = null\n this.app.interaction.focusData = focusData\n value ? setPointerState(this, 'focusStyle') : unsetPointerState(this, 'focusStyle')\n })\n}\n\nui.updateState = function (): void {\n State.updateStyle(this, undefined, 'in')\n}\n\n\nconst text = Text.prototype, textKey = 'text'\n\ndefineKey(text, textKey, {\n ...getDescriptor(text, textKey),\n set(value: string) {\n const t = this as Text, oldValue = t.text\n if (t.__setAttr(textKey, value)) {\n doBoundsType(t)\n if (t.placeholderStyle && t.placeholder && (oldValue === '' || value === '')) t.__layout.stateStyleChanged = true\n }\n }\n})\n","import { IUI } from '@leafer-ui/interface'\nimport { PointerEvent } from '@leafer-ui/core'\n\nimport { setPointerState } from './set'\nimport { unsetPointerState } from './unset'\n\n\nexport function updateEventStyle(leaf: IUI, eventType: string): void {\n switch (eventType) {\n case PointerEvent.ENTER:\n setPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.LEAVE:\n unsetPointerState(leaf, 'hoverStyle')\n break\n case PointerEvent.DOWN:\n setPointerState(leaf, 'pressStyle')\n break\n case PointerEvent.UP:\n unsetPointerState(leaf, 'pressStyle')\n break\n }\n}"],"names":["stateType","defaultValue","styleName","decorateLeafAttr","key","attr","set","value","this","__setAttr","leaferIsReady","State","setStyleName","__layout","stateStyleChanged","stateStyleType","findParentButton","leaf","button","parent","i","setStyle","style","isObject","undefined","updateStyle","unsetStyle","normalStyle","emprtyStyle","type","scale","MathHelper","assignScale","canAnimate","transition","data","name","isNull","getTransition","fromStyle","filterAnimateStyle","animate","getFromStyle","getStyle","killAnimate","statesStyle","animation","Object","assign","endingStyle","kill","filterStyle","toStyle","exist","state","stateStyle","states","isState","selectedStyle","isSelected","placeholderStyle","isPlacehold","isDisabled","disabledStyle","focusStyle","isFocus","hoverStyle","isHover","pressStyle","isPress","addStyle","useAnimateExcludes","to","forStyle","animateExcludes","setPointerState","stateName","setChildrenState","children","setState","update","len","length","isUndefined","isBranch","unsetPointerState","unsetChildrenState","unsetState","checkPointerState","fnName","find","interaction","leafer","parentButton","checkFixedState","attrName","Plugin","add","animationOut","transitionOut","placeholder","checkState","_button","__","__isPlacehold","isDrag","updateEventStyle","eventType","PointerEvent","ENTER","LEAVE","DOWN","UP","ui","UI","prototype","addAttr","dataType","lockNormalStyle","focus","waitLeafer","focusData","app","updateState","text","Text","textKey","defineKey","getDescriptor","t","oldValue","doBoundsType"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer-in/state",
3
- "version": "1.9.7",
3
+ "version": "1.9.9",
4
4
  "description": "@leafer-in/state",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -34,8 +34,8 @@
34
34
  "leaferjs"
35
35
  ],
36
36
  "peerDependencies": {
37
- "@leafer-ui/core": "^1.9.7",
38
- "@leafer-ui/interface": "^1.9.7",
39
- "@leafer-in/interface": "^1.9.7"
37
+ "@leafer-ui/core": "^1.9.9",
38
+ "@leafer-ui/interface": "^1.9.9",
39
+ "@leafer-in/interface": "^1.9.9"
40
40
  }
41
41
  }
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { stateType, stateStyleType } from './decorator'
2
2
 
3
- import { IUI, IStateStyleType, IStateName, IText } from '@leafer-ui/interface'
3
+ import { IUI, IStateStyleType, IStateName, IText, IUIInputData, ITransition } from '@leafer-ui/interface'
4
4
  import { State, UI, Text, dataType, Plugin, getDescriptor, doBoundsType, defineKey } from '@leafer-ui/core'
5
5
 
6
6
  import { setPointerState, setState } from './set'
@@ -74,6 +74,19 @@ UI.addAttr('placeholderStyle', undefined, stateStyleType)
74
74
 
75
75
  UI.addAttr('button', false, dataType)
76
76
 
77
+ // @leafer-in/animate will rewrite
78
+ ui.set = function (data: IUIInputData, transition?: ITransition | 'temp'): void {
79
+ if (data) {
80
+ if (transition) {
81
+ if (transition === 'temp') {
82
+ this.lockNormalStyle = true
83
+ Object.assign(this, data)
84
+ this.lockNormalStyle = false
85
+ } else this.animate(data, transition)
86
+ } else Object.assign(this, data)
87
+ }
88
+ }
89
+
77
90
  ui.focus = function (value: boolean = true): void {
78
91
  this.waitLeafer(() => {
79
92
  let { focusData } = this.app.interaction