File: js/async-command-delay.js
- /**
- * @module gallery-async-command-delay
- */
- (function (Y, moduleName) {
- 'use strict';
-
- var _string_delay = 'delay',
- _string_delayed = 'delayed',
- _string_run = 'run',
-
- _Do = Y.Do,
- _DoAlterReturn = _Do.AlterReturn,
- _DoPrevent = _Do.Prevent,
- _Plugin = Y.Plugin,
-
- _delay = Y.delay;
- /**
- * Asynchronous command delay plugin.
- * @class AsyncCommandDelay
- * @extends Plugin.Base
- * @namespace Plugin
- * @param {Object} config Configuration Object.
- */
- _Plugin.AsyncCommandDelay = Y.Base.create(moduleName, _Plugin.Base, [], {
- initializer: function () {
- var me = this,
-
- host = me.get('host'),
- run = host.run;
-
- me.afterHostMethod(_string_run, function () {
- return new _DoAlterReturn(_string_delayed, host);
- });
-
- me.beforeHostMethod(_string_run, function () {
- _delay(run, me.get(_string_delay)).call(host);
- return new _DoPrevent(_string_delayed);
- });
- }
- }, {
- ATTRS: {
- /**
- * Approximate delay in milliseconds to wait between the time run is
- * called and when the command function is executed.
- * @attribute delay
- * @default 0
- * @initonly
- * @type Number
- */
- delay: {
- value: 0,
- writeOnce: 'initOnly'
- }
- },
- NS: _string_delay
- });
- }(Y, arguments[1]));
-