xooie 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,285 @@
1
+ /*
2
+ * Copyright 2012 Comcast
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ define('xooie/dropdown', ['jquery', 'xooie/base'], function($, Base) {
18
+
19
+ var parseWhich = function(which) {
20
+ if (typeof which === 'string') {
21
+ which = which.split(',');
22
+ return which.map(function(string){ return parseInt(string, 10); });
23
+ } else if (typeof which === 'number') {
24
+ return [which];
25
+ }
26
+
27
+ return which;
28
+ };
29
+
30
+ var Dropdown = Base('dropdown', function() {
31
+ var self = this,
32
+ handles = self.getHandle(),
33
+ expanders = self.getExpander();
34
+
35
+ this.handlers = {
36
+ off: function(event){
37
+ if ((typeof event.data.not !== 'undefined' && ($(event.data.not).is($(this)) || $(event.target).parents(event.data.not).length > 0)) || (typeof event.data.which !== 'undefined' && event.data.which.indexOf(event.which) === -1) || ($(event.target).is(self.getExpander(event.data.index)) || $(event.target).parents(self.options.dropdownExpanderSelector).length > 0) && !$(event.target).is($(this))) {
38
+ return true;
39
+ }
40
+
41
+ event.preventDefault();
42
+
43
+ self.collapse(event.data.index, event.data);
44
+ },
45
+
46
+ on: function(event){
47
+ var index = event.data.index || parseInt($(this).attr('data-dropdown-index'), 10),
48
+ delay = event.data.delay,
49
+ handle = $(this);
50
+
51
+ if ((typeof event.data.not !== 'undefined' && ($(event.data.not).is($(this)) || $(event.target).parents(event.data.not).length > 0)) || typeof event.data.which !== 'undefined' && event.data.which.indexOf(event.which) === -1) {
52
+ return true;
53
+ }
54
+
55
+ event.preventDefault();
56
+
57
+ self.expand(index, event.data);
58
+ }
59
+ };
60
+
61
+ this.timers = {
62
+ expand: [],
63
+ collapse: [],
64
+ throttle: []
65
+ };
66
+
67
+ this.addHandlers('on');
68
+
69
+ this.root.on({
70
+ dropdownExpand: function(event, index){
71
+ self.removeHandlers('on', index);
72
+
73
+ self.addHandlers('off', index);
74
+
75
+ $(this).attr('aria-selected', true);
76
+ self.getExpander(index).attr('aria-hidden', false);
77
+ },
78
+
79
+ dropdownCollapse: function(event, index){
80
+ self.removeHandlers('off', index);
81
+
82
+ self.addHandlers('on', index);
83
+
84
+ $(this).attr('aria-selected', false);
85
+ self.getExpander(index).attr('aria-hidden', true);
86
+ },
87
+
88
+ forceCollapse: function(event, data) {
89
+ self.collapse(data.index, data);
90
+ }
91
+ }, this.options.dropdownHandleSelector);
92
+
93
+ this.root.on('xooie-init.dropdown xooie-refresh.dropdown', function(){
94
+ handles.each(function(index){
95
+ var handle = $(this),
96
+ expander = expanders.eq(index);
97
+
98
+
99
+ handle.attr({
100
+ 'data-dropdown-index': index,
101
+ 'aria-selected': false
102
+ });
103
+ expander.attr({
104
+ 'data-dropdown-index': index,
105
+ 'aria-hidden': true
106
+ });
107
+ });
108
+ });
109
+
110
+ expanders.on('mouseover focus', function(){
111
+ var index = parseInt($(this).attr('data-dropdown-index'), 10);
112
+
113
+ if (self.timers.collapse[index]){
114
+ self.timers.collapse[index] = clearTimeout(self.timers.collapse[index]);
115
+
116
+ $(this).on('mouseleave blur', {index: index}, function(event){
117
+ self.collapse(event.data.index, 0);
118
+ $(this).unbind(event);
119
+ });
120
+ }
121
+ });
122
+
123
+ });
124
+
125
+ Dropdown.setDefaultOptions({
126
+ dropdownHandleSelector: '[data-role="dropdown-handle"]',
127
+ dropdownExpanderSelector: '[data-role="dropdown-content"]',
128
+
129
+ activeDropdownClass: 'is-dropdown-active',
130
+
131
+ throttleDelay: 300,
132
+ triggers: {
133
+ on: {
134
+ focus: {
135
+ delay: 0
136
+ }
137
+ },
138
+ off: {
139
+ blur: {
140
+ delay: 0
141
+ }
142
+ }
143
+ }
144
+
145
+ });
146
+
147
+ Dropdown.prototype.getTriggerHandle = function(triggerData, index){
148
+ var handles = this.getHandle(index);
149
+
150
+ if (triggerData.selector) {
151
+ return triggerData.selector === 'document' ? $(document) : $(triggerData.selector);
152
+ } else {
153
+ return handles;
154
+ }
155
+ };
156
+
157
+ Dropdown.prototype.getNamespacedTrigger = function(trigger, state){
158
+ return trigger + '.' + state + 'XooieDropdown';
159
+ };
160
+
161
+ Dropdown.prototype.addHandlers = function(state, index){
162
+ var trigger, nsTrigger, handle, triggerData, countName;
163
+
164
+ triggerData = this.options.triggers[state];
165
+
166
+ for (trigger in triggerData) {
167
+ if (typeof triggerData[trigger].which !== 'undefined') {
168
+ triggerData[trigger].which = parseWhich(triggerData[trigger].which);
169
+ }
170
+
171
+ countName = [trigger,state,'count'].join('-');
172
+
173
+ handle = this.getTriggerHandle(triggerData[trigger], index);
174
+
175
+ handle.data(countName, handle.data(countName) + 1 || 1);
176
+
177
+ nsTrigger = this.getNamespacedTrigger(trigger, state);
178
+
179
+ handle.on(nsTrigger, $.extend({delay: 0, index: index}, triggerData[trigger]), this.handlers[state]);
180
+ }
181
+ };
182
+
183
+ Dropdown.prototype.removeHandlers = function(state, index){
184
+ var trigger, nsTrigger, handle, triggerData, countName, eventCount;
185
+
186
+ triggerData = this.options.triggers[state];
187
+
188
+ for (trigger in triggerData) {
189
+ handle = this.getTriggerHandle(triggerData[trigger], index);
190
+
191
+ countName = [trigger,state,'count'].join('-');
192
+
193
+ eventCount = handle.data(countName) - 1;
194
+
195
+ if (eventCount <= 0) {
196
+ nsTrigger = this.getNamespacedTrigger(trigger, state);
197
+
198
+ handle.unbind(nsTrigger);
199
+
200
+ handle.data(countName, 0);
201
+ } else {
202
+ handle.data(countName, eventCount);
203
+ }
204
+ }
205
+ };
206
+
207
+ Dropdown.prototype.getHandle = function(index){
208
+ var handles = this.root.find(this.options.dropdownHandleSelector);
209
+
210
+ return (typeof index !== 'undefined' && index >= 0) ? handles.eq(index) : handles;
211
+ };
212
+
213
+ Dropdown.prototype.getExpander = function(index){
214
+ var selectorString;
215
+
216
+ if (typeof index === 'undefined' || isNaN(index)) {
217
+ selectorString = this.options.dropdownExpanderSelector;
218
+ } else {
219
+ selectorString = this.options.dropdownExpanderSelector + '[data-dropdown-index="' + index + '"]';
220
+ }
221
+
222
+ return this.root.find(selectorString);
223
+ };
224
+
225
+ Dropdown.prototype.setState = function(index, data, active){
226
+ if (typeof index === 'undefined' || isNaN(index)) {
227
+ return;
228
+ }
229
+
230
+ var state = active ? 'expand' : 'collapse',
231
+ counterState = active ? 'collapse' : 'expand',
232
+ delay = data.delay;
233
+
234
+ this.timers[counterState][index] = clearTimeout(this.timers[counterState][index]);
235
+
236
+ if (this.timers.throttle[index] || this.timers[state][index]) {
237
+ return;
238
+ }
239
+
240
+ this.timers[state][index] = setTimeout(function(i, _state, _active, _data) {
241
+ var expander = this.getExpander(i),
242
+ handle = this.getHandle(i),
243
+ self = this;
244
+
245
+ this.timers[_state][i] = clearTimeout(this.timers[_state][i]);
246
+
247
+ expander.toggleClass(this.options.activeDropdownClass, _active);
248
+ this.getHandle(i).toggleClass(this.options.activeDropdownClass, _active);
249
+
250
+ if (_active){
251
+ handle.trigger('dropdownExpand', [i, _data]);
252
+ //this.setFocus(expander);
253
+ } else {
254
+ handle.trigger('dropdownCollapse', [i, _data]);
255
+ }
256
+
257
+ if (this.options.throttleDelay > 0){
258
+ this.timers.throttle[i] = setTimeout(function(){
259
+ self.timers.throttle[i] = clearTimeout(self.timers.throttle[i]);
260
+ }, this.options.throttleDelay);
261
+ }
262
+
263
+ }.bind(this, index, state, active, data), delay);
264
+ };
265
+
266
+ Dropdown.prototype.expand = function(index, data) {
267
+ if (!this.getHandle(index).hasClass(this.options.activeDropdownClass)) {
268
+ this.setState(index, data, true);
269
+ }
270
+ };
271
+
272
+ Dropdown.prototype.collapse = function(index, data) {
273
+ if (this.getHandle(index).hasClass(this.options.activeDropdownClass)) {
274
+ this.setState(index, data, false);
275
+ }
276
+ };
277
+
278
+ Dropdown.prototype.setFocus = function(element){
279
+ element.find('a,input,textarea,button,select,iframe,[tabindex][tabindex!=-1]')
280
+ .first()
281
+ .focus();
282
+ };
283
+
284
+ return Dropdown;
285
+ });
@@ -47,8 +47,9 @@ define('xooie/event_handler', ['jquery', 'xooie/helpers'], function ($, helpers)
47
47
  formattedType = format(type, this.namespace);
48
48
 
49
49
  if (helpers.isUndefined(this.handlers[formattedType])) {
50
- this.handlers[formattedType] = function (e) {
51
- self.fire(e, this, arguments);
50
+ this.handlers[formattedType] = function () {
51
+ [].splice.call(arguments, 1, 0, this);
52
+ self.fire.apply(self, arguments);
52
53
  };
53
54
  }
54
55
 
@@ -67,13 +68,15 @@ define('xooie/event_handler', ['jquery', 'xooie/helpers'], function ($, helpers)
67
68
  }
68
69
  };
69
70
 
70
- EventHandler.prototype.fire = function (event, context, args) {
71
+ EventHandler.prototype.fire = function (event) {
71
72
  if (event.namespace && event.namespace !== this.namespace) {
72
73
  return;
73
74
  }
74
75
 
76
+ var args = [].slice.call(arguments, 1);
77
+
75
78
  if (!helpers.isUndefined(this._callbacks[event.type])) {
76
- this._callbacks[event.type].fireWith(context, args);
79
+ this._callbacks[event.type].fireWith.apply(this._callbacks[event.type].fireWith, args);
77
80
  }
78
81
  };
79
82
 
@@ -14,61 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- /* Polyfill methods for Xooie */
18
-
19
- // Adds Array.prototype.indexOf functionality to IE<9 (From MDN)
20
- if (!Array.prototype.indexOf) {
21
- Array.prototype.indexOf = function (searchElement, fromIndex) {
22
- 'use strict';
23
- var i, pivot, length;
24
-
25
- pivot = fromIndex || 0;
26
-
27
- if (!this) {
28
- throw new TypeError();
29
- }
30
-
31
- length = this.length;
32
-
33
- if (length === 0 || pivot >= length) {
34
- return -1;
35
- }
36
-
37
- if (pivot < 0) {
38
- pivot = length - Math.abs(pivot);
39
- }
40
-
41
- for (i = pivot; i < length; i += 1) {
42
- if (this[i] === searchElement) {
43
- return i;
44
- }
45
- }
46
- return -1;
47
- };
48
- }
49
-
50
- // Adds Function.prototype.bind to browsers that do not support it
51
- if (!Function.prototype.bind) {
52
- Function.prototype.bind = function (context) {
53
- 'use strict';
54
- var f, args;
55
-
56
- f = this;
57
- args = Array.prototype.slice.call(arguments, 1);
58
-
59
- return function () {
60
- return f.apply(context, args.concat(Array.prototype.slice.call(arguments)));
61
- };
62
- };
63
- }
64
-
65
17
  /**
66
18
  * class Xooie.helpers
67
19
  *
68
20
  * A collection of helper methods used by Xooie modules.
69
21
  **/
70
22
 
71
- define('xooie/helpers', [], function () {
23
+ define('xooie/helpers', ['jquery'], function ($) {
72
24
  'use strict';
73
25
 
74
26
  var helpers = {
@@ -100,13 +52,17 @@ define('xooie/helpers', [], function () {
100
52
  }()),
101
53
 
102
54
  isObject: function (obj) {
103
- return Object.prototype.toString(obj) === '[object Object]';
55
+ return $.isPlainObject(obj);
104
56
  },
105
57
 
106
58
  isUndefined: function (obj) {
107
59
  return obj === undefined;
108
60
  },
109
61
 
62
+ isDefined: function (obj) {
63
+ return !this.isUndefined(obj);
64
+ },
65
+
110
66
  isFunction: function (func) {
111
67
  return typeof func === 'function';
112
68
  }
@@ -0,0 +1,49 @@
1
+ /* Polyfill methods for Xooie */
2
+
3
+ define('xooie/polyfill', [], function () {
4
+ 'use strict';
5
+ // Adds Array.prototype.indexOf functionality to IE<9 (From MDN)
6
+ if (!Array.prototype.indexOf) {
7
+ Array.prototype.indexOf = function (searchElement, fromIndex) {
8
+ var i, pivot, length;
9
+
10
+ pivot = fromIndex || 0;
11
+
12
+ if (!this) {
13
+ throw new TypeError();
14
+ }
15
+
16
+ length = this.length;
17
+
18
+ if (length === 0 || pivot >= length) {
19
+ return -1;
20
+ }
21
+
22
+ if (pivot < 0) {
23
+ pivot = length - Math.abs(pivot);
24
+ }
25
+
26
+ for (i = pivot; i < length; i += 1) {
27
+ if (this[i] === searchElement) {
28
+ return i;
29
+ }
30
+ }
31
+ return -1;
32
+ };
33
+ }
34
+
35
+ // Adds Function.prototype.bind to browsers that do not support it
36
+ if (!Function.prototype.bind) {
37
+ Function.prototype.bind = function (context) {
38
+ var f, args;
39
+
40
+ f = this;
41
+ args = Array.prototype.slice.call(arguments, 1);
42
+
43
+ return function () {
44
+ return f.apply(context, args.concat(Array.prototype.slice.call(arguments)));
45
+ };
46
+ };
47
+ }
48
+
49
+ });
@@ -209,7 +209,7 @@ define('xooie/shared', ['jquery', 'xooie/helpers'], function ($, helpers) {
209
209
 
210
210
  for (i = 0; i < instance._definedProps.length; i += 1) {
211
211
  prop = instance._definedProps[i];
212
- if (!helpers.isUndefined(data[prop])) {
212
+ if (helpers.isDefined(data[prop])) {
213
213
  instance.set(prop, data[prop]);
214
214
  }
215
215
  }
@@ -14,18 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- define('xooie/stylesheet', ['jquery', 'xooie/helpers'], function ($, helpers) {
17
+ define('xooie/stylesheet', ['jquery'], function ($) {
18
18
  'use strict';
19
19
 
20
- function nameCheck(index, name) {
21
- var s = document.styleSheets[index];
22
-
23
- if (!helpers.isUndefined(s.ownerNode)) {
24
- return s.ownerNode.getAttribute('id') === name;
25
- }
26
- return s.id === name;
27
- }
28
-
29
20
  var Stylesheet = function (name) {
30
21
  //check to see if a stylesheet already exists with this name
31
22
  this.element = $('style[id=' + name + ']');
@@ -43,7 +34,7 @@ define('xooie/stylesheet', ['jquery', 'xooie/helpers'], function ($, helpers) {
43
34
  };
44
35
 
45
36
  Stylesheet.prototype.get = function () {
46
- return document.styleSheets[this.getIndex()];
37
+ return this.element[0].sheet || this.element[0].styleSheet;
47
38
  };
48
39
 
49
40
  Stylesheet.prototype.getRule = function (ruleName) {
@@ -64,7 +55,7 @@ define('xooie/stylesheet', ['jquery', 'xooie/helpers'], function ($, helpers) {
64
55
  };
65
56
 
66
57
  Stylesheet.prototype.addRule = function (ruleName, properties) {
67
- var rule = this.getRule(ruleName), index, prop, propString = '';
58
+ var rule = this.getRule(ruleName), index, prop, propString = '', ruleNameArray, i;
68
59
 
69
60
  if (!rule) {
70
61
  for (prop in properties) {
@@ -81,7 +72,12 @@ define('xooie/stylesheet', ['jquery', 'xooie/helpers'], function ($, helpers) {
81
72
  } else {
82
73
  //support for IE < 9
83
74
  index = this.get().rules.length;
84
- this.get().addRule(ruleName, propString, index);
75
+ ruleNameArray = ruleName.split(',');
76
+ // READ: http://msdn.microsoft.com/en-us/library/ie/aa358796%28v=vs.85%29.aspx
77
+ for (i = 0; i < ruleNameArray.length; i += 1) {
78
+ this.get().addRule(ruleNameArray[i], propString, index + i);
79
+ }
80
+
85
81
  rule = this.get().rules[index];
86
82
  }
87
83
  }
@@ -114,25 +110,6 @@ define('xooie/stylesheet', ['jquery', 'xooie/helpers'], function ($, helpers) {
114
110
  return false;
115
111
  };
116
112
 
117
- Stylesheet.prototype.getIndex = function () {
118
- var i;
119
-
120
- if (helpers.isUndefined(document.styleSheets)) {
121
- return;
122
- }
123
-
124
- if (!helpers.isUndefined(this._index) && nameCheck(this._index, this._name)) {
125
- return this._index;
126
- }
127
-
128
- for (i = 0; i < document.styleSheets.length; i += 1) {
129
- if (nameCheck(i, this._name)) {
130
- this._index = i;
131
- return i;
132
- }
133
- }
134
- };
135
-
136
113
  return Stylesheet;
137
114
 
138
115
  });
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Copyright 2012 Comcast
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ define('xooie/tab', ['jquery', 'xooie/base'], function($, Base) {
18
+
19
+ var Tab = Base('tab', function() {
20
+ var self = this;
21
+
22
+ this.createTabs();
23
+ });
24
+
25
+ Tab.setDefaultOptions({
26
+ panelSelector: '[data-role="tab-panel"]',
27
+ stripSelector: '[data-role="tab-strip"]',
28
+ controlSelector: '[data-role="tab-selector"]',
29
+ controlButtonSelector: '[data-tab-control]',
30
+ tabTemplateSelector: '[data-role="tab-template"]',
31
+
32
+ activeTabClass: 'is-tab-active'
33
+ });
34
+
35
+ $.extend(Tab.prototype, {
36
+ switchToTab: function(index, key) {
37
+ if (index !== this._currentTab && index >= 0 && index < this.getPanel().length) {
38
+ var e = $.Event('tabChange');
39
+ e.fromTab = this._currentTab;
40
+ e.toTab = index;
41
+ e.which = key;
42
+
43
+ this.getPanel(this._currentTab).removeClass(this.options.activeTabClass);
44
+ this.getTab(this._currentTab).removeClass(this.options.activeTabClass);
45
+
46
+ this.getPanel(index).addClass(this.options.activeTabClass);
47
+ this.getTab(index).addClass(this.options.activeTabClass);
48
+
49
+ this._currentTab = index;
50
+
51
+ this.root.trigger(e);
52
+ }
53
+ },
54
+
55
+ getPanel: function(index) {
56
+ var panels = this.root.find(this.options.panelSelector);
57
+
58
+ if (typeof index === 'undefined') {
59
+ return panels;
60
+ } else {
61
+ return panels.eq(index);
62
+ }
63
+ },
64
+
65
+ getTab: function(index) {
66
+ var tabs = this.root.find(this.options.controlSelector);
67
+ if (typeof index === 'undefined') {
68
+ return tabs;
69
+ } else {
70
+ return tabs.eq(index);
71
+ }
72
+ },
73
+
74
+ createTabs: function() {
75
+ var tabStrip = this.root.find(this.options.stripSelector),
76
+ template = this.root.find(this.options.tabTemplateSelector),
77
+ panels = this.getPanel(),
78
+ i, element, control,
79
+ activeTab = 0, handler, self = this;
80
+
81
+ if (template.length === 0){
82
+ return;
83
+ }
84
+
85
+ this.getTab().remove();
86
+
87
+ handler = function(event) {
88
+ var keys = [13,32];
89
+
90
+ if ([1,13,32].indexOf(event.which) !== -1){
91
+ self.switchToTab($(this).data('tab-index'), event.which);
92
+ }
93
+ };
94
+
95
+ for (i = 0; i < panels.length; i++) {
96
+ if(tabStrip.length > 0 && template.length > 0) {
97
+ element = this.render(template, {
98
+ panel_label: panels.eq(i).attr('data-tab-label'),
99
+ panel_index: i,
100
+ panel_has_next: (i < panels.length - 1)
101
+ });
102
+
103
+ if (element.is(this.options.controlButtonSelector)) {
104
+ control = element;
105
+ } else {
106
+ control = element.find(this.options.controlButtonSelector);
107
+ }
108
+
109
+ control.data('tab-index', i)
110
+ .on('mouseup keyup', handler);
111
+
112
+ tabStrip.append(element);
113
+ }
114
+
115
+ if (panels.eq(i).hasClass(this.options.activeTabClass)) {
116
+ activeTab = i;
117
+ }
118
+ }
119
+
120
+ this.switchToTab(activeTab);
121
+ }
122
+ });
123
+
124
+ return Tab;
125
+ });
@@ -306,7 +306,7 @@ define('xooie/widgets/carousel', ['jquery', 'xooie/helpers', 'xooie/widgets/base
306
306
  self._timers.scroll = setTimeout(scrollComplete, 250);
307
307
  });
308
308
 
309
- this.cropStyle(Carousel.createStyleRule('.' + this.instanceClass() + ' .' + this.cropClass() + ', .' + this.instanceClass() + '.' + this.cropClass()));
309
+ this.cropStyle(Carousel.createStyleRule('.' + this.instanceClass() + ' .' + this.cropClass() + ', .' + this.instanceClass() + '.' + this.cropClass(), {'height': 'auto'}));
310
310
 
311
311
  // TODO: add functionality to remove from cache
312
312
  Carousel._cache = Carousel._cache.add(this.root());
@@ -126,7 +126,7 @@ $X = Xooie = (function (static_config) {
126
126
  return obj;
127
127
  }(Xooie));
128
128
 
129
- define('xooie/xooie', ['jquery', 'xooie/helpers', 'xooie/stylesheet'], function ($, helpers, Stylesheet) {
129
+ define('xooie/xooie', ['jquery', 'xooie/helpers', 'xooie/stylesheet', 'xooie/polyfill'], function ($, helpers, Stylesheet) {
130
130
  'use strict';
131
131
  var config, _mapName, widgetSelector, widgetDataAttr, addonDataAttr;
132
132