@hap-toolkit/compiler 2.0.9-beta.1 → 2.0.10-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/style/mediaquery.js +1 -1
- package/package.json +3 -3
package/lib/style/mediaquery.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const RE_MEDIA_QUERY=/(?:(only|not)?\s*)?(\s*[^\s()]+)?(?:(?:\s*(and)\s*)?(.+))?/i,RE_MEDIA_FEATURE=/^(\(\s*[^()]+\)\s+[a-zA-Z]+\s+)+\(\s*[^()]+\)\s*$|^\(\s*[^()]+\)$/,RE_MQ_DISCRETE_EXPRESSION=/\(\s*([^\s:)]+)\s*(?::\s*([^\s)]+))?\s*\)/,RE_MQ_RANGE_EXPRESSION=/^\((?:([-+]?\d*\.?(?:\d+[a-zA-Z]*|\d+\s*\/\s*\d+))\s*(<|>|<=|>=)?\s*)?(aspect-ratio|resolution|width|height|device-width|device-height)(?:\s*(<|>|<=|>=)?\s*([-+]?\d*\.?(?:\d+[a-zA-Z]*|\d+\s*\/\s*\d+)))?\)$/,mediaQueryTypes=["screen"],featureValidatorMap={height:"number","min-height":"number","max-height":"number",width:"number","min-width":"number","max-width":"number",resolution:"resolution","min-resolution":"resolution","max-resolution":"resolution",orientation:"orientation","aspect-ratio":"ratio","min-aspect-ratio":"ratio","max-aspect-ratio":"ratio","device-height":"number","min-device-height":"number","max-device-height":"number","device-width":"number","min-device-width":"number","max-device-width":"number","prefers-color-scheme":"preferColorScheme",scene:"scene","widget-size":"widgetSize","device-type":"deviceType","fold-state":"foldState",manufacturer:"manufacturer","theme-mode":"themeMode"},featureValidator={number:e=>/^(\d+)(px|dp)?$/.test(e)?{value:e}:{reason:function(t){return"ERROR: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `数值`"}},resolution(e){if(/^\d+(dpi|dppx)$/.test(e))return{value:e};if(/^\d+$/.test(e)){return{value:e+"dpi",reason:function(e){return"WARN: 媒体特征 `"+e+"` 的单位为 `dpi | dppx` 自动补齐为 `dpi`"}}}return{reason:function(t){return"ERROR: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `数值 + dpi | dppx`"}}},orientation:e=>/^(portrait|landscape)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `portrait | landscape`"}},scene:e=>/^(assistantscreen|launcher|globalsearch|calendar|lockscreen|suggestion|voiceassistant|sms|servicecenter|cardesktop|pictorial)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `assistantscreen | launcher | globalsearch | calendar | lockscreen | suggestion | voiceassistant | sms | servicecenter | cardesktop | pictorial`"}},widgetSize(e){if(e){let t=e.trim();'"'!==t[0]&&"'"!==t[0]||(t=t.slice(1,t.length-1));if(/^(1|2|4|8|AUTO|FULL)x(1|2|4|8|AUTO|FULL)$/.test(t))return{value:t}}return{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `1x1 | 1x2 | 2x1 | 2x2 | 4x2 | 4x4 | 4xN`"}}},deviceType:e=>/^(phone|watch|car|tablet|foldable|flip)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `phone | watch | car`"}},foldState:e=>/^(close|open)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `close | open`"}},manufacturer:e=>/^(xiaomi|vivo|OPPO|honor)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `xiaomi | vivo | OPPO| honor`"}},ratio:e=>/^(\d+\s*\/\s*\d+|\d+\.\d+|\d+)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `数值 | 数值/数值`"}},preferColorScheme:e=>/^(light|dark|no-preference)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `light | dark | no-preference`"}},themeMode:e=>/^(color|default)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `color | default`"}}};function parseQuery(e){const t=[];return{result:e.split(",").map((function(e){const r=(e=e.trim()).match(RE_MEDIA_QUERY),n=r[1],
|
|
1
|
+
"use strict";const RE_MEDIA_QUERY=/(?:(only|not)?\s*)?(\s*[^\s()]+)?(?:(?:\s*(and)\s*)?(.+))?/i,RE_MEDIA_FEATURE=/^(\(\s*[^()]+\)\s+[a-zA-Z]+\s+)+\(\s*[^()]+\)\s*$|^\(\s*[^()]+\)$/,RE_MQ_DISCRETE_EXPRESSION=/\(\s*([^\s:)]+)\s*(?::\s*([^\s)]+))?\s*\)/,RE_MQ_RANGE_EXPRESSION=/^\((?:([-+]?\d*\.?(?:\d+[a-zA-Z]*|\d+\s*\/\s*\d+))\s*(<|>|<=|>=)?\s*)?(aspect-ratio|resolution|width|height|device-width|device-height)(?:\s*(<|>|<=|>=)?\s*([-+]?\d*\.?(?:\d+[a-zA-Z]*|\d+\s*\/\s*\d+)))?\)$/,mediaQueryTypes=["screen"],featureValidatorMap={height:"number","min-height":"number","max-height":"number",width:"number","min-width":"number","max-width":"number",resolution:"resolution","min-resolution":"resolution","max-resolution":"resolution",orientation:"orientation","aspect-ratio":"ratio","min-aspect-ratio":"ratio","max-aspect-ratio":"ratio","device-height":"number","min-device-height":"number","max-device-height":"number","device-width":"number","min-device-width":"number","max-device-width":"number","prefers-color-scheme":"preferColorScheme",scene:"scene","widget-size":"widgetSize","device-type":"deviceType","fold-state":"foldState",manufacturer:"manufacturer","theme-mode":"themeMode"},featureValidator={number:e=>/^(\d+)(px|dp)?$/.test(e)?{value:e}:{reason:function(t){return"ERROR: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `数值`"}},resolution(e){if(/^\d+(dpi|dppx)$/.test(e))return{value:e};if(/^\d+$/.test(e)){return{value:e+"dpi",reason:function(e){return"WARN: 媒体特征 `"+e+"` 的单位为 `dpi | dppx` 自动补齐为 `dpi`"}}}return{reason:function(t){return"ERROR: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `数值 + dpi | dppx`"}}},orientation:e=>/^(portrait|landscape)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `portrait | landscape`"}},scene:e=>/^(assistantscreen|launcher|globalsearch|calendar|lockscreen|suggestion|voiceassistant|sms|servicecenter|cardesktop|pictorial|notification|island)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `assistantscreen | launcher | globalsearch | calendar | lockscreen | suggestion | voiceassistant | sms | servicecenter | cardesktop | pictorial | notification | island`"}},widgetSize(e){if(e){let t=e.trim();'"'!==t[0]&&"'"!==t[0]||(t=t.slice(1,t.length-1));if(/^(1|2|4|8|AUTO|FULL)x(1|2|4|8|AUTO|FULL)$/.test(t))return{value:t}}return{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `1x1 | 1x2 | 2x1 | 2x2 | 4x2 | 4x4 | 4xN`"}}},deviceType:e=>/^(phone|watch|car|tablet|foldable|flip)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `phone | watch | car`"}},foldState:e=>/^(close|open)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `close | open`"}},manufacturer:e=>/^(xiaomi|vivo|OPPO|honor)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `xiaomi | vivo | OPPO| honor`"}},ratio:e=>/^(\d+\s*\/\s*\d+|\d+\.\d+|\d+)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `数值 | 数值/数值`"}},preferColorScheme:e=>/^(light|dark|no-preference)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `light | dark | no-preference`"}},themeMode:e=>/^(color|default)$/.test(e)?{value:e}:{reason:function(t){return"WARN: 媒体特征 `"+t+"` 的值 `"+e+"` 不正确, 必须为 `color | default`"}}};function parseQuery(e){const t=[];return{result:e.split(",").map((function(e){const r=(e=e.trim()).match(RE_MEDIA_QUERY),n=r[1],i=r[2],a=r[3],o=r[4]||"";if(o&&!o.match(RE_MEDIA_FEATURE))return void t.push("WARN: 媒体特征格式错误");const s={};s.modifier=n,s.type=i?i.toLowerCase():"screen";let u=o.match(/\([^)]+\)/g)||[];return s.operator=a,s.expressions=u.map((function(r){const n=new RegExp(`\\)\\s+([a-zA-Z]+)?\\s+${r.replace(/\(/,"\\(").replace(/\)/,"\\)")}`),i=e.match(n);let a="";if(i&&(a=i[1],"and"!==a&&"or"!==a))return void t.push("WARN: 媒体特征连接符必须为 and 或者 or");let o=r.match(RE_MQ_DISCRETE_EXPRESSION);return o?{type:"discrete",combineSymbol:a,feature:o[1],value:o[2]}:(o=r.match(RE_MQ_RANGE_EXPRESSION),o?{type:"range",combineSymbol:a,beforeValue:o[1],beforeSymbol:o[2],feature:o[3],afterSymbol:o[4],afterValue:o[5]}:void t.push('WARN: 无效的媒体特征表达式: "'+r+'"'))})),s})),error:t}}function validateDiscreteValue(e,t,r,n){const i=featureValidator[r](e.value),{value:a,reason:o}=i;let s="";return o&&o&&n.push(o(t)),a&&(s+=`${t}: ${a}`),s}function validateRangeValue(e,t,r,n){function i(e){let i=featureValidator[r](e);const{reason:a,value:o}=i;return a&&n.push(a(t)),o}let{beforeValue:a,beforeSymbol:o,afterSymbol:s,afterValue:u}=e,d=t;if(a){if(a=i(a),!a)return"";d=`${a} ${o} ${d}`}if(u){if(u=i(u),!u)return"";d=`${d} ${s} ${u}`}return d}function validateMediaCondition(e){if(e){const t=[],r=parseQuery(e);if(r.error.length>0)return r.error.forEach((r=>{r+=", 表达式: `"+e+"` 有错误,请检查",t.push(r)})),{reason:t};const n=[];return r.result.forEach((e=>{const{modifier:r,type:i,operator:a,expressions:o}=e;if(-1===mediaQueryTypes.indexOf(i))return void t.push("WARN: 媒体类型 `"+i+"` 不支持");let s=a||"";o.length>0&&!a&&(s="and");let u=r?`${r} ${i} ${s}`:`${i} ${s}`;o.forEach((e=>{const{feature:r,combineSymbol:n,type:i}=e,a=featureValidatorMap[r];if(!a)return u="",void t.push("WARN: 媒体特征 `"+r+"` 不支持");let o="";"discrete"===i?o=validateDiscreteValue(e,r,a,t):"range"===i&&(o=validateRangeValue(e,r,a,t)),o?u+=n?` ${n} (${o})`:` (${o})`:u=""})),n.push(u)})),{value:n.join(" or "),reason:t}}return{value:""}}function findMediaClassByCondition(e,t){if(t){return e.find((e=>e.condition===t))}return null}function wrapMediaCode(e,t){return`@media ${t} {\n${e}\n}`}module.exports={validateMediaCondition:validateMediaCondition,findMediaClassByCondition:findMediaClassByCondition,wrapMediaCode:wrapMediaCode};
|
|
2
2
|
//# sourceMappingURL=mediaquery.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hap-toolkit/compiler",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.10-beta.1",
|
|
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": "2.0.
|
|
25
|
+
"@hap-toolkit/shared-utils": "2.0.10-beta.1",
|
|
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": "
|
|
31
|
+
"gitHead": "7827c500e6f563926d0c1bd36d9e871ec8e7f29e"
|
|
32
32
|
}
|