MCPcopy
hub / github.com/jcubic/jquery.terminal / make_callback_plugin

Function make_callback_plugin

js/jquery.terminal-src.js:987–1038  ·  view source on GitHub ↗
(options)

Source from the content-addressed store, hash-verified

985 // :: callback based event handler plugin generator
986 // -----------------------------------------------------------------------
987 function make_callback_plugin(options) {
988 var factory_settings = $.extend({
989 init: $.noop,
990 destroy: $.noop,
991 name: 'event'
992 }, options);
993 return function(callback, options) {
994 var trigger = arguments.length === 0;
995 var unbind = arguments[0] === "unbind";
996 if (!trigger && !unbind && !is_function(callback)) {
997 throw new Error('Invalid argument, it need to a function or string ' +
998 '"unbind" or no arguments.');
999 }
1000 if (unbind) {
1001 callback = is_function(arguments[1]) ? arguments[1] : null;
1002 }
1003 var data_name = 'callbacks_' + factory_settings.name;
1004 return this.each(function() {
1005 var $this = $(this);
1006 var callbacks;
1007 function handler(arg) {
1008 callbacks.fireWith($this, [arg]);
1009 }
1010 if (trigger || unbind) {
1011 callbacks = $this.data(data_name);
1012 if (trigger) {
1013 callbacks && callbacks.fire();
1014 } else {
1015 if (callback && callbacks) {
1016 callbacks.remove(callback);
1017 if (!callbacks.has()) {
1018 callbacks = null;
1019 }
1020 } else {
1021 callbacks = null;
1022 }
1023 if (!callbacks) {
1024 $this.removeData(data_name);
1025 factory_settings.destroy.call(this, handler, options);
1026 }
1027 }
1028 } else if ($this.data(data_name)) {
1029 $(this).data(data_name).add(callback);
1030 } else {
1031 callbacks = $.Callbacks();
1032 callbacks.add(callback);
1033 $this.data(data_name, callbacks);
1034 factory_settings.init.call(this, handler, options);
1035 }
1036 });
1037 };
1038 }
1039 // -----------------------------------------------------------------------
1040 // :: Cross-browser resize element plugin using sentinel iframe or
1041 // :: resizeObserver

Callers 1

Calls 4

$Function · 0.85
removeMethod · 0.80
is_functionFunction · 0.70
dataMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…