* [RAW_OPTION_PATTERNS] * (Note: "series: []" represents all other props in `ECUnitOption`) * * (1) No prop "baseOption" declared: * Root option is used as "baseOption" (except prop "options" and "media"). * ```js * option = { * series: [], * timeline:
( // `rawOption` May be modified
rawOption, optionPreprocessorFuncs, isNew)
| 18960 | |
| 18961 | |
| 18962 | function parseRawOption( // `rawOption` May be modified |
| 18963 | rawOption, optionPreprocessorFuncs, isNew) { |
| 18964 | var mediaList = []; |
| 18965 | var mediaDefault; |
| 18966 | var baseOption; |
| 18967 | var declaredBaseOption = rawOption.baseOption; // Compatible with ec2, [RAW_OPTION_PATTERNS] above. |
| 18968 | |
| 18969 | var timelineOnRoot = rawOption.timeline; |
| 18970 | var timelineOptionsOnRoot = rawOption.options; |
| 18971 | var mediaOnRoot = rawOption.media; |
| 18972 | var hasMedia = !!rawOption.media; |
| 18973 | var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline); |
| 18974 | |
| 18975 | if (declaredBaseOption) { |
| 18976 | baseOption = declaredBaseOption; // For merge option. |
| 18977 | |
| 18978 | if (!baseOption.timeline) { |
| 18979 | baseOption.timeline = timelineOnRoot; |
| 18980 | } |
| 18981 | } // For convenience, enable to use the root option as the `baseOption`: |
| 18982 | // `{ ...normalOptionProps, media: [{ ... }, { ... }] }` |
| 18983 | else { |
| 18984 | if (hasTimeline || hasMedia) { |
| 18985 | rawOption.options = rawOption.media = null; |
| 18986 | } |
| 18987 | |
| 18988 | baseOption = rawOption; |
| 18989 | } |
| 18990 | |
| 18991 | if (hasMedia) { |
| 18992 | if (isArray(mediaOnRoot)) { |
| 18993 | each(mediaOnRoot, function (singleMedia) { |
| 18994 | if ("development" !== 'production') { |
| 18995 | // Real case of wrong config. |
| 18996 | if (singleMedia && !singleMedia.option && isObject(singleMedia.query) && isObject(singleMedia.query.option)) { |
| 18997 | error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }'); |
| 18998 | } |
| 18999 | } |
| 19000 | |
| 19001 | if (singleMedia && singleMedia.option) { |
| 19002 | if (singleMedia.query) { |
| 19003 | mediaList.push(singleMedia); |
| 19004 | } else if (!mediaDefault) { |
| 19005 | // Use the first media default. |
| 19006 | mediaDefault = singleMedia; |
| 19007 | } |
| 19008 | } |
| 19009 | }); |
| 19010 | } else { |
| 19011 | if ("development" !== 'production') { |
| 19012 | // Real case of wrong config. |
| 19013 | error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }'); |
| 19014 | } |
| 19015 | } |
| 19016 | } |
| 19017 | |
| 19018 | doPreprocess(baseOption); |
| 19019 | each(timelineOptionsOnRoot, function (option) { |
no test coverage detected
searching dependent graphs…