1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
define('plugins.attribute.setup', ['plugins.attribute'], function (attributePlugins) {
var $ = window.jQuery, _done = false;
if ($) {
$ = window.jQuery;
$.defineAttributePlugin = function (pluginName, dependencies, plugin) {
return attributePlugins.define(pluginName, dependencies, plugin, function (fn, args, context){
args[0] = $(args[0]);
return fn.apply(context, args);
});
}
$.fn.parseAttributePlugins = function () {
attributePlugins.parse(this);
return $(this);
};
$.fn.executePlugin = function (pluginName, pluginConfiguration, callback) {
return $(this).each(function () {
var $element = $(this);
return attributePlugins.execute(this, pluginName, pluginConfiguration).then(function (resolved) {
if (typeof (callback) !== 'undefined') {
return callback.apply($element, [resolved]);
}
});
});
};
$.getOnce = function (options) {
if (!window.getOnceCallbacks) {
window.getOnceCallbacks = {};
}
if (options.data) {
var s = $.param(options.data, options.traditional);
if (options.url.indexOf('?') == -1) {
options.url += '?' + s;
}
else {
options.url += '&' + s;
}
delete options.data;
}
if (window.getOnceCallbacks[options.url]) {
window.getOnceCallbacks[options.url].push({
success: options.success,
error: options.error
});
return;
}
window.getOnceCallbacks[options.url] = [{
success: options.success,
error: options.error
}];
function done(m, a) {
var callbacks = window.getOnceCallbacks[options.url];
for (var i = 0; i < callbacks.length; i++) {
callbacks[i][m].apply(this, a);
}
delete window.getOnceCallbacks[options.url];
}
options.success = function () {
done.apply(this, ['success', arguments]);
};
options.error = function () {
done.apply(this, ['error', arguments]);
};
$.ajax(options);
}
window.define.amd["jQuery"] = window.define.amd["jquery"] = { loaded: true, ready: true, object: $ };
}
window.$$plugins = attributePlugins;
return function () {
if (_done) {
return;
}
_done = true;
attributePlugins.initialize({
preconfigure: function (ctx) {
//This is the way to configure/extend all plugin instances.
//The 'configuration' object will be available to all plugins by invoking this.configuration
//You can return a promise like an xhr request or other async operations
//that should be resolved using the value of ctx parameter.
let loggingConfigString = localStorage.getItem("plugins.configuration.logging");
ctx.configuration.logging = (loggingConfigString && JSON.parse(loggingConfigString)) || {};
}
});
}
});
require(['plugins.attribute.setup'], function (setup) {
setup();
});
|