[Pkg-javascript-commits] [libjs-semanticui] 05/07: New upstream version 2.2.13+dfsg
Michael Lustfield
mtecknology at debian.org
Wed Oct 4 05:12:08 UTC 2017
This is an automated email from the git hooks/post-receive script.
mtecknology pushed a commit to branch master
in repository libjs-semanticui.
commit fddb287d718873e06b988130e0114cc0cab35188
Author: Michael Lustfield <michael at lustfield.net>
Date: Tue Oct 3 23:46:54 2017 -0500
New upstream version 2.2.13+dfsg
---
dist/components/accordion.min.css | 9 -
dist/components/accordion.min.js | 1 -
dist/components/ad.min.css | 10 -
dist/components/api.min.js | 1 -
dist/components/breadcrumb.min.css | 9 -
dist/components/button.min.css | 9 -
dist/components/card.min.css | 9 -
dist/components/checkbox.min.css | 9 -
dist/components/checkbox.min.js | 1 -
dist/components/colorize.min.js | 11 -
dist/components/comment.min.css | 9 -
dist/components/container.min.css | 9 -
dist/components/dimmer.min.css | 9 -
dist/components/dimmer.min.js | 1 -
dist/components/divider.min.css | 9 -
dist/components/dropdown.min.css | 9 -
dist/components/dropdown.min.js | 2 -
dist/components/embed.min.css | 9 -
dist/components/embed.min.js | 1 -
dist/components/feed.min.css | 9 -
dist/components/flag.min.css | 9 -
dist/components/form.min.css | 9 -
dist/components/form.min.js | 1 -
dist/components/grid.min.css | 9 -
dist/components/header.min.css | 9 -
dist/components/icon.min.css | 9 -
dist/components/image.min.css | 9 -
dist/components/input.min.css | 9 -
dist/components/item.min.css | 9 -
dist/components/label.min.css | 9 -
dist/components/list.min.css | 9 -
dist/components/loader.min.css | 9 -
dist/components/menu.min.css | 1 -
dist/components/message.min.css | 9 -
dist/components/modal.min.css | 9 -
dist/components/modal.min.js | 1 -
dist/components/nag.min.css | 9 -
dist/components/nag.min.js | 1 -
dist/components/popup.min.css | 9 -
dist/components/popup.min.js | 1 -
dist/components/progress.min.css | 9 -
dist/components/progress.min.js | 1 -
dist/components/rail.min.css | 9 -
dist/components/rating.min.css | 9 -
dist/components/rating.min.js | 1 -
dist/components/reset.min.css | 9 -
dist/components/reveal.min.css | 9 -
dist/components/search.min.css | 9 -
dist/components/search.min.js | 1 -
dist/components/segment.min.css | 9 -
dist/components/shape.min.css | 9 -
dist/components/shape.min.js | 1 -
dist/components/sidebar.min.css | 9 -
dist/components/sidebar.min.js | 1 -
dist/components/site.min.css | 9 -
dist/components/site.min.js | 1 -
dist/components/state.min.js | 1 -
dist/components/statistic.min.css | 9 -
dist/components/step.min.css | 9 -
dist/components/sticky.min.css | 9 -
dist/components/sticky.min.js | 1 -
dist/components/tab.min.css | 9 -
dist/components/tab.min.js | 1 -
dist/components/table.min.css | 9 -
dist/components/transition.min.css | 9 -
dist/components/transition.min.js | 1 -
dist/components/video.min.css | 10 -
dist/components/video.min.js | 11 -
dist/components/visibility.min.js | 1 -
dist/components/visit.min.js | 11 -
dist/semantic.min.css | 364 --
dist/semantic.min.js | 19 -
examples/assets/library/iframe-content.js | 707 ---
examples/assets/library/iframe.js | 642 ---
examples/assets/library/jquery.min.js | 4 -
test/coverage/PhantomJS 1.9.2 (Linux)/index.html | 320 --
test/coverage/PhantomJS 1.9.2 (Linux)/prettify.css | 1 -
test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js | 1 -
...ge-PhantomJS 1.9.2 (Linux)-20131014_012621.json | 1 -
...ge-PhantomJS 1.9.2 (Linux)-20131014_012811.json | 1 -
test/fixtures/accordion.html | 24 -
test/fixtures/checkbox.html | 46 -
test/fixtures/dropdown.html | 9 -
test/fixtures/modal.html | 25 -
test/fixtures/popup.html | 8 -
test/fixtures/rating.html | 7 -
test/fixtures/shape.html | 7 -
test/fixtures/sidebar.html | 25 -
test/fixtures/tab.html | 8 -
test/fixtures/transition.html | 1 -
test/fixtures/video.html | 5 -
test/helpers/jasmine-clog.js | 17 -
test/helpers/jasmine-jquery.js | 705 ---
test/helpers/jasmine-sinon.js | 58 -
test/helpers/jquery-events.js | 28 -
test/helpers/sinon.js | 4819 --------------------
test/meteor/assets.js | 20 -
test/meteor/fonts.js | 16 -
test/modules/accordion.spec.js | 10 -
test/modules/checkbox.spec.js | 8 -
test/modules/dropdown.spec.js | 8 -
test/modules/modal.spec.js | 10 -
test/modules/module.spec.js | 218 -
test/modules/popup.spec.js | 8 -
test/modules/search.spec.js | 8 -
test/modules/shape.spec.js | 8 -
test/modules/sidebar.spec.js | 8 -
test/modules/tab.spec.js | 9 -
test/modules/transition.spec.js | 8 -
test/modules/video.spec.js | 8 -
110 files changed, 8662 deletions(-)
diff --git a/dist/components/accordion.min.css b/dist/components/accordion.min.css
deleted file mode 100755
index c1e9c44..0000000
--- a/dist/components/accordion.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Accordion
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.accordion,.ui.accordion .accordion{max-width:100%}.ui.accordion .accordion{margin:1em 0 0;padding:0}.ui.accordion .accordion .title,.ui.accordion .title{cursor:pointer}.ui.accordion .title:not(.ui){padding:.5em 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;color:rgba(0,0,0,.87)}.ui.accordion .accordion .title~.content,.ui.accordion .title~.content{display:none}.ui.accordion:not(.styled) .accordion .title~.content:not(.ui),.ui.accordion:not(.styled) . [...]
\ No newline at end of file
diff --git a/dist/components/accordion.min.js b/dist/components/accordion.min.js
deleted file mode 100644
index cae2a00..0000000
--- a/dist/components/accordion.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n,t,i){"use strict";n=void 0!==n&&n.Math==Math?n:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.accordion=function(t){var i,o=e(this),a=(new Date).getTime(),s=[],r=arguments[0],c="string"==typeof r,l=[].slice.call(arguments,1);n.requestAnimationFrame||n.mozRequestAnimationFrame||n.webkitRequestAnimationFrame||n.msRequestAnimationFrame;return o.each(function(){var d,u,g=e.isPlainObject(t)?e.extend(!0,{},e.fn.accordion.settings,t):e.extend({},e.fn [...]
\ No newline at end of file
diff --git a/dist/components/ad.min.css b/dist/components/ad.min.css
deleted file mode 100644
index ab4a55d..0000000
--- a/dist/components/ad.min.css
+++ /dev/null
@@ -1,10 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Ad
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Copyright 2013 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child{margin:0}.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small [...]
\ No newline at end of file
diff --git a/dist/components/api.min.js b/dist/components/api.min.js
deleted file mode 100644
index ab6947b..0000000
--- a/dist/components/api.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,r,n){"use strict";var t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();e.api=e.fn.api=function(r){var n,o=e(e.isFunction(this)?t:this),i=o.selector||"",s=(new Date).getTime(),a=[],u=arguments[0],c="string"==typeof u,d=[].slice.call(arguments,1);return o.each(function(){var o,l,g,f,p,m=e.isPlainObject(r)?e.extend(!0,{},e.fn.api.settings,r):e.extend({},e.fn.api.settings),v=m.namespace,b=m.metadata,h=m.selector,y=m.error,q=m [...]
\ No newline at end of file
diff --git a/dist/components/breadcrumb.min.css b/dist/components/breadcrumb.min.css
deleted file mode 100755
index b319278..0000000
--- a/dist/components/breadcrumb.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Breadcrumb
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.breadcrumb{line-height:1;display:inline-block;margin:0 0;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem 0;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183c4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:po [...]
\ No newline at end of file
diff --git a/dist/components/button.min.css b/dist/components/button.min.css
deleted file mode 100755
index 239a3a1..0000000
--- a/dist/components/button.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Button
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:0;border:none;vertical-align:baseline;background:#e0e1e2 none;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em .78571429em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) [...]
\ No newline at end of file
diff --git a/dist/components/card.min.css b/dist/components/card.min.css
deleted file mode 100755
index aa7f4e8..0000000
--- a/dist/components/card.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Item
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#fff;padding:0;border:none;border-radius:.28571429rem;box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;-webkit-transition:box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,-webkit-transform .1s ease;transition [...]
\ No newline at end of file
diff --git a/dist/components/checkbox.min.css b/dist/components/checkbox.min.css
deleted file mode 100755
index 2274cab..0000000
--- a/dist/components/checkbox.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Checkbox
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.checkbox{position:relative;display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;min-height:17px;font-size:1rem;line-height:17px;min-width:17px}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{cursor:pointer;position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:3;width:17px;height:17px}.ui.checkbox .box,.ui.checkbox label{cursor:auto;position:relative;display:block;paddi [...]
\ No newline at end of file
diff --git a/dist/components/checkbox.min.js b/dist/components/checkbox.min.js
deleted file mode 100644
index 04e359f..0000000
--- a/dist/components/checkbox.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n,i,t){"use strict";n=void 0!==n&&n.Math==Math?n:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.checkbox=function(t){var o,a=e(this),c=a.selector||"",r=(new Date).getTime(),d=[],l=arguments[0],s="string"==typeof l,u=[].slice.call(arguments,1);return a.each(function(){var a,b,h=e.extend(!0,{},e.fn.checkbox.settings,t),g=h.className,f=h.namespace,p=h.selector,k=h.error,m="."+f,v="module-"+f,y=e(this),C=e(this).children(p.label),x=e(this).children( [...]
\ No newline at end of file
diff --git a/dist/components/colorize.min.js b/dist/components/colorize.min.js
deleted file mode 100644
index de6629d..0000000
--- a/dist/components/colorize.min.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * # Semantic UI 2.0.0 - Colorize
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Copyright 2015 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-!function(e,n,i,t){"use strict";e.fn.colorize=function(n){var i=e.isPlainObject(n)?e.extend(!0,{},e.fn.colorize.settings,n):e.extend({},e.fn.colorize.settings),o=arguments||!1;return e(this).each(function(n){var a,r,c,s,d,g,u,l,m=e(this),f=e("<canvas />")[0],h=e("<canvas />")[0],p=e("<canvas />")[0],v=new Image,w=i.colors,b=(i.paths,i.namespace),y=i.error,C=m.data("module-"+b);return l={checkPreconditions:function(){return l.debug("Checking pre-conditions"),!e.isPlainObject(w)||e.isEmpty [...]
\ No newline at end of file
diff --git a/dist/components/comment.min.css b/dist/components/comment.min.css
deleted file mode 100755
index d298823..0000000
--- a/dist/components/comment.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Comment
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .commen [...]
\ No newline at end of file
diff --git a/dist/components/container.min.css b/dist/components/container.min.css
deleted file mode 100644
index dca5bde..0000000
--- a/dist/components/container.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Container
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.container{display:block;max-width:100%!important}@media only screen and (max-width:767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}.ui.grid.container{width:auto!important}.ui.relaxed.grid.container{width:auto!important}.ui.very.relaxed.grid.container{width:auto!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.container{width:723px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{wi [...]
\ No newline at end of file
diff --git a/dist/components/dimmer.min.css b/dist/components/dimmer.min.css
deleted file mode 100755
index f8b48fa..0000000
--- a/dist/components/dimmer.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Dimmer
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.dimmable:not(body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-se [...]
\ No newline at end of file
diff --git a/dist/components/dimmer.min.js b/dist/components/dimmer.min.js
deleted file mode 100755
index 5f9b041..0000000
--- a/dist/components/dimmer.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,i,n,t){"use strict";i=void 0!==i&&i.Math==Math?i:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.dimmer=function(i){var t,o=e(this),a=(new Date).getTime(),r=[],s=arguments[0],d="string"==typeof s,m=[].slice.call(arguments,1);return o.each(function(){var c,u,l,f=e.isPlainObject(i)?e.extend(!0,{},e.fn.dimmer.settings,i):e.extend({},e.fn.dimmer.settings),g=f.selector,v=f.namespace,p=f.className,h=f.error,b="."+v,y="module-"+v,C=o.selector||"",w="ont [...]
\ No newline at end of file
diff --git a/dist/components/divider.min.css b/dist/components/divider.min.css
deleted file mode 100755
index 7252989..0000000
--- a/dist/components/divider.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Divider
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.column+.divider,.ui.grid>.row>.column+.divider{left:auto}.ui.horizontal.divider{display:tabl [...]
\ No newline at end of file
diff --git a/dist/components/dropdown.min.css b/dist/components/dropdown.min.css
deleted file mode 100755
index 17456f7..0000000
--- a/dist/components/dropdown.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Dropdown
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.dropdown{cursor:pointer;position:relative;display:inline-block;outline:0;text-align:left;-webkit-transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease;-webkit-tap-highlight-color:transparent}.ui.dropdown .menu{cursor:auto;position:absolute;display:none;outline:0;top:100%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;margin:0;padding:0 0;background:#fff;font-size:1em;text-shadow:none;text-align:left;box-shadow:0 [...]
\ No newline at end of file
diff --git a/dist/components/dropdown.min.js b/dist/components/dropdown.min.js
deleted file mode 100644
index c3e50b6..0000000
--- a/dist/components/dropdown.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(e,t,n,i){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.dropdown=function(i){var a,o=e(this),s=e(n),r=o.selector||"",l="ontouchstart"in n.documentElement,c=(new Date).getTime(),u=[],d=arguments[0],v="string"==typeof d,f=[].slice.call(arguments,1);return o.each(function(m){var h,g,p,b,w,x,C,S,y=e.isPlainObject(i)?e.extend(!0,{},e.fn.dropdown.settings,i):e.extend({},e.fn.dropdown.settings),A=y.className,T=y. [...]
-S.select.nextAvailable(n)):(S.add.value(o,a,t),S.set.text(S.add.variables(T.count)),S.set.activeItem(t))):s||(S.debug("Selected active value, removing label"),S.remove.selected(o)):(y.apiSettings&&y.saveRemoteData&&S.save.remoteData(a,o),S.set.text(a),S.set.value(o,a,t),t.addClass(A.active).addClass(A.selected))}))}},add:{label:function(t,n,i){var a,o=S.is.searchSelection()?H:P,s=S.escape.value(t);if(a=e("<a />").addClass(A.label).attr("data-"+I.value,s).html(V.label(s,n)),a=y.onLabelCre [...]
\ No newline at end of file
diff --git a/dist/components/embed.min.css b/dist/components/embed.min.css
deleted file mode 100644
index cee31a1..0000000
--- a/dist/components/embed.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Video
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.embed{position:relative;max-width:100%;height:0;overflow:hidden;background:#dcddde;padding-bottom:56.25%}.ui.embed embed,.ui.embed iframe,.ui.embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.embed>.embed{display:none}.ui.embed>.placeholder{position:absolute;cursor:pointer;top:0;left:0;display:block;width:100%;height:100%;background-color:radial-gradient(transparent 45%,rgba(0,0,0,.3))}.ui.embed>.icon{cursor:pointer;position:abso [...]
\ No newline at end of file
diff --git a/dist/components/embed.min.js b/dist/components/embed.min.js
deleted file mode 100644
index f70a488..0000000
--- a/dist/components/embed.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,o,n,t){"use strict";o=void 0!==o&&o.Math==Math?o:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.embed=function(n){var t,r=e(this),a=r.selector||"",i=(new Date).getTime(),c=[],l=arguments[0],d="string"==typeof l,u=[].slice.call(arguments,1);return r.each(function(){var s,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.embed.settings,n):e.extend({},e.fn.embed.settings),p=m.selector,f=m.className,h=m.sources,b=m.error,v=m.metadata,g=m.namespace,y=m.templa [...]
\ No newline at end of file
diff --git a/dist/components/feed.min.css b/dist/components/feed.min.css
deleted file mode 100755
index 2bd920d..0000000
--- a/dist/components/feed.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Feed
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.feed{margin:1em 0}.ui.feed:first-child{margin-top:0}.ui.feed:last-child{margin-bottom:0}.ui.feed>.event{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;width:100%;padding:.21428571rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:block;-webkit-box-flex: [...]
\ No newline at end of file
diff --git a/dist/components/flag.min.css b/dist/components/flag.min.css
deleted file mode 100755
index e158454..0000000
--- a/dist/components/flag.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Flag
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */i.flag:not(.icon){display:inline-block;width:16px;height:11px;line-height:11px;vertical-align:baseline;margin:0 .5em 0 0;text-decoration:inherit;speak:none;font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.flag:not(.icon):before{display:inline-block;content:'';background:url(../themes/default/assets/images/flags.png) no-repeat -108px -1976px;width:16px;height:11px}i.flag.ad:before,i.flag.andorra:before{background-position:0 0}i.flag.ae:before,i [...]
\ No newline at end of file
diff --git a/dist/components/form.min.css b/dist/components/form.min.css
deleted file mode 100755
index 6a417cc..0000000
--- a/dist/components/form.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Form
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.form{position:relative;max-width:100%}.ui.form>p{margin:1em 0}.ui.form .field{clear:both;margin:0 0 1em}.ui.form .field:last-child,.ui.form .fields:last-child .field{margin-bottom:0}.ui.form .fields .field{clear:both;margin:0}.ui.form .field>label{display:block;margin:0 0 .28571429rem 0;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form input:not([type]),.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=email],. [...]
\ No newline at end of file
diff --git a/dist/components/form.min.js b/dist/components/form.min.js
deleted file mode 100644
index 0064b28..0000000
--- a/dist/components/form.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,n,i){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.form=function(t){var i,r=e(this),a=r.selector||"",o=(new Date).getTime(),s=[],l=arguments[0],u=arguments[1],c="string"==typeof l,d=[].slice.call(arguments,1);return r.each(function(){var f,p,m,g,h,v,b,y,x,k,E,w,C,V,R,S,F,A,T,D=e(this),O=this,j=[],$=!1;T={initialize:function(){T.get.settings(),c?(void 0===A&&T.instantiate(),T.invoke(l)):(void 0!==A&&A. [...]
\ No newline at end of file
diff --git a/dist/components/grid.min.css b/dist/components/grid.min.css
deleted file mode 100755
index 43fb153..0000000
--- a/dist/components/grid.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Grid
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0}.ui.grid{margin-top:-1rem;margin-bottom:-1rem;margin-left:-1rem;margin-right:-1rem}.ui.relaxed.grid{margin-left:-1.5rem;margin-right:-1.5rem}.ui[class*="very relaxed"].grid{margin-left:-2.5rem;margin-right:-2.5rem [...]
\ No newline at end of file
diff --git a/dist/components/header.min.css b/dist/components/header.min.css
deleted file mode 100755
index ac62f53..0000000
--- a/dist/components/header.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Header
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.header{border:none;margin:calc(2rem - .14285714em) 0 1rem;padding:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;line-height:1.28571429em;text-transform:none;color:rgba(0,0,0,.87)}.ui.header:first-child{margin-top:-.14285714em}.ui.header:last-child{margin-bottom:0}.ui.header .sub.header{display:block;font-weight:400;padding:0;margin:0;font-size:1rem;line-height:1.2em;color:rgba(0,0,0,.6)}.ui.header>.icon{display:table-cell;opacity:1;font-size:1.5e [...]
\ No newline at end of file
diff --git a/dist/components/icon.min.css b/dist/components/icon.min.css
deleted file mode 100755
index 49e08cc..0000000
--- a/dist/components/icon.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Icon
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */@font-face{font-family:Icons;src:url(../themes/default/assets/fonts/icons.eot);src:url(../themes/default/assets/fonts/icons.eot?#iefix) format('embedded-opentype'),url(../themes/default/assets/fonts/icons.woff2) format('woff2'),url(../themes/default/assets/fonts/icons.woff) format('woff'),url(../themes/default/assets/fonts/icons.ttf) format('truetype'),url(../themes/default/assets/fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoratio [...]
\ No newline at end of file
diff --git a/dist/components/image.min.css b/dist/components/image.min.css
deleted file mode 100755
index 7e60283..0000000
--- a/dist/components/image.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Image
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.hidden.transition.image,.ui.hidden.transition.images{display:block;visibility:hidden}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-b [...]
\ No newline at end of file
diff --git a/dist/components/input.min.css b/dist/components/input.min.css
deleted file mode 100755
index c48983f..0000000
--- a/dist/components/input.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Input
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.input{position:relative;font-weight:400;font-style:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:rgba(0,0,0,.87)}.ui.input input{margin:0;max-width:100%;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:1.21428571em;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;padding:.67857143em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);colo [...]
\ No newline at end of file
diff --git a/dist/components/item.min.css b/dist/components/item.min.css
deleted file mode 100755
index f64c15e..0000000
--- a/dist/components/item.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Item
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.items>.item{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1em 0;width:100%;min-height:0;background:0 0;padding:0;border:none;border-radius:0;box-shadow:none;-webkit-transition:box-shadow .1s ease;transition:box-shadow .1s ease;z-index:''}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:' ';height:0;clear:both;overflow:hidden [...]
\ No newline at end of file
diff --git a/dist/components/label.min.css b/dist/components/label.min.css
deleted file mode 100755
index f254835..0000000
--- a/dist/components/label.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Label
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.label{display:inline-block;line-height:1;vertical-align:baseline;margin:0 .14285714em;background-color:#e8e8e8;background-image:none;padding:.5833em .833em;color:rgba(0,0,0,.6);text-transform:none;font-weight:700;border:0 solid transparent;border-radius:.28571429rem;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}a.ui.label{cursor:pointer}.ui.label>a{cursor:pointer;color:inherit;opacity:. [...]
\ No newline at end of file
diff --git a/dist/components/list.min.css b/dist/components/list.min.css
deleted file mode 100755
index 1ad533f..0000000
--- a/dist/components/list.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - List
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.list,ol.ui.list,ul.ui.list{list-style-type:none;margin:1em 0;padding:0 0}.ui.list:first-child,ol.ui.list:first-child,ul.ui.list:first-child{margin-top:0;padding-top:0}.ui.list:last-child,ol.ui.list:last-child,ul.ui.list:last-child{margin-bottom:0;padding-bottom:0}.ui.list .list>.item,.ui.list>.item,ol.ui.list li,ul.ui.list li{display:list-item;table-layout:fixed;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.list>.item:after,.ui [...]
\ No newline at end of file
diff --git a/dist/components/loader.min.css b/dist/components/loader.min.css
deleted file mode 100755
index 6493ac6..0000000
--- a/dist/components/loader.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Loader
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit [...]
\ No newline at end of file
diff --git a/dist/components/menu.min.css b/dist/components/menu.min.css
deleted file mode 100755
index 17fc8cf..0000000
--- a/dist/components/menu.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.ui.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1rem 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#fff;font-weight:400;border:1px solid rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem;min-height:2.85714286em}.ui.menu:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.menu:first-child{margin-top:0}.ui.menu:last-child{margin-bottom:0}.ui.menu .menu{margin:0}.ui.menu:not(.vertical [...]
\ No newline at end of file
diff --git a/dist/components/message.min.css b/dist/components/message.min.css
deleted file mode 100755
index 987d9c0..0000000
--- a/dist/components/message.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Message
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.message{position:relative;min-height:1em;margin:1em 0;background:#f8f8f9;padding:1em 1.5em;line-height:1.4285em;color:rgba(0,0,0,.87);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;border-radius:.28571429rem;box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.mess [...]
\ No newline at end of file
diff --git a/dist/components/modal.min.css b/dist/components/modal.min.css
deleted file mode 100755
index 3f21a3f..0000000
--- a/dist/components/modal.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Modal
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.modal{display:none;position:fixed;z-index:1001;top:50%;left:50%;text-align:left;background:#fff;border:none;box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);-webkit-transform-origin:50% 25%;transform-origin:50% 25%;border-radius:.28571429rem;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;will-change:top,left,margin,transform,opacity}.ui.modal>.icon:first-child+*,.ui.modal>:first-child:not(.icon){border-top-left-radius:.2 [...]
\ No newline at end of file
diff --git a/dist/components/modal.min.js b/dist/components/modal.min.js
deleted file mode 100755
index d4d2493..0000000
--- a/dist/components/modal.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,i,n,t){"use strict";i=void 0!==i&&i.Math==Math?i:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.modal=function(t){var o,a=e(this),r=e(i),s=e(n),c=e("body"),l=a.selector||"",d=(new Date).getTime(),u=[],m=arguments[0],f="string"==typeof m,g=[].slice.call(arguments,1),h=i.requestAnimationFrame||i.mozRequestAnimationFrame||i.webkitRequestAnimationFrame||i.msRequestAnimationFrame||function(e){setTimeout(e,0)};return a.each(function(){var a,v,b,p,y,k, [...]
\ No newline at end of file
diff --git a/dist/components/nag.min.css b/dist/components/nag.min.css
deleted file mode 100755
index a534037..0000000
--- a/dist/components/nag.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Nag
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position [...]
\ No newline at end of file
diff --git a/dist/components/nag.min.js b/dist/components/nag.min.js
deleted file mode 100644
index 4e967c1..0000000
--- a/dist/components/nag.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,o,t,i){"use strict";o=void 0!==o&&o.Math==Math?o:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.nag=function(t){var i,n=e(this),s=n.selector||"",a=(new Date).getTime(),r=[],d=arguments[0],l="string"==typeof d,c=[].slice.call(arguments,1);return n.each(function(){var n,g=e.isPlainObject(t)?e.extend(!0,{},e.fn.nag.settings,t):e.extend({},e.fn.nag.settings),u=(g.className,g.selector),m=g.error,f=g.namespace,p="."+f,v=f+"-module",h=e(this),b=(h.find [...]
\ No newline at end of file
diff --git a/dist/components/popup.min.css b/dist/components/popup.min.css
deleted file mode 100755
index dc080ab..0000000
--- a/dist/components/popup.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Popup
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #d4d4d5;line-height:1.4285em;max-width:250px;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif [...]
\ No newline at end of file
diff --git a/dist/components/popup.min.js b/dist/components/popup.min.js
deleted file mode 100644
index 5605175..0000000
--- a/dist/components/popup.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e,o,n){"use strict";e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),t.fn.popup=function(n){var i,r=t(this),a=t(o),s=t(e),p=t("body"),l=r.selector||"",u=(new Date).getTime(),c=[],d=arguments[0],f="string"==typeof d,g=[].slice.call(arguments,1);return r.each(function(){var r,h,v,m,b,w,y=t.isPlainObject(n)?t.extend(!0,{},t.fn.popup.settings,n):t.extend({},t.fn.popup.settings),C=y.selector,T=y.className,P=y.error,x=y.metadata, [...]
\ No newline at end of file
diff --git a/dist/components/progress.min.css b/dist/components/progress.min.css
deleted file mode 100755
index ee7f23e..0000000
--- a/dist/components/progress.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Progress Bar
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.progress{position:relative;display:block;max-width:100%;border:none;margin:1em 0 2.5em;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s [...]
\ No newline at end of file
diff --git a/dist/components/progress.min.js b/dist/components/progress.min.js
deleted file mode 100644
index f9d7d9b..0000000
--- a/dist/components/progress.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,n,r){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();void 0!==t&&t.Math==Math||("undefined"!=typeof self&&self.Math==Math?self:Function("return this")());e.fn.progress=function(t){var r,a=e(this),o=a.selector||"",i=(new Date).getTime(),s=[],l=arguments[0],c="string"==typeof l,u=[].slice.call(arguments,1);return a.each(function(){var a,d,v=e.isPlainObject(t)?e.extend(!0,{},e.fn.progress.settings,t):e.extend({ [...]
\ No newline at end of file
diff --git a/dist/components/rail.min.css b/dist/components/rail.min.css
deleted file mode 100755
index 18f8679..0000000
--- a/dist/components/rail.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Rail
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.rail{position:absolute;top:0;width:300px;height:100%}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36, [...]
\ No newline at end of file
diff --git a/dist/components/rating.min.css b/dist/components/rating.min.css
deleted file mode 100755
index 6799e4f..0000000
--- a/dist/components/rating.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Rating
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.rating{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap;vertical-align:baseline}.ui.rating:last-child{margin-right:0}.ui.rating .icon{padding:0;margin:0;text-align:center;font-weight:400;font-style:normal;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;width:1.25em;height:auto;-webkit-transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease;transition:opacity .1s ease,background .1s ease,text- [...]
\ No newline at end of file
diff --git a/dist/components/rating.min.js b/dist/components/rating.min.js
deleted file mode 100644
index 05cae48..0000000
--- a/dist/components/rating.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n,t,i){"use strict";n=void 0!==n&&n.Math==Math?n:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.rating=function(n){var t,i=e(this),a=i.selector||"",o=(new Date).getTime(),r=[],s=arguments[0],l="string"==typeof s,c=[].slice.call(arguments,1);return i.each(function(){var d,u,g=e.isPlainObject(n)?e.extend(!0,{},e.fn.rating.settings,n):e.extend({},e.fn.rating.settings),m=g.namespace,v=g.className,f=g.metadata,p=g.selector,b=(g.error,"."+m),h="module [...]
\ No newline at end of file
diff --git a/dist/components/reset.min.css b/dist/components/reset.min.css
deleted file mode 100755
index a719650..0000000
--- a/dist/components/reset.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Reset
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */*,:after,:before{box-sizing:inherit}html{box-sizing:border-box}input[type=email],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;-moz-appearance:none}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1 [...]
\ No newline at end of file
diff --git a/dist/components/reveal.min.css b/dist/components/reveal.min.css
deleted file mode 100755
index 7e3967b..0000000
--- a/dist/components/reveal.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Reveal
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.reveal{display:inherit;position:relative!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:3!important;-webkit-transition:all .5s ease .1s;transition:all .5s ease .1s}.ui.reveal>.hidden.content{position:relative!important;z-index:2!important}.ui.active.reveal .visible.content,.ui.reveal:hover .visible.content{z-index:4!important}.ui.slide.reveal{position:relative!important;overflow:hidden!important;whit [...]
\ No newline at end of file
diff --git a/dist/components/search.min.css b/dist/components/search.min.css
deleted file mode 100755
index bf42f9c..0000000
--- a/dist/components/search.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Search
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:0 0 0 0 transparent inset;-webkit-transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-c [...]
\ No newline at end of file
diff --git a/dist/components/search.min.js b/dist/components/search.min.js
deleted file mode 100644
index 1c9fa37..0000000
--- a/dist/components/search.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,s,n){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.search=function(n){var i,r=e(this),a=r.selector||"",o=(new Date).getTime(),c=[],u=arguments[0],l="string"==typeof u,d=[].slice.call(arguments,1);return e(this).each(function(){var f,v=e.isPlainObject(n)?e.extend(!0,{},e.fn.search.settings,n):e.extend({},e.fn.search.settings),g=v.className,h=v.metadata,p=v.regExp,m=v.fields,b=v.selector,y=v.error,R=v.n [...]
\ No newline at end of file
diff --git a/dist/components/segment.min.css b/dist/components/segment.min.css
deleted file mode 100755
index 45fdfd2..0000000
--- a/dist/components/segment.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Segment
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.segment{position:relative;background:#fff;box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;padding:1em 1em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background:none transparent;border-radius:0;box-shadow:none;border:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.segment:last-child{border-bottom:none}.ui.i [...]
\ No newline at end of file
diff --git a/dist/components/shape.min.css b/dist/components/shape.min.css
deleted file mode 100755
index 7361edf..0000000
--- a/dist/components/shape.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Shape
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left [...]
\ No newline at end of file
diff --git a/dist/components/shape.min.js b/dist/components/shape.min.js
deleted file mode 100644
index 7dcc14a..0000000
--- a/dist/components/shape.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,i,n){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.shape=function(n){var a,o=e(this),r=(e("body"),(new Date).getTime()),s=[],d=arguments[0],l="string"==typeof d,u=[].slice.call(arguments,1),c=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return o.each(function(){var t,g,f,m=o.selector||"",h=e.isPlainObject(n) [...]
\ No newline at end of file
diff --git a/dist/components/sidebar.min.css b/dist/components/sidebar.min.css
deleted file mode 100755
index a4696d8..0000000
--- a/dist/components/sidebar.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Sidebar
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.sidebar{position:fixed;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:none;transition:none;will-change:transform;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;-webkit-overflow-scrolling:touch;height:100%!important;max-height:100%;border-radius:0!important;margin:0!important;overflow-y:auto!important;z-index:102}.ui.sidebar>*{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.left.si [...]
\ No newline at end of file
diff --git a/dist/components/sidebar.min.js b/dist/components/sidebar.min.js
deleted file mode 100644
index 8f9e3c9..0000000
--- a/dist/components/sidebar.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,i,n,t){"use strict";i=void 0!==i&&i.Math==Math?i:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.sidebar=function(t){var o,r=e(this),s=e(i),a=e(n),l=e("html"),c=e("head"),d=r.selector||"",u=(new Date).getTime(),f=[],b=arguments[0],h="string"==typeof b,m=[].slice.call(arguments,1),v=i.requestAnimationFrame||i.mozRequestAnimationFrame||i.webkitRequestAnimationFrame||i.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){va [...]
\ No newline at end of file
diff --git a/dist/components/site.min.css b/dist/components/site.min.css
deleted file mode 100755
index 2245555..0000000
--- a/dist/components/site.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Site
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#fff;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.28571429em;margin:calc(2rem - .1428571 [...]
\ No newline at end of file
diff --git a/dist/components/site.min.js b/dist/components/site.min.js
deleted file mode 100644
index a48a086..0000000
--- a/dist/components/site.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n,o,i){e.site=e.fn.site=function(i){var t,s,r=(new Date).getTime(),a=[],c=arguments[0],l="string"==typeof c,u=[].slice.call(arguments,1),d=e.isPlainObject(i)?e.extend(!0,{},e.site.settings,i):e.extend({},e.site.settings),m=d.namespace,g=d.error,f="module-"+m,b=e(o),p=b,v=this,h=p.data(f);return t={initialize:function(){t.instantiate()},instantiate:function(){t.verbose("Storing instance of site",t),h=t,p.data(f,t)},normalize:function(){t.fix.console(),t.fix.requestAnimationFra [...]
\ No newline at end of file
diff --git a/dist/components/state.min.js b/dist/components/state.min.js
deleted file mode 100644
index 5b4bf5a..0000000
--- a/dist/components/state.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,n,a){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.state=function(t){var a,i=e(this),o=i.selector||"",s=(n.documentElement,(new Date).getTime()),c=[],r=arguments[0],l="string"==typeof r,u=[].slice.call(arguments,1);return i.each(function(){var n,d=e.isPlainObject(t)?e.extend(!0,{},e.fn.state.settings,t):e.extend({},e.fn.state.settings),v=d.error,f=d.metadata,g=d.className,b=d.namespace,x=d.states,h=d. [...]
\ No newline at end of file
diff --git a/dist/components/statistic.min.css b/dist/components/statistic.min.css
deleted file mode 100755
index a6d229e..0000000
--- a/dist/components/statistic.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Statistic
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1em 0;max-width:auto}.ui.statistic+.ui.statistic{margin:0 0 0 1.5em}.ui.statistic:first-child{margin-top:0}.ui.statistic:last-child{margin-bottom:0}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-f [...]
\ No newline at end of file
diff --git a/dist/components/step.min.css b/dist/components/step.min.css
deleted file mode 100755
index f1d8ee0..0000000
--- a/dist/components/step.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Step
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:1em 0;background:'';box-shadow:none;line-height:1.14285714em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.steps:first-child{margin-top:0}.ui.steps:last-child{margin-bottom:0}.ui.steps .step{position:relativ [...]
\ No newline at end of file
diff --git a/dist/components/sticky.min.css b/dist/components/sticky.min.css
deleted file mode 100755
index e76a796..0000000
--- a/dist/components/sticky.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Sticky
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky}
\ No newline at end of file
diff --git a/dist/components/sticky.min.js b/dist/components/sticky.min.js
deleted file mode 100755
index 429bbc3..0000000
--- a/dist/components/sticky.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,o,n){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.sticky=function(n){var i,s=e(this),r=s.selector||"",c=(new Date).getTime(),l=[],a=arguments[0],f="string"==typeof a,m=[].slice.call(arguments,1);return s.each(function(){var s,d,u,h,g,p=e.isPlainObject(n)?e.extend(!0,{},e.fn.sticky.settings,n):e.extend({},e.fn.sticky.settings),b=p.className,v=p.namespace,x=p.error,C="."+v,S="module-"+v,y=e(this),k=e(t [...]
\ No newline at end of file
diff --git a/dist/components/tab.min.css b/dist/components/tab.min.css
deleted file mode 100755
index 0b8554f..0000000
--- a/dist/components/tab.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Tab
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolu [...]
\ No newline at end of file
diff --git a/dist/components/tab.min.js b/dist/components/tab.min.js
deleted file mode 100644
index ab4f5a3..0000000
--- a/dist/components/tab.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t,a,n){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.tab=function(n){var i,o=e(e.isFunction(this)?t:this),r=o.selector||"",s=(new Date).getTime(),c=[],l=arguments[0],d="string"==typeof l,u=[].slice.call(arguments,1),b=!1;return o.each(function(){var g,f,h,p,v,m,y=e.isPlainObject(n)?e.extend(!0,{},e.fn.tab.settings,n):e.extend({},e.fn.tab.settings),T=y.className,L=y.metadata,x=y.selector,A=y.error,P="."+ [...]
\ No newline at end of file
diff --git a/dist/components/table.min.css b/dist/components/table.min.css
deleted file mode 100755
index e5b882c..0000000
--- a/dist/components/table.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Table
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.table{width:100%;background:#fff;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571429rem;text-align:left;color:rgba(0,0,0,.87);border-collapse:separate;border-spacing:0}.ui.table:first-child{margin-top:0}.ui.table:last-child{margin-bottom:0}.ui.table td,.ui.table th{-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.table thead{box-shadow:none}.ui.table thead th{cursor:auto;background:#f9fafb; [...]
\ No newline at end of file
diff --git a/dist/components/transition.min.css b/dist/components/transition.min.css
deleted file mode 100755
index ebd5949..0000000
--- a/dist/components/transition.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * # Semantic UI 2.2.12 - Transition
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.transition{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.vi [...]
\ No newline at end of file
diff --git a/dist/components/transition.min.js b/dist/components/transition.min.js
deleted file mode 100644
index 999b7ba..0000000
--- a/dist/components/transition.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(n,i,e,t){"use strict";i=void 0!==i&&i.Math==Math?i:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),n.fn.transition=function(){var t,a=n(this),o=a.selector||"",r=(new Date).getTime(),s=[],l=arguments,d=l[0],u=[].slice.call(arguments,1),c="string"==typeof d;i.requestAnimationFrame||i.mozRequestAnimationFrame||i.webkitRequestAnimationFrame||i.msRequestAnimationFrame;return a.each(function(i){var m,f,p,g,v,b,y,h,w,C=n(this),A=this;w={initialize:function(){m [...]
\ No newline at end of file
diff --git a/dist/components/video.min.css b/dist/components/video.min.css
deleted file mode 100755
index 517736c..0000000
--- a/dist/components/video.min.css
+++ /dev/null
@@ -1,10 +0,0 @@
-/*!
- * # Semantic UI 2.0.0 - Video
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Copyright 2014 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.video{background-color:#ddd;position:relative;max-width:100%;padding-bottom:56.25%;height:0;overflow:hidden}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;background:0 0;-webkit-transition:background .2s ease;transition:background .2s ease}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;-webkit-transform:translateX(-50%)translateY(-50%);-ms-transform:translateX(- [...]
\ No newline at end of file
diff --git a/dist/components/video.min.js b/dist/components/video.min.js
deleted file mode 100644
index 683eccf..0000000
--- a/dist/components/video.min.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * # Semantic UI 2.0.0 - Video
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Copyright 2014 Contributorss
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-!function(e,o,t,n){"use strict";e.fn.video=function(t){{var a,i=e(this),r=i.selector||"",l=(new Date).getTime(),c=[],u=arguments[0],s="string"==typeof u,m=[].slice.call(arguments,1);o.requestAnimationFrame||o.mozRequestAnimationFrame||o.webkitRequestAnimationFrame||o.msRequestAnimationFrame||function(e){setTimeout(e,0)}}return i.each(function(){var d,p=e.isPlainObject(t)?e.extend(!0,{},e.fn.video.settings,t):e.extend({},e.fn.video.settings),f=p.selector,g=p.className,h=p.error,v=p.metada [...]
\ No newline at end of file
diff --git a/dist/components/visibility.min.js b/dist/components/visibility.min.js
deleted file mode 100644
index 0b838d3..0000000
--- a/dist/components/visibility.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,o,n,t){"use strict";o=void 0!==o&&o.Math==Math?o:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.visibility=function(t){var i,s=e(this),c=s.selector||"",r=(new Date).getTime(),a=[],l=arguments[0],d="string"==typeof l,u=[].slice.call(arguments,1),f=s.length,v=0;return s.each(function(){var s,b,m,g,p=e.isPlainObject(t)?e.extend(!0,{},e.fn.visibility.settings,t):e.extend({},e.fn.visibility.settings),h=p.className,P=p.namespace,x=p.error,C=p.metadata [...]
\ No newline at end of file
diff --git a/dist/components/visit.min.js b/dist/components/visit.min.js
deleted file mode 100644
index 1b734d7..0000000
--- a/dist/components/visit.min.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * # Semantic UI 2.0.0 - Visit
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Copyright 2015 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-!function(e,t,i,n){"use strict";e.visit=e.fn.visit=function(i){var o,r=e(e.isFunction(this)?t:this),s=r.selector||"",a=(new Date).getTime(),c=[],u=arguments[0],l="string"==typeof u,d=[].slice.call(arguments,1);return r.each(function(){var g,m=e.isPlainObject(i)?e.extend(!0,{},e.fn.visit.settings,i):e.extend({},e.fn.visit.settings),f=m.error,p=m.namespace,v=p+"-module",h=e(this),b=e(),y=this,k=h.data(v);g={initialize:function(){m.count?g.store(m.key.count,m.count):m.id?g.add.id(m.id):m.in [...]
\ No newline at end of file
diff --git a/dist/semantic.min.css b/dist/semantic.min.css
deleted file mode 100755
index 94ebe97..0000000
--- a/dist/semantic.min.css
+++ /dev/null
@@ -1,364 +0,0 @@
- /*
- * # Semantic UI - 2.2.12
- * https://github.com/Semantic-Org/Semantic-UI
- * http://www.semantic-ui.com/
- *
- * Copyright 2014 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
- at import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);/*!
- * # Semantic UI 2.2.12 - Reset
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */*,:after,:before{box-sizing:inherit}html{box-sizing:border-box}input[type=email],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;-moz-appearance:none}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1 [...]
- * # Semantic UI 2.2.12 - Site
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#fff;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.28571429em;margin:calc(2rem - .14285714em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.71428571rem} [...]
- * # Semantic UI 2.2.12 - Button
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:0;border:none;vertical-align:baseline;background:#e0e1e2 none;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em .78571429em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) [...]
- * # Semantic UI 2.2.12 - Container
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.container{display:block;max-width:100%!important}@media only screen and (max-width:767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}.ui.grid.container{width:auto!important}.ui.relaxed.grid.container{width:auto!important}.ui.very.relaxed.grid.container{width:auto!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.container{width:723px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{wi [...]
- * # Semantic UI 2.2.12 - Divider
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.column+.divider,.ui.grid>.row>.column+.divider{left:auto}.ui.horizontal.divider{display:tabl [...]
- * # Semantic UI 2.2.12 - Flag
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */i.flag:not(.icon){display:inline-block;width:16px;height:11px;line-height:11px;vertical-align:baseline;margin:0 .5em 0 0;text-decoration:inherit;speak:none;font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.flag:not(.icon):before{display:inline-block;content:'';background:url(themes/default/assets/images/flags.png) no-repeat -108px -1976px;width:16px;height:11px}i.flag.ad:before,i.flag.andorra:before{background-position:0 0}i.flag.ae:before,i.fl [...]
- * # Semantic UI 2.2.12 - Header
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.header{border:none;margin:calc(2rem - .14285714em) 0 1rem;padding:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;line-height:1.28571429em;text-transform:none;color:rgba(0,0,0,.87)}.ui.header:first-child{margin-top:-.14285714em}.ui.header:last-child{margin-bottom:0}.ui.header .sub.header{display:block;font-weight:400;padding:0;margin:0;font-size:1rem;line-height:1.2em;color:rgba(0,0,0,.6)}.ui.header>.icon{display:table-cell;opacity:1;font-size:1.5e [...]
- * # Semantic UI 2.2.12 - Icon
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */@font-face{font-family:Icons;src:url(themes/default/assets/fonts/icons.eot);src:url(themes/default/assets/fonts/icons.eot?#iefix) format('embedded-opentype'),url(themes/default/assets/fonts/icons.woff2) format('woff2'),url(themes/default/assets/fonts/icons.woff) format('woff'),url(themes/default/assets/fonts/icons.ttf) format('truetype'),url(themes/default/assets/fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-tra [...]
- * # Semantic UI 2.2.12 - Image
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.hidden.transition.image,.ui.hidden.transition.images{display:block;visibility:hidden}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-b [...]
- * # Semantic UI 2.2.12 - Input
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.input{position:relative;font-weight:400;font-style:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:rgba(0,0,0,.87)}.ui.input input{margin:0;max-width:100%;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:1.21428571em;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;padding:.67857143em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);colo [...]
- * # Semantic UI 2.2.12 - Label
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.label{display:inline-block;line-height:1;vertical-align:baseline;margin:0 .14285714em;background-color:#e8e8e8;background-image:none;padding:.5833em .833em;color:rgba(0,0,0,.6);text-transform:none;font-weight:700;border:0 solid transparent;border-radius:.28571429rem;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}a.ui.label{cursor:pointer}.ui.label>a{cursor:pointer;color:inherit;opacity:. [...]
- * # Semantic UI 2.2.12 - List
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.list,ol.ui.list,ul.ui.list{list-style-type:none;margin:1em 0;padding:0 0}.ui.list:first-child,ol.ui.list:first-child,ul.ui.list:first-child{margin-top:0;padding-top:0}.ui.list:last-child,ol.ui.list:last-child,ul.ui.list:last-child{margin-bottom:0;padding-bottom:0}.ui.list .list>.item,.ui.list>.item,ol.ui.list li,ul.ui.list li{display:list-item;table-layout:fixed;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.list>.item:after,.ui [...]
- * # Semantic UI 2.2.12 - Loader
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit [...]
- * # Semantic UI 2.2.12 - Rail
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.rail{position:absolute;top:0;width:300px;height:100%}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36, [...]
- * # Semantic UI 2.2.12 - Reveal
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.reveal{display:inherit;position:relative!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:3!important;-webkit-transition:all .5s ease .1s;transition:all .5s ease .1s}.ui.reveal>.hidden.content{position:relative!important;z-index:2!important}.ui.active.reveal .visible.content,.ui.reveal:hover .visible.content{z-index:4!important}.ui.slide.reveal{position:relative!important;overflow:hidden!important;whit [...]
- * # Semantic UI 2.2.12 - Segment
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.segment{position:relative;background:#fff;box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;padding:1em 1em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background:none transparent;border-radius:0;box-shadow:none;border:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.segment:last-child{border-bottom:none}.ui.i [...]
- * # Semantic UI 2.2.12 - Step
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:1em 0;background:'';box-shadow:none;line-height:1.14285714em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.steps:first-child{margin-top:0}.ui.steps:last-child{margin-bottom:0}.ui.steps .step{position:relativ [...]
- * # Semantic UI 2.2.12 - Breadcrumb
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.breadcrumb{line-height:1;display:inline-block;margin:0 0;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem 0;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183c4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:po [...]
- * # Semantic UI 2.2.12 - Form
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.form{position:relative;max-width:100%}.ui.form>p{margin:1em 0}.ui.form .field{clear:both;margin:0 0 1em}.ui.form .field:last-child,.ui.form .fields:last-child .field{margin-bottom:0}.ui.form .fields .field{clear:both;margin:0}.ui.form .field>label{display:block;margin:0 0 .28571429rem 0;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form input:not([type]),.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=email],. [...]
- * # Semantic UI 2.2.12 - Grid
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0}.ui.grid{margin-top:-1rem;margin-bottom:-1rem;margin-left:-1rem;margin-right:-1rem}.ui.relaxed.grid{margin-left:-1.5rem;margin-right:-1.5rem}.ui[class*="very relaxed"].grid{margin-left:-2.5rem;margin-right:-2.5rem [...]
- * # Semantic UI 2.2.12 - Message
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.message{position:relative;min-height:1em;margin:1em 0;background:#f8f8f9;padding:1em 1.5em;line-height:1.4285em;color:rgba(0,0,0,.87);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;border-radius:.28571429rem;box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.mess [...]
- * # Semantic UI 2.2.12 - Table
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.table{width:100%;background:#fff;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571429rem;text-align:left;color:rgba(0,0,0,.87);border-collapse:separate;border-spacing:0}.ui.table:first-child{margin-top:0}.ui.table:last-child{margin-bottom:0}.ui.table td,.ui.table th{-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.table thead{box-shadow:none}.ui.table thead th{cursor:auto;background:#f9fafb; [...]
- * # Semantic UI 2.2.12 - Ad
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Copyright 2013 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child{margin:0}.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small [...]
- * # Semantic UI 2.2.12 - Item
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#fff;padding:0;border:none;border-radius:.28571429rem;box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;-webkit-transition:box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,-webkit-transform .1s ease;transition [...]
- * # Semantic UI 2.2.12 - Comment
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .commen [...]
- * # Semantic UI 2.2.12 - Feed
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.feed{margin:1em 0}.ui.feed:first-child{margin-top:0}.ui.feed:last-child{margin-bottom:0}.ui.feed>.event{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;width:100%;padding:.21428571rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:block;-webkit-box-flex: [...]
- * # Semantic UI 2.2.12 - Item
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.items>.item{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1em 0;width:100%;min-height:0;background:0 0;padding:0;border:none;border-radius:0;box-shadow:none;-webkit-transition:box-shadow .1s ease;transition:box-shadow .1s ease;z-index:''}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:' ';height:0;clear:both;overflow:hidden [...]
- * # Semantic UI 2.2.12 - Statistic
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1em 0;max-width:auto}.ui.statistic+.ui.statistic{margin:0 0 0 1.5em}.ui.statistic:first-child{margin-top:0}.ui.statistic:last-child{margin-bottom:0}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-f [...]
- * # Semantic UI 2.2.12 - Accordion
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.accordion,.ui.accordion .accordion{max-width:100%}.ui.accordion .accordion{margin:1em 0 0;padding:0}.ui.accordion .accordion .title,.ui.accordion .title{cursor:pointer}.ui.accordion .title:not(.ui){padding:.5em 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;color:rgba(0,0,0,.87)}.ui.accordion .accordion .title~.content,.ui.accordion .title~.content{display:none}.ui.accordion:not(.styled) .accordion .title~.content:not(.ui),.ui.accordion:not(.styled) . [...]
- * # Semantic UI 2.2.12 - Checkbox
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.checkbox{position:relative;display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;min-height:17px;font-size:1rem;line-height:17px;min-width:17px}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{cursor:pointer;position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:3;width:17px;height:17px}.ui.checkbox .box,.ui.checkbox label{cursor:auto;position:relative;display:block;paddi [...]
- * # Semantic UI 2.2.12 - Dimmer
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.dimmable:not(body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-se [...]
- * # Semantic UI 2.2.12 - Dropdown
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.dropdown{cursor:pointer;position:relative;display:inline-block;outline:0;text-align:left;-webkit-transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease;-webkit-tap-highlight-color:transparent}.ui.dropdown .menu{cursor:auto;position:absolute;display:none;outline:0;top:100%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;margin:0;padding:0 0;background:#fff;font-size:1em;text-shadow:none;text-align:left;box-shadow:0 [...]
- * # Semantic UI 2.2.12 - Video
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.embed{position:relative;max-width:100%;height:0;overflow:hidden;background:#dcddde;padding-bottom:56.25%}.ui.embed embed,.ui.embed iframe,.ui.embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.embed>.embed{display:none}.ui.embed>.placeholder{position:absolute;cursor:pointer;top:0;left:0;display:block;width:100%;height:100%;background-color:radial-gradient(transparent 45%,rgba(0,0,0,.3))}.ui.embed>.icon{cursor:pointer;position:abso [...]
- * # Semantic UI 2.2.12 - Modal
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.modal{display:none;position:fixed;z-index:1001;top:50%;left:50%;text-align:left;background:#fff;border:none;box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);-webkit-transform-origin:50% 25%;transform-origin:50% 25%;border-radius:.28571429rem;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;will-change:top,left,margin,transform,opacity}.ui.modal>.icon:first-child+*,.ui.modal>:first-child:not(.icon){border-top-left-radius:.2 [...]
- * # Semantic UI 2.2.12 - Nag
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position [...]
- * # Semantic UI 2.2.12 - Popup
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #d4d4d5;line-height:1.4285em;max-width:250px;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif [...]
- * # Semantic UI 2.2.12 - Progress Bar
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.progress{position:relative;display:block;max-width:100%;border:none;margin:1em 0 2.5em;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s [...]
- * # Semantic UI 2.2.12 - Rating
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.rating{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap;vertical-align:baseline}.ui.rating:last-child{margin-right:0}.ui.rating .icon{padding:0;margin:0;text-align:center;font-weight:400;font-style:normal;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;width:1.25em;height:auto;-webkit-transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease;transition:opacity .1s ease,background .1s ease,text- [...]
- * # Semantic UI 2.2.12 - Search
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:0 0 0 0 transparent inset;-webkit-transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-c [...]
- * # Semantic UI 2.2.12 - Shape
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left [...]
- * # Semantic UI 2.2.12 - Sidebar
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.sidebar{position:fixed;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:none;transition:none;will-change:transform;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;-webkit-overflow-scrolling:touch;height:100%!important;max-height:100%;border-radius:0!important;margin:0!important;overflow-y:auto!important;z-index:102}.ui.sidebar>*{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.left.si [...]
- * # Semantic UI 2.2.12 - Sticky
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky}/*!
- * # Semantic UI 2.2.12 - Tab
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolu [...]
- * # Semantic UI 2.2.12 - Transition
- * http://github.com/semantic-org/semantic-ui/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.transition{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.vi [...]
\ No newline at end of file
diff --git a/dist/semantic.min.js b/dist/semantic.min.js
deleted file mode 100644
index 0233fd6..0000000
--- a/dist/semantic.min.js
+++ /dev/null
@@ -1,19 +0,0 @@
- /*
- * # Semantic UI - 2.2.12
- * https://github.com/Semantic-Org/Semantic-UI
- * http://www.semantic-ui.com/
- *
- * Copyright 2014 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-!function(e,t,n,i){e.site=e.fn.site=function(i){var o,a,r=(new Date).getTime(),s=[],l=arguments[0],c="string"==typeof l,u=[].slice.call(arguments,1),d=e.isPlainObject(i)?e.extend(!0,{},e.site.settings,i):e.extend({},e.site.settings),f=d.namespace,m=d.error,g="module-"+f,v=e(n),p=v,h=this,b=p.data(g);return o={initialize:function(){o.instantiate()},instantiate:function(){o.verbose("Storing instance of site",o),b=o,p.data(g,o)},normalize:function(){o.fix.console(),o.fix.requestAnimationFra [...]
-!f.silent&&f.verbose&&f.debug&&(f.performance?d.performance.log(arguments):(d.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),d.verbose.apply(console,arguments)))},error:function(){f.silent||(d.error=Function.prototype.bind.call(console.error,console,f.name+":"),d.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;f.performance&&(t=(new Date).getTime(),i=a||t,n=t-i,a=t,r.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:k,"Execution Time" [...]
-if(t=String(w.get.choiceText(r,!1)),-1!==t.search(a))return i.push(this),!0;if("exact"===k.fullTextSearch&&w.exactSearch(n,t))return i.push(this),!0;if(!0===k.fullTextSearch&&w.fuzzySearch(n,t))return i.push(this),!0}if("both"==k.match||"value"==k.match){if(o=String(w.get.choiceValue(r,t)),-1!==o.search(a))return i.push(this),!0;if("exact"===k.fullTextSearch&&w.exactSearch(n,o))return i.push(this),!0;if(!0===k.fullTextSearch&&w.fuzzySearch(n,o))return i.push(this),!0}})),w.debug("Showing [...]
-n.removeClass(S.loading),i},click:function(){return l||"click"==k.on},extendSelect:function(){return k.allowAdditions||k.apiSettings},show:function(){return!w.is.disabled()&&(w.has.items()||w.has.message())},useAPI:function(){return void 0!==e.fn.api}},animate:{show:function(t,n){var i,o=n||B,a=n?function(){}:function(){w.hideSubMenus(),w.hideOthers(),w.set.active()};t=e.isFunction(t)?t:function(){},w.verbose("Doing menu show animation",o),w.set.direction(n),i=w.get.transition(n),w.is.se [...]
-console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var r,s,l,c=x;return n=n||u,a=y||a,"string"==typeof t&&void 0!==c&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,i){var a=n!=r?i+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(void 0!==c[a])return s=c[a],!1;if(!e.isPlainObject(c[i])||n==r)return void 0!==c[i]?(s=c[i],!1):(o.error( [...]
-percent:"{percent}%",ratio:"{value} of {total}"},className:{active:"active",error:"error",success:"success",warning:"warning"}}}(jQuery,window,document),function(e,t,n,i){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.rating=function(t){var n,i=e(this),o=i.selector||"",a=(new Date).getTime(),r=[],s=arguments[0],l="string"==typeof s,c=[].slice.call(arguments,1);return i.each(function(){var u,d,f=e.isPlainObject(t)?e. [...]
-v.silent||(m.error=Function.prototype.bind.call(console.error,console,v.name+":"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;v.performance&&(t=(new Date).getTime(),i=r||t,n=t-i,r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:A,"Execution Time":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=v.name+":",n=0;r=!1,clearTimeout(m.performance.timer),e.each(s,function(e,t){n+ [...]
-s&&s.length>0&&f)return h.debug("Anchor link used, opening parent tab",S,s),S.hasClass(x.active)||setTimeout(function(){h.scrollTo(s)},0),h.activate.all(f),h.cache.read(f)||(h.cache.add(f,!0),h.debug("First time tab loaded calling tab init"),y.onFirstLoad.call(S[0],f,p,b)),y.onLoad.call(S[0],f,p,b),!1}})},scrollTo:function(t){var i=!!(t&&t.length>0)&&t.offset().top;!1!==i&&(h.debug("Forcing scroll to an in-page link in a hidden tab",i,t),e(n).scrollTop(i))},update:{content:function(t,n,i [...]
-v.silent||(g.error=Function.prototype.bind.call(console.error,console,v.name+":"),g.error.apply(console,arguments))},performance:{log:function(e){var t,n,i;v.performance&&(t=(new Date).getTime(),i=r||t,n=t-i,r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":n})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var t=v.name+":",n=0;r=!1,clearTimeout(g.performance.timer),e.each(s,function(e,t){n+=t["Execut [...]
\ No newline at end of file
diff --git a/examples/assets/library/iframe-content.js b/examples/assets/library/iframe-content.js
deleted file mode 100644
index 020b317..0000000
--- a/examples/assets/library/iframe-content.js
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
- * File: iframeResizer.contentWindow.js
- * Desc: Include this file in any page being loaded into an iframe
- * to force the iframe to resize to the content size.
- * Requires: iframeResizer.js on host page.
- * Author: David J. Bradshaw - dave at bradshaw.net
- * Contributor: Jure Mav - jure.mav at gmail.com
- * Contributor: Ian Caunce - ian at hallnet.co.uk
- */
-
-;(function() {
- 'use strict';
-
- var
- autoResize = true,
- base = 10,
- bodyBackground = '',
- bodyMargin = 0,
- bodyMarginStr = '',
- bodyPadding = '',
- calculateWidth = false,
- doubleEventList = {'resize':1,'click':1},
- eventCancelTimer = 128,
- height = 1,
- firstRun = true,
- heightCalcModeDefault = 'offset',
- heightCalcMode = heightCalcModeDefault,
- initLock = true,
- initMsg = '',
- inPageLinks = {},
- interval = 32,
- logging = false,
- msgID = '[iFrameSizer]', //Must match host page msg ID
- msgIdLen = msgID.length,
- myID = '',
- publicMethods = false,
- resetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
- resizeFrom = 'parent',
- targetOriginDefault = '*',
- target = window.parent,
- tolerance = 0,
- triggerLocked = false,
- triggerLockedTimer = null,
- width = 1;
-
-
- function addEventListener(el,evt,func){
- if ('addEventListener' in window){
- el.addEventListener(evt,func, false);
- } else if ('attachEvent' in window){ //IE
- el.attachEvent('on'+evt,func);
- }
- }
-
- function formatLogMsg(msg){
- return msgID + '[' + myID + ']' + ' ' + msg;
- }
-
- function log(msg){
- if (logging && ('object' === typeof window.console)){
- console.log(formatLogMsg(msg));
- }
- }
-
- function warn(msg){
- if ('object' === typeof window.console){
- console.warn(formatLogMsg(msg));
- }
- }
-
-
- function init(){
- log('Initializing iFrame');
- readData();
- setMargin();
- setBodyStyle('background',bodyBackground);
- setBodyStyle('padding',bodyPadding);
- injectClearFixIntoBodyElement();
- checkHeightMode();
- stopInfiniteResizingOfIFrame();
- setupPublicMethods();
- startEventListeners();
- inPageLinks = setupInPageLinks();
- sendSize('init','Init message from host page');
- }
-
- function readData(){
-
- var data = initMsg.substr(msgIdLen).split(':');
-
- function strBool(str){
- return 'true' === str ? true : false;
- }
-
- myID = data[0];
- bodyMargin = (undefined !== data[1]) ? Number(data[1]) : bodyMargin; //For V1 compatibility
- calculateWidth = (undefined !== data[2]) ? strBool(data[2]) : calculateWidth;
- logging = (undefined !== data[3]) ? strBool(data[3]) : logging;
- interval = (undefined !== data[4]) ? Number(data[4]) : interval;
- publicMethods = (undefined !== data[5]) ? strBool(data[5]) : publicMethods;
- autoResize = (undefined !== data[6]) ? strBool(data[6]) : autoResize;
- bodyMarginStr = data[7];
- heightCalcMode = (undefined !== data[8]) ? data[8] : heightCalcMode;
- bodyBackground = data[9];
- bodyPadding = data[10];
- tolerance = (undefined !== data[11]) ? Number(data[11]) : tolerance;
- inPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;
- resizeFrom = data[13];
- }
-
- function chkCSS(attr,value){
- if (-1 !== value.indexOf('-')){
- warn('Negative CSS value ignored for '+attr);
- value='';
- }
- return value;
- }
-
- function setBodyStyle(attr,value){
- if ((undefined !== value) && ('' !== value) && ('null' !== value)){
- document.body.style[attr] = value;
- log('Body '+attr+' set to "'+value+'"');
- }
- }
-
- function setMargin(){
- //If called via V1 script, convert bodyMargin from int to str
- if (undefined === bodyMarginStr){
- bodyMarginStr = bodyMargin+'px';
- }
- chkCSS('margin',bodyMarginStr);
- setBodyStyle('margin',bodyMarginStr);
- }
-
- function stopInfiniteResizingOfIFrame(){
- document.documentElement.style.height = '';
- document.body.style.height = '';
- log('HTML & body height set to "auto"');
- }
-
-
- function addTriggerEvent(options){
- function addListener(eventName){
- addEventListener(window,eventName,function(e){
- sendSize(options.eventName,options.eventType);
- });
- }
-
- if(options.eventNames && Array.prototype.map){
- options.eventName = options.eventNames[0];
- options.eventNames.map(addListener);
- } else {
- addListener(options.eventName);
- }
-
- log('Added event listener: ' + options.eventType);
- }
-
- function initEventListeners(){
- addTriggerEvent({ eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });
- addTriggerEvent({ eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });
- addTriggerEvent({ eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });
- addTriggerEvent({ eventType: 'Device Orientation Change', eventName: 'deviceorientation' });
- addTriggerEvent({ eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
- addTriggerEvent({ eventType: 'Window Clicked', eventName: 'click' });
- //addTriggerEvent({ eventType: 'Window Mouse Down', eventName: 'mousedown' });
- //addTriggerEvent({ eventType: 'Window Mouse Up', eventName: 'mouseup' });
- if('child' === resizeFrom){
- addTriggerEvent({ eventType: 'IFrame Resized', eventName: 'resize' });
- }
- }
-
- function checkHeightMode(){
- if (heightCalcModeDefault !== heightCalcMode){
- if (!(heightCalcMode in getHeight)){
- warn(heightCalcMode + ' is not a valid option for heightCalculationMethod.');
- heightCalcMode='bodyScroll';
- }
- log('Height calculation method set to "'+heightCalcMode+'"');
- }
- }
-
- function startEventListeners(){
- if ( true === autoResize ) {
- initEventListeners();
- setupMutationObserver();
- }
- else {
- log('Auto Resize disabled');
- }
- }
-
- function injectClearFixIntoBodyElement(){
- var clearFix = document.createElement('div');
- clearFix.style.clear = 'both';
- clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.
- document.body.appendChild(clearFix);
- }
-
- function setupInPageLinks(){
-
- function getPagePosition (){
- return {
- x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
- y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
- };
- }
-
- function getElementPosition(el){
- var
- elPosition = el.getBoundingClientRect(),
- pagePosition = getPagePosition();
-
- return {
- x: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),
- y: parseInt(elPosition.top,10) + parseInt(pagePosition.y,10)
- };
- }
-
- function findTarget(location){
- var hash = location.split("#")[1] || "";
- var hashData = decodeURIComponent(hash);
-
- function jumpToTarget(target){
- var jumpPosition = getElementPosition(target);
-
- log('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
- sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
- }
-
- var target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
-
- if (target){
- jumpToTarget(target);
- } else {
- log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
- sendMsg(0,0,'inPageLink','#'+hash);
- }
- }
-
- function checkLocationHash(){
- if ('' !== location.hash && '#' !== location.hash){
- findTarget(location.href);
- }
- }
-
- function bindAnchors(){
- function setupLink(el){
- function linkClicked(e){
- e.preventDefault();
-
- /*jshint validthis:true */
- findTarget(this.getAttribute('href'));
- }
-
- if ('#' !== el.getAttribute('href')){
- addEventListener(el,'click',linkClicked);
- }
- }
-
- Array.prototype.forEach.call( document.querySelectorAll( 'a[href^="#"]' ), setupLink );
- }
-
- function bindLocationHash(){
- addEventListener(window,'hashchange',checkLocationHash);
- }
-
- function initCheck(){ //check if page loaded with location hash after init resize
- setTimeout(checkLocationHash,eventCancelTimer);
- }
-
- function enableInPageLinks(){
- if(Array.prototype.forEach && document.querySelectorAll){
- log('Setting up location.hash handlers');
- bindAnchors();
- bindLocationHash();
- initCheck();
- } else {
- warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
- }
- }
-
- if(inPageLinks.enable){
- enableInPageLinks();
- } else {
- log('In page linking not enabled');
- }
-
- return {
- findTarget:findTarget
- };
- }
-
- function setupPublicMethods(){
- if (publicMethods) {
- log('Enable public methods');
-
- window.parentIFrame = {
- close: function closeF(){
- sendMsg(0,0,'close');
- },
- getId: function getIdF(){
- return myID;
- },
- moveToAnchor: function moveToAnchorF(hash){
- inPageLinks.findTarget(hash);
- },
- reset: function resetF(){
- resetIFrame('parentIFrame.reset');
- },
- scrollTo: function scrollToF(x,y){
- sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
- },
- scrollToOffset: function scrollToF(x,y){
- sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
- },
- sendMessage: function sendMessageF(msg,targetOrigin){
- sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
- },
- setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){
- heightCalcMode = heightCalculationMethod;
- checkHeightMode();
- },
- setTargetOrigin: function setTargetOriginF(targetOrigin){
- log('Set targetOrigin: '+targetOrigin);
- targetOriginDefault = targetOrigin;
- },
- size: function sizeF(customHeight, customWidth){
- var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
- lockTrigger();
- sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
- }
- };
- }
- }
-
- function initInterval(){
- if ( 0 !== interval ){
- log('setInterval: '+interval+'ms');
- setInterval(function(){
- sendSize('interval','setInterval: '+interval);
- },Math.abs(interval));
- }
- }
-
- function setupInjectElementLoadListeners(mutations){
- function addLoadListener(element){
- if (element.height === undefined || element.width === undefined || 0 === element.height || 0 === element.width){
- log('Attach listener to '+element.src);
- addEventListener(element,'load', function imageLoaded(){
- sendSize('imageLoad','Image loaded');
- });
- }
- }
-
- mutations.forEach(function (mutation) {
- if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
- addLoadListener(mutation.target);
- } else if (mutation.type === 'childList'){
- var images = mutation.target.querySelectorAll('img');
- Array.prototype.forEach.call(images,function (image) {
- addLoadListener(image);
- });
- }
- });
- }
-
- function setupMutationObserver(){
-
- var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
-
- function createMutationObserver(){
- var
- target = document.querySelector('body'),
-
- config = {
- attributes : true,
- attributeOldValue : false,
- characterData : true,
- characterDataOldValue : false,
- childList : true,
- subtree : true
- },
-
- observer = new MutationObserver(function(mutations) {
- sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
- setupInjectElementLoadListeners(mutations); //Deal with WebKit asyncing image loading when tags are injected into the page
- });
-
- log('Enable MutationObserver');
- observer.observe(target, config);
- }
-
- if (MutationObserver){
- if (0 > interval) {
- initInterval();
- } else {
- createMutationObserver();
- }
- }
- else {
- warn('MutationObserver not supported in this browser!');
- initInterval();
- }
- }
-
-
- // document.documentElement.offsetHeight is not reliable, so
- // we have to jump through hoops to get a better value.
- function getBodyOffsetHeight(){
- function getComputedBodyStyle(prop) {
- function convertUnitsToPxForIE8(value) {
- var PIXEL = /^\d+(px)?$/i;
-
- if (PIXEL.test(value)) {
- return parseInt(value,base);
- }
-
- var
- style = el.style.left,
- runtimeStyle = el.runtimeStyle.left;
-
- el.runtimeStyle.left = el.currentStyle.left;
- el.style.left = value || 0;
- value = el.style.pixelLeft;
- el.style.left = style;
- el.runtimeStyle.left = runtimeStyle;
-
- return value;
- }
-
- var
- el = document.body,
- retVal = 0;
-
- if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
- retVal = document.defaultView.getComputedStyle(el, null);
- retVal = (null !== retVal) ? retVal[prop] : 0;
- } else {//IE8
- retVal = convertUnitsToPxForIE8(el.currentStyle[prop]);
- }
-
- return parseInt(retVal,base);
- }
-
- return document.body.offsetHeight +
- getComputedBodyStyle('marginTop') +
- getComputedBodyStyle('marginBottom');
- }
-
- function getBodyScrollHeight(){
- return document.body.scrollHeight;
- }
-
- function getDEOffsetHeight(){
- return document.documentElement.offsetHeight;
- }
-
- function getDEScrollHeight(){
- return document.documentElement.scrollHeight;
- }
-
- //From https://github.com/guardian/iframe-messenger
- function getLowestElementHeight() {
- var
- allElements = document.querySelectorAll('body *'),
- allElementsLength = allElements.length,
- maxBottomVal = 0,
- timer = new Date().getTime();
-
- for (var i = 0; i < allElementsLength; i++) {
- if (allElements[i].getBoundingClientRect().bottom > maxBottomVal) {
- maxBottomVal = allElements[i].getBoundingClientRect().bottom;
- }
- }
-
- timer = new Date().getTime() - timer;
-
- log('Parsed '+allElementsLength+' HTML elements');
- log('LowestElement bottom position calculated in ' + timer + 'ms');
-
- return maxBottomVal;
- }
-
- function getAllHeights(){
- return [
- getBodyOffsetHeight(),
- getBodyScrollHeight(),
- getDEOffsetHeight(),
- getDEScrollHeight()
- ];
- }
-
- function getMaxHeight(){
- return Math.max.apply(null,getAllHeights());
- }
-
- function getMinHeight(){
- return Math.min.apply(null,getAllHeights());
- }
-
- function getBestHeight(){
- return Math.max(getBodyOffsetHeight(),getLowestElementHeight());
- }
-
- var getHeight = {
- offset : getBodyOffsetHeight, //Backward compatability
- bodyOffset : getBodyOffsetHeight,
- bodyScroll : getBodyScrollHeight,
- documentElementOffset : getDEOffsetHeight,
- scroll : getDEScrollHeight, //Backward compatability
- documentElementScroll : getDEScrollHeight,
- max : getMaxHeight,
- min : getMinHeight,
- grow : getMaxHeight,
- lowestElement : getBestHeight
- };
-
- function getWidth(){
- return Math.max(
- document.documentElement.scrollWidth,
- document.body.scrollWidth
- );
- }
-
- function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){
-
- var currentHeight,currentWidth;
-
- function recordTrigger(){
- if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){
- log( 'Trigger event: ' + triggerEventDesc );
- }
- }
-
- function resizeIFrame(){
- height = currentHeight;
- width = currentWidth;
-
- sendMsg(height,width,triggerEvent);
- }
-
- function isDoubleFiredEvent(){
- return triggerLocked && (triggerEvent in doubleEventList);
- }
-
- function isSizeChangeDetected(){
- function checkTolerance(a,b){
- var retVal = Math.abs(a-b) <= tolerance;
- return !retVal;
- }
-
- currentHeight = (undefined !== customHeight) ? customHeight : getHeight[heightCalcMode]();
- currentWidth = (undefined !== customWidth ) ? customWidth : getWidth();
-
- return checkTolerance(height,currentHeight) ||
- (calculateWidth && checkTolerance(width,currentWidth));
- }
-
- function isForceResizableEvent(){
- return !(triggerEvent in {'init':1,'interval':1,'size':1});
- }
-
- function isForceResizableHeightCalcMode(){
- return (heightCalcMode in resetRequiredMethods);
- }
-
- function logIgnored(){
- log('No change in size detected');
- }
-
- function checkDownSizing(){
- if (isForceResizableEvent() && isForceResizableHeightCalcMode()){
- resetIFrame(triggerEventDesc);
- } else if (!(triggerEvent in {'interval':1})){
- recordTrigger();
- logIgnored();
- }
- }
-
- if (!isDoubleFiredEvent()){
- if (isSizeChangeDetected()){
- recordTrigger();
- lockTrigger();
- resizeIFrame();
- } else {
- checkDownSizing();
- }
- } else {
- log('Trigger event cancelled: '+triggerEvent);
- }
- }
-
- function lockTrigger(){
- if (!triggerLocked){
- triggerLocked = true;
- log('Trigger event lock on');
- }
- clearTimeout(triggerLockedTimer);
- triggerLockedTimer = setTimeout(function(){
- triggerLocked = false;
- log('Trigger event lock off');
- log('--');
- },eventCancelTimer);
- }
-
- function triggerReset(triggerEvent){
- height = getHeight[heightCalcMode]();
- width = getWidth();
-
- sendMsg(height,width,triggerEvent);
- }
-
- function resetIFrame(triggerEventDesc){
- var hcm = heightCalcMode;
- heightCalcMode = heightCalcModeDefault;
-
- log('Reset trigger event: ' + triggerEventDesc);
- lockTrigger();
- triggerReset('reset');
-
- heightCalcMode = hcm;
- }
-
- function sendMsg(height,width,triggerEvent,msg,targetOrigin){
- function setTargetOrigin(){
- if (undefined === targetOrigin){
- targetOrigin = targetOriginDefault;
- } else {
- log('Message targetOrigin: '+targetOrigin);
- }
- }
-
- function sendToParent(){
- var
- size = height + ':' + width,
- message = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
-
- log('Sending message to host page (' + message + ')');
- target.postMessage( msgID + message, targetOrigin);
- }
-
- setTargetOrigin();
- sendToParent();
- }
-
- function receiver(event) {
- function isMessageForUs(){
- return msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages
- }
-
- function initFromParent(){
- initMsg = event.data;
- target = event.source;
-
- init();
- firstRun = false;
- setTimeout(function(){ initLock = false;},eventCancelTimer);
- }
-
- function resetFromParent(){
- if (!initLock){
- log('Page size reset by host page');
- triggerReset('resetPage');
- } else {
- log('Page reset ignored by init');
- }
- }
-
- function resizeFromParent(){
- sendSize('resizeParent','Parent window resized');
- }
-
- function getMessageType(){
- return event.data.split(']')[1];
- }
-
- function isMiddleTier(){
- return ('iFrameResize' in window);
- }
-
- function isInitMsg(){
- //test if this message is from a child below us. This is an ugly test, however, updating
- //the message format would break backwards compatibility.
- return event.data.split(':')[2] in {'true':1,'false':1};
- }
-
- if (isMessageForUs()){
- if (firstRun === false) {
- if ('reset' === getMessageType()){
- resetFromParent();
- } else if ('resize' === getMessageType()){
- resizeFromParent();
- } else if (event.data !== initMsg && !isMiddleTier()){
- warn('Unexpected message ('+event.data+')');
- }
- } else if (isInitMsg()) {
- initFromParent();
- } else {
- warn('Received message of type ('+getMessageType()+') before initialization.');
- }
- }
- }
-
- addEventListener(window, 'message', receiver);
-
-})();
\ No newline at end of file
diff --git a/examples/assets/library/iframe.js b/examples/assets/library/iframe.js
deleted file mode 100644
index 2d1747d..0000000
--- a/examples/assets/library/iframe.js
+++ /dev/null
@@ -1,642 +0,0 @@
-/*
- * File: iframeResizer.js
- * Desc: Force iframes to size to content.
- * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
- * Author: David J. Bradshaw - dave at bradshaw.net
- * Contributor: Jure Mav - jure.mav at gmail.com
- * Contributor: Reed Dadoune - reed at dadoune.com
- */
-;(function() {
- 'use strict';
-
- var
- count = 0,
- firstRun = true,
- logEnabled = false,
- msgHeader = 'message',
- msgHeaderLen = msgHeader.length,
- msgId = '[iFrameSizer]', //Must match iframe msg ID
- msgIdLen = msgId.length,
- pagePosition = null,
- requestAnimationFrame = window.requestAnimationFrame,
- resetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
- settings = {},
- timer = null,
-
- defaults = {
- autoResize : true,
- bodyBackground : null,
- bodyMargin : null,
- bodyMarginV1 : 8,
- bodyPadding : null,
- checkOrigin : true,
- enableInPageLinks : false,
- enablePublicMethods : false,
- heightCalculationMethod : 'offset',
- interval : 32,
- log : false,
- maxHeight : Infinity,
- maxWidth : Infinity,
- minHeight : 0,
- minWidth : 0,
- resizeFrom : 'parent',
- scrolling : false,
- sizeHeight : true,
- sizeWidth : false,
- tolerance : 0,
- closedCallback : function(){},
- initCallback : function(){},
- messageCallback : function(){},
- resizedCallback : function(){},
- scrollCallback : function(){return true;}
- };
-
- function addEventListener(obj,evt,func){
- if ('addEventListener' in window){
- obj.addEventListener(evt,func, false);
- } else if ('attachEvent' in window){//IE
- obj.attachEvent('on'+evt,func);
- }
- }
-
- function setupRequestAnimationFrame(){
- var
- vendors = ['moz', 'webkit', 'o', 'ms'],
- x;
-
- // Remove vendor prefixing if prefixed and break early if not
- for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
- requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
- }
-
- if (!(requestAnimationFrame)){
- log(' RequestAnimationFrame not supported');
- }
- }
-
- function getMyID(){
- var retStr = 'Host page';
-
- if (window.top!==window.self){
- if (window.parentIFrame){
- retStr = window.parentIFrame.getId();
- } else {
- retStr = 'Nested host page';
- }
- }
-
- return retStr;
- }
-
- function formatLogMsg(msg){
- return msgId + '[' + getMyID() + ']' + msg;
- }
-
- function log(msg){
- if (logEnabled && ('object' === typeof window.console)){
- console.log(formatLogMsg(msg));
- }
- }
-
- function warn(msg){
- if ('object' === typeof window.console){
- console.warn(formatLogMsg(msg));
- }
- }
-
- function iFrameListener(event){
- function resizeIFrame(){
- function resize(){
- setSize(messageData);
- setPagePosition();
- settings[iframeID].resizedCallback(messageData);
- }
-
- ensureInRange('Height');
- ensureInRange('Width');
-
- syncResize(resize,messageData,'resetPage');
- }
-
- function closeIFrame(iframe){
- var iframeID = iframe.id;
-
- log(' Removing iFrame: '+iframeID);
- iframe.parentNode.removeChild(iframe);
- settings[iframeID].closedCallback(iframeID);
- delete settings[iframeID];
- log(' --');
- }
-
- function processMsg(){
- var data = msg.substr(msgIdLen).split(':');
-
- return {
- iframe: document.getElementById(data[0]),
- id: data[0],
- height: data[1],
- width: data[2],
- type: data[3]
- };
- }
-
- function ensureInRange(Dimension){
- var
- max = Number(settings[iframeID]['max'+Dimension]),
- min = Number(settings[iframeID]['min'+Dimension]),
- dimension = Dimension.toLowerCase(),
- size = Number(messageData[dimension]);
-
- if (min>max){
- throw new Error('Value for min'+Dimension+' can not be greater than max'+Dimension);
- }
-
- log(' Checking '+dimension+' is in range '+min+'-'+max);
-
- if (size<min) {
- size=min;
- log(' Set '+dimension+' to min value');
- }
-
- if (size>max) {
- size=max;
- log(' Set '+dimension+' to max value');
- }
-
- messageData[dimension]=''+size;
- }
-
-
- function isMessageFromIFrame(){
- function checkAllowedOrigin(){
- function checkList(){
- log(' Checking connection is from allowed list of origins: ' + checkOrigin);
- var i;
- for (i = 0; i < checkOrigin.length; i++) {
- if (checkOrigin[i] === origin) {
- return true;
- }
- }
- return false;
- }
-
- function checkSingle(){
- log(' Checking connection is from: '+remoteHost);
- return origin == remoteHost;
- }
-
- return checkOrigin.constructor === Array ? checkList() : checkSingle();
- }
-
- var
- origin = event.origin,
- checkOrigin = settings[iframeID].checkOrigin,
- remoteHost = messageData.iframe.src.split('/').slice(0,3).join('/');
-
- if (checkOrigin) {
- if ((''+origin !== 'null') && !checkAllowedOrigin()) {
- throw new Error(
- 'Unexpected message received from: ' + origin +
- ' for ' + messageData.iframe.id +
- '. Message was: ' + event.data +
- '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
- );
- }
- }
-
- return true;
- }
-
- function isMessageForUs(){
- return msgId === ('' + msg).substr(0,msgIdLen); //''+Protects against non-string msg
- }
-
- function isMessageFromMetaParent(){
- //test if this message is from a parent above us. This is an ugly test, however, updating
- //the message format would break backwards compatibility.
- var retCode = messageData.type in {'true':1,'false':1,'undefined':1};
-
- if (retCode){
- log(' Ignoring init message from meta parent page');
- }
-
- return retCode;
- }
-
- function getMsgBody(offset){
- return msg.substr(msg.indexOf(':')+msgHeaderLen+offset);
- }
-
- function forwardMsgFromIFrame(msgBody){
- log(' MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');
- settings[iframeID].messageCallback({
- iframe: messageData.iframe,
- message: JSON.parse(msgBody)
- });
- log(' --');
- }
-
- function checkIFrameExists(){
- if (null === messageData.iframe) {
- warn(' IFrame ('+messageData.id+') not found');
- return false;
- }
- return true;
- }
-
- function getElementPosition(target){
- var
- iFramePosition = target.getBoundingClientRect();
-
- getPagePosition();
-
- return {
- x: parseInt(iFramePosition.left, 10) + parseInt(pagePosition.x, 10),
- y: parseInt(iFramePosition.top, 10) + parseInt(pagePosition.y, 10)
- };
- }
-
- function scrollRequestFromChild(addOffset){
- function reposition(){
- pagePosition = newPosition;
-
- scrollTo();
-
- log(' --');
- }
-
- function calcOffset(){
- return {
- x: Number(messageData.width) + offset.x,
- y: Number(messageData.height) + offset.y
- };
- }
-
- var
- offset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},
- newPosition = calcOffset();
-
- log(' Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');
-
- if(window.top!==window.self){
- if (window.parentIFrame){
- if (addOffset){
- parentIFrame.scrollToOffset(newPosition.x,newPosition.y);
- } else {
- parentIFrame.scrollTo(messageData.width,messageData.height);
- }
- } else {
- warn(' Unable to scroll to requested position, window.parentIFrame not found');
- }
- } else {
- reposition();
- }
-
- }
-
- function scrollTo(){
- if (false !== settings[iframeID].scrollCallback(pagePosition)){
- setPagePosition();
- }
- }
-
- function findTarget(location){
- var hash = location.split("#")[1] || "";
- var hashData = decodeURIComponent(hash);
-
- function jumpToTarget(target){
- var jumpPosition = getElementPosition(target);
-
- log(' Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
- pagePosition = {
- x: jumpPosition.x,
- y: jumpPosition.y
- };
-
- scrollTo();
- log(' --');
- }
-
- var target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
-
- if(window.top!==window.self){
- if (window.parentIFrame){
- parentIFrame.moveToAnchor(hash);
- } else {
- log(' In page link #'+hash+' not found and window.parentIFrame not found');
- }
- } else if (target){
- jumpToTarget(target);
- } else {
- log(' In page link #'+hash+' not found');
- }
- }
-
- function actionMsg(){
- switch(messageData.type){
- case 'close':
- closeIFrame(messageData.iframe);
- break;
- case 'message':
- forwardMsgFromIFrame(getMsgBody(6));
- break;
- case 'scrollTo':
- scrollRequestFromChild(false);
- break;
- case 'scrollToOffset':
- scrollRequestFromChild(true);
- break;
- case 'inPageLink':
- findTarget(getMsgBody(9));
- break;
- case 'reset':
- resetIFrame(messageData);
- break;
- case 'init':
- resizeIFrame();
- settings[iframeID].initCallback(messageData.iframe);
- break;
- default:
- resizeIFrame();
- }
- }
-
- function hasSettings(iframeID){
- var retBool = true;
-
- if (!settings[iframeID]){
- retBool = false;
- warn(messageData.type + ' No settings for ' + iframeID + '. Message was: ' + msg);
- }
-
- return retBool;
- }
-
- var
- msg = event.data,
- messageData = {},
- iframeID = null;
-
- if (isMessageForUs()){
- messageData = processMsg();
- iframeID = messageData.id;
-
- if (!isMessageFromMetaParent() && hasSettings(iframeID)){
- logEnabled = settings[iframeID].log;
- log(' Received: '+msg);
-
- if ( checkIFrameExists() && isMessageFromIFrame() ){
- actionMsg();
- firstRun = false;
- }
- }
- }
- }
-
-
- function getPagePosition (){
- if(null === pagePosition){
- pagePosition = {
- x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
- y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
- };
- log(' Get page position: '+pagePosition.x+','+pagePosition.y);
- }
- }
-
- function setPagePosition(){
- if(null !== pagePosition){
- window.scrollTo(pagePosition.x,pagePosition.y);
- log(' Set page position: '+pagePosition.x+','+pagePosition.y);
- pagePosition = null;
- }
- }
-
- function resetIFrame(messageData){
- function reset(){
- setSize(messageData);
- trigger('reset','reset',messageData.iframe,messageData.id);
- }
-
- log(' Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));
- getPagePosition();
- syncResize(reset,messageData,'init');
- }
-
- function setSize(messageData){
- function setDimension(dimension){
- messageData.iframe.style[dimension] = messageData[dimension] + 'px';
- log(
- ' IFrame (' + iframeID +
- ') ' + dimension +
- ' set to ' + messageData[dimension] + 'px'
- );
- }
- var iframeID = messageData.iframe.id;
- if( settings[iframeID].sizeHeight) { setDimension('height'); }
- if( settings[iframeID].sizeWidth ) { setDimension('width'); }
- }
-
- function syncResize(func,messageData,doNotSync){
- if(doNotSync!==messageData.type && requestAnimationFrame){
- log(' Requesting animation frame');
- requestAnimationFrame(func);
- } else {
- func();
- }
- }
-
- function trigger(calleeMsg,msg,iframe,id){
- if(iframe && iframe.contentWindow){
- log('[' + calleeMsg + '] Sending msg to iframe ('+msg+')');
- iframe.contentWindow.postMessage( msgId + msg, '*' );
- } else {
- warn('[' + calleeMsg + '] IFrame not found');
- if(settings[id]) delete settings[id];
- }
- }
-
-
- function setupIFrame(options){
- function setLimits(){
- function addStyle(style){
- if ((Infinity !== settings[iframeID][style]) && (0 !== settings[iframeID][style])){
- iframe.style[style] = settings[iframeID][style] + 'px';
- log(' Set '+style+' = '+settings[iframeID][style]+'px');
- }
- }
-
- addStyle('maxHeight');
- addStyle('minHeight');
- addStyle('maxWidth');
- addStyle('minWidth');
- }
-
- function ensureHasId(iframeID){
- if (''===iframeID){
- iframe.id = iframeID = 'iFrameResizer' + count++;
- logEnabled = (options || {}).log;
- log(' Added missing iframe ID: '+ iframeID +' (' + iframe.src + ')');
- }
-
- return iframeID;
- }
-
- function setScrolling(){
- log(' IFrame scrolling ' + (settings[iframeID].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeID);
- iframe.style.overflow = false === settings[iframeID].scrolling ? 'hidden' : 'auto';
- iframe.scrolling = false === settings[iframeID].scrolling ? 'no' : 'yes';
- }
-
- //The V1 iFrame script expects an int, where as in V2 expects a CSS
- //string value such as '1px 3em', so if we have an int for V2, set V1=V2
- //and then convert V2 to a string PX value.
- function setupBodyMarginValues(){
- if (('number'===typeof(settings[iframeID].bodyMargin)) || ('0'===settings[iframeID].bodyMargin)){
- settings[iframeID].bodyMarginV1 = settings[iframeID].bodyMargin;
- settings[iframeID].bodyMargin = '' + settings[iframeID].bodyMargin + 'px';
- }
- }
-
- function createOutgoingMsg(){
- return iframeID +
- ':' + settings[iframeID].bodyMarginV1 +
- ':' + settings[iframeID].sizeWidth +
- ':' + settings[iframeID].log +
- ':' + settings[iframeID].interval +
- ':' + settings[iframeID].enablePublicMethods +
- ':' + settings[iframeID].autoResize +
- ':' + settings[iframeID].bodyMargin +
- ':' + settings[iframeID].heightCalculationMethod +
- ':' + settings[iframeID].bodyBackground +
- ':' + settings[iframeID].bodyPadding +
- ':' + settings[iframeID].tolerance +
- ':' + settings[iframeID].enableInPageLinks +
- ':' + settings[iframeID].resizeFrom;
- }
-
- function init(msg){
- //We have to call trigger twice, as we can not be sure if all
- //iframes have completed loading when this code runs. The
- //event listener also catches the page changing in the iFrame.
- addEventListener(iframe,'load',function(){
- var fr = firstRun; // Reduce scope of var to function, because IE8's JS execution
- // context stack is borked and this value gets externally
- // changed midway through running this function.
- trigger('iFrame.onload',msg,iframe);
- if (!fr && settings[iframeID].heightCalculationMethod in resetRequiredMethods){
- resetIFrame({
- iframe:iframe,
- height:0,
- width:0,
- type:'init'
- });
- }
- });
- trigger('init',msg,iframe);
- }
-
- function checkOptions(options){
- if ('object' !== typeof options){
- throw new TypeError('Options is not an object.');
- }
- }
-
- function processOptions(options){
- options = options || {};
- settings[iframeID] = {};
-
- checkOptions(options);
-
- for (var option in defaults) {
- if (defaults.hasOwnProperty(option)){
- settings[iframeID][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];
- }
- }
-
- logEnabled = settings[iframeID].log;
- }
-
- var
- /*jshint validthis:true */
- iframe = this,
- iframeID = ensureHasId(iframe.id);
-
- processOptions(options);
- setScrolling();
- setLimits();
- setupBodyMarginValues();
- init(createOutgoingMsg());
- }
-
- function throttle(fn,time){
- if (null === timer){
- timer = setTimeout(function(){
- timer = null;
- fn();
- }, time);
- }
- }
-
- function winResize(){
- throttle(function(){
- for (var iframeId in settings){
- if('parent' === settings[iframeId].resizeFrom){
- trigger('Window resize','resize',document.getElementById(iframeId),iframeId);
- }
- }
- },66);
- }
-
- function factory(){
-
- setupRequestAnimationFrame();
- addEventListener(window,'message',iFrameListener);
- addEventListener(window,'resize', winResize);
-
- function init(element, options){
- if(!element.tagName) {
- throw new TypeError('Object is not a valid DOM element');
- } else if ('IFRAME' !== element.tagName.toUpperCase()) {
- throw new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>.');
- } else {
- setupIFrame.call(element, options);
- }
- }
-
- return function iFrameResizeF(options,target){
- switch (typeof(target)){
- case 'undefined':
- case 'string':
- Array.prototype.forEach.call( document.querySelectorAll( target || 'iframe' ), function (element) {
- init(element, options);
- });
- break;
- case 'object':
- init(target, options);
- break;
- default:
- throw new TypeError('Unexpected data type ('+typeof(target)+').');
- }
- };
- }
-
- function createJQueryPublicMethod($){
- $.fn.iFrameResize = function $iFrameResizeF(options) {
- return this.filter('iframe').each(function (index, element) {
- setupIFrame.call(element, options);
- }).end();
- };
- }
-
- if (window.jQuery) { createJQueryPublicMethod(jQuery); }
-
- if (typeof define === 'function' && define.amd) {
- define([],factory);
- } else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy
- module.exports = factory();
- } else {
- window.iFrameResize = window.iFrameResize || factory();
- }
-
-})();
\ No newline at end of file
diff --git a/examples/assets/library/jquery.min.js b/examples/assets/library/jquery.min.js
deleted file mode 100644
index 49990d6..0000000
--- a/examples/assets/library/jquery.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r= [...]
-return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(functio [...]
-void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c [...]
diff --git a/test/coverage/PhantomJS 1.9.2 (Linux)/index.html b/test/coverage/PhantomJS 1.9.2 (Linux)/index.html
deleted file mode 100644
index 826e6ff..0000000
--- a/test/coverage/PhantomJS 1.9.2 (Linux)/index.html
+++ /dev/null
@@ -1,320 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>Code coverage report for All files</title>
- <meta charset="utf-8">
-
- <link rel="stylesheet" href="prettify.css">
-
- <style>
- body, html {
- margin:0; padding: 0;
- }
- body {
- font-family: Helvetica Neue, Helvetica,Arial;
- font-size: 10pt;
- }
- div.header, div.footer {
- background: #eee;
- padding: 1em;
- }
- div.header {
- z-index: 100;
- position: fixed;
- top: 0;
- border-bottom: 1px solid #666;
- width: 100%;
- }
- div.footer {
- border-top: 1px solid #666;
- }
- div.body {
- margin-top: 10em;
- }
- div.meta {
- font-size: 90%;
- text-align: center;
- }
- h1, h2, h3 {
- font-weight: normal;
- }
- h1 {
- font-size: 12pt;
- }
- h2 {
- font-size: 10pt;
- }
- pre {
- font-family: Consolas, Menlo, Monaco, monospace;
- margin: 0;
- padding: 0;
- line-height: 14px;
- font-size: 14px;
- -moz-tab-size: 2;
- -o-tab-size: 2;
- tab-size: 2;
- }
-
- div.path { font-size: 110%; }
- div.path a:link, div.path a:visited { color: #000; }
- table.coverage { border-collapse: collapse; margin:0; padding: 0 }
-
- table.coverage td {
- margin: 0;
- padding: 0;
- color: #111;
- vertical-align: top;
- }
- table.coverage td.line-count {
- width: 50px;
- text-align: right;
- padding-right: 5px;
- }
- table.coverage td.line-coverage {
- color: #777 !important;
- text-align: right;
- border-left: 1px solid #666;
- border-right: 1px solid #666;
- }
-
- table.coverage td.text {
- }
-
- table.coverage td span.cline-any {
- display: inline-block;
- padding: 0 5px;
- width: 40px;
- }
- table.coverage td span.cline-neutral {
- background: #eee;
- }
- table.coverage td span.cline-yes {
- background: #b5d592;
- color: #999;
- }
- table.coverage td span.cline-no {
- background: #fc8c84;
- }
-
- .cstat-yes { color: #111; }
- .cstat-no { background: #fc8c84; color: #111; }
- .fstat-no { background: #ffc520; color: #111 !important; }
- .cbranch-no { background: yellow !important; color: #111; }
- .missing-if-branch {
- display: inline-block;
- margin-right: 10px;
- position: relative;
- padding: 0 4px;
- background: black;
- color: yellow;
- xtext-decoration: line-through;
- }
- .missing-if-branch .typ {
- color: inherit !important;
- }
-
- .entity, .metric { font-weight: bold; }
- .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
- .metric small { font-size: 80%; font-weight: normal; color: #666; }
-
- div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
- div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
- div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
- div.coverage-summary th.file { border-right: none !important; }
- div.coverage-summary th.pic { border-left: none !important; text-align: right; }
- div.coverage-summary th.pct { border-right: none !important; }
- div.coverage-summary th.abs { border-left: none !important; text-align: right; }
- div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
- div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
- div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
- div.coverage-summary td.pic { min-width: 120px !important; }
- div.coverage-summary a:link { text-decoration: none; color: #000; }
- div.coverage-summary a:visited { text-decoration: none; color: #333; }
- div.coverage-summary a:hover { text-decoration: underline; }
- div.coverage-summary tfoot td { border-top: 1px solid #666; }
-
- div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
- height: 10px;
- width: 7px;
- display: inline-block;
- margin-left: 0.5em;
- }
- div.coverage-summary .yui3-datatable-sort-indicator {
- background: url("http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
- }
- div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
- background-position: 0 -20px;
- }
- div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
- background-position: 0 -10px;
- }
-
- .high { background: #b5d592 !important; }
- .medium { background: #ffe87c !important; }
- .low { background: #fc8c84 !important; }
-
- span.cover-fill, span.cover-empty {
- display:inline-block;
- border:1px solid #444;
- background: white;
- height: 12px;
- }
- span.cover-fill {
- background: #ccc;
- border-right: 1px solid #444;
- }
- span.cover-empty {
- background: white;
- border-left: none;
- }
- span.cover-full {
- border-right: none !important;
- }
- pre.prettyprint {
- border: none !important;
- padding: 0 !important;
- margin: 0 !important;
- }
- .com { color: #999 !important; }
- </style>
-</head>
-<body>
-<div class="header high">
- <h1>Code coverage report for <span class="entity">All files</span></h1>
- <h2>
-
- Statements: <span class="metric">100% <small>(0 / 0)</small></span>
-
-
- Branches: <span class="metric">100% <small>(0 / 0)</small></span>
-
-
- Functions: <span class="metric">100% <small>(0 / 0)</small></span>
-
-
- Lines: <span class="metric">100% <small>(0 / 0)</small></span>
-
- </h2>
- <div class="path"></div>
-</div>
-<div class="body">
-<div class="coverage-summary">
-<table>
-<thead>
-<tr>
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
-</tr>
-</thead>
-<tbody></tbody>
-</table>
-</div>
-</div>
-<div class="footer">
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Oct 14 2013 01:28:11 GMT-0400 (EDT)</div>
-</div>
-
-<script src="prettify.js"></script>
-
-<script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
-<script>
-
- YUI().use('datatable', function (Y) {
-
- var formatters = {
- pct: function (o) {
- o.className += o.record.get('classes')[o.column.key];
- try {
- return o.value.toFixed(2) + '%';
- } catch (ex) { return o.value + '%'; }
- },
- html: function (o) {
- o.className += o.record.get('classes')[o.column.key];
- return o.record.get(o.column.key + '_html');
- }
- },
- defaultFormatter = function (o) {
- o.className += o.record.get('classes')[o.column.key];
- return o.value;
- };
-
- function getColumns(theadNode) {
- var colNodes = theadNode.all('tr th'),
- cols = [],
- col;
- colNodes.each(function (colNode) {
- col = {
- key: colNode.getAttribute('data-col'),
- label: colNode.get('innerHTML') || ' ',
- sortable: !colNode.getAttribute('data-nosort'),
- className: colNode.getAttribute('class'),
- type: colNode.getAttribute('data-type'),
- allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
- };
- col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
- cols.push(col);
- });
- return cols;
- }
-
- function getRowData(trNode, cols) {
- var tdNodes = trNode.all('td'),
- i,
- row = { classes: {} },
- node,
- name;
- for (i = 0; i < cols.length; i += 1) {
- name = cols[i].key;
- node = tdNodes.item(i);
- row[name] = node.getAttribute('data-value') || node.get('innerHTML');
- row[name + '_html'] = node.get('innerHTML');
- row.classes[name] = node.getAttribute('class');
- //Y.log('Name: ' + name + '; Value: ' + row[name]);
- if (cols[i].type === 'number') { row[name] = row[name] * 1; }
- }
- //Y.log(row);
- return row;
- }
-
- function getData(tbodyNode, cols) {
- var data = [];
- tbodyNode.all('tr').each(function (trNode) {
- data.push(getRowData(trNode, cols));
- });
- return data;
- }
-
- function replaceTable(node) {
- if (!node) { return; }
- var cols = getColumns(node.one('thead')),
- data = getData(node.one('tbody'), cols),
- table,
- parent = node.get('parentNode');
-
- table = new Y.DataTable({
- columns: cols,
- data: data,
- sortBy: 'file'
- });
- parent.set('innerHTML', '');
- table.render(parent);
- }
-
- Y.on('domready', function () {
- replaceTable(Y.one('div.coverage-summary table'));
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
- });
- });
-</script>
-</body>
-</html>
diff --git a/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.css b/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.css
deleted file mode 100644
index b317a7c..0000000
--- a/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
-.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding [...]
diff --git a/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js b/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js
deleted file mode 100644
index ef51e03..0000000
--- a/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js
+++ /dev/null
@@ -1 +0,0 @@
-window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,expl [...]
diff --git a/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012621.json b/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012621.json
deleted file mode 100644
index 9e26dfe..0000000
--- a/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012621.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012811.json b/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012811.json
deleted file mode 100644
index 9e26dfe..0000000
--- a/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012811.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/test/fixtures/accordion.html b/test/fixtures/accordion.html
deleted file mode 100644
index 9eb409f..0000000
--- a/test/fixtures/accordion.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<div class="ui accordion">
- <div class="active title">
- <i class="dropdown icon"></i>
- What is a dog?
- </div>
- <div class="active content">
- <p>A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome guest in many households across the world.</p>
- </div>
- <div class="title">
- <i class="dropdown icon"></i>
- What kinds of dogs are there?
- </div>
- <div class="content">
- <p>There are many breeds of dogs. Each breed varies in size and temperament. Owners often select a breed of dog that they find to be compatible with their own lifestyle and desires from a companion.</p>
- </div>
- <div class="title">
- <i class="dropdown icon"></i>
- How do you acquire a dog?
- </div>
- <div class="content">
- <p>Three common ways for a prospective owner to acquire a dog is from pet shops, private owners, or shelters.</p>
- <p>A pet shop may be the most convenient way to buy a dog. Buying a dog from a private owner allows you to assess the pedigree and upbringing of your dog before choosing to take it home. Lastly, finding your dog from a shelter, helps give a good home to a dog who may not find one so readily.</p>
- </div>
-</div>
\ No newline at end of file
diff --git a/test/fixtures/checkbox.html b/test/fixtures/checkbox.html
deleted file mode 100644
index 49a7eca..0000000
--- a/test/fixtures/checkbox.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<div class="ui form">
- <div class="grouped inline fields">
- <div class="field">
- <div class="ui radio checkbox">
- <input type="radio" name="fruit" checked="checked" />
- <label>Apples</label>
- </div>
- </div>
- <div class="field">
- <div class="ui radio checkbox">
- <input type="radio" name="fruit" />
- <label>Oranges</label>
- </div>
- </div>
- <div class="field">
- <div class="ui radio checkbox">
- <input type="radio" name="fruit" />
- <label>Pears</label>
- </div>
- </div>
- <div class="field">
- <div class="ui radio checkbox">
- <input type="radio" name="fruit" />
- <label>Grapefruit</label>
- </div>
- </div>
- </div>
- <div class="field">
- <div class="ui checkbox">
- <input type="checkbox">
- <label>Poodle</label>
- </div>
- </div>
- <div class="field">
- <div class="ui toggle checkbox">
- <input type="checkbox" name="pet" />
- <label>Allow other people to pet my dog</label>
- </div>
- </div>
- <div class="field">
- <div class="ui slider checkbox">
- <input type="checkbox" name="pet" />
- <label>Allow other people to pet my dog</label>
- </div>
- </div>
-</div>
\ No newline at end of file
diff --git a/test/fixtures/dropdown.html b/test/fixtures/dropdown.html
deleted file mode 100644
index 3db338c..0000000
--- a/test/fixtures/dropdown.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<div class="ui selection dropdown">
- <input type="hidden" name="gender">
- <i class="dropdown icon"></i>
- <div class="default text">Gender</div>
- <div class="menu">
- <div class="item" data-value="male">Male</div>
- <div class="item" data-value="female">Female</div>
- </div>
-</div>
\ No newline at end of file
diff --git a/test/fixtures/modal.html b/test/fixtures/modal.html
deleted file mode 100644
index dcbf57a..0000000
--- a/test/fixtures/modal.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<div class="ui test modal">
- <i class="close icon"></i>
- <div class="header">
- Profile Picture
- </div>
- <div class="content">
- <div class="left">
- <img class="ui fluid image">
- </div>
- <div class="right">
- <div class="ui header">Are you sure you want to upload that?</div>
- <p>I mean it's not really the best profile photo.</p>
- <p>It's resampled to like two times the size it's suppose to be. Our image detection software also says it might even be inappropriate.</p>
- </div>
- </div>
- <div class="actions">
- <div class="ui black button">
- Cancel
- </div>
- <div class="ui green right labeled icon button">
- Add Photo
- <i class="checkmark icon"></i>
- </div>
- </div>
-</div>
\ No newline at end of file
diff --git a/test/fixtures/popup.html b/test/fixtures/popup.html
deleted file mode 100644
index a94a4bb..0000000
--- a/test/fixtures/popup.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<i class="circular heart icon link" data-content="Top Left" data-position="top left"></i>
-<i class="circular heart icon link" data-content="Top Center" data-position="top center"></i>
-<i class="circular heart icon link" data-content="Top Right" data-position="top right"></i>
-<i class="circular heart icon link" data-content="Left Center" data-position="left center"></i>
-<i class="circular heart icon link" data-content="Right Center" data-position="right center"></i>
-<i class="circular heart icon link" data-content="Bottom Left" data-position="bottom left"></i>
-<i class="circular heart icon link" data-content="Bottom Center" data-position="bottom center"></i>
-<i class="circular heart icon link" data-content="Bottom Right" data-position="bottom right"></i>
\ No newline at end of file
diff --git a/test/fixtures/rating.html b/test/fixtures/rating.html
deleted file mode 100644
index 09a85fd..0000000
--- a/test/fixtures/rating.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="ui star rating">
- <i class="icon"></i>
- <i class="icon"></i>
- <i class="icon"></i>
- <i class="icon"></i>
- <i class="icon"></i>
-</div>
\ No newline at end of file
diff --git a/test/fixtures/shape.html b/test/fixtures/shape.html
deleted file mode 100644
index a392038..0000000
--- a/test/fixtures/shape.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="ui shape">
- <div class="sides">
- <div class="active side">This side is visible.</div>
- <div class="side">This side is not visible.</div>
- <div class="side">This side is not visible.</div>
- </div>
-</div>
\ No newline at end of file
diff --git a/test/fixtures/sidebar.html b/test/fixtures/sidebar.html
deleted file mode 100644
index eb941b6..0000000
--- a/test/fixtures/sidebar.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<div class="ui red vertical demo sidebar menu">
- <a class="item">
- <i class="home icon"></i>
- Home
- </a>
- <a class="active item">
- <i class="heart icon"></i>
- Current Section
- </a>
- <a class="item">
- <i class="facebook icon"></i>
- Like us on Facebook
- </a>
- <div class="item">
- <b>More</b>
- <div class="menu">
- <a class="item">About</a>
- <a class="item">Contact Us</a>
- </div>
- </div>
-</div>
-<div class="ui disabled teal toggle button">
- <i class="left arrow icon"></i>
- Trigger Sidebar
-</div>
\ No newline at end of file
diff --git a/test/fixtures/tab.html b/test/fixtures/tab.html
deleted file mode 100644
index 8e9399f..0000000
--- a/test/fixtures/tab.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="ui menu">
- <a class="active item" data-tab="first">First</a>
- <a class="item" data-tab="second">Second</a>
- <a class="item" data-tab="third">Third</a>
-</div>
-<div class="ui active tab segment" data-tab="first">First</div>
-<div class="ui tab segment" data-tab="second">Second</div>
-<div class="ui tab segment" data-tab="third">Third</div>
\ No newline at end of file
diff --git a/test/fixtures/transition.html b/test/fixtures/transition.html
deleted file mode 100644
index a8f0ea8..0000000
--- a/test/fixtures/transition.html
+++ /dev/null
@@ -1 +0,0 @@
-<div class="ui image"></div>
\ No newline at end of file
diff --git a/test/fixtures/video.html b/test/fixtures/video.html
deleted file mode 100644
index 73bb646..0000000
--- a/test/fixtures/video.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<div class="ui video">
- <div class="play"></div>
- <div class="placeholder"></div>
- <div class="embed"></div>
-</div>
\ No newline at end of file
diff --git a/test/helpers/jasmine-clog.js b/test/helpers/jasmine-clog.js
deleted file mode 100644
index 5f2ac1b..0000000
--- a/test/helpers/jasmine-clog.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Allow for console.log to not break IE
-if (typeof window.console == "undefined" || typeof window.console.log == "undefined") {
- window.console = {
- log : function() {},
- info : function(){},
- warn : function(){}
- };
-}
-if(typeof window.console.group == 'undefined' || typeof window.console.groupEnd == 'undefined' || typeof window.console.groupCollapsed == 'undefined') {
- window.console.group = function(){};
- window.console.groupEnd = function(){};
- window.console.groupCollapsed = function(){};
-}
-if(typeof window.console.markTimeline == 'undefined') {
- window.console.markTimeline = function(){};
-}
-window.console.clear = function(){};
diff --git a/test/helpers/jasmine-jquery.js b/test/helpers/jasmine-jquery.js
deleted file mode 100644
index 14539ea..0000000
--- a/test/helpers/jasmine-jquery.js
+++ /dev/null
@@ -1,705 +0,0 @@
-/*!
-Jasmine-jQuery: a set of jQuery helpers for Jasmine tests.
-
-Version 1.5.91
-
-https://github.com/velesin/jasmine-jquery
-
-Copyright (c) 2010-2013 Wojciech Zawistowski, Travis Jeffery
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-+function (jasmine, $) { "use strict";
-
- jasmine.spiedEventsKey = function (selector, eventName) {
- return [$(selector).selector, eventName].toString()
- }
-
- jasmine.getFixtures = function () {
- return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures()
- }
-
- jasmine.getStyleFixtures = function () {
- return jasmine.currentStyleFixtures_ = jasmine.currentStyleFixtures_ || new jasmine.StyleFixtures()
- }
-
- jasmine.Fixtures = function () {
- this.containerId = 'jasmine-fixtures'
- this.fixturesCache_ = {}
- this.fixturesPath = 'spec/javascripts/fixtures'
- }
-
- jasmine.Fixtures.prototype.set = function (html) {
- this.cleanUp()
- return this.createContainer_(html)
- }
-
- jasmine.Fixtures.prototype.appendSet= function (html) {
- this.addToContainer_(html)
- }
-
- jasmine.Fixtures.prototype.preload = function () {
- this.read.apply(this, arguments)
- }
-
- jasmine.Fixtures.prototype.load = function () {
- this.cleanUp()
- this.createContainer_(this.read.apply(this, arguments))
- }
-
- jasmine.Fixtures.prototype.appendLoad = function () {
- this.addToContainer_(this.read.apply(this, arguments))
- }
-
- jasmine.Fixtures.prototype.read = function () {
- var htmlChunks = []
- , fixtureUrls = arguments
-
- for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {
- htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex]))
- }
-
- return htmlChunks.join('')
- }
-
- jasmine.Fixtures.prototype.clearCache = function () {
- this.fixturesCache_ = {}
- }
-
- jasmine.Fixtures.prototype.cleanUp = function () {
- $('#' + this.containerId).remove()
- }
-
- jasmine.Fixtures.prototype.sandbox = function (attributes) {
- var attributesToSet = attributes || {}
- return $('<div id="sandbox" />').attr(attributesToSet)
- }
-
- jasmine.Fixtures.prototype.createContainer_ = function (html) {
- var container = $('<div>')
- .attr('id', this.containerId)
- .html(html)
-
- $(document.body).append(container)
- return container
- }
-
- jasmine.Fixtures.prototype.addToContainer_ = function (html){
- var container = $(document.body).find('#'+this.containerId).append(html)
- if(!container.length){
- this.createContainer_(html)
- }
- }
-
- jasmine.Fixtures.prototype.getFixtureHtml_ = function (url) {
- if (typeof this.fixturesCache_[url] === 'undefined') {
- this.loadFixtureIntoCache_(url)
- }
- return this.fixturesCache_[url]
- }
-
- jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function (relativeUrl) {
- var self = this
- , url = this.makeFixtureUrl_(relativeUrl)
- , request = $.ajax({
- async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
- cache: false,
- url: url,
- success: function (data, status, $xhr) {
- self.fixturesCache_[relativeUrl] = $xhr.responseText
- },
- error: function (jqXHR, status, errorThrown) {
- throw new Error('Fixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')')
- }
- })
- }
-
- jasmine.Fixtures.prototype.makeFixtureUrl_ = function (relativeUrl){
- return this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl
- }
-
- jasmine.Fixtures.prototype.proxyCallTo_ = function (methodName, passedArguments) {
- return this[methodName].apply(this, passedArguments)
- }
-
-
- jasmine.StyleFixtures = function () {
- this.fixturesCache_ = {}
- this.fixturesNodes_ = []
- this.fixturesPath = 'spec/javascripts/fixtures'
- }
-
- jasmine.StyleFixtures.prototype.set = function (css) {
- this.cleanUp()
- this.createStyle_(css)
- }
-
- jasmine.StyleFixtures.prototype.appendSet = function (css) {
- this.createStyle_(css)
- }
-
- jasmine.StyleFixtures.prototype.preload = function () {
- this.read_.apply(this, arguments)
- }
-
- jasmine.StyleFixtures.prototype.load = function () {
- this.cleanUp()
- this.createStyle_(this.read_.apply(this, arguments))
- }
-
- jasmine.StyleFixtures.prototype.appendLoad = function () {
- this.createStyle_(this.read_.apply(this, arguments))
- }
-
- jasmine.StyleFixtures.prototype.cleanUp = function () {
- while(this.fixturesNodes_.length) {
- this.fixturesNodes_.pop().remove()
- }
- }
-
- jasmine.StyleFixtures.prototype.createStyle_ = function (html) {
- var styleText = $('<div></div>').html(html).text()
- , style = $('<style>' + styleText + '</style>')
-
- this.fixturesNodes_.push(style)
- $('head').append(style)
- }
-
- jasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache
- jasmine.StyleFixtures.prototype.read_ = jasmine.Fixtures.prototype.read
- jasmine.StyleFixtures.prototype.getFixtureHtml_ = jasmine.Fixtures.prototype.getFixtureHtml_
- jasmine.StyleFixtures.prototype.loadFixtureIntoCache_ = jasmine.Fixtures.prototype.loadFixtureIntoCache_
- jasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.makeFixtureUrl_
- jasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_
-
- jasmine.getJSONFixtures = function () {
- return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures()
- }
-
- jasmine.JSONFixtures = function () {
- this.fixturesCache_ = {}
- this.fixturesPath = 'spec/javascripts/fixtures/json'
- }
-
- jasmine.JSONFixtures.prototype.load = function () {
- this.read.apply(this, arguments)
- return this.fixturesCache_
- }
-
- jasmine.JSONFixtures.prototype.read = function () {
- var fixtureUrls = arguments
-
- for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {
- this.getFixtureData_(fixtureUrls[urlIndex])
- }
-
- return this.fixturesCache_
- }
-
- jasmine.JSONFixtures.prototype.clearCache = function () {
- this.fixturesCache_ = {}
- }
-
- jasmine.JSONFixtures.prototype.getFixtureData_ = function (url) {
- if (!this.fixturesCache_[url]) this.loadFixtureIntoCache_(url)
- return this.fixturesCache_[url]
- }
-
- jasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function (relativeUrl) {
- var self = this
- , url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl
-
- $.ajax({
- async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
- cache: false,
- dataType: 'json',
- url: url,
- success: function (data) {
- self.fixturesCache_[relativeUrl] = data
- },
- error: function (jqXHR, status, errorThrown) {
- throw new Error('JSONFixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')')
- }
- })
- }
-
- jasmine.JSONFixtures.prototype.proxyCallTo_ = function (methodName, passedArguments) {
- return this[methodName].apply(this, passedArguments)
- }
-
- jasmine.JQuery = function () {}
-
- jasmine.JQuery.browserTagCaseIndependentHtml = function (html) {
- return $('<div/>').append(html).html()
- }
-
- jasmine.JQuery.elementToString = function (element) {
- var domEl = $(element).get(0)
-
- if (domEl === undefined || domEl.cloneNode)
- return $('<div />').append($(element).clone()).html()
- else
- return element.toString()
- }
-
- jasmine.JQuery.matchersClass = {}
-
- !function (namespace) {
- var data = {
- spiedEvents: {}
- , handlers: []
- }
-
- namespace.events = {
- spyOn: function (selector, eventName) {
- var handler = function (e) {
- data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = jasmine.util.argsToArray(arguments)
- }
-
- $(selector).on(eventName, handler)
- data.handlers.push(handler)
-
- return {
- selector: selector,
- eventName: eventName,
- handler: handler,
- reset: function (){
- delete data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]
- }
- }
- },
-
- args: function (selector, eventName) {
- var actualArgs = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]
-
- if (!actualArgs) {
- throw "There is no spy for " + eventName + " on " + selector.toString() + ". Make sure to create a spy using spyOnEvent."
- }
-
- return actualArgs
- },
-
- wasTriggered: function (selector, eventName) {
- return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)])
- },
-
- wasTriggeredWith: function (selector, eventName, expectedArgs, env) {
- var actualArgs = jasmine.JQuery.events.args(selector, eventName).slice(1)
- if (Object.prototype.toString.call(expectedArgs) !== '[object Array]') {
- actualArgs = actualArgs[0]
- }
- return env.equals_(expectedArgs, actualArgs)
- },
-
- wasPrevented: function (selector, eventName) {
- var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]
- , e = args ? args[0] : undefined
-
- return e && e.isDefaultPrevented()
- },
-
- wasStopped: function (selector, eventName) {
- var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]
- , e = args ? args[0] : undefined
- return e && e.isPropagationStopped()
- },
-
- cleanUp: function () {
- data.spiedEvents = {}
- data.handlers = []
- }
- }
- }(jasmine.JQuery)
-
- !function (){
- var jQueryMatchers = {
- toHaveClass: function (className) {
- return this.actual.hasClass(className)
- },
-
- toHaveCss: function (css){
- for (var prop in css){
- var value = css[prop]
- // see issue #147 on gh
- ;if (value === 'auto' && this.actual.get(0).style[prop] === 'auto') continue
- if (this.actual.css(prop) !== value) return false
- }
- return true
- },
-
- toBeVisible: function () {
- return this.actual.is(':visible')
- },
-
- toBeHidden: function () {
- return this.actual.is(':hidden')
- },
-
- toBeSelected: function () {
- return this.actual.is(':selected')
- },
-
- toBeChecked: function () {
- return this.actual.is(':checked')
- },
-
- toBeEmpty: function () {
- return this.actual.is(':empty')
- },
-
- toExist: function () {
- return this.actual.length
- },
-
- toHaveLength: function (length) {
- return this.actual.length === length
- },
-
- toHaveAttr: function (attributeName, expectedAttributeValue) {
- return hasProperty(this.actual.attr(attributeName), expectedAttributeValue)
- },
-
- toHaveProp: function (propertyName, expectedPropertyValue) {
- return hasProperty(this.actual.prop(propertyName), expectedPropertyValue)
- },
-
- toHaveId: function (id) {
- return this.actual.attr('id') == id
- },
-
- toHaveHtml: function (html) {
- return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html)
- },
-
- toContainHtml: function (html){
- var actualHtml = this.actual.html()
- , expectedHtml = jasmine.JQuery.browserTagCaseIndependentHtml(html)
-
- return (actualHtml.indexOf(expectedHtml) >= 0)
- },
-
- toHaveText: function (text) {
- var trimmedText = $.trim(this.actual.text())
-
- if (text && $.isFunction(text.test)) {
- return text.test(trimmedText)
- } else {
- return trimmedText == text
- }
- },
-
- toContainText: function (text) {
- var trimmedText = $.trim(this.actual.text())
-
- if (text && $.isFunction(text.test)) {
- return text.test(trimmedText)
- } else {
- return trimmedText.indexOf(text) != -1
- }
- },
-
- toHaveValue: function (value) {
- return this.actual.val() === value
- },
-
- toHaveData: function (key, expectedValue) {
- return hasProperty(this.actual.data(key), expectedValue)
- },
-
- toBe: function (selector) {
- return this.actual.is(selector)
- },
-
- toContain: function (selector) {
- return this.actual.find(selector).length
- },
-
- toBeMatchedBy: function (selector) {
- return this.actual.filter(selector).length
- },
-
- toBeDisabled: function (selector){
- return this.actual.is(':disabled')
- },
-
- toBeFocused: function (selector) {
- return this.actual[0] === this.actual[0].ownerDocument.activeElement
- },
-
- toHandle: function (event) {
- var events = $._data(this.actual.get(0), "events")
-
- if(!events || !event || typeof event !== "string") {
- return false
- }
-
- var namespaces = event.split(".")
- , eventType = namespaces.shift()
- , sortedNamespaces = namespaces.slice(0).sort()
- , namespaceRegExp = new RegExp("(^|\\.)" + sortedNamespaces.join("\\.(?:.*\\.)?") + "(\\.|$)")
-
- if(events[eventType] && namespaces.length) {
- for(var i = 0; i < events[eventType].length; i++) {
- var namespace = events[eventType][i].namespace
-
- if(namespaceRegExp.test(namespace)) {
- return true
- }
- }
- } else {
- return events[eventType] && events[eventType].length > 0
- }
- },
-
- toHandleWith: function (eventName, eventHandler) {
- var normalizedEventName = eventName.split('.')[0]
- , stack = $._data(this.actual.get(0), "events")[normalizedEventName]
-
- for (var i = 0; i < stack.length; i++) {
- if (stack[i].handler == eventHandler) return true
- }
-
- return false
- }
- }
-
- var hasProperty = function (actualValue, expectedValue) {
- if (expectedValue === undefined) return actualValue !== undefined
-
- return actualValue == expectedValue
- }
-
- var bindMatcher = function (methodName) {
- var builtInMatcher = jasmine.Matchers.prototype[methodName]
-
- jasmine.JQuery.matchersClass[methodName] = function () {
- if (this.actual
- && (this.actual instanceof $
- || jasmine.isDomNode(this.actual))) {
- this.actual = $(this.actual)
- var result = jQueryMatchers[methodName].apply(this, arguments)
- , element
-
- if (this.actual.get && (element = this.actual.get()[0]) && !$.isWindow(element) && element.tagName !== "HTML")
- this.actual = jasmine.JQuery.elementToString(this.actual)
-
- return result
- }
-
- if (builtInMatcher) {
- return builtInMatcher.apply(this, arguments)
- }
-
- return false
- }
- }
-
- for(var methodName in jQueryMatchers) {
- bindMatcher(methodName)
- }
- }()
-
- beforeEach(function () {
- this.addMatchers(jasmine.JQuery.matchersClass)
- this.addMatchers({
- toHaveBeenTriggeredOn: function (selector) {
- this.message = function () {
- return [
- "Expected event " + this.actual + " to have been triggered on " + selector,
- "Expected event " + this.actual + " not to have been triggered on " + selector
- ]
- }
- return jasmine.JQuery.events.wasTriggered(selector, this.actual)
- }
- })
- this.addMatchers({
- toHaveBeenTriggered: function (){
- var eventName = this.actual.eventName
- , selector = this.actual.selector
-
- this.message = function () {
- return [
- "Expected event " + eventName + " to have been triggered on " + selector,
- "Expected event " + eventName + " not to have been triggered on " + selector
- ]
- }
-
- return jasmine.JQuery.events.wasTriggered(selector, eventName)
- }
- })
- this.addMatchers({
- toHaveBeenTriggeredOnAndWith: function () {
- var selector = arguments[0]
- , expectedArgs = arguments[1]
- , wasTriggered = jasmine.JQuery.events.wasTriggered(selector, this.actual)
-
- this.message = function () {
- if (wasTriggered) {
- var actualArgs = jasmine.JQuery.events.args(selector, this.actual, expectedArgs)[1]
- return [
- "Expected event " + this.actual + " to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs),
- "Expected event " + this.actual + " not to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs)
- ]
- } else {
- return [
- "Expected event " + this.actual + " to have been triggered on " + selector,
- "Expected event " + this.actual + " not to have been triggered on " + selector
- ]
- }
- }
-
- return wasTriggered && jasmine.JQuery.events.wasTriggeredWith(selector, this.actual, expectedArgs, this.env)
- }
- })
- this.addMatchers({
- toHaveBeenPreventedOn: function (selector) {
- this.message = function () {
- return [
- "Expected event " + this.actual + " to have been prevented on " + selector,
- "Expected event " + this.actual + " not to have been prevented on " + selector
- ]
- }
-
- return jasmine.JQuery.events.wasPrevented(selector, this.actual)
- }
- })
- this.addMatchers({
- toHaveBeenPrevented: function () {
- var eventName = this.actual.eventName
- , selector = this.actual.selector
- this.message = function () {
- return [
- "Expected event " + eventName + " to have been prevented on " + selector,
- "Expected event " + eventName + " not to have been prevented on " + selector
- ]
- }
-
- return jasmine.JQuery.events.wasPrevented(selector, eventName)
- }
- })
- this.addMatchers({
- toHaveBeenStoppedOn: function (selector) {
- this.message = function () {
- return [
- "Expected event " + this.actual + " to have been stopped on " + selector,
- "Expected event " + this.actual + " not to have been stopped on " + selector
- ]
- }
-
- return jasmine.JQuery.events.wasStopped(selector, this.actual)
- }
- })
- this.addMatchers({
- toHaveBeenStopped: function () {
- var eventName = this.actual.eventName
- , selector = this.actual.selector
- this.message = function () {
- return [
- "Expected event " + eventName + " to have been stopped on " + selector,
- "Expected event " + eventName + " not to have been stopped on " + selector
- ]
- }
- return jasmine.JQuery.events.wasStopped(selector, eventName)
- }
- })
- jasmine.getEnv().addEqualityTester(function (a, b) {
- if(a instanceof jQuery && b instanceof jQuery) {
- if(a.size() != b.size()) {
- return jasmine.undefined
- }
- else if(a.is(b)) {
- return true
- }
- }
-
- return jasmine.undefined
- })
- })
-
- afterEach(function () {
- jasmine.getFixtures().cleanUp()
- jasmine.getStyleFixtures().cleanUp()
- jasmine.JQuery.events.cleanUp()
- })
-}(window.jasmine, window.jQuery)
-
-+function (jasmine, global) { "use strict";
-
- global.readFixtures = function () {
- return jasmine.getFixtures().proxyCallTo_('read', arguments)
- }
-
- global.preloadFixtures = function () {
- jasmine.getFixtures().proxyCallTo_('preload', arguments)
- }
-
- global.loadFixtures = function () {
- jasmine.getFixtures().proxyCallTo_('load', arguments)
- }
-
- global.appendLoadFixtures = function () {
- jasmine.getFixtures().proxyCallTo_('appendLoad', arguments)
- }
-
- global.setFixtures = function (html) {
- return jasmine.getFixtures().proxyCallTo_('set', arguments)
- }
-
- global.appendSetFixtures = function () {
- jasmine.getFixtures().proxyCallTo_('appendSet', arguments)
- }
-
- global.sandbox = function (attributes) {
- return jasmine.getFixtures().sandbox(attributes)
- }
-
- global.spyOnEvent = function (selector, eventName) {
- return jasmine.JQuery.events.spyOn(selector, eventName)
- }
-
- global.preloadStyleFixtures = function () {
- jasmine.getStyleFixtures().proxyCallTo_('preload', arguments)
- }
-
- global.loadStyleFixtures = function () {
- jasmine.getStyleFixtures().proxyCallTo_('load', arguments)
- }
-
- global.appendLoadStyleFixtures = function () {
- jasmine.getStyleFixtures().proxyCallTo_('appendLoad', arguments)
- }
-
- global.setStyleFixtures = function (html) {
- jasmine.getStyleFixtures().proxyCallTo_('set', arguments)
- }
-
- global.appendSetStyleFixtures = function (html) {
- jasmine.getStyleFixtures().proxyCallTo_('appendSet', arguments)
- }
-
- global.loadJSONFixtures = function () {
- return jasmine.getJSONFixtures().proxyCallTo_('load', arguments)
- }
-
- global.getJSONFixture = function (url) {
- return jasmine.getJSONFixtures().proxyCallTo_('read', arguments)[url]
- }
-}(jasmine, window);
\ No newline at end of file
diff --git a/test/helpers/jasmine-sinon.js b/test/helpers/jasmine-sinon.js
deleted file mode 100644
index c935653..0000000
--- a/test/helpers/jasmine-sinon.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/* global jasmine */
-
-'use strict';
-
-(function(jasmine, beforeEach) {
-
- var sinon = (typeof require === 'function' && typeof module === 'object') ? require('sinon') : window.sinon,
- spyMatchers = 'called calledOnce calledTwice calledThrice calledBefore calledAfter calledOn alwaysCalledOn calledWith alwaysCalledWith calledWithExactly alwaysCalledWithExactly calledWithMatch alwaysCalledWithMatch'.split(' '),
- i = spyMatchers.length,
- spyMatcherHash = {},
- unusualMatchers = {
- "returned": "toHaveReturned",
- "alwaysReturned": "toHaveAlwaysReturned",
- "threw": "toHaveThrown",
- "alwaysThrew": "toHaveAlwaysThrown"
- },
-
- createCustomMatcher = function(arg) {
- return sinon.match(function (val) {
- return jasmine.getEnv().equals_(val, arg);
- });
- },
-
- getMatcherFunction = function(sinonName, matcherName) {
- var original = jasmine.Matchers.prototype[matcherName];
- return function () {
- if (jasmine.isSpy(this.actual) && original) {
- return original.apply(this, arguments);
- }
- var sinonProperty = this.actual[sinonName];
- var args = Array.prototype.slice.call(arguments);
-
- for (var i = 0; i < args.length; i++) {
- if (args[i] && (typeof args[i].jasmineMatches === 'function' || args[i] instanceof jasmine.Matchers.ObjectContaining)) {
- args[i] = createCustomMatcher(args[i]);
- }
- }
-
- return (typeof sinonProperty === 'function') ? sinonProperty.apply(this.actual, args) : sinonProperty;
- };
- };
-
- while(i--) {
- var sinonName = spyMatchers[i],
- matcherName = "toHaveBeen" + sinonName.charAt(0).toUpperCase() + sinonName.slice(1);
-
- spyMatcherHash[matcherName] = getMatcherFunction(sinonName, matcherName);
- }
-
- for (var j in unusualMatchers) {
- spyMatcherHash[unusualMatchers[j]] = getMatcherFunction(j, unusualMatchers[j]);
- }
-
- beforeEach(function() {
- this.addMatchers(spyMatcherHash);
- });
-
-})(jasmine, beforeEach);
\ No newline at end of file
diff --git a/test/helpers/jquery-events.js b/test/helpers/jquery-events.js
deleted file mode 100644
index d956e56..0000000
--- a/test/helpers/jquery-events.js
+++ /dev/null
@@ -1,28 +0,0 @@
-(function($) {
- $.events = function(selector, root) {
- var s = [];
- $(selector || '*', root).addBack().each(function() {
- // the following line is the only change
- var e = $._data(this, 'events');
- if(!e) return;
- s.push(this.tagName);
- if(this.id) s.push('#', this.id);
- if(this.className) s.push('.', this.className.replace(/ +/g, '.'));
- for(var p in e) {
- var r = e[p],
- h = r.length - r.delegateCount;
- if(h)
- s.push('\n', h, ' ', p, ' handler', h > 1 ? 's' : '');
- if(r.delegateCount) {
- for(var q = 0; q < r.length; q++)
- if(r[q].selector) s.push('\n', p, ' for ', r[q].selector);
- }
- }
- s.push('\n\n');
- });
- return s.join('');
- }
- $.fn.events = function(selector) {
- return $.events(selector, this);
- }
-})(jQuery);
\ No newline at end of file
diff --git a/test/helpers/sinon.js b/test/helpers/sinon.js
deleted file mode 100644
index 4112185..0000000
--- a/test/helpers/sinon.js
+++ /dev/null
@@ -1,4819 +0,0 @@
-/**
- * Sinon.JS 1.9.1, 2014/04/03
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @author Contributors: https://github.com/cjohansen/Sinon.JS/blob/master/AUTHORS
- *
- * (The BSD License)
- *
- * Copyright (c) 2010-2014, Christian Johansen, christian at cjohansen.no
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * * Neither the name of Christian Johansen nor the names of his contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-this.sinon = (function () {
-var samsam, formatio;
-function define(mod, deps, fn) { if (mod == "samsam") { samsam = deps(); } else { formatio = fn(samsam); } }
-define.amd = true;
-((typeof define === "function" && define.amd && function (m) { define("samsam", m); }) ||
- (typeof module === "object" &&
- function (m) { module.exports = m(); }) || // Node
- function (m) { this.samsam = m(); } // Browser globals
-)(function () {
- var o = Object.prototype;
- var div = typeof document !== "undefined" && document.createElement("div");
-
- function isNaN(value) {
- // Unlike global isNaN, this avoids type coercion
- // typeof check avoids IE host object issues, hat tip to
- // lodash
- var val = value; // JsLint thinks value !== value is "weird"
- return typeof value === "number" && value !== val;
- }
-
- function getClass(value) {
- // Returns the internal [[Class]] by calling Object.prototype.toString
- // with the provided value as this. Return value is a string, naming the
- // internal class, e.g. "Array"
- return o.toString.call(value).split(/[ \]]/)[1];
- }
-
- /**
- * @name samsam.isArguments
- * @param Object object
- *
- * Returns ``true`` if ``object`` is an ``arguments`` object,
- * ``false`` otherwise.
- */
- function isArguments(object) {
- if (typeof object !== "object" || typeof object.length !== "number" ||
- getClass(object) === "Array") {
- return false;
- }
- if (typeof object.callee == "function") { return true; }
- try {
- object[object.length] = 6;
- delete object[object.length];
- } catch (e) {
- return true;
- }
- return false;
- }
-
- /**
- * @name samsam.isElement
- * @param Object object
- *
- * Returns ``true`` if ``object`` is a DOM element node. Unlike
- * Underscore.js/lodash, this function will return ``false`` if ``object``
- * is an *element-like* object, i.e. a regular object with a ``nodeType``
- * property that holds the value ``1``.
- */
- function isElement(object) {
- if (!object || object.nodeType !== 1 || !div) { return false; }
- try {
- object.appendChild(div);
- object.removeChild(div);
- } catch (e) {
- return false;
- }
- return true;
- }
-
- /**
- * @name samsam.keys
- * @param Object object
- *
- * Return an array of own property names.
- */
- function keys(object) {
- var ks = [], prop;
- for (prop in object) {
- if (o.hasOwnProperty.call(object, prop)) { ks.push(prop); }
- }
- return ks;
- }
-
- /**
- * @name samsam.isDate
- * @param Object value
- *
- * Returns true if the object is a ``Date``, or *date-like*. Duck typing
- * of date objects work by checking that the object has a ``getTime``
- * function whose return value equals the return value from the object's
- * ``valueOf``.
- */
- function isDate(value) {
- return typeof value.getTime == "function" &&
- value.getTime() == value.valueOf();
- }
-
- /**
- * @name samsam.isNegZero
- * @param Object value
- *
- * Returns ``true`` if ``value`` is ``-0``.
- */
- function isNegZero(value) {
- return value === 0 && 1 / value === -Infinity;
- }
-
- /**
- * @name samsam.equal
- * @param Object obj1
- * @param Object obj2
- *
- * Returns ``true`` if two objects are strictly equal. Compared to
- * ``===`` there are two exceptions:
- *
- * - NaN is considered equal to NaN
- * - -0 and +0 are not considered equal
- */
- function identical(obj1, obj2) {
- if (obj1 === obj2 || (isNaN(obj1) && isNaN(obj2))) {
- return obj1 !== 0 || isNegZero(obj1) === isNegZero(obj2);
- }
- }
-
-
- /**
- * @name samsam.deepEqual
- * @param Object obj1
- * @param Object obj2
- *
- * Deep equal comparison. Two values are "deep equal" if:
- *
- * - They are equal, according to samsam.identical
- * - They are both date objects representing the same time
- * - They are both arrays containing elements that are all deepEqual
- * - They are objects with the same set of properties, and each property
- * in ``obj1`` is deepEqual to the corresponding property in ``obj2``
- *
- * Supports cyclic objects.
- */
- function deepEqualCyclic(obj1, obj2) {
-
- // used for cyclic comparison
- // contain already visited objects
- var objects1 = [],
- objects2 = [],
- // contain paths (position in the object structure)
- // of the already visited objects
- // indexes same as in objects arrays
- paths1 = [],
- paths2 = [],
- // contains combinations of already compared objects
- // in the manner: { "$1['ref']$2['ref']": true }
- compared = {};
-
- /**
- * used to check, if the value of a property is an object
- * (cyclic logic is only needed for objects)
- * only needed for cyclic logic
- */
- function isObject(value) {
-
- if (typeof value === 'object' && value !== null &&
- !(value instanceof Boolean) &&
- !(value instanceof Date) &&
- !(value instanceof Number) &&
- !(value instanceof RegExp) &&
- !(value instanceof String)) {
-
- return true;
- }
-
- return false;
- }
-
- /**
- * returns the index of the given object in the
- * given objects array, -1 if not contained
- * only needed for cyclic logic
- */
- function getIndex(objects, obj) {
-
- var i;
- for (i = 0; i < objects.length; i++) {
- if (objects[i] === obj) {
- return i;
- }
- }
-
- return -1;
- }
-
- // does the recursion for the deep equal check
- return (function deepEqual(obj1, obj2, path1, path2) {
- var type1 = typeof obj1;
- var type2 = typeof obj2;
-
- // == null also matches undefined
- if (obj1 === obj2 ||
- isNaN(obj1) || isNaN(obj2) ||
- obj1 == null || obj2 == null ||
- type1 !== "object" || type2 !== "object") {
-
- return identical(obj1, obj2);
- }
-
- // Elements are only equal if identical(expected, actual)
- if (isElement(obj1) || isElement(obj2)) { return false; }
-
- var isDate1 = isDate(obj1), isDate2 = isDate(obj2);
- if (isDate1 || isDate2) {
- if (!isDate1 || !isDate2 || obj1.getTime() !== obj2.getTime()) {
- return false;
- }
- }
-
- if (obj1 instanceof RegExp && obj2 instanceof RegExp) {
- if (obj1.toString() !== obj2.toString()) { return false; }
- }
-
- var class1 = getClass(obj1);
- var class2 = getClass(obj2);
- var keys1 = keys(obj1);
- var keys2 = keys(obj2);
-
- if (isArguments(obj1) || isArguments(obj2)) {
- if (obj1.length !== obj2.length) { return false; }
- } else {
- if (type1 !== type2 || class1 !== class2 ||
- keys1.length !== keys2.length) {
- return false;
- }
- }
-
- var key, i, l,
- // following vars are used for the cyclic logic
- value1, value2,
- isObject1, isObject2,
- index1, index2,
- newPath1, newPath2;
-
- for (i = 0, l = keys1.length; i < l; i++) {
- key = keys1[i];
- if (!o.hasOwnProperty.call(obj2, key)) {
- return false;
- }
-
- // Start of the cyclic logic
-
- value1 = obj1[key];
- value2 = obj2[key];
-
- isObject1 = isObject(value1);
- isObject2 = isObject(value2);
-
- // determine, if the objects were already visited
- // (it's faster to check for isObject first, than to
- // get -1 from getIndex for non objects)
- index1 = isObject1 ? getIndex(objects1, value1) : -1;
- index2 = isObject2 ? getIndex(objects2, value2) : -1;
-
- // determine the new paths of the objects
- // - for non cyclic objects the current path will be extended
- // by current property name
- // - for cyclic objects the stored path is taken
- newPath1 = index1 !== -1
- ? paths1[index1]
- : path1 + '[' + JSON.stringify(key) + ']';
- newPath2 = index2 !== -1
- ? paths2[index2]
- : path2 + '[' + JSON.stringify(key) + ']';
-
- // stop recursion if current objects are already compared
- if (compared[newPath1 + newPath2]) {
- return true;
- }
-
- // remember the current objects and their paths
- if (index1 === -1 && isObject1) {
- objects1.push(value1);
- paths1.push(newPath1);
- }
- if (index2 === -1 && isObject2) {
- objects2.push(value2);
- paths2.push(newPath2);
- }
-
- // remember that the current objects are already compared
- if (isObject1 && isObject2) {
- compared[newPath1 + newPath2] = true;
- }
-
- // End of cyclic logic
-
- // neither value1 nor value2 is a cycle
- // continue with next level
- if (!deepEqual(value1, value2, newPath1, newPath2)) {
- return false;
- }
- }
-
- return true;
-
- }(obj1, obj2, '$1', '$2'));
- }
-
- var match;
-
- function arrayContains(array, subset) {
- if (subset.length === 0) { return true; }
- var i, l, j, k;
- for (i = 0, l = array.length; i < l; ++i) {
- if (match(array[i], subset[0])) {
- for (j = 0, k = subset.length; j < k; ++j) {
- if (!match(array[i + j], subset[j])) { return false; }
- }
- return true;
- }
- }
- return false;
- }
-
- /**
- * @name samsam.match
- * @param Object object
- * @param Object matcher
- *
- * Compare arbitrary value ``object`` with matcher.
- */
- match = function match(object, matcher) {
- if (matcher && typeof matcher.test === "function") {
- return matcher.test(object);
- }
-
- if (typeof matcher === "function") {
- return matcher(object) === true;
- }
-
- if (typeof matcher === "string") {
- matcher = matcher.toLowerCase();
- var notNull = typeof object === "string" || !!object;
- return notNull &&
- (String(object)).toLowerCase().indexOf(matcher) >= 0;
- }
-
- if (typeof matcher === "number") {
- return matcher === object;
- }
-
- if (typeof matcher === "boolean") {
- return matcher === object;
- }
-
- if (getClass(object) === "Array" && getClass(matcher) === "Array") {
- return arrayContains(object, matcher);
- }
-
- if (matcher && typeof matcher === "object") {
- var prop;
- for (prop in matcher) {
- if (!match(object[prop], matcher[prop])) {
- return false;
- }
- }
- return true;
- }
-
- throw new Error("Matcher was not a string, a number, a " +
- "function, a boolean or an object");
- };
-
- return {
- isArguments: isArguments,
- isElement: isElement,
- isDate: isDate,
- isNegZero: isNegZero,
- identical: identical,
- deepEqual: deepEqualCyclic,
- match: match,
- keys: keys
- };
-});
-((typeof define === "function" && define.amd && function (m) {
- define("formatio", ["samsam"], m);
-}) || (typeof module === "object" && function (m) {
- module.exports = m(require("samsam"));
-}) || function (m) { this.formatio = m(this.samsam); }
-)(function (samsam) {
-
- var formatio = {
- excludeConstructors: ["Object", /^.$/],
- quoteStrings: true
- };
-
- var hasOwn = Object.prototype.hasOwnProperty;
-
- var specialObjects = [];
- if (typeof global !== "undefined") {
- specialObjects.push({ object: global, value: "[object global]" });
- }
- if (typeof document !== "undefined") {
- specialObjects.push({
- object: document,
- value: "[object HTMLDocument]"
- });
- }
- if (typeof window !== "undefined") {
- specialObjects.push({ object: window, value: "[object Window]" });
- }
-
- function functionName(func) {
- if (!func) { return ""; }
- if (func.displayName) { return func.displayName; }
- if (func.name) { return func.name; }
- var matches = func.toString().match(/function\s+([^\(]+)/m);
- return (matches && matches[1]) || "";
- }
-
- function constructorName(f, object) {
- var name = functionName(object && object.constructor);
- var excludes = f.excludeConstructors ||
- formatio.excludeConstructors || [];
-
- var i, l;
- for (i = 0, l = excludes.length; i < l; ++i) {
- if (typeof excludes[i] === "string" && excludes[i] === name) {
- return "";
- } else if (excludes[i].test && excludes[i].test(name)) {
- return "";
- }
- }
-
- return name;
- }
-
- function isCircular(object, objects) {
- if (typeof object !== "object") { return false; }
- var i, l;
- for (i = 0, l = objects.length; i < l; ++i) {
- if (objects[i] === object) { return true; }
- }
- return false;
- }
-
- function ascii(f, object, processed, indent) {
- if (typeof object === "string") {
- var qs = f.quoteStrings;
- var quote = typeof qs !== "boolean" || qs;
- return processed || quote ? '"' + object + '"' : object;
- }
-
- if (typeof object === "function" && !(object instanceof RegExp)) {
- return ascii.func(object);
- }
-
- processed = processed || [];
-
- if (isCircular(object, processed)) { return "[Circular]"; }
-
- if (Object.prototype.toString.call(object) === "[object Array]") {
- return ascii.array.call(f, object, processed);
- }
-
- if (!object) { return String((1/object) === -Infinity ? "-0" : object); }
- if (samsam.isElement(object)) { return ascii.element(object); }
-
- if (typeof object.toString === "function" &&
- object.toString !== Object.prototype.toString) {
- return object.toString();
- }
-
- var i, l;
- for (i = 0, l = specialObjects.length; i < l; i++) {
- if (object === specialObjects[i].object) {
- return specialObjects[i].value;
- }
- }
-
- return ascii.object.call(f, object, processed, indent);
- }
-
- ascii.func = function (func) {
- return "function " + functionName(func) + "() {}";
- };
-
- ascii.array = function (array, processed) {
- processed = processed || [];
- processed.push(array);
- var i, l, pieces = [];
- for (i = 0, l = array.length; i < l; ++i) {
- pieces.push(ascii(this, array[i], processed));
- }
- return "[" + pieces.join(", ") + "]";
- };
-
- ascii.object = function (object, processed, indent) {
- processed = processed || [];
- processed.push(object);
- indent = indent || 0;
- var pieces = [], properties = samsam.keys(object).sort();
- var length = 3;
- var prop, str, obj, i, l;
-
- for (i = 0, l = properties.length; i < l; ++i) {
- prop = properties[i];
- obj = object[prop];
-
- if (isCircular(obj, processed)) {
- str = "[Circular]";
- } else {
- str = ascii(this, obj, processed, indent + 2);
- }
-
- str = (/\s/.test(prop) ? '"' + prop + '"' : prop) + ": " + str;
- length += str.length;
- pieces.push(str);
- }
-
- var cons = constructorName(this, object);
- var prefix = cons ? "[" + cons + "] " : "";
- var is = "";
- for (i = 0, l = indent; i < l; ++i) { is += " "; }
-
- if (length + indent > 80) {
- return prefix + "{\n " + is + pieces.join(",\n " + is) + "\n" +
- is + "}";
- }
- return prefix + "{ " + pieces.join(", ") + " }";
- };
-
- ascii.element = function (element) {
- var tagName = element.tagName.toLowerCase();
- var attrs = element.attributes, attr, pairs = [], attrName, i, l, val;
-
- for (i = 0, l = attrs.length; i < l; ++i) {
- attr = attrs.item(i);
- attrName = attr.nodeName.toLowerCase().replace("html:", "");
- val = attr.nodeValue;
- if (attrName !== "contenteditable" || val !== "inherit") {
- if (!!val) { pairs.push(attrName + "=\"" + val + "\""); }
- }
- }
-
- var formatted = "<" + tagName + (pairs.length > 0 ? " " : "");
- var content = element.innerHTML;
-
- if (content.length > 20) {
- content = content.substr(0, 20) + "[...]";
- }
-
- var res = formatted + pairs.join(" ") + ">" + content +
- "</" + tagName + ">";
-
- return res.replace(/ contentEditable="inherit"/, "");
- };
-
- function Formatio(options) {
- for (var opt in options) {
- this[opt] = options[opt];
- }
- }
-
- Formatio.prototype = {
- functionName: functionName,
-
- configure: function (options) {
- return new Formatio(options);
- },
-
- constructorName: function (object) {
- return constructorName(this, object);
- },
-
- ascii: function (object, processed, indent) {
- return ascii(this, object, processed, indent);
- }
- };
-
- return Formatio.prototype;
-});
-/*jslint eqeqeq: false, onevar: false, forin: true, nomen: false, regexp: false, plusplus: false*/
-/*global module, require, __dirname, document*/
-/**
- * Sinon core utilities. For internal use only.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-var sinon = (function (formatio) {
- var div = typeof document != "undefined" && document.createElement("div");
- var hasOwn = Object.prototype.hasOwnProperty;
-
- function isDOMNode(obj) {
- var success = false;
-
- try {
- obj.appendChild(div);
- success = div.parentNode == obj;
- } catch (e) {
- return false;
- } finally {
- try {
- obj.removeChild(div);
- } catch (e) {
- // Remove failed, not much we can do about that
- }
- }
-
- return success;
- }
-
- function isElement(obj) {
- return div && obj && obj.nodeType === 1 && isDOMNode(obj);
- }
-
- function isFunction(obj) {
- return typeof obj === "function" || !!(obj && obj.constructor && obj.call && obj.apply);
- }
-
- function isReallyNaN(val) {
- return typeof val === 'number' && isNaN(val);
- }
-
- function mirrorProperties(target, source) {
- for (var prop in source) {
- if (!hasOwn.call(target, prop)) {
- target[prop] = source[prop];
- }
- }
- }
-
- function isRestorable (obj) {
- return typeof obj === "function" && typeof obj.restore === "function" && obj.restore.sinon;
- }
-
- var sinon = {
- wrapMethod: function wrapMethod(object, property, method) {
- if (!object) {
- throw new TypeError("Should wrap property of object");
- }
-
- if (typeof method != "function") {
- throw new TypeError("Method wrapper should be function");
- }
-
- var wrappedMethod = object[property],
- error;
-
- if (!isFunction(wrappedMethod)) {
- error = new TypeError("Attempted to wrap " + (typeof wrappedMethod) + " property " +
- property + " as function");
- }
-
- if (wrappedMethod.restore && wrappedMethod.restore.sinon) {
- error = new TypeError("Attempted to wrap " + property + " which is already wrapped");
- }
-
- if (wrappedMethod.calledBefore) {
- var verb = !!wrappedMethod.returns ? "stubbed" : "spied on";
- error = new TypeError("Attempted to wrap " + property + " which is already " + verb);
- }
-
- if (error) {
- if (wrappedMethod._stack) {
- error.stack += '\n--------------\n' + wrappedMethod._stack;
- }
- throw error;
- }
-
- // IE 8 does not support hasOwnProperty on the window object and Firefox has a problem
- // when using hasOwn.call on objects from other frames.
- var owned = object.hasOwnProperty ? object.hasOwnProperty(property) : hasOwn.call(object, property);
- object[property] = method;
- method.displayName = property;
- // Set up a stack trace which can be used later to find what line of
- // code the original method was created on.
- method._stack = (new Error('Stack Trace for original')).stack;
-
- method.restore = function () {
- // For prototype properties try to reset by delete first.
- // If this fails (ex: localStorage on mobile safari) then force a reset
- // via direct assignment.
- if (!owned) {
- delete object[property];
- }
- if (object[property] === method) {
- object[property] = wrappedMethod;
- }
- };
-
- method.restore.sinon = true;
- mirrorProperties(method, wrappedMethod);
-
- return method;
- },
-
- extend: function extend(target) {
- for (var i = 1, l = arguments.length; i < l; i += 1) {
- for (var prop in arguments[i]) {
- if (arguments[i].hasOwnProperty(prop)) {
- target[prop] = arguments[i][prop];
- }
-
- // DONT ENUM bug, only care about toString
- if (arguments[i].hasOwnProperty("toString") &&
- arguments[i].toString != target.toString) {
- target.toString = arguments[i].toString;
- }
- }
- }
-
- return target;
- },
-
- create: function create(proto) {
- var F = function () {};
- F.prototype = proto;
- return new F();
- },
-
- deepEqual: function deepEqual(a, b) {
- if (sinon.match && sinon.match.isMatcher(a)) {
- return a.test(b);
- }
-
- if (typeof a != 'object' || typeof b != 'object') {
- if (isReallyNaN(a) && isReallyNaN(b)) {
- return true;
- } else {
- return a === b;
- }
- }
-
- if (isElement(a) || isElement(b)) {
- return a === b;
- }
-
- if (a === b) {
- return true;
- }
-
- if ((a === null && b !== null) || (a !== null && b === null)) {
- return false;
- }
-
- if (a instanceof RegExp && b instanceof RegExp) {
- return (a.source === b.source) && (a.global === b.global) &&
- (a.ignoreCase === b.ignoreCase) && (a.multiline === b.multiline);
- }
-
- var aString = Object.prototype.toString.call(a);
- if (aString != Object.prototype.toString.call(b)) {
- return false;
- }
-
- if (aString == "[object Date]") {
- return a.valueOf() === b.valueOf();
- }
-
- var prop, aLength = 0, bLength = 0;
-
- if (aString == "[object Array]" && a.length !== b.length) {
- return false;
- }
-
- for (prop in a) {
- aLength += 1;
-
- if (!deepEqual(a[prop], b[prop])) {
- return false;
- }
- }
-
- for (prop in b) {
- bLength += 1;
- }
-
- return aLength == bLength;
- },
-
- functionName: function functionName(func) {
- var name = func.displayName || func.name;
-
- // Use function decomposition as a last resort to get function
- // name. Does not rely on function decomposition to work - if it
- // doesn't debugging will be slightly less informative
- // (i.e. toString will say 'spy' rather than 'myFunc').
- if (!name) {
- var matches = func.toString().match(/function ([^\s\(]+)/);
- name = matches && matches[1];
- }
-
- return name;
- },
-
- functionToString: function toString() {
- if (this.getCall && this.callCount) {
- var thisValue, prop, i = this.callCount;
-
- while (i--) {
- thisValue = this.getCall(i).thisValue;
-
- for (prop in thisValue) {
- if (thisValue[prop] === this) {
- return prop;
- }
- }
- }
- }
-
- return this.displayName || "sinon fake";
- },
-
- getConfig: function (custom) {
- var config = {};
- custom = custom || {};
- var defaults = sinon.defaultConfig;
-
- for (var prop in defaults) {
- if (defaults.hasOwnProperty(prop)) {
- config[prop] = custom.hasOwnProperty(prop) ? custom[prop] : defaults[prop];
- }
- }
-
- return config;
- },
-
- format: function (val) {
- return "" + val;
- },
-
- defaultConfig: {
- injectIntoThis: true,
- injectInto: null,
- properties: ["spy", "stub", "mock", "clock", "server", "requests"],
- useFakeTimers: true,
- useFakeServer: true
- },
-
- timesInWords: function timesInWords(count) {
- return count == 1 && "once" ||
- count == 2 && "twice" ||
- count == 3 && "thrice" ||
- (count || 0) + " times";
- },
-
- calledInOrder: function (spies) {
- for (var i = 1, l = spies.length; i < l; i++) {
- if (!spies[i - 1].calledBefore(spies[i]) || !spies[i].called) {
- return false;
- }
- }
-
- return true;
- },
-
- orderByFirstCall: function (spies) {
- return spies.sort(function (a, b) {
- // uuid, won't ever be equal
- var aCall = a.getCall(0);
- var bCall = b.getCall(0);
- var aId = aCall && aCall.callId || -1;
- var bId = bCall && bCall.callId || -1;
-
- return aId < bId ? -1 : 1;
- });
- },
-
- log: function () {},
-
- logError: function (label, err) {
- var msg = label + " threw exception: ";
- sinon.log(msg + "[" + err.name + "] " + err.message);
- if (err.stack) { sinon.log(err.stack); }
-
- setTimeout(function () {
- err.message = msg + err.message;
- throw err;
- }, 0);
- },
-
- typeOf: function (value) {
- if (value === null) {
- return "null";
- }
- else if (value === undefined) {
- return "undefined";
- }
- var string = Object.prototype.toString.call(value);
- return string.substring(8, string.length - 1).toLowerCase();
- },
-
- createStubInstance: function (constructor) {
- if (typeof constructor !== "function") {
- throw new TypeError("The constructor should be a function.");
- }
- return sinon.stub(sinon.create(constructor.prototype));
- },
-
- restore: function (object) {
- if (object !== null && typeof object === "object") {
- for (var prop in object) {
- if (isRestorable(object[prop])) {
- object[prop].restore();
- }
- }
- }
- else if (isRestorable(object)) {
- object.restore();
- }
- }
- };
-
- var isNode = typeof module !== "undefined" && module.exports;
- var isAMD = typeof define === 'function' && typeof define.amd === 'object' && define.amd;
-
- if (isAMD) {
- define(function(){
- return sinon;
- });
- } else if (isNode) {
- try {
- formatio = require("formatio");
- } catch (e) {}
- module.exports = sinon;
- module.exports.spy = require("./sinon/spy");
- module.exports.spyCall = require("./sinon/call");
- module.exports.behavior = require("./sinon/behavior");
- module.exports.stub = require("./sinon/stub");
- module.exports.mock = require("./sinon/mock");
- module.exports.collection = require("./sinon/collection");
- module.exports.assert = require("./sinon/assert");
- module.exports.sandbox = require("./sinon/sandbox");
- module.exports.test = require("./sinon/test");
- module.exports.testCase = require("./sinon/test_case");
- module.exports.assert = require("./sinon/assert");
- module.exports.match = require("./sinon/match");
- }
-
- if (formatio) {
- var formatter = formatio.configure({ quoteStrings: false });
- sinon.format = function () {
- return formatter.ascii.apply(formatter, arguments);
- };
- } else if (isNode) {
- try {
- var util = require("util");
- sinon.format = function (value) {
- return typeof value == "object" && value.toString === Object.prototype.toString ? util.inspect(value) : value;
- };
- } catch (e) {
- /* Node, but no util module - would be very old, but better safe than
- sorry */
- }
- }
-
- return sinon;
-}(typeof formatio == "object" && formatio));
-
-/* @depend ../sinon.js */
-/*jslint eqeqeq: false, onevar: false, plusplus: false*/
-/*global module, require, sinon*/
-/**
- * Match functions
- *
- * @author Maximilian Antoni (mail at maxantoni.de)
- * @license BSD
- *
- * Copyright (c) 2012 Maximilian Antoni
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function assertType(value, type, name) {
- var actual = sinon.typeOf(value);
- if (actual !== type) {
- throw new TypeError("Expected type of " + name + " to be " +
- type + ", but was " + actual);
- }
- }
-
- var matcher = {
- toString: function () {
- return this.message;
- }
- };
-
- function isMatcher(object) {
- return matcher.isPrototypeOf(object);
- }
-
- function matchObject(expectation, actual) {
- if (actual === null || actual === undefined) {
- return false;
- }
- for (var key in expectation) {
- if (expectation.hasOwnProperty(key)) {
- var exp = expectation[key];
- var act = actual[key];
- if (match.isMatcher(exp)) {
- if (!exp.test(act)) {
- return false;
- }
- } else if (sinon.typeOf(exp) === "object") {
- if (!matchObject(exp, act)) {
- return false;
- }
- } else if (!sinon.deepEqual(exp, act)) {
- return false;
- }
- }
- }
- return true;
- }
-
- matcher.or = function (m2) {
- if (!arguments.length) {
- throw new TypeError("Matcher expected");
- } else if (!isMatcher(m2)) {
- m2 = match(m2);
- }
- var m1 = this;
- var or = sinon.create(matcher);
- or.test = function (actual) {
- return m1.test(actual) || m2.test(actual);
- };
- or.message = m1.message + ".or(" + m2.message + ")";
- return or;
- };
-
- matcher.and = function (m2) {
- if (!arguments.length) {
- throw new TypeError("Matcher expected");
- } else if (!isMatcher(m2)) {
- m2 = match(m2);
- }
- var m1 = this;
- var and = sinon.create(matcher);
- and.test = function (actual) {
- return m1.test(actual) && m2.test(actual);
- };
- and.message = m1.message + ".and(" + m2.message + ")";
- return and;
- };
-
- var match = function (expectation, message) {
- var m = sinon.create(matcher);
- var type = sinon.typeOf(expectation);
- switch (type) {
- case "object":
- if (typeof expectation.test === "function") {
- m.test = function (actual) {
- return expectation.test(actual) === true;
- };
- m.message = "match(" + sinon.functionName(expectation.test) + ")";
- return m;
- }
- var str = [];
- for (var key in expectation) {
- if (expectation.hasOwnProperty(key)) {
- str.push(key + ": " + expectation[key]);
- }
- }
- m.test = function (actual) {
- return matchObject(expectation, actual);
- };
- m.message = "match(" + str.join(", ") + ")";
- break;
- case "number":
- m.test = function (actual) {
- return expectation == actual;
- };
- break;
- case "string":
- m.test = function (actual) {
- if (typeof actual !== "string") {
- return false;
- }
- return actual.indexOf(expectation) !== -1;
- };
- m.message = "match(\"" + expectation + "\")";
- break;
- case "regexp":
- m.test = function (actual) {
- if (typeof actual !== "string") {
- return false;
- }
- return expectation.test(actual);
- };
- break;
- case "function":
- m.test = expectation;
- if (message) {
- m.message = message;
- } else {
- m.message = "match(" + sinon.functionName(expectation) + ")";
- }
- break;
- default:
- m.test = function (actual) {
- return sinon.deepEqual(expectation, actual);
- };
- }
- if (!m.message) {
- m.message = "match(" + expectation + ")";
- }
- return m;
- };
-
- match.isMatcher = isMatcher;
-
- match.any = match(function () {
- return true;
- }, "any");
-
- match.defined = match(function (actual) {
- return actual !== null && actual !== undefined;
- }, "defined");
-
- match.truthy = match(function (actual) {
- return !!actual;
- }, "truthy");
-
- match.falsy = match(function (actual) {
- return !actual;
- }, "falsy");
-
- match.same = function (expectation) {
- return match(function (actual) {
- return expectation === actual;
- }, "same(" + expectation + ")");
- };
-
- match.typeOf = function (type) {
- assertType(type, "string", "type");
- return match(function (actual) {
- return sinon.typeOf(actual) === type;
- }, "typeOf(\"" + type + "\")");
- };
-
- match.instanceOf = function (type) {
- assertType(type, "function", "type");
- return match(function (actual) {
- return actual instanceof type;
- }, "instanceOf(" + sinon.functionName(type) + ")");
- };
-
- function createPropertyMatcher(propertyTest, messagePrefix) {
- return function (property, value) {
- assertType(property, "string", "property");
- var onlyProperty = arguments.length === 1;
- var message = messagePrefix + "(\"" + property + "\"";
- if (!onlyProperty) {
- message += ", " + value;
- }
- message += ")";
- return match(function (actual) {
- if (actual === undefined || actual === null ||
- !propertyTest(actual, property)) {
- return false;
- }
- return onlyProperty || sinon.deepEqual(value, actual[property]);
- }, message);
- };
- }
-
- match.has = createPropertyMatcher(function (actual, property) {
- if (typeof actual === "object") {
- return property in actual;
- }
- return actual[property] !== undefined;
- }, "has");
-
- match.hasOwn = createPropertyMatcher(function (actual, property) {
- return actual.hasOwnProperty(property);
- }, "hasOwn");
-
- match.bool = match.typeOf("boolean");
- match.number = match.typeOf("number");
- match.string = match.typeOf("string");
- match.object = match.typeOf("object");
- match.func = match.typeOf("function");
- match.array = match.typeOf("array");
- match.regexp = match.typeOf("regexp");
- match.date = match.typeOf("date");
-
- if (commonJSModule) {
- module.exports = match;
- } else {
- sinon.match = match;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/**
- * @depend ../sinon.js
- * @depend match.js
- */
-/*jslint eqeqeq: false, onevar: false, plusplus: false*/
-/*global module, require, sinon*/
-/**
- * Spy calls
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @author Maximilian Antoni (mail at maxantoni.de)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- * Copyright (c) 2013 Maximilian Antoni
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function throwYieldError(proxy, text, args) {
- var msg = sinon.functionName(proxy) + text;
- if (args.length) {
- msg += " Received [" + slice.call(args).join(", ") + "]";
- }
- throw new Error(msg);
- }
-
- var slice = Array.prototype.slice;
-
- var callProto = {
- calledOn: function calledOn(thisValue) {
- if (sinon.match && sinon.match.isMatcher(thisValue)) {
- return thisValue.test(this.thisValue);
- }
- return this.thisValue === thisValue;
- },
-
- calledWith: function calledWith() {
- for (var i = 0, l = arguments.length; i < l; i += 1) {
- if (!sinon.deepEqual(arguments[i], this.args[i])) {
- return false;
- }
- }
-
- return true;
- },
-
- calledWithMatch: function calledWithMatch() {
- for (var i = 0, l = arguments.length; i < l; i += 1) {
- var actual = this.args[i];
- var expectation = arguments[i];
- if (!sinon.match || !sinon.match(expectation).test(actual)) {
- return false;
- }
- }
- return true;
- },
-
- calledWithExactly: function calledWithExactly() {
- return arguments.length == this.args.length &&
- this.calledWith.apply(this, arguments);
- },
-
- notCalledWith: function notCalledWith() {
- return !this.calledWith.apply(this, arguments);
- },
-
- notCalledWithMatch: function notCalledWithMatch() {
- return !this.calledWithMatch.apply(this, arguments);
- },
-
- returned: function returned(value) {
- return sinon.deepEqual(value, this.returnValue);
- },
-
- threw: function threw(error) {
- if (typeof error === "undefined" || !this.exception) {
- return !!this.exception;
- }
-
- return this.exception === error || this.exception.name === error;
- },
-
- calledWithNew: function calledWithNew() {
- return this.proxy.prototype && this.thisValue instanceof this.proxy;
- },
-
- calledBefore: function (other) {
- return this.callId < other.callId;
- },
-
- calledAfter: function (other) {
- return this.callId > other.callId;
- },
-
- callArg: function (pos) {
- this.args[pos]();
- },
-
- callArgOn: function (pos, thisValue) {
- this.args[pos].apply(thisValue);
- },
-
- callArgWith: function (pos) {
- this.callArgOnWith.apply(this, [pos, null].concat(slice.call(arguments, 1)));
- },
-
- callArgOnWith: function (pos, thisValue) {
- var args = slice.call(arguments, 2);
- this.args[pos].apply(thisValue, args);
- },
-
- "yield": function () {
- this.yieldOn.apply(this, [null].concat(slice.call(arguments, 0)));
- },
-
- yieldOn: function (thisValue) {
- var args = this.args;
- for (var i = 0, l = args.length; i < l; ++i) {
- if (typeof args[i] === "function") {
- args[i].apply(thisValue, slice.call(arguments, 1));
- return;
- }
- }
- throwYieldError(this.proxy, " cannot yield since no callback was passed.", args);
- },
-
- yieldTo: function (prop) {
- this.yieldToOn.apply(this, [prop, null].concat(slice.call(arguments, 1)));
- },
-
- yieldToOn: function (prop, thisValue) {
- var args = this.args;
- for (var i = 0, l = args.length; i < l; ++i) {
- if (args[i] && typeof args[i][prop] === "function") {
- args[i][prop].apply(thisValue, slice.call(arguments, 2));
- return;
- }
- }
- throwYieldError(this.proxy, " cannot yield to '" + prop +
- "' since no callback was passed.", args);
- },
-
- toString: function () {
- var callStr = this.proxy.toString() + "(";
- var args = [];
-
- for (var i = 0, l = this.args.length; i < l; ++i) {
- args.push(sinon.format(this.args[i]));
- }
-
- callStr = callStr + args.join(", ") + ")";
-
- if (typeof this.returnValue != "undefined") {
- callStr += " => " + sinon.format(this.returnValue);
- }
-
- if (this.exception) {
- callStr += " !" + this.exception.name;
-
- if (this.exception.message) {
- callStr += "(" + this.exception.message + ")";
- }
- }
-
- return callStr;
- }
- };
-
- callProto.invokeCallback = callProto.yield;
-
- function createSpyCall(spy, thisValue, args, returnValue, exception, id) {
- if (typeof id !== "number") {
- throw new TypeError("Call id is not a number");
- }
- var proxyCall = sinon.create(callProto);
- proxyCall.proxy = spy;
- proxyCall.thisValue = thisValue;
- proxyCall.args = args;
- proxyCall.returnValue = returnValue;
- proxyCall.exception = exception;
- proxyCall.callId = id;
-
- return proxyCall;
- }
- createSpyCall.toString = callProto.toString; // used by mocks
-
- if (commonJSModule) {
- module.exports = createSpyCall;
- } else {
- sinon.spyCall = createSpyCall;
- }
-}(typeof sinon == "object" && sinon || null));
-
-
-/**
- * @depend ../sinon.js
- * @depend call.js
- */
-/*jslint eqeqeq: false, onevar: false, plusplus: false*/
-/*global module, require, sinon*/
-/**
- * Spy functions
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
- var push = Array.prototype.push;
- var slice = Array.prototype.slice;
- var callId = 0;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function spy(object, property) {
- if (!property && typeof object == "function") {
- return spy.create(object);
- }
-
- if (!object && !property) {
- return spy.create(function () { });
- }
-
- var method = object[property];
- return sinon.wrapMethod(object, property, spy.create(method));
- }
-
- function matchingFake(fakes, args, strict) {
- if (!fakes) {
- return;
- }
-
- for (var i = 0, l = fakes.length; i < l; i++) {
- if (fakes[i].matches(args, strict)) {
- return fakes[i];
- }
- }
- }
-
- function incrementCallCount() {
- this.called = true;
- this.callCount += 1;
- this.notCalled = false;
- this.calledOnce = this.callCount == 1;
- this.calledTwice = this.callCount == 2;
- this.calledThrice = this.callCount == 3;
- }
-
- function createCallProperties() {
- this.firstCall = this.getCall(0);
- this.secondCall = this.getCall(1);
- this.thirdCall = this.getCall(2);
- this.lastCall = this.getCall(this.callCount - 1);
- }
-
- var vars = "a,b,c,d,e,f,g,h,i,j,k,l";
- function createProxy(func) {
- // Retain the function length:
- var p;
- if (func.length) {
- eval("p = (function proxy(" + vars.substring(0, func.length * 2 - 1) +
- ") { return p.invoke(func, this, slice.call(arguments)); });");
- }
- else {
- p = function proxy() {
- return p.invoke(func, this, slice.call(arguments));
- };
- }
- return p;
- }
-
- var uuid = 0;
-
- // Public API
- var spyApi = {
- reset: function () {
- this.called = false;
- this.notCalled = true;
- this.calledOnce = false;
- this.calledTwice = false;
- this.calledThrice = false;
- this.callCount = 0;
- this.firstCall = null;
- this.secondCall = null;
- this.thirdCall = null;
- this.lastCall = null;
- this.args = [];
- this.returnValues = [];
- this.thisValues = [];
- this.exceptions = [];
- this.callIds = [];
- if (this.fakes) {
- for (var i = 0; i < this.fakes.length; i++) {
- this.fakes[i].reset();
- }
- }
- },
-
- create: function create(func) {
- var name;
-
- if (typeof func != "function") {
- func = function () { };
- } else {
- name = sinon.functionName(func);
- }
-
- var proxy = createProxy(func);
-
- sinon.extend(proxy, spy);
- delete proxy.create;
- sinon.extend(proxy, func);
-
- proxy.reset();
- proxy.prototype = func.prototype;
- proxy.displayName = name || "spy";
- proxy.toString = sinon.functionToString;
- proxy._create = sinon.spy.create;
- proxy.id = "spy#" + uuid++;
-
- return proxy;
- },
-
- invoke: function invoke(func, thisValue, args) {
- var matching = matchingFake(this.fakes, args);
- var exception, returnValue;
-
- incrementCallCount.call(this);
- push.call(this.thisValues, thisValue);
- push.call(this.args, args);
- push.call(this.callIds, callId++);
-
- try {
- if (matching) {
- returnValue = matching.invoke(func, thisValue, args);
- } else {
- returnValue = (this.func || func).apply(thisValue, args);
- }
-
- var thisCall = this.getCall(this.callCount - 1);
- if (thisCall.calledWithNew() && typeof returnValue !== 'object') {
- returnValue = thisValue;
- }
- } catch (e) {
- exception = e;
- }
-
- push.call(this.exceptions, exception);
- push.call(this.returnValues, returnValue);
-
- createCallProperties.call(this);
-
- if (exception !== undefined) {
- throw exception;
- }
-
- return returnValue;
- },
-
- getCall: function getCall(i) {
- if (i < 0 || i >= this.callCount) {
- return null;
- }
-
- return sinon.spyCall(this, this.thisValues[i], this.args[i],
- this.returnValues[i], this.exceptions[i],
- this.callIds[i]);
- },
-
- getCalls: function () {
- var calls = [];
- var i;
-
- for (i = 0; i < this.callCount; i++) {
- calls.push(this.getCall(i));
- }
-
- return calls;
- },
-
- calledBefore: function calledBefore(spyFn) {
- if (!this.called) {
- return false;
- }
-
- if (!spyFn.called) {
- return true;
- }
-
- return this.callIds[0] < spyFn.callIds[spyFn.callIds.length - 1];
- },
-
- calledAfter: function calledAfter(spyFn) {
- if (!this.called || !spyFn.called) {
- return false;
- }
-
- return this.callIds[this.callCount - 1] > spyFn.callIds[spyFn.callCount - 1];
- },
-
- withArgs: function () {
- var args = slice.call(arguments);
-
- if (this.fakes) {
- var match = matchingFake(this.fakes, args, true);
-
- if (match) {
- return match;
- }
- } else {
- this.fakes = [];
- }
-
- var original = this;
- var fake = this._create();
- fake.matchingArguments = args;
- fake.parent = this;
- push.call(this.fakes, fake);
-
- fake.withArgs = function () {
- return original.withArgs.apply(original, arguments);
- };
-
- for (var i = 0; i < this.args.length; i++) {
- if (fake.matches(this.args[i])) {
- incrementCallCount.call(fake);
- push.call(fake.thisValues, this.thisValues[i]);
- push.call(fake.args, this.args[i]);
- push.call(fake.returnValues, this.returnValues[i]);
- push.call(fake.exceptions, this.exceptions[i]);
- push.call(fake.callIds, this.callIds[i]);
- }
- }
- createCallProperties.call(fake);
-
- return fake;
- },
-
- matches: function (args, strict) {
- var margs = this.matchingArguments;
-
- if (margs.length <= args.length &&
- sinon.deepEqual(margs, args.slice(0, margs.length))) {
- return !strict || margs.length == args.length;
- }
- },
-
- printf: function (format) {
- var spy = this;
- var args = slice.call(arguments, 1);
- var formatter;
-
- return (format || "").replace(/%(.)/g, function (match, specifier) {
- formatter = spyApi.formatters[specifier];
-
- if (typeof formatter == "function") {
- return formatter.call(null, spy, args);
- } else if (!isNaN(parseInt(specifier, 10))) {
- return sinon.format(args[specifier - 1]);
- }
-
- return "%" + specifier;
- });
- }
- };
-
- function delegateToCalls(method, matchAny, actual, notCalled) {
- spyApi[method] = function () {
- if (!this.called) {
- if (notCalled) {
- return notCalled.apply(this, arguments);
- }
- return false;
- }
-
- var currentCall;
- var matches = 0;
-
- for (var i = 0, l = this.callCount; i < l; i += 1) {
- currentCall = this.getCall(i);
-
- if (currentCall[actual || method].apply(currentCall, arguments)) {
- matches += 1;
-
- if (matchAny) {
- return true;
- }
- }
- }
-
- return matches === this.callCount;
- };
- }
-
- delegateToCalls("calledOn", true);
- delegateToCalls("alwaysCalledOn", false, "calledOn");
- delegateToCalls("calledWith", true);
- delegateToCalls("calledWithMatch", true);
- delegateToCalls("alwaysCalledWith", false, "calledWith");
- delegateToCalls("alwaysCalledWithMatch", false, "calledWithMatch");
- delegateToCalls("calledWithExactly", true);
- delegateToCalls("alwaysCalledWithExactly", false, "calledWithExactly");
- delegateToCalls("neverCalledWith", false, "notCalledWith",
- function () { return true; });
- delegateToCalls("neverCalledWithMatch", false, "notCalledWithMatch",
- function () { return true; });
- delegateToCalls("threw", true);
- delegateToCalls("alwaysThrew", false, "threw");
- delegateToCalls("returned", true);
- delegateToCalls("alwaysReturned", false, "returned");
- delegateToCalls("calledWithNew", true);
- delegateToCalls("alwaysCalledWithNew", false, "calledWithNew");
- delegateToCalls("callArg", false, "callArgWith", function () {
- throw new Error(this.toString() + " cannot call arg since it was not yet invoked.");
- });
- spyApi.callArgWith = spyApi.callArg;
- delegateToCalls("callArgOn", false, "callArgOnWith", function () {
- throw new Error(this.toString() + " cannot call arg since it was not yet invoked.");
- });
- spyApi.callArgOnWith = spyApi.callArgOn;
- delegateToCalls("yield", false, "yield", function () {
- throw new Error(this.toString() + " cannot yield since it was not yet invoked.");
- });
- // "invokeCallback" is an alias for "yield" since "yield" is invalid in strict mode.
- spyApi.invokeCallback = spyApi.yield;
- delegateToCalls("yieldOn", false, "yieldOn", function () {
- throw new Error(this.toString() + " cannot yield since it was not yet invoked.");
- });
- delegateToCalls("yieldTo", false, "yieldTo", function (property) {
- throw new Error(this.toString() + " cannot yield to '" + property +
- "' since it was not yet invoked.");
- });
- delegateToCalls("yieldToOn", false, "yieldToOn", function (property) {
- throw new Error(this.toString() + " cannot yield to '" + property +
- "' since it was not yet invoked.");
- });
-
- spyApi.formatters = {
- "c": function (spy) {
- return sinon.timesInWords(spy.callCount);
- },
-
- "n": function (spy) {
- return spy.toString();
- },
-
- "C": function (spy) {
- var calls = [];
-
- for (var i = 0, l = spy.callCount; i < l; ++i) {
- var stringifiedCall = " " + spy.getCall(i).toString();
- if (/\n/.test(calls[i - 1])) {
- stringifiedCall = "\n" + stringifiedCall;
- }
- push.call(calls, stringifiedCall);
- }
-
- return calls.length > 0 ? "\n" + calls.join("\n") : "";
- },
-
- "t": function (spy) {
- var objects = [];
-
- for (var i = 0, l = spy.callCount; i < l; ++i) {
- push.call(objects, sinon.format(spy.thisValues[i]));
- }
-
- return objects.join(", ");
- },
-
- "*": function (spy, args) {
- var formatted = [];
-
- for (var i = 0, l = args.length; i < l; ++i) {
- push.call(formatted, sinon.format(args[i]));
- }
-
- return formatted.join(", ");
- }
- };
-
- sinon.extend(spy, spyApi);
-
- spy.spyCall = sinon.spyCall;
-
- if (commonJSModule) {
- module.exports = spy;
- } else {
- sinon.spy = spy;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/**
- * @depend ../sinon.js
- */
-/*jslint eqeqeq: false, onevar: false*/
-/*global module, require, sinon, process, setImmediate, setTimeout*/
-/**
- * Stub behavior
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @author Tim Fischbach (mail at timfischbach.de)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- var slice = Array.prototype.slice;
- var join = Array.prototype.join;
- var proto;
-
- var nextTick = (function () {
- if (typeof process === "object" && typeof process.nextTick === "function") {
- return process.nextTick;
- } else if (typeof setImmediate === "function") {
- return setImmediate;
- } else {
- return function (callback) {
- setTimeout(callback, 0);
- };
- }
- })();
-
- function throwsException(error, message) {
- if (typeof error == "string") {
- this.exception = new Error(message || "");
- this.exception.name = error;
- } else if (!error) {
- this.exception = new Error("Error");
- } else {
- this.exception = error;
- }
-
- return this;
- }
-
- function getCallback(behavior, args) {
- var callArgAt = behavior.callArgAt;
-
- if (callArgAt < 0) {
- var callArgProp = behavior.callArgProp;
-
- for (var i = 0, l = args.length; i < l; ++i) {
- if (!callArgProp && typeof args[i] == "function") {
- return args[i];
- }
-
- if (callArgProp && args[i] &&
- typeof args[i][callArgProp] == "function") {
- return args[i][callArgProp];
- }
- }
-
- return null;
- }
-
- return args[callArgAt];
- }
-
- function getCallbackError(behavior, func, args) {
- if (behavior.callArgAt < 0) {
- var msg;
-
- if (behavior.callArgProp) {
- msg = sinon.functionName(behavior.stub) +
- " expected to yield to '" + behavior.callArgProp +
- "', but no object with such a property was passed.";
- } else {
- msg = sinon.functionName(behavior.stub) +
- " expected to yield, but no callback was passed.";
- }
-
- if (args.length > 0) {
- msg += " Received [" + join.call(args, ", ") + "]";
- }
-
- return msg;
- }
-
- return "argument at index " + behavior.callArgAt + " is not a function: " + func;
- }
-
- function callCallback(behavior, args) {
- if (typeof behavior.callArgAt == "number") {
- var func = getCallback(behavior, args);
-
- if (typeof func != "function") {
- throw new TypeError(getCallbackError(behavior, func, args));
- }
-
- if (behavior.callbackAsync) {
- nextTick(function() {
- func.apply(behavior.callbackContext, behavior.callbackArguments);
- });
- } else {
- func.apply(behavior.callbackContext, behavior.callbackArguments);
- }
- }
- }
-
- proto = {
- create: function(stub) {
- var behavior = sinon.extend({}, sinon.behavior);
- delete behavior.create;
- behavior.stub = stub;
-
- return behavior;
- },
-
- isPresent: function() {
- return (typeof this.callArgAt == 'number' ||
- this.exception ||
- typeof this.returnArgAt == 'number' ||
- this.returnThis ||
- this.returnValueDefined);
- },
-
- invoke: function(context, args) {
- callCallback(this, args);
-
- if (this.exception) {
- throw this.exception;
- } else if (typeof this.returnArgAt == 'number') {
- return args[this.returnArgAt];
- } else if (this.returnThis) {
- return context;
- }
-
- return this.returnValue;
- },
-
- onCall: function(index) {
- return this.stub.onCall(index);
- },
-
- onFirstCall: function() {
- return this.stub.onFirstCall();
- },
-
- onSecondCall: function() {
- return this.stub.onSecondCall();
- },
-
- onThirdCall: function() {
- return this.stub.onThirdCall();
- },
-
- withArgs: function(/* arguments */) {
- throw new Error('Defining a stub by invoking "stub.onCall(...).withArgs(...)" is not supported. ' +
- 'Use "stub.withArgs(...).onCall(...)" to define sequential behavior for calls with certain arguments.');
- },
-
- callsArg: function callsArg(pos) {
- if (typeof pos != "number") {
- throw new TypeError("argument index is not number");
- }
-
- this.callArgAt = pos;
- this.callbackArguments = [];
- this.callbackContext = undefined;
- this.callArgProp = undefined;
- this.callbackAsync = false;
-
- return this;
- },
-
- callsArgOn: function callsArgOn(pos, context) {
- if (typeof pos != "number") {
- throw new TypeError("argument index is not number");
- }
- if (typeof context != "object") {
- throw new TypeError("argument context is not an object");
- }
-
- this.callArgAt = pos;
- this.callbackArguments = [];
- this.callbackContext = context;
- this.callArgProp = undefined;
- this.callbackAsync = false;
-
- return this;
- },
-
- callsArgWith: function callsArgWith(pos) {
- if (typeof pos != "number") {
- throw new TypeError("argument index is not number");
- }
-
- this.callArgAt = pos;
- this.callbackArguments = slice.call(arguments, 1);
- this.callbackContext = undefined;
- this.callArgProp = undefined;
- this.callbackAsync = false;
-
- return this;
- },
-
- callsArgOnWith: function callsArgWith(pos, context) {
- if (typeof pos != "number") {
- throw new TypeError("argument index is not number");
- }
- if (typeof context != "object") {
- throw new TypeError("argument context is not an object");
- }
-
- this.callArgAt = pos;
- this.callbackArguments = slice.call(arguments, 2);
- this.callbackContext = context;
- this.callArgProp = undefined;
- this.callbackAsync = false;
-
- return this;
- },
-
- yields: function () {
- this.callArgAt = -1;
- this.callbackArguments = slice.call(arguments, 0);
- this.callbackContext = undefined;
- this.callArgProp = undefined;
- this.callbackAsync = false;
-
- return this;
- },
-
- yieldsOn: function (context) {
- if (typeof context != "object") {
- throw new TypeError("argument context is not an object");
- }
-
- this.callArgAt = -1;
- this.callbackArguments = slice.call(arguments, 1);
- this.callbackContext = context;
- this.callArgProp = undefined;
- this.callbackAsync = false;
-
- return this;
- },
-
- yieldsTo: function (prop) {
- this.callArgAt = -1;
- this.callbackArguments = slice.call(arguments, 1);
- this.callbackContext = undefined;
- this.callArgProp = prop;
- this.callbackAsync = false;
-
- return this;
- },
-
- yieldsToOn: function (prop, context) {
- if (typeof context != "object") {
- throw new TypeError("argument context is not an object");
- }
-
- this.callArgAt = -1;
- this.callbackArguments = slice.call(arguments, 2);
- this.callbackContext = context;
- this.callArgProp = prop;
- this.callbackAsync = false;
-
- return this;
- },
-
-
- "throws": throwsException,
- throwsException: throwsException,
-
- returns: function returns(value) {
- this.returnValue = value;
- this.returnValueDefined = true;
-
- return this;
- },
-
- returnsArg: function returnsArg(pos) {
- if (typeof pos != "number") {
- throw new TypeError("argument index is not number");
- }
-
- this.returnArgAt = pos;
-
- return this;
- },
-
- returnsThis: function returnsThis() {
- this.returnThis = true;
-
- return this;
- }
- };
-
- // create asynchronous versions of callsArg* and yields* methods
- for (var method in proto) {
- // need to avoid creating anotherasync versions of the newly added async methods
- if (proto.hasOwnProperty(method) &&
- method.match(/^(callsArg|yields)/) &&
- !method.match(/Async/)) {
- proto[method + 'Async'] = (function (syncFnName) {
- return function () {
- var result = this[syncFnName].apply(this, arguments);
- this.callbackAsync = true;
- return result;
- };
- })(method);
- }
- }
-
- if (commonJSModule) {
- module.exports = proto;
- } else {
- sinon.behavior = proto;
- }
-}(typeof sinon == "object" && sinon || null));
-/**
- * @depend ../sinon.js
- * @depend spy.js
- * @depend behavior.js
- */
-/*jslint eqeqeq: false, onevar: false*/
-/*global module, require, sinon*/
-/**
- * Stub functions
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function stub(object, property, func) {
- if (!!func && typeof func != "function") {
- throw new TypeError("Custom stub should be function");
- }
-
- var wrapper;
-
- if (func) {
- wrapper = sinon.spy && sinon.spy.create ? sinon.spy.create(func) : func;
- } else {
- wrapper = stub.create();
- }
-
- if (!object && typeof property === "undefined") {
- return sinon.stub.create();
- }
-
- if (typeof property === "undefined" && typeof object == "object") {
- for (var prop in object) {
- if (typeof object[prop] === "function") {
- stub(object, prop);
- }
- }
-
- return object;
- }
-
- return sinon.wrapMethod(object, property, wrapper);
- }
-
- function getDefaultBehavior(stub) {
- return stub.defaultBehavior || getParentBehaviour(stub) || sinon.behavior.create(stub);
- }
-
- function getParentBehaviour(stub) {
- return (stub.parent && getCurrentBehavior(stub.parent));
- }
-
- function getCurrentBehavior(stub) {
- var behavior = stub.behaviors[stub.callCount - 1];
- return behavior && behavior.isPresent() ? behavior : getDefaultBehavior(stub);
- }
-
- var uuid = 0;
-
- sinon.extend(stub, (function () {
- var proto = {
- create: function create() {
- var functionStub = function () {
- return getCurrentBehavior(functionStub).invoke(this, arguments);
- };
-
- functionStub.id = "stub#" + uuid++;
- var orig = functionStub;
- functionStub = sinon.spy.create(functionStub);
- functionStub.func = orig;
-
- sinon.extend(functionStub, stub);
- functionStub._create = sinon.stub.create;
- functionStub.displayName = "stub";
- functionStub.toString = sinon.functionToString;
-
- functionStub.defaultBehavior = null;
- functionStub.behaviors = [];
-
- return functionStub;
- },
-
- resetBehavior: function () {
- var i;
-
- this.defaultBehavior = null;
- this.behaviors = [];
-
- delete this.returnValue;
- delete this.returnArgAt;
- this.returnThis = false;
-
- if (this.fakes) {
- for (i = 0; i < this.fakes.length; i++) {
- this.fakes[i].resetBehavior();
- }
- }
- },
-
- onCall: function(index) {
- if (!this.behaviors[index]) {
- this.behaviors[index] = sinon.behavior.create(this);
- }
-
- return this.behaviors[index];
- },
-
- onFirstCall: function() {
- return this.onCall(0);
- },
-
- onSecondCall: function() {
- return this.onCall(1);
- },
-
- onThirdCall: function() {
- return this.onCall(2);
- }
- };
-
- for (var method in sinon.behavior) {
- if (sinon.behavior.hasOwnProperty(method) &&
- !proto.hasOwnProperty(method) &&
- method != 'create' &&
- method != 'withArgs' &&
- method != 'invoke') {
- proto[method] = (function(behaviorMethod) {
- return function() {
- this.defaultBehavior = this.defaultBehavior || sinon.behavior.create(this);
- this.defaultBehavior[behaviorMethod].apply(this.defaultBehavior, arguments);
- return this;
- };
- }(method));
- }
- }
-
- return proto;
- }()));
-
- if (commonJSModule) {
- module.exports = stub;
- } else {
- sinon.stub = stub;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/**
- * @depend ../sinon.js
- * @depend stub.js
- */
-/*jslint eqeqeq: false, onevar: false, nomen: false*/
-/*global module, require, sinon*/
-/**
- * Mock functions.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
- var push = [].push;
- var match;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- match = sinon.match;
-
- if (!match && commonJSModule) {
- match = require("./match");
- }
-
- function mock(object) {
- if (!object) {
- return sinon.expectation.create("Anonymous mock");
- }
-
- return mock.create(object);
- }
-
- sinon.mock = mock;
-
- sinon.extend(mock, (function () {
- function each(collection, callback) {
- if (!collection) {
- return;
- }
-
- for (var i = 0, l = collection.length; i < l; i += 1) {
- callback(collection[i]);
- }
- }
-
- return {
- create: function create(object) {
- if (!object) {
- throw new TypeError("object is null");
- }
-
- var mockObject = sinon.extend({}, mock);
- mockObject.object = object;
- delete mockObject.create;
-
- return mockObject;
- },
-
- expects: function expects(method) {
- if (!method) {
- throw new TypeError("method is falsy");
- }
-
- if (!this.expectations) {
- this.expectations = {};
- this.proxies = [];
- }
-
- if (!this.expectations[method]) {
- this.expectations[method] = [];
- var mockObject = this;
-
- sinon.wrapMethod(this.object, method, function () {
- return mockObject.invokeMethod(method, this, arguments);
- });
-
- push.call(this.proxies, method);
- }
-
- var expectation = sinon.expectation.create(method);
- push.call(this.expectations[method], expectation);
-
- return expectation;
- },
-
- restore: function restore() {
- var object = this.object;
-
- each(this.proxies, function (proxy) {
- if (typeof object[proxy].restore == "function") {
- object[proxy].restore();
- }
- });
- },
-
- verify: function verify() {
- var expectations = this.expectations || {};
- var messages = [], met = [];
-
- each(this.proxies, function (proxy) {
- each(expectations[proxy], function (expectation) {
- if (!expectation.met()) {
- push.call(messages, expectation.toString());
- } else {
- push.call(met, expectation.toString());
- }
- });
- });
-
- this.restore();
-
- if (messages.length > 0) {
- sinon.expectation.fail(messages.concat(met).join("\n"));
- } else {
- sinon.expectation.pass(messages.concat(met).join("\n"));
- }
-
- return true;
- },
-
- invokeMethod: function invokeMethod(method, thisValue, args) {
- var expectations = this.expectations && this.expectations[method];
- var length = expectations && expectations.length || 0, i;
-
- for (i = 0; i < length; i += 1) {
- if (!expectations[i].met() &&
- expectations[i].allowsCall(thisValue, args)) {
- return expectations[i].apply(thisValue, args);
- }
- }
-
- var messages = [], available, exhausted = 0;
-
- for (i = 0; i < length; i += 1) {
- if (expectations[i].allowsCall(thisValue, args)) {
- available = available || expectations[i];
- } else {
- exhausted += 1;
- }
- push.call(messages, " " + expectations[i].toString());
- }
-
- if (exhausted === 0) {
- return available.apply(thisValue, args);
- }
-
- messages.unshift("Unexpected call: " + sinon.spyCall.toString.call({
- proxy: method,
- args: args
- }));
-
- sinon.expectation.fail(messages.join("\n"));
- }
- };
- }()));
-
- var times = sinon.timesInWords;
-
- sinon.expectation = (function () {
- var slice = Array.prototype.slice;
- var _invoke = sinon.spy.invoke;
-
- function callCountInWords(callCount) {
- if (callCount == 0) {
- return "never called";
- } else {
- return "called " + times(callCount);
- }
- }
-
- function expectedCallCountInWords(expectation) {
- var min = expectation.minCalls;
- var max = expectation.maxCalls;
-
- if (typeof min == "number" && typeof max == "number") {
- var str = times(min);
-
- if (min != max) {
- str = "at least " + str + " and at most " + times(max);
- }
-
- return str;
- }
-
- if (typeof min == "number") {
- return "at least " + times(min);
- }
-
- return "at most " + times(max);
- }
-
- function receivedMinCalls(expectation) {
- var hasMinLimit = typeof expectation.minCalls == "number";
- return !hasMinLimit || expectation.callCount >= expectation.minCalls;
- }
-
- function receivedMaxCalls(expectation) {
- if (typeof expectation.maxCalls != "number") {
- return false;
- }
-
- return expectation.callCount == expectation.maxCalls;
- }
-
- function verifyMatcher(possibleMatcher, arg){
- if (match && match.isMatcher(possibleMatcher)) {
- return possibleMatcher.test(arg);
- } else {
- return true;
- }
- }
-
- return {
- minCalls: 1,
- maxCalls: 1,
-
- create: function create(methodName) {
- var expectation = sinon.extend(sinon.stub.create(), sinon.expectation);
- delete expectation.create;
- expectation.method = methodName;
-
- return expectation;
- },
-
- invoke: function invoke(func, thisValue, args) {
- this.verifyCallAllowed(thisValue, args);
-
- return _invoke.apply(this, arguments);
- },
-
- atLeast: function atLeast(num) {
- if (typeof num != "number") {
- throw new TypeError("'" + num + "' is not number");
- }
-
- if (!this.limitsSet) {
- this.maxCalls = null;
- this.limitsSet = true;
- }
-
- this.minCalls = num;
-
- return this;
- },
-
- atMost: function atMost(num) {
- if (typeof num != "number") {
- throw new TypeError("'" + num + "' is not number");
- }
-
- if (!this.limitsSet) {
- this.minCalls = null;
- this.limitsSet = true;
- }
-
- this.maxCalls = num;
-
- return this;
- },
-
- never: function never() {
- return this.exactly(0);
- },
-
- once: function once() {
- return this.exactly(1);
- },
-
- twice: function twice() {
- return this.exactly(2);
- },
-
- thrice: function thrice() {
- return this.exactly(3);
- },
-
- exactly: function exactly(num) {
- if (typeof num != "number") {
- throw new TypeError("'" + num + "' is not a number");
- }
-
- this.atLeast(num);
- return this.atMost(num);
- },
-
- met: function met() {
- return !this.failed && receivedMinCalls(this);
- },
-
- verifyCallAllowed: function verifyCallAllowed(thisValue, args) {
- if (receivedMaxCalls(this)) {
- this.failed = true;
- sinon.expectation.fail(this.method + " already called " + times(this.maxCalls));
- }
-
- if ("expectedThis" in this && this.expectedThis !== thisValue) {
- sinon.expectation.fail(this.method + " called with " + thisValue + " as thisValue, expected " +
- this.expectedThis);
- }
-
- if (!("expectedArguments" in this)) {
- return;
- }
-
- if (!args) {
- sinon.expectation.fail(this.method + " received no arguments, expected " +
- sinon.format(this.expectedArguments));
- }
-
- if (args.length < this.expectedArguments.length) {
- sinon.expectation.fail(this.method + " received too few arguments (" + sinon.format(args) +
- "), expected " + sinon.format(this.expectedArguments));
- }
-
- if (this.expectsExactArgCount &&
- args.length != this.expectedArguments.length) {
- sinon.expectation.fail(this.method + " received too many arguments (" + sinon.format(args) +
- "), expected " + sinon.format(this.expectedArguments));
- }
-
- for (var i = 0, l = this.expectedArguments.length; i < l; i += 1) {
-
- if (!verifyMatcher(this.expectedArguments[i],args[i])) {
- sinon.expectation.fail(this.method + " received wrong arguments " + sinon.format(args) +
- ", didn't match " + this.expectedArguments.toString());
- }
-
- if (!sinon.deepEqual(this.expectedArguments[i], args[i])) {
- sinon.expectation.fail(this.method + " received wrong arguments " + sinon.format(args) +
- ", expected " + sinon.format(this.expectedArguments));
- }
- }
- },
-
- allowsCall: function allowsCall(thisValue, args) {
- if (this.met() && receivedMaxCalls(this)) {
- return false;
- }
-
- if ("expectedThis" in this && this.expectedThis !== thisValue) {
- return false;
- }
-
- if (!("expectedArguments" in this)) {
- return true;
- }
-
- args = args || [];
-
- if (args.length < this.expectedArguments.length) {
- return false;
- }
-
- if (this.expectsExactArgCount &&
- args.length != this.expectedArguments.length) {
- return false;
- }
-
- for (var i = 0, l = this.expectedArguments.length; i < l; i += 1) {
- if (!verifyMatcher(this.expectedArguments[i],args[i])) {
- return false;
- }
-
- if (!sinon.deepEqual(this.expectedArguments[i], args[i])) {
- return false;
- }
- }
-
- return true;
- },
-
- withArgs: function withArgs() {
- this.expectedArguments = slice.call(arguments);
- return this;
- },
-
- withExactArgs: function withExactArgs() {
- this.withArgs.apply(this, arguments);
- this.expectsExactArgCount = true;
- return this;
- },
-
- on: function on(thisValue) {
- this.expectedThis = thisValue;
- return this;
- },
-
- toString: function () {
- var args = (this.expectedArguments || []).slice();
-
- if (!this.expectsExactArgCount) {
- push.call(args, "[...]");
- }
-
- var callStr = sinon.spyCall.toString.call({
- proxy: this.method || "anonymous mock expectation",
- args: args
- });
-
- var message = callStr.replace(", [...", "[, ...") + " " +
- expectedCallCountInWords(this);
-
- if (this.met()) {
- return "Expectation met: " + message;
- }
-
- return "Expected " + message + " (" +
- callCountInWords(this.callCount) + ")";
- },
-
- verify: function verify() {
- if (!this.met()) {
- sinon.expectation.fail(this.toString());
- } else {
- sinon.expectation.pass(this.toString());
- }
-
- return true;
- },
-
- pass: function(message) {
- sinon.assert.pass(message);
- },
- fail: function (message) {
- var exception = new Error(message);
- exception.name = "ExpectationError";
-
- throw exception;
- }
- };
- }());
-
- if (commonJSModule) {
- module.exports = mock;
- } else {
- sinon.mock = mock;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/**
- * @depend ../sinon.js
- * @depend stub.js
- * @depend mock.js
- */
-/*jslint eqeqeq: false, onevar: false, forin: true*/
-/*global module, require, sinon*/
-/**
- * Collections of stubs, spies and mocks.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
- var push = [].push;
- var hasOwnProperty = Object.prototype.hasOwnProperty;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function getFakes(fakeCollection) {
- if (!fakeCollection.fakes) {
- fakeCollection.fakes = [];
- }
-
- return fakeCollection.fakes;
- }
-
- function each(fakeCollection, method) {
- var fakes = getFakes(fakeCollection);
-
- for (var i = 0, l = fakes.length; i < l; i += 1) {
- if (typeof fakes[i][method] == "function") {
- fakes[i][method]();
- }
- }
- }
-
- function compact(fakeCollection) {
- var fakes = getFakes(fakeCollection);
- var i = 0;
- while (i < fakes.length) {
- fakes.splice(i, 1);
- }
- }
-
- var collection = {
- verify: function resolve() {
- each(this, "verify");
- },
-
- restore: function restore() {
- each(this, "restore");
- compact(this);
- },
-
- verifyAndRestore: function verifyAndRestore() {
- var exception;
-
- try {
- this.verify();
- } catch (e) {
- exception = e;
- }
-
- this.restore();
-
- if (exception) {
- throw exception;
- }
- },
-
- add: function add(fake) {
- push.call(getFakes(this), fake);
- return fake;
- },
-
- spy: function spy() {
- return this.add(sinon.spy.apply(sinon, arguments));
- },
-
- stub: function stub(object, property, value) {
- if (property) {
- var original = object[property];
-
- if (typeof original != "function") {
- if (!hasOwnProperty.call(object, property)) {
- throw new TypeError("Cannot stub non-existent own property " + property);
- }
-
- object[property] = value;
-
- return this.add({
- restore: function () {
- object[property] = original;
- }
- });
- }
- }
- if (!property && !!object && typeof object == "object") {
- var stubbedObj = sinon.stub.apply(sinon, arguments);
-
- for (var prop in stubbedObj) {
- if (typeof stubbedObj[prop] === "function") {
- this.add(stubbedObj[prop]);
- }
- }
-
- return stubbedObj;
- }
-
- return this.add(sinon.stub.apply(sinon, arguments));
- },
-
- mock: function mock() {
- return this.add(sinon.mock.apply(sinon, arguments));
- },
-
- inject: function inject(obj) {
- var col = this;
-
- obj.spy = function () {
- return col.spy.apply(col, arguments);
- };
-
- obj.stub = function () {
- return col.stub.apply(col, arguments);
- };
-
- obj.mock = function () {
- return col.mock.apply(col, arguments);
- };
-
- return obj;
- }
- };
-
- if (commonJSModule) {
- module.exports = collection;
- } else {
- sinon.collection = collection;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/*jslint eqeqeq: false, plusplus: false, evil: true, onevar: false, browser: true, forin: false*/
-/*global module, require, window*/
-/**
- * Fake timer API
- * setTimeout
- * setInterval
- * clearTimeout
- * clearInterval
- * tick
- * reset
- * Date
- *
- * Inspired by jsUnitMockTimeOut from JsUnit
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-if (typeof sinon == "undefined") {
- var sinon = {};
-}
-
-(function (global) {
- // node expects setTimeout/setInterval to return a fn object w/ .ref()/.unref()
- // browsers, a number.
- // see https://github.com/cjohansen/Sinon.JS/pull/436
- var timeoutResult = setTimeout(function() {}, 0);
- var addTimerReturnsObject = typeof timeoutResult === 'object';
- clearTimeout(timeoutResult);
-
- var id = 1;
-
- function addTimer(args, recurring) {
- if (args.length === 0) {
- throw new Error("Function requires at least 1 parameter");
- }
-
- if (typeof args[0] === "undefined") {
- throw new Error("Callback must be provided to timer calls");
- }
-
- var toId = id++;
- var delay = args[1] || 0;
-
- if (!this.timeouts) {
- this.timeouts = {};
- }
-
- this.timeouts[toId] = {
- id: toId,
- func: args[0],
- callAt: this.now + delay,
- invokeArgs: Array.prototype.slice.call(args, 2)
- };
-
- if (recurring === true) {
- this.timeouts[toId].interval = delay;
- }
-
- if (addTimerReturnsObject) {
- return {
- id: toId,
- ref: function() {},
- unref: function() {}
- };
- }
- else {
- return toId;
- }
- }
-
- function parseTime(str) {
- if (!str) {
- return 0;
- }
-
- var strings = str.split(":");
- var l = strings.length, i = l;
- var ms = 0, parsed;
-
- if (l > 3 || !/^(\d\d:){0,2}\d\d?$/.test(str)) {
- throw new Error("tick only understands numbers and 'h:m:s'");
- }
-
- while (i--) {
- parsed = parseInt(strings[i], 10);
-
- if (parsed >= 60) {
- throw new Error("Invalid time " + str);
- }
-
- ms += parsed * Math.pow(60, (l - i - 1));
- }
-
- return ms * 1000;
- }
-
- function createObject(object) {
- var newObject;
-
- if (Object.create) {
- newObject = Object.create(object);
- } else {
- var F = function () {};
- F.prototype = object;
- newObject = new F();
- }
-
- newObject.Date.clock = newObject;
- return newObject;
- }
-
- sinon.clock = {
- now: 0,
-
- create: function create(now) {
- var clock = createObject(this);
-
- if (typeof now == "number") {
- clock.now = now;
- }
-
- if (!!now && typeof now == "object") {
- throw new TypeError("now should be milliseconds since UNIX epoch");
- }
-
- return clock;
- },
-
- setTimeout: function setTimeout(callback, timeout) {
- return addTimer.call(this, arguments, false);
- },
-
- clearTimeout: function clearTimeout(timerId) {
- if (!this.timeouts) {
- this.timeouts = [];
- }
-
- if (timerId in this.timeouts) {
- delete this.timeouts[timerId];
- }
- },
-
- setInterval: function setInterval(callback, timeout) {
- return addTimer.call(this, arguments, true);
- },
-
- clearInterval: function clearInterval(timerId) {
- this.clearTimeout(timerId);
- },
-
- setImmediate: function setImmediate(callback) {
- var passThruArgs = Array.prototype.slice.call(arguments, 1);
-
- return addTimer.call(this, [callback, 0].concat(passThruArgs), false);
- },
-
- clearImmediate: function clearImmediate(timerId) {
- this.clearTimeout(timerId);
- },
-
- tick: function tick(ms) {
- ms = typeof ms == "number" ? ms : parseTime(ms);
- var tickFrom = this.now, tickTo = this.now + ms, previous = this.now;
- var timer = this.firstTimerInRange(tickFrom, tickTo);
-
- var firstException;
- while (timer && tickFrom <= tickTo) {
- if (this.timeouts[timer.id]) {
- tickFrom = this.now = timer.callAt;
- try {
- this.callTimer(timer);
- } catch (e) {
- firstException = firstException || e;
- }
- }
-
- timer = this.firstTimerInRange(previous, tickTo);
- previous = tickFrom;
- }
-
- this.now = tickTo;
-
- if (firstException) {
- throw firstException;
- }
-
- return this.now;
- },
-
- firstTimerInRange: function (from, to) {
- var timer, smallest = null, originalTimer;
-
- for (var id in this.timeouts) {
- if (this.timeouts.hasOwnProperty(id)) {
- if (this.timeouts[id].callAt < from || this.timeouts[id].callAt > to) {
- continue;
- }
-
- if (smallest === null || this.timeouts[id].callAt < smallest) {
- originalTimer = this.timeouts[id];
- smallest = this.timeouts[id].callAt;
-
- timer = {
- func: this.timeouts[id].func,
- callAt: this.timeouts[id].callAt,
- interval: this.timeouts[id].interval,
- id: this.timeouts[id].id,
- invokeArgs: this.timeouts[id].invokeArgs
- };
- }
- }
- }
-
- return timer || null;
- },
-
- callTimer: function (timer) {
- if (typeof timer.interval == "number") {
- this.timeouts[timer.id].callAt += timer.interval;
- } else {
- delete this.timeouts[timer.id];
- }
-
- try {
- if (typeof timer.func == "function") {
- timer.func.apply(null, timer.invokeArgs);
- } else {
- eval(timer.func);
- }
- } catch (e) {
- var exception = e;
- }
-
- if (!this.timeouts[timer.id]) {
- if (exception) {
- throw exception;
- }
- return;
- }
-
- if (exception) {
- throw exception;
- }
- },
-
- reset: function reset() {
- this.timeouts = {};
- },
-
- Date: (function () {
- var NativeDate = Date;
-
- function ClockDate(year, month, date, hour, minute, second, ms) {
- // Defensive and verbose to avoid potential harm in passing
- // explicit undefined when user does not pass argument
- switch (arguments.length) {
- case 0:
- return new NativeDate(ClockDate.clock.now);
- case 1:
- return new NativeDate(year);
- case 2:
- return new NativeDate(year, month);
- case 3:
- return new NativeDate(year, month, date);
- case 4:
- return new NativeDate(year, month, date, hour);
- case 5:
- return new NativeDate(year, month, date, hour, minute);
- case 6:
- return new NativeDate(year, month, date, hour, minute, second);
- default:
- return new NativeDate(year, month, date, hour, minute, second, ms);
- }
- }
-
- return mirrorDateProperties(ClockDate, NativeDate);
- }())
- };
-
- function mirrorDateProperties(target, source) {
- if (source.now) {
- target.now = function now() {
- return target.clock.now;
- };
- } else {
- delete target.now;
- }
-
- if (source.toSource) {
- target.toSource = function toSource() {
- return source.toSource();
- };
- } else {
- delete target.toSource;
- }
-
- target.toString = function toString() {
- return source.toString();
- };
-
- target.prototype = source.prototype;
- target.parse = source.parse;
- target.UTC = source.UTC;
- target.prototype.toUTCString = source.prototype.toUTCString;
-
- for (var prop in source) {
- if (source.hasOwnProperty(prop)) {
- target[prop] = source[prop];
- }
- }
-
- return target;
- }
-
- var methods = ["Date", "setTimeout", "setInterval",
- "clearTimeout", "clearInterval"];
-
- if (typeof global.setImmediate !== "undefined") {
- methods.push("setImmediate");
- }
-
- if (typeof global.clearImmediate !== "undefined") {
- methods.push("clearImmediate");
- }
-
- function restore() {
- var method;
-
- for (var i = 0, l = this.methods.length; i < l; i++) {
- method = this.methods[i];
-
- if (global[method].hadOwnProperty) {
- global[method] = this["_" + method];
- } else {
- try {
- delete global[method];
- } catch (e) {}
- }
- }
-
- // Prevent multiple executions which will completely remove these props
- this.methods = [];
- }
-
- function stubGlobal(method, clock) {
- clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(global, method);
- clock["_" + method] = global[method];
-
- if (method == "Date") {
- var date = mirrorDateProperties(clock[method], global[method]);
- global[method] = date;
- } else {
- global[method] = function () {
- return clock[method].apply(clock, arguments);
- };
-
- for (var prop in clock[method]) {
- if (clock[method].hasOwnProperty(prop)) {
- global[method][prop] = clock[method][prop];
- }
- }
- }
-
- global[method].clock = clock;
- }
-
- sinon.useFakeTimers = function useFakeTimers(now) {
- var clock = sinon.clock.create(now);
- clock.restore = restore;
- clock.methods = Array.prototype.slice.call(arguments,
- typeof now == "number" ? 1 : 0);
-
- if (clock.methods.length === 0) {
- clock.methods = methods;
- }
-
- for (var i = 0, l = clock.methods.length; i < l; i++) {
- stubGlobal(clock.methods[i], clock);
- }
-
- return clock;
- };
-}(typeof global != "undefined" && typeof global !== "function" ? global : this));
-
-sinon.timers = {
- setTimeout: setTimeout,
- clearTimeout: clearTimeout,
- setImmediate: (typeof setImmediate !== "undefined" ? setImmediate : undefined),
- clearImmediate: (typeof clearImmediate !== "undefined" ? clearImmediate: undefined),
- setInterval: setInterval,
- clearInterval: clearInterval,
- Date: Date
-};
-
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = sinon;
-}
-
-/*jslint eqeqeq: false, onevar: false*/
-/*global sinon, module, require, ActiveXObject, XMLHttpRequest, DOMParser*/
-/**
- * Minimal Event interface implementation
- *
- * Original implementation by Sven Fuchs: https://gist.github.com/995028
- * Modifications and tests by Christian Johansen.
- *
- * @author Sven Fuchs (svenfuchs at artweb-design.de)
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2011 Sven Fuchs, Christian Johansen
- */
-
-if (typeof sinon == "undefined") {
- this.sinon = {};
-}
-
-(function () {
- var push = [].push;
-
- sinon.Event = function Event(type, bubbles, cancelable, target) {
- this.initEvent(type, bubbles, cancelable, target);
- };
-
- sinon.Event.prototype = {
- initEvent: function(type, bubbles, cancelable, target) {
- this.type = type;
- this.bubbles = bubbles;
- this.cancelable = cancelable;
- this.target = target;
- },
-
- stopPropagation: function () {},
-
- preventDefault: function () {
- this.defaultPrevented = true;
- }
- };
-
- sinon.ProgressEvent = function ProgressEvent(type, progressEventRaw, target) {
- this.initEvent(type, false, false, target);
- this.loaded = progressEventRaw.loaded || null;
- this.total = progressEventRaw.total || null;
- };
-
- sinon.ProgressEvent.prototype = new sinon.Event();
-
- sinon.ProgressEvent.prototype.constructor = sinon.ProgressEvent;
-
- sinon.CustomEvent = function CustomEvent(type, customData, target) {
- this.initEvent(type, false, false, target);
- this.detail = customData.detail || null;
- };
-
- sinon.CustomEvent.prototype = new sinon.Event();
-
- sinon.CustomEvent.prototype.constructor = sinon.CustomEvent;
-
- sinon.EventTarget = {
- addEventListener: function addEventListener(event, listener) {
- this.eventListeners = this.eventListeners || {};
- this.eventListeners[event] = this.eventListeners[event] || [];
- push.call(this.eventListeners[event], listener);
- },
-
- removeEventListener: function removeEventListener(event, listener) {
- var listeners = this.eventListeners && this.eventListeners[event] || [];
-
- for (var i = 0, l = listeners.length; i < l; ++i) {
- if (listeners[i] == listener) {
- return listeners.splice(i, 1);
- }
- }
- },
-
- dispatchEvent: function dispatchEvent(event) {
- var type = event.type;
- var listeners = this.eventListeners && this.eventListeners[type] || [];
-
- for (var i = 0; i < listeners.length; i++) {
- if (typeof listeners[i] == "function") {
- listeners[i].call(this, event);
- } else {
- listeners[i].handleEvent(event);
- }
- }
-
- return !!event.defaultPrevented;
- }
- };
-}());
-
-/**
- * @depend ../../sinon.js
- * @depend event.js
- */
-/*jslint eqeqeq: false, onevar: false*/
-/*global sinon, module, require, ActiveXObject, XMLHttpRequest, DOMParser*/
-/**
- * Fake XMLHttpRequest object
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-// wrapper for global
-(function(global) {
- if (typeof sinon === "undefined") {
- global.sinon = {};
- }
-
- var supportsProgress = typeof ProgressEvent !== "undefined";
- var supportsCustomEvent = typeof CustomEvent !== "undefined";
- sinon.xhr = { XMLHttpRequest: global.XMLHttpRequest };
- var xhr = sinon.xhr;
- xhr.GlobalXMLHttpRequest = global.XMLHttpRequest;
- xhr.GlobalActiveXObject = global.ActiveXObject;
- xhr.supportsActiveX = typeof xhr.GlobalActiveXObject != "undefined";
- xhr.supportsXHR = typeof xhr.GlobalXMLHttpRequest != "undefined";
- xhr.workingXHR = xhr.supportsXHR ? xhr.GlobalXMLHttpRequest : xhr.supportsActiveX
- ? function() { return new xhr.GlobalActiveXObject("MSXML2.XMLHTTP.3.0") } : false;
- xhr.supportsCORS = 'withCredentials' in (new sinon.xhr.GlobalXMLHttpRequest());
-
- /*jsl:ignore*/
- var unsafeHeaders = {
- "Accept-Charset": true,
- "Accept-Encoding": true,
- "Connection": true,
- "Content-Length": true,
- "Cookie": true,
- "Cookie2": true,
- "Content-Transfer-Encoding": true,
- "Date": true,
- "Expect": true,
- "Host": true,
- "Keep-Alive": true,
- "Referer": true,
- "TE": true,
- "Trailer": true,
- "Transfer-Encoding": true,
- "Upgrade": true,
- "User-Agent": true,
- "Via": true
- };
- /*jsl:end*/
-
- function FakeXMLHttpRequest() {
- this.readyState = FakeXMLHttpRequest.UNSENT;
- this.requestHeaders = {};
- this.requestBody = null;
- this.status = 0;
- this.statusText = "";
- this.upload = new UploadProgress();
- if (sinon.xhr.supportsCORS) {
- this.withCredentials = false;
- }
-
-
- var xhr = this;
- var events = ["loadstart", "load", "abort", "loadend"];
-
- function addEventListener(eventName) {
- xhr.addEventListener(eventName, function (event) {
- var listener = xhr["on" + eventName];
-
- if (listener && typeof listener == "function") {
- listener.call(this, event);
- }
- });
- }
-
- for (var i = events.length - 1; i >= 0; i--) {
- addEventListener(events[i]);
- }
-
- if (typeof FakeXMLHttpRequest.onCreate == "function") {
- FakeXMLHttpRequest.onCreate(this);
- }
- }
-
- // An upload object is created for each
- // FakeXMLHttpRequest and allows upload
- // events to be simulated using uploadProgress
- // and uploadError.
- function UploadProgress() {
- this.eventListeners = {
- "progress": [],
- "load": [],
- "abort": [],
- "error": []
- }
- }
-
- UploadProgress.prototype.addEventListener = function(event, listener) {
- this.eventListeners[event].push(listener);
- };
-
- UploadProgress.prototype.removeEventListener = function(event, listener) {
- var listeners = this.eventListeners[event] || [];
-
- for (var i = 0, l = listeners.length; i < l; ++i) {
- if (listeners[i] == listener) {
- return listeners.splice(i, 1);
- }
- }
- };
-
- UploadProgress.prototype.dispatchEvent = function(event) {
- var listeners = this.eventListeners[event.type] || [];
-
- for (var i = 0, listener; (listener = listeners[i]) != null; i++) {
- listener(event);
- }
- };
-
- function verifyState(xhr) {
- if (xhr.readyState !== FakeXMLHttpRequest.OPENED) {
- throw new Error("INVALID_STATE_ERR");
- }
-
- if (xhr.sendFlag) {
- throw new Error("INVALID_STATE_ERR");
- }
- }
-
- // filtering to enable a white-list version of Sinon FakeXhr,
- // where whitelisted requests are passed through to real XHR
- function each(collection, callback) {
- if (!collection) return;
- for (var i = 0, l = collection.length; i < l; i += 1) {
- callback(collection[i]);
- }
- }
- function some(collection, callback) {
- for (var index = 0; index < collection.length; index++) {
- if(callback(collection[index]) === true) return true;
- }
- return false;
- }
- // largest arity in XHR is 5 - XHR#open
- var apply = function(obj,method,args) {
- switch(args.length) {
- case 0: return obj[method]();
- case 1: return obj[method](args[0]);
- case 2: return obj[method](args[0],args[1]);
- case 3: return obj[method](args[0],args[1],args[2]);
- case 4: return obj[method](args[0],args[1],args[2],args[3]);
- case 5: return obj[method](args[0],args[1],args[2],args[3],args[4]);
- }
- };
-
- FakeXMLHttpRequest.filters = [];
- FakeXMLHttpRequest.addFilter = function(fn) {
- this.filters.push(fn)
- };
- var IE6Re = /MSIE 6/;
- FakeXMLHttpRequest.defake = function(fakeXhr,xhrArgs) {
- var xhr = new sinon.xhr.workingXHR();
- each(["open","setRequestHeader","send","abort","getResponseHeader",
- "getAllResponseHeaders","addEventListener","overrideMimeType","removeEventListener"],
- function(method) {
- fakeXhr[method] = function() {
- return apply(xhr,method,arguments);
- };
- });
-
- var copyAttrs = function(args) {
- each(args, function(attr) {
- try {
- fakeXhr[attr] = xhr[attr]
- } catch(e) {
- if(!IE6Re.test(navigator.userAgent)) throw e;
- }
- });
- };
-
- var stateChange = function() {
- fakeXhr.readyState = xhr.readyState;
- if(xhr.readyState >= FakeXMLHttpRequest.HEADERS_RECEIVED) {
- copyAttrs(["status","statusText"]);
- }
- if(xhr.readyState >= FakeXMLHttpRequest.LOADING) {
- copyAttrs(["responseText"]);
- }
- if(xhr.readyState === FakeXMLHttpRequest.DONE) {
- copyAttrs(["responseXML"]);
- }
- if(fakeXhr.onreadystatechange) fakeXhr.onreadystatechange.call(fakeXhr, { target: fakeXhr });
- };
- if(xhr.addEventListener) {
- for(var event in fakeXhr.eventListeners) {
- if(fakeXhr.eventListeners.hasOwnProperty(event)) {
- each(fakeXhr.eventListeners[event],function(handler) {
- xhr.addEventListener(event, handler);
- });
- }
- }
- xhr.addEventListener("readystatechange",stateChange);
- } else {
- xhr.onreadystatechange = stateChange;
- }
- apply(xhr,"open",xhrArgs);
- };
- FakeXMLHttpRequest.useFilters = false;
-
- function verifyRequestOpened(xhr) {
- if (xhr.readyState != FakeXMLHttpRequest.OPENED) {
- throw new Error("INVALID_STATE_ERR - " + xhr.readyState);
- }
- }
-
- function verifyRequestSent(xhr) {
- if (xhr.readyState == FakeXMLHttpRequest.DONE) {
- throw new Error("Request done");
- }
- }
-
- function verifyHeadersReceived(xhr) {
- if (xhr.async && xhr.readyState != FakeXMLHttpRequest.HEADERS_RECEIVED) {
- throw new Error("No headers received");
- }
- }
-
- function verifyResponseBodyType(body) {
- if (typeof body != "string") {
- var error = new Error("Attempted to respond to fake XMLHttpRequest with " +
- body + ", which is not a string.");
- error.name = "InvalidBodyException";
- throw error;
- }
- }
-
- sinon.extend(FakeXMLHttpRequest.prototype, sinon.EventTarget, {
- async: true,
-
- open: function open(method, url, async, username, password) {
- this.method = method;
- this.url = url;
- this.async = typeof async == "boolean" ? async : true;
- this.username = username;
- this.password = password;
- this.responseText = null;
- this.responseXML = null;
- this.requestHeaders = {};
- this.sendFlag = false;
- if(sinon.FakeXMLHttpRequest.useFilters === true) {
- var xhrArgs = arguments;
- var defake = some(FakeXMLHttpRequest.filters,function(filter) {
- return filter.apply(this,xhrArgs)
- });
- if (defake) {
- return sinon.FakeXMLHttpRequest.defake(this,arguments);
- }
- }
- this.readyStateChange(FakeXMLHttpRequest.OPENED);
- },
-
- readyStateChange: function readyStateChange(state) {
- this.readyState = state;
-
- if (typeof this.onreadystatechange == "function") {
- try {
- this.onreadystatechange();
- } catch (e) {
- sinon.logError("Fake XHR onreadystatechange handler", e);
- }
- }
-
- this.dispatchEvent(new sinon.Event("readystatechange"));
-
- switch (this.readyState) {
- case FakeXMLHttpRequest.DONE:
- this.dispatchEvent(new sinon.Event("load", false, false, this));
- this.dispatchEvent(new sinon.Event("loadend", false, false, this));
- this.upload.dispatchEvent(new sinon.Event("load", false, false, this));
- if (supportsProgress) {
- this.upload.dispatchEvent(new sinon.ProgressEvent('progress', {loaded: 100, total: 100}));
- }
- break;
- }
- },
-
- setRequestHeader: function setRequestHeader(header, value) {
- verifyState(this);
-
- if (unsafeHeaders[header] || /^(Sec-|Proxy-)/.test(header)) {
- throw new Error("Refused to set unsafe header \"" + header + "\"");
- }
-
- if (this.requestHeaders[header]) {
- this.requestHeaders[header] += "," + value;
- } else {
- this.requestHeaders[header] = value;
- }
- },
-
- // Helps testing
- setResponseHeaders: function setResponseHeaders(headers) {
- verifyRequestOpened(this);
- this.responseHeaders = {};
-
- for (var header in headers) {
- if (headers.hasOwnProperty(header)) {
- this.responseHeaders[header] = headers[header];
- }
- }
-
- if (this.async) {
- this.readyStateChange(FakeXMLHttpRequest.HEADERS_RECEIVED);
- } else {
- this.readyState = FakeXMLHttpRequest.HEADERS_RECEIVED;
- }
- },
-
- // Currently treats ALL data as a DOMString (i.e. no Document)
- send: function send(data) {
- verifyState(this);
-
- if (!/^(get|head)$/i.test(this.method)) {
- if (this.requestHeaders["Content-Type"]) {
- var value = this.requestHeaders["Content-Type"].split(";");
- this.requestHeaders["Content-Type"] = value[0] + ";charset=utf-8";
- } else {
- this.requestHeaders["Content-Type"] = "text/plain;charset=utf-8";
- }
-
- this.requestBody = data;
- }
-
- this.errorFlag = false;
- this.sendFlag = this.async;
- this.readyStateChange(FakeXMLHttpRequest.OPENED);
-
- if (typeof this.onSend == "function") {
- this.onSend(this);
- }
-
- this.dispatchEvent(new sinon.Event("loadstart", false, false, this));
- },
-
- abort: function abort() {
- this.aborted = true;
- this.responseText = null;
- this.errorFlag = true;
- this.requestHeaders = {};
-
- if (this.readyState > sinon.FakeXMLHttpRequest.UNSENT && this.sendFlag) {
- this.readyStateChange(sinon.FakeXMLHttpRequest.DONE);
- this.sendFlag = false;
- }
-
- this.readyState = sinon.FakeXMLHttpRequest.UNSENT;
-
- this.dispatchEvent(new sinon.Event("abort", false, false, this));
-
- this.upload.dispatchEvent(new sinon.Event("abort", false, false, this));
-
- if (typeof this.onerror === "function") {
- this.onerror();
- }
- },
-
- getResponseHeader: function getResponseHeader(header) {
- if (this.readyState < FakeXMLHttpRequest.HEADERS_RECEIVED) {
- return null;
- }
-
- if (/^Set-Cookie2?$/i.test(header)) {
- return null;
- }
-
- header = header.toLowerCase();
-
- for (var h in this.responseHeaders) {
- if (h.toLowerCase() == header) {
- return this.responseHeaders[h];
- }
- }
-
- return null;
- },
-
- getAllResponseHeaders: function getAllResponseHeaders() {
- if (this.readyState < FakeXMLHttpRequest.HEADERS_RECEIVED) {
- return "";
- }
-
- var headers = "";
-
- for (var header in this.responseHeaders) {
- if (this.responseHeaders.hasOwnProperty(header) &&
- !/^Set-Cookie2?$/i.test(header)) {
- headers += header + ": " + this.responseHeaders[header] + "\r\n";
- }
- }
-
- return headers;
- },
-
- setResponseBody: function setResponseBody(body) {
- verifyRequestSent(this);
- verifyHeadersReceived(this);
- verifyResponseBodyType(body);
-
- var chunkSize = this.chunkSize || 10;
- var index = 0;
- this.responseText = "";
-
- do {
- if (this.async) {
- this.readyStateChange(FakeXMLHttpRequest.LOADING);
- }
-
- this.responseText += body.substring(index, index + chunkSize);
- index += chunkSize;
- } while (index < body.length);
-
- var type = this.getResponseHeader("Content-Type");
-
- if (this.responseText &&
- (!type || /(text\/xml)|(application\/xml)|(\+xml)/.test(type))) {
- try {
- this.responseXML = FakeXMLHttpRequest.parseXML(this.responseText);
- } catch (e) {
- // Unable to parse XML - no biggie
- }
- }
-
- if (this.async) {
- this.readyStateChange(FakeXMLHttpRequest.DONE);
- } else {
- this.readyState = FakeXMLHttpRequest.DONE;
- }
- },
-
- respond: function respond(status, headers, body) {
- this.status = typeof status == "number" ? status : 200;
- this.statusText = FakeXMLHttpRequest.statusCodes[this.status];
- this.setResponseHeaders(headers || {});
- this.setResponseBody(body || "");
- },
-
- uploadProgress: function uploadProgress(progressEventRaw) {
- if (supportsProgress) {
- this.upload.dispatchEvent(new sinon.ProgressEvent("progress", progressEventRaw));
- }
- },
-
- uploadError: function uploadError(error) {
- if (supportsCustomEvent) {
- this.upload.dispatchEvent(new sinon.CustomEvent("error", {"detail": error}));
- }
- }
- });
-
- sinon.extend(FakeXMLHttpRequest, {
- UNSENT: 0,
- OPENED: 1,
- HEADERS_RECEIVED: 2,
- LOADING: 3,
- DONE: 4
- });
-
- // Borrowed from JSpec
- FakeXMLHttpRequest.parseXML = function parseXML(text) {
- var xmlDoc;
-
- if (typeof DOMParser != "undefined") {
- var parser = new DOMParser();
- xmlDoc = parser.parseFromString(text, "text/xml");
- } else {
- xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
- xmlDoc.async = "false";
- xmlDoc.loadXML(text);
- }
-
- return xmlDoc;
- };
-
- FakeXMLHttpRequest.statusCodes = {
- 100: "Continue",
- 101: "Switching Protocols",
- 200: "OK",
- 201: "Created",
- 202: "Accepted",
- 203: "Non-Authoritative Information",
- 204: "No Content",
- 205: "Reset Content",
- 206: "Partial Content",
- 300: "Multiple Choice",
- 301: "Moved Permanently",
- 302: "Found",
- 303: "See Other",
- 304: "Not Modified",
- 305: "Use Proxy",
- 307: "Temporary Redirect",
- 400: "Bad Request",
- 401: "Unauthorized",
- 402: "Payment Required",
- 403: "Forbidden",
- 404: "Not Found",
- 405: "Method Not Allowed",
- 406: "Not Acceptable",
- 407: "Proxy Authentication Required",
- 408: "Request Timeout",
- 409: "Conflict",
- 410: "Gone",
- 411: "Length Required",
- 412: "Precondition Failed",
- 413: "Request Entity Too Large",
- 414: "Request-URI Too Long",
- 415: "Unsupported Media Type",
- 416: "Requested Range Not Satisfiable",
- 417: "Expectation Failed",
- 422: "Unprocessable Entity",
- 500: "Internal Server Error",
- 501: "Not Implemented",
- 502: "Bad Gateway",
- 503: "Service Unavailable",
- 504: "Gateway Timeout",
- 505: "HTTP Version Not Supported"
- };
-
- sinon.useFakeXMLHttpRequest = function () {
- sinon.FakeXMLHttpRequest.restore = function restore(keepOnCreate) {
- if (xhr.supportsXHR) {
- global.XMLHttpRequest = xhr.GlobalXMLHttpRequest;
- }
-
- if (xhr.supportsActiveX) {
- global.ActiveXObject = xhr.GlobalActiveXObject;
- }
-
- delete sinon.FakeXMLHttpRequest.restore;
-
- if (keepOnCreate !== true) {
- delete sinon.FakeXMLHttpRequest.onCreate;
- }
- };
- if (xhr.supportsXHR) {
- global.XMLHttpRequest = sinon.FakeXMLHttpRequest;
- }
-
- if (xhr.supportsActiveX) {
- global.ActiveXObject = function ActiveXObject(objId) {
- if (objId == "Microsoft.XMLHTTP" || /^Msxml2\.XMLHTTP/i.test(objId)) {
-
- return new sinon.FakeXMLHttpRequest();
- }
-
- return new xhr.GlobalActiveXObject(objId);
- };
- }
-
- return sinon.FakeXMLHttpRequest;
- };
-
- sinon.FakeXMLHttpRequest = FakeXMLHttpRequest;
-
-})(typeof global === "object" ? global : this);
-
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = sinon;
-}
-
-/**
- * @depend fake_xml_http_request.js
- */
-/*jslint eqeqeq: false, onevar: false, regexp: false, plusplus: false*/
-/*global module, require, window*/
-/**
- * The Sinon "server" mimics a web server that receives requests from
- * sinon.FakeXMLHttpRequest and provides an API to respond to those requests,
- * both synchronously and asynchronously. To respond synchronously, canned
- * answers have to be provided upfront.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-if (typeof sinon == "undefined") {
- var sinon = {};
-}
-
-sinon.fakeServer = (function () {
- var push = [].push;
- function F() {}
-
- function create(proto) {
- F.prototype = proto;
- return new F();
- }
-
- function responseArray(handler) {
- var response = handler;
-
- if (Object.prototype.toString.call(handler) != "[object Array]") {
- response = [200, {}, handler];
- }
-
- if (typeof response[2] != "string") {
- throw new TypeError("Fake server response body should be string, but was " +
- typeof response[2]);
- }
-
- return response;
- }
-
- var wloc = typeof window !== "undefined" ? window.location : {};
- var rCurrLoc = new RegExp("^" + wloc.protocol + "//" + wloc.host);
-
- function matchOne(response, reqMethod, reqUrl) {
- var rmeth = response.method;
- var matchMethod = !rmeth || rmeth.toLowerCase() == reqMethod.toLowerCase();
- var url = response.url;
- var matchUrl = !url || url == reqUrl || (typeof url.test == "function" && url.test(reqUrl));
-
- return matchMethod && matchUrl;
- }
-
- function match(response, request) {
- var requestUrl = request.url;
-
- if (!/^https?:\/\//.test(requestUrl) || rCurrLoc.test(requestUrl)) {
- requestUrl = requestUrl.replace(rCurrLoc, "");
- }
-
- if (matchOne(response, this.getHTTPMethod(request), requestUrl)) {
- if (typeof response.response == "function") {
- var ru = response.url;
- var args = [request].concat(ru && typeof ru.exec == "function" ? ru.exec(requestUrl).slice(1) : []);
- return response.response.apply(response, args);
- }
-
- return true;
- }
-
- return false;
- }
-
- function log(response, request) {
- var str;
-
- str = "Request:\n" + sinon.format(request) + "\n\n";
- str += "Response:\n" + sinon.format(response) + "\n\n";
-
- sinon.log(str);
- }
-
- return {
- create: function () {
- var server = create(this);
- this.xhr = sinon.useFakeXMLHttpRequest();
- server.requests = [];
-
- this.xhr.onCreate = function (xhrObj) {
- server.addRequest(xhrObj);
- };
-
- return server;
- },
-
- addRequest: function addRequest(xhrObj) {
- var server = this;
- push.call(this.requests, xhrObj);
-
- xhrObj.onSend = function () {
- server.handleRequest(this);
-
- if (server.autoRespond && !server.responding) {
- setTimeout(function () {
- server.responding = false;
- server.respond();
- }, server.autoRespondAfter || 10);
-
- server.responding = true;
- }
- };
- },
-
- getHTTPMethod: function getHTTPMethod(request) {
- if (this.fakeHTTPMethods && /post/i.test(request.method)) {
- var matches = (request.requestBody || "").match(/_method=([^\b;]+)/);
- return !!matches ? matches[1] : request.method;
- }
-
- return request.method;
- },
-
- handleRequest: function handleRequest(xhr) {
- if (xhr.async) {
- if (!this.queue) {
- this.queue = [];
- }
-
- push.call(this.queue, xhr);
- } else {
- this.processRequest(xhr);
- }
- },
-
- respondWith: function respondWith(method, url, body) {
- if (arguments.length == 1 && typeof method != "function") {
- this.response = responseArray(method);
- return;
- }
-
- if (!this.responses) { this.responses = []; }
-
- if (arguments.length == 1) {
- body = method;
- url = method = null;
- }
-
- if (arguments.length == 2) {
- body = url;
- url = method;
- method = null;
- }
-
- push.call(this.responses, {
- method: method,
- url: url,
- response: typeof body == "function" ? body : responseArray(body)
- });
- },
-
- respond: function respond() {
- if (arguments.length > 0) this.respondWith.apply(this, arguments);
- var queue = this.queue || [];
- var requests = queue.splice(0);
- var request;
-
- while(request = requests.shift()) {
- this.processRequest(request);
- }
- },
-
- processRequest: function processRequest(request) {
- try {
- if (request.aborted) {
- return;
- }
-
- var response = this.response || [404, {}, ""];
-
- if (this.responses) {
- for (var l = this.responses.length, i = l - 1; i >= 0; i--) {
- if (match.call(this, this.responses[i], request)) {
- response = this.responses[i].response;
- break;
- }
- }
- }
-
- if (request.readyState != 4) {
- log(response, request);
-
- request.respond(response[0], response[1], response[2]);
- }
- } catch (e) {
- sinon.logError("Fake server request processing", e);
- }
- },
-
- restore: function restore() {
- return this.xhr.restore && this.xhr.restore.apply(this.xhr, arguments);
- }
- };
-}());
-
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = sinon;
-}
-
-/**
- * @depend fake_server.js
- * @depend fake_timers.js
- */
-/*jslint browser: true, eqeqeq: false, onevar: false*/
-/*global sinon*/
-/**
- * Add-on for sinon.fakeServer that automatically handles a fake timer along with
- * the FakeXMLHttpRequest. The direct inspiration for this add-on is jQuery
- * 1.3.x, which does not use xhr object's onreadystatehandler at all - instead,
- * it polls the object for completion with setInterval. Dispite the direct
- * motivation, there is nothing jQuery-specific in this file, so it can be used
- * in any environment where the ajax implementation depends on setInterval or
- * setTimeout.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function () {
- function Server() {}
- Server.prototype = sinon.fakeServer;
-
- sinon.fakeServerWithClock = new Server();
-
- sinon.fakeServerWithClock.addRequest = function addRequest(xhr) {
- if (xhr.async) {
- if (typeof setTimeout.clock == "object") {
- this.clock = setTimeout.clock;
- } else {
- this.clock = sinon.useFakeTimers();
- this.resetClock = true;
- }
-
- if (!this.longestTimeout) {
- var clockSetTimeout = this.clock.setTimeout;
- var clockSetInterval = this.clock.setInterval;
- var server = this;
-
- this.clock.setTimeout = function (fn, timeout) {
- server.longestTimeout = Math.max(timeout, server.longestTimeout || 0);
-
- return clockSetTimeout.apply(this, arguments);
- };
-
- this.clock.setInterval = function (fn, timeout) {
- server.longestTimeout = Math.max(timeout, server.longestTimeout || 0);
-
- return clockSetInterval.apply(this, arguments);
- };
- }
- }
-
- return sinon.fakeServer.addRequest.call(this, xhr);
- };
-
- sinon.fakeServerWithClock.respond = function respond() {
- var returnVal = sinon.fakeServer.respond.apply(this, arguments);
-
- if (this.clock) {
- this.clock.tick(this.longestTimeout || 0);
- this.longestTimeout = 0;
-
- if (this.resetClock) {
- this.clock.restore();
- this.resetClock = false;
- }
- }
-
- return returnVal;
- };
-
- sinon.fakeServerWithClock.restore = function restore() {
- if (this.clock) {
- this.clock.restore();
- }
-
- return sinon.fakeServer.restore.apply(this, arguments);
- };
-}());
-
-/**
- * @depend ../sinon.js
- * @depend collection.js
- * @depend util/fake_timers.js
- * @depend util/fake_server_with_clock.js
- */
-/*jslint eqeqeq: false, onevar: false, plusplus: false*/
-/*global require, module*/
-/**
- * Manages fake collections as well as fake utilities such as Sinon's
- * timers and fake XHR implementation in one convenient object.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-if (typeof module !== 'undefined' && module.exports) {
- var sinon = require("../sinon");
- sinon.extend(sinon, require("./util/fake_timers"));
-}
-
-(function () {
- var push = [].push;
-
- function exposeValue(sandbox, config, key, value) {
- if (!value) {
- return;
- }
-
- if (config.injectInto && !(key in config.injectInto)) {
- config.injectInto[key] = value;
- sandbox.injectedKeys.push(key);
- } else {
- push.call(sandbox.args, value);
- }
- }
-
- function prepareSandboxFromConfig(config) {
- var sandbox = sinon.create(sinon.sandbox);
-
- if (config.useFakeServer) {
- if (typeof config.useFakeServer == "object") {
- sandbox.serverPrototype = config.useFakeServer;
- }
-
- sandbox.useFakeServer();
- }
-
- if (config.useFakeTimers) {
- if (typeof config.useFakeTimers == "object") {
- sandbox.useFakeTimers.apply(sandbox, config.useFakeTimers);
- } else {
- sandbox.useFakeTimers();
- }
- }
-
- return sandbox;
- }
-
- sinon.sandbox = sinon.extend(sinon.create(sinon.collection), {
- useFakeTimers: function useFakeTimers() {
- this.clock = sinon.useFakeTimers.apply(sinon, arguments);
-
- return this.add(this.clock);
- },
-
- serverPrototype: sinon.fakeServer,
-
- useFakeServer: function useFakeServer() {
- var proto = this.serverPrototype || sinon.fakeServer;
-
- if (!proto || !proto.create) {
- return null;
- }
-
- this.server = proto.create();
- return this.add(this.server);
- },
-
- inject: function (obj) {
- sinon.collection.inject.call(this, obj);
-
- if (this.clock) {
- obj.clock = this.clock;
- }
-
- if (this.server) {
- obj.server = this.server;
- obj.requests = this.server.requests;
- }
-
- return obj;
- },
-
- restore: function () {
- sinon.collection.restore.apply(this, arguments);
- this.restoreContext();
- },
-
- restoreContext: function () {
- if (this.injectedKeys) {
- for (var i = 0, j = this.injectedKeys.length; i < j; i++) {
- delete this.injectInto[this.injectedKeys[i]];
- }
- this.injectedKeys = [];
- }
- },
-
- create: function (config) {
- if (!config) {
- return sinon.create(sinon.sandbox);
- }
-
- var sandbox = prepareSandboxFromConfig(config);
- sandbox.args = sandbox.args || [];
- sandbox.injectedKeys = [];
- sandbox.injectInto = config.injectInto;
- var prop, value, exposed = sandbox.inject({});
-
- if (config.properties) {
- for (var i = 0, l = config.properties.length; i < l; i++) {
- prop = config.properties[i];
- value = exposed[prop] || prop == "sandbox" && sandbox;
- exposeValue(sandbox, config, prop, value);
- }
- } else {
- exposeValue(sandbox, config, "sandbox", value);
- }
-
- return sandbox;
- }
- });
-
- sinon.sandbox.useFakeXMLHttpRequest = sinon.sandbox.useFakeServer;
-
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = sinon.sandbox;
- }
-}());
-
-/**
- * @depend ../sinon.js
- * @depend stub.js
- * @depend mock.js
- * @depend sandbox.js
- */
-/*jslint eqeqeq: false, onevar: false, forin: true, plusplus: false*/
-/*global module, require, sinon*/
-/**
- * Test function, sandboxes fakes
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function test(callback) {
- var type = typeof callback;
-
- if (type != "function") {
- throw new TypeError("sinon.test needs to wrap a test function, got " + type);
- }
-
- return function () {
- var config = sinon.getConfig(sinon.config);
- config.injectInto = config.injectIntoThis && this || config.injectInto;
- var sandbox = sinon.sandbox.create(config);
- var exception, result;
- var args = Array.prototype.slice.call(arguments).concat(sandbox.args);
-
- try {
- result = callback.apply(this, args);
- } catch (e) {
- exception = e;
- }
-
- if (typeof exception !== "undefined") {
- sandbox.restore();
- throw exception;
- }
- else {
- sandbox.verifyAndRestore();
- }
-
- return result;
- };
- }
-
- test.config = {
- injectIntoThis: true,
- injectInto: null,
- properties: ["spy", "stub", "mock", "clock", "server", "requests"],
- useFakeTimers: true,
- useFakeServer: true
- };
-
- if (commonJSModule) {
- module.exports = test;
- } else {
- sinon.test = test;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/**
- * @depend ../sinon.js
- * @depend test.js
- */
-/*jslint eqeqeq: false, onevar: false, eqeqeq: false*/
-/*global module, require, sinon*/
-/**
- * Test case, sandboxes all test functions
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon) {
- var commonJSModule = typeof module !== 'undefined' && module.exports;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon || !Object.prototype.hasOwnProperty) {
- return;
- }
-
- function createTest(property, setUp, tearDown) {
- return function () {
- if (setUp) {
- setUp.apply(this, arguments);
- }
-
- var exception, result;
-
- try {
- result = property.apply(this, arguments);
- } catch (e) {
- exception = e;
- }
-
- if (tearDown) {
- tearDown.apply(this, arguments);
- }
-
- if (exception) {
- throw exception;
- }
-
- return result;
- };
- }
-
- function testCase(tests, prefix) {
- /*jsl:ignore*/
- if (!tests || typeof tests != "object") {
- throw new TypeError("sinon.testCase needs an object with test functions");
- }
- /*jsl:end*/
-
- prefix = prefix || "test";
- var rPrefix = new RegExp("^" + prefix);
- var methods = {}, testName, property, method;
- var setUp = tests.setUp;
- var tearDown = tests.tearDown;
-
- for (testName in tests) {
- if (tests.hasOwnProperty(testName)) {
- property = tests[testName];
-
- if (/^(setUp|tearDown)$/.test(testName)) {
- continue;
- }
-
- if (typeof property == "function" && rPrefix.test(testName)) {
- method = property;
-
- if (setUp || tearDown) {
- method = createTest(property, setUp, tearDown);
- }
-
- methods[testName] = sinon.test(method);
- } else {
- methods[testName] = tests[testName];
- }
- }
- }
-
- return methods;
- }
-
- if (commonJSModule) {
- module.exports = testCase;
- } else {
- sinon.testCase = testCase;
- }
-}(typeof sinon == "object" && sinon || null));
-
-/**
- * @depend ../sinon.js
- * @depend stub.js
- */
-/*jslint eqeqeq: false, onevar: false, nomen: false, plusplus: false*/
-/*global module, require, sinon*/
-/**
- * Assertions matching the test spy retrieval interface.
- *
- * @author Christian Johansen (christian at cjohansen.no)
- * @license BSD
- *
- * Copyright (c) 2010-2013 Christian Johansen
- */
-
-(function (sinon, global) {
- var commonJSModule = typeof module !== "undefined" && module.exports;
- var slice = Array.prototype.slice;
- var assert;
-
- if (!sinon && commonJSModule) {
- sinon = require("../sinon");
- }
-
- if (!sinon) {
- return;
- }
-
- function verifyIsStub() {
- var method;
-
- for (var i = 0, l = arguments.length; i < l; ++i) {
- method = arguments[i];
-
- if (!method) {
- assert.fail("fake is not a spy");
- }
-
- if (typeof method != "function") {
- assert.fail(method + " is not a function");
- }
-
- if (typeof method.getCall != "function") {
- assert.fail(method + " is not stubbed");
- }
- }
- }
-
- function failAssertion(object, msg) {
- object = object || global;
- var failMethod = object.fail || assert.fail;
- failMethod.call(object, msg);
- }
-
- function mirrorPropAsAssertion(name, method, message) {
- if (arguments.length == 2) {
- message = method;
- method = name;
- }
-
- assert[name] = function (fake) {
- verifyIsStub(fake);
-
- var args = slice.call(arguments, 1);
- var failed = false;
-
- if (typeof method == "function") {
- failed = !method(fake);
- } else {
- failed = typeof fake[method] == "function" ?
- !fake[method].apply(fake, args) : !fake[method];
- }
-
- if (failed) {
- failAssertion(this, fake.printf.apply(fake, [message].concat(args)));
- } else {
- assert.pass(name);
- }
- };
- }
-
- function exposedName(prefix, prop) {
- return !prefix || /^fail/.test(prop) ? prop :
- prefix + prop.slice(0, 1).toUpperCase() + prop.slice(1);
- }
-
- assert = {
- failException: "AssertError",
-
- fail: function fail(message) {
- var error = new Error(message);
- error.name = this.failException || assert.failException;
-
- throw error;
- },
-
- pass: function pass(assertion) {},
-
- callOrder: function assertCallOrder() {
- verifyIsStub.apply(null, arguments);
- var expected = "", actual = "";
-
- if (!sinon.calledInOrder(arguments)) {
- try {
- expected = [].join.call(arguments, ", ");
- var calls = slice.call(arguments);
- var i = calls.length;
- while (i) {
- if (!calls[--i].called) {
- calls.splice(i, 1);
- }
- }
- actual = sinon.orderByFirstCall(calls).join(", ");
- } catch (e) {
- // If this fails, we'll just fall back to the blank string
- }
-
- failAssertion(this, "expected " + expected + " to be " +
- "called in order but were called as " + actual);
- } else {
- assert.pass("callOrder");
- }
- },
-
- callCount: function assertCallCount(method, count) {
- verifyIsStub(method);
-
- if (method.callCount != count) {
- var msg = "expected %n to be called " + sinon.timesInWords(count) +
- " but was called %c%C";
- failAssertion(this, method.printf(msg));
- } else {
- assert.pass("callCount");
- }
- },
-
- expose: function expose(target, options) {
- if (!target) {
- throw new TypeError("target is null or undefined");
- }
-
- var o = options || {};
- var prefix = typeof o.prefix == "undefined" && "assert" || o.prefix;
- var includeFail = typeof o.includeFail == "undefined" || !!o.includeFail;
-
- for (var method in this) {
- if (method != "export" && (includeFail || !/^(fail)/.test(method))) {
- target[exposedName(prefix, method)] = this[method];
- }
- }
-
- return target;
- },
-
- match: function match(actual, expectation) {
- var matcher = sinon.match(expectation);
- if (matcher.test(actual)) {
- assert.pass("match");
- } else {
- var formatted = [
- "expected value to match",
- " expected = " + sinon.format(expectation),
- " actual = " + sinon.format(actual)
- ]
- failAssertion(this, formatted.join("\n"));
- }
- }
- };
-
- mirrorPropAsAssertion("called", "expected %n to have been called at least once but was never called");
- mirrorPropAsAssertion("notCalled", function (spy) { return !spy.called; },
- "expected %n to not have been called but was called %c%C");
- mirrorPropAsAssertion("calledOnce", "expected %n to be called once but was called %c%C");
- mirrorPropAsAssertion("calledTwice", "expected %n to be called twice but was called %c%C");
- mirrorPropAsAssertion("calledThrice", "expected %n to be called thrice but was called %c%C");
- mirrorPropAsAssertion("calledOn", "expected %n to be called with %1 as this but was called with %t");
- mirrorPropAsAssertion("alwaysCalledOn", "expected %n to always be called with %1 as this but was called with %t");
- mirrorPropAsAssertion("calledWithNew", "expected %n to be called with new");
- mirrorPropAsAssertion("alwaysCalledWithNew", "expected %n to always be called with new");
- mirrorPropAsAssertion("calledWith", "expected %n to be called with arguments %*%C");
- mirrorPropAsAssertion("calledWithMatch", "expected %n to be called with match %*%C");
- mirrorPropAsAssertion("alwaysCalledWith", "expected %n to always be called with arguments %*%C");
- mirrorPropAsAssertion("alwaysCalledWithMatch", "expected %n to always be called with match %*%C");
- mirrorPropAsAssertion("calledWithExactly", "expected %n to be called with exact arguments %*%C");
- mirrorPropAsAssertion("alwaysCalledWithExactly", "expected %n to always be called with exact arguments %*%C");
- mirrorPropAsAssertion("neverCalledWith", "expected %n to never be called with arguments %*%C");
- mirrorPropAsAssertion("neverCalledWithMatch", "expected %n to never be called with match %*%C");
- mirrorPropAsAssertion("threw", "%n did not throw exception%C");
- mirrorPropAsAssertion("alwaysThrew", "%n did not always throw exception%C");
-
- if (commonJSModule) {
- module.exports = assert;
- } else {
- sinon.assert = assert;
- }
-}(typeof sinon == "object" && sinon || null, typeof window != "undefined" ? window : (typeof self != "undefined") ? self : global));
-
-return sinon;}.call(typeof window != 'undefined' && window || {}));
\ No newline at end of file
diff --git a/test/meteor/assets.js b/test/meteor/assets.js
deleted file mode 100644
index 40f4b40..0000000
--- a/test/meteor/assets.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var assets = [
- 'dist/themes/default/assets/images/flags.png',
-];
-
-// Check that the font files are downloadable. Meteor places assets at /packages/<packageName>/.
-assets.forEach(function (path) {
- Tinytest.addAsync('image ' + path + ' is shipped', function (test, done) {
- HTTP.get('/packages/semantic_ui/' + path, function callback(error, result) {
- if (error) {
- test.fail({message: 'Image failed to load'});
- }
- else {
- test.isTrue(result.content.length > 10000, 'Image ' + path + ' could not be downloaded');
- }
- done();
- });
- });
-});
-
-
diff --git a/test/meteor/fonts.js b/test/meteor/fonts.js
deleted file mode 100644
index 195d515..0000000
--- a/test/meteor/fonts.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// Check that the font files are downloadable. Meteor places assets at /packages/<packageName>/.
-['eot', 'otf', 'svg', 'ttf', 'woff']
- .forEach(function (extension) {
- Tinytest.addAsync(extension + ' fonts are shipped', function (test, done) {
- HTTP.get('/packages/semantic_ui/dist/themes/default/assets/fonts/icons.' + extension, function callback(error, result) {
- if (error) {
- test.fail({message: 'Font failed to load'});
- }
- else {
- test.isTrue(result.content.length > 10000, extension + ' font could not be downloaded');
- }
- done();
- });
- });
- })
-;
\ No newline at end of file
diff --git a/test/modules/accordion.spec.js b/test/modules/accordion.spec.js
deleted file mode 100644
index dde2b27..0000000
--- a/test/modules/accordion.spec.js
+++ /dev/null
@@ -1,10 +0,0 @@
-describe("UI Accordion", function() {
-
- $.fn.dimmer.settings.debug = false;
-
- moduleTests({
- module : 'accordion',
- element : '.ui.accordion'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/checkbox.spec.js b/test/modules/checkbox.spec.js
deleted file mode 100644
index 5c10bf2..0000000
--- a/test/modules/checkbox.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-describe("UI Checkbox", function() {
-
- moduleTests({
- module : 'checkbox',
- element : '.ui.checkbox'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/dropdown.spec.js b/test/modules/dropdown.spec.js
deleted file mode 100644
index 87c13cf..0000000
--- a/test/modules/dropdown.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-describe("UI Dropdown", function() {
-
- moduleTests({
- module : 'dropdown',
- element : '.ui.dropdown'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/modal.spec.js b/test/modules/modal.spec.js
deleted file mode 100644
index f9322fe..0000000
--- a/test/modules/modal.spec.js
+++ /dev/null
@@ -1,10 +0,0 @@
-describe("UI Modal", function() {
-
- $.fn.dimmer.settings.debug = false;
-
- moduleTests({
- module : 'modal',
- element : '.ui.modal'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/module.spec.js b/test/modules/module.spec.js
deleted file mode 100644
index ff26c52..0000000
--- a/test/modules/module.spec.js
+++ /dev/null
@@ -1,218 +0,0 @@
-
-function moduleTests(ui) {
- var
- module = ui.module,
- element = ui.element,
- singleton = ui.singleton,
- name = $.fn[module].settings.name,
-
- testValue = 'Test',
- fixtures = jasmine.getFixtures(),
-
- originalSettings,
- $modules,
- $oneModule,
- $module,
- $clone
- ;
-
- // set fixture path
- fixtures.fixturesPath = 'base/test/fixtures/';
-
- // disable debug
- $.fn[module].settings.debug = false;
- $.fn[module].settings.performance = false;
- $.fn[module].settings.verbose = false;
-
-
- beforeEach(function() {
- // load fixtures
- fixtures.load(module + '.html');
- // save settings
- originalSettings = $.fn[module].settings;
-
- // module available in scope
- $module = $(element);
-
- // one module available in fixture
- if($module.size() == 1) {
- $oneModule = $module;
- $clone = $module.clone().appendTo( $(sandbox()) );
- $modules = $clone.add($module);
- }
- // multiple modules available in fixture
- else {
- $modules = $(element);
- $clone = $module.eq(1);
- $oneModule = $modules.first();
- }
-
- });
-
- afterEach(function() {
- // restore settings
- $.fn[module].settings = originalSettings;
- // remove element
- $(element).remove();
- });
-
- /*******************************
- Module
- *******************************/
-
- /*-------------------
- Instantiation
- --------------------*/
- describe('Module', function() {
-
- it("allows chaining when no settings returned", function() {
- var $chain = $modules[module]();
- expect($chain).toExist();
- expect($chain.size()).toBe($modules.size());
- });
-
- it("returns a string when one setting returned", function() {
- var result = $oneModule[module]('setting', 'name');
- expect(typeof result).toBe('string');
- });
-
- it("returns an array when multiple settings returned", function() {
- var result = $modules[module]('setting', 'name');
- expect( $.isArray(result) ).toBeTruthy();
- });
-
- it("has an instance in metadata after init", function() {
- $oneModule[module]();
- expect($module).toHaveData('module-' + module);
- });
-
- });
-
- /*-------------------
- Settings
- --------------------*/
-
- describe('Settings', function() {
-
- it("clears settings on re-init", function() {
- $oneModule[module]({
- name: testValue
- });
-
- var retrievedValue = $oneModule[module]('setting', 'name');
- expect(retrievedValue).toBe(testValue);
-
- // reinit
- $oneModule[module]();
- retrievedValue = $oneModule[module]('setting', 'name');
- expect(retrievedValue).toBe(name);
- });
-
- it("allows default settings to be changed", function() {
- $.fn[module].settings.name = testValue;
- $oneModule[module]();
-
- var retrievedValue = $oneModule[module]('setting', 'name');
- $.fn[module].settings.name = name;
-
- expect(retrievedValue).toBe(testValue);
- });
-
- it("allows settings to be changed during init", function() {
- $oneModule[module]({
- name: testValue
- });
-
- var retrievedValue = $oneModule[module]('setting', 'name');
-
- expect(retrievedValue).toBe(testValue);
- });
-
- it("allows settings to be changed during runtime", function() {
- $oneModule[module]();
-
- var retrievedValue = $oneModule[module]('setting', 'name');
-
- expect(retrievedValue).toBe(name);
- });
-
- });
-
- /*-------------------
- Groups
- --------------------*/
-
- if(!singleton) {
-
- describe('Group Contamination', function() {
-
- it("creates settings for all instances", function() {
- $modules[module]('setting', 'name', testValue);
-
- var retrievedValue = $oneModule[module]('setting', 'name');
- var clonedSetting = $clone[module]('setting', 'name');
-
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(testValue);
-
- $oneModule[module]({
- 'name': testValue
- });
-
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(testValue);
-
- });
-
- it("does not change other elements settings when changing one element", function() {
- $modules[module]();
- $oneModule[module]('setting', 'name', testValue);
-
- var retrievedValue = $oneModule[module]('setting', 'name');
- var clonedSetting = $clone[module]('setting', 'name');
-
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(name);
-
- });
-
- it("does not change other elements when re-initialized", function() {
- $modules[module]();
-
- $oneModule[module]({
- 'name': testValue
- });
-
- var retrievedValue = $oneModule[module]('setting', 'name');
- var clonedSetting = $clone[module]('setting', 'name');
-
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(name);
-
- });
-
- });
-
- }
-
- /*-------------------
- Destroy
- --------------------*/
- describe('Destroy', function() {
-
- it("removes all events from page", function() {
- $module[module]('destroy');
- if($.events().length > 0) {
- dump($.events());
- }
- expect($.events().length).toBe(0);
- });
-
- it("removes instance metadata", function() {
- $module[module]('destroy');
- expect( $module.data('module-'+ module) ).toBe(undefined);
- });
-
- });
-
-}
\ No newline at end of file
diff --git a/test/modules/popup.spec.js b/test/modules/popup.spec.js
deleted file mode 100644
index 952cee8..0000000
--- a/test/modules/popup.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-xdescribe("UI Popup", function() {
-
- moduleTests({
- module : 'popup',
- element : 'i.icon'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/search.spec.js b/test/modules/search.spec.js
deleted file mode 100644
index 5dd8576..0000000
--- a/test/modules/search.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-xdescribe("UI Search", function() {
-
- moduleTests({
- module : 'search',
- element : '.ui.search'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/shape.spec.js b/test/modules/shape.spec.js
deleted file mode 100644
index c0f284f..0000000
--- a/test/modules/shape.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-describe("UI Shape", function() {
-
- moduleTests({
- module : 'shape',
- element : '.ui.shape'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/sidebar.spec.js b/test/modules/sidebar.spec.js
deleted file mode 100644
index 6ae09ba..0000000
--- a/test/modules/sidebar.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-describe("UI Rating", function() {
-
- moduleTests({
- module : 'rating',
- element : '.ui.rating'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/tab.spec.js b/test/modules/tab.spec.js
deleted file mode 100644
index 0a22ad5..0000000
--- a/test/modules/tab.spec.js
+++ /dev/null
@@ -1,9 +0,0 @@
-xdescribe("UI Tab", function() {
-
- moduleTests({
- module : 'tab',
- element : '.ui.menu .item',
- singleton : true
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/transition.spec.js b/test/modules/transition.spec.js
deleted file mode 100644
index ebfe8fc..0000000
--- a/test/modules/transition.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-xdescribe("UI Transition", function() {
-
- moduleTests({
- module : 'transition',
- element : '.ui.image'
- });
-
-});
\ No newline at end of file
diff --git a/test/modules/video.spec.js b/test/modules/video.spec.js
deleted file mode 100644
index 23ad8ac..0000000
--- a/test/modules/video.spec.js
+++ /dev/null
@@ -1,8 +0,0 @@
-describe("UI Video", function() {
-
- moduleTests({
- module : 'video',
- element : '.ui.video'
- });
-
-});
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/libjs-semanticui.git
More information about the Pkg-javascript-commits
mailing list