@@ -80,6 +80,14 @@ class MagicMoveText extends Component {
8080 * @member {Object[]} charsVdom=[]
8181 */
8282 charsVdom = [ ]
83+ /**
84+ * @member {Number} contentHeight=0
85+ */
86+ contentHeight = 0
87+ /**
88+ * @member {Number} contentWidth=0
89+ */
90+ contentWidth = 0
8391 /**
8492 * @member {Number} currentIndex=0
8593 */
@@ -100,7 +108,13 @@ class MagicMoveText extends Component {
100108 * @member {Object} measureElement
101109 */
102110 get measureElement ( ) {
103- return this . vdom . cn [ 1 ] . cn [ 0 ]
111+ return this . measureWrapper . cn [ 0 ]
112+ }
113+ /**
114+ * @member {Object} measureElement
115+ */
116+ get measureWrapper ( ) {
117+ return this . vdom . cn [ 1 ]
104118 }
105119
106120 construct ( config ) {
@@ -176,8 +190,17 @@ class MagicMoveText extends Component {
176190
177191 let me = this ;
178192
193+ if ( value ) {
194+ me . getDomRect ( ) . then ( rect => {
195+ me . contentHeight = rect . height ;
196+ me . contentWidth = rect . width ;
197+
198+ me . autoCycle && me . startAutoCycle ( value )
199+ } )
200+ }
201+
179202 oldValue !== undefined && me . addResizeObserver ( value ) ;
180- me . autoCycle && me . startAutoCycle ( value )
203+
181204 }
182205
183206 /**
@@ -233,19 +256,24 @@ class MagicMoveText extends Component {
233256 */
234257 async measureChars ( ) {
235258 let me = this ,
236- { measureCache, measureElement, text} = me ,
259+ { measureCache, measureElement, measureWrapper , text} = me ,
237260 parentRect , rects ;
238261
239262 if ( measureCache [ text ] ) {
240263 rects = [ ...measureCache [ text ] ] ;
241264 parentRect = rects . shift ( )
242265 } else {
243- delete me . vdom . cn [ 1 ] . removeDom ;
266+ measureWrapper . style = {
267+ height : me . contentHeight + 'px' ,
268+ width : me . contentWidth + 'px'
269+ } ;
270+
271+ delete measureWrapper . removeDom ;
244272
245273 await me . promiseUpdate ( ) ;
246274 await me . timeout ( 20 ) ;
247275
248- rects = await me . getDomRect ( [ me . vdom . cn [ 1 ] . id , ...measureElement . cn . map ( node => node . id ) ] ) ;
276+ rects = await me . getDomRect ( [ measureWrapper . id , ...measureElement . cn . map ( node => node . id ) ] ) ;
249277 parentRect = rects . shift ( ) ;
250278
251279 measureCache [ text ] = [ parentRect , ...rects ]
@@ -256,7 +284,7 @@ class MagicMoveText extends Component {
256284 me . chars [ index ] . top = `${ rect . top - parentRect . top } px` ;
257285 } ) ;
258286
259- me . vdom . cn [ 1 ] . removeDom = true ;
287+ measureWrapper . removeDom = true ;
260288 await me . promiseUpdate ( )
261289 }
262290
0 commit comments