UNPKG

@hap-toolkit/packager

Version:

@hap-toolkit/packager

3 lines (2 loc) 5 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.postHandleJSCardRes=postHandleJSCardRes;var _utils=require("./utils"),_compiler=require("@hap-toolkit/compiler");const{validator:validator}=_compiler.templater,CARD_ENTRY="#entry",TYPE_IMPORT="import",TEMPLATE_KEY="template",ENUM_KIND_TYPE={ELEMENT:{kind:1,priority:1},COMPONENT:{kind:3,priority:2},FRAGMENT:{kind:2,priority:3}};function postHandleTemplate(e,t){if(!(0,_utils.isObject)(e))return;markStyle(e),markClass(e),markAttr(e),markEvents(e),markId(e),markIs(e),markIf(e),markFor(e),markCustomComp(e,t);const s=e.children;if(s&&Array.isArray(s))for(let e=0;e<s.length;e++){postHandleTemplate(s[e],t)}}function getPriority(e){let t=e;return Object.keys(ENUM_KIND_TYPE).some((s=>{const E=ENUM_KIND_TYPE[s];if(E.kind===e)return t=E.priority,!0})),t}function markKind(e,t){if(!e)return t;return getPriority(e)<getPriority(t)?t:e}function markCustomComp(e,t){if(!(0,_utils.isObject)(t[CARD_ENTRY][TYPE_IMPORT]))return;Object.keys(t[CARD_ENTRY][TYPE_IMPORT]).includes(e.type)&&(e.import=t[CARD_ENTRY][TYPE_IMPORT][e.type],e.kind=markKind(e.kind,ENUM_KIND_TYPE.COMPONENT.kind))}function markIf(e){if(!e.shown)return;const t=(0,_utils.getExprType)(e.shownRaw);if(t===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||t===_utils.EXPR_TYPE.EXPRESSION){const s=getExprRes(e.shownRaw,e.shown);t===_utils.EXPR_TYPE.EXPRESSION?(e.$shown=s,delete e.shown):e.shown=s}delete e.shownRaw,e.kind=markKind(e.kind,ENUM_KIND_TYPE.FRAGMENT.kind)}function markIs(e){if(!e.is)return;const t=(0,_utils.getExprType)(e.isRaw);if(t===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||t===_utils.EXPR_TYPE.EXPRESSION){const s=getExprRes(e.isRaw,e.is);t===_utils.EXPR_TYPE.EXPRESSION?(e.$is=s,delete e.is,e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind)):e.is=s}delete e.isRaw}function markId(e){if(!e.id)return;const t=(0,_utils.getExprType)(e.idRaw);if(t===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||t===_utils.EXPR_TYPE.EXPRESSION){const s=getExprRes(e.idRaw,e.id);t===_utils.EXPR_TYPE.EXPRESSION?(e.$id=s,delete e.id):e.id=s}delete e.idRaw,e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind)}function markFor(e){if(e.repeat){if((0,_utils.isObject)(e.repeat)){const t=(0,_utils.getExprType)(e.repeatRaw.expRaw);if(t===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||t===_utils.EXPR_TYPE.EXPRESSION){const s=getExprRes(e.repeatRaw.expRaw,e.repeat.exp);t===_utils.EXPR_TYPE.EXPRESSION?(e.repeat.$exp=s,delete e.repeat.exp):e.repeat.exp=s}}else{const t=(0,_utils.getExprType)(e.repeatRaw);if(t===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||t===_utils.EXPR_TYPE.EXPRESSION){const s=getExprRes(e.repeatRaw,e.repeat);t===_utils.EXPR_TYPE.EXPRESSION?(e.$repeat=s,delete e.repeat):e.repeat=s}delete e.repeatRaw}delete e.repeatRaw,e.kind=markKind(e.kind,ENUM_KIND_TYPE.FRAGMENT.kind)}}function markStyle(e){if(!e.style)return;const t=e.styleRaw,s=e.style;if("object"==typeof s)Object.keys(s).forEach((E=>{const i=(0,_utils.getExprType)(t[E]);if(i===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||i===_utils.EXPR_TYPE.EXPRESSION){const r=getExprRes(t[E],s[E]);i===_utils.EXPR_TYPE.EXPRESSION?(e.style["$"+E]=r,delete e.style[E],e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind)):e.style[E]=r}}));else{const s=(0,_utils.getExprType)(t);if(s===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||s===_utils.EXPR_TYPE.EXPRESSION){const E=getExprRes(t,e.style);s===_utils.EXPR_TYPE.EXPRESSION?(e.$style=E,delete e.style,e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind)):e.style=E}}delete e.styleRaw}function markClass(e){if(!e.class||0===e.class.length)return;const t=(0,_utils.getExprType)(e.classListRaw);if(t===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||t===_utils.EXPR_TYPE.EXPRESSION){const s=getExprRes(e.classListRaw,e.classList);t===_utils.EXPR_TYPE.EXPRESSION?(e.$class=s,e.$classList=s,delete e.classList,delete e.class,e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind)):(e.class=s,e.classList=s)}delete e.classListRaw}function markEvents(e){e.events&&(Object.keys(e.events).forEach((t=>{const s=e.events[t];(0,_utils.isFunctionStr)(s)&&(e.events["$"+t]=s,delete e.events[t])})),e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind))}function markAttr(e){if(!e.attr)return;const t=e.attr;(0,_utils.isObject)(t)&&Object.keys(t).forEach((s=>{const E=t[s+"Raw"];if(void 0!==E){const i=(0,_utils.getExprType)(E);if(i===_utils.EXPR_TYPE.CONST_IN_EXPRESSION||i===_utils.EXPR_TYPE.EXPRESSION){const r=getExprRes(E,t[s]);i===_utils.EXPR_TYPE.EXPRESSION?(t["$"+s]=r,delete t[s],e.kind=markKind(e.kind,ENUM_KIND_TYPE.ELEMENT.kind)):t[s]=r}delete t[s+"Raw"]}}))}function getExprRes(exprRaw,expr){const tokens=validator.parseText(exprRaw.trim());if(tokens.length>1)return expr;const parsed=tokens[0].value;return(0,_utils.isConstObjOrArray)(parsed)?eval(`(${parsed})`):(0,_utils.isSimplePath)(parsed)&&(0,_utils.isSimpleArr)(parsed)?parsed:expr}function postHandleJSCardRes(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){postHandleTemplate(e[t[s]][TEMPLATE_KEY],e)}return e} //# sourceMappingURL=js-card-post.js.map