| 22357 | }; |
| 22358 | |
| 22359 | function parseRawOption(rawOption, optionPreprocessorFuncs, isNew) { |
| 22360 | var timelineOptions = []; |
| 22361 | var mediaList = []; |
| 22362 | var mediaDefault; |
| 22363 | var baseOption; |
| 22364 | |
| 22365 | // Compatible with ec2. |
| 22366 | var timelineOpt = rawOption.timeline; |
| 22367 | |
| 22368 | if (rawOption.baseOption) { |
| 22369 | baseOption = rawOption.baseOption; |
| 22370 | } |
| 22371 | |
| 22372 | // For timeline |
| 22373 | if (timelineOpt || rawOption.options) { |
| 22374 | baseOption = baseOption || {}; |
| 22375 | timelineOptions = (rawOption.options || []).slice(); |
| 22376 | } |
| 22377 | |
| 22378 | // For media query |
| 22379 | if (rawOption.media) { |
| 22380 | baseOption = baseOption || {}; |
| 22381 | var media = rawOption.media; |
| 22382 | each$4(media, function (singleMedia) { |
| 22383 | if (singleMedia && singleMedia.option) { |
| 22384 | if (singleMedia.query) { |
| 22385 | mediaList.push(singleMedia); |
| 22386 | } |
| 22387 | else if (!mediaDefault) { |
| 22388 | // Use the first media default. |
| 22389 | mediaDefault = singleMedia; |
| 22390 | } |
| 22391 | } |
| 22392 | }); |
| 22393 | } |
| 22394 | |
| 22395 | // For normal option |
| 22396 | if (!baseOption) { |
| 22397 | baseOption = rawOption; |
| 22398 | } |
| 22399 | |
| 22400 | // Set timelineOpt to baseOption in ec3, |
| 22401 | // which is convenient for merge option. |
| 22402 | if (!baseOption.timeline) { |
| 22403 | baseOption.timeline = timelineOpt; |
| 22404 | } |
| 22405 | |
| 22406 | // Preprocess. |
| 22407 | each$4([baseOption].concat(timelineOptions) |
| 22408 | .concat(map(mediaList, function (media) { |
| 22409 | return media.option; |
| 22410 | })), |
| 22411 | function (option) { |
| 22412 | each$4(optionPreprocessorFuncs, function (preProcess) { |
| 22413 | preProcess(option, isNew); |
| 22414 | }); |
| 22415 | } |
| 22416 | ); |