@hap-toolkit/compiler 1.9.17-alpha.13 → 1.9.17-alpha.15

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={};exports.default=void 0;var _path=_interopRequireDefault(require("path")),_css=_interopRequireDefault(require("css")),_sharedUtils=require("@hap-toolkit/shared-utils"),_validator=require("./validator"),_compress=require("./compress"),_process=require("./process");Object.keys(_process).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_process[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _process[e]}}))}));var _utils=require("../utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function parse(e){let t;const s={},r=[];let o=[],a=e.code||"";const l=e.filePath,i=_path.default.dirname(l),n=[];a=(0,_process.processImport)(a,i,r,n);const c=_css.default.parse(a,{silent:!0});return c.stylesheet.parsingErrors&&c.stylesheet.parsingErrors.length&&(t=c.stylesheet.parsingErrors,t.forEach((function(e){r.push({line:e.line,column:e.column,reason:e.toString()})}))),c&&"stylesheet"===c.type&&c.stylesheet&&c.stylesheet.rules&&c.stylesheet.rules.length&&c.stylesheet.rules.forEach((function(e){const t=e.type,a={};if("rule"===t&&e.declarations&&e.declarations.length&&(0,_process.processSingleClass)(e,s,a,r,l,o),"media"===t)s["@MEDIA"]||(s["@MEDIA"]=[]),(0,_process.processMediaQueryCss)(e,s["@MEDIA"],r,l,"",o);else if("font-face"===t){if(e.declarations&&e.declarations.length){const t={};e.declarations.forEach((function(e){if("declaration"!==e.type)return;const s=(0,_utils.hyphenedToCamelCase)(e.property),a=e.value;if("fontFamily"===s)t.fontFamily=a.replace(/['"]+/g,"");else if("src"===s){const s=(0,_validator.validate)("fontSrc",a,{filePath:l});s.log&&r.push({line:e.position.start.line,column:e.position.start.column,reason:s.log.reason}),t.src=s.value;const i=s.value||[];o=o.concat(i)}})),s["@FONT-FACE"]||(s["@FONT-FACE"]={}),t.fontName=t.fontFamily,t.fontSrc=t.src,s["@FONT-FACE"][t.fontFamily]=t}}else if("keyframes"===t&&e.keyframes&&e.keyframes.length){const t=e.name,a=[];e.keyframes.forEach((function(s){let i;if("keyframe"===s.type&&s.declarations&&s.declarations.length)if(i={},s.declarations.forEach((function(e){if("declaration"!==e.type)return;const t=e.property,s=e.value,a=(0,_utils.hyphenedToCamelCase)(t),n=(0,_validator.validate)(a,s,{filePath:l});n.value.forEach((e=>{(0,_utils.isValidValue)(e.v)&&(i[e.n]=e.v,(0,_process.shouldAddToDependency)(e.n,e.v)&&o.push(e.v))})),n.log&&r.push({line:e.position.start.line,column:e.position.start.column,reason:n.log.reason})})),(0,_utils.isEmptyObject)(i))r.push({line:e.position.start.line,column:e.position.start.column,reason:"ERROR: 动画 `"+t+"` 的关键帧 `"+JSON.stringify(s.values)+"` 没有有效的属性"});else{let e;s.values.forEach((t=>{e="from"===t?0:"to"===t?100:parseFloat(t.replace("%","")),i.time=e,a.push(i)}))}})),a.sort((function(e,t){return e.time-t.time})),s["@KEYFRAMES"]||(s["@KEYFRAMES"]={}),s["@KEYFRAMES"][t]=a}})),_sharedUtils.compileOptionsObject.optimizeCssAttr&&(0,_compress.compressCssAttr)(s),{jsonStyle:s,depList:n,log:r,depFiles:o}}var _default={parse:parse,validateDelaration:_validator.validate,mightReferlocalResource:_validator.mightReferlocalResource,shouldAddToDependency:_process.shouldAddToDependency};exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={};exports.default=void 0;var _path=_interopRequireDefault(require("path")),_css=_interopRequireDefault(require("css")),_sharedUtils=require("@hap-toolkit/shared-utils"),_validator=require("./validator"),_compress=require("./compress"),_process=require("./process");Object.keys(_process).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_process[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _process[e]}}))}));var _utils=require("../utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function parse(e){let t;const s={},r=[];let o=[],a=e.code||"";const l=e.filePath,i=e.cardEntry,n=_path.default.dirname(l),c=[];a=(0,_process.processImport)(a,n,r,c);const u=_css.default.parse(a,{silent:!0});return u.stylesheet.parsingErrors&&u.stylesheet.parsingErrors.length&&(t=u.stylesheet.parsingErrors,t.forEach((function(e){r.push({line:e.line,column:e.column,reason:e.toString()})}))),u&&"stylesheet"===u.type&&u.stylesheet&&u.stylesheet.rules&&u.stylesheet.rules.length&&u.stylesheet.rules.forEach((function(e){const t=e.type,a={};if("rule"===t&&e.declarations&&e.declarations.length&&(0,_process.processSingleClass)(e,s,a,r,l,o),"media"===t)s["@MEDIA"]||(s["@MEDIA"]=[]),(0,_process.processMediaQueryCss)(e,s["@MEDIA"],r,l,"",o);else if("font-face"===t){if(e.declarations&&e.declarations.length){const t={};e.declarations.forEach((function(e){if("declaration"!==e.type)return;const s=(0,_utils.hyphenedToCamelCase)(e.property),a=e.value;if("fontFamily"===s)t.fontFamily=a.replace(/['"]+/g,"");else if("src"===s){const s=(0,_validator.validate)("fontSrc",a,{filePath:l,cardEntry:i});s.log&&r.push({line:e.position.start.line,column:e.position.start.column,reason:s.log.reason}),t.src=s.value;const n=s.value||[];o=o.concat(n)}})),s["@FONT-FACE"]||(s["@FONT-FACE"]={}),t.fontName=t.fontFamily,t.fontSrc=t.src,s["@FONT-FACE"][t.fontFamily]=t}}else if("keyframes"===t&&e.keyframes&&e.keyframes.length){const t=e.name,a=[];e.keyframes.forEach((function(s){let i;if("keyframe"===s.type&&s.declarations&&s.declarations.length)if(i={},s.declarations.forEach((function(e){if("declaration"!==e.type)return;const t=e.property,s=e.value,a=(0,_utils.hyphenedToCamelCase)(t),n=(0,_validator.validate)(a,s,{filePath:l});n.value.forEach((e=>{(0,_utils.isValidValue)(e.v)&&(i[e.n]=e.v,(0,_process.shouldAddToDependency)(e.n,e.v)&&o.push(e.v))})),n.log&&r.push({line:e.position.start.line,column:e.position.start.column,reason:n.log.reason})})),(0,_utils.isEmptyObject)(i))r.push({line:e.position.start.line,column:e.position.start.column,reason:"ERROR: 动画 `"+t+"` 的关键帧 `"+JSON.stringify(s.values)+"` 没有有效的属性"});else{let e;s.values.forEach((t=>{e="from"===t?0:"to"===t?100:parseFloat(t.replace("%","")),i.time=e,a.push(i)}))}})),a.sort((function(e,t){return e.time-t.time})),s["@KEYFRAMES"]||(s["@KEYFRAMES"]={}),s["@KEYFRAMES"][t]=a}})),_sharedUtils.compileOptionsObject.optimizeCssAttr&&(0,_compress.compressCssAttr)(s),{jsonStyle:s,depList:c,log:r,depFiles:o}}var _default={parse:parse,validateDelaration:_validator.validate,mightReferlocalResource:_validator.mightReferlocalResource,shouldAddToDependency:_process.shouldAddToDependency};exports.default=_default;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var _utils=require("../utils");const colorNames={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},cssPseudoClasses=["disabled","checked","focus","active","visited","autoplay","selected"],cssPseudoElements=["before","after","first-line","first-letter"],cssLengthUnits=["px","%","dp"],cssAngleUnits=["deg"],cssTimeUnits=["ms","s"],logTypes=["NOTE","WARNING","ERROR"],cssUseLocalResource=["mylocation","mylocationIconPath","backgroundImage","starForeground","starSecondary","starBackground","fontSrc"],REGEXP_LENGTH=/^[-+]?[0-9]*\.?[0-9]+(.*)$/,REGEXP_COLOR_LONG=/^#[0-9a-fA-F]{6}$/,REGEXP_COLOR_SHORT=/^#[0-9a-fA-F]{3}$/,REGEXP_COLOR_ALPHA_LONG=/^#[0-9a-fA-F]{8}$/,REGEXP_COLOR_ALPHA_SHORT=/^#[0-9a-fA-F]{4}$/,REGEXP_COLOR_RGB=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/,REGEXP_COLOR_RGBA=/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d*\.?\d+)\s*\)$/,REGEXP_COLOR_HSL=/^hsl\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*\)$/,REGEXP_COLOR_HSLA=/^hsla\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d*\.?\d+)\s*\)$/,REGEXP_ARRAYCOLORSTOP=/(rgba|rgb)\([0-9,.\spx%]+\)\s?[0-9-+pxdp%]*|[#]?\w+\s?[0-9+-\spxdp%]*/gi,REGEXP_ARRAYCOLOR=/(?:.+?\s(?=[#a-zA-Z]))|.+/g,REGEXP_INT=/^[-+]?[0-9]+$/,REGEXP_URL=/^url\(\s*(['"]?)\s*([^'"()]+?)\s*\1\s*\)$/,REGEXP_LOCAL=/^local\(\s*(['"]?)\s*([^'"()]+?)\s*\1\s*\)$/,REGEXP_NAME=/^([a-zA-Z_]+[a-zA-Z0-9]*\s*,\s*)*[a-zA-Z_]+[a-zA-Z0-9]*$/,REGEXP_TIME=/^[-+]?[0-9]*\.?[0-9]+(.*)$/,REGEXP_PROPERTY_NAME=/^[a-zA-Z-]+[a-zA-Z0-9-]*/,REGEXP_TIME_DURATION=/^[0-9]+\.?[0-9]*m?s/,REGEXP_TRANSFORM_ITEM=/^([0-9a-zA-Z]+)\((.*)\)$/,REGEXP_GRADIENT_DIRECTION=/^\s*(to|bottom|right|left|top)|[-+]?[0-9]*\.?[0-9]+(.*)/,REGEXP_ANGLE=/^\s*[-+]?[0-9]*\.?[0-9]+(.*)/,REGEXP_NUMBER=/^[-+]?[0-9]*\.?[0-9]+$/,REGEXP_POSITION=/^(center|left|right|top|bottom)$/,REGEXP_FONT_WEIGHT=/^(normal|bold|lighter|bolder)$/,REGEXP_INT_ABS=/^[1-9]\d*$/,REGEXP_CARET=/^(auto|transparent|currentColor)$/,REGEXP_CUBIC_BEZIER=/cubic-bezier\(\s*(0|1|0.\d+),\s*(\d+|\d+\.\d+),\s*(0|1|0.\d+),\s*(\d+|\d+\.\d+)\s*\)/,REGEXP_STEPS=/steps\(\s*(\d+)\s*(?:,\s*(jump-start|jump-end|jump-none|jump-both|start|end))?\)/,wrapperCached=new Map;function builtInVarsWrapper(e){let t=wrapperCached.get(e);return t||(t=function(){const t=e.apply(null,arguments);return!t.value&&arguments[0].startsWith("theme.")&&(t.value=arguments[0],t.reason=void 0),t},wrapperCached.set(e,t)),t}function toCamelCase(e){return e.replace(/-(\w)/g,(function(e,t){return t.toUpperCase()}))}const timingFunctions=["linear","ease","ease-in","ease-out","ease-in-out","cubic-bezier","step-start","step-end","jump-start","jump-end","jump-none","jump-both","start","end"],validateTimingFunction=function(e){const t=timingFunctions;if(t.indexOf(e)>=0)return{value:e};if(e.startsWith("cubic-bezier")){return e.match(REGEXP_CUBIC_BEZIER)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 须符合 cubic-bezier(<x1>,<y1>,<x2>,<y2>) 格式,详情请查阅文档"}}}if(e.startsWith("steps")){const t=e.match(REGEXP_STEPS);if(!t)return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 须符合 steps(<number>,direction) 格式,详情请查阅文档"}};const a=t[2]||"end";return{value:`steps(${t[1]}, ${a})`}}return{value:null,reason:function(e,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+a+"` 无效 ` (有效枚举值为: `"+t.join("`|`")+"`)"}}},validateTime=function(e){const t=(e=(e||"").toString()).match(REGEXP_TIME);if(t){const a=t[1];if(a){if(cssTimeUnits.indexOf(a.toLowerCase())>=0)return{value:e};return{value:parseFloat(e)+cssTimeUnits[0],reason:function(e){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+a+"`, 目前仅支持 `"+JSON.stringify(cssTimeUnits)+"`"}}}return{value:parseFloat(e)+cssTimeUnits[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 没有指定单位,默认为 `"+cssTimeUnits[0]+"`"}}}return{value:null,reason:function(e,t){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值不正确 `"+t+"` (仅支持数值)"}}},themeColors=["uxCardColorTheme","uxCardColorAccent","uxCardColorPrimary","uxCardColorSecondary","uxCardColorSecondaryVariant","uxCardColorTertiary","uxCardColorQuaternary","uxCardColorContainer","uxCardBackground","uxCardColorHue","uxCardColorHueSecondary","uxIconColorAccent","uxIconColorPrimary","uxIconColorSecondary","uxIconColorBackground"],validator={transition:function(e){const t=e.replace(/;$/,"").split(",").filter(Boolean);let a=[{n:"transitionProperty",v:""},{n:"transitionTimingFunction",v:""},{n:"transitionDuration",v:""},{n:"transitionDelay",v:""}],n=!1;return t.forEach((e=>{e=e.toString().split(" ").filter(Boolean);let t=!0,r=!0;const l={transitionProperty:"all",transitionTimingFunction:"ease",transitionDuration:"0s",transitionDelay:"0s"};e.forEach((e=>timingFunctions.filter((t=>e.startsWith(t))).length?l.transitionTimingFunction=e:e.match(REGEXP_TIME_DURATION)&&t?(t=!1,l.transitionDuration=e):e.match(REGEXP_TIME_DURATION)&&!t?l.transitionDelay=e:e.match(REGEXP_PROPERTY_NAME)&&r?(r=!1,l.transitionProperty=e):void 0)),Object.keys(l).forEach((e=>{switch(e){case"transitionProperty":"none"===l[e].trim()&&(n=!0),a[0].v=(a[0].v+`,${toCamelCase(l[e])}`).trim().replace(/^,/,"");break;case"transitionTimingFunction":a[1].v=(a[1].v+`,${l[e]}`).trim().replace(/^,/,"");break;case"transitionDuration":a[2].v=(a[2].v+`,${l[e]}`).trim().replace(/^,/,"");break;default:a[3].v=(a[3].v+`,${l[e]}`).trim().replace(/^,/,"")}}))})),n?(a=[],{value:a}):{value:a}},transitionProperty:function(e){return{value:toCamelCase(e).trim()||["all"]}},transitionDelay:validateTime,transitionDuration:validateTime,transitionTimingFunction:validateTimingFunction,length:function(e,t,a){const n=(e=(e||"").toString().trim()).match(REGEXP_LENGTH);if(t||(t=cssLengthUnits),n){const r=n[1];if(0!=+e||r){if(r){if(t.indexOf(r.toLowerCase())>=0)return{value:e};return{value:a||parseFloat(e)+t[0],reason:function(e){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+r+"`, 目前仅支持 `"+JSON.stringify(t)+"`"}}}return{value:parseFloat(e)+t[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 没有指定单位,默认为 `"+t[0]+"`"}}}return{value:+e+t[0]}}return{value:null,reason:function(e,t){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 不正确(仅支持数值)"}}},color:function(e){if((e=(e||"").toString().trim()).match(REGEXP_COLOR_LONG)||e.match(REGEXP_COLOR_ALPHA_LONG)||e.match(REGEXP_COLOR_ALPHA_SHORT))return{value:e};if(e.match(REGEXP_COLOR_SHORT))return{value:"#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]};if(colorNames[e])return{value:colorNames[e]};let t,a,n,r,l,o,i,s;return REGEXP_COLOR_RGB.exec(e)&&(t=REGEXP_COLOR_RGB.exec(e),a=parseInt(t[1]),n=parseInt(t[2]),r=parseInt(t[3]),a>=0&&a<=255&&n>=0&&n<=255&&r>=0&&r<=255)?{value:"rgb("+[a,n,r].join(",")+")"}:REGEXP_COLOR_RGBA.exec(e)&&(t=REGEXP_COLOR_RGBA.exec(e),a=parseInt(t[1]),n=parseInt(t[2]),r=parseInt(t[3]),l=parseFloat(t[4]),a>=0&&a<=255&&n>=0&&n<=255&&r>=0&&r<=255&&l>=0&&l<=1)?{value:"rgba("+[a,n,r,l].join(",")+")"}:(t=REGEXP_COLOR_HSL.exec(e)||REGEXP_COLOR_HSLA.exec(e),t&&(o=parseInt(t[1]),i=parseInt(t[2]),s=parseInt(t[3]),l=parseFloat(t[4]),o>=0&&o<=360&&i>=0&&i<=100&&s>=0&&s<=100)?l>=0&&l<=1?{value:`hsla(${o},${i}%,${s}%,${l})`}:{value:`hsl(${o},${i}%,${s}%)`}:"transparent"===e?{value:"rgba(0,0,0,0)"}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的颜色值 `"+t+"` 无效`"}})},number:function(e){const t=(e=(e||"").toString().trim()).match(REGEXP_NUMBER);return t&&!t[1]?{value:parseFloat(e)}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 无效 ` (仅支持数值)"}}},arraynumber:function(e,t){const a=(t=(t||"").toString().trim()).split(/[,\s]+/);if(a&&a.length<=e.length){const t=[];let n;const r=[];let l=0;return a.forEach(((e,a)=>{if(n=validator.number(e),(0,_utils.isValidValue)(n.value)&&t.push(n.value),n.reason){let t=n.reason(a.toString(),e,n.value);const o=t.match(/^([A-Z]+):/);if(o){const e=logTypes.indexOf(o[1]);l<logTypes.indexOf(o[1])&&(l=e),t=t.replace(o[0],"").trim()}r.push(t)}})),{value:l<2?(0,_utils.splitAttr)(e,t):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},integer:function(e){return(e=(e||"").toString()).match(REGEXP_INT)?{value:parseInt(e,10)}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 无效 ` (仅支持整数)"}}},iterationcount:function(e){return(e=(e||"").toString().trim()).match(REGEXP_INT)?{value:parseInt(e,10)}:/^infinite$/.test(e)?{value:-1}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 无效 ` (仅支持整数)"}}},url:function(e,t){if((e=(e||"").toString().trim()).match(/^none$/i))return{value:"none"};const a=REGEXP_URL.exec(e);if(a&&a[2].trim()){let e=a[2];return/^data:/.test(e)||/^http(s)?:/.test(e)||(e=(0,_utils.resolvePath)(e,t.filePath)),{value:e}}return{value:null,reason:function(e,t){return"WARN: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 必须是 none 或者 url(...)"}}},fontSrc:function(e,t){const a=(e=(e||"").toString().trim()).split(",");if(a&&a.length>0){const e=[],n=[];let r=0;return a.forEach((function(a,l){a=a.trim();let o={};if(/^local/.test(a)){const e=REGEXP_LOCAL.exec(a);let t;e&&e[2].trim()&&(t="local://"+e[2]),o={value:t,reason:t?null:function(e,t){return"WARN: @font-face中属性src`"+(0,_utils.camelCaseToHyphened)(e)+"`的值`"+t+"` 存在问题"}}}else o=validator.url(a,t);if((0,_utils.isValidValue)(o.value)&&e.push(o.value),o.reason){let e=o.reason(l.toString(),a,o.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);r<logTypes.indexOf(t[1])&&(r=a),e=e.replace(t[0],"").trim()}n.push(e)}})),{value:r<2?e:null,reason:n.length>0?function(e,t){return logTypes[r]+": @font-face中属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+n.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: @font-face中属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题"}}},fontFamily:function(e){return(e=(e||"").toString().replace(/['"]+/g,""))?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题"}}},position:function(e,t){e=(e||"").toString(),t||(t=cssLengthUnits);const a=e.split(/\s+|,/);if(a&&a.length>1){const e=[];let n;const r=[];let l=0;return a.length>3&&(l=1,r.push("属性数目最多为3个, 忽略多余属性")),a.forEach(((a,o)=>{if(n=validator.length(a,t),(0,_utils.isValidValue)(n.value)&&e.push(n.value),n.reason){let e=n.reason(o.toString(),a,n.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}})),{value:l<2?e.join(" "):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},name:function(e){return(e=(e||"").toString()).match(REGEXP_NAME)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},multipleAttributesValidator:function(e,t){const a=(e=(e||"").toString().trim()).replace(/\)\s+/g,")|").split("|");if(a&&a.length){const e={};let n;const r=[];let l=0;return a.forEach(((a,o)=>{const i=a.match(REGEXP_TRANSFORM_ITEM);if(i){let a=i[2];const o=i[1],s=t[o];if("function"==typeof s){if("translate"!==o||/[,\s]+/.test(a.trim())||(a+=",0px"),n=s(a),n.value instanceof Array?n.value.forEach((t=>{(0,_utils.isValidValue)(t.v)&&(e[t.n]=t.v)})):(0,_utils.isValidValue)(n.value)&&(e[o]=n.value),n.reason){let e=n.reason(o,a,n.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}}else r.push("属性 `"+o+"` 不支持")}else l=2,r.push("属性 `"+o+"` 的值格式不正确")})),{value:(0,_utils.isEmptyObject)(e)?null:JSON.stringify(e),reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},background:function(e){let t=(e=(e||"").toString().trim()).split();if(e.indexOf("-gradient")>0){const a=/(repeating-linear|linear)[\s\S]*?(?=\s*(repeating|linear)|$)/g;t=e.match(a)}const a={values:[]};if(t&&t.length){const e=[];let n=0;return t.forEach((t=>{let r,l;if(t.indexOf("-gradient")>=0&&(r=t.indexOf("repeating")>=0?"repeatingLinearGradient":"linearGradient",l=backgroundValidatorMap[r]),"function"==typeof l){const o=l(t);if((0,_utils.isValidValue)(o.value)){const e=JSON.parse(o.value);a.values.push(e)}if(o.reason){let a=o.reason(r,t,o.value);const l=a.match(/^([A-Z]+):/);if(l){const e=logTypes.indexOf(l[1]);n<logTypes.indexOf(l[1])&&(n=e),a=a.replace(l[0],"").trim()}e.push(a)}}else n=2,e.push("背景类型 `"+t+"`暂不支持")})),{value:n<2?JSON.stringify(a):null,reason:e.length>0?function(t,a){return logTypes[n]+": 属性`"+(0,_utils.camelCaseToHyphened)(t)+"` 的值 `"+a+"` 存在问题: \n "+e.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},backgroundSize:function(e,t){let a,n;e=(e||"").toString().trim(),t||(t=cssLengthUnits);let r=0;const l=e.split(/\s+/);if(1===l.length){if(["cover","contain","auto"].indexOf(l[0])>-1)return{value:l[0]};if(n=validator.length(l[0],t),n.reason){a=n.reason("0",l[0],n.value);const e=a.match(/^([A-Z]+):/);e&&(r=logTypes.indexOf(e[1]),a=a.replace(e[0],"").trim())}return{value:(0,_utils.isValidValue)(n.value)?n.value:null,reason:a?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+a}:null}}if(2===l.length){const e=[],o=[];return l.forEach(((l,i)=>{if("auto"!==l){if(n=validator.length(l,t),(0,_utils.isValidValue)(n.value)&&e.push(n.value),n.reason){a=n.reason(i.toString(),l,n.value);const e=a.match(/^([A-Z]+):/);if(e){const t=logTypes.indexOf(e[1]);r<t&&(r=t),a=a.replace(e[0],"").trim()}o.push(a)}}else e.push(l)})),{value:r<2?e.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},backgroundPosition:function(e,t){let a,n;e=(e||"").toString().trim(),t||(t=cssLengthUnits);let r=0,l=[];const o=[],i=e.split(/\s+/);if(1===i.length){if(REGEXP_POSITION.test(i[0]))return{value:i[0]};if(n=validator.length(i[0],t),n.reason){a=n.reason("0",i[0],n.value);const e=a.match(/^([A-Z]+):/);e&&(r=logTypes.indexOf(e[1]),a=a.replace(e[0],"").trim())}return{value:(0,_utils.isValidValue)(n.value)?n.value:null,reason:a?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+a}:null}}if(2===i.length){const e=i[0],s=i[1];if("center"===e){if(REGEXP_POSITION.test(s))l=i;else if(n=validator.length(s,t),(0,_utils.isValidValue)(n.value)&&(l=i),n.reason){a=n.reason("1",s,n.value);const e=a.match(/^([A-Z]+):/);if(e){const t=logTypes.indexOf(e[1]);r<t&&(r=t),a=a.replace(e[0],"").trim()}o.push(a)}}else if(["top","bottom"].indexOf(e)>-1&&["left","right","center"].indexOf(s)>-1)l=i;else if(n=validator.length(e,t),["left","right"].indexOf(e)>-1||(0,_utils.isValidValue)(n.value))if(["top","bottom","center"].indexOf(s)>-1)l=i;else if(n=validator.length(s,t),(0,_utils.isValidValue)(n.value)&&(l=i),n.reason){a=n.reason("1",s,n.value);const e=a.match(/^([A-Z]+):/);if(e){const t=logTypes.indexOf(e[1]);r<t&&(r=t),a=a.replace(e[0],"").trim()}o.push(a)}return l.length||(r=2,o.length||o.push("属性值格式不正确")),{value:r<2?l.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}if(3===i.length){const e=i[0],a=i[1],n=i[2];return REGEXP_POSITION.test(e)&&(REGEXP_POSITION.test(a)&&(0,_utils.isValidValue)(validator.length(n,t).value)||REGEXP_POSITION.test(n)&&(0,_utils.isValidValue)(validator.length(a,t).value))&&(l=i),l.length||(r=2,o.length||o.push("属性值格式不正确")),{value:r<2?l.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}if(4===i.length){const e=i[0],a=i[1],n=i[2],s=i[3];return REGEXP_POSITION.test(e)&&REGEXP_POSITION.test(n)&&(0,_utils.isValidValue)(validator.length(a,t).value)&&(0,_utils.isValidValue)(validator.length(s,t).value)&&(l=i),l.length||(r=2,o.length||o.push("属性值格式不正确")),{value:r<2?l.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},fontWeight:function(e,t){return e=(e||"").toString().trim(),REGEXP_FONT_WEIGHT.test(e)||REGEXP_INT_ABS.test(e)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确,仅支持normal,bold,lighter,bolder或正整数"}}},linearGradient:function(e){e=(e||"").toString().trim();const t={type:"",directions:["to","bottom"],values:[]};let a={},n={};const r=[];let l=0;const o=e.match(/^([0-9a-zA-Z-]+)\(([\s\S]*)\)/);if(o){const i=(0,_utils.hyphenedToCamelCase)(o[1]);t.type=i;const s=o[2].split(/,/);if(REGEXP_GRADIENT_DIRECTION.test(s[0])){let e;if(/(to|bottom|right|left|top)/.test(s[0])?e=backgroundValidatorMap.linearGradientDirection:s[0].match(REGEXP_ANGLE)&&(e=backgroundValidatorMap.linearGradientAngle),"function"==typeof e&&(n=e(s[0]),s.splice(0,1),(0,_utils.isValidValue)(n.value)&&(t.directions=n.value.split(/\s+/)),n.reason)){let e=n.reason(i,s[0],n.value);if(e){const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}}}if(s.length>0){if(a=(0,backgroundValidatorMap.linearGradientColor)(s),(0,_utils.isValidValue)(a.value)&&(t.values=JSON.parse(a.value)),a.reason){let e=a.reason(i,s,a.value);if(e){const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}}}else l=2,r.push("参数 `"+e+"`缺少过渡颜色");return{value:l<2?JSON.stringify(t):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},time:validateTime,angle:function(e){const t=(e=(e||"").toString().trim()).match(REGEXP_ANGLE);if(t){const a=t[1];if(a){if(cssAngleUnits.indexOf(a.toLowerCase())>=0)return{value:e};{let t=parseFloat(e);return"rad"===a.toLowerCase()?(t=Math.round(180*t/Math.PI),{value:t+cssAngleUnits[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+a+"`, 自动转换为 `"+cssAngleUnits[0]+"`"}}):{value:t+cssAngleUnits[0],reason:function(e){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+a+"`, 目前仅支持 `"+JSON.stringify(cssAngleUnits)+"`"}}}}return{value:parseFloat(e)+cssAngleUnits[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 没有指定单位,默认为 `"+cssAngleUnits[0]+"`"}}}return{value:null,reason:function(e,t){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值不正确 `"+t+"` (仅支持数值)"}}},enum:function(e,t){const a=e.indexOf(t);return a>0?{value:t}:0===a?{value:t,reason:!1}:{value:null,reason:function(t,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(t)+"` 的值 `"+a+"` 无效 ` (有效枚举值为: `"+e.join("`|`")+"`)"}}},animationTimingFunction:validateTimingFunction,gradientdirection:function(e){const t=(e=(e||"").toString().trim()).split(/\s+/);let a=[];const n=[];return t.forEach((e=>{"to"===e?n.push(0):"top"===e|"bottom"===e?n.push(1):"left"===e|"right"===e?n.push(2):a.push(e)})),0===a.length&&n.length>1&&n.length<4&&0===n[0]&&0!==n[1]?n[2]&&n[1]+n[2]!==3&&(a=t):a=t,{value:a.length>0?null:t.join(" "),reason:a.length>0?function(e){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的属性值 `"+a.join(" ")+"` 格式不正确 `)"}:null}},multipleLength:function(e,t){return"auto"===(e=(e||"").toString().trim())?{value:e}:/^[-+]?[0-9]+.*/.test(e)?validator.length(e,t):{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 的值不正确"}}},arraylength:function(e,t,a){const n=(t=(t||"").toString().trim()).split(/[,\s]+/);if(n&&n.length<=e.length){const r=[];let l;const o=[];let i=0;const s=/^margin.*/.test(e[0]);return n.forEach(((e,t)=>{if(l=s?validator.multipleLength(e,a):validator.length(e,a),(0,_utils.isValidValue)(l.value)&&r.push(l.value),l.reason){let a=l.reason(t.toString(),e,l.value);const n=a.match(/^([A-Z]+):/);if(n){const e=logTypes.indexOf(n[1]);i<logTypes.indexOf(n[1])&&(i=e),a=a.replace(n[0],"").trim()}o.push(a)}})),{value:i<2?(0,_utils.splitAttr)(e,r):null,reason:o.length>0?function(e){return logTypes[i]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},arraycolor:function(e,t){const a=(t=(t||"").toString()).match(REGEXP_ARRAYCOLOR);if(a&&a.length<=4){const t=[];let n;const r=[];let l=0;return a.forEach(((e,a)=>{if(n=validator.color(e),(0,_utils.isValidValue)(n.value)&&t.push(n.value),n.reason){let t=n.reason(a.toString(),e,n.value);const o=t.match(/^([A-Z]+):/);if(o){const e=logTypes.indexOf(o[1]);l<logTypes.indexOf(o[1])&&(l=e),t=t.replace(o[0],"").trim()}r.push(t)}})),{value:l<2?(0,_utils.splitAttr)(e,t):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},arraycolorstop:function(e){const t=(e=(e||"").toString().trim()).match(REGEXP_ARRAYCOLORSTOP);if(t&&t.length>1){const a=[],n=[];let r=0;return t.forEach(((t,l)=>{const o=t.match(/[\s]+[-+0-9]+(px|%|dp)?$/),i=[];if(o){const e=validator.length(o[0]),a=t.indexOf(o[0]);if(t=t.substring(0,a),(0,_utils.isValidValue)(e.value)&&i.push(e.value),e.reason){let t=e.reason(l.toString(),o[0],e.value);const a=t.match(/^([A-Z]+):/);if(a){const e=logTypes.indexOf(a[1]);r<logTypes.indexOf(a[1])&&(r=e),t=t.replace(a[0],"").trim()}n.push(t)}}if(t){const e=validator.color(t);if((0,_utils.isValidValue)(e.value)&&i.unshift(e.value),a.push(i.join(" ")),e.reason){let a=e.reason(l.toString(),t,e.value);const o=a.match(/^([A-Z]+):/);if(o){const e=logTypes.indexOf(o[1]);r<logTypes.indexOf(o[1])&&(r=e),a=a.replace(o[0],"").trim()}n.push(a)}}else r=2,n.push("参数 `"+e+"` 格式不正确")})),{value:r<2?JSON.stringify(a):null,reason:n.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+n.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确,至少指定两种颜色"}}},mylocation:function(e,t){const a=(e=(e||"").toString()).split(/\s+/);if(a&&a.length<=3){const e=[];let n;const r=[];let l=0;const o=[];let i=-1;return a.forEach(((a,i)=>{if((0,_utils.isValidValue)(validator.color(a).value)?(o.push(i),0===i?(n=validatorMap.mylocationFillColor(a),e.push({n:"mylocationFillColor",v:n.value})):1===i&&(n=validatorMap.mylocationStrokeColor(a),e.push({n:"mylocationStrokeColor",v:n.value}))):(0,_utils.isValidValue)(validator.url(a,t).value)?(o.push(2),n=validatorMap.mylocationIconPath(a,t),e.push({n:"mylocationIconPath",v:n.value})):(n={},l=2,r.push("属性`"+i+"` 的值 `"+a+"` 存在问题: \n 不满足fillColor、strokeColor和iconPath的检验标准")),n&&n.reason){let e=n.reason(i.toString(),a,n.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}})),o.forEach((e=>{e>i?i=e:(l=2,r.push("必须按顺序设置属性fillColor、strokeColor和iconPath"))})),{value:l<2?e:null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},border:function(e,t,a){e=(e=(e||"").toString()).replace(/\s*,\s*/g,","),a=(a||"").toString();const n=e.split(/\s+/);if(n&&n.length<=3){let e,r=[];const l=[];let o=0;const i=[];let s=-1;return n.forEach(((n,s)=>{if((0,_utils.isValidValue)(validator.length(n,t).value)){i.push(0);const t="border"+a+"Width";e=validatorMap[t](n),e.value instanceof Array?r=r.concat(e.value):a&&(0,_utils.isValidValue)(e.value)&&r.push({n:t,v:e.value})}else if((0,_utils.isValidValue)(validatorMap.borderStyle(n).value))i.push(1),e=validatorMap.borderStyle(n),r.push({n:"border"+a+"Style",v:n});else if((0,_utils.isValidValue)(validator.color(n).value)){i.push(2);const t="border"+a+"Color";e=validatorMap[t](n),e.value instanceof Array?r=r.concat(e.value):a&&(0,_utils.isValidValue)(e.value)&&r.push({n:t,v:e.value})}else e={},o=2,l.push("属性`"+s+"` 的值 `"+n+"` 存在问题: \n 不满足width、style和color的检验标准");if(e&&e.reason){let t=e.reason(s.toString(),n,e.value);const a=t.match(/^([A-Z]+):/);if(a){const e=logTypes.indexOf(a[1]);o<logTypes.indexOf(a[1])&&(o=e),t=t.replace(a[0],"").trim()}l.push(t)}})),i.forEach((e=>{e>s?s=e:(o=2,l.push("必须按顺序设置属性width style color"))})),{value:o<2?r:null,reason:l.length>0?function(e,t){return logTypes[o]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+l.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},borderLeft:function(e,t){return validator.border(e,t,"Left")},borderRight:function(e,t){return validator.border(e,t,"Right")},borderTop:function(e,t){return validator.border(e,t,"Top")},borderBottom:function(e,t){return validator.border(e,t,"Bottom")},display:function(e){e=(e||"").toString();const t=["flex","none"],a=t.indexOf(e);return a>0?{value:e}:"block"===e?{value:"flex",reason:function(e,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+a+"` 需修改为flex ` (有效枚举值为: `"+t.join("`|`")+"`)"}}:0===a?{value:e,reason:!1}:{value:null,reason:function(e,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+a+"` 无效 ` (有效枚举值为: `"+t.join("`|`")+"`)"}}},caretColor:function(e,t){return e=(e||"").toString().trim(),REGEXP_CARET.test(e)||(0,_utils.isValidValue)(validator.color(e).value)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确,仅支持auto,currentColor,transparent或<color>"}}}};function addBuiltInVarsWrapper(){for(const e in validator){const t=validator[e];"function"==typeof t&&-1===["arraynumber","arraylength","arraycolor","arraycolorstop","enum"].indexOf(e)&&(validator[e]=builtInVarsWrapper(t))}}function _lengthValidator(e,t,a){return validator.length(a,e,t)}function makeLengthValidator(e,t){return _lengthValidator.bind(null,e,t)}function _multipleAttributesValidator(e,t){return validator.multipleAttributesValidator(t,e)}function makeMultipleAttributesValidator(e){return _multipleAttributesValidator.bind(null,e)}function makeEnumValidator(e){return builtInVarsWrapper(validator.enum.bind(null,e))}function makeAbbrAttrValidator(e,t){return builtInVarsWrapper(validator[e].bind(null,t))}addBuiltInVarsWrapper();const backgroundValidatorMap={linearGradient:validator.linearGradient,repeatingLinearGradient:validator.linearGradient,linearGradientColor:validator.arraycolorstop,linearGradientAngle:validator.angle,linearGradientDirection:validator.gradientdirection},transformValidatorMap={translate:makeAbbrAttrValidator("arraylength",["translateX","translateY","translateZ"]),translateX:validator.length,translateY:validator.length,translateZ:validator.length,scale:makeAbbrAttrValidator("arraynumber",["scaleX","scaleY","scaleZ"]),scaleX:validator.number,scaleY:validator.number,scaleZ:validator.number,rotate:validator.angle,rotateX:validator.angle,rotateY:validator.angle,rotateZ:validator.angle},filterValidatorMap={blur:makeLengthValidator(["px","dp"],"0px")},validatorMap={transition:validator.transition,transitionProperty:validator.transitionProperty,transitionDelay:validator.transitionDelay,transitionDuration:validator.transitionDuration,transitionTimingFunction:validateTimingFunction,width:validator.length,height:validator.length,minHeight:validator.length,minWidth:validator.length,maxHeight:validator.length,maxWidth:validator.length,padding:makeAbbrAttrValidator("arraylength",["paddingTop","paddingRight","paddingBottom","paddingLeft"]),paddingLeft:validator.length,paddingRight:validator.length,paddingTop:validator.length,paddingBottom:validator.length,margin:makeAbbrAttrValidator("arraylength",["marginTop","marginRight","marginBottom","marginLeft"]),marginLeft:validator.multipleLength,marginRight:validator.multipleLength,marginTop:validator.multipleLength,marginBottom:validator.multipleLength,border:validator.border,borderLeft:validator.borderLeft,borderRight:validator.borderRight,borderTop:validator.borderTop,borderBottom:validator.borderBottom,borderWidth:makeAbbrAttrValidator("arraylength",["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"]),borderLeftWidth:validator.length,borderTopWidth:validator.length,borderRightWidth:validator.length,borderBottomWidth:validator.length,borderColor:makeAbbrAttrValidator("arraycolor",["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),borderLeftColor:validator.color,borderTopColor:validator.color,borderRightColor:validator.color,borderBottomColor:validator.color,borderStyle:makeEnumValidator(["solid","dotted","dashed"]),borderRadius:validator.length,borderBottomLeftRadius:validator.length,borderBottomRightRadius:validator.length,borderTopLeftRadius:validator.length,borderTopRightRadius:validator.length,indicatorSize:validator.length,indicatorTop:validator.length,indicatorRight:validator.length,indicatorBottom:validator.length,indicatorLeft:validator.length,filter:makeMultipleAttributesValidator(filterValidatorMap),overflow:makeEnumValidator(["hidden","visible"]),flex:validator.number,flexGrow:validator.number,flexShrink:validator.number,flexBasis:validator.length,flexDirection:makeEnumValidator(["row","column","row-reverse","column-reverse"]),flexWrap:makeEnumValidator(["nowrap","wrap","wrap-reverse"]),justifyContent:makeEnumValidator(["flex-start","flex-end","center","space-between","space-around"]),alignItems:makeEnumValidator(["stretch","flex-start","flex-end","center"]),alignContent:makeEnumValidator(["stretch","flex-start","flex-end","center","space-between","space-around"]),alignSelf:makeEnumValidator(["auto","flex-start","flex-end","center","baseline","stretch"]),position:makeEnumValidator(["static","fixed","relative","absolute"]),top:validator.length,bottom:validator.length,left:validator.length,right:validator.length,zIndex:validator.integer,opacity:validator.number,background:validator.background,backgroundColor:validator.color,backgroundImage:validator.url,backgroundSize:validator.backgroundSize,backgroundRepeat:makeEnumValidator(["no-repeat","repeat","repeat-x","repeat-y"]),backgroundPosition:validator.backgroundPosition,display:validator.display,visibility:makeEnumValidator(["visible","hidden"]),objectFit:makeEnumValidator(["fill","contain","cover","none","scale-down"]),altObjectFit:makeEnumValidator(["fill","contain","cover","none","scale-down"]),lines:validator.integer,color:validator.color,fontSize:validator.length,fontStyle:makeEnumValidator(["normal","italic"]),fontWeight:validator.fontWeight,textDecoration:makeEnumValidator(["none","underline","line-through"]),textAlign:makeEnumValidator(["left","center","right","justify"]),lineHeight:validator.length,textOverflow:makeEnumValidator(["clip","ellipsis"]),textIndent:makeLengthValidator(["px","dp","cm","%","em"]),transform:makeMultipleAttributesValidator(transformValidatorMap),transformOrigin:validator.position,animationName:validator.name,animationDuration:validator.time,animationTimingFunction:validateTimingFunction,pageAnimationName:validator.name,pageTransformOrigin:validator.position,animationDelay:validator.time,animationIterationCount:validator.iterationcount,animationFillMode:makeEnumValidator(["none","forwards"]),animationDirection:makeEnumValidator(["normal","reverse","alternate","alternate-reverse"]),placeholderColor:validator.color,selectedColor:validator.color,textColor:validator.color,timeColor:validator.color,textHighlightColor:validator.color,strokeWidth:validator.length,progressColor:validator.color,indicatorColor:validator.color,indicatorSelectedColor:validator.color,slideWidth:validator.length,slideMargin:validator.length,resizeMode:makeEnumValidator(["cover","contain","stretch","center"]),columns:validator.number,columnSpan:validator.number,maskColor:validator.color,blockColor:validator.color,mylocation:validator.mylocation,mylocationFillColor:validator.color,mylocationStrokeColor:validator.color,mylocationIconPath:validator.url,caretColor:validator.caretColor,thumbColor:validator.color,trackColor:validator.color,layerColor:validator.color,layoutType:makeEnumValidator(["grid","stagger"]),starBackground:validator.url,starForeground:validator.url,starSecondary:validator.url,fontSrc:validator.fontSrc,fontFamily:validator.fontFamily,themeColor:makeEnumValidator(themeColors),themeBackgroundColor:makeEnumValidator(themeColors),themeLayerColor:makeEnumValidator(themeColors),themeThumbColor:makeEnumValidator(themeColors),themeTrackColor:makeEnumValidator(themeColors),themeSelectColor:makeEnumValidator(themeColors),themeBlockColor:makeEnumValidator(themeColors)};function validate(e,t,a){let n,r;const l=validatorMap[e];return"function"==typeof l?(n="function"!=typeof t&&t.indexOf("function")<0?mightReferlocalResource(e)?l(t,a):l(t):{value:t},n.reason&&(r={reason:n.reason(e,t,n.value)})):(n={value:t},r={reason:"WARN: 样式名`"+(0,_utils.camelCaseToHyphened)(e)+"`不支持"}),{value:n.value instanceof Array?n.value:[{n:e,v:n.value}],log:r}}function mightReferlocalResource(e){return cssUseLocalResource.indexOf(e)>-1}function validatePseudoClass(e){return e=e.replace(/^(:)/,""),cssPseudoClasses.indexOf(e.toLowerCase())>=0}function validatePseudoElement(e){return e=e.replace(/^(:)/,""),cssPseudoElements.indexOf(e.toLowerCase())>=0}module.exports={colorNames:colorNames,validatorMap:validatorMap,validator:validator,validate:validate,validatePseudoClass:validatePseudoClass,validatePseudoElement:validatePseudoElement,enumValidatorFactory:makeEnumValidator,mightReferlocalResource:mightReferlocalResource};
1
+ "use strict";var _utils=require("../utils");const colorNames={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},cssPseudoClasses=["disabled","checked","focus","active","visited","autoplay","selected"],cssPseudoElements=["before","after","first-line","first-letter"],cssLengthUnits=["px","%","dp"],cssAngleUnits=["deg"],cssTimeUnits=["ms","s"],logTypes=["NOTE","WARNING","ERROR"],cssUseLocalResource=["mylocation","mylocationIconPath","backgroundImage","starForeground","starSecondary","starBackground","fontSrc"],REGEXP_LENGTH=/^[-+]?[0-9]*\.?[0-9]+(.*)$/,REGEXP_COLOR_LONG=/^#[0-9a-fA-F]{6}$/,REGEXP_COLOR_SHORT=/^#[0-9a-fA-F]{3}$/,REGEXP_COLOR_ALPHA_LONG=/^#[0-9a-fA-F]{8}$/,REGEXP_COLOR_ALPHA_SHORT=/^#[0-9a-fA-F]{4}$/,REGEXP_COLOR_RGB=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/,REGEXP_COLOR_RGBA=/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d*\.?\d+)\s*\)$/,REGEXP_COLOR_HSL=/^hsl\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*\)$/,REGEXP_COLOR_HSLA=/^hsla\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d*\.?\d+)\s*\)$/,REGEXP_ARRAYCOLORSTOP=/(rgba|rgb)\([0-9,.\spx%]+\)\s?[0-9-+pxdp%]*|[#]?\w+\s?[0-9+-\spxdp%]*/gi,REGEXP_ARRAYCOLOR=/(?:.+?\s(?=[#a-zA-Z]))|.+/g,REGEXP_INT=/^[-+]?[0-9]+$/,REGEXP_URL=/^url\(\s*(['"]?)\s*([^'"()]+?)\s*\1\s*\)$/,REGEXP_LOCAL=/^local\(\s*(['"]?)\s*([^'"()]+?)\s*\1\s*\)$/,REGEXP_NAME=/^([a-zA-Z_]+[a-zA-Z0-9]*\s*,\s*)*[a-zA-Z_]+[a-zA-Z0-9]*$/,REGEXP_TIME=/^[-+]?[0-9]*\.?[0-9]+(.*)$/,REGEXP_PROPERTY_NAME=/^[a-zA-Z-]+[a-zA-Z0-9-]*/,REGEXP_TIME_DURATION=/^[0-9]+\.?[0-9]*m?s/,REGEXP_TRANSFORM_ITEM=/^([0-9a-zA-Z]+)\((.*)\)$/,REGEXP_GRADIENT_DIRECTION=/^\s*(to|bottom|right|left|top)|[-+]?[0-9]*\.?[0-9]+(.*)/,REGEXP_ANGLE=/^\s*[-+]?[0-9]*\.?[0-9]+(.*)/,REGEXP_NUMBER=/^[-+]?[0-9]*\.?[0-9]+$/,REGEXP_POSITION=/^(center|left|right|top|bottom)$/,REGEXP_FONT_WEIGHT=/^(normal|bold|lighter|bolder)$/,REGEXP_INT_ABS=/^[1-9]\d*$/,REGEXP_CARET=/^(auto|transparent|currentColor)$/,REGEXP_CUBIC_BEZIER=/cubic-bezier\(\s*(0|1|0.\d+),\s*(\d+|\d+\.\d+),\s*(0|1|0.\d+),\s*(\d+|\d+\.\d+)\s*\)/,REGEXP_STEPS=/steps\(\s*(\d+)\s*(?:,\s*(jump-start|jump-end|jump-none|jump-both|start|end))?\)/,wrapperCached=new Map;function builtInVarsWrapper(e){let t=wrapperCached.get(e);return t||(t=function(){const t=e.apply(null,arguments);return!t.value&&arguments[0].startsWith("theme.")&&(t.value=arguments[0],t.reason=void 0),t},wrapperCached.set(e,t)),t}function toCamelCase(e){return e.replace(/-(\w)/g,(function(e,t){return t.toUpperCase()}))}const timingFunctions=["linear","ease","ease-in","ease-out","ease-in-out","cubic-bezier","step-start","step-end","jump-start","jump-end","jump-none","jump-both","start","end"],validateTimingFunction=function(e){const t=timingFunctions;if(t.indexOf(e)>=0)return{value:e};if(e.startsWith("cubic-bezier")){return e.match(REGEXP_CUBIC_BEZIER)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 须符合 cubic-bezier(<x1>,<y1>,<x2>,<y2>) 格式,详情请查阅文档"}}}if(e.startsWith("steps")){const t=e.match(REGEXP_STEPS);if(!t)return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 须符合 steps(<number>,direction) 格式,详情请查阅文档"}};const a=t[2]||"end";return{value:`steps(${t[1]}, ${a})`}}return{value:null,reason:function(e,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+a+"` 无效 ` (有效枚举值为: `"+t.join("`|`")+"`)"}}},validateTime=function(e){const t=(e=(e||"").toString()).match(REGEXP_TIME);if(t){const a=t[1];if(a){if(cssTimeUnits.indexOf(a.toLowerCase())>=0)return{value:e};return{value:parseFloat(e)+cssTimeUnits[0],reason:function(e){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+a+"`, 目前仅支持 `"+JSON.stringify(cssTimeUnits)+"`"}}}return{value:parseFloat(e)+cssTimeUnits[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 没有指定单位,默认为 `"+cssTimeUnits[0]+"`"}}}return{value:null,reason:function(e,t){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值不正确 `"+t+"` (仅支持数值)"}}},themeColors=["uxCardColorTheme","uxCardColorAccent","uxCardColorPrimary","uxCardColorSecondary","uxCardColorSecondaryVariant","uxCardColorTertiary","uxCardColorQuaternary","uxCardColorContainer","uxCardBackground","uxCardColorHue","uxCardColorHueSecondary","uxIconColorAccent","uxIconColorPrimary","uxIconColorSecondary","uxIconColorBackground"],validator={transition:function(e){const t=e.replace(/;$/,"").split(",").filter(Boolean);let a=[{n:"transitionProperty",v:""},{n:"transitionTimingFunction",v:""},{n:"transitionDuration",v:""},{n:"transitionDelay",v:""}],n=!1;return t.forEach((e=>{e=e.toString().split(" ").filter(Boolean);let t=!0,r=!0;const l={transitionProperty:"all",transitionTimingFunction:"ease",transitionDuration:"0s",transitionDelay:"0s"};e.forEach((e=>timingFunctions.filter((t=>e.startsWith(t))).length?l.transitionTimingFunction=e:e.match(REGEXP_TIME_DURATION)&&t?(t=!1,l.transitionDuration=e):e.match(REGEXP_TIME_DURATION)&&!t?l.transitionDelay=e:e.match(REGEXP_PROPERTY_NAME)&&r?(r=!1,l.transitionProperty=e):void 0)),Object.keys(l).forEach((e=>{switch(e){case"transitionProperty":"none"===l[e].trim()&&(n=!0),a[0].v=(a[0].v+`,${toCamelCase(l[e])}`).trim().replace(/^,/,"");break;case"transitionTimingFunction":a[1].v=(a[1].v+`,${l[e]}`).trim().replace(/^,/,"");break;case"transitionDuration":a[2].v=(a[2].v+`,${l[e]}`).trim().replace(/^,/,"");break;default:a[3].v=(a[3].v+`,${l[e]}`).trim().replace(/^,/,"")}}))})),n?(a=[],{value:a}):{value:a}},transitionProperty:function(e){return{value:toCamelCase(e).trim()||["all"]}},transitionDelay:validateTime,transitionDuration:validateTime,transitionTimingFunction:validateTimingFunction,length:function(e,t,a){const n=(e=(e||"").toString().trim()).match(REGEXP_LENGTH);if(t||(t=cssLengthUnits),n){const r=n[1];if(0!=+e||r){if(r){if(t.indexOf(r.toLowerCase())>=0)return{value:e};return{value:a||parseFloat(e)+t[0],reason:function(e){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+r+"`, 目前仅支持 `"+JSON.stringify(t)+"`"}}}return{value:parseFloat(e)+t[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 没有指定单位,默认为 `"+t[0]+"`"}}}return{value:+e+t[0]}}return{value:null,reason:function(e,t){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 不正确(仅支持数值)"}}},color:function(e){if((e=(e||"").toString().trim()).match(REGEXP_COLOR_LONG)||e.match(REGEXP_COLOR_ALPHA_LONG)||e.match(REGEXP_COLOR_ALPHA_SHORT))return{value:e};if(e.match(REGEXP_COLOR_SHORT))return{value:"#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]};if(colorNames[e])return{value:colorNames[e]};let t,a,n,r,l,o,i,s;return REGEXP_COLOR_RGB.exec(e)&&(t=REGEXP_COLOR_RGB.exec(e),a=parseInt(t[1]),n=parseInt(t[2]),r=parseInt(t[3]),a>=0&&a<=255&&n>=0&&n<=255&&r>=0&&r<=255)?{value:"rgb("+[a,n,r].join(",")+")"}:REGEXP_COLOR_RGBA.exec(e)&&(t=REGEXP_COLOR_RGBA.exec(e),a=parseInt(t[1]),n=parseInt(t[2]),r=parseInt(t[3]),l=parseFloat(t[4]),a>=0&&a<=255&&n>=0&&n<=255&&r>=0&&r<=255&&l>=0&&l<=1)?{value:"rgba("+[a,n,r,l].join(",")+")"}:(t=REGEXP_COLOR_HSL.exec(e)||REGEXP_COLOR_HSLA.exec(e),t&&(o=parseInt(t[1]),i=parseInt(t[2]),s=parseInt(t[3]),l=parseFloat(t[4]),o>=0&&o<=360&&i>=0&&i<=100&&s>=0&&s<=100)?l>=0&&l<=1?{value:`hsla(${o},${i}%,${s}%,${l})`}:{value:`hsl(${o},${i}%,${s}%)`}:"transparent"===e?{value:"rgba(0,0,0,0)"}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的颜色值 `"+t+"` 无效`"}})},number:function(e){const t=(e=(e||"").toString().trim()).match(REGEXP_NUMBER);return t&&!t[1]?{value:parseFloat(e)}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 无效 ` (仅支持数值)"}}},arraynumber:function(e,t){const a=(t=(t||"").toString().trim()).split(/[,\s]+/);if(a&&a.length<=e.length){const t=[];let n;const r=[];let l=0;return a.forEach(((e,a)=>{if(n=validator.number(e),(0,_utils.isValidValue)(n.value)&&t.push(n.value),n.reason){let t=n.reason(a.toString(),e,n.value);const o=t.match(/^([A-Z]+):/);if(o){const e=logTypes.indexOf(o[1]);l<logTypes.indexOf(o[1])&&(l=e),t=t.replace(o[0],"").trim()}r.push(t)}})),{value:l<2?(0,_utils.splitAttr)(e,t):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},integer:function(e){return(e=(e||"").toString()).match(REGEXP_INT)?{value:parseInt(e,10)}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 无效 ` (仅支持整数)"}}},iterationcount:function(e){return(e=(e||"").toString().trim()).match(REGEXP_INT)?{value:parseInt(e,10)}:/^infinite$/.test(e)?{value:-1}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 无效 ` (仅支持整数)"}}},url:function(e,t){if((e=(e||"").toString().trim()).match(/^none$/i))return{value:"none"};const a=REGEXP_URL.exec(e);if(a&&a[2].trim()){let e=a[2];return/^data:/.test(e)||/^http(s)?:/.test(e)||(e=(0,_utils.resolvePath)(e,t.filePath,t.cardEntry)),{value:e}}return{value:null,reason:function(e,t){return"WARN: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 必须是 none 或者 url(...)"}}},fontSrc:function(e,t){const a=(e=(e||"").toString().trim()).split(",");if(a&&a.length>0){const e=[],n=[];let r=0;return a.forEach((function(a,l){a=a.trim();let o={};if(/^local/.test(a)){const e=REGEXP_LOCAL.exec(a);let t;e&&e[2].trim()&&(t="local://"+e[2]),o={value:t,reason:t?null:function(e,t){return"WARN: @font-face中属性src`"+(0,_utils.camelCaseToHyphened)(e)+"`的值`"+t+"` 存在问题"}}}else o=validator.url(a,t);if((0,_utils.isValidValue)(o.value)&&e.push(o.value),o.reason){let e=o.reason(l.toString(),a,o.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);r<logTypes.indexOf(t[1])&&(r=a),e=e.replace(t[0],"").trim()}n.push(e)}})),{value:r<2?e:null,reason:n.length>0?function(e,t){return logTypes[r]+": @font-face中属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+n.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: @font-face中属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题"}}},fontFamily:function(e){return(e=(e||"").toString().replace(/['"]+/g,""))?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题"}}},position:function(e,t){e=(e||"").toString(),t||(t=cssLengthUnits);const a=e.split(/\s+|,/);if(a&&a.length>1){const e=[];let n;const r=[];let l=0;return a.length>3&&(l=1,r.push("属性数目最多为3个, 忽略多余属性")),a.forEach(((a,o)=>{if(n=validator.length(a,t),(0,_utils.isValidValue)(n.value)&&e.push(n.value),n.reason){let e=n.reason(o.toString(),a,n.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}})),{value:l<2?e.join(" "):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},name:function(e){return(e=(e||"").toString()).match(REGEXP_NAME)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},multipleAttributesValidator:function(e,t){const a=(e=(e||"").toString().trim()).replace(/\)\s+/g,")|").split("|");if(a&&a.length){const e={};let n;const r=[];let l=0;return a.forEach(((a,o)=>{const i=a.match(REGEXP_TRANSFORM_ITEM);if(i){let a=i[2];const o=i[1],s=t[o];if("function"==typeof s){if("translate"!==o||/[,\s]+/.test(a.trim())||(a+=",0px"),n=s(a),n.value instanceof Array?n.value.forEach((t=>{(0,_utils.isValidValue)(t.v)&&(e[t.n]=t.v)})):(0,_utils.isValidValue)(n.value)&&(e[o]=n.value),n.reason){let e=n.reason(o,a,n.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}}else r.push("属性 `"+o+"` 不支持")}else l=2,r.push("属性 `"+o+"` 的值格式不正确")})),{value:(0,_utils.isEmptyObject)(e)?null:JSON.stringify(e),reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},background:function(e){let t=(e=(e||"").toString().trim()).split();if(e.indexOf("-gradient")>0){const a=/(repeating-linear|linear)[\s\S]*?(?=\s*(repeating|linear)|$)/g;t=e.match(a)}const a={values:[]};if(t&&t.length){const e=[];let n=0;return t.forEach((t=>{let r,l;if(t.indexOf("-gradient")>=0&&(r=t.indexOf("repeating")>=0?"repeatingLinearGradient":"linearGradient",l=backgroundValidatorMap[r]),"function"==typeof l){const o=l(t);if((0,_utils.isValidValue)(o.value)){const e=JSON.parse(o.value);a.values.push(e)}if(o.reason){let a=o.reason(r,t,o.value);const l=a.match(/^([A-Z]+):/);if(l){const e=logTypes.indexOf(l[1]);n<logTypes.indexOf(l[1])&&(n=e),a=a.replace(l[0],"").trim()}e.push(a)}}else n=2,e.push("背景类型 `"+t+"`暂不支持")})),{value:n<2?JSON.stringify(a):null,reason:e.length>0?function(t,a){return logTypes[n]+": 属性`"+(0,_utils.camelCaseToHyphened)(t)+"` 的值 `"+a+"` 存在问题: \n "+e.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},backgroundSize:function(e,t){let a,n;e=(e||"").toString().trim(),t||(t=cssLengthUnits);let r=0;const l=e.split(/\s+/);if(1===l.length){if(["cover","contain","auto"].indexOf(l[0])>-1)return{value:l[0]};if(n=validator.length(l[0],t),n.reason){a=n.reason("0",l[0],n.value);const e=a.match(/^([A-Z]+):/);e&&(r=logTypes.indexOf(e[1]),a=a.replace(e[0],"").trim())}return{value:(0,_utils.isValidValue)(n.value)?n.value:null,reason:a?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+a}:null}}if(2===l.length){const e=[],o=[];return l.forEach(((l,i)=>{if("auto"!==l){if(n=validator.length(l,t),(0,_utils.isValidValue)(n.value)&&e.push(n.value),n.reason){a=n.reason(i.toString(),l,n.value);const e=a.match(/^([A-Z]+):/);if(e){const t=logTypes.indexOf(e[1]);r<t&&(r=t),a=a.replace(e[0],"").trim()}o.push(a)}}else e.push(l)})),{value:r<2?e.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},backgroundPosition:function(e,t){let a,n;e=(e||"").toString().trim(),t||(t=cssLengthUnits);let r=0,l=[];const o=[],i=e.split(/\s+/);if(1===i.length){if(REGEXP_POSITION.test(i[0]))return{value:i[0]};if(n=validator.length(i[0],t),n.reason){a=n.reason("0",i[0],n.value);const e=a.match(/^([A-Z]+):/);e&&(r=logTypes.indexOf(e[1]),a=a.replace(e[0],"").trim())}return{value:(0,_utils.isValidValue)(n.value)?n.value:null,reason:a?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+a}:null}}if(2===i.length){const e=i[0],s=i[1];if("center"===e){if(REGEXP_POSITION.test(s))l=i;else if(n=validator.length(s,t),(0,_utils.isValidValue)(n.value)&&(l=i),n.reason){a=n.reason("1",s,n.value);const e=a.match(/^([A-Z]+):/);if(e){const t=logTypes.indexOf(e[1]);r<t&&(r=t),a=a.replace(e[0],"").trim()}o.push(a)}}else if(["top","bottom"].indexOf(e)>-1&&["left","right","center"].indexOf(s)>-1)l=i;else if(n=validator.length(e,t),["left","right"].indexOf(e)>-1||(0,_utils.isValidValue)(n.value))if(["top","bottom","center"].indexOf(s)>-1)l=i;else if(n=validator.length(s,t),(0,_utils.isValidValue)(n.value)&&(l=i),n.reason){a=n.reason("1",s,n.value);const e=a.match(/^([A-Z]+):/);if(e){const t=logTypes.indexOf(e[1]);r<t&&(r=t),a=a.replace(e[0],"").trim()}o.push(a)}return l.length||(r=2,o.length||o.push("属性值格式不正确")),{value:r<2?l.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}if(3===i.length){const e=i[0],a=i[1],n=i[2];return REGEXP_POSITION.test(e)&&(REGEXP_POSITION.test(a)&&(0,_utils.isValidValue)(validator.length(n,t).value)||REGEXP_POSITION.test(n)&&(0,_utils.isValidValue)(validator.length(a,t).value))&&(l=i),l.length||(r=2,o.length||o.push("属性值格式不正确")),{value:r<2?l.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}if(4===i.length){const e=i[0],a=i[1],n=i[2],s=i[3];return REGEXP_POSITION.test(e)&&REGEXP_POSITION.test(n)&&(0,_utils.isValidValue)(validator.length(a,t).value)&&(0,_utils.isValidValue)(validator.length(s,t).value)&&(l=i),l.length||(r=2,o.length||o.push("属性值格式不正确")),{value:r<2?l.join(" "):null,reason:o.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},fontWeight:function(e,t){return e=(e||"").toString().trim(),REGEXP_FONT_WEIGHT.test(e)||REGEXP_INT_ABS.test(e)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确,仅支持normal,bold,lighter,bolder或正整数"}}},linearGradient:function(e){e=(e||"").toString().trim();const t={type:"",directions:["to","bottom"],values:[]};let a={},n={};const r=[];let l=0;const o=e.match(/^([0-9a-zA-Z-]+)\(([\s\S]*)\)/);if(o){const i=(0,_utils.hyphenedToCamelCase)(o[1]);t.type=i;const s=o[2].split(/,/);if(REGEXP_GRADIENT_DIRECTION.test(s[0])){let e;if(/(to|bottom|right|left|top)/.test(s[0])?e=backgroundValidatorMap.linearGradientDirection:s[0].match(REGEXP_ANGLE)&&(e=backgroundValidatorMap.linearGradientAngle),"function"==typeof e&&(n=e(s[0]),s.splice(0,1),(0,_utils.isValidValue)(n.value)&&(t.directions=n.value.split(/\s+/)),n.reason)){let e=n.reason(i,s[0],n.value);if(e){const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}}}if(s.length>0){if(a=(0,backgroundValidatorMap.linearGradientColor)(s),(0,_utils.isValidValue)(a.value)&&(t.values=JSON.parse(a.value)),a.reason){let e=a.reason(i,s,a.value);if(e){const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}}}else l=2,r.push("参数 `"+e+"`缺少过渡颜色");return{value:l<2?JSON.stringify(t):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},time:validateTime,angle:function(e){const t=(e=(e||"").toString().trim()).match(REGEXP_ANGLE);if(t){const a=t[1];if(a){if(cssAngleUnits.indexOf(a.toLowerCase())>=0)return{value:e};{let t=parseFloat(e);return"rad"===a.toLowerCase()?(t=Math.round(180*t/Math.PI),{value:t+cssAngleUnits[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+a+"`, 自动转换为 `"+cssAngleUnits[0]+"`"}}):{value:t+cssAngleUnits[0],reason:function(e){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 不支持单位 `"+a+"`, 目前仅支持 `"+JSON.stringify(cssAngleUnits)+"`"}}}}return{value:parseFloat(e)+cssAngleUnits[0],reason:function(e){return"WARN: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 没有指定单位,默认为 `"+cssAngleUnits[0]+"`"}}}return{value:null,reason:function(e,t){return"ERROR: 属性 `"+(0,_utils.camelCaseToHyphened)(e)+"` 的值不正确 `"+t+"` (仅支持数值)"}}},enum:function(e,t){const a=e.indexOf(t);return a>0?{value:t}:0===a?{value:t,reason:!1}:{value:null,reason:function(t,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(t)+"` 的值 `"+a+"` 无效 ` (有效枚举值为: `"+e.join("`|`")+"`)"}}},animationTimingFunction:validateTimingFunction,gradientdirection:function(e){const t=(e=(e||"").toString().trim()).split(/\s+/);let a=[];const n=[];return t.forEach((e=>{"to"===e?n.push(0):"top"===e|"bottom"===e?n.push(1):"left"===e|"right"===e?n.push(2):a.push(e)})),0===a.length&&n.length>1&&n.length<4&&0===n[0]&&0!==n[1]?n[2]&&n[1]+n[2]!==3&&(a=t):a=t,{value:a.length>0?null:t.join(" "),reason:a.length>0?function(e){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的属性值 `"+a.join(" ")+"` 格式不正确 `)"}:null}},multipleLength:function(e,t){return"auto"===(e=(e||"").toString().trim())?{value:e}:/^[-+]?[0-9]+.*/.test(e)?validator.length(e,t):{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 的值不正确"}}},arraylength:function(e,t,a){const n=(t=(t||"").toString().trim()).split(/[,\s]+/);if(n&&n.length<=e.length){const r=[];let l;const o=[];let i=0;const s=/^margin.*/.test(e[0]);return n.forEach(((e,t)=>{if(l=s?validator.multipleLength(e,a):validator.length(e,a),(0,_utils.isValidValue)(l.value)&&r.push(l.value),l.reason){let a=l.reason(t.toString(),e,l.value);const n=a.match(/^([A-Z]+):/);if(n){const e=logTypes.indexOf(n[1]);i<logTypes.indexOf(n[1])&&(i=e),a=a.replace(n[0],"").trim()}o.push(a)}})),{value:i<2?(0,_utils.splitAttr)(e,r):null,reason:o.length>0?function(e){return logTypes[i]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+o.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},arraycolor:function(e,t){const a=(t=(t||"").toString()).match(REGEXP_ARRAYCOLOR);if(a&&a.length<=4){const t=[];let n;const r=[];let l=0;return a.forEach(((e,a)=>{if(n=validator.color(e),(0,_utils.isValidValue)(n.value)&&t.push(n.value),n.reason){let t=n.reason(a.toString(),e,n.value);const o=t.match(/^([A-Z]+):/);if(o){const e=logTypes.indexOf(o[1]);l<logTypes.indexOf(o[1])&&(l=e),t=t.replace(o[0],"").trim()}r.push(t)}})),{value:l<2?(0,_utils.splitAttr)(e,t):null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},arraycolorstop:function(e){const t=(e=(e||"").toString().trim()).match(REGEXP_ARRAYCOLORSTOP);if(t&&t.length>1){const a=[],n=[];let r=0;return t.forEach(((t,l)=>{const o=t.match(/[\s]+[-+0-9]+(px|%|dp)?$/),i=[];if(o){const e=validator.length(o[0]),a=t.indexOf(o[0]);if(t=t.substring(0,a),(0,_utils.isValidValue)(e.value)&&i.push(e.value),e.reason){let t=e.reason(l.toString(),o[0],e.value);const a=t.match(/^([A-Z]+):/);if(a){const e=logTypes.indexOf(a[1]);r<logTypes.indexOf(a[1])&&(r=e),t=t.replace(a[0],"").trim()}n.push(t)}}if(t){const e=validator.color(t);if((0,_utils.isValidValue)(e.value)&&i.unshift(e.value),a.push(i.join(" ")),e.reason){let a=e.reason(l.toString(),t,e.value);const o=a.match(/^([A-Z]+):/);if(o){const e=logTypes.indexOf(o[1]);r<logTypes.indexOf(o[1])&&(r=e),a=a.replace(o[0],"").trim()}n.push(a)}}else r=2,n.push("参数 `"+e+"` 格式不正确")})),{value:r<2?JSON.stringify(a):null,reason:n.length>0?function(e,t){return logTypes[r]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+n.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确,至少指定两种颜色"}}},mylocation:function(e,t){const a=(e=(e||"").toString()).split(/\s+/);if(a&&a.length<=3){const e=[];let n;const r=[];let l=0;const o=[];let i=-1;return a.forEach(((a,i)=>{if((0,_utils.isValidValue)(validator.color(a).value)?(o.push(i),0===i?(n=validatorMap.mylocationFillColor(a),e.push({n:"mylocationFillColor",v:n.value})):1===i&&(n=validatorMap.mylocationStrokeColor(a),e.push({n:"mylocationStrokeColor",v:n.value}))):(0,_utils.isValidValue)(validator.url(a,t).value)?(o.push(2),n=validatorMap.mylocationIconPath(a,t),e.push({n:"mylocationIconPath",v:n.value})):(n={},l=2,r.push("属性`"+i+"` 的值 `"+a+"` 存在问题: \n 不满足fillColor、strokeColor和iconPath的检验标准")),n&&n.reason){let e=n.reason(i.toString(),a,n.value);const t=e.match(/^([A-Z]+):/);if(t){const a=logTypes.indexOf(t[1]);l<logTypes.indexOf(t[1])&&(l=a),e=e.replace(t[0],"").trim()}r.push(e)}})),o.forEach((e=>{e>i?i=e:(l=2,r.push("必须按顺序设置属性fillColor、strokeColor和iconPath"))})),{value:l<2?e:null,reason:r.length>0?function(e,t){return logTypes[l]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+r.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},border:function(e,t,a){e=(e=(e||"").toString()).replace(/\s*,\s*/g,","),a=(a||"").toString();const n=e.split(/\s+/);if(n&&n.length<=3){let e,r=[];const l=[];let o=0;const i=[];let s=-1;return n.forEach(((n,s)=>{if((0,_utils.isValidValue)(validator.length(n,t).value)){i.push(0);const t="border"+a+"Width";e=validatorMap[t](n),e.value instanceof Array?r=r.concat(e.value):a&&(0,_utils.isValidValue)(e.value)&&r.push({n:t,v:e.value})}else if((0,_utils.isValidValue)(validatorMap.borderStyle(n).value))i.push(1),e=validatorMap.borderStyle(n),r.push({n:"border"+a+"Style",v:n});else if((0,_utils.isValidValue)(validator.color(n).value)){i.push(2);const t="border"+a+"Color";e=validatorMap[t](n),e.value instanceof Array?r=r.concat(e.value):a&&(0,_utils.isValidValue)(e.value)&&r.push({n:t,v:e.value})}else e={},o=2,l.push("属性`"+s+"` 的值 `"+n+"` 存在问题: \n 不满足width、style和color的检验标准");if(e&&e.reason){let t=e.reason(s.toString(),n,e.value);const a=t.match(/^([A-Z]+):/);if(a){const e=logTypes.indexOf(a[1]);o<logTypes.indexOf(a[1])&&(o=e),t=t.replace(a[0],"").trim()}l.push(t)}})),i.forEach((e=>{e>s?s=e:(o=2,l.push("必须按顺序设置属性width style color"))})),{value:o<2?r:null,reason:l.length>0?function(e,t){return logTypes[o]+": 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 存在问题: \n "+l.join("\n ")}:null}}return{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确"}}},borderLeft:function(e,t){return validator.border(e,t,"Left")},borderRight:function(e,t){return validator.border(e,t,"Right")},borderTop:function(e,t){return validator.border(e,t,"Top")},borderBottom:function(e,t){return validator.border(e,t,"Bottom")},display:function(e){e=(e||"").toString();const t=["flex","none"],a=t.indexOf(e);return a>0?{value:e}:"block"===e?{value:"flex",reason:function(e,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+a+"` 需修改为flex ` (有效枚举值为: `"+t.join("`|`")+"`)"}}:0===a?{value:e,reason:!1}:{value:null,reason:function(e,a){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+a+"` 无效 ` (有效枚举值为: `"+t.join("`|`")+"`)"}}},caretColor:function(e,t){return e=(e||"").toString().trim(),REGEXP_CARET.test(e)||(0,_utils.isValidValue)(validator.color(e).value)?{value:e}:{value:null,reason:function(e,t){return"ERROR: 属性`"+(0,_utils.camelCaseToHyphened)(e)+"` 的值 `"+t+"` 格式不正确,仅支持auto,currentColor,transparent或<color>"}}}};function addBuiltInVarsWrapper(){for(const e in validator){const t=validator[e];"function"==typeof t&&-1===["arraynumber","arraylength","arraycolor","arraycolorstop","enum"].indexOf(e)&&(validator[e]=builtInVarsWrapper(t))}}function _lengthValidator(e,t,a){return validator.length(a,e,t)}function makeLengthValidator(e,t){return _lengthValidator.bind(null,e,t)}function _multipleAttributesValidator(e,t){return validator.multipleAttributesValidator(t,e)}function makeMultipleAttributesValidator(e){return _multipleAttributesValidator.bind(null,e)}function makeEnumValidator(e){return builtInVarsWrapper(validator.enum.bind(null,e))}function makeAbbrAttrValidator(e,t){return builtInVarsWrapper(validator[e].bind(null,t))}addBuiltInVarsWrapper();const backgroundValidatorMap={linearGradient:validator.linearGradient,repeatingLinearGradient:validator.linearGradient,linearGradientColor:validator.arraycolorstop,linearGradientAngle:validator.angle,linearGradientDirection:validator.gradientdirection},transformValidatorMap={translate:makeAbbrAttrValidator("arraylength",["translateX","translateY","translateZ"]),translateX:validator.length,translateY:validator.length,translateZ:validator.length,scale:makeAbbrAttrValidator("arraynumber",["scaleX","scaleY","scaleZ"]),scaleX:validator.number,scaleY:validator.number,scaleZ:validator.number,rotate:validator.angle,rotateX:validator.angle,rotateY:validator.angle,rotateZ:validator.angle},filterValidatorMap={blur:makeLengthValidator(["px","dp"],"0px")},validatorMap={transition:validator.transition,transitionProperty:validator.transitionProperty,transitionDelay:validator.transitionDelay,transitionDuration:validator.transitionDuration,transitionTimingFunction:validateTimingFunction,width:validator.length,height:validator.length,minHeight:validator.length,minWidth:validator.length,maxHeight:validator.length,maxWidth:validator.length,padding:makeAbbrAttrValidator("arraylength",["paddingTop","paddingRight","paddingBottom","paddingLeft"]),paddingLeft:validator.length,paddingRight:validator.length,paddingTop:validator.length,paddingBottom:validator.length,margin:makeAbbrAttrValidator("arraylength",["marginTop","marginRight","marginBottom","marginLeft"]),marginLeft:validator.multipleLength,marginRight:validator.multipleLength,marginTop:validator.multipleLength,marginBottom:validator.multipleLength,border:validator.border,borderLeft:validator.borderLeft,borderRight:validator.borderRight,borderTop:validator.borderTop,borderBottom:validator.borderBottom,borderWidth:makeAbbrAttrValidator("arraylength",["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"]),borderLeftWidth:validator.length,borderTopWidth:validator.length,borderRightWidth:validator.length,borderBottomWidth:validator.length,borderColor:makeAbbrAttrValidator("arraycolor",["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),borderLeftColor:validator.color,borderTopColor:validator.color,borderRightColor:validator.color,borderBottomColor:validator.color,borderStyle:makeEnumValidator(["solid","dotted","dashed"]),borderRadius:validator.length,borderBottomLeftRadius:validator.length,borderBottomRightRadius:validator.length,borderTopLeftRadius:validator.length,borderTopRightRadius:validator.length,indicatorSize:validator.length,indicatorTop:validator.length,indicatorRight:validator.length,indicatorBottom:validator.length,indicatorLeft:validator.length,filter:makeMultipleAttributesValidator(filterValidatorMap),overflow:makeEnumValidator(["hidden","visible"]),flex:validator.number,flexGrow:validator.number,flexShrink:validator.number,flexBasis:validator.length,flexDirection:makeEnumValidator(["row","column","row-reverse","column-reverse"]),flexWrap:makeEnumValidator(["nowrap","wrap","wrap-reverse"]),justifyContent:makeEnumValidator(["flex-start","flex-end","center","space-between","space-around"]),alignItems:makeEnumValidator(["stretch","flex-start","flex-end","center"]),alignContent:makeEnumValidator(["stretch","flex-start","flex-end","center","space-between","space-around"]),alignSelf:makeEnumValidator(["auto","flex-start","flex-end","center","baseline","stretch"]),position:makeEnumValidator(["static","fixed","relative","absolute"]),top:validator.length,bottom:validator.length,left:validator.length,right:validator.length,zIndex:validator.integer,opacity:validator.number,background:validator.background,backgroundColor:validator.color,backgroundImage:validator.url,backgroundSize:validator.backgroundSize,backgroundRepeat:makeEnumValidator(["no-repeat","repeat","repeat-x","repeat-y"]),backgroundPosition:validator.backgroundPosition,display:validator.display,visibility:makeEnumValidator(["visible","hidden"]),objectFit:makeEnumValidator(["fill","contain","cover","none","scale-down"]),altObjectFit:makeEnumValidator(["fill","contain","cover","none","scale-down"]),lines:validator.integer,color:validator.color,fontSize:validator.length,fontStyle:makeEnumValidator(["normal","italic"]),fontWeight:validator.fontWeight,textDecoration:makeEnumValidator(["none","underline","line-through"]),textAlign:makeEnumValidator(["left","center","right","justify"]),lineHeight:validator.length,textOverflow:makeEnumValidator(["clip","ellipsis"]),textIndent:makeLengthValidator(["px","dp","cm","%","em"]),transform:makeMultipleAttributesValidator(transformValidatorMap),transformOrigin:validator.position,animationName:validator.name,animationDuration:validator.time,animationTimingFunction:validateTimingFunction,pageAnimationName:validator.name,pageTransformOrigin:validator.position,animationDelay:validator.time,animationIterationCount:validator.iterationcount,animationFillMode:makeEnumValidator(["none","forwards"]),animationDirection:makeEnumValidator(["normal","reverse","alternate","alternate-reverse"]),placeholderColor:validator.color,selectedColor:validator.color,textColor:validator.color,timeColor:validator.color,textHighlightColor:validator.color,strokeWidth:validator.length,progressColor:validator.color,indicatorColor:validator.color,indicatorSelectedColor:validator.color,slideWidth:validator.length,slideMargin:validator.length,resizeMode:makeEnumValidator(["cover","contain","stretch","center"]),columns:validator.number,columnSpan:validator.number,maskColor:validator.color,blockColor:validator.color,mylocation:validator.mylocation,mylocationFillColor:validator.color,mylocationStrokeColor:validator.color,mylocationIconPath:validator.url,caretColor:validator.caretColor,thumbColor:validator.color,trackColor:validator.color,layerColor:validator.color,layoutType:makeEnumValidator(["grid","stagger"]),starBackground:validator.url,starForeground:validator.url,starSecondary:validator.url,fontSrc:validator.fontSrc,fontFamily:validator.fontFamily,themeColor:makeEnumValidator(themeColors),themeBackgroundColor:makeEnumValidator(themeColors),themeLayerColor:makeEnumValidator(themeColors),themeThumbColor:makeEnumValidator(themeColors),themeTrackColor:makeEnumValidator(themeColors),themeSelectColor:makeEnumValidator(themeColors),themeBlockColor:makeEnumValidator(themeColors)};function validate(e,t,a){let n,r;const l=validatorMap[e];return"function"==typeof l?(n="function"!=typeof t&&t.indexOf("function")<0?mightReferlocalResource(e)?l(t,a):l(t):{value:t},n.reason&&(r={reason:n.reason(e,t,n.value)})):(n={value:t},r={reason:"WARN: 样式名`"+(0,_utils.camelCaseToHyphened)(e)+"`不支持"}),{value:n.value instanceof Array?n.value:[{n:e,v:n.value}],log:r}}function mightReferlocalResource(e){return cssUseLocalResource.indexOf(e)>-1}function validatePseudoClass(e){return e=e.replace(/^(:)/,""),cssPseudoClasses.indexOf(e.toLowerCase())>=0}function validatePseudoElement(e){return e=e.replace(/^(:)/,""),cssPseudoElements.indexOf(e.toLowerCase())>=0}module.exports={colorNames:colorNames,validatorMap:validatorMap,validator:validator,validate:validate,validatePseudoClass:validatePseudoClass,validatePseudoElement:validatePseudoElement,enumValidatorFactory:makeEnumValidator,mightReferlocalResource:mightReferlocalResource};
2
2
  //# sourceMappingURL=validator.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _parse=_interopRequireDefault(require("parse5")),_parser=_interopRequireDefault(require("parse5/lib/parser")),_tokenizer=_interopRequireDefault(require("parse5/lib/tokenizer")),_sharedUtils=require("@hap-toolkit/shared-utils"),_validator=_interopRequireDefault(require("./validator")),_compress=require("./compress");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function calcSubTextNodesNum(e,t){let a=0;if(_validator.default.isSupportSpan(e)){const l=_validator.default.getTagChildren(e);t.forEach((function(e){("#text"===e.nodeName&&e.value.trim()||l.indexOf(e.nodeName)>-1)&&++a}))}return a}function traverse(e,t,a,l,o){_validator.default.checkTagName(e,t,o);(e.attrs||[]).forEach((function(r){let i=r.name;const n=i.match(/^:+/);n&&(i=i.slice(n.length));const s=r.value;let c={line:1,column:1};switch(e.__location&&(c={line:e.__location.line,column:e.__location.col}),i){case"id":_validator.default.checkId(s,t),_validator.default.checkAttr(i,s,t,e.tagName,c);break;case"class":_validator.default.checkClass(s,t);break;case"style":_validator.default.checkStyle(s,t,c,o);break;case"if":e._isroot||_validator.default.checkIf(s,t,!1,c,l);break;case"is":_validator.default.checkIs(s,t,c);break;case"else":e._isroot||a&&a.__cond__&&_validator.default.checkElse(a.__cond__,t,c,l);break;case"elif":e._isroot||a&&a.__cond__&&(e.__cond__=_validator.default.checkElif(s,a.__cond__,t,c,l));break;case"for":e._isroot||_validator.default.checkFor(s,t,c);break;case"tree":_validator.default.checkBuild("tree",t);break;default:i.match(/^(on|@)/)?_validator.default.checkEvent(i,s,t):i.match(/^model:/)?_validator.default.checkModel(i,s,t,e,c,o):i.match(/^dir:/)?_validator.default.checkCustomDirective(i,s,t,e):_validator.default.checkAttr(i,s,t,e.tagName,c,o)}}));const r=t.result,i=e.childNodes;if(i&&i.length){let a,l;const n=[],s=calcSubTextNodesNum(r.type,i);i.forEach((function(c,u){u>0&&(l=i[u-1],l.nodeName.match(/^#/)||(a=l,a.__cond__||a.attrs&&a.attrs.forEach((function(e){"if"!==e.name&&"elif"!==e.name||(a.__cond__=e.value)}))));const d={};if(c.nodeName.match(/^#/)){if("#text"===c.nodeName&&c.value.trim()){l&&_validator.default.isSupportedSelfClosing(l.nodeName)||_validator.default.isNotTextContentAtomic(e.tagName)&&t.log.push({line:e.__location.line,column:e.__location.col,reason:`Warn: 组件 ${e.tagName} 不支持文本内容作为子节点`});const a=_validator.default.isSupportSpan(e.tagName)&&s>=2,i=o.importNames&&o.importNames.indexOf(e.tagName)>-1;if((a||i)&&(d.type="span",t.result=d,r.children=r.children||[],r.children.push(d),t.log.push({line:e.__location.line,column:e.__location.col,reason:`WARN: 文本和span标签并行存在,编译时将文本节点:"${c.value}" 用span包裹(关于span嵌套的使用,请参考官方文档"span嵌套")`}),_validator.default.checkAttr("value",c.value,t)),"option"===e.tagName){const e=t.result;return t.result=r,r.attr.hasOwnProperty("value")||_validator.default.checkAttr("value",c.value,t),_validator.default.checkAttr("content",c.value,t),void(t.result=e)}if(_validator.default.isSupportSpan(e.tagName)&&1===s||_validator.default.isTextContentAtomic(e.tagName)){const e=t.result;t.result=r,_validator.default.checkAttr("value",c.value,t),t.result=e}}}else t.result=d,r.children=r.children||[],r.children.push(d),traverse(c,t,a,n,o)})),r.children&&0===r.children.length&&(r.children=void 0)}t.result=r}function initParser(e,t,a){const l=new _parser.default(t),o=l._appendElement,r=l._insertElement;function i(e){if(!e.tagName)return;const t=e.tagName.toLowerCase(),o=e.selfClosing,r=_validator.default.isSupportedSelfClosing(t),i=_validator.default.isEmptyElement(t);if(l.__m.tagName&&!l.__m.selfClosing&&!i){const t=String(e.location.line)+":"+String(e.location.col);(!r||t!==l.__m.pos&&e.type===_tokenizer.default.START_TAG_TOKEN)&&(_sharedUtils.colorconsole.warn(`${l.__m.tagName}标签要闭合,请遵循XML规范 ${a}@${l.__m.pos}`),l.__m={})}r&&(e.type!==_tokenizer.default.START_TAG_TOKEN||o||(l.__m.tagName=t,l.__m.selfClosing=!1,l.__m.pos=String(e.location.line)+":"+String(e.location.col)),e.type===_tokenizer.default.END_TAG_TOKEN&&t===l.__m.tagName&&(l.__m.selfClosing=!0))}function n(e){e.tagName&&"plaintext"===e.tagName.toLowerCase()&&_sharedUtils.colorconsole.error(`${a} : 禁止使用 plaintext 标签@${e.location.line}:${e.location.col}`)}return l._insertElement=function(e){const t=(e.tagName||"").toLowerCase(),l=e.selfClosing,i=_validator.default.isSupportedSelfClosing(t);l&&!i&&_sharedUtils.colorconsole.error(`${t}标签,禁止使用自闭合 ${a}@${e.location.line}:${e.location.col}`),i||l&&t?o.apply(this,arguments):r.apply(this,arguments)},l.__m={},l._runParsingLoop=function(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(i(t),n(t),t.type===_tokenizer.default.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===_tokenizer.default.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}},l.parseFragment(e)}function parse(e,t){const a=initParser(e,{treeAdapter:_parse.default.treeAdapters.default,locationInfo:!0},t.filePath),l={result:{},log:[],depFiles:[],isNewJSCard:!!t.newJSCard,isLite:!!t.lite};if(!a||!a.childNodes)return l.log.push({reason:"ERROR: <template>解析失败",line:1,column:1}),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles};const o=a.childNodes.filter((function(e){return"#"!==e.nodeName.charAt(0)}));if(0===o.length)return l.log.push({reason:"ERROR: 没有合法的根节点",line:1,column:1}),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles};if(o.length>1)return l.log.push({reason:"ERROR: <template>节点里只能有一个根节点",line:1,column:1}),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles};const r=o[0];r._isroot=!0;try{traverse(r,l,null,null,t)}catch(e){if(!e.isExpressionError)throw e;l.log.push({reason:`ERROR: 表达式解析失败 ${e.message}\n\n> ${e.expression}\n\nat ${t.filePath}`})}return _sharedUtils.compileOptionsObject.optimizeTemplateAttr&&(0,_compress.compressTemplateAttr)(l.result),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles}}var _default={parse:parse,validator:_validator.default};exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _parse=_interopRequireDefault(require("parse5")),_parser=_interopRequireDefault(require("parse5/lib/parser")),_tokenizer=_interopRequireDefault(require("parse5/lib/tokenizer")),_sharedUtils=require("@hap-toolkit/shared-utils"),_validator=_interopRequireDefault(require("./validator")),_compress=require("./compress");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function calcSubTextNodesNum(e,t){let a=0;if(_validator.default.isSupportSpan(e)){const l=_validator.default.getTagChildren(e);t.forEach((function(e){("#text"===e.nodeName&&e.value.trim()||l.indexOf(e.nodeName)>-1)&&++a}))}return a}function traverse(e,t,a,l,o){_validator.default.checkTagName(e,t,o);(e.attrs||[]).forEach((function(r){let i=r.name;const n=i.match(/^:+/);n&&(i=i.slice(n.length));const s=r.value;let c={line:1,column:1};switch(e.__location&&(c={line:e.__location.line,column:e.__location.col}),i){case"id":_validator.default.checkId(s,t,o),_validator.default.checkAttr(i,s,t,e.tagName,c,o);break;case"class":_validator.default.checkClass(s,t,o);break;case"style":_validator.default.checkStyle(s,t,c,o);break;case"if":e._isroot||_validator.default.checkIf(s,t,!1,c,l,o);break;case"is":_validator.default.checkIs(s,t,c,o);break;case"else":e._isroot||a&&a.__cond__&&_validator.default.checkElse(a.__cond__,t,c,l,o);break;case"elif":e._isroot||a&&a.__cond__&&(e.__cond__=_validator.default.checkElif(s,a.__cond__,t,c,l,o));break;case"for":e._isroot||_validator.default.checkFor(s,t,c,o);break;case"tree":_validator.default.checkBuild("tree",t);break;default:i.match(/^(on|@)/)?_validator.default.checkEvent(i,s,t,o):i.match(/^model:/)?_validator.default.checkModel(i,s,t,e,c,o):i.match(/^dir:/)?_validator.default.checkCustomDirective(i,s,t,e,o):_validator.default.checkAttr(i,s,t,e.tagName,c,o)}}));const r=t.result,i=e.childNodes;if(i&&i.length){let a,l;const n=[],s=calcSubTextNodesNum(r.type,i);i.forEach((function(c,u){u>0&&(l=i[u-1],l.nodeName.match(/^#/)||(a=l,a.__cond__||a.attrs&&a.attrs.forEach((function(e){"if"!==e.name&&"elif"!==e.name||(a.__cond__=e.value)}))));const d={};if(c.nodeName.match(/^#/)){if("#text"===c.nodeName&&c.value.trim()){l&&_validator.default.isSupportedSelfClosing(l.nodeName)||_validator.default.isNotTextContentAtomic(e.tagName)&&t.log.push({line:e.__location.line,column:e.__location.col,reason:`Warn: 组件 ${e.tagName} 不支持文本内容作为子节点`});const a=_validator.default.isSupportSpan(e.tagName)&&s>=2,i=o.importNames&&o.importNames.indexOf(e.tagName)>-1;if((a||i)&&(d.type="span",t.result=d,r.children=r.children||[],r.children.push(d),t.log.push({line:e.__location.line,column:e.__location.col,reason:`WARN: 文本和span标签并行存在,编译时将文本节点:"${c.value}" 用span包裹(关于span嵌套的使用,请参考官方文档"span嵌套")`}),_validator.default.checkAttr("value",c.value,t,null,null,o)),"option"===e.tagName){const e=t.result;return t.result=r,r.attr.hasOwnProperty("value")||_validator.default.checkAttr("value",c.value,t,null,null,o),_validator.default.checkAttr("content",c.value,t,null,null,o),void(t.result=e)}if(_validator.default.isSupportSpan(e.tagName)&&1===s||_validator.default.isTextContentAtomic(e.tagName)){const e=t.result;t.result=r,_validator.default.checkAttr("value",c.value,t,null,null,o),t.result=e}}}else t.result=d,r.children=r.children||[],r.children.push(d),traverse(c,t,a,n,o)})),r.children&&0===r.children.length&&(r.children=void 0)}t.result=r}function initParser(e,t,a){const l=new _parser.default(t),o=l._appendElement,r=l._insertElement;function i(e){if(!e.tagName)return;const t=e.tagName.toLowerCase(),o=e.selfClosing,r=_validator.default.isSupportedSelfClosing(t),i=_validator.default.isEmptyElement(t);if(l.__m.tagName&&!l.__m.selfClosing&&!i){const t=String(e.location.line)+":"+String(e.location.col);(!r||t!==l.__m.pos&&e.type===_tokenizer.default.START_TAG_TOKEN)&&(_sharedUtils.colorconsole.warn(`${l.__m.tagName}标签要闭合,请遵循XML规范 ${a}@${l.__m.pos}`),l.__m={})}r&&(e.type!==_tokenizer.default.START_TAG_TOKEN||o||(l.__m.tagName=t,l.__m.selfClosing=!1,l.__m.pos=String(e.location.line)+":"+String(e.location.col)),e.type===_tokenizer.default.END_TAG_TOKEN&&t===l.__m.tagName&&(l.__m.selfClosing=!0))}function n(e){e.tagName&&"plaintext"===e.tagName.toLowerCase()&&_sharedUtils.colorconsole.error(`${a} : 禁止使用 plaintext 标签@${e.location.line}:${e.location.col}`)}return l._insertElement=function(e){const t=(e.tagName||"").toLowerCase(),l=e.selfClosing,i=_validator.default.isSupportedSelfClosing(t);l&&!i&&_sharedUtils.colorconsole.error(`${t}标签,禁止使用自闭合 ${a}@${e.location.line}:${e.location.col}`),i||l&&t?o.apply(this,arguments):r.apply(this,arguments)},l.__m={},l._runParsingLoop=function(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(i(t),n(t),t.type===_tokenizer.default.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===_tokenizer.default.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}},l.parseFragment(e)}function parse(e,t){const a=initParser(e,{treeAdapter:_parse.default.treeAdapters.default,locationInfo:!0},t.filePath),l={result:{},log:[],depFiles:[]};if(!a||!a.childNodes)return l.log.push({reason:"ERROR: <template>解析失败",line:1,column:1}),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles};const o=a.childNodes.filter((function(e){return"#"!==e.nodeName.charAt(0)}));if(0===o.length)return l.log.push({reason:"ERROR: 没有合法的根节点",line:1,column:1}),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles};if(o.length>1)return l.log.push({reason:"ERROR: <template>节点里只能有一个根节点",line:1,column:1}),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles};const r=o[0];r._isroot=!0;try{traverse(r,l,null,null,t)}catch(e){if(!e.isExpressionError)throw e;l.log.push({reason:`ERROR: 表达式解析失败 ${e.message}\n\n> ${e.expression}\n\nat ${t.filePath}`})}return _sharedUtils.compileOptionsObject.optimizeTemplateAttr&&(0,_compress.compressTemplateAttr)(l.result),{jsonTemplate:l.result,log:l.log,depFiles:l.depFiles}}var _default={parse:parse,validator:_validator.default};exports.default=_default;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=model;var _sharedUtils=require("@hap-toolkit/shared-utils"),_exp=_interopRequireDefault(require("./exp")),_utils=require("../utils"),_validator=_interopRequireDefault(require("./validator.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function model(e,t,a,n,u,d){const o=e.replace(/^model:/,"");if(!o)return _sharedUtils.colorconsole.warn(`\`${n.tagName}\` 组件model指令绑定的属性不能为空`),!1;if(!(0,_utils.isValidValue)(t))return!1;t=_exp.default.addExprffix(t);const r=a.result.type,l=getBindingAttr(n,"type")||"";let i=!1;"input"===r&&l.match(/^this\.+/)&&(i=!0),i?genDynamicModel(n,o,t,a,l):"select"===r?genSelectModel(t,a):"input"===r&&"checkbox"===l?genCheckboxModel(n,o,t,a):"input"===r&&"radio"===l?genRadioModel(n,o,t,a):"input"===r||"textarea"===r?genDefaultModel(o,t,a):("component"===r||!_validator.default.isReservedTag(r)||d.importNames&&d.importNames.indexOf(r)>-1)&&genComponentModel(n,o,t,a,u,d)}function genCheckboxModel(node,attrName,value,output){const expValue=(0,_exp.default)(value,!1),valueBinding=getBindingAttr(node,"value",!0)||"null",trueValueBinding=getBindingAttr(node,"true-value",!0)||"true",falseValueBinding=getBindingAttr(node,"false-value",!0)||"false",attrCheckedCode=`\n if (Array.isArray(${expValue})) {\n return ${expValue}.indexOf(${valueBinding}) > -1\n } else {\n return ${expValue}${"true"===trueValueBinding?"":`=== ${trueValueBinding}`}\n }`,eventChangeCode=`\n const checked = evt.target.checked;\n if (Array.isArray(${expValue})) {\n const index = ${expValue}.indexOf(${valueBinding})\n if (checked) {\n index < 0 && (${expValue} = ${expValue}.concat([${valueBinding}]))\n } else {\n index > -1 && (${expValue} = ${expValue}.slice(0, index).concat(${expValue}.slice(index + 1)))\n }\n } else {\n ${expValue} = checked ? ${trueValueBinding} : ${falseValueBinding}\n }`,isNewJSCard=output.isNewJSCard;return isNewJSCard?(addAttr(output.result,attrName,`(function() {${attrCheckedCode}})`),addAttr(output.result,attrName+"Raw",value),addHandler(output.result,"change",`function(evt) {${eventChangeCode}}`)):(addAttr(output.result,attrName,eval(`(function() {${attrCheckedCode}})`)),addHandler(output.result,"change",eval(`(function(evt) {${eventChangeCode}})`))),{attr:{checked:attrCheckedCode},events:{change:eventChangeCode}}}function genRadioModel(node,attrName,value,output){const valueBinding=getBindingAttr(node,"value",!0)||"null",attrCheckedCode=`return ${(0,_exp.default)(value,!1)} === ${valueBinding}`,eventChangeCode=`${(0,_exp.default)(value,!1)} = ${valueBinding}`,isNewJSCard=output.isNewJSCard;return isNewJSCard?(addAttr(output.result,attrName,`(function() {${attrCheckedCode}})`),addAttr(output.result,attrName+"Raw",value),addHandler(output.result,"change",`function(evt) {${eventChangeCode}}`)):(addAttr(output.result,attrName,eval(`(function() {${attrCheckedCode}})`)),addHandler(output.result,"change",eval(`(function(evt) {${eventChangeCode}})`))),{attr:{checked:attrCheckedCode},events:{change:eventChangeCode}}}function genSelectModel(value,output){const isNewJSCard=output.isNewJSCard;addHandler(output.result,"change",isNewJSCard?`function(evt) { ${(0,_exp.default)(value,!1)} = evt.newValue}`:eval(`(function(evt) { ${(0,_exp.default)(value,!1)} = evt.newValue})`))}function genDefaultModel(attrName,value,output){const eventChangeCode=`${(0,_exp.default)(value,!1)} = evt.target.value`,isNewJSCard=output.isNewJSCard,isLite=output.isLite;return isNewJSCard?(addAttr(output.result,attrName,(0,_exp.default)(value,!0,isLite,isNewJSCard)),addAttr(output.result,attrName+"Raw",value),addHandler(output.result,"change",`function(evt) {${eventChangeCode}}`)):(addAttr(output.result,attrName,(0,_exp.default)(value)),addHandler(output.result,"change",eval(`(function(evt) {${eventChangeCode}})`))),{events:{change:eventChangeCode}}}function genComponentModel(node,attrName,value,output,locationInfo,options){_validator.default.checkAttr(attrName,value,output,node.tagName,locationInfo,options);const isNewJSCard=output.isNewJSCard;addHandler(output.result,`update:${attrName}`,isNewJSCard?`function(evt) { ${(0,_exp.default)(value,!1)} = evt.detail}`:eval(`(function(evt) { ${(0,_exp.default)(value,!1)} = evt.detail})`))}function genDynamicModel(node,attrName,value,output,expType){const checkboxCode=genCheckboxModel(node,attrName,value,output),radioCode=genRadioModel(node,attrName,value,output),textCode=genDefaultModel(attrName,value,output),isNewJSCard=output.isNewJSCard,isLite=output.isLite;isNewJSCard?(addAttr(output.result,attrName,(0,_exp.default)(value,!0,isLite,isNewJSCard)),addAttr(output.result,attrName+"Raw",value),addAttr(output.result,"checked",`(function() { \n if (${expType} === 'checkbox') {\n ${checkboxCode.attr.checked}\n } else if (${expType} === 'radio') {\n ${radioCode.attr.checked}\n } else {\n return false\n }\n })\n `),addAttr(output.result,"checkedRaw",value),addHandler(output.result,"change",`function(evt) {\n if (${expType} === 'checkbox') {\n ${checkboxCode.events.change}\n } else if (${expType} === 'radio') {\n ${radioCode.events.change}\n } else {\n ${textCode.events.change}\n }\n }`)):(addAttr(output.result,attrName,(0,_exp.default)(value)),addAttr(output.result,"checked",eval(`\n (function() { \n if (${expType} === 'checkbox') {\n ${checkboxCode.attr.checked}\n } else if (${expType} === 'radio') {\n ${radioCode.attr.checked}\n } else {\n return false\n }\n })\n `)),addHandler(output.result,"change",eval(`\n (function(evt) {\n if (${expType} === 'checkbox') {\n ${checkboxCode.events.change}\n } else if (${expType} === 'radio') {\n ${radioCode.events.change}\n } else {\n ${textCode.events.change}\n }\n })\n `)))}function getBindingAttr(e,t,a=!1){const n=e.attrs||[];for(let e=0;e<n.length;e++){let u=n[e].name;const d=u.match(/^:+/);if(d&&(u=u.slice(d.length)),u===t){const t=(0,_exp.default)(n[e].value,!1);return a&&!t.match(/^this\.+/)?`"${t}"`:t}}}function addAttr(e,t,a){(e.attr||(e.attr={}))[t]=a}function addHandler(e,t,a){(e.events||(e.events={}))[t]=a}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=model;var _sharedUtils=require("@hap-toolkit/shared-utils"),_exp=_interopRequireDefault(require("./exp")),_utils=require("../utils"),_validator=_interopRequireDefault(require("./validator.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function model(e,t,n,a,u,d){const o=e.replace(/^model:/,"");if(!o)return _sharedUtils.colorconsole.warn(`\`${a.tagName}\` 组件model指令绑定的属性不能为空`),!1;if(!(0,_utils.isValidValue)(t))return!1;t=_exp.default.addExprffix(t);const l=n.result.type,r=getBindingAttr(a,"type")||"";let i=!1;"input"===l&&r.match(/^this\.+/)&&(i=!0),i?genDynamicModel(a,o,t,n,r,d):"select"===l?genSelectModel(t,n,d):"input"===l&&"checkbox"===r?genCheckboxModel(a,o,t,n,d):"input"===l&&"radio"===r?genRadioModel(a,o,t,n,d):"input"===l||"textarea"===l?genDefaultModel(o,t,n,d):("component"===l||!_validator.default.isReservedTag(l)||d.importNames&&d.importNames.indexOf(l)>-1)&&genComponentModel(a,o,t,n,u,d)}function genCheckboxModel(node,attrName,value,output,options){const expValue=(0,_exp.default)(value,!1),valueBinding=getBindingAttr(node,"value",!0)||"null",trueValueBinding=getBindingAttr(node,"true-value",!0)||"true",falseValueBinding=getBindingAttr(node,"false-value",!0)||"false",attrCheckedCode=`\n if (Array.isArray(${expValue})) {\n return ${expValue}.indexOf(${valueBinding}) > -1\n } else {\n return ${expValue}${"true"===trueValueBinding?"":`=== ${trueValueBinding}`}\n }`,eventChangeCode=`\n const checked = evt.target.checked;\n if (Array.isArray(${expValue})) {\n const index = ${expValue}.indexOf(${valueBinding})\n if (checked) {\n index < 0 && (${expValue} = ${expValue}.concat([${valueBinding}]))\n } else {\n index > -1 && (${expValue} = ${expValue}.slice(0, index).concat(${expValue}.slice(index + 1)))\n }\n } else {\n ${expValue} = checked ? ${trueValueBinding} : ${falseValueBinding}\n }`,isNewJSCard=options.newJSCard;return isNewJSCard?(addAttr(output.result,attrName,`(function() {${attrCheckedCode}})`),addAttr(output.result,attrName+"Raw",value),addHandler(output.result,"change",`function(evt) {${eventChangeCode}}`)):(addAttr(output.result,attrName,eval(`(function() {${attrCheckedCode}})`)),addHandler(output.result,"change",eval(`(function(evt) {${eventChangeCode}})`))),{attr:{checked:attrCheckedCode},events:{change:eventChangeCode}}}function genRadioModel(node,attrName,value,output,options){const valueBinding=getBindingAttr(node,"value",!0)||"null",attrCheckedCode=`return ${(0,_exp.default)(value,!1)} === ${valueBinding}`,eventChangeCode=`${(0,_exp.default)(value,!1)} = ${valueBinding}`,isNewJSCard=options.newJSCard;return isNewJSCard?(addAttr(output.result,attrName,`(function() {${attrCheckedCode}})`),addAttr(output.result,attrName+"Raw",value),addHandler(output.result,"change",`function(evt) {${eventChangeCode}}`)):(addAttr(output.result,attrName,eval(`(function() {${attrCheckedCode}})`)),addHandler(output.result,"change",eval(`(function(evt) {${eventChangeCode}})`))),{attr:{checked:attrCheckedCode},events:{change:eventChangeCode}}}function genSelectModel(value,output,options){const isNewJSCard=options.newJSCard;addHandler(output.result,"change",isNewJSCard?`function(evt) { ${(0,_exp.default)(value,!1)} = evt.newValue}`:eval(`(function(evt) { ${(0,_exp.default)(value,!1)} = evt.newValue})`))}function genDefaultModel(attrName,value,output,options){const eventChangeCode=`${(0,_exp.default)(value,!1)} = evt.target.value`,isNewJSCard=options.newJSCard,isLite=options.lite;return isNewJSCard?(addAttr(output.result,attrName,(0,_exp.default)(value,!0,isLite,isNewJSCard)),addAttr(output.result,attrName+"Raw",value),addHandler(output.result,"change",`function(evt) {${eventChangeCode}}`)):(addAttr(output.result,attrName,(0,_exp.default)(value)),addHandler(output.result,"change",eval(`(function(evt) {${eventChangeCode}})`))),{events:{change:eventChangeCode}}}function genComponentModel(node,attrName,value,output,locationInfo,options){_validator.default.checkAttr(attrName,value,output,node.tagName,locationInfo,options);const isNewJSCard=options.newJSCard;addHandler(output.result,`update:${attrName}`,isNewJSCard?`function(evt) { ${(0,_exp.default)(value,!1)} = evt.detail}`:eval(`(function(evt) { ${(0,_exp.default)(value,!1)} = evt.detail})`))}function genDynamicModel(node,attrName,value,output,expType,options){const checkboxCode=genCheckboxModel(node,attrName,value,output,options),radioCode=genRadioModel(node,attrName,value,output,options),textCode=genDefaultModel(attrName,value,output,options),isNewJSCard=options.newJSCard,isLite=options.lite;isNewJSCard?(addAttr(output.result,attrName,(0,_exp.default)(value,!0,isLite,isNewJSCard)),addAttr(output.result,attrName+"Raw",value),addAttr(output.result,"checked",`(function() { \n if (${expType} === 'checkbox') {\n ${checkboxCode.attr.checked}\n } else if (${expType} === 'radio') {\n ${radioCode.attr.checked}\n } else {\n return false\n }\n })\n `),addAttr(output.result,"checkedRaw",value),addHandler(output.result,"change",`function(evt) {\n if (${expType} === 'checkbox') {\n ${checkboxCode.events.change}\n } else if (${expType} === 'radio') {\n ${radioCode.events.change}\n } else {\n ${textCode.events.change}\n }\n }`)):(addAttr(output.result,attrName,(0,_exp.default)(value)),addAttr(output.result,"checked",eval(`\n (function() { \n if (${expType} === 'checkbox') {\n ${checkboxCode.attr.checked}\n } else if (${expType} === 'radio') {\n ${radioCode.attr.checked}\n } else {\n return false\n }\n })\n `)),addHandler(output.result,"change",eval(`\n (function(evt) {\n if (${expType} === 'checkbox') {\n ${checkboxCode.events.change}\n } else if (${expType} === 'radio') {\n ${radioCode.events.change}\n } else {\n ${textCode.events.change}\n }\n })\n `)))}function getBindingAttr(e,t,n=!1){const a=e.attrs||[];for(let e=0;e<a.length;e++){let u=a[e].name;const d=u.match(/^:+/);if(d&&(u=u.slice(d.length)),u===t){const t=(0,_exp.default)(a[e].value,!1);return n&&!t.match(/^this\.+/)?`"${t}"`:t}}}function addAttr(e,t,n){(e.attr||(e.attr={}))[t]=n}function addHandler(e,t,n){(e.events||(e.events={}))[t]=n}
2
2
  //# sourceMappingURL=model.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _path=_interopRequireDefault(require("path")),_sharedUtils=require("@hap-toolkit/shared-utils"),_exp=_interopRequireDefault(require("./exp")),_style=_interopRequireDefault(require("../style")),_model=_interopRequireDefault(require("./model")),_utils=require("../utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const extList=[".mix",".ux"],richtextType=["mix","ux"],REG_TAG_DATA_ATTR=/^data-\w+/,REG_CLASS_VALUE=/[^{}\s]+((?=\s)|$)|[^{}\s]*\{\{[^]*?\}\}[^\s]*/g,RESERVED_TAGS=Object.keys(_utils.FRAG_TYPE).map((e=>_utils.FRAG_TYPE[e])),RESERVED_DIRECTIVES=/^(model:|dir:)/,tagCommon={events:["click","focus","blur","key","longpress","appear","disappear","swipe","touchstart","touchmove","touchend","touchcancel","resize","animationstart","animationiteration","animationend"],attrs:{id:{},style:{},class:{},disabled:{enum:["false","true"]},if:{def:"true"},elif:{def:"true"},else:{},for:{},tid:{},show:{def:"true"},"aria-label":{},"aria-unfocusable":{enum:["false","true"]},forcedark:{enum:["true","false"]},focusable:{enum:["false","true"]},vtags:{},vindex:{},autofocus:{enum:["false","true"]},descendantfocusability:{enum:["before","after","block"]}},children:["block","slot","component"],parents:["block"]},tagNatives={div:{supportCard:!0,attrs:{enablevideofullscreencontainer:{enum:["false","true"]}}},a:{supportCard:!0,textContent:!0,children:["span"],attrs:{visited:{enum:["false","true"]},href:{}}},text:{supportCard:!0,textContent:!0,children:["a","span"],attrs:{type:{enum:["text","html"]},"letter-spacing":{}}},span:{supportCard:!0,textContent:!0,excludeRoot:!0,children:["span"],parents:["text","a","span"],attrs:{extendCommon:!1,id:{},style:{},class:{},for:{},tid:{},if:{def:"true"},elif:{def:"true"},else:{}}},label:{supportCard:!0,textContent:!0,atomic:!0,attrs:{target:{}}},image:{events:["complete","error"],empty:!0,supportCard:!0,selfClosing:!0,alias:["img"],atomic:!0,attrs:{src:{},alt:{},enablenightmode:{enum:["true","false"]},autoplay:{enum:["true","false"]}}},slider:{selfClosing:!0,atomic:!0,attrs:{enabled:{enum:["true","false"]},min:{def:0},max:{def:100},step:{def:1},value:{def:0}},events:["change"]},web:{atomic:!0,events:["pagestart","pagefinish","titlereceive","error","message","progress"],attrs:{src:{},trustedurl:{},allowthirdpartycookies:{enum:["false","true"]},enablenightmode:{enum:["true","false"]},showloadingdialog:{enum:["false","true"]},supportzoom:{enum:["true","false"]}}},list:{children:["list-item"],attrs:{scrollpage:{enum:["false","true"]},focusbehavior:{enum:["aligned","edged"]}},events:["scroll","scrollbottom","scrolltop","scrollend","scrolltouchup","selected"]},"list-item":{excludeRoot:!0,parents:["list"],attrs:{type:{required:!0},disallowintercept:{}}},block:{excludeRoot:!0,supportCard:!0,attrs:{extendCommon:!1,for:{},tid:{},if:{def:"true"},elif:{def:"true"},else:{}}},component:{supportCard:!0,excludeRoot:!0,attrs:{extendCommon:!1,is:{required:!0},for:{},tid:{},if:{def:"true"},elif:{def:"true"},else:{}}},slot:{excludeRoot:!0,attrs:{name:{def:"default"},extendCommon:!1,content:{}}},input:{supportCard:!0,selfClosing:!0,atomic:!0,empty:!0,attrs:{type:{enum:["text","button","checkbox","radio","email","date","time","number","password","tel","eventbutton","hidetext","showtext"]},autocomplete:{enum:["on","off"]},enterkeytype:{enum:["default","next","go","done","send","search"]},eventtype:{enum:["shortcut"]},"true-value":{},"false-value":{},maxlength:{},checked:{enum:["false","true"]},name:{},value:{},placeholder:{}},events:["change","enterkeyclick","selectionchange"]},button:{supportCard:!0,textContent:!0,atomic:!0},refresh:{attrs:{offset:{def:"132px"},refreshing:{enum:["false","true"]},type:{enum:["auto","pulldown"]},"enable-refresh":{enum:["true","false"]}},events:["refresh"]},refresh2:{attrs:{pulldownrefreshing:{enum:["false","true"]},pulluprefreshing:{enum:["false","true"]},animationduration:{def:300},enablepulldown:{enum:["true","false"]},enablepullup:{enum:["false","true"]},reboundable:{enum:["false","true"]},gesture:{enum:["true","false"]},offset:{def:"132px"},refreshing:{enum:["false","true"]},type:{enum:["auto","pulldown"]}},events:["pulldownrefresh","pulluprefresh","refresh"],onceChildren:["refresh-header","refresh-footer"]},"refresh-header":{attrs:{dragrate:{def:300},triggerratio:{def:300},tiggersize:{def:300},maxdragratio:{def:300},maxdragsize:{def:300},refreshdisplayratio:{def:300},refreshdisplaysize:{def:300},spinnerstyle:{enum:["translation","front","behind"]},autorefresh:{enum:["false","true"]},translationwithcontent:{enum:["false","true"]}},events:["move"],parents:["refresh2"]},"refresh-footer":{attrs:{dragrate:{def:300},triggerratio:{def:300},tiggersize:{def:300},maxdragratio:{def:300},maxdragdize:{def:300},refreshdisplayratio:{def:300},refreshdisplaysize:{def:300},spinnerstyle:{enum:["translation","front","behind"]},autorefresh:{enum:["false","true"]},translationwithcontent:{enum:["true","false"]}},events:["move"],parents:["refresh2"]},ad:{attrs:{unitid:{def:""},type:{def:"native"},adid:{}},events:["adclick","error"]},"ad-clickable-area":{supportCard:!0,textContent:!0,atomic:!0,attrs:{type:{}}},"ad-custom":{attrs:{adUnitId:{},channel:{},extendCommon:!1},events:["load","error","show","click","close"]},swiper:{attrs:{index:{def:0},autoplay:{enum:["false","true"]},interval:{def:3e3},indicator:{enum:["true","false"]},loop:{enum:["true","false"]},duration:{},vertical:{enum:["false","true"]},previousmargin:{def:"0px"},nextmargin:{def:"0px"},enableswipe:{enum:["true","false"]}},events:["change"]},progress:{supportCard:!0,selfClosing:!0,atomic:!0,attrs:{percent:{def:0},type:{enum:["horizontal","circular"]}}},picker:{supportCard:!0,selfClosing:!0,atomic:!0,attrs:{type:{required:!0,enum:["text","date","time","multi-text"]},start:{def:"1970-1-1"},end:{def:"2100-12-31"},range:{},selected:{},value:{}},events:["change","columnchange","cancel"]},switch:{supportCard:!0,selfClosing:!0,atomic:!0,attrs:{checked:{enum:["false","true"]}},events:["change"]},textarea:{supportCard:!0,atomic:!0,textContent:!0,attrs:{placeholder:{},maxlength:{}},events:["change","selectionchange","linechange"]},video:{empty:!0,attrs:{src:{},muted:{enum:["false","true"]},autoplay:{enum:["false","true"]},controls:{enum:["true","false"]},poster:{},orientation:{enum:["landscape","portrait"]},titlebar:{enum:["true","false"]},title:{},playcount:{},speed:{def:1}},events:["prepared","start","pause","finish","error","seeking","seeked","timeupdate","fullscreenchange"]},camera:{atomic:!0,selfClosing:!0,attrs:{deviceposition:{enum:["back","front"]},flash:{enum:["auto","on","off","torch"]},framesize:{enum:["low","normal","high"]},autoexposurelock:{enum:["false","true"]},autowhitebalancelock:{enum:["false","true"]}},events:["error","camerainitdone","cameraframe"]},map:{children:["custommarker"],attrs:{latitude:{},longitude:{},coordtype:{},scale:{def:0},rotate:{def:0},markers:{},showmylocation:{enum:["true","false"]},polylines:{},polygons:{},circles:{},controls:{},groundoverlays:{},includepoints:{},heatmaplayer:{},showcompass:{enum:["true","false"]},enableoverlooking:{enum:["false","true"]},enablezoom:{enum:["true","false"]},enablescroll:{enum:["true","false"]},enablerotate:{enum:["true","false"]},showscale:{enum:["false","true"]},showzoom:{enum:["false","true"]}},events:["loaded","regionchange","tap","markertap","callouttap","controltap","poitap"]},custommarker:{parents:["map"],attrs:{custommarkerattr:{}}},canvas:{atomic:!0},stack:{supportCard:!0,events:["fullscreenchange"]},richtext:{textContent:!0,atomic:!0,attrs:{type:{required:!0,enum:["html"].concat(richtextType)},scene:{}},events:["start","complete","pagechanged","splitpage"]},tabs:{children:["tab-bar","tab-content"],attrs:{index:{def:0}},events:["change"]},"tab-content":{parents:["tabs"],attrs:{scrollable:{enum:["true","false"]}}},"tab-bar":{parents:["tabs"],attrs:{mode:{enum:["fixed","scrollable"]}}},popup:{supportCard:!0,children:["text"],attrs:{target:{required:!0},placement:{enum:["left","top","right","bottom","topLeft","topRight","bottomLeft","bottomRight"],def:"bottom"}},events:["visibilitychange"]},rating:{supportCard:!0,atomic:!0,attrs:{numstars:{def:"5"},rating:{def:"0"},stepsize:{def:"0.5"},indicator:{enum:["false","true"]}},events:["change"]},select:{supportCard:!0,children:["option"],events:["change"],excludeRoot:!0},option:{supportCard:!0,parents:["select"],atomic:!0,textContent:!0,attrs:{selected:{def:!1},value:{}},excludeRoot:!0},marquee:{supportCard:!0,textContent:!0,atomic:!0,attrs:{scrollamount:{def:6},loop:{def:-1},direction:{enum:["left","right"]},value:{def:"6px"}},events:["bounce","finish","start"]},scrollview:{attrs:{"scroll-direction":{enum:["vertical","horizontal","vertical_horizontal"]},"show-scrollbar":{enum:["true","false"]}},events:["scroll","scrollbegindrag","scrollenddrag","scrollstart","scrollstop"]},drawer:{attrs:{enableswipe:{enum:["true","false"]}},events:["change","scroll"]},lottie:{empty:!0,attrs:{source:{required:!0},progress:{},speed:{},loop:{enum:[!0,!1]},autoplay:{enum:[!1,!0]},rendermode:{enum:["AUTOMATIC","HARDWARE","SOFTWARE"]}},events:["complete","error","change"]},"drawer-navigation":{parents:["drawer"],attrs:{direction:{enum:["start","end"]}}},"slide-view":{attrs:{edge:{enum:["right","left"]},enableslide:{enum:["true","false"]},isopen:{enum:["false","true"]},layer:{enum:["above","same"]},buttons:{}},events:["open","close","slide","buttonclick"]},"section-list":{children:["section-group","section-item"],events:["scroll","scrollend","scrolltouchup","scrolltop","scrollbottom"]},"section-group":{children:["section-group","section-item","section-header"],attrs:{expand:{enum:["false","true"]}},events:["change"]},"section-header":{parents:["section-group"]},"section-item":{},"share-button":{empty:!0,attrs:{value:{},title:{},description:{},icon:{},url:{},path:{},params:{},platforms:{},usepageparams:{enum:["true","false"],def:"false"}},events:["success","fail","cancel"]},"shortcut-button":{empty:!0,attrs:{value:{}}}},tagReserved={};let tagComponents=[];const tagNativeKeys=Object.keys(tagNatives),tagAliasMap={},tagAttrMap={},tagEnumAttrMap={},tagDefaultAttrMap={},tagRequireAttrMap={},tagAtomics={},tagEmpty={},tagTextContent={},tagChildrenMap={},tagOnceChildrenMap={},tagParentsMap={},tagEventsMap={},tagNotRoot=[];function checkTagName(e,t,a={}){const s=t.result,n=t.log,r=_path.default.extname(a.filePath);let l=e.tagName;const o=e.childNodes||[],i=e.__location||{};tagComponents=a.importNames||[];const u=tagComponents.includes(l);!u&&tagAliasMap[l]&&("img"!==l&&n.push({line:i.line||1,column:i.col||1,reason:"NOTE: 组件名 `"+l+"` 自动转换为 `"+tagAliasMap[l]+"`"}),l=tagAliasMap[l]),s.type=l,RESERVED_TAGS.indexOf(l)>=0?n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件名 `"+l+"` 是系统保留的组件名, 请修改"}):hasTagDefined(l)||n.push({line:i.line||1,column:i.col||1,reason:`WARN: 未识别的标签名 '${l}',如果是自定义组件,请确认已经引入`}),a.uxType===_utils.ENTRY_TYPE.CARD&&tagNatives[l]&&!tagNatives[l].supportCard&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 卡片不支持组件名 `"+l+"`, 请修改"}),e._isroot&&tagNotRoot.hasOwnProperty(l)&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 不能作为根组件"}),s.attr=s.attr||{};const c=e.attrs||[],p=[];if(c.forEach((function(e){p.push(e.name.toLowerCase())})),e._isroot){const e=["for","if","elif","else","show"];p.forEach((t=>{e.indexOf(t)>=0&&n.push({line:i.line||1,column:i.col||1,reason:"WARN: 根节点 `"+l+"` 不能使用属性 `"+t+"`"})}))}if(!u){if(tagEmpty.hasOwnProperty(l)&&o.length>0&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 内不能有子节点与文字,请修改"}),tagAtomics.hasOwnProperty(l)&&"ad-clickable-area"!==l&&(tagTextContent.hasOwnProperty(l)?o.length>0&&o.every((e=>"#text"===e.nodeName||(n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 是原子类型,不应该有子节点"}),!1))):(o.length>1||o[0]&&"#text"!==o[0].nodeName)&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 只能有一个文字子节点"})),tagDefaultAttrMap[l]&&Object.keys(tagDefaultAttrMap[l]).forEach((t=>{const s=p.indexOf(t);s>=0&&""===c[s].value?(c[s].value=tagDefaultAttrMap[l][t],n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 属性 `"+t+"` 值为空, 默认设置为缺省值 `"+tagDefaultAttrMap[l][t]+"`"})):"slot"===l&&s<0&&(e.attrs.push({name:t,value:tagDefaultAttrMap[l][t]}),_sharedUtils.colorconsole.warn(`标签 ${l} 的属性 \`${t}\` 值为空, 默认设置为缺省值 \`${tagDefaultAttrMap[l][t]}\` ${a.filePath} @${i.line||1},${i.col||1}`))})),tagRequireAttrMap[l]&&tagRequireAttrMap[l].forEach((e=>{p.indexOf(e)<0&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 没有定义属性 `"+e+"`"})})),tagEnumAttrMap[l]&&Object.keys(tagEnumAttrMap[l]).forEach((e=>{const t=p.indexOf(e);if(t>=0){const a=c[t].value;if(!_exp.default.isExpr(a)){const s=tagEnumAttrMap[l][e];s.indexOf(a)<0&&(c[t].value=s[0],n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 属性 `"+e+"` 的值 `"+a+"`非法, 默认设置为缺省值 `"+s[0]+"`"}))}}})),tagAttrMap[l]&&"component"!==l&&p.forEach((e=>{if(!e.match(/^(on|@)/)){if(r.indexOf(extList[2])>=-1&&/^(:|v-|key|ref|is|slot|slot-scope)/.test(e))return;if(RESERVED_DIRECTIVES.test(e))return;const t=checkDataAttr(e),a=Object.prototype.hasOwnProperty.call(tagAttrMap[l],e);t||a||n.push({line:i.line||1,column:i.col||1,reason:"WARN: 组件 `"+l+"` 不支持属性 `"+e})}})),tagEventsMap[l]&&"component"!==l){const e=tagEventsMap[l];p.forEach((t=>{if(t.match(/^(on|@)/)){const s=t.replace(/^(on|@)/,""),r=["appear","disappear","swipe"];a.uxType===_utils.ENTRY_TYPE.CARD&&r.indexOf(s.toLowerCase())>-1&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 卡片组件 `"+l+"` 不支持事件 `"+s+"`"}),e.indexOf(s.toLowerCase())<0&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 不支持事件 `"+s+"`"})}}))}if(o.length>0){const t=new Set,s={};o.forEach(((e,r)=>{if(isReservedTag(l)&&isReservedTag(e.nodeName)){const o=tagParentsMap[e.nodeName],u=tagChildrenMap[l],c=tagOnceChildrenMap[l];if("slot"===e.nodeName){let s=e.parentNode;for(;s;){if("slot"===s.tagName){_sharedUtils.colorconsole.warn(`slot标签内不应该嵌套slot ${a.filePath}@${i.line||1},${i.col||1}`);break}s=s.parentNode}const n={};e.attrs.map((e=>{n[e.name]=e.value})),n.hasOwnProperty("name")?/\{\{\s*[\w$]+\s*\}\}/.test(n.name)&&_sharedUtils.colorconsole.warn(`标签${e.nodeName}的name属性暂时不支持动态绑定 ${a.filePath}@${i.line||1},${i.col||1}`):n.name="default",t.has(n.name)?_sharedUtils.colorconsole.warn(`标签${l}内存在name为 \`${n.name}\` 重复slot ${a.filePath}@${i.line||1},${i.col||1}`):t.add(n.name)}if(o&&o.indexOf(l)<0||u&&u.indexOf(e.nodeName)<0)n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 不支持子组件 `"+e.nodeName+"`"});else if(c&&c.indexOf(e.nodeName)>-1){let t;(s[e.nodeName]||0===s[e.nodeName])&&(t=!0),s[e.nodeName]={index:r,duplicated:t}}}}));const r=Object.keys(s);r.length&&(r.filter((e=>s[e].duplicated)).forEach((e=>{n.push({line:i.line||1,column:i.col||1,reason:`'WARN: 组件 \`${e}\` 只允许在 \`${l}\` 组件中出现一次`})})),e.childNodes=o.filter(((e,t)=>!(s[e.nodeName]&&s[e.nodeName].duplicated&&t!==s[e.nodeName].index))))}isSupportedSelfClosing(l)||!i.startTag||i.endTag||n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 缺少闭合标签,请检查"}),"list-item"===l&&hasIfOrFor(o)&&n.push({line:i.line||1,column:i.col||1,reason:"WARN: `list-item` 内部需谨慎使用指令 if 或 for,相同 type 属性的 list-item, DOM 结构必须完全相同`"})}}function checkId(e,t){if(e){const a=t.isLite,s=t.isNewJSCard;t.result.id=_exp.default.isExpr(e)?(0,_exp.default)(e,!0,a,s):e,s&&(t.result.idRaw=e)}}function checkDataAttr(e){return REG_TAG_DATA_ATTR.test(e)}function checkBuild(e,t){e&&(t.result.append="tree"===e?"tree":"single")}function checkClass(className,output){let hasBinding,classList=[];className=className.trim();const isLite=output.isLite,isNewJSCard=output.isNewJSCard;if(className){let start=0,end=0;const segs=[],matched=className.match(REG_CLASS_VALUE);if(matched){let e;matched.forEach((t=>{end=className.indexOf(t,start),e=className.slice(start,end),e.length&&segs.push(e),segs.push(t),start+=e.length+t.length}))}if(segs.push(className.slice(start)),classList=segs.reduce(((e,t)=>_exp.default.isExpr(t)?(hasBinding=!0,e.push((0,_exp.default)(t,!1,isLite)),e):e.concat(t.split(/\s+/g).filter((e=>e)).map((e=>isLite?e:`'${e}'`)))),[]),classList=classList.filter((e=>e.trim())),isLite){if(!isValidClassArray(segs)){const e=new Error("轻卡 class 样式不支持动态数据绑定 {{}} 和静态样式混用");throw e.isExpressionError=!0,e.expression=className,e}output.result.classList=classList}else if(hasBinding)try{let code="";isNewJSCard?(code="function () {return ["+classList.join(", ")+"]}",output.result.classList=code):(code="(function () {return ["+classList.join(", ")+"]})",output.result.classList=eval(code))}catch(e){throw e.isExpressionError=!0,e.expression=className,e}else output.result.classList=classList.map((e=>e.slice(1,-1)))}isNewJSCard&&(output.result.class=className,output.result.classListRaw=className)}function checkStyle(e,t,a,s){let n={},r={};const l=t.log;if(e){const o=t.isLite,i=t.isNewJSCard;if(_exp.default.singleExpr(e)){const s=_exp.default.removeExprffix(e);return _exp.default.isExpr(s)?l.push({line:a.line||1,column:a.col||1,reason:"ERROR: style 属性不能嵌套多层{{}}"}):n=(0,_exp.default)(e,!0,o,i),t.result.style=n,void(i&&(t.result.styleRaw=e))}if(e.split(";").forEach((function(e){let t,u,c,p=e.trim().split(":");if(p.length>2&&(p[1]=p.slice(1).join(":"),p=p.slice(0,2)),2===p.length){t=p[0].trim(),t=(0,_utils.hyphenedToCamelCase)(t),u=p[1].trim();const e=u;u=(0,_exp.default)(u,!0,o,i),c=_style.default.validateDelaration(t,u,s),u=c.value,u.forEach((t=>{((0,_utils.isValidValue)(t.v)||"function"==typeof t.v)&&(n[t.n]=t.v,i&&(r[t.n]=e))})),c.log&&l.push({line:a.line||1,column:a.col||1,reason:c.log.reason})}})),"object"==typeof n)for(let e in n)_style.default.shouldAddToDependency(e,n[e])&&t.depFiles.push(n[e]);t.result.style=n,i&&(t.result.styleRaw=r)}}function checkIs(e,t,a){const s=t.log;if(e){e=_exp.default.addExprffix(e);const a=t.isLite,s=t.isNewJSCard;t.result.is=(0,_exp.default)(e,!0,a,s),s&&(t.result.isRaw=e)}else s.push({line:a.line||1,column:a.col||1,reason:"WARN: is 属性为空"})}function checkIf(e,t,a,s,n){const r=t.log;if(e){e=_exp.default.addExprffix(e);const s=t.isLite,r=t.isNewJSCard;a?e="{{"+buildConditionExp(n)+"}}":(n.length>0&&(n.length=0),n.push(`${e.substr(2,e.length-4)}`)),t.result.shown=s?e:(0,_exp.default)(e,!0,s,r),r&&(t.result.shownRaw=e)}else a||r.push({line:s.line||1,column:s.col||1,reason:"WARN: if 属性为空"})}function checkElse(e,t,a,s){checkIf(e,t,!0,a,s),s.length=0}function checkElif(e,t,a,s,n){const r=a.log;let l=t;if(e){e=_exp.default.addExprffix(e),t=_exp.default.addExprffix(t);const s=a.isLite,r=a.isNewJSCard;l="{{("+e.substr(2,e.length-4)+") && "+buildConditionExp(n)+"}}",a.result.shown=s?l:(0,_exp.default)(l,!0,s,r),r&&(a.result.shownRaw=l),n.push(`${e.substr(2,e.length-4)}`)}else r.push({line:s.line||1,column:s.col||1,reason:"WARN: Elif 属性为空"});return l}function checkFor(e,t,a){const s=t.log;if(e){let a,s;const n=(e=_exp.default.removeExprffix(e)).match(/(.*) (?:in) (.*)/);if(n){const t=n[1].match(/\((.*),(.*)\)/);t?(a=t[1].trim(),s=t[2].trim()):s=n[1].trim(),e=n[2]}e="{{"+e+"}}";const r=t.isLite,l=t.isNewJSCard;let o,i;a||s?(o={exp:(0,_exp.default)(e,!0,r,l)},i={expRaw:e},a&&(o.key=a),s&&(o.value=s)):(o=(0,_exp.default)(e,!0,r,l),i=e),t.result.repeat=o,l&&(t.result.repeatRaw=i)}else s.push({line:a.line||1,column:a.col||1,reason:"WARN: for 属性为空"})}function checkEvent(name,value,output){const originValue=value,eventName=name.replace(/^(on|@)/,"");if(eventName&&value){value=_exp.default.removeExprffix(value);const paramsMatch=value.match(/(.*)\((.*)\)/);if(paramsMatch){if(output.isLite){const e=new Error("轻卡不支持带参数的事件");throw e.isExpressionError=!0,e.expression=value,e}const funcName=paramsMatch[1];let params=paramsMatch[2];params?(params=params.split(/\s*,\s*/),-1===params.indexOf("evt")&&(params[params.length]="evt")):params=["evt"],value="{{"+funcName+"("+params.join(",")+")}}";try{value=output.isNewJSCard?"function (evt) { return "+(0,_exp.default)(value,!1).replace("this.evt","evt")+"}":eval("(function (evt) { return "+(0,_exp.default)(value,!1).replace("this.evt","evt")+"})")}catch(e){throw e.isExpressionError=!0,e.expression=originValue,e}}output.result.events=output.result.events||{},output.result.events[eventName]=value}}function checkCustomDirective(e,t,a,s){const n=e.replace(/^dir:/,"");if(!n)return _sharedUtils.colorconsole.warn(`\`${s.tagName}\` 组件自定义指令名称不能为空`),!1;const r=a.isNewJSCard;a.result.directives=a.result.directives||[],r?(t=_exp.default.addExprffix(t),a.result.directives.push({name:n,value:_exp.default.isExpr(t)?(0,_exp.default)(t,!0,a.isLite,a.isNewJSCard):t,valueRaw:t})):a.result.directives.push({name:n,value:_exp.default.isExpr(t)?(0,_exp.default)(t,!0,a.isLite,a.isNewJSCard):t})}function checkAttr(e,t,a,s,n,r){if(e&&(0,_utils.isValidValue)(t)){if(shouldConvertPath(e,t,s)){if(!_exp.default.isExpr(t)){(0,_utils.fileExists)(t,r.filePath)||a.log.push({line:n.line,column:n.column,reason:"WARN: "+s+" 属性 "+e+" 的值 "+t+" 下不存在对应的文件资源"})}t=(0,_utils.resolvePath)(t,r.filePath),a.depFiles.push(t)}const l=a.isLite,o=a.isNewJSCard;a.result.attr=a.result.attr||{},a.result.attr[(0,_utils.hyphenedToCamelCase)(e)]=(0,_exp.default)(t,!0,l,o),o&&(a.result.attr[(0,_utils.hyphenedToCamelCase)(e)+"Raw"]=t),"value"===e&&"text"===s&&a.log.push({line:n.line,column:n.column,reason:"WARN: `value` 应该写在<text>标签中"})}}function shouldConvertPath(e,t,a){return!("alt"===e&&"blank"===t)&&!(!(["src","alt"].includes(e)&&t&&["img","video"].indexOf(a)>-1)||/^(data:|http|{{)/.test(t))}function isReservedTag(e){return tagReserved.hasOwnProperty(e)}function isTextContentAtomic(e){return tagTextContent.hasOwnProperty(e)&&tagAtomics.hasOwnProperty(e)}function isNotTextContentAtomic(e){return!tagTextContent.hasOwnProperty(e)&&!tagAtomics.hasOwnProperty(e)}function isSupportSpan(e){if(e&&"string"==typeof e)return tagChildrenMap[e]&&tagChildrenMap[e].indexOf("span")>-1}function getTagChildren(e){if(e&&"string"==typeof e)return tagChildrenMap[e]||[]}function isSupportedSelfClosing(e){if(e&&"string"==typeof e)return e=tagAliasMap[e]||e,tagNatives[e]&&!!tagNatives[e].selfClosing}function hasTagDefined(e){return tagNativeKeys.indexOf(e)>-1||tagComponents.indexOf(e)>-1}function isEmptyElement(e){return e=tagAliasMap[e]||e,tagNatives[e]&&!0===tagNatives[e].empty}function buildConditionExp(e){return e.map((e=>`!(${e})`)).join(" && ")}function hasIfOrFor(e){let t=!1;return e.find((e=>(e.attrs||[]).findIndex((e=>["for","if"].indexOf(e.name)>-1))>-1?(t=!0,t):Array.isArray(e.childNodes)?(t=hasIfOrFor(e.childNodes),t):void 0)),t}function isValidClassArray(e){const t=e.filter((e=>e.length>0));let a=!1;for(let e=0;e<t.length;e++)if(_exp.default.isExpr(t[e])){a=!0;break}return!a||1===t.length}tagNativeKeys.forEach((function(e){tagReserved[e]=!0;const t=tagNatives[e];t.atomic&&(tagAtomics[e]=!0),t.textContent&&(tagTextContent[e]=!0),t.empty&&(tagEmpty[e]=!0),t.alias&&t.alias.length&&t.alias.forEach((function(t){tagAliasMap[t]=e})),!0===t.excludeRoot&&(tagNotRoot[e]=!0);let a=(0,_sharedUtils.extend)({},t.attrs);const s={},n={},r=[];t.attrs&&!1===t.attrs.extendCommon||(a=(0,_sharedUtils.extend)(a,tagCommon.attrs)),"extendCommon"in a&&delete a.extendCommon,Object.keys(a).forEach((function(e){const t=a[e];t.enum&&t.enum.length>0&&(s[e]=t.enum,n[e]=t.enum[0]),t.def&&(n[e]=t.def),!0===t.required&&r.push(e)})),tagAttrMap[e]=a,tagEnumAttrMap[e]=s,tagDefaultAttrMap[e]=n,tagRequireAttrMap[e]=r,tagChildrenMap[e]=t.children?(0,_utils.merge)([],tagCommon.children,t.children):null,tagOnceChildrenMap[e]=t.onceChildren?(0,_utils.merge)([],t.onceChildren):null,tagParentsMap[e]=t.parents?(0,_utils.merge)([],tagCommon.parents,t.parents):null,tagEventsMap[e]=(0,_utils.merge)([],tagCommon.events,t.events)}));var _default={checkTagName:checkTagName,checkId:checkId,checkClass:checkClass,checkStyle:checkStyle,checkIs:checkIs,checkIf:checkIf,checkElse:checkElse,checkElif:checkElif,checkFor:checkFor,checkEvent:checkEvent,checkCustomDirective:checkCustomDirective,checkAttr:checkAttr,checkBuild:checkBuild,checkModel:_model.default,isReservedTag:isReservedTag,isTextContentAtomic:isTextContentAtomic,isSupportSpan:isSupportSpan,getTagChildren:getTagChildren,isSupportedSelfClosing:isSupportedSelfClosing,isEmptyElement:isEmptyElement,isNotTextContentAtomic:isNotTextContentAtomic,isExpr:_exp.default.isExpr,parseText:_exp.default.parseText};exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _path=_interopRequireDefault(require("path")),_sharedUtils=require("@hap-toolkit/shared-utils"),_exp=_interopRequireDefault(require("./exp")),_style=_interopRequireDefault(require("../style")),_model=_interopRequireDefault(require("./model")),_utils=require("../utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const extList=[".mix",".ux"],richtextType=["mix","ux"],REG_TAG_DATA_ATTR=/^data-\w+/,REG_CLASS_VALUE=/[^{}\s]+((?=\s)|$)|[^{}\s]*\{\{[^]*?\}\}[^\s]*/g,RESERVED_TAGS=Object.keys(_utils.FRAG_TYPE).map((e=>_utils.FRAG_TYPE[e])),RESERVED_DIRECTIVES=/^(model:|dir:)/,tagCommon={events:["click","focus","blur","key","longpress","appear","disappear","swipe","touchstart","touchmove","touchend","touchcancel","resize","animationstart","animationiteration","animationend"],attrs:{id:{},style:{},class:{},disabled:{enum:["false","true"]},if:{def:"true"},elif:{def:"true"},else:{},for:{},tid:{},show:{def:"true"},"aria-label":{},"aria-unfocusable":{enum:["false","true"]},forcedark:{enum:["true","false"]},focusable:{enum:["false","true"]},vtags:{},vindex:{},autofocus:{enum:["false","true"]},descendantfocusability:{enum:["before","after","block"]}},children:["block","slot","component"],parents:["block"]},tagNatives={div:{supportCard:!0,attrs:{enablevideofullscreencontainer:{enum:["false","true"]}}},a:{supportCard:!0,textContent:!0,children:["span"],attrs:{visited:{enum:["false","true"]},href:{}}},text:{supportCard:!0,textContent:!0,children:["a","span"],attrs:{type:{enum:["text","html"]},"letter-spacing":{}}},span:{supportCard:!0,textContent:!0,excludeRoot:!0,children:["span"],parents:["text","a","span"],attrs:{extendCommon:!1,id:{},style:{},class:{},for:{},tid:{},if:{def:"true"},elif:{def:"true"},else:{}}},label:{supportCard:!0,textContent:!0,atomic:!0,attrs:{target:{}}},image:{events:["complete","error"],empty:!0,supportCard:!0,selfClosing:!0,alias:["img"],atomic:!0,attrs:{src:{},alt:{},enablenightmode:{enum:["true","false"]},autoplay:{enum:["true","false"]}}},slider:{selfClosing:!0,atomic:!0,attrs:{enabled:{enum:["true","false"]},min:{def:0},max:{def:100},step:{def:1},value:{def:0}},events:["change"]},web:{atomic:!0,events:["pagestart","pagefinish","titlereceive","error","message","progress"],attrs:{src:{},trustedurl:{},allowthirdpartycookies:{enum:["false","true"]},enablenightmode:{enum:["true","false"]},showloadingdialog:{enum:["false","true"]},supportzoom:{enum:["true","false"]}}},list:{children:["list-item"],attrs:{scrollpage:{enum:["false","true"]},focusbehavior:{enum:["aligned","edged"]}},events:["scroll","scrollbottom","scrolltop","scrollend","scrolltouchup","selected"]},"list-item":{excludeRoot:!0,parents:["list"],attrs:{type:{required:!0},disallowintercept:{}}},block:{excludeRoot:!0,supportCard:!0,attrs:{extendCommon:!1,for:{},tid:{},if:{def:"true"},elif:{def:"true"},else:{}}},component:{supportCard:!0,excludeRoot:!0,attrs:{extendCommon:!1,is:{required:!0},for:{},tid:{},if:{def:"true"},elif:{def:"true"},else:{}}},slot:{excludeRoot:!0,attrs:{name:{def:"default"},extendCommon:!1,content:{}}},input:{supportCard:!0,selfClosing:!0,atomic:!0,empty:!0,attrs:{type:{enum:["text","button","checkbox","radio","email","date","time","number","password","tel","eventbutton","hidetext","showtext"]},autocomplete:{enum:["on","off"]},enterkeytype:{enum:["default","next","go","done","send","search"]},eventtype:{enum:["shortcut"]},"true-value":{},"false-value":{},maxlength:{},checked:{enum:["false","true"]},name:{},value:{},placeholder:{}},events:["change","enterkeyclick","selectionchange"]},button:{supportCard:!0,textContent:!0,atomic:!0},refresh:{attrs:{offset:{def:"132px"},refreshing:{enum:["false","true"]},type:{enum:["auto","pulldown"]},"enable-refresh":{enum:["true","false"]}},events:["refresh"]},refresh2:{attrs:{pulldownrefreshing:{enum:["false","true"]},pulluprefreshing:{enum:["false","true"]},animationduration:{def:300},enablepulldown:{enum:["true","false"]},enablepullup:{enum:["false","true"]},reboundable:{enum:["false","true"]},gesture:{enum:["true","false"]},offset:{def:"132px"},refreshing:{enum:["false","true"]},type:{enum:["auto","pulldown"]}},events:["pulldownrefresh","pulluprefresh","refresh"],onceChildren:["refresh-header","refresh-footer"]},"refresh-header":{attrs:{dragrate:{def:300},triggerratio:{def:300},tiggersize:{def:300},maxdragratio:{def:300},maxdragsize:{def:300},refreshdisplayratio:{def:300},refreshdisplaysize:{def:300},spinnerstyle:{enum:["translation","front","behind"]},autorefresh:{enum:["false","true"]},translationwithcontent:{enum:["false","true"]}},events:["move"],parents:["refresh2"]},"refresh-footer":{attrs:{dragrate:{def:300},triggerratio:{def:300},tiggersize:{def:300},maxdragratio:{def:300},maxdragdize:{def:300},refreshdisplayratio:{def:300},refreshdisplaysize:{def:300},spinnerstyle:{enum:["translation","front","behind"]},autorefresh:{enum:["false","true"]},translationwithcontent:{enum:["true","false"]}},events:["move"],parents:["refresh2"]},ad:{attrs:{unitid:{def:""},type:{def:"native"},adid:{}},events:["adclick","error"]},"ad-clickable-area":{supportCard:!0,textContent:!0,atomic:!0,attrs:{type:{}}},"ad-custom":{attrs:{adUnitId:{},channel:{},extendCommon:!1},events:["load","error","show","click","close"]},swiper:{attrs:{index:{def:0},autoplay:{enum:["false","true"]},interval:{def:3e3},indicator:{enum:["true","false"]},loop:{enum:["true","false"]},duration:{},vertical:{enum:["false","true"]},previousmargin:{def:"0px"},nextmargin:{def:"0px"},enableswipe:{enum:["true","false"]}},events:["change"]},progress:{supportCard:!0,selfClosing:!0,atomic:!0,attrs:{percent:{def:0},type:{enum:["horizontal","circular"]}}},picker:{supportCard:!0,selfClosing:!0,atomic:!0,attrs:{type:{required:!0,enum:["text","date","time","multi-text"]},start:{def:"1970-1-1"},end:{def:"2100-12-31"},range:{},selected:{},value:{}},events:["change","columnchange","cancel"]},switch:{supportCard:!0,selfClosing:!0,atomic:!0,attrs:{checked:{enum:["false","true"]}},events:["change"]},textarea:{supportCard:!0,atomic:!0,textContent:!0,attrs:{placeholder:{},maxlength:{}},events:["change","selectionchange","linechange"]},video:{empty:!0,attrs:{src:{},muted:{enum:["false","true"]},autoplay:{enum:["false","true"]},controls:{enum:["true","false"]},poster:{},orientation:{enum:["landscape","portrait"]},titlebar:{enum:["true","false"]},title:{},playcount:{},speed:{def:1}},events:["prepared","start","pause","finish","error","seeking","seeked","timeupdate","fullscreenchange"]},camera:{atomic:!0,selfClosing:!0,attrs:{deviceposition:{enum:["back","front"]},flash:{enum:["auto","on","off","torch"]},framesize:{enum:["low","normal","high"]},autoexposurelock:{enum:["false","true"]},autowhitebalancelock:{enum:["false","true"]}},events:["error","camerainitdone","cameraframe"]},map:{children:["custommarker"],attrs:{latitude:{},longitude:{},coordtype:{},scale:{def:0},rotate:{def:0},markers:{},showmylocation:{enum:["true","false"]},polylines:{},polygons:{},circles:{},controls:{},groundoverlays:{},includepoints:{},heatmaplayer:{},showcompass:{enum:["true","false"]},enableoverlooking:{enum:["false","true"]},enablezoom:{enum:["true","false"]},enablescroll:{enum:["true","false"]},enablerotate:{enum:["true","false"]},showscale:{enum:["false","true"]},showzoom:{enum:["false","true"]}},events:["loaded","regionchange","tap","markertap","callouttap","controltap","poitap"]},custommarker:{parents:["map"],attrs:{custommarkerattr:{}}},canvas:{atomic:!0},stack:{supportCard:!0,events:["fullscreenchange"]},richtext:{textContent:!0,atomic:!0,attrs:{type:{required:!0,enum:["html"].concat(richtextType)},scene:{}},events:["start","complete","pagechanged","splitpage"]},tabs:{children:["tab-bar","tab-content"],attrs:{index:{def:0}},events:["change"]},"tab-content":{parents:["tabs"],attrs:{scrollable:{enum:["true","false"]}}},"tab-bar":{parents:["tabs"],attrs:{mode:{enum:["fixed","scrollable"]}}},popup:{supportCard:!0,children:["text"],attrs:{target:{required:!0},placement:{enum:["left","top","right","bottom","topLeft","topRight","bottomLeft","bottomRight"],def:"bottom"}},events:["visibilitychange"]},rating:{supportCard:!0,atomic:!0,attrs:{numstars:{def:"5"},rating:{def:"0"},stepsize:{def:"0.5"},indicator:{enum:["false","true"]}},events:["change"]},select:{supportCard:!0,children:["option"],events:["change"],excludeRoot:!0},option:{supportCard:!0,parents:["select"],atomic:!0,textContent:!0,attrs:{selected:{def:!1},value:{}},excludeRoot:!0},marquee:{supportCard:!0,textContent:!0,atomic:!0,attrs:{scrollamount:{def:6},loop:{def:-1},direction:{enum:["left","right"]},value:{def:"6px"}},events:["bounce","finish","start"]},scrollview:{attrs:{"scroll-direction":{enum:["vertical","horizontal","vertical_horizontal"]},"show-scrollbar":{enum:["true","false"]}},events:["scroll","scrollbegindrag","scrollenddrag","scrollstart","scrollstop"]},drawer:{attrs:{enableswipe:{enum:["true","false"]}},events:["change","scroll"]},lottie:{empty:!0,attrs:{source:{required:!0},progress:{},speed:{},loop:{enum:[!0,!1]},autoplay:{enum:[!1,!0]},rendermode:{enum:["AUTOMATIC","HARDWARE","SOFTWARE"]}},events:["complete","error","change"]},"drawer-navigation":{parents:["drawer"],attrs:{direction:{enum:["start","end"]}}},"slide-view":{attrs:{edge:{enum:["right","left"]},enableslide:{enum:["true","false"]},isopen:{enum:["false","true"]},layer:{enum:["above","same"]},buttons:{}},events:["open","close","slide","buttonclick"]},"section-list":{children:["section-group","section-item"],events:["scroll","scrollend","scrolltouchup","scrolltop","scrollbottom"]},"section-group":{children:["section-group","section-item","section-header"],attrs:{expand:{enum:["false","true"]}},events:["change"]},"section-header":{parents:["section-group"]},"section-item":{},"share-button":{empty:!0,attrs:{value:{},title:{},description:{},icon:{},url:{},path:{},params:{},platforms:{},usepageparams:{enum:["true","false"],def:"false"}},events:["success","fail","cancel"]},"shortcut-button":{empty:!0,attrs:{value:{}}}},tagReserved={};let tagComponents=[];const tagNativeKeys=Object.keys(tagNatives),tagAliasMap={},tagAttrMap={},tagEnumAttrMap={},tagDefaultAttrMap={},tagRequireAttrMap={},tagAtomics={},tagEmpty={},tagTextContent={},tagChildrenMap={},tagOnceChildrenMap={},tagParentsMap={},tagEventsMap={},tagNotRoot=[];function checkTagName(e,t,a={}){const s=t.result,n=t.log,r=_path.default.extname(a.filePath);let l=e.tagName;const o=e.childNodes||[],i=e.__location||{};tagComponents=a.importNames||[];const u=tagComponents.includes(l);!u&&tagAliasMap[l]&&("img"!==l&&n.push({line:i.line||1,column:i.col||1,reason:"NOTE: 组件名 `"+l+"` 自动转换为 `"+tagAliasMap[l]+"`"}),l=tagAliasMap[l]),s.type=l,RESERVED_TAGS.indexOf(l)>=0?n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件名 `"+l+"` 是系统保留的组件名, 请修改"}):hasTagDefined(l)||n.push({line:i.line||1,column:i.col||1,reason:`WARN: 未识别的标签名 '${l}',如果是自定义组件,请确认已经引入`}),a.uxType===_utils.ENTRY_TYPE.CARD&&tagNatives[l]&&!tagNatives[l].supportCard&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 卡片不支持组件名 `"+l+"`, 请修改"}),e._isroot&&tagNotRoot.hasOwnProperty(l)&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 不能作为根组件"}),s.attr=s.attr||{};const c=e.attrs||[],p=[];if(c.forEach((function(e){p.push(e.name.toLowerCase())})),e._isroot){const e=["for","if","elif","else","show"];p.forEach((t=>{e.indexOf(t)>=0&&n.push({line:i.line||1,column:i.col||1,reason:"WARN: 根节点 `"+l+"` 不能使用属性 `"+t+"`"})}))}if(!u){if(tagEmpty.hasOwnProperty(l)&&o.length>0&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 内不能有子节点与文字,请修改"}),tagAtomics.hasOwnProperty(l)&&"ad-clickable-area"!==l&&(tagTextContent.hasOwnProperty(l)?o.length>0&&o.every((e=>"#text"===e.nodeName||(n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 是原子类型,不应该有子节点"}),!1))):(o.length>1||o[0]&&"#text"!==o[0].nodeName)&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 只能有一个文字子节点"})),tagDefaultAttrMap[l]&&Object.keys(tagDefaultAttrMap[l]).forEach((t=>{const s=p.indexOf(t);s>=0&&""===c[s].value?(c[s].value=tagDefaultAttrMap[l][t],n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 属性 `"+t+"` 值为空, 默认设置为缺省值 `"+tagDefaultAttrMap[l][t]+"`"})):"slot"===l&&s<0&&(e.attrs.push({name:t,value:tagDefaultAttrMap[l][t]}),_sharedUtils.colorconsole.warn(`标签 ${l} 的属性 \`${t}\` 值为空, 默认设置为缺省值 \`${tagDefaultAttrMap[l][t]}\` ${a.filePath} @${i.line||1},${i.col||1}`))})),tagRequireAttrMap[l]&&tagRequireAttrMap[l].forEach((e=>{p.indexOf(e)<0&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 没有定义属性 `"+e+"`"})})),tagEnumAttrMap[l]&&Object.keys(tagEnumAttrMap[l]).forEach((e=>{const t=p.indexOf(e);if(t>=0){const a=c[t].value;if(!_exp.default.isExpr(a)){const s=tagEnumAttrMap[l][e];s.indexOf(a)<0&&(c[t].value=s[0],n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 属性 `"+e+"` 的值 `"+a+"`非法, 默认设置为缺省值 `"+s[0]+"`"}))}}})),tagAttrMap[l]&&"component"!==l&&p.forEach((e=>{if(!e.match(/^(on|@)/)){if(r.indexOf(extList[2])>=-1&&/^(:|v-|key|ref|is|slot|slot-scope)/.test(e))return;if(RESERVED_DIRECTIVES.test(e))return;const t=checkDataAttr(e),a=Object.prototype.hasOwnProperty.call(tagAttrMap[l],e);t||a||n.push({line:i.line||1,column:i.col||1,reason:"WARN: 组件 `"+l+"` 不支持属性 `"+e})}})),tagEventsMap[l]&&"component"!==l){const e=tagEventsMap[l];p.forEach((t=>{if(t.match(/^(on|@)/)){const s=t.replace(/^(on|@)/,""),r=["appear","disappear","swipe"];a.uxType===_utils.ENTRY_TYPE.CARD&&r.indexOf(s.toLowerCase())>-1&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 卡片组件 `"+l+"` 不支持事件 `"+s+"`"}),e.indexOf(s.toLowerCase())<0&&n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 不支持事件 `"+s+"`"})}}))}if(o.length>0){const t=new Set,s={};o.forEach(((e,r)=>{if(isReservedTag(l)&&isReservedTag(e.nodeName)){const o=tagParentsMap[e.nodeName],u=tagChildrenMap[l],c=tagOnceChildrenMap[l];if("slot"===e.nodeName){let s=e.parentNode;for(;s;){if("slot"===s.tagName){_sharedUtils.colorconsole.warn(`slot标签内不应该嵌套slot ${a.filePath}@${i.line||1},${i.col||1}`);break}s=s.parentNode}const n={};e.attrs.map((e=>{n[e.name]=e.value})),n.hasOwnProperty("name")?/\{\{\s*[\w$]+\s*\}\}/.test(n.name)&&_sharedUtils.colorconsole.warn(`标签${e.nodeName}的name属性暂时不支持动态绑定 ${a.filePath}@${i.line||1},${i.col||1}`):n.name="default",t.has(n.name)?_sharedUtils.colorconsole.warn(`标签${l}内存在name为 \`${n.name}\` 重复slot ${a.filePath}@${i.line||1},${i.col||1}`):t.add(n.name)}if(o&&o.indexOf(l)<0||u&&u.indexOf(e.nodeName)<0)n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 不支持子组件 `"+e.nodeName+"`"});else if(c&&c.indexOf(e.nodeName)>-1){let t;(s[e.nodeName]||0===s[e.nodeName])&&(t=!0),s[e.nodeName]={index:r,duplicated:t}}}}));const r=Object.keys(s);r.length&&(r.filter((e=>s[e].duplicated)).forEach((e=>{n.push({line:i.line||1,column:i.col||1,reason:`'WARN: 组件 \`${e}\` 只允许在 \`${l}\` 组件中出现一次`})})),e.childNodes=o.filter(((e,t)=>!(s[e.nodeName]&&s[e.nodeName].duplicated&&t!==s[e.nodeName].index))))}isSupportedSelfClosing(l)||!i.startTag||i.endTag||n.push({line:i.line||1,column:i.col||1,reason:"ERROR: 组件 `"+l+"` 缺少闭合标签,请检查"}),"list-item"===l&&hasIfOrFor(o)&&n.push({line:i.line||1,column:i.col||1,reason:"WARN: `list-item` 内部需谨慎使用指令 if 或 for,相同 type 属性的 list-item, DOM 结构必须完全相同`"})}}function checkId(e,t,a){if(e){const s=a.lite,n=a.newJSCard;t.result.id=_exp.default.isExpr(e)?(0,_exp.default)(e,!0,s,n):e,n&&(t.result.idRaw=e)}}function checkDataAttr(e){return REG_TAG_DATA_ATTR.test(e)}function checkBuild(e,t){e&&(t.result.append="tree"===e?"tree":"single")}function checkClass(className,output,options){let hasBinding,classList=[];className=className.trim();const isLite=options.lite,isNewJSCard=options.newJSCard;if(className){let start=0,end=0;const segs=[],matched=className.match(REG_CLASS_VALUE);if(matched){let e;matched.forEach((t=>{end=className.indexOf(t,start),e=className.slice(start,end),e.length&&segs.push(e),segs.push(t),start+=e.length+t.length}))}if(segs.push(className.slice(start)),classList=segs.reduce(((e,t)=>_exp.default.isExpr(t)?(hasBinding=!0,e.push((0,_exp.default)(t,!1,isLite)),e):e.concat(t.split(/\s+/g).filter((e=>e)).map((e=>isLite?e:`'${e}'`)))),[]),classList=classList.filter((e=>e.trim())),isLite){if(!isValidClassArray(segs)){const e=new Error("轻卡 class 样式不支持动态数据绑定 {{}} 和静态样式混用");throw e.isExpressionError=!0,e.expression=className,e}output.result.classList=classList}else if(hasBinding)try{let code="";isNewJSCard?(code="function () {return ["+classList.join(", ")+"]}",output.result.classList=code):(code="(function () {return ["+classList.join(", ")+"]})",output.result.classList=eval(code))}catch(e){throw e.isExpressionError=!0,e.expression=className,e}else output.result.classList=classList.map((e=>e.slice(1,-1)))}isNewJSCard&&(output.result.class=className,output.result.classListRaw=className)}function checkStyle(e,t,a,s){let n={},r={};const l=t.log;if(e){const o=s.lite,i=s.newJSCard;if(_exp.default.singleExpr(e)){const s=_exp.default.removeExprffix(e);return _exp.default.isExpr(s)?l.push({line:a.line||1,column:a.col||1,reason:"ERROR: style 属性不能嵌套多层{{}}"}):n=(0,_exp.default)(e,!0,o,i),t.result.style=n,void(i&&(t.result.styleRaw=e))}if(e.split(";").forEach((function(e){let t,u,c,p=e.trim().split(":");if(p.length>2&&(p[1]=p.slice(1).join(":"),p=p.slice(0,2)),2===p.length){t=p[0].trim(),t=(0,_utils.hyphenedToCamelCase)(t),u=p[1].trim();const e=u;u=(0,_exp.default)(u,!0,o,i),c=_style.default.validateDelaration(t,u,s),u=c.value,u.forEach((t=>{((0,_utils.isValidValue)(t.v)||"function"==typeof t.v)&&(n[t.n]=t.v,i&&(r[t.n]=e))})),c.log&&l.push({line:a.line||1,column:a.col||1,reason:c.log.reason})}})),"object"==typeof n)for(let e in n)_style.default.shouldAddToDependency(e,n[e])&&t.depFiles.push(n[e]);t.result.style=n,i&&(t.result.styleRaw=r)}}function checkIs(e,t,a,s){const n=t.log;if(e){e=_exp.default.addExprffix(e);const a=s.lite,n=s.newJSCard;t.result.is=(0,_exp.default)(e,!0,a,n),n&&(t.result.isRaw=e)}else n.push({line:a.line||1,column:a.col||1,reason:"WARN: is 属性为空"})}function checkIf(e,t,a,s,n,r){const l=t.log;if(e){e=_exp.default.addExprffix(e);const s=r.lite,l=r.newJSCard;a?e="{{"+buildConditionExp(n)+"}}":(n.length>0&&(n.length=0),n.push(`${e.substr(2,e.length-4)}`)),t.result.shown=s?e:(0,_exp.default)(e,!0,s,l),l&&(t.result.shownRaw=e)}else a||l.push({line:s.line||1,column:s.col||1,reason:"WARN: if 属性为空"})}function checkElse(e,t,a,s,n){checkIf(e,t,!0,a,s,n),s.length=0}function checkElif(e,t,a,s,n,r){const l=a.log;let o=t;if(e){e=_exp.default.addExprffix(e),t=_exp.default.addExprffix(t);const s=r.lite,l=r.newJSCard;o="{{("+e.substr(2,e.length-4)+") && "+buildConditionExp(n)+"}}",a.result.shown=s?o:(0,_exp.default)(o,!0,s,l),l&&(a.result.shownRaw=o),n.push(`${e.substr(2,e.length-4)}`)}else l.push({line:s.line||1,column:s.col||1,reason:"WARN: Elif 属性为空"});return o}function checkFor(e,t,a,s){const n=t.log;if(e){let a,n;const r=(e=_exp.default.removeExprffix(e)).match(/(.*) (?:in) (.*)/);if(r){const t=r[1].match(/\((.*),(.*)\)/);t?(a=t[1].trim(),n=t[2].trim()):n=r[1].trim(),e=r[2]}e="{{"+e+"}}";const l=s.lite,o=s.newJSCard;let i,u;a||n?(i={exp:(0,_exp.default)(e,!0,l,o)},u={expRaw:e},a&&(i.key=a),n&&(i.value=n)):(i=(0,_exp.default)(e,!0,l,o),u=e),t.result.repeat=i,o&&(t.result.repeatRaw=u)}else n.push({line:a.line||1,column:a.col||1,reason:"WARN: for 属性为空"})}function checkEvent(name,value,output,options){const originValue=value,eventName=name.replace(/^(on|@)/,"");if(eventName&&value){value=_exp.default.removeExprffix(value);const paramsMatch=value.match(/(.*)\((.*)\)/);if(paramsMatch){if(options.lite){const e=new Error("轻卡不支持带参数的事件");throw e.isExpressionError=!0,e.expression=value,e}const funcName=paramsMatch[1];let params=paramsMatch[2];params?(params=params.split(/\s*,\s*/),-1===params.indexOf("evt")&&(params[params.length]="evt")):params=["evt"],value="{{"+funcName+"("+params.join(",")+")}}";try{value=options.newJSCard?"function (evt) { return "+(0,_exp.default)(value,!1).replace("this.evt","evt")+"}":eval("(function (evt) { return "+(0,_exp.default)(value,!1).replace("this.evt","evt")+"})")}catch(e){throw e.isExpressionError=!0,e.expression=originValue,e}}output.result.events=output.result.events||{},output.result.events[eventName]=value}}function checkCustomDirective(e,t,a,s,n){const r=e.replace(/^dir:/,"");if(!r)return _sharedUtils.colorconsole.warn(`\`${s.tagName}\` 组件自定义指令名称不能为空`),!1;const l=n.newJSCard;a.result.directives=a.result.directives||[],l?(t=_exp.default.addExprffix(t),a.result.directives.push({name:r,value:_exp.default.isExpr(t)?(0,_exp.default)(t,!0,n.lite,n.newJSCard):t,valueRaw:t})):a.result.directives.push({name:r,value:_exp.default.isExpr(t)?(0,_exp.default)(t,!0,n.lite,n.newJSCard):t})}function checkAttr(e,t,a,s,n,r){if(e&&(0,_utils.isValidValue)(t)){const l=r.cardEntry;if(shouldConvertPath(e,t,s)){if(!_exp.default.isExpr(t)){(0,_utils.fileExists)(t,r.filePath)||a.log.push({line:n.line,column:n.column,reason:"WARN: "+s+" 属性 "+e+" 的值 "+t+" 下不存在对应的文件资源"})}t=(0,_utils.resolvePath)(t,r.filePath,l),a.depFiles.push(t)}const o=r.lite,i=r.newJSCard;a.result.attr=a.result.attr||{},a.result.attr[(0,_utils.hyphenedToCamelCase)(e)]=(0,_exp.default)(t,!0,o,i),i&&(a.result.attr[(0,_utils.hyphenedToCamelCase)(e)+"Raw"]=t),"value"===e&&"text"===s&&a.log.push({line:n.line,column:n.column,reason:"WARN: `value` 应该写在<text>标签中"})}}function shouldConvertPath(e,t,a){return!("alt"===e&&"blank"===t)&&!(!(["src","alt"].includes(e)&&t&&["img","video"].indexOf(a)>-1)||/^(data:|http|{{)/.test(t))}function isReservedTag(e){return tagReserved.hasOwnProperty(e)}function isTextContentAtomic(e){return tagTextContent.hasOwnProperty(e)&&tagAtomics.hasOwnProperty(e)}function isNotTextContentAtomic(e){return!tagTextContent.hasOwnProperty(e)&&!tagAtomics.hasOwnProperty(e)}function isSupportSpan(e){if(e&&"string"==typeof e)return tagChildrenMap[e]&&tagChildrenMap[e].indexOf("span")>-1}function getTagChildren(e){if(e&&"string"==typeof e)return tagChildrenMap[e]||[]}function isSupportedSelfClosing(e){if(e&&"string"==typeof e)return e=tagAliasMap[e]||e,tagNatives[e]&&!!tagNatives[e].selfClosing}function hasTagDefined(e){return tagNativeKeys.indexOf(e)>-1||tagComponents.indexOf(e)>-1}function isEmptyElement(e){return e=tagAliasMap[e]||e,tagNatives[e]&&!0===tagNatives[e].empty}function buildConditionExp(e){return e.map((e=>`!(${e})`)).join(" && ")}function hasIfOrFor(e){let t=!1;return e.find((e=>(e.attrs||[]).findIndex((e=>["for","if"].indexOf(e.name)>-1))>-1?(t=!0,t):Array.isArray(e.childNodes)?(t=hasIfOrFor(e.childNodes),t):void 0)),t}function isValidClassArray(e){const t=e.filter((e=>e.length>0));let a=!1;for(let e=0;e<t.length;e++)if(_exp.default.isExpr(t[e])){a=!0;break}return!a||1===t.length}tagNativeKeys.forEach((function(e){tagReserved[e]=!0;const t=tagNatives[e];t.atomic&&(tagAtomics[e]=!0),t.textContent&&(tagTextContent[e]=!0),t.empty&&(tagEmpty[e]=!0),t.alias&&t.alias.length&&t.alias.forEach((function(t){tagAliasMap[t]=e})),!0===t.excludeRoot&&(tagNotRoot[e]=!0);let a=(0,_sharedUtils.extend)({},t.attrs);const s={},n={},r=[];t.attrs&&!1===t.attrs.extendCommon||(a=(0,_sharedUtils.extend)(a,tagCommon.attrs)),"extendCommon"in a&&delete a.extendCommon,Object.keys(a).forEach((function(e){const t=a[e];t.enum&&t.enum.length>0&&(s[e]=t.enum,n[e]=t.enum[0]),t.def&&(n[e]=t.def),!0===t.required&&r.push(e)})),tagAttrMap[e]=a,tagEnumAttrMap[e]=s,tagDefaultAttrMap[e]=n,tagRequireAttrMap[e]=r,tagChildrenMap[e]=t.children?(0,_utils.merge)([],tagCommon.children,t.children):null,tagOnceChildrenMap[e]=t.onceChildren?(0,_utils.merge)([],t.onceChildren):null,tagParentsMap[e]=t.parents?(0,_utils.merge)([],tagCommon.parents,t.parents):null,tagEventsMap[e]=(0,_utils.merge)([],tagCommon.events,t.events)}));var _default={checkTagName:checkTagName,checkId:checkId,checkClass:checkClass,checkStyle:checkStyle,checkIs:checkIs,checkIf:checkIf,checkElse:checkElse,checkElif:checkElif,checkFor:checkFor,checkEvent:checkEvent,checkCustomDirective:checkCustomDirective,checkAttr:checkAttr,checkBuild:checkBuild,checkModel:_model.default,isReservedTag:isReservedTag,isTextContentAtomic:isTextContentAtomic,isSupportSpan:isSupportSpan,getTagChildren:getTagChildren,isSupportedSelfClosing:isSupportedSelfClosing,isEmptyElement:isEmptyElement,isNotTextContentAtomic:isNotTextContentAtomic,isExpr:_exp.default.isExpr,parseText:_exp.default.parseText};exports.default=_default;
2
2
  //# sourceMappingURL=validator.js.map
package/lib/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FRAG_TYPE=exports.ENTRY_TYPE=void 0,exports.camelCaseToHyphened=camelCaseToHyphened,exports.fileExists=fileExists,exports.hyphenedToCamelCase=hyphenedToCamelCase,exports.isEmptyObject=isEmptyObject,exports.isValidValue=isValidValue,exports.merge=merge,exports.resolvePath=resolvePath,exports.serialize=serialize,exports.splitAttr=splitAttr;var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_sharedUtils=require("@hap-toolkit/shared-utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function merge(e,...t){return t.length&&t.forEach((t=>{e=e.concat(t)})),e}function hyphenedToCamelCase(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function camelCaseToHyphened(e){return e.replace(/([A-Z])/g,(function(e,t){return"-"+t.toLowerCase()}))}function isEmptyObject(e){if(!e)return!0;for(const t in e)return!1;return!0}function serialize(e,t){const r=typeof e;if("undefined"===r)return e;if("function"===r)return e.toString();const o=[];let n=-1,s=`__FKS_${Math.random().toString(16).slice(2,10)}_FKE__`;const a=JSON.stringify(e,((e,t)=>"function"==typeof t?"":t));for(;a.indexOf(s)>-1;)s=`_${s}_`;let i=JSON.stringify(e,(function(e,t){return"function"==typeof t?(o.push(t),n++,s+n):t}),t);const l=new RegExp(`"${s}(\\d+)"`,"g");return i=i.replace(l,((e,t)=>o[t].toString())),i}function splitAttr(e,t){const r=[];if(t)switch(e.forEach(((e,t)=>{r[t]={},r[t].n=e})),t.length){case 1:e.forEach(((e,o)=>{r[o].v=t[0]}));break;case 2:e.forEach(((e,o)=>{r[o].v=o%2?t[1]:t[0]}));break;case 3:e.forEach(((e,o)=>{r[o].v=o%2?t[1]:t[o]}));break;default:e.forEach(((e,o)=>{r[o].v=t[o]}))}return r}function isValidValue(e){return"number"==typeof e||"string"==typeof e}function resolvePath(e,t){if(t&&!_path.default.isAbsolute(e)){const r=_path.default.join(_path.default.dirname(t),e),o=_path.default.relative(_path.default.resolve(_sharedUtils.globalConfig.projectPath,"./src"),r);e=_path.default.join("/",o).replace(/\\/g,"/")}return e}function fileExists(e,t){let r;if(_path.default.isAbsolute(e)){const t=_sharedUtils.globalConfig.projectPath;r=_path.default.join(t,"./src",e)}else r=_path.default.resolve(t,"../",e);return _fs.default.existsSync(r)}const ENTRY_TYPE={APP:"app",PAGE:"page",COMP:"comp",CARD:"card",JS:"js"};exports.ENTRY_TYPE=ENTRY_TYPE;const FRAG_TYPE={IMPORT:"import",TEMPLATE:"template",STYLE:"style",SCRIPT:"script"};exports.FRAG_TYPE=FRAG_TYPE;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FRAG_TYPE=exports.ENTRY_TYPE=void 0,exports.camelCaseToHyphened=camelCaseToHyphened,exports.fileExists=fileExists,exports.hyphenedToCamelCase=hyphenedToCamelCase,exports.isEmptyObject=isEmptyObject,exports.isValidValue=isValidValue,exports.merge=merge,exports.resolvePath=resolvePath,exports.serialize=serialize,exports.splitAttr=splitAttr;var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_sharedUtils=require("@hap-toolkit/shared-utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function merge(e,...t){return t.length&&t.forEach((t=>{e=e.concat(t)})),e}function hyphenedToCamelCase(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function camelCaseToHyphened(e){return e.replace(/([A-Z])/g,(function(e,t){return"-"+t.toLowerCase()}))}function isEmptyObject(e){if(!e)return!0;for(const t in e)return!1;return!0}function serialize(e,t){const r=typeof e;if("undefined"===r)return e;if("function"===r)return e.toString();const o=[];let a=-1,n=`__FKS_${Math.random().toString(16).slice(2,10)}_FKE__`;const s=JSON.stringify(e,((e,t)=>"function"==typeof t?"":t));for(;s.indexOf(n)>-1;)n=`_${n}_`;let i=JSON.stringify(e,(function(e,t){return"function"==typeof t?(o.push(t),a++,n+a):t}),t);const l=new RegExp(`"${n}(\\d+)"`,"g");return i=i.replace(l,((e,t)=>o[t].toString())),i}function splitAttr(e,t){const r=[];if(t)switch(e.forEach(((e,t)=>{r[t]={},r[t].n=e})),t.length){case 1:e.forEach(((e,o)=>{r[o].v=t[0]}));break;case 2:e.forEach(((e,o)=>{r[o].v=o%2?t[1]:t[0]}));break;case 3:e.forEach(((e,o)=>{r[o].v=o%2?t[1]:t[o]}));break;default:e.forEach(((e,o)=>{r[o].v=t[o]}))}return r}function isValidValue(e){return"number"==typeof e||"string"==typeof e}function resolvePath(e,t,r){if(t&&!_path.default.isAbsolute(e)){const o=_path.default.join(_path.default.dirname(t),e);let a;a=r&&t.indexOf("node_modules")>-1?_path.default.join(r,_path.default.relative(_sharedUtils.globalConfig.projectPath,o)):_path.default.relative(_path.default.resolve(_sharedUtils.globalConfig.projectPath,"./src"),o);e=_path.default.join("/",a).replace(/\\/g,"/")}return e}function fileExists(e,t){let r;if(_path.default.isAbsolute(e)){const t=_sharedUtils.globalConfig.projectPath;r=_path.default.join(t,"./src",e)}else r=_path.default.resolve(t,"../",e);return _fs.default.existsSync(r)}const ENTRY_TYPE={APP:"app",PAGE:"page",COMP:"comp",CARD:"card",JS:"js"};exports.ENTRY_TYPE=ENTRY_TYPE;const FRAG_TYPE={IMPORT:"import",TEMPLATE:"template",STYLE:"style",SCRIPT:"script"};exports.FRAG_TYPE=FRAG_TYPE;
2
2
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hap-toolkit/compiler",
3
- "version": "1.9.17-alpha.13",
3
+ "version": "1.9.17-alpha.15",
4
4
  "description": "compiler of hap-toolkit",
5
5
  "engines": {
6
6
  "node": ">=14.0.0"
@@ -22,11 +22,11 @@
22
22
  "lib/**/*.js"
23
23
  ],
24
24
  "dependencies": {
25
- "@hap-toolkit/shared-utils": "1.9.17-alpha.13",
25
+ "@hap-toolkit/shared-utils": "1.9.17-alpha.15",
26
26
  "@jayfate/path": "^0.0.13",
27
27
  "css": "^2.2.4",
28
28
  "css-what": "^2.1.3",
29
29
  "parse5": "^3.0.3"
30
30
  },
31
- "gitHead": "ec45f197c9e1b1d0295ccafc1db2a3bfbce0fdd1"
31
+ "gitHead": "b73ce799a7e56f9ab55e90bd724052b74de75a3f"
32
32
  }