UNPKG

wux-weapp

Version:

一套组件化、可复用、易扩展的微信小程序 UI 组件库

1 lines 5.73 kB
"use strict";var _baseComponent=_interopRequireDefault(require("../helpers/baseComponent")),_classNames=_interopRequireDefault(require("../helpers/libs/classNames")),_styleToCssString=_interopRequireDefault(require("../helpers/libs/styleToCssString")),_runes=_interopRequireDefault(require("../helpers/libs/runes2")),_pxToNumber=require("../helpers/shared/pxToNumber"),_useDOM=require("../helpers/hooks/useDOM");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}function _arrayWithHoles(e){if(Array.isArray(e))return e}function ownKeys(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(r,!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(r).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function getSubString(e,t,r){return e.slice(t,r).join("")}(0,_baseComponent.default)({properties:{prefixCls:{type:String,value:"wux-ellipsis"},content:{type:String,value:""},direction:{type:String,value:"end"},defaultExpanded:{type:Boolean,value:!1},expandText:{type:String,value:""},collapseText:{type:String,value:""},rows:{type:Number,value:1}},data:{ellipsised:{leading:"",tailing:""},expanded:!1,exceeded:!1,innerText:"",end:-1,containerStyle:""},observers:_defineProperty({},"prefixCls, content, direction, rows, expandText, collapseText",function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0],i=t[1],o=t[2],a=t[3],s=t[4],l=t[5];this.calcEllipsised({prefixCls:n,content:i,direction:o,rows:a,expandText:s,collapseText:l})}),computed:{classes:["prefixCls",function(e){return{wrap:(0,_classNames.default)(e),container:(0,_classNames.default)(e,["".concat(e,"--container")]),expanded:"".concat(e,"__expanded"),collapsed:"".concat(e,"__collapsed")}}]},methods:{onTap:function(){this.triggerEvent("click")},setExpanded:function(e){var t=e.target.dataset.expanded;this.setDataPromise({expanded:"1"===t})},calcEllipsised:function(n){function i(e){a.data.exceeded!==e&&a.setDataPromise({exceeded:e})}function o(e){a.data.ellipsised!==e&&a.setDataPromise({ellipsised:e})}var a=this,e=(0,_runes.default)(n.content),s=n.content.length,l=Math.floor((0+s)/2),t={innerText:n.content,chars:e,end:s,middle:l,containerStyle:""};this.getRootRef().then(function(e){return a.setDataPromise(_objectSpread({},t,{containerStyle:(0,_styleToCssString.default)({width:e.width,wordBreak:e.wordBreak}),removeContainer:!1})).then(function(){return Promise.all([Promise.resolve(e),a.getContainerRef()])})}).then(function(e){var t=_slicedToArray(e,2),r=t[0];t[1].clientHeight<=r.maxHeight?i(!1):(i(!0),"middle"===n.direction?a.checkMiddle([0,l],[l,s],a.data).then(o):a.check(0,s,a.data).then(o))})},check:function(n,i,o){var a=this,e=o.chars,t=o.content.length,r=o.expanded?o.collapseText:o.expandText;if(i-n<=1)return"end"===o.direction?Promise.resolve({leading:getSubString(e,0,n)+"..."}):Promise.resolve({tailing:"..."+getSubString(e,i,t)});var s=Math.round((n+i)/2),l="end"===o.direction?getSubString(e,0,s)+"..."+r:r+"..."+getSubString(e,s,t);return this.setDataPromise({innerText:l}).then(function(){return Promise.all([a.getRootRef(),a.getContainerRef()])}).then(function(e){var t=_slicedToArray(e,2),r=t[0];return t[1].clientHeight<=r.maxHeight?"end"===o.direction?a.check(s,i,o):a.check(n,s,o):"end"===o.direction?a.check(n,s,o):a.check(s,i,o)})},checkMiddle:function(n,i,o){var a=this,e=o.chars,t=o.content.length,r=o.expanded?o.collapseText:o.expandText;if(n[1]-n[0]<=1&&i[1]-i[0]<=1)return Promise.resolve({leading:getSubString(e,0,n[0])+"...",tailing:"..."+getSubString(e,i[1],t)});var s=Math.floor((n[0]+n[1])/2),l=Math.ceil((i[0]+i[1])/2),c=getSubString(e,0,s)+"..."+r+"..."+getSubString(e,l,t);return this.setDataPromise({innerText:c}).then(function(){return Promise.all([a.getRootRef(),a.getContainerRef()])}).then(function(e){var t=_slicedToArray(e,2),r=t[0];return t[1].clientHeight<=r.maxHeight?a.checkMiddle([s,n[1]],[i[0],l],o):a.checkMiddle([n[0],s],[l,i[1]],o)})},setDataPromise:function(t){var r=this;return new Promise(function(e){r.setData(t,e)})},getContainerRef:function(){var e=this.data.prefixCls;return(0,_useDOM.useRef)(".".concat(e,"--container"),this)},getRootRef:function(){var e=this.data,t=e.prefixCls,i=e.rows;return(0,_useDOM.useComputedStyle)(".".concat(t),["width","wordBreak","lineHeight","paddingTop","paddingBottom"],this).then(function(e){var t=(0,_pxToNumber.pxToNumber)(e.width),r=(0,_pxToNumber.pxToNumber)(e.lineHeight),n=Math.floor(r*(i+.5)+(0,_pxToNumber.pxToNumber)(e.paddingTop)+(0,_pxToNumber.pxToNumber)(e.paddingBottom));return{width:t,wordBreak:e.wordBreak,maxHeight:n}})}},attached:function(){var e=this.data,t=e.defaultExpanded;this.setDataPromise({expanded:t}),this.calcEllipsised(_objectSpread({},e,{expanded:t}))}});