fomantic-ui 2.9.0-beta.8 → 2.9.0-beta.80

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.
Files changed (217) hide show
  1. package/.all-contributorsrc +188 -3
  2. package/CONTRIBUTING.md +1 -1
  3. package/CONTRIBUTORS.md +71 -37
  4. package/README.md +1 -1
  5. package/dist/components/accordion.css +50 -6
  6. package/dist/components/accordion.js +1 -1
  7. package/dist/components/accordion.min.css +2 -2
  8. package/dist/components/accordion.min.js +1 -1
  9. package/dist/components/ad.css +1 -1
  10. package/dist/components/ad.min.css +1 -1
  11. package/dist/components/api.js +26 -24
  12. package/dist/components/api.min.js +2 -2
  13. package/dist/components/breadcrumb.css +1 -1
  14. package/dist/components/breadcrumb.min.css +1 -1
  15. package/dist/components/button.css +6 -6
  16. package/dist/components/button.min.css +2 -2
  17. package/dist/components/calendar.css +1 -1
  18. package/dist/components/calendar.js +106 -10
  19. package/dist/components/calendar.min.css +1 -1
  20. package/dist/components/calendar.min.js +2 -2
  21. package/dist/components/card.css +26 -19
  22. package/dist/components/card.min.css +2 -2
  23. package/dist/components/checkbox.css +2 -1
  24. package/dist/components/checkbox.js +2 -4
  25. package/dist/components/checkbox.min.css +2 -2
  26. package/dist/components/checkbox.min.js +2 -2
  27. package/dist/components/comment.css +11 -11
  28. package/dist/components/comment.min.css +1 -1
  29. package/dist/components/container.css +1 -1
  30. package/dist/components/container.min.css +1 -1
  31. package/dist/components/dimmer.css +28 -14
  32. package/dist/components/dimmer.js +1 -1
  33. package/dist/components/dimmer.min.css +2 -2
  34. package/dist/components/dimmer.min.js +1 -1
  35. package/dist/components/divider.css +1 -1
  36. package/dist/components/divider.min.css +1 -1
  37. package/dist/components/dropdown.css +28 -5
  38. package/dist/components/dropdown.js +15 -19
  39. package/dist/components/dropdown.min.css +2 -2
  40. package/dist/components/dropdown.min.js +2 -2
  41. package/dist/components/embed.css +1 -1
  42. package/dist/components/embed.js +1 -1
  43. package/dist/components/embed.min.css +1 -1
  44. package/dist/components/embed.min.js +1 -1
  45. package/dist/components/emoji.css +2 -2
  46. package/dist/components/feed.css +28 -28
  47. package/dist/components/feed.min.css +2 -2
  48. package/dist/components/flag.css +731 -625
  49. package/dist/components/flag.min.css +2 -2
  50. package/dist/components/form.css +103 -54
  51. package/dist/components/form.js +24 -22
  52. package/dist/components/form.min.css +2 -2
  53. package/dist/components/form.min.js +2 -2
  54. package/dist/components/grid.css +11 -8
  55. package/dist/components/grid.min.css +2 -2
  56. package/dist/components/header.css +1 -1
  57. package/dist/components/header.min.css +1 -1
  58. package/dist/components/icon.css +6 -1
  59. package/dist/components/icon.min.css +2 -2
  60. package/dist/components/image.css +1 -1
  61. package/dist/components/image.min.css +1 -1
  62. package/dist/components/input.css +17 -2
  63. package/dist/components/input.min.css +2 -2
  64. package/dist/components/item.css +13 -13
  65. package/dist/components/item.min.css +1 -1
  66. package/dist/components/label.css +1 -1
  67. package/dist/components/label.min.css +1 -1
  68. package/dist/components/list.css +1 -1
  69. package/dist/components/list.min.css +1 -1
  70. package/dist/components/loader.css +1 -1
  71. package/dist/components/loader.min.css +1 -1
  72. package/dist/components/menu.css +31 -7
  73. package/dist/components/menu.min.css +1 -1
  74. package/dist/components/message.css +1 -1
  75. package/dist/components/message.min.css +1 -1
  76. package/dist/components/modal.css +3 -1
  77. package/dist/components/modal.js +94 -30
  78. package/dist/components/modal.min.css +2 -2
  79. package/dist/components/modal.min.js +2 -2
  80. package/dist/components/nag.css +1 -1
  81. package/dist/components/nag.js +1 -1
  82. package/dist/components/nag.min.css +1 -1
  83. package/dist/components/nag.min.js +1 -1
  84. package/dist/components/placeholder.css +1 -1
  85. package/dist/components/placeholder.min.css +1 -1
  86. package/dist/components/popup.css +5 -3
  87. package/dist/components/popup.js +1 -1
  88. package/dist/components/popup.min.css +2 -2
  89. package/dist/components/popup.min.js +1 -1
  90. package/dist/components/progress.css +1 -1
  91. package/dist/components/progress.js +3 -3
  92. package/dist/components/progress.min.css +1 -1
  93. package/dist/components/progress.min.js +2 -2
  94. package/dist/components/rail.css +1 -1
  95. package/dist/components/rail.min.css +1 -1
  96. package/dist/components/rating.css +7 -46
  97. package/dist/components/rating.js +1 -1
  98. package/dist/components/rating.min.css +2 -2
  99. package/dist/components/rating.min.js +1 -1
  100. package/dist/components/reset.css +1 -1
  101. package/dist/components/reset.min.css +1 -1
  102. package/dist/components/reveal.css +1 -1
  103. package/dist/components/reveal.min.css +1 -1
  104. package/dist/components/search.css +1 -1
  105. package/dist/components/search.js +1 -1
  106. package/dist/components/search.min.css +1 -1
  107. package/dist/components/search.min.js +1 -1
  108. package/dist/components/segment.css +12 -6
  109. package/dist/components/segment.min.css +2 -2
  110. package/dist/components/shape.css +1 -1
  111. package/dist/components/shape.js +1 -1
  112. package/dist/components/shape.min.css +1 -1
  113. package/dist/components/shape.min.js +1 -1
  114. package/dist/components/sidebar.css +1 -1
  115. package/dist/components/sidebar.js +1 -1
  116. package/dist/components/sidebar.min.css +1 -1
  117. package/dist/components/sidebar.min.js +1 -1
  118. package/dist/components/site.css +61 -39
  119. package/dist/components/site.js +1 -1
  120. package/dist/components/site.min.css +2 -2
  121. package/dist/components/site.min.js +1 -1
  122. package/dist/components/slider.js +1 -1
  123. package/dist/components/slider.min.js +1 -1
  124. package/dist/components/state.js +1 -1
  125. package/dist/components/state.min.js +1 -1
  126. package/dist/components/statistic.css +1 -1
  127. package/dist/components/statistic.min.css +1 -1
  128. package/dist/components/step.css +4 -4
  129. package/dist/components/step.min.css +2 -2
  130. package/dist/components/sticky.css +1 -1
  131. package/dist/components/sticky.js +2 -2
  132. package/dist/components/sticky.min.css +1 -1
  133. package/dist/components/sticky.min.js +2 -2
  134. package/dist/components/tab.css +1 -1
  135. package/dist/components/tab.js +1 -1
  136. package/dist/components/tab.min.css +1 -1
  137. package/dist/components/tab.min.js +1 -1
  138. package/dist/components/table.css +5 -3
  139. package/dist/components/table.min.css +2 -2
  140. package/dist/components/text.css +1 -1
  141. package/dist/components/text.min.css +1 -1
  142. package/dist/components/toast.css +7 -1
  143. package/dist/components/toast.js +3 -3
  144. package/dist/components/toast.min.css +2 -2
  145. package/dist/components/toast.min.js +2 -2
  146. package/dist/components/transition.css +1 -1
  147. package/dist/components/transition.js +2 -2
  148. package/dist/components/transition.min.css +1 -1
  149. package/dist/components/transition.min.js +2 -2
  150. package/dist/components/visibility.js +2 -2
  151. package/dist/components/visibility.min.js +1 -1
  152. package/dist/semantic.css +1323 -981
  153. package/dist/semantic.js +293 -135
  154. package/dist/semantic.min.css +2 -2
  155. package/dist/semantic.min.js +2 -2
  156. package/examples/assets/library/iframe-content.js +8 -8
  157. package/examples/assets/library/iframe.js +3 -3
  158. package/package.json +2 -2
  159. package/src/definitions/behaviors/api.js +25 -23
  160. package/src/definitions/behaviors/form.js +23 -21
  161. package/src/definitions/behaviors/visibility.js +1 -1
  162. package/src/definitions/collections/form.less +184 -133
  163. package/src/definitions/collections/grid.less +704 -669
  164. package/src/definitions/collections/menu.less +128 -85
  165. package/src/definitions/collections/message.less +8 -7
  166. package/src/definitions/collections/table.less +186 -174
  167. package/src/definitions/elements/button.less +130 -119
  168. package/src/definitions/elements/container.less +16 -8
  169. package/src/definitions/elements/emoji.less +15 -9
  170. package/src/definitions/elements/flag.less +7 -17
  171. package/src/definitions/elements/header.less +14 -8
  172. package/src/definitions/elements/icon.less +16 -10
  173. package/src/definitions/elements/input.less +17 -1
  174. package/src/definitions/elements/list.less +55 -45
  175. package/src/definitions/elements/segment.less +15 -8
  176. package/src/definitions/elements/step.less +52 -48
  177. package/src/definitions/globals/site.less +23 -2
  178. package/src/definitions/modules/accordion.less +55 -5
  179. package/src/definitions/modules/calendar.js +105 -9
  180. package/src/definitions/modules/checkbox.js +1 -3
  181. package/src/definitions/modules/checkbox.less +1 -146
  182. package/src/definitions/modules/dimmer.less +21 -8
  183. package/src/definitions/modules/dropdown.js +14 -18
  184. package/src/definitions/modules/dropdown.less +96 -64
  185. package/src/definitions/modules/modal.js +93 -29
  186. package/src/definitions/modules/modal.less +2 -0
  187. package/src/definitions/modules/popup.less +5 -1
  188. package/src/definitions/modules/progress.js +2 -2
  189. package/src/definitions/modules/rating.less +18 -12
  190. package/src/definitions/modules/search.less +32 -16
  191. package/src/definitions/modules/sidebar.less +30 -18
  192. package/src/definitions/modules/sticky.js +1 -1
  193. package/src/definitions/modules/toast.js +2 -2
  194. package/src/definitions/modules/toast.less +5 -0
  195. package/src/definitions/modules/transition.js +1 -1
  196. package/src/definitions/views/card.less +373 -333
  197. package/src/definitions/views/comment.less +92 -81
  198. package/src/definitions/views/feed.less +164 -144
  199. package/src/definitions/views/item.less +249 -196
  200. package/src/definitions/views/statistic.less +71 -70
  201. package/src/themes/default/collections/menu.variables +6 -0
  202. package/src/themes/default/elements/button.variables +2 -1
  203. package/src/themes/default/elements/flag.overrides +1635 -986
  204. package/src/themes/default/elements/flag.variables +7 -5
  205. package/src/themes/default/elements/icon.overrides +35 -28
  206. package/src/themes/default/elements/icon.variables +1 -0
  207. package/src/themes/default/elements/step.overrides +1 -1
  208. package/src/themes/default/globals/site.variables +6 -0
  209. package/src/themes/default/globals/variation.variables +74 -1
  210. package/src/themes/default/modules/accordion.variables +15 -0
  211. package/src/themes/default/modules/dimmer.variables +1 -1
  212. package/src/themes/default/modules/dropdown.variables +1 -1
  213. package/src/themes/famfamfam/elements/flag.overrides +1026 -0
  214. package/src/themes/famfamfam/elements/flag.variables +13 -0
  215. package/tasks/admin/components/init.js +2 -2
  216. package/tasks/admin/distributions/init.js +2 -2
  217. package/test/helpers/sinon.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.0-beta.8 - Ad
2
+ * # Fomantic-UI 2.9.0-beta.80 - Ad
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.0-beta.8 - Ad
2
+ * # Fomantic-UI 2.9.0-beta.80 - Ad
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.0-beta.8 - API
2
+ * # Fomantic-UI 2.9.0-beta.80 - API
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -132,7 +132,7 @@ $.api = $.fn.api = function(parameters) {
132
132
  response = JSON.parse(response);
133
133
  }
134
134
  catch(e) {
135
- // isnt json string
135
+ // isn't json string
136
136
  }
137
137
  }
138
138
  return response;
@@ -148,8 +148,8 @@ $.api = $.fn.api = function(parameters) {
148
148
  module.error(error.noStorage);
149
149
  return;
150
150
  }
151
- response = sessionStorage.getItem(url);
152
- module.debug('Using cached response', url, response);
151
+ response = sessionStorage.getItem(url + module.get.normalizedData());
152
+ module.debug('Using cached response', url, settings.data, response);
153
153
  response = module.decode.json(response);
154
154
  return response;
155
155
  }
@@ -167,8 +167,8 @@ $.api = $.fn.api = function(parameters) {
167
167
  if( $.isPlainObject(response) ) {
168
168
  response = JSON.stringify(response);
169
169
  }
170
- sessionStorage.setItem(url, response);
171
- module.verbose('Storing cached response for url', url, response);
170
+ sessionStorage.setItem(url + module.get.normalizedData(), response);
171
+ module.verbose('Storing cached response for url', url, settings.data, response);
172
172
  }
173
173
  },
174
174
 
@@ -334,10 +334,6 @@ $.api = $.fn.api = function(parameters) {
334
334
  cancelled: function() {
335
335
  return (module.cancelled || false);
336
336
  },
337
- succesful: function() {
338
- module.verbose('This behavior will be deleted due to typo. Use "was successful" instead.');
339
- return module.was.successful();
340
- },
341
337
  successful: function() {
342
338
  return (module.request && module.request.state() == 'resolved');
343
339
  },
@@ -429,25 +425,29 @@ $.api = $.fn.api = function(parameters) {
429
425
  },
430
426
  formData: function(data) {
431
427
  var
432
- canSerialize = ($.fn.serializeObject !== undefined),
433
- formData = (canSerialize)
434
- ? $form.serializeObject()
435
- : $form.serialize(),
428
+ formData = {},
436
429
  hasOtherData
437
430
  ;
438
431
  data = data || settings.data;
439
432
  hasOtherData = $.isPlainObject(data);
440
433
 
441
- if(hasOtherData) {
442
- if(canSerialize) {
443
- module.debug('Extending existing data with form data', data, formData);
444
- data = $.extend(true, {}, data, formData);
445
- }
446
- else {
447
- module.error(error.missingSerialize);
448
- module.debug('Cant extend data. Replacing data with form data', data, formData);
449
- data = formData;
434
+ $.each($form.serializeArray(), function (i, element) {
435
+ var node = formData[element.name];
436
+
437
+ if ('undefined' !== typeof node && node !== null) {
438
+ if (Array.isArray(node)) {
439
+ node.push(element.value);
440
+ } else {
441
+ formData[element.name] = [node, element.value];
442
+ }
443
+ } else {
444
+ formData[element.name] = element.value;
450
445
  }
446
+ });
447
+
448
+ if(hasOtherData) {
449
+ module.debug('Extending existing data with form data', data, formData);
450
+ data = $.extend(true, {}, data, formData);
451
451
  }
452
452
  else {
453
453
  module.debug('Adding form data', formData);
@@ -698,6 +698,9 @@ $.api = $.fn.api = function(parameters) {
698
698
  },
699
699
 
700
700
  get: {
701
+ normalizedData: function(){
702
+ return typeof settings.data === "string" ? settings.data : JSON.stringify(settings.data, Object.keys(settings.data).sort());
703
+ },
701
704
  responseFromXHR: function(xhr) {
702
705
  return $.isPlainObject(xhr)
703
706
  ? (module.is.expectingJSON())
@@ -1141,7 +1144,6 @@ $.api.settings = {
1141
1144
  legacyParameters : 'You are using legacy API success callback names',
1142
1145
  method : 'The method you called is not defined',
1143
1146
  missingAction : 'API action used but no url was defined',
1144
- missingSerialize : 'jquery-serialize-object is required to add form data to an existing data object',
1145
1147
  missingURL : 'No URL specified for api event',
1146
1148
  noReturnedValue : 'The beforeSend callback must return a settings object, beforeSend ignored.',
1147
1149
  noStorage : 'Caching responses locally requires session storage',
@@ -1,5 +1,5 @@
1
1
  /*
2
- * # Fomantic UI - 2.9.0-beta.8
2
+ * # Fomantic UI - 2.9.0-beta.80
3
3
  * https://github.com/fomantic/Fomantic-UI
4
4
  * http://fomantic-ui.com/
5
5
  *
@@ -8,4 +8,4 @@
8
8
  * http://opensource.org/licenses/MIT
9
9
  *
10
10
  */
11
- !function(P,j,e,O){"use strict";P.isWindow=P.isWindow||function(e){return null!=e&&e===e.window},j=void 0!==j&&j.Math==Math?j:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),P.api=P.fn.api=function(R){var q,e=P.isFunction(this)?P(j):P(this),x=e.selector||"",S=(new Date).getTime(),A=[],w=R,T="string"==typeof w,k=[].slice.call(arguments,1);return e.each(function(){var s,i,r,e,a,u,c=P.isPlainObject(R)?P.extend(!0,{},P.fn.api.settings,R):P.extend({},P.fn.api.settings),t=c.namespace,n=c.metadata,o=c.selector,d=c.error,l=c.className,f="."+t,g="module-"+t,p=P(this),m=p.closest(o.form),b=c.stateContext?P(c.stateContext):p,v=this,h=b[0],y=p.data(g);u={initialize:function(){T||u.bind.events(),u.instantiate()},instantiate:function(){u.verbose("Storing instance of module",u),y=u,p.data(g,y)},destroy:function(){u.verbose("Destroying previous module for",v),p.removeData(g).off(f)},bind:{events:function(){var e=u.get.event();e?(u.verbose("Attaching API events to element",e),p.on(e+f,u.event.trigger)):"now"==c.on&&(u.debug("Querying API endpoint immediately"),u.query())}},decode:{json:function(e){if(e!==O&&"string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var t;if(j.Storage!==O)return t=sessionStorage.getItem(e),u.debug("Using cached response",e,t),t=u.decode.json(t);u.error(d.noStorage)}},write:{cachedResponse:function(e,t){t&&""===t?u.debug("Response empty, not caching",t):j.Storage!==O?(P.isPlainObject(t)&&(t=JSON.stringify(t)),sessionStorage.setItem(e,t),u.verbose("Storing cached response for url",e,t)):u.error(d.noStorage)}},query:function(){if(u.is.disabled())u.debug("Element is disabled API request aborted");else{if(u.is.loading()){if(!c.interruptRequests)return void u.debug("Cancelling request, previous request is still pending");u.debug("Interrupting previous request"),u.abort()}if(c.defaultData&&P.extend(!0,c.urlData,u.get.defaultData()),c.serializeForm&&(c.data=u.add.formData(c.data)),!1===(i=u.get.settings()))return u.cancelled=!0,void u.error(d.beforeSend);if(u.cancelled=!1,(r=u.get.templatedURL())||u.is.mocked()){if((r=u.add.urlData(r))||u.is.mocked()){if(i.url=c.base+r,s=P.extend(!0,{},c,{type:c.method||c.type,data:e,url:c.base+r,beforeSend:c.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),u.debug("Querying URL",s.url),u.verbose("Using AJAX settings",s),"local"===c.cache&&u.read.cachedResponse(r))return u.debug("Response returned from local cache"),u.request=u.create.request(),void u.request.resolveWith(h,[u.read.cachedResponse(r)]);c.throttle?c.throttleFirstRequest||u.timer?(u.debug("Throttling request",c.throttle),clearTimeout(u.timer),u.timer=setTimeout(function(){u.timer&&delete u.timer,u.debug("Sending throttled request",e,s.method),u.send.request()},c.throttle)):(u.debug("Sending request",e,s.method),u.send.request(),u.timer=setTimeout(function(){},c.throttle)):(u.debug("Sending request",e,s.method),u.send.request())}}else u.error(d.missingURL)}},should:{removeError:function(){return!0===c.hideError||"auto"===c.hideError&&!u.is.form()}},is:{disabled:function(){return 0<p.filter(o.disabled).length},expectingJSON:function(){return"json"===c.dataType||"jsonp"===c.dataType},form:function(){return p.is("form")||b.is("form")},mocked:function(){return c.mockResponse||c.mockResponseAsync||c.response||c.responseAsync},input:function(){return p.is("input")},loading:function(){return!!u.request&&"pending"==u.request.state()},abortedRequest:function(e){return e&&e.readyState!==O&&0===e.readyState?(u.verbose("XHR request determined to be aborted"),!0):(u.verbose("XHR request was not aborted"),!1)},validResponse:function(e){return u.is.expectingJSON()&&P.isFunction(c.successTest)?(u.debug("Checking JSON returned success",c.successTest,e),c.successTest(e)?(u.debug("Response passed success test",e),!0):(u.debug("Response failed success test",e),!1)):(u.verbose("Response is not JSON, skipping validation",c.successTest,e),!0)}},was:{cancelled:function(){return u.cancelled||!1},succesful:function(){return u.verbose('This behavior will be deleted due to typo. Use "was successful" instead.'),u.was.successful()},successful:function(){return u.request&&"resolved"==u.request.state()},failure:function(){return u.request&&"rejected"==u.request.state()},complete:function(){return u.request&&("resolved"==u.request.state()||"rejected"==u.request.state())}},add:{urlData:function(o,s){var e,t;return o&&(e=o.match(c.regExp.required),t=o.match(c.regExp.optional),s=s||c.urlData,e&&(u.debug("Looking for required URL variables",e),P.each(e,function(e,t){var r=-1!==t.indexOf("$")?t.substr(2,t.length-3):t.substr(1,t.length-2),n=P.isPlainObject(s)&&s[r]!==O?s[r]:p.data(r)!==O?p.data(r):b.data(r)!==O?b.data(r):s[r];if(n===O)return u.error(d.requiredParameter,r,o),o=!1;u.verbose("Found required variable",r,n),n=c.encodeParameters?u.get.urlEncodedValue(n):n,o=o.replace(t,n)})),t&&(u.debug("Looking for optional URL variables",e),P.each(t,function(e,t){var r=-1!==t.indexOf("$")?t.substr(3,t.length-4):t.substr(2,t.length-3),n=P.isPlainObject(s)&&s[r]!==O?s[r]:p.data(r)!==O?p.data(r):b.data(r)!==O?b.data(r):s[r];o=n!==O?(u.verbose("Optional variable Found",r,n),o.replace(t,n)):(u.verbose("Optional variable not found",r),-1!==o.indexOf("/"+t)?o.replace("/"+t,""):o.replace(t,""))}))),o},formData:function(e){var t=P.fn.serializeObject!==O,r=t?m.serializeObject():m.serialize();return e=e||c.data,e=P.isPlainObject(e)?t?(u.debug("Extending existing data with form data",e,r),P.extend(!0,{},e,r)):(u.error(d.missingSerialize),u.debug("Cant extend data. Replacing data with form data",e,r),r):(u.debug("Adding form data",r),r)}},send:{request:function(){u.set.loading(),u.request=u.create.request(),u.is.mocked()?u.mockedXHR=u.create.mockedXHR():u.xhr=u.create.xhr(),c.onRequest.call(h,u.request,u.xhr)}},event:{trigger:function(e){u.query(),"submit"!=e.type&&"click"!=e.type||e.preventDefault()},xhr:{always:function(){},done:function(e,t,r){var n=this,o=(new Date).getTime()-a,s=c.loadingDuration-o,i=!!P.isFunction(c.onResponse)&&(u.is.expectingJSON()&&!c.rawResponse?c.onResponse.call(n,P.extend(!0,{},e)):c.onResponse.call(n,e));s=0<s?s:0,i&&(u.debug("Modified API response in onResponse callback",c.onResponse,i,e),e=i),0<s&&u.debug("Response completed early delaying state change by",s),setTimeout(function(){u.is.validResponse(e)?u.request.resolveWith(n,[e,r]):u.request.rejectWith(n,[r,"invalid"])},s)},fail:function(e,t,r){var n=this,o=(new Date).getTime()-a,s=c.loadingDuration-o;0<(s=0<s?s:0)&&u.debug("Response completed early delaying state change by",s),setTimeout(function(){u.is.abortedRequest(e)?u.request.rejectWith(n,[e,"aborted",r]):u.request.rejectWith(n,[e,"error",t,r])},s)}},request:{done:function(e,t){u.debug("Successful API Response",e),"local"===c.cache&&r&&(u.write.cachedResponse(r,e),u.debug("Saving server response locally",u.cache)),c.onSuccess.call(h,e,p,t)},complete:function(e,t){var r,n;u.was.successful()?(n=e,r=t):(r=e,n=u.get.responseFromXHR(r)),u.remove.loading(),c.onComplete.call(h,n,p,r)},fail:function(e,t,r){var n=u.get.responseFromXHR(e),o=u.get.errorFromRequest(n,t,r);if("aborted"==t)return u.debug("XHR Aborted (Most likely caused by page navigation or CORS Policy)",t,r),c.onAbort.call(h,t,p,e),!0;"invalid"==t?u.debug("JSON did not pass success test. A server-side error has most likely occurred",n):"error"==t&&e!==O&&(u.debug("XHR produced a server error",t,r),(e.status<200||300<=e.status)&&r!==O&&""!==r&&u.error(d.statusMessage+r,s.url),c.onError.call(h,o,p,e)),c.errorDuration&&"aborted"!==t&&(u.debug("Adding error state"),u.set.error(),u.should.removeError()&&setTimeout(u.remove.error,c.errorDuration)),u.debug("API Request failed",o,e),c.onFailure.call(h,n,p,e)}}},create:{request:function(){return P.Deferred().always(u.event.request.complete).done(u.event.request.done).fail(u.event.request.fail)},mockedXHR:function(){var e,t,r,n=c.mockResponse||c.response,o=c.mockResponseAsync||c.responseAsync;return r=P.Deferred().always(u.event.xhr.complete).done(u.event.xhr.done).fail(u.event.xhr.fail),n?(t=P.isFunction(n)?(u.debug("Using specified synchronous callback",n),n.call(h,i)):(u.debug("Using settings specified response",n),n),r.resolveWith(h,[t,!1,{responseText:t}])):P.isFunction(o)&&(e=function(e){u.debug("Async callback returned response",e),e?r.resolveWith(h,[e,!1,{responseText:e}]):r.rejectWith(h,[{responseText:e},!1,!1])},u.debug("Using specified async response callback",o),o.call(h,i,e)),r},xhr:function(){var e;return e=P.ajax(s).always(u.event.xhr.always).done(u.event.xhr.done).fail(u.event.xhr.fail),u.verbose("Created server request",e,s),e}},set:{error:function(){u.verbose("Adding error state to element",b),b.addClass(l.error)},loading:function(){u.verbose("Adding loading state to element",b),b.addClass(l.loading),a=(new Date).getTime()}},remove:{error:function(){u.verbose("Removing error state from element",b),b.removeClass(l.error)},loading:function(){u.verbose("Removing loading state from element",b),b.removeClass(l.loading)}},get:{responseFromXHR:function(e){return!!P.isPlainObject(e)&&(u.is.expectingJSON()?u.decode.json(e.responseText):e.responseText)},errorFromRequest:function(e,t,r){return P.isPlainObject(e)&&e.error!==O?e.error:c.error[t]!==O?c.error[t]:r},request:function(){return u.request||!1},xhr:function(){return u.xhr||!1},settings:function(){var e;return(e=c.beforeSend.call(p,c))&&(e.success!==O&&(u.debug("Legacy success callback detected",e),u.error(d.legacyParameters,e.success),e.onSuccess=e.success),e.failure!==O&&(u.debug("Legacy failure callback detected",e),u.error(d.legacyParameters,e.failure),e.onFailure=e.failure),e.complete!==O&&(u.debug("Legacy complete callback detected",e),u.error(d.legacyParameters,e.complete),e.onComplete=e.complete)),e===O&&u.error(d.noReturnedValue),!1===e?e:e!==O?P.extend(!0,{},e):P.extend(!0,{},c)},urlEncodedValue:function(e){var t=j.decodeURIComponent(e),r=j.encodeURIComponent(e);return t!==e?(u.debug("URL value is already encoded, avoiding double encoding",e),e):(u.verbose("Encoding value using encodeURIComponent",e,r),r)},defaultData:function(){var e={};return P.isWindow(v)||(u.is.input()?e.value=p.val():u.is.form()||(e.text=p.text())),e},event:function(){return P.isWindow(v)||"now"==c.on?(u.debug("API called without element, no events attached"),!1):"auto"==c.on?p.is("input")?v.oninput!==O?"input":v.onpropertychange!==O?"propertychange":"keyup":p.is("form")?"submit":"click":c.on},templatedURL:function(e){if(e=e||p.data(n.action)||c.action||!1,r=p.data(n.url)||c.url||!1)return u.debug("Using specified url",r),r;if(e){if(u.debug("Looking up url for action",e,c.api),c.api[e]===O&&!u.is.mocked())return void u.error(d.missingAction,c.action,c.api);r=c.api[e]}else u.is.form()&&(r=p.attr("action")||b.attr("action")||!1,u.debug("No url or action specified, defaulting to form action",r));return r}},abort:function(){var e=u.get.xhr();e&&"resolved"!==e.state()&&(u.debug("Cancelling API request"),e.abort())},reset:function(){u.remove.error(),u.remove.loading()},setting:function(e,t){if(u.debug("Changing setting",e,t),P.isPlainObject(e))P.extend(!0,c,e);else{if(t===O)return c[e];P.isPlainObject(c[e])?P.extend(!0,c[e],t):c[e]=t}},internal:function(e,t){if(P.isPlainObject(e))P.extend(!0,u,e);else{if(t===O)return u[e];u[e]=t}},debug:function(){!c.silent&&c.debug&&(c.performance?u.performance.log(arguments):(u.debug=Function.prototype.bind.call(console.info,console,c.name+":"),u.debug.apply(console,arguments)))},verbose:function(){!c.silent&&c.verbose&&c.debug&&(c.performance?u.performance.log(arguments):(u.verbose=Function.prototype.bind.call(console.info,console,c.name+":"),u.verbose.apply(console,arguments)))},error:function(){c.silent||(u.error=Function.prototype.bind.call(console.error,console,c.name+":"),u.error.apply(console,arguments))},performance:{log:function(e){var t,r;c.performance&&(r=(t=(new Date).getTime())-(S||t),S=t,A.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":r})),clearTimeout(u.performance.timer),u.performance.timer=setTimeout(u.performance.display,500)},display:function(){var e=c.name+":",r=0;S=!1,clearTimeout(u.performance.timer),P.each(A,function(e,t){r+=t["Execution Time"]}),e+=" "+r+"ms",x&&(e+=" '"+x+"'"),(console.group!==O||console.table!==O)&&0<A.length&&(console.groupCollapsed(e),console.table?console.table(A):P.each(A,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),A=[]}},invoke:function(n,e,t){var o,s,r,i=y;return e=e||k,t=v||t,"string"==typeof n&&i!==O&&(n=n.split(/[\. ]/),o=n.length-1,P.each(n,function(e,t){var r=e!=o?t+n[e+1].charAt(0).toUpperCase()+n[e+1].slice(1):n;if(P.isPlainObject(i[r])&&e!=o)i=i[r];else{if(i[r]!==O)return s=i[r],!1;if(!P.isPlainObject(i[t])||e==o)return i[t]!==O?s=i[t]:u.error(d.method,n),!1;i=i[t]}})),P.isFunction(s)?r=s.apply(t,e):s!==O&&(r=s),Array.isArray(q)?q.push(r):q!==O?q=[q,r]:r!==O&&(q=r),s}},T?(y===O&&u.initialize(),u.invoke(w)):(y!==O&&y.invoke("destroy"),u.initialize())}),q!==O?q:this},P.api.settings={name:"API",namespace:"api",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:"auto",stateContext:!1,loadingDuration:0,hideError:"auto",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:"get",data:{},dataType:"json",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,rawResponse:!1,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingSerialize:"jquery-serialize-object is required to add form data to an existing data object",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",noStorage:"Caching responses locally requires session storage",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/\{\$*[A-z0-9]+\}/g,optional:/\{\/\$*[A-z0-9]+\}/g},className:{loading:"loading",error:"error"},selector:{disabled:".disabled",form:"form"},metadata:{action:"action",url:"url"}}}(jQuery,window,document);
11
+ !function(w,O,e,D){"use strict";w.isWindow=w.isWindow||function(e){return null!=e&&e===e.window},O=void 0!==O&&O.Math==Math?O:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),w.api=w.fn.api=function(R){var q,e=w.isFunction(this)?w(O):w(this),x=e.selector||"",A=(new Date).getTime(),S=[],k=R,T="string"==typeof k,P=[].slice.call(arguments,1);return e.each(function(){var s,a,r,e,i,u,c=w.isPlainObject(R)?w.extend(!0,{},w.fn.api.settings,R):w.extend({},w.fn.api.settings),t=c.namespace,n=c.metadata,o=c.selector,d=c.error,l=c.className,f="."+t,g="module-"+t,p=w(this),m=p.closest(o.form),b=c.stateContext?w(c.stateContext):p,v=this,h=b[0],y=p.data(g);u={initialize:function(){T||u.bind.events(),u.instantiate()},instantiate:function(){u.verbose("Storing instance of module",u),y=u,p.data(g,y)},destroy:function(){u.verbose("Destroying previous module for",v),p.removeData(g).off(f)},bind:{events:function(){var e=u.get.event();e?(u.verbose("Attaching API events to element",e),p.on(e+f,u.event.trigger)):"now"==c.on&&(u.debug("Querying API endpoint immediately"),u.query())}},decode:{json:function(e){if(e!==D&&"string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var t;if(O.Storage!==D)return t=sessionStorage.getItem(e+u.get.normalizedData()),u.debug("Using cached response",e,c.data,t),t=u.decode.json(t);u.error(d.noStorage)}},write:{cachedResponse:function(e,t){t&&""===t?u.debug("Response empty, not caching",t):O.Storage!==D?(w.isPlainObject(t)&&(t=JSON.stringify(t)),sessionStorage.setItem(e+u.get.normalizedData(),t),u.verbose("Storing cached response for url",e,c.data,t)):u.error(d.noStorage)}},query:function(){if(u.is.disabled())u.debug("Element is disabled API request aborted");else{if(u.is.loading()){if(!c.interruptRequests)return void u.debug("Cancelling request, previous request is still pending");u.debug("Interrupting previous request"),u.abort()}if(c.defaultData&&w.extend(!0,c.urlData,u.get.defaultData()),c.serializeForm&&(c.data=u.add.formData(c.data)),!1===(a=u.get.settings()))return u.cancelled=!0,void u.error(d.beforeSend);if(u.cancelled=!1,(r=u.get.templatedURL())||u.is.mocked()){if((r=u.add.urlData(r))||u.is.mocked()){if(a.url=c.base+r,s=w.extend(!0,{},c,{type:c.method||c.type,data:e,url:c.base+r,beforeSend:c.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),u.debug("Querying URL",s.url),u.verbose("Using AJAX settings",s),"local"===c.cache&&u.read.cachedResponse(r))return u.debug("Response returned from local cache"),u.request=u.create.request(),void u.request.resolveWith(h,[u.read.cachedResponse(r)]);c.throttle?c.throttleFirstRequest||u.timer?(u.debug("Throttling request",c.throttle),clearTimeout(u.timer),u.timer=setTimeout(function(){u.timer&&delete u.timer,u.debug("Sending throttled request",e,s.method),u.send.request()},c.throttle)):(u.debug("Sending request",e,s.method),u.send.request(),u.timer=setTimeout(function(){},c.throttle)):(u.debug("Sending request",e,s.method),u.send.request())}}else u.error(d.missingURL)}},should:{removeError:function(){return!0===c.hideError||"auto"===c.hideError&&!u.is.form()}},is:{disabled:function(){return 0<p.filter(o.disabled).length},expectingJSON:function(){return"json"===c.dataType||"jsonp"===c.dataType},form:function(){return p.is("form")||b.is("form")},mocked:function(){return c.mockResponse||c.mockResponseAsync||c.response||c.responseAsync},input:function(){return p.is("input")},loading:function(){return!!u.request&&"pending"==u.request.state()},abortedRequest:function(e){return e&&e.readyState!==D&&0===e.readyState?(u.verbose("XHR request determined to be aborted"),!0):(u.verbose("XHR request was not aborted"),!1)},validResponse:function(e){return u.is.expectingJSON()&&w.isFunction(c.successTest)?(u.debug("Checking JSON returned success",c.successTest,e),c.successTest(e)?(u.debug("Response passed success test",e),!0):(u.debug("Response failed success test",e),!1)):(u.verbose("Response is not JSON, skipping validation",c.successTest,e),!0)}},was:{cancelled:function(){return u.cancelled||!1},successful:function(){return u.request&&"resolved"==u.request.state()},failure:function(){return u.request&&"rejected"==u.request.state()},complete:function(){return u.request&&("resolved"==u.request.state()||"rejected"==u.request.state())}},add:{urlData:function(o,s){var e,t;return o&&(e=o.match(c.regExp.required),t=o.match(c.regExp.optional),s=s||c.urlData,e&&(u.debug("Looking for required URL variables",e),w.each(e,function(e,t){var r=-1!==t.indexOf("$")?t.substr(2,t.length-3):t.substr(1,t.length-2),n=w.isPlainObject(s)&&s[r]!==D?s[r]:p.data(r)!==D?p.data(r):b.data(r)!==D?b.data(r):s[r];if(n===D)return u.error(d.requiredParameter,r,o),o=!1;u.verbose("Found required variable",r,n),n=c.encodeParameters?u.get.urlEncodedValue(n):n,o=o.replace(t,n)})),t&&(u.debug("Looking for optional URL variables",e),w.each(t,function(e,t){var r=-1!==t.indexOf("$")?t.substr(3,t.length-4):t.substr(2,t.length-3),n=w.isPlainObject(s)&&s[r]!==D?s[r]:p.data(r)!==D?p.data(r):b.data(r)!==D?b.data(r):s[r];o=n!==D?(u.verbose("Optional variable Found",r,n),o.replace(t,n)):(u.verbose("Optional variable not found",r),-1!==o.indexOf("/"+t)?o.replace("/"+t,""):o.replace(t,""))}))),o},formData:function(e){var t,n={};return e=e||c.data,t=w.isPlainObject(e),w.each(m.serializeArray(),function(e,t){var r=n[t.name];null!=r?Array.isArray(r)?r.push(t.value):n[t.name]=[r,t.value]:n[t.name]=t.value}),e=t?(u.debug("Extending existing data with form data",e,n),w.extend(!0,{},e,n)):(u.debug("Adding form data",n),n)}},send:{request:function(){u.set.loading(),u.request=u.create.request(),u.is.mocked()?u.mockedXHR=u.create.mockedXHR():u.xhr=u.create.xhr(),c.onRequest.call(h,u.request,u.xhr)}},event:{trigger:function(e){u.query(),"submit"!=e.type&&"click"!=e.type||e.preventDefault()},xhr:{always:function(){},done:function(e,t,r){var n=this,o=(new Date).getTime()-i,s=c.loadingDuration-o,a=!!w.isFunction(c.onResponse)&&(u.is.expectingJSON()&&!c.rawResponse?c.onResponse.call(n,w.extend(!0,{},e)):c.onResponse.call(n,e));s=0<s?s:0,a&&(u.debug("Modified API response in onResponse callback",c.onResponse,a,e),e=a),0<s&&u.debug("Response completed early delaying state change by",s),setTimeout(function(){u.is.validResponse(e)?u.request.resolveWith(n,[e,r]):u.request.rejectWith(n,[r,"invalid"])},s)},fail:function(e,t,r){var n=this,o=(new Date).getTime()-i,s=c.loadingDuration-o;0<(s=0<s?s:0)&&u.debug("Response completed early delaying state change by",s),setTimeout(function(){u.is.abortedRequest(e)?u.request.rejectWith(n,[e,"aborted",r]):u.request.rejectWith(n,[e,"error",t,r])},s)}},request:{done:function(e,t){u.debug("Successful API Response",e),"local"===c.cache&&r&&(u.write.cachedResponse(r,e),u.debug("Saving server response locally",u.cache)),c.onSuccess.call(h,e,p,t)},complete:function(e,t){var r,n;u.was.successful()?(n=e,r=t):(r=e,n=u.get.responseFromXHR(r)),u.remove.loading(),c.onComplete.call(h,n,p,r)},fail:function(e,t,r){var n=u.get.responseFromXHR(e),o=u.get.errorFromRequest(n,t,r);if("aborted"==t)return u.debug("XHR Aborted (Most likely caused by page navigation or CORS Policy)",t,r),c.onAbort.call(h,t,p,e),!0;"invalid"==t?u.debug("JSON did not pass success test. A server-side error has most likely occurred",n):"error"==t&&e!==D&&(u.debug("XHR produced a server error",t,r),(e.status<200||300<=e.status)&&r!==D&&""!==r&&u.error(d.statusMessage+r,s.url),c.onError.call(h,o,p,e)),c.errorDuration&&"aborted"!==t&&(u.debug("Adding error state"),u.set.error(),u.should.removeError()&&setTimeout(u.remove.error,c.errorDuration)),u.debug("API Request failed",o,e),c.onFailure.call(h,n,p,e)}}},create:{request:function(){return w.Deferred().always(u.event.request.complete).done(u.event.request.done).fail(u.event.request.fail)},mockedXHR:function(){var e,t,r,n=c.mockResponse||c.response,o=c.mockResponseAsync||c.responseAsync;return r=w.Deferred().always(u.event.xhr.complete).done(u.event.xhr.done).fail(u.event.xhr.fail),n?(t=w.isFunction(n)?(u.debug("Using specified synchronous callback",n),n.call(h,a)):(u.debug("Using settings specified response",n),n),r.resolveWith(h,[t,!1,{responseText:t}])):w.isFunction(o)&&(e=function(e){u.debug("Async callback returned response",e),e?r.resolveWith(h,[e,!1,{responseText:e}]):r.rejectWith(h,[{responseText:e},!1,!1])},u.debug("Using specified async response callback",o),o.call(h,a,e)),r},xhr:function(){var e;return e=w.ajax(s).always(u.event.xhr.always).done(u.event.xhr.done).fail(u.event.xhr.fail),u.verbose("Created server request",e,s),e}},set:{error:function(){u.verbose("Adding error state to element",b),b.addClass(l.error)},loading:function(){u.verbose("Adding loading state to element",b),b.addClass(l.loading),i=(new Date).getTime()}},remove:{error:function(){u.verbose("Removing error state from element",b),b.removeClass(l.error)},loading:function(){u.verbose("Removing loading state from element",b),b.removeClass(l.loading)}},get:{normalizedData:function(){return"string"==typeof c.data?c.data:JSON.stringify(c.data,Object.keys(c.data).sort())},responseFromXHR:function(e){return!!w.isPlainObject(e)&&(u.is.expectingJSON()?u.decode.json(e.responseText):e.responseText)},errorFromRequest:function(e,t,r){return w.isPlainObject(e)&&e.error!==D?e.error:c.error[t]!==D?c.error[t]:r},request:function(){return u.request||!1},xhr:function(){return u.xhr||!1},settings:function(){var e;return(e=c.beforeSend.call(p,c))&&(e.success!==D&&(u.debug("Legacy success callback detected",e),u.error(d.legacyParameters,e.success),e.onSuccess=e.success),e.failure!==D&&(u.debug("Legacy failure callback detected",e),u.error(d.legacyParameters,e.failure),e.onFailure=e.failure),e.complete!==D&&(u.debug("Legacy complete callback detected",e),u.error(d.legacyParameters,e.complete),e.onComplete=e.complete)),e===D&&u.error(d.noReturnedValue),!1===e?e:e!==D?w.extend(!0,{},e):w.extend(!0,{},c)},urlEncodedValue:function(e){var t=O.decodeURIComponent(e),r=O.encodeURIComponent(e);return t!==e?(u.debug("URL value is already encoded, avoiding double encoding",e),e):(u.verbose("Encoding value using encodeURIComponent",e,r),r)},defaultData:function(){var e={};return w.isWindow(v)||(u.is.input()?e.value=p.val():u.is.form()||(e.text=p.text())),e},event:function(){return w.isWindow(v)||"now"==c.on?(u.debug("API called without element, no events attached"),!1):"auto"==c.on?p.is("input")?v.oninput!==D?"input":v.onpropertychange!==D?"propertychange":"keyup":p.is("form")?"submit":"click":c.on},templatedURL:function(e){if(e=e||p.data(n.action)||c.action||!1,r=p.data(n.url)||c.url||!1)return u.debug("Using specified url",r),r;if(e){if(u.debug("Looking up url for action",e,c.api),c.api[e]===D&&!u.is.mocked())return void u.error(d.missingAction,c.action,c.api);r=c.api[e]}else u.is.form()&&(r=p.attr("action")||b.attr("action")||!1,u.debug("No url or action specified, defaulting to form action",r));return r}},abort:function(){var e=u.get.xhr();e&&"resolved"!==e.state()&&(u.debug("Cancelling API request"),e.abort())},reset:function(){u.remove.error(),u.remove.loading()},setting:function(e,t){if(u.debug("Changing setting",e,t),w.isPlainObject(e))w.extend(!0,c,e);else{if(t===D)return c[e];w.isPlainObject(c[e])?w.extend(!0,c[e],t):c[e]=t}},internal:function(e,t){if(w.isPlainObject(e))w.extend(!0,u,e);else{if(t===D)return u[e];u[e]=t}},debug:function(){!c.silent&&c.debug&&(c.performance?u.performance.log(arguments):(u.debug=Function.prototype.bind.call(console.info,console,c.name+":"),u.debug.apply(console,arguments)))},verbose:function(){!c.silent&&c.verbose&&c.debug&&(c.performance?u.performance.log(arguments):(u.verbose=Function.prototype.bind.call(console.info,console,c.name+":"),u.verbose.apply(console,arguments)))},error:function(){c.silent||(u.error=Function.prototype.bind.call(console.error,console,c.name+":"),u.error.apply(console,arguments))},performance:{log:function(e){var t,r;c.performance&&(r=(t=(new Date).getTime())-(A||t),A=t,S.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":r})),clearTimeout(u.performance.timer),u.performance.timer=setTimeout(u.performance.display,500)},display:function(){var e=c.name+":",r=0;A=!1,clearTimeout(u.performance.timer),w.each(S,function(e,t){r+=t["Execution Time"]}),e+=" "+r+"ms",x&&(e+=" '"+x+"'"),(console.group!==D||console.table!==D)&&0<S.length&&(console.groupCollapsed(e),console.table?console.table(S):w.each(S,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),S=[]}},invoke:function(n,e,t){var o,s,r,a=y;return e=e||P,t=v||t,"string"==typeof n&&a!==D&&(n=n.split(/[\. ]/),o=n.length-1,w.each(n,function(e,t){var r=e!=o?t+n[e+1].charAt(0).toUpperCase()+n[e+1].slice(1):n;if(w.isPlainObject(a[r])&&e!=o)a=a[r];else{if(a[r]!==D)return s=a[r],!1;if(!w.isPlainObject(a[t])||e==o)return a[t]!==D?s=a[t]:u.error(d.method,n),!1;a=a[t]}})),w.isFunction(s)?r=s.apply(t,e):s!==D&&(r=s),Array.isArray(q)?q.push(r):q!==D?q=[q,r]:r!==D&&(q=r),s}},T?(y===D&&u.initialize(),u.invoke(k)):(y!==D&&y.invoke("destroy"),u.initialize())}),q!==D?q:this},w.api.settings={name:"API",namespace:"api",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:"auto",stateContext:!1,loadingDuration:0,hideError:"auto",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:"get",data:{},dataType:"json",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,rawResponse:!1,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",noStorage:"Caching responses locally requires session storage",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/\{\$*[A-z0-9]+\}/g,optional:/\{\/\$*[A-z0-9]+\}/g},className:{loading:"loading",error:"error"},selector:{disabled:".disabled",form:"form"},metadata:{action:"action",url:"url"}}}(jQuery,window,document);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.0-beta.8 - Breadcrumb
2
+ * # Fomantic-UI 2.9.0-beta.80 - Breadcrumb
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.0-beta.8 - Breadcrumb
2
+ * # Fomantic-UI 2.9.0-beta.80 - Breadcrumb
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.0-beta.8 - Button
2
+ * # Fomantic-UI 2.9.0-beta.80 - Button
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -118,8 +118,8 @@
118
118
  }
119
119
 
120
120
  /*--------------
121
- Loading
122
- ---------------*/
121
+ Loading
122
+ ---------------*/
123
123
 
124
124
 
125
125
  /* Specificity hack */
@@ -779,8 +779,8 @@
779
779
  }
780
780
 
781
781
  /*--------------
782
- Icon Only
783
- ---------------*/
782
+ Icon Only
783
+ ---------------*/
784
784
 
785
785
  .ui.icon.buttons .button,
786
786
  .ui.icon.button:not(.animated):not(.compact):not(.labeled) {
@@ -936,7 +936,7 @@
936
936
  transition: color 0.1s ease !important;
937
937
  border-radius: 0;
938
938
  margin: 0.28571429em 0.25em 0.28571429em 0 !important;
939
- padding: 0.5em !important;
939
+ padding: 0.5em 0.5em !important;
940
940
  -webkit-box-shadow: none;
941
941
  box-shadow: none;
942
942
  color: rgba(0, 0, 0, 0.6);