123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import _typeof from 'babel-runtime/helpers/typeof';
- import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
- import _createClass from 'babel-runtime/helpers/createClass';
- /*
- Copyright 2013-2015 ASIAL CORPORATION
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- */
-
- import util from '../util';
- import internal from '../internal';
-
- var AnimatorFactory = function () {
-
- /**
- * @param {Object} opts
- * @param {Object} opts.animators The dictionary for animator classes
- * @param {Function} opts.baseClass The base class of animators
- * @param {String} [opts.baseClassName] The name of the base class of animators
- * @param {String} [opts.defaultAnimation] The default animation name
- * @param {Object} [opts.defaultAnimationOptions] The default animation options
- */
- function AnimatorFactory(opts) {
- _classCallCheck(this, AnimatorFactory);
-
- this._animators = opts.animators;
- this._baseClass = opts.baseClass;
- this._baseClassName = opts.baseClassName || opts.baseClass.name;
- this._animation = opts.defaultAnimation || 'default';
- this._animationOptions = opts.defaultAnimationOptions || {};
-
- if (!this._animators[this._animation]) {
- util.throw('No such animation: ' + this._animation);
- }
- }
-
- /**
- * @param {String} jsonString
- * @return {Object/null}
- */
-
-
- _createClass(AnimatorFactory, [{
- key: 'setAnimationOptions',
-
-
- /**
- * @param {Object} options
- */
- value: function setAnimationOptions(options) {
- this._animationOptions = options;
- }
-
- /**
- * @param {Object} options
- * @param {String} [options.animation] The animation name
- * @param {Object} [options.animationOptions] The animation options
- * @param {Object} defaultAnimator The default animator instance
- * @return {Object} An animator instance
- */
-
- }, {
- key: 'newAnimator',
- value: function newAnimator() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var defaultAnimator = arguments[1];
-
-
- var animator = null;
-
- if (options.animation instanceof this._baseClass) {
- return options.animation;
- }
-
- var Animator = null;
-
- if (typeof options.animation === 'string') {
- Animator = this._animators[options.animation];
- }
-
- if (!Animator && defaultAnimator) {
- animator = defaultAnimator;
- } else {
- Animator = Animator || this._animators[this._animation];
-
- var animationOpts = util.extend({}, this._animationOptions, options.animationOptions || {}, internal.config.animationsDisabled ? { duration: 0, delay: 0 } : {});
-
- animator = new Animator(animationOpts);
-
- if (typeof animator === 'function') {
- animator = new animator(animationOpts); // eslint-disable-line new-cap
- }
- }
-
- if (!(animator instanceof this._baseClass)) {
- util.throw('"animator" is not an instance of ' + this._baseClassName);
- }
-
- return animator;
- }
- }], [{
- key: 'parseAnimationOptionsString',
- value: function parseAnimationOptionsString(jsonString) {
- try {
- if (typeof jsonString === 'string') {
- var result = util.animationOptionsParse(jsonString);
- if ((typeof result === 'undefined' ? 'undefined' : _typeof(result)) === 'object' && result !== null) {
- return result;
- } else {
- console.error('"animation-options" attribute must be a JSON object string: ' + jsonString);
- }
- }
- return {};
- } catch (e) {
- console.error('"animation-options" attribute must be a JSON object string: ' + jsonString);
- return {};
- }
- }
- }]);
-
- return AnimatorFactory;
- }();
-
- export default AnimatorFactory;
|