Riccardo Balbo 4 年之前
父節點
當前提交
ea18876a37
共有 100 個文件被更改,包括 0 次插入26499 次删除
  1. 0 1
      CNAME
  2. 0 218
      authors/dancso/index.html
  3. 0 21
      authors/dancso/index.xml
  4. 0 1
      authors/dancso/page/1/index.html
  5. 0 208
      authors/frozenshade/index.html
  6. 0 21
      authors/frozenshade/index.xml
  7. 0 1
      authors/frozenshade/page/1/index.html
  8. 0 211
      authors/glh3586/index.html
  9. 0 20
      authors/glh3586/index.xml
  10. 0 1
      authors/glh3586/page/1/index.html
  11. 0 281
      authors/grizeldi/index.html
  12. 0 32
      authors/grizeldi/index.xml
  13. 0 1
      authors/grizeldi/page/1/index.html
  14. 0 263
      authors/index.html
  15. 0 101
      authors/index.xml
  16. 0 232
      authors/itsmike54/index.html
  17. 0 32
      authors/itsmike54/index.xml
  18. 0 1
      authors/itsmike54/page/1/index.html
  19. 0 193
      authors/jayfella/index.html
  20. 0 21
      authors/jayfella/index.xml
  21. 0 1
      authors/jayfella/page/1/index.html
  22. 0 218
      authors/moffkalast/index.html
  23. 0 21
      authors/moffkalast/index.xml
  24. 0 1
      authors/moffkalast/page/1/index.html
  25. 0 1
      authors/page/1/index.html
  26. 0 203
      authors/pspeed/index.html
  27. 0 20
      authors/pspeed/index.xml
  28. 0 1
      authors/pspeed/page/1/index.html
  29. 0 148
      authors/riccardobl/index.html
  30. 0 1
      authors/riccardobl/page/1/index.html
  31. 0 323
      authors/sgold/index.html
  32. 0 59
      authors/sgold/index.xml
  33. 0 1
      authors/sgold/page/1/index.html
  34. 0 379
      blog/index.html
  35. 0 79
      blog/index.xml
  36. 0 540
      blog/interview-danielp/index.html
  37. 0 306
      blog/interview-jayfella/index.html
  38. 0 132
      blog/jme3-3beta2/index.html
  39. 0 131
      blog/jme332/index.html
  40. 0 173
      blog/minie14/index.html
  41. 0 141
      blog/new-store/index.html
  42. 0 137
      contribute/index.html
  43. 0 77
      css/custom.css
  44. 0 0
      css/style.css
  45. 0 163
      docs/index.html
  46. 0 1
      docs/page/1/index.html
  47. 二進制
      favicon.ico
  48. 0 246
      features/index.html
  49. 0 18
      fomantic/semantic.min.css
  50. 二進制
      images/become_a_patron_button.png
  51. 二進制
      images/jme-logo.png
  52. 二進制
      images/main-image.jpg
  53. 二進制
      images/main-image2.jpg
  54. 0 394
      index.html
  55. 0 128
      index.xml
  56. 0 1
      js/custom.js
  57. 0 1
      js/jquery.min.js
  58. 0 10
      js/semantic.min.js
  59. 0 12
      js/showcase.js
  60. 0 29
      lib/fomantic/README.md
  61. 0 221
      lib/fomantic/components/accordion.css
  62. 0 618
      lib/fomantic/components/accordion.js
  63. 0 8
      lib/fomantic/components/accordion.min.css
  64. 0 10
      lib/fomantic/components/accordion.min.js
  65. 0 275
      lib/fomantic/components/ad.css
  66. 0 10
      lib/fomantic/components/ad.min.css
  67. 0 1177
      lib/fomantic/components/api.js
  68. 0 10
      lib/fomantic/components/api.min.js
  69. 0 135
      lib/fomantic/components/breadcrumb.css
  70. 0 9
      lib/fomantic/components/breadcrumb.min.css
  71. 0 4402
      lib/fomantic/components/button.css
  72. 0 8
      lib/fomantic/components/button.min.css
  73. 0 169
      lib/fomantic/components/calendar.css
  74. 0 1562
      lib/fomantic/components/calendar.js
  75. 0 8
      lib/fomantic/components/calendar.min.css
  76. 0 10
      lib/fomantic/components/calendar.min.js
  77. 0 1293
      lib/fomantic/components/card.css
  78. 0 8
      lib/fomantic/components/card.min.css
  79. 0 878
      lib/fomantic/components/checkbox.css
  80. 0 876
      lib/fomantic/components/checkbox.js
  81. 0 8
      lib/fomantic/components/checkbox.min.css
  82. 0 10
      lib/fomantic/components/checkbox.min.js
  83. 0 296
      lib/fomantic/components/comment.css
  84. 0 8
      lib/fomantic/components/comment.min.css
  85. 0 145
      lib/fomantic/components/container.css
  86. 0 9
      lib/fomantic/components/container.min.css
  87. 0 464
      lib/fomantic/components/dimmer.css
  88. 0 753
      lib/fomantic/components/dimmer.js
  89. 0 8
      lib/fomantic/components/dimmer.min.css
  90. 0 10
      lib/fomantic/components/dimmer.min.js
  91. 0 276
      lib/fomantic/components/divider.css
  92. 0 8
      lib/fomantic/components/divider.min.css
  93. 0 1772
      lib/fomantic/components/dropdown.css
  94. 0 4177
      lib/fomantic/components/dropdown.js
  95. 0 8
      lib/fomantic/components/dropdown.min.css
  96. 0 10
      lib/fomantic/components/dropdown.min.js
  97. 0 166
      lib/fomantic/components/embed.css
  98. 0 709
      lib/fomantic/components/embed.js
  99. 0 9
      lib/fomantic/components/embed.min.css
  100. 0 10
      lib/fomantic/components/embed.min.js

+ 0 - 1
CNAME

@@ -1 +0,0 @@
-jmonkeyengine.org

+ 0 - 218
authors/dancso/index.html

@@ -1,218 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/dancso/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/ls_frontier/">
-                                <h2 class="ui header">Lightspeed Frontier</h2>
-                            </a>
-                        </td>
-                        
-                        
-
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact black button" href="https://store.steampowered.com/app/548650/Lightspeed_Frontier/"><i class="steam icon"></i>Available on Steam</a>
-                        </td>
-                        
-
-                        <td class="collapsing">
-                            15 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/ls_frontier/10.jpg"></a>
-                </div>
-                
-                <div class="column">
-                        Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.  …
-                        <a class="ui small compact grey label" href="https://jmonkeyengine.org/showcase/ls_frontier/">
-                            Read More
-                        </a>
-                    
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/moffkalast/120/4606_2.png" />
-                <span> (MoffKalast)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/grizeldi/120/5302_2.png" />
-                <span> (grizeldi)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/d07c76/120.png" />
-                <span> (dansco)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 21
authors/dancso/index.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/dancso/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Tue, 15 Oct 2019 06:27:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/dancso/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>Lightspeed Frontier</title>
-      <link>https://jmonkeyengine.org/showcase/ls_frontier/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/ls_frontier/</guid>
-      <description>Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/dancso/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/dancso/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/dancso/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/dancso/" /></head></html>

+ 0 - 208
authors/frozenshade/index.html

@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/frozenshade/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/skullstone/">
-                                <h2 class="ui header">Skullstone</h2>
-                            </a>
-                        </td>
-                        
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact blue button" href="http://skullstonegame.com/"><i class="external alternate icon"></i>Visit Publisher</a>
-                        </td>
-                        
-
-                        
-
-                        <td class="collapsing">
-                            16 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/skullstone/2.jpg"></a>
-                </div>
-                
-                <div class="column">
-                        Skullstone – a retro styled grid-based dungeon crawler RPG inspired by the good old titles such as Dungeon Master, Stonekeep, Eye of Beholder and many other classics.
-In a few words – a party of mercenaries explore a dungeon. They fight monsters, solve puzzles, find equipment, gather experience and level up while progressing through increasingly difficult levels. And there’s a story behind all that, are you ready to discover the truth behind Skullstone ?  …
-                        <a class="ui small compact grey label" href="https://jmonkeyengine.org/showcase/skullstone/">
-                            Read More
-                        </a>
-                    
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/frozenshade/120/1711_2.png" />
-                <span> (FrozenShade)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 21
authors/frozenshade/index.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/frozenshade/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Wed, 16 Oct 2019 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/frozenshade/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>Skullstone</title>
-      <link>https://jmonkeyengine.org/showcase/skullstone/</link>
-      <pubDate>Wed, 16 Oct 2019 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/skullstone/</guid>
-      <description>Skullstone – a retro styled grid-based dungeon crawler RPG inspired by the good old titles such as Dungeon Master, Stonekeep, Eye of Beholder and many other classics.
-In a few words – a party of mercenaries explore a dungeon. They fight monsters, solve puzzles, find equipment, gather experience and level up while progressing through increasingly difficult levels. And there’s a story behind all that, are you ready to discover the truth behind Skullstone ?</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/frozenshade/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/frozenshade/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/frozenshade/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/frozenshade/" /></head></html>

+ 0 - 211
authors/glh3586/index.html

@@ -1,211 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/glh3586/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/spoxel/">
-                                <h2 class="ui header">Spoxel</h2>
-                            </a>
-                        </td>
-                        
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact blue button" href="http://epagagames.com/spoxel/"><i class="external alternate icon"></i>Visit Publisher</a>
-                        </td>
-                        
-
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact black button" href="https://store.steampowered.com/app/746880/Spoxel/"><i class="steam icon"></i>Available on Steam</a>
-                        </td>
-                        
-
-                        <td class="collapsing">
-                            15 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/spoxel/6.jpg"></a>
-                </div>
-                
-                <div class="column">
-                        Explore, customize, and build across the world of Spoxel as you fight the otherworlders who have subjugated the land and forced the grounders below the surface. Use runes to construct custom powerful spells to use in your adventure or infuse weapons and armor with rare resources to create legendary items of power. Explore an infinite world and delve into other dimensions while you build a base to establish a foothold of power and defend it from your enemies!  …
-                        <a class="ui small compact grey label" href="https://jmonkeyengine.org/showcase/spoxel/">
-                            Read More
-                        </a>
-                    
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/glh3586/120/1963_2.png" />
-                <span>Greg Hoffman (glh3586)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 20
authors/glh3586/index.xml

@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/glh3586/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Tue, 15 Oct 2019 06:27:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/glh3586/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>Spoxel</title>
-      <link>https://jmonkeyengine.org/showcase/spoxel/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/spoxel/</guid>
-      <description>Explore, customize, and build across the world of Spoxel as you fight the otherworlders who have subjugated the land and forced the grounders below the surface. Use runes to construct custom powerful spells to use in your adventure or infuse weapons and armor with rare resources to create legendary items of power. Explore an infinite world and delve into other dimensions while you build a base to establish a foothold of power and defend it from your enemies!</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/glh3586/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/glh3586/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/glh3586/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/glh3586/" /></head></html>

+ 0 - 281
authors/grizeldi/index.html

@@ -1,281 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/grizeldi/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-		<div>
-			
-			<div><p>Code butcherer Specialist. A development enthusiast with with a heavy client/server/web-based background. My fascination with maths is beautifully visualised with jMonkey.</p>
-</div>
-		</div>
-		
-
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/pbr_tutorial/">
-                                <h2 class="ui header">PBR Tutorial</h2>
-                            </a>
-                        </td>
-                        
-                        
-
-                        
-
-                        <td class="collapsing">
-                            21 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/pbr_tutorial/main-image.jpg"></a>
-                </div>
-                
-                <div class="column">
-                        A continuing YouTube series helping users take leap from using the regular Lighting.j3md material to PbrLighting.j3md.
-First part of my tutorial series in which I explain how to use jmonkeyengine&rsquo;s Physically Based Rendering pipeline. Intended for people who already understand how to use the regular Lighting.j3md shader, but have no idea how PBR works.
-Second part of my tutorial series in which I explain how to use jmonkeyengine&rsquo;s Physically Based Rendering pipeline.  …
-                        <a class="ui small compact grey label" href="https://jmonkeyengine.org/showcase/pbr_tutorial/">
-                            Read More
-                        </a>
-                    
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/grizeldi/120/5302_2.png" />
-                <span> (grizeldi)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/ls_frontier/">
-                                <h2 class="ui header">Lightspeed Frontier</h2>
-                            </a>
-                        </td>
-                        
-                        
-
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact black button" href="https://store.steampowered.com/app/548650/Lightspeed_Frontier/"><i class="steam icon"></i>Available on Steam</a>
-                        </td>
-                        
-
-                        <td class="collapsing">
-                            15 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/ls_frontier/10.jpg"></a>
-                </div>
-                
-                <div class="column">
-                        Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.  …
-                        <a class="ui small compact grey label" href="https://jmonkeyengine.org/showcase/ls_frontier/">
-                            Read More
-                        </a>
-                    
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/moffkalast/120/4606_2.png" />
-                <span> (MoffKalast)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/grizeldi/120/5302_2.png" />
-                <span> (grizeldi)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/d07c76/120.png" />
-                <span> (dansco)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 32
authors/grizeldi/index.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/grizeldi/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Mon, 21 Oct 2019 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/grizeldi/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>PBR Tutorial</title>
-      <link>https://jmonkeyengine.org/showcase/pbr_tutorial/</link>
-      <pubDate>Mon, 21 Oct 2019 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/pbr_tutorial/</guid>
-      <description>A continuing YouTube series helping users take leap from using the regular Lighting.j3md material to PbrLighting.j3md.
-First part of my tutorial series in which I explain how to use jmonkeyengine&amp;rsquo;s Physically Based Rendering pipeline. Intended for people who already understand how to use the regular Lighting.j3md shader, but have no idea how PBR works.
-Second part of my tutorial series in which I explain how to use jmonkeyengine&amp;rsquo;s Physically Based Rendering pipeline.</description>
-    </item>
-    
-    <item>
-      <title>Lightspeed Frontier</title>
-      <link>https://jmonkeyengine.org/showcase/ls_frontier/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/ls_frontier/</guid>
-      <description>Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/grizeldi/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/grizeldi/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/grizeldi/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/grizeldi/" /></head></html>

+ 0 - 263
authors/index.html

@@ -1,263 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-		<div>
-			<h1>Authors</h1>
-			
-		</div>
-		
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/itsmike54/"></a></h1>
-	<time>10.05.2020 08:00</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/sgold/"></a></h1>
-	<time>10.05.2020 08:00</time>
-	
-	<div>
-		Sky, animation editing, quaternions, and now physics. What’ll be my next side project?
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/grizeldi/"></a></h1>
-	<time>21.10.2019 08:00</time>
-	
-	<div>
-		Code butcherer Specialist. A development enthusiast with with a heavy client/server/web-based background. My fascination with maths is beautifully visualised with jMonkey.
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/pspeed/"></a></h1>
-	<time>16.10.2019 08:27</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/frozenshade/"></a></h1>
-	<time>16.10.2019 08:00</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/dancso/"></a></h1>
-	<time>15.10.2019 06:27</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/glh3586/"></a></h1>
-	<time>15.10.2019 06:27</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/moffkalast/"></a></h1>
-	<time>15.10.2019 06:27</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/jayfella/"></a></h1>
-	<time>08.10.2019 06:27</time>
-	
-	<div>
-		Code butcherer Specialist. A development enthusiast with with a heavy client/server/web-based background. My fascination with maths is beautifully visualised with jMonkey.
-		
-	</div>
-</article>
-
-		
-			<article>
-	<h1><a href="https://jmonkeyengine.org/authors/riccardobl/"></a></h1>
-	<time>01.01.0001 00:00</time>
-	
-	<div>
-		
-		
-	</div>
-</article>
-
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 101
authors/index.xml

@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>Authors on jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/</link>
-    <description>Recent content in Authors on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Sun, 10 May 2020 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/itsmike54/</link>
-      <pubDate>Sun, 10 May 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/itsmike54/</guid>
-      <description></description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/sgold/</link>
-      <pubDate>Sun, 10 May 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/sgold/</guid>
-      <description>Sky, animation editing, quaternions, and now physics. What’ll be my next side project?</description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/grizeldi/</link>
-      <pubDate>Mon, 21 Oct 2019 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/grizeldi/</guid>
-      <description>Code butcherer Specialist. A development enthusiast with with a heavy client/server/web-based background. My fascination with maths is beautifully visualised with jMonkey.</description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/pspeed/</link>
-      <pubDate>Wed, 16 Oct 2019 08:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/pspeed/</guid>
-      <description></description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/frozenshade/</link>
-      <pubDate>Wed, 16 Oct 2019 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/frozenshade/</guid>
-      <description></description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/dancso/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/dancso/</guid>
-      <description></description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/glh3586/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/glh3586/</guid>
-      <description></description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/moffkalast/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/moffkalast/</guid>
-      <description></description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/jayfella/</link>
-      <pubDate>Tue, 08 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/jayfella/</guid>
-      <description>Code butcherer Specialist. A development enthusiast with with a heavy client/server/web-based background. My fascination with maths is beautifully visualised with jMonkey.</description>
-    </item>
-    
-    <item>
-      <title></title>
-      <link>https://jmonkeyengine.org/authors/riccardobl/</link>
-      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/authors/riccardobl/</guid>
-      <description></description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 232
authors/itsmike54/index.html

@@ -1,232 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/itsmike54/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/jme332/">
-                            <h2 class="ui header">jMonkeyEngine 3.3.2 released</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        10 May 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/jme332/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/itsmike54/120/1989407_2.png" />
-            <i><span> (ItsMike54)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/jme3-3beta2/">
-                            <h2 class="ui header">jMonkeyEngine 3.3.0-beta2 is out!</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        24 March 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Introducing jMonkeyEngine 3.3.0-beta2.
-Today, engine leader Paul Speed successfully released jMonkeyEngine 3.3.0-beta2, marking a new milestone in the advancement towards a stable release of jME3.3. Beta2 introduces many new bug fixes and features with a full list here https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2. New game developers using jME should refrain themselves from using this release in production however. Current stable is v3.2.4 found on the github site. But one more time let&rsquo;s give the core developers a big round of applause as we come ever closer a stable release.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/jme3-3beta2/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/itsmike54/120/1989407_2.png" />
-            <i><span> (ItsMike54)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 32
authors/itsmike54/index.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/itsmike54/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Sun, 10 May 2020 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/itsmike54/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>jMonkeyEngine 3.3.2 released</title>
-      <link>https://jmonkeyengine.org/blog/jme332/</link>
-      <pubDate>Sun, 10 May 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme332/</guid>
-      <description>JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&amp;rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.</description>
-    </item>
-    
-    <item>
-      <title>jMonkeyEngine 3.3.0-beta2 is out!</title>
-      <link>https://jmonkeyengine.org/blog/jme3-3beta2/</link>
-      <pubDate>Tue, 24 Mar 2020 12:44:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme3-3beta2/</guid>
-      <description>Introducing jMonkeyEngine 3.3.0-beta2.
-Today, engine leader Paul Speed successfully released jMonkeyEngine 3.3.0-beta2, marking a new milestone in the advancement towards a stable release of jME3.3. Beta2 introduces many new bug fixes and features with a full list here https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2. New game developers using jME should refrain themselves from using this release in production however. Current stable is v3.2.4 found on the github site. But one more time let&amp;rsquo;s give the core developers a big round of applause as we come ever closer a stable release.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/itsmike54/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/itsmike54/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/itsmike54/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/itsmike54/" /></head></html>

+ 0 - 193
authors/jayfella/index.html

@@ -1,193 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/jayfella/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-		<div>
-			
-			<div><p>Code butcherer Specialist. A development enthusiast with with a heavy client/server/web-based background. My fascination with maths is beautifully visualised with jMonkey.</p>
-</div>
-		</div>
-		
-
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/new-store/">
-                            <h2 class="ui header">jMonkeyStore is Now Open!</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        08 October 2019
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        After years of requests and attempts, a software store (a.k.a an asset store) for jmonkey has finally been created and is now open to registration. Everybody can register and submit their software!
-https://store.jmonkeyengine.org/   Currently only free open-source software can be submitted. Once we have the sponsorship required for the legal documentation and setup fees we will be able to allow selling (payment required to use it) and sponsoring (pay the developer if you want to as a thank you) software.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/new-store/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://gravatar.com/avatar/2083c0279207e1696d52c15ca66b5c64" />
-            <i><span>James Khan (jayfella)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 21
authors/jayfella/index.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/jayfella/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Tue, 08 Oct 2019 06:27:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/jayfella/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>jMonkeyStore is Now Open!</title>
-      <link>https://jmonkeyengine.org/blog/new-store/</link>
-      <pubDate>Tue, 08 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/new-store/</guid>
-      <description>After years of requests and attempts, a software store (a.k.a an asset store) for jmonkey has finally been created and is now open to registration. Everybody can register and submit their software!
-https://store.jmonkeyengine.org/   Currently only free open-source software can be submitted. Once we have the sponsorship required for the legal documentation and setup fees we will be able to allow selling (payment required to use it) and sponsoring (pay the developer if you want to as a thank you) software.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/jayfella/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/jayfella/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/jayfella/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/jayfella/" /></head></html>

+ 0 - 218
authors/moffkalast/index.html

@@ -1,218 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/moffkalast/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/ls_frontier/">
-                                <h2 class="ui header">Lightspeed Frontier</h2>
-                            </a>
-                        </td>
-                        
-                        
-
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact black button" href="https://store.steampowered.com/app/548650/Lightspeed_Frontier/"><i class="steam icon"></i>Available on Steam</a>
-                        </td>
-                        
-
-                        <td class="collapsing">
-                            15 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/ls_frontier/10.jpg"></a>
-                </div>
-                
-                <div class="column">
-                        Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.  …
-                        <a class="ui small compact grey label" href="https://jmonkeyengine.org/showcase/ls_frontier/">
-                            Read More
-                        </a>
-                    
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/moffkalast/120/4606_2.png" />
-                <span> (MoffKalast)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/grizeldi/120/5302_2.png" />
-                <span> (grizeldi)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/d07c76/120.png" />
-                <span> (dansco)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 21
authors/moffkalast/index.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/moffkalast/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Tue, 15 Oct 2019 06:27:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/moffkalast/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>Lightspeed Frontier</title>
-      <link>https://jmonkeyengine.org/showcase/ls_frontier/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/ls_frontier/</guid>
-      <description>Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/moffkalast/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/moffkalast/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/moffkalast/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/moffkalast/" /></head></html>

+ 0 - 1
authors/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/" /></head></html>

+ 0 - 203
authors/pspeed/index.html

@@ -1,203 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/pspeed/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-			<div class="ui raised segments">
-        <div class="ui green segment">
-            <table class="ui very basic compact table">
-                <tbody>
-                    <tr>
-                        
-                        <td>
-                            <a href="https://jmonkeyengine.org/showcase/mythruna/">
-                                <h2 class="ui header">Mythruna</h2>
-                            </a>
-                        </td>
-                        
-                        
-                        <td class="collapsing">
-                            <a class="ui small circular compact blue button" href="http://mythruna.com/"><i class="external alternate icon"></i>Visit Publisher</a>
-                        </td>
-                        
-
-                        
-
-                        <td class="collapsing">
-                            16 October 2019
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        
-        <div class="ui segment">
-    
-            <div class="ui two column stackable grid">
-                    
-                <div class="column">
-                        <img class="ui fluid image" src="/images/showcase/mythruna/20.png"></a>
-                </div>
-                
-                <div class="column">
-                        Mythruna (myth + rune + a) is a game under development attempting to combine serious role playing elements with an endless, living, and completely modifiable randomly generated sandbox world. When completed, Mythruna will be a unique gaming experience. 
-                </div>
-    
-            </div>
-    
-            
-        </div>
-    
-        <div class="ui segment">
-            By:&nbsp;&nbsp;&nbsp;&nbsp;
-                <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/pspeed/120/516_2.png" />
-                <span>Paul Speed (pspeed)</span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;
-                
-            
-        </div> 
-    </div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 20
authors/pspeed/index.xml

@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/pspeed/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Wed, 16 Oct 2019 08:27:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/pspeed/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>Mythruna</title>
-      <link>https://jmonkeyengine.org/showcase/mythruna/</link>
-      <pubDate>Wed, 16 Oct 2019 08:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/mythruna/</guid>
-      <description>Mythruna (myth + rune + a) is a game under development attempting to combine serious role playing elements with an endless, living, and completely modifiable randomly generated sandbox world. When completed, Mythruna will be a unique gaming experience.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/pspeed/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/pspeed/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/pspeed/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/pspeed/" /></head></html>

+ 0 - 148
authors/riccardobl/index.html

@@ -1,148 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/riccardobl/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-
-		
-		<div>
-
-1 of 0
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 1
authors/riccardobl/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/riccardobl/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/riccardobl/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/riccardobl/" /></head></html>

+ 0 - 323
authors/sgold/index.html

@@ -1,323 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/authors/sgold/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-	<main>
-		
-		<div>
-			
-			<div><p>Sky, animation editing, quaternions, and now physics. What’ll be my next side project?</p>
-</div>
-		</div>
-		
-
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/jme332/">
-                            <h2 class="ui header">jMonkeyEngine 3.3.2 released</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        10 May 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/jme332/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/itsmike54/120/1989407_2.png" />
-            <i><span> (ItsMike54)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/interview-danielp/">
-                            <h2 class="ui header">Sgold interviews Daniel Perano</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        25 February 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Sgold:
-Thank you for agreeing to be interviewed.
-First question: Do you remember when you first encountered JMonkeyEngine? What was your first impression?
-  Daniel Perano:
-I started learning jME back in the 3.0 days, as I recall, and I was impressed with the features it offered. The scene-graph control and appstate design made a lot of sense to me &mdash; at the time both were novel concepts.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/interview-danielp/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/interview-jayfella/">
-                            <h2 class="ui header">Sgold interviews Jayfella</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        15 February 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Sgold:
-Thank you for agreeing to be interviewed.
-First question: When did you first hear about JMonkeyEngine?
-  Jayfella:
-Way back in 2014, after a long period of developing desktop applications, servers, and minecraft plugins, I decided to look into writing games. At that time I was more into C#, but XNA was a sinking ship, so looked at alternatives. I found jMonkey and gave it a shot.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/interview-jayfella/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-			<div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/minie14/">
-                            <h2 class="ui header">Minie Physics Library Version 1.4 Released!</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        09 February 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Minie version 1.4 is an exciting new add-on for the JMonkeyEngine (JME) game engine.
-  Minie provides an open-source physics engine for desktop games. It gives software developers using JME access to the proven technology of the Bullet Physics SDK version 2.89, including:
- rigid-body dynamics, soft bodies, collision detection, vehicle and character controllers, ray and sweep tests, and dynamic constraints.  Minie incorporates DynamicAnimControl technology for ragdoll simulation and inverse kinematics.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/minie14/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-		
-		<div>
-
-1 of 1
-
-</div>
-
-	</main>
-<aside>
-	<div>
-		<div>
-			<h3>LATEST POSTS</h3>
-		</div>
-		<div>
-			<ul>
-				
-				<li><a href="/blog/jme332/">jMonkeyEngine 3.3.2 released</a></li>
-				
-				<li><a href="/blog/jme3-3beta2/">jMonkeyEngine 3.3.0-beta2 is out!</a></li>
-				
-				<li><a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></li>
-				
-				<li><a href="/blog/interview-jayfella/">Sgold interviews Jayfella</a></li>
-				
-				<li><a href="/blog/minie14/">Minie Physics Library Version 1.4 Released!</a></li>
-				
-			</ul>
-		</div>
-	</div>
-</aside>
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 59
authors/sgold/index.xml

@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/authors/sgold/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Sun, 10 May 2020 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/authors/sgold/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>jMonkeyEngine 3.3.2 released</title>
-      <link>https://jmonkeyengine.org/blog/jme332/</link>
-      <pubDate>Sun, 10 May 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme332/</guid>
-      <description>JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&amp;rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.</description>
-    </item>
-    
-    <item>
-      <title>Sgold interviews Daniel Perano</title>
-      <link>https://jmonkeyengine.org/blog/interview-danielp/</link>
-      <pubDate>Tue, 25 Feb 2020 18:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/interview-danielp/</guid>
-      <description>Sgold:
-Thank you for agreeing to be interviewed.
-First question: Do you remember when you first encountered JMonkeyEngine? What was your first impression?
-  Daniel Perano:
-I started learning jME back in the 3.0 days, as I recall, and I was impressed with the features it offered. The scene-graph control and appstate design made a lot of sense to me &amp;mdash; at the time both were novel concepts.</description>
-    </item>
-    
-    <item>
-      <title>Sgold interviews Jayfella</title>
-      <link>https://jmonkeyengine.org/blog/interview-jayfella/</link>
-      <pubDate>Sat, 15 Feb 2020 12:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/interview-jayfella/</guid>
-      <description>Sgold:
-Thank you for agreeing to be interviewed.
-First question: When did you first hear about JMonkeyEngine?
-  Jayfella:
-Way back in 2014, after a long period of developing desktop applications, servers, and minecraft plugins, I decided to look into writing games. At that time I was more into C#, but XNA was a sinking ship, so looked at alternatives. I found jMonkey and gave it a shot.</description>
-    </item>
-    
-    <item>
-      <title>Minie Physics Library Version 1.4 Released!</title>
-      <link>https://jmonkeyengine.org/blog/minie14/</link>
-      <pubDate>Sun, 09 Feb 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/minie14/</guid>
-      <description>Minie version 1.4 is an exciting new add-on for the JMonkeyEngine (JME) game engine.
-  Minie provides an open-source physics engine for desktop games. It gives software developers using JME access to the proven technology of the Bullet Physics SDK version 2.89, including:
- rigid-body dynamics, soft bodies, collision detection, vehicle and character controllers, ray and sweep tests, and dynamic constraints.  Minie incorporates DynamicAnimControl technology for ragdoll simulation and inverse kinematics.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
authors/sgold/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/authors/sgold/</title><link rel="canonical" href="https://jmonkeyengine.org/authors/sgold/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/authors/sgold/" /></head></html>

+ 0 - 379
blog/index.html

@@ -1,379 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/blog/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>Blog</h1>    
-        <p>All the latest news and updates from the jMonkey community.</p>
-
-        <br />
-
-        
-        
-            <div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/jme332/">
-                            <h2 class="ui header">jMonkeyEngine 3.3.2 released</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        10 May 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/jme332/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/itsmike54/120/1989407_2.png" />
-            <i><span> (ItsMike54)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-        
-            <div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/jme3-3beta2/">
-                            <h2 class="ui header">jMonkeyEngine 3.3.0-beta2 is out!</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        24 March 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Introducing jMonkeyEngine 3.3.0-beta2.
-Today, engine leader Paul Speed successfully released jMonkeyEngine 3.3.0-beta2, marking a new milestone in the advancement towards a stable release of jME3.3. Beta2 introduces many new bug fixes and features with a full list here https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2. New game developers using jME should refrain themselves from using this release in production however. Current stable is v3.2.4 found on the github site. But one more time let&rsquo;s give the core developers a big round of applause as we come ever closer a stable release.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/jme3-3beta2/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/itsmike54/120/1989407_2.png" />
-            <i><span> (ItsMike54)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-        
-            <div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/interview-danielp/">
-                            <h2 class="ui header">Sgold interviews Daniel Perano</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        25 February 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Sgold:
-Thank you for agreeing to be interviewed.
-First question: Do you remember when you first encountered JMonkeyEngine? What was your first impression?
-  Daniel Perano:
-I started learning jME back in the 3.0 days, as I recall, and I was impressed with the features it offered. The scene-graph control and appstate design made a lot of sense to me &mdash; at the time both were novel concepts.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/interview-danielp/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-        
-            <div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/interview-jayfella/">
-                            <h2 class="ui header">Sgold interviews Jayfella</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        15 February 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Sgold:
-Thank you for agreeing to be interviewed.
-First question: When did you first hear about JMonkeyEngine?
-  Jayfella:
-Way back in 2014, after a long period of developing desktop applications, servers, and minecraft plugins, I decided to look into writing games. At that time I was more into C#, but XNA was a sinking ship, so looked at alternatives. I found jMonkey and gave it a shot.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/interview-jayfella/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-        
-            <div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/minie14/">
-                            <h2 class="ui header">Minie Physics Library Version 1.4 Released!</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        09 February 2020
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        Minie version 1.4 is an exciting new add-on for the JMonkeyEngine (JME) game engine.
-  Minie provides an open-source physics engine for desktop games. It gives software developers using JME access to the proven technology of the Bullet Physics SDK version 2.89, including:
- rigid-body dynamics, soft bodies, collision detection, vehicle and character controllers, ray and sweep tests, and dynamic constraints.  Minie incorporates DynamicAnimControl technology for ragdoll simulation and inverse kinematics.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/minie14/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-            <i><span>Stephen Gold (sgold)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-        
-            <div class="ui raised segments">
-    <div class="ui orange segment">
-        <table class="ui very basic compact table">
-            <tbody>
-                <tr>
-                    
-                    <td>
-                        <a href="https://jmonkeyengine.org/blog/new-store/">
-                            <h2 class="ui header">jMonkeyStore is Now Open!</h2>
-                        </a>
-                    </td>
-
-                    <td class="collapsing">
-                        08 October 2019
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
-    
-    <div class="ui segment">
-        After years of requests and attempts, a software store (a.k.a an asset store) for jmonkey has finally been created and is now open to registration. Everybody can register and submit their software!
-https://store.jmonkeyengine.org/   Currently only free open-source software can be submitted. Once we have the sponsorship required for the legal documentation and setup fees we will be able to allow selling (payment required to use it) and sponsoring (pay the developer if you want to as a thank you) software.  …
-            <a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/new-store/">
-                Read More
-            </a>
-        
-    </div>
-
-    <div class="ui segment">
-        By:&nbsp;&nbsp;&nbsp;&nbsp;
-            <img class="ui avatar image" src="https://gravatar.com/avatar/2083c0279207e1696d52c15ca66b5c64" />
-            <i><span>James Khan (jayfella)</span></i>
-                &nbsp;&nbsp;&nbsp;&nbsp;
-            
-        
-    </div> 
-</div>
-        
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-    
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 79
blog/index.xml

@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>Blog on jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/blog/</link>
-    <description>Recent content in Blog on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Sun, 10 May 2020 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/blog/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>jMonkeyEngine 3.3.2 released</title>
-      <link>https://jmonkeyengine.org/blog/jme332/</link>
-      <pubDate>Sun, 10 May 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme332/</guid>
-      <description>JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&amp;rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.</description>
-    </item>
-    
-    <item>
-      <title>jMonkeyEngine 3.3.0-beta2 is out!</title>
-      <link>https://jmonkeyengine.org/blog/jme3-3beta2/</link>
-      <pubDate>Tue, 24 Mar 2020 12:44:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme3-3beta2/</guid>
-      <description>Introducing jMonkeyEngine 3.3.0-beta2.
-Today, engine leader Paul Speed successfully released jMonkeyEngine 3.3.0-beta2, marking a new milestone in the advancement towards a stable release of jME3.3. Beta2 introduces many new bug fixes and features with a full list here https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2. New game developers using jME should refrain themselves from using this release in production however. Current stable is v3.2.4 found on the github site. But one more time let&amp;rsquo;s give the core developers a big round of applause as we come ever closer a stable release.</description>
-    </item>
-    
-    <item>
-      <title>Sgold interviews Daniel Perano</title>
-      <link>https://jmonkeyengine.org/blog/interview-danielp/</link>
-      <pubDate>Tue, 25 Feb 2020 18:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/interview-danielp/</guid>
-      <description>Sgold:
-Thank you for agreeing to be interviewed.
-First question: Do you remember when you first encountered JMonkeyEngine? What was your first impression?
-  Daniel Perano:
-I started learning jME back in the 3.0 days, as I recall, and I was impressed with the features it offered. The scene-graph control and appstate design made a lot of sense to me &amp;mdash; at the time both were novel concepts.</description>
-    </item>
-    
-    <item>
-      <title>Sgold interviews Jayfella</title>
-      <link>https://jmonkeyengine.org/blog/interview-jayfella/</link>
-      <pubDate>Sat, 15 Feb 2020 12:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/interview-jayfella/</guid>
-      <description>Sgold:
-Thank you for agreeing to be interviewed.
-First question: When did you first hear about JMonkeyEngine?
-  Jayfella:
-Way back in 2014, after a long period of developing desktop applications, servers, and minecraft plugins, I decided to look into writing games. At that time I was more into C#, but XNA was a sinking ship, so looked at alternatives. I found jMonkey and gave it a shot.</description>
-    </item>
-    
-    <item>
-      <title>Minie Physics Library Version 1.4 Released!</title>
-      <link>https://jmonkeyengine.org/blog/minie14/</link>
-      <pubDate>Sun, 09 Feb 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/minie14/</guid>
-      <description>Minie version 1.4 is an exciting new add-on for the JMonkeyEngine (JME) game engine.
-  Minie provides an open-source physics engine for desktop games. It gives software developers using JME access to the proven technology of the Bullet Physics SDK version 2.89, including:
- rigid-body dynamics, soft bodies, collision detection, vehicle and character controllers, ray and sweep tests, and dynamic constraints.  Minie incorporates DynamicAnimControl technology for ragdoll simulation and inverse kinematics.</description>
-    </item>
-    
-    <item>
-      <title>jMonkeyStore is Now Open!</title>
-      <link>https://jmonkeyengine.org/blog/new-store/</link>
-      <pubDate>Tue, 08 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/new-store/</guid>
-      <description>After years of requests and attempts, a software store (a.k.a an asset store) for jmonkey has finally been created and is now open to registration. Everybody can register and submit their software!
-https://store.jmonkeyengine.org/   Currently only free open-source software can be submitted. Once we have the sponsorship required for the legal documentation and setup fees we will be able to allow selling (payment required to use it) and sponsoring (pay the developer if you want to as a thank you) software.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 540
blog/interview-danielp/index.html

@@ -1,540 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>Sgold interviews Daniel Perano</h1>    
-        <p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Thank you for agreeing to be interviewed.</p>
-<p>First question: Do you remember when you first encountered JMonkeyEngine?
-What was your first impression?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>I started learning jME back in the 3.0 days, as I recall,
-and I was impressed with the features it offered.
-The scene-graph control and appstate design made a lot of sense to me &mdash;
-at the time both were novel concepts.</p>
-<p>Not long after that, I adopted jME for a project called “OpenWorld.”</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What sort of project was it?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>OpenWorld was the precursor to MyWorld &mdash;
-a platform for real-time, 3-D social virtual worlds and MMO games.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What got you interested in social virtual worlds?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>I first heard of them from
-a magazine article about Second Life, over a decade ago.
-I was fascinated, and despite being underage
-(accounts were restricted to users 18 and over), I created an account.</p>
-<p>Since I was underage my adventures there did not last long, but
-I was hooked from the start.
-It was like a game, but there were so many things to do and places to explore,
-and the built-in creation system blew my mind.</p>
-<p>A couple years later, I discovered OpenSimulator,
-an open-source server that’s compatible with Second Life clients (viewers).
-Since then, I’ve been a member of various OpenSimulator virtual worlds (or grids, as they’re called).</p>
-<p>During my second year in OpenSimulator, I began to keenly notice
-some limitations that OpenSimulator inherited from Second Life.
-Compared to multi-player games, virtual worlds always felt slow and bloated,
-and the architecture was fundamentally limiting.</p>
-<p>At that point I had the idea that grew into MyWorld:
-apply multiplayer game technology to social virtual worlds.
-Later on, I realized that a social virtual-world platform
-could also be a powerful MMO gaming platform, and
-since then I’ve worked towards the dual goal of supporting
-social virtual worlds and MMO games as first-class citizens on MyWorld.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>How many people are working on MyWorld?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>We have three people on the project.
-Right now I’m the sole developer &mdash;
-the other two handle business management,
-social media, and aesthetics (art and design).</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>How is the project funded?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>We’re fully self-funded: no investor or venture-capital backing.
-We see this as an advantage, for two reasons:</p>
-<ol>
-<li>We’re not beholden to shareholders,
-so we’re free to make decisions that bring the best experience to our users.</li>
-<li>Our runway is infinitely long &mdash; we have no pressure to grow rapidly to avoid bankruptcy.
-We can grow organically and sustainably.</li>
-</ol>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>When’s the next release of MyWorld due out?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Our first alpha/preview release
-will come out around the end of March of this year (2020).</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What features will it provide?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>The feature set will depend on what we have time to finish.
-Dynamic asset delivery/loading, the entity system, and scripting
-are in pretty good shape,
-but the user interface still needs work
-and there are many small “detail features” that need attention.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>In the long run, what will differentiate MyWorld from other virtual worlds?
-Specifically, how would you compare it to Minecraft and Second Life?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Unlike Minecraft, MyWorld is not a game itself &mdash;
-it’s a platform that supports dynamic content creation and scripting,
-and unlike games more generally, MyWorld provides first-class support
-for uploading 3D models, textures, audio, etcetera
-and distributing them to clients on an as-needed basis.
-It also has a professional-grade scripting language you can use
-to add custom behavior to your creations.</p>
-<p>Unlike current-generation virtual worlds,
-MyWorld was designed from Day One to satisfy
-the performance requirements of multiplayer action games.
-This means that exploring a virtual world can have the same fast,
-fluid feel as playing a well-designed multiplayer game.</p>
-<p>Another difference is that we support scripting on both client and server,
-allowing scripted effects and latency-elimination techniques
-that are impossible in current virtual worlds.</p>
-<p>In addition, our internal systems can be extended via plugins
-that can integrate into the entity system and
-host or call HTTP endpoints (for custom REST APIs, for example).
-Plugins can even extend the core network protocol
-with jME’s fast, intuitive, and efficient RMI implementation.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What’s the financial model? Will the client be freely downloadable?
-Will there be paid subscriptions? Free-to-play accounts?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Our vision for MyWorld has always been to release it open-source,
-so the client will always be free to download and use, as will the core server.
-We may eventually release some commercial plugins for professional use,
-but these would be extensions to the core server,
-not permanently built-in proprietary code.</p>
-<p>In a project like MyWorld,
-there are many opportunities to provide value to users,
-so there are many potential revenue streams.
-Initially we’re looking at a revenue model similar to Second Life:
-users can rent space in the virtual world to build homes,
-businesses, workshops, etcetera.
-We may also introduce a subscription model that offers
-extra benefits to heavy users.</p>
-<p>We’re also investigating how we can monetize
-by offering professional hosting and support services to game developers
-and those interested in running MyWorld servers.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>I’ve heard that Second Life has its own currency.
-Do you have plans in that area?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>While MyWorld needs a virtual currency to effectively operate,
-issuing one ourselves is not currently a viable choice for a couple of reasons:</p>
-<ol>
-<li>
-<p>Issuing in-house currency is a large financial liability &mdash;
-there are many ways to destabilize an economy, virtual or otherwise,
-that are largely or completely outside the control of the currency issuer,
-which would present a risk both to us and our users.</p>
-</li>
-<li>
-<p>Governments have begun regulating virtual currencies,
-making it expensive and difficult to issue them.</p>
-</li>
-</ol>
-<p>Fortunately, we’re not the only ones with this need
-and there are several good virtual currency services,
-some of which allow the same currency to be used across many games or virtual worlds.</p>
-<p>So yes, we will have a virtual currency,
-but we’re not planning on issuing it ourselves.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>You mentioned earlier that Second Life was age-restricted.
-Will MyWorld have similar restrictions?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Initially yes, unfortunately.
-Allowing minors requires extra legal compliance
-and stringent moderation of content and user interactions.</p>
-<p>I don’t see this as a notable limitation, especially early on.
-Most of our initial user base will be developers and creators,
-not general users,
-so I expect the overwhelming majority of interest to be coming from adults.</p>
-<p>I want to allow minors to access at least some areas within MyWorld
-as soon as it makes sense for us as an organization and community,
-but for now we need to focus on the technical aspects.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Does MyWorld use JMonkeyEngine for the client, the server, or both?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>The client is a typical jME application &mdash;
-AppStates tie MyWorld-specific libraries (such as our in-house entity system)
-to other systems and the scene graph.</p>
-<p>The server uses jME’s network stack,
-and we’re transitioning from jME’s physics to Minie, but that’s about all.
-The server’s systems and heartbeat/event dispatch loop are all custom &mdash;
-we don’t use jME’s application structure serverside.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What technologies does MyWorld use besides JMonkeyEngine?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>It uses JavaFX, Lemur, Chipmunk (our in-house scripting language),
-Jetty (an embedded HTTP server), and CockroachDB (a distributed SQL database).</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What prompted you to create Chipmunk?
-What other scripting languages did you consider?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Chipmunk was born out of necessity.</p>
-<p>Like Second Life,
-MyWorld allows content creators to script anything they create.
-Scripting can include physics, movement, particle/sound/animation effects,
-HTTP calls, etcetera.</p>
-<p>The problems here are security and resource use.
-Since anyone with creation privileges can upload scripts to a server
-(and scripts can also run client side), sandboxing is a must.</p>
-<p>My first choice for scripting was Groovy.
-It’s a powerful, well-known language with many features,
-and the compiler supports AST transformations for customizing compiled code.
-I spent a great deal of time pursuing this route,
-but the shoe always pinched in the same spots: preemption and checkpointing.</p>
-<p>Preemption means that the script engine can stop a running script at any time.
-This is necessary to ensure that misbehaving (or resource-intensive) scripts
-don’t overuse CPU resources.
-Preemption is also necessary for checkpointing:
-freezing a script so it can be persisted to disk or sent to another server.</p>
-<p>Java was not designed for preemption.
-Every mechanism I could think of to fit preemption support
-into Java’s compiled bytecode came with substantial overhead and other nasty limitations.</p>
-<p>I also experimented with an assembly-like language for scripting,
-but it was too difficult to read to be suitable for anything more than trivial scripts.</p>
-<p>I designed Chipmunk to fit a unique place in the language spectrum &mdash;
-easy for a first-time programmer to pick up,
-but powerful enough for an experienced developer to hit the ground running.
-For example, classes declare state that’s shared between all instances
-via the “shared” keyword,
-which is semantically identical to Java’s “static” keyword,
-but expresses the concept in terms that make intuitive sense
-to inexperienced programmers.</p>
-<p>In terms of features, Chipmunk supports modules, classes, polymorphism,
-first-class functions, anonymous (lambda) functions, exceptions,
-and dynamic typing.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Chipmunk sounds like it might have many uses.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>I hope so! I’m looking forward to seeing what else it’s used for.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Is there any published documentation for it?
-Is it open-source?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Chipmunk is developed separately from MyWorld and will be released
-open-source as soon as we’ve finalized the v1.0 language spec
-and finished implementing the standard library.</p>
-<p>The main language features are functional, but it needs more attention
-on things like string manipulation, collection operations, and libraries.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Part of the appeal of an open world, I think,
-is having a place to exhibit digital creations.</p>
-<p>What skills/tools would someone need to create and upload a 3-D model?
-Do you envision people using Blender 3D?</p>
-<p>What audio formats will MyWorld support?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>MyWorld is built around the assumption that users will create digital content.
-One of the first things I wrote was the dynamic asset upload/download mechanism.</p>
-<p>Our initial creation pipeline is based around the GLTF format.
-Thanks to jME’s GLTF importer, most modern GLTF files should import seamlessly.
-Our primary interest in external tools is Blender 3D,
-but anything that exports to GLTF should do fine.</p>
-<p>Later on, we plan to support in-world creation via constructive solid geometry
-with procedural extensions, as a supplement to the GLTF pipeline.</p>
-<p>Any audio format supported by jME (OGG &amp; WAV in particular)
-can be opened by the client for upload.
-Streaming media can be in any format supported by JavaFX’s media framework.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>If someone wants to develop games for MyWorld, where should they begin?
-Is there an e-mail list for announcements?
-A website they should monitor?
-A chatroom they should join?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>The best place to go is our <a href="https://discordapp.com/invite/WccnrWg">Discord server</a>.
-We have an active community there,
-and we often discuss planned or requested features.
-It’s also the first place we share development updates
-and news about the project.
-For anyone wishing to participate in the alpha-test release,
-this is the place to be.</p>
-<p>Our <a href="https://www.facebook.com/MyWorld-LLC-228751528045088">Facebook</a>
-and <a href="https://twitter.com/MyWorldLLC">Twitter</a> pages
-cover major news items and announcements,
-and liking/following us there helps us get the word out to more people!</p>
-<p>For general project information, blog posts, and press releases,
-the <a href="https://myworldvw.com/">MyWorld website</a> is the place to go.
-We archive the notes from our monthly “MyWorld Meetup” sessions on the blog &mdash;
-these are a great resource for finding out details about the project.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>I’ve run out of questions.
-Unless there’s something more you’d like to discuss, let’s wrap this up.</p>
-<p>Thank you very much for your detailed answers
-and all the time and care you put into them.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/letter_avatar_proxy/v4/letter/d/82dd89/120.png" height="45px"/> 
-</figure>
-
-Daniel Perano:</p>
-<p>Thank you! I enjoyed the interview, and I’m looking forward to seeing how jME continues to grow and improve – there’s a lot of great talent behind this project!</p>
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 306
blog/interview-jayfella/index.html

@@ -1,306 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>Sgold interviews Jayfella</h1>    
-        <p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Thank you for agreeing to be interviewed.</p>
-<p>First question: When did you first hear about JMonkeyEngine?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>Way back in 2014, after a long period of developing desktop applications,
-servers, and minecraft plugins, I decided to look into writing games.
-At that time I was more into C#, but XNA was a sinking ship,
-so looked at alternatives.
-I found jMonkey and gave it a shot.</p>
-<p>What made me stay with JME was the community.
-Actual developers of the engine would respond to my questions,
-which was encouraging and made me want to continue with it and contribute back.
-A lot of what I know now is down to the fact that people far more educated
-in game development than me took the time to share their knowledge.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>I had a similar experience.</p>
-<p>What were your first steps? Did you install the SDK right away?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>I did install the SDK!
-At that time the SDK was “the thing to use,” and it was a cutting-edge tool.</p>
-<p>I distinctly remember making an infinite-terrain world with a
-2-D heightmap and cars.</p>
-<p>And I remember some of the first mistakes I made, too:
-wondering why adding lights everywhere was slowing down my game
-(in a forward-rendering pipeline) and why shadows weren’t realistic
-with multiple lights.</p>
-<p>I also remember Normen Hansen tutoring me into developing plugins
-and improving the SDK.
-For me, that was great.
-I felt like part of the family, and it was extremely encouraging to
-interact with such an intelligent and giving bunch of developers.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Suppose the old you (from 2014) was transported to the present,
-as a newcomer to the JMonkeyEngine community.
-What advice would you give yourself?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>Good question.</p>
-<p>I think it’s important to make mistakes to become better at what you do.
-We all start with big ideas,
-and virtually all come to realize it’s way more difficult than we anticipated.
-That’s a learning process we all need to go through.</p>
-<p>So my advice would be to keep doing what you’re doing,
-but don’t be disheartened by not achieving your goals on the first attempt.
-It takes years to become proficient.</p>
-<p>Listen to those that know better and try to understand why they came to
-that conclusion.</p>
-<p>Learning is not always about being right!</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Just so!</p>
-<p>Next question: You’re currently JMonkeyEngine’s community manager.
-How did that role come about?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>My primary talent is finding ways of getting things done.
-If it can be done, I can do it.
-That’s always been my attitude.</p>
-<p>When it became apparent that there was a lack of direction,
-it rolled around in my head for quite some time.
-What could do to improve things?
-Did I have it in myself to keep the momentum going?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>How has your passion for the role evolved?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>My passion for the job remains the same as it was when I took the role,
-but I must admit it is a challenge!</p>
-<p>I’ve managed companies, people, websites, servers, and all things in-between,
-but I’ve never managed an open-source project of this size.
-You don’t pay people.
-You have no definite control over what people do or don&rsquo;t do.
-Instead you have to rely on support, trust, and a rather large dose of
-doing it yourself to encourage movement.</p>
-<p>It’s very rewarding to work together to keep jMonkey alive
-and to see genuine improvement as time goes by.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Of all your JMonkeyEngine projects,
-which have given you the greatest satisfaction?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>The most satisfying thing I’ve written for jMonkey is the JmonkeyStore.
-It’s nice to create something that brings people together and provides
-so much use.</p>
-<p><a href="https://store.jmonkeyengine.org">https://store.jmonkeyengine.org</a></p>
-<p>If I had to choose something other than the store, it would be the
-shadows project for my game Animalia.
-It took me over a week &mdash; probably ten days &mdash;
-and countless headaches to get it just right, and when it finally worked
-it was ultra satisfying to have overcome all the issues.</p>
-<p><a href="https://www.youtube.com/watch?v=UfZyf9jG8PI&amp;t=5s">https://www.youtube.com/watch?v=UfZyf9jG8PI&amp;t=5s</a></p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>What’s next for JmonkeyStore?
-Are you still adding features?
-Where do we stand with respect to its Patreon goals?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>I’d love to allow buying and selling software.</p>
-<p>There will also be the option of giving a developer a one-time payment
-of the buyers choice &mdash; a sort of “buy me a beer” option.
-As time goes by, it should bring more users to the community.</p>
-<p>We’re about a third of the way to being able to do that.
-It&rsquo;s a very exciting prospect to look forward to!</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>Have you paid any bug bounties yet?</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/jayfella/45/1914_2.png" height="45px"/> 
-</figure>
-
-Jayfella:</p>
-<p>The bug bounty system is another great
-tool we can bring forward when the Patreon sponsorship increases.
-It’s something I’m very much looking forward to switching on.
-It’s a great way to get contributions moving forward &mdash; and even finding bugs.</p>
-<p>No bounties will be set until we increase funding.
-Right now the funding doesn’t warrant much incentive.
-It would only support one bounty every 2-4 months,
-which would stall things and probably cause more harm than good.</p>
-<p>For now, we are funding the monthly costs of our web presence and services,
-paid for by our generous community.</p>
-<p><figure>
-    <img src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/45/1430_2.png" height="45px"/> 
-</figure>
-
-Sgold:</p>
-<p>I guess that&rsquo;s enough for now.</p>
-<p>I enjoyed conducting this interview.  Thank you for your time.</p>
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 132
blog/jme3-3beta2/index.html

@@ -1,132 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>jMonkeyEngine 3.3.0-beta2 is out!</h1>    
-        <p>Introducing jMonkeyEngine 3.3.0-beta2.</p>
-<p>Today, engine leader Paul Speed successfully released jMonkeyEngine 3.3.0-beta2, marking a new milestone in the
-advancement towards a stable release of jME3.3. Beta2 introduces many new bug fixes and features with a full
-list here <a href="https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2">https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2</a>.
-New game developers using jME should refrain themselves from using this release in production however.
-Current stable is v3.2.4 found on the github site.
-But one more time let&rsquo;s give the core developers a big round of applause as we come ever closer a stable release.</p>
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 131
blog/jme332/index.html

@@ -1,131 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>jMonkeyEngine 3.3.2 released</h1>    
-        <p>JMonkeyEngine version 3.3.2 is here!</p>
-<p>After 3 months of beta testing, the Java game engine&rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features:  AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.</p>
-<p>As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.3.  With the help of volunteers, candidate builds received extensive testing on multiple platforms.  Their efforts culminated in version 3.3.2-stable, a production-ready patch release from the v3.3 line.</p>
-<p>The 3.3.2-stable libraries are tested, approved, and ready-to-rock!</p>
-<p>For projects built with Maven or Gradle, artifacts are available from JCenter.  If you are looking for the source code, go to <a href="https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.2-stable">https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.2-stable</a></p>
-<p>At this time, version 3.3 of the JME Software Development Kit (based on Netbeans 11) is still undergoing testing and is not recommended for production use.  Until it&rsquo;s ready, development with the v3.3 libraries can proceed using the 3.2 SDK (based on Netbeans 8) or general-purpose IDEs such as IntelliJ IDEA.</p>
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 173
blog/minie14/index.html

@@ -1,173 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>Minie Physics Library Version 1.4 Released!</h1>    
-        <p>Minie version 1.4 is an exciting new add-on for
-<a href="https://jmonkeyengine.org">the JMonkeyEngine (JME) game engine</a>.</p>
-<figure>
-    <img src="https://i.imgur.com/YdoHlbf.jpg" height="120px"/> 
-</figure>
-
-<p>Minie provides an <a href="https://en.wikipedia.org/wiki/Open-source_software">open-source</a>
-physics <a href="https://en.wikipedia.org/wiki/Physics_engine">engine</a> for desktop games.
-It gives software developers using JME access to the proven technology of
-<a href="https://github.com/bulletphysics/bullet3/releases/tag/2.89">the Bullet Physics SDK version 2.89</a>,
-including:</p>
-<ul>
-<li><a href="https://en.wikipedia.org/wiki/Rigid_body_dynamics">rigid-body dynamics</a>,</li>
-<li><a href="https://en.wikipedia.org/wiki/Soft-body_dynamics">soft bodies</a>,</li>
-<li><a href="https://en.wikipedia.org/wiki/Collision_detection">collision detection</a>,</li>
-<li>vehicle and character controllers,</li>
-<li>ray and sweep tests, and</li>
-<li>dynamic constraints.</li>
-</ul>
-<p>Minie incorporates <a href="https://hub.jmonkeyengine.org/t/introducing-dynamicanimcontrol/41075">DynamicAnimControl</a>
-technology for <a href="https://en.wikipedia.org/wiki/Ragdoll_physics">ragdoll simulation</a>
-and <a href="http://radiomonash.com/inverse-kinematics-video-games-thing-happens-games-never-knew-word/">inverse kinematics</a>.
-It supports the use of
-<a href="https://kmamou.blogspot.com/2011/10/hacd-hierarchical-approximate-convex.html">Khaled Mamou V-HACD algorithm</a>
-to decompose complicated shapes for efficient simulation.</p>
-<p>Minie&rsquo;s <a href="https://en.wikipedia.org/wiki/Application_programming_interface">API</a>
-closely mimics those of JME&rsquo;s official physics libraries:
-jme3-bullet and jme3-jbullet, so existing JME applications
-should require little or no modification to work with Minie.</p>
-<p>Minie&rsquo;s documentation starts with a
-<a href="https://github.com/stephengold/Minie/blob/master/README.md">70-KB README file</a>.
-It comes with a dozen demo applications, some tutorials,
-and an extensive test suite, all open-source.
-Its Javadoc describes all public methods and their arguments,
-and the source code includes additional inline documentation.</p>
-<p>The release of Minie 1.4 was first announced
-<a href="https://hub.jmonkeyengine.org/t/the-minie-physics-library/41839/119">on 8 February 2020 at the JME Forum</a>.
-The software can easily be obtained for free.
-Pre-built Maven artifacts are served by
-<a href="https://bintray.com/stephengold/com.github.stephengold/Minie">JCenter</a>.
-Its complete source code and build scripts are in
-<a href="https://github.com/stephengold/Minie/releases/tag/1.4.0for32">a public GitHub repository</a>.
-And of course it has its own
-<a href="https://store.jmonkeyengine.org/38308161-c3cf-4e23-8754-528ca8387c11">page at Jmonkeystore</a>.</p>
-<p>Whether you&rsquo;re starting a new game project,
-dissatisfied with the official physics libraries,
-or simply curious about the future of open-source game physics,
-you owe it to yourself to try Minie!</p>
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 141
blog/new-store/index.html

@@ -1,141 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>jMonkeyStore is Now Open!</h1>    
-        <p>After years of requests and attempts, a software store (a.k.a an asset store) for jmonkey has finally been created and is now open to registration. Everybody can register and submit their software!</p>
-<h1 id="httpsstorejmonkeyengineorg"><a href="https://store.jmonkeyengine.org/">https://store.jmonkeyengine.org/</a></h1>
-<figure class="ui fluid image">
-    <img src="//i.ibb.co/42rX9bm/image.png"/> 
-</figure>
-
-<hr>
-<p>Currently only free open-source software can be submitted. Once we have the sponsorship required for the legal documentation and setup fees we will be able to allow <strong>selling</strong> (payment required to use it) and <strong>sponsoring</strong> (pay the developer if you <em>want to</em> as a thank you)  software. We are quietly hoping this will be available soon!</p>
-<p>In regard to free opensource software:</p>
-<ul>
-<li>All software must be available on a git repository. Github, GitLab and BitBucket are all supported.</li>
-<li>Software must contain a license in the repository.</li>
-</ul>
-<p>Licenses let people understand how they can use your software and if they are allowed to use it commercially. If you need help understanding what license to use, we have provided a <a href="https://store.jmonkeyengine.org/legal/license/opensource/">license chooser</a> to help you pick one. If you don&rsquo;t provide a license, it is implied that you cannot use it!</p>
-<p>We are hoping as time goes by to provide an exhaustive collection of all the creations the jmonkey community has made and allow users to easily find and use them. This should make creating a game not only quicker but also allows users to learn how things are done through the source code. Terrain generators, mini-maps, vehicles, characters, shaders, post-processors and all manner of cool stuff will be available to everybody simply by adding a single line of code to your gradle project!</p>
-<p>Since the project is very new, feel free to offer suggestions on improvements. If you cannot find a category that fits your software let us know and one will be added.</p>
-
-        <br />
-    </div>
-
-    <script>
-        $("#Blog").addClass("active");
-    </script>
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 137
contribute/index.html

@@ -1,137 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/contribute/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1></h1>    
-        <h1 id="contributing-to-jmonkeyengine">Contributing to jMonkeyEngine</h1>
-<p>There are several ways to contribute toward the jMonkey project. All of the jmonkey source code is hosted on github and follows the git procedure.</p>
-<h2 id="contributing-to-the-engine">Contributing to the Engine</h2>
-<p>To contribute to the engine you must clone the jMonkeyEngine repository, commit your changes and submit a Pull Request (PR). Pull Requests are reviewed by staff members and contributors before it is determined whether they will be approved and merged.</p>
-<p>Visit the <a href="https://github.com/jMonkeyEngine/jmonkeyengine">jMonkeyEngine repository</a> to clone the repository.</p>
-<h2 id="contributing-to-documentation">Contributing to Documentation</h2>
-<p>Documentation comes in two forms: <a href="https://javadoc.jmonkeyengine.org">JavaDoc</a> and the <a href="https://wiki.jmonkeyengine.org">Wiki</a>.</p>
-<p>To submit changes to the JavaDoc you must follow the same procedure as <strong>Contributing to the Engine</strong>. To submit changes or add new pages to the wiki you must clone the <a href="https://github.com/jMonkeyEngine/wiki">wiki repository</a> and follow the same procedure as <strong>Contrubuting to the Engine</strong>.</p>
-<h2 id="reporting-bugs">Reporting Bugs</h2>
-<p>To report any bugs in the engine or errors in documentation you can submit a new issue in the corresponding repository.</p>
-<ul>
-<li><a href="https://github.com/jMonkeyEngine/wiki/issues/new">Report an issue with the wiki</a></li>
-<li><a href="https://github.com/jMonkeyEngine/jmonkeyengine/issues/new">Report an issue with the engine</a></li>
-</ul>
-
-        <br />
-    </div>
-
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 77
css/custom.css

@@ -1,77 +0,0 @@
-body {
-    font-size: 1.1em !important;
-}
-
-#main-image {
-    background-size: cover;
-    background-position: 50% 50%;
-    width: 100%;
-    height: 350px;
-}
-
-#main-image-container {
-    padding: 30px 0;
-}
-
-#main-image-text {
-    color: #fff;
-    text-shadow: 0px 0px 10px black;
-}
-
-pre {
-    padding: 10px 20px;
-}
-
-#git-menu-item {
-    background: rgba(0, 255, 0, 0.1);
-}
-
-#git-menu-item:hover {
-    background: rgba(0, 255, 0, 0.3);
-}
-
-#discord-menu-item {
-    background: rgba(128, 0, 128, 0.3);
-}
-
-#discord-menu-item:hover {
-    background: rgba(128, 0, 128, 0.7);
-}
-
-figure {
-    margin: 10px 0px;
-}
-
-#top-shadow {
-    background-color: #2185d0;
-    height:5px;
-    box-shadow: 0px 3px 5px #000;
-}
-
-#bottom-shadow {
-    margin-bottom: -14px;
-    background-color: #2185d0;
-    height:5px;
-    box-shadow: 0px -3px 5px #000;
-}
-
-/* Global message */
-.global-message {
-  padding: 5px;
-  font-size: 0.9em;
-}
-
-#global-message-error {
-  background: #912d2b;
-  color: #fff6f6;
-}
-
-#global-message-warning {
-  background: #b58105;
-  color: #fff8db;
-}
-
-#global-message-info {
-  background: #dff0ff;
-  color: #2185d0;
-}

+ 0 - 0
css/style.css


+ 0 - 163
docs/index.html

@@ -1,163 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/docs/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>Documentation</h1>    
-        <p>Browse through our various forms of information to help you better understand the engine.</p>
-<h3 id="engine-wikihttpswikijmonkeyengineorg"><a href="https://wiki.jmonkeyengine.org">Engine Wiki</a></h3>
-<p>The wiki provides extended documentation as well as tutorials on how to develop your game effectively using jmonkey practices. Tutorials start from the basics all the way up to collision detection, input mapping and shaders, and will be your go-to place for most of the information you require.</p>
-<h3 id="javadochttpsjavadocjmonkeyengineorg"><a href="https://javadoc.jmonkeyengine.org">JavaDoc</a></h3>
-<p>JavaDocs are source-code documentation that help you understand what specific methods and classes do. These snippets of information describe the parameters and return values and other key information to help you understand the engine better.</p>
-<h3 id="community-hubhttpshubjmonkeyengineorg"><a href="https://hub.jmonkeyengine.org">Community Hub</a></h3>
-<p>Our community has an excellent standing in supporting developers that need help. We have a thriving collection of knowledgable users that are super-helpful. If you ever find yourself confused or wondering how something is done, head over to our community hub and create a new thread. Our ultra-helpful team and community will be more than happy to give you a hand in getting you back on track.</p>
-<p>To get the most helpful answers, it may be useful to understand <a href="https://www.mikeash.com/getting_answers.html">how to get the best answers</a> to your question. Providing source code, explaining what you have tried, why it didn&rsquo;t work and any other relevant details will speed up the process of giving you a relevant answer.</p>
-<h3 id="discordhttpsdiscordggjdjhsrw"><a href="https://discord.gg/JdjhsRw">Discord</a></h3>
-<p>Our official discord server is full of friendly members that can provide useful advice through chat. Whilst a chat server is not always the best place for comprehensive answers, it does serve as a great tool for quick solutions and getting to know the members better.</p>
-<h3 id="scene-graph-for-dummieshttpswikijmonkeyengineorgtutorialsscenegraphassetsfallbackindexhtml"><a href="https://wiki.jmonkeyengine.org/tutorials/scenegraph/assets/fallback/index.html">Scene Graph for Dummies</a></h3>
-<p>A slideshow explaining how to use the scene graph in jMonkey. This guide explains how to use the scene graph effectively and understand the relationships involved. <strong>Highly recommended</strong> for all new users to the gaming industry.</p>
-<ul>
-<li>What the scene graph is and what a <code>Spatial</code> is.</li>
-<li>What a <code>Geometry</code> is and how it&rsquo;s appearance is defined.</li>
-<li>What a <code>Node</code> is and what a parent-child relationship is.</li>
-<li>How to organize the scene graph visually and logically using nodes.</li>
-<li>How to hide single Spatials or whole parts of the scene graph.</li>
-</ul>
-<h3 id="math-for-dummies-jme-vector-mathhttpswikijmonkeyengineorgtutorialsmathassetsfallbackindexhtml"><a href="https://wiki.jmonkeyengine.org/tutorials/math/assets/fallback/index.html">Math For Dummies: JME Vector Math</a></h3>
-<p>A slideshow explaining how to use vectors and quaternions in jMonkey. This guide is extremely useful to new game developers trying to understand locations, directions and rotations. Recommended for all new users to the gaming industry.</p>
-<ul>
-<li>What vectors are and how to create them.</li>
-<li>How to add, subtract, multiply and normalize vectors.</li>
-<li>How to interpolate between vectors.</li>
-<li>What quaternions are and how to creat them.</li>
-<li>How to rotate a vector using a quaternion.</li>
-<li>How to combine rotations.</li>
-<li>How to use <code>lookAt</code> to create rotations.</li>
-</ul>
-<h3 id="transparency-for-dummieshttpshubjmonkeyengineorgtalpha-transparency-sorting-your-z-buffer-and-you33709"><a href="https://hub.jmonkeyengine.org/t/alpha-transparency-sorting-your-z-buffer-and-you/33709">Transparency for Dummies</a></h3>
-<p>This document explains some of the issues surrounding transparency, what sorting means and how to solve common problems surrounding transparency.</p>
-
-        <br />
-
-        
-        
-
-        <br />
-    </div>
-
-    <script>
-        $("#Documentation").addClass("active");
-    </script>
-    
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 1
docs/page/1/index.html

@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://jmonkeyengine.org/docs/</title><link rel="canonical" href="https://jmonkeyengine.org/docs/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jmonkeyengine.org/docs/" /></head></html>

二進制
favicon.ico


+ 0 - 246
features/index.html

@@ -1,246 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/features/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-    
-    <div class="ui container">
-        <br />
-        <h1>Features</h1>    
-        <p>jMonkeyEngine is a feature-rich engine capable of creating both beautiful
-and complex games, single-player or networked, on a wide variety of platforms.</p>
-<hr>
-<h3 id="platforms">Platforms</h3>
-<ul>
-<li>Windows</li>
-<li>Linux</li>
-<li>Mac OSX</li>
-<li>Raspberry Pi 3 (OpenGL ES 2.0)</li>
-<li>Raspberry Pi 4 (OpenGL ES 3.2)</li>
-<li>Android</li>
-</ul>
-<h2 id="supported-model-formats">Supported Model Formats</h2>
-<ul>
-<li>GLTF</li>
-<li>OBJ</li>
-</ul>
-<h3 id="audio">Audio</h3>
-<ul>
-<li>Support for WAV, MP3 and OGG file formats.</li>
-<li>Buffered and Streaming support.</li>
-<li>Global, directional and positional sounds.</li>
-</ul>
-<h3 id="input">Input</h3>
-<ul>
-<li>Mouse and Keyboard</li>
-<li>Touchscreen</li>
-<li>Joystick/Joypad/Wheel</li>
-</ul>
-<h3 id="scenegraph">SceneGraph</h3>
-<ul>
-<li>Batching</li>
-<li>Instancing</li>
-<li>2D and 3D scene support</li>
-<li>Level of Detail</li>
-<li>Light Culling</li>
-<li>Single Pass Lighting</li>
-</ul>
-<h3 id="animation">Animation</h3>
-<ul>
-<li>Tween API with out of the box support for spatial, bone and morph animations</li>
-<li>Stock Tweens availble:
-<ul>
-<li>Sequence tween: a tween that plays tweens in sequence.</li>
-<li>Parallel tween: a tween that plays tweens in parallel.</li>
-<li>Delay tween : a tween that just waits…</li>
-<li>Stretch tween: a tween that wraps another tween and change its duration.</li>
-<li>Camera tween: moves the camera…</li>
-<li>CallMethod: calling a method on an object …</li>
-</ul>
-</li>
-<li>Animation Blending</li>
-<li>Animation interpolation (interpolors for rotation, position, scale and time)</li>
-<li>Hardware Skinning</li>
-</ul>
-<h3 id="graphics">Graphics</h3>
-<ul>
-<li>OpenGL support up to OpenGL 4.5</li>
-<li>OpenGL ES support up to 3.0</li>
-<li>LWJGL2 and 3</li>
-<li>Post Processing</li>
-<li>Stock Post Processors
-<ul>
-<li>Water</li>
-<li>Screen Space Ambient Occlusion
-<ul>
-<li>Supports Approximate Normals (50% faster)</li>
-</ul>
-</li>
-<li>Bloom</li>
-<li>Cartoon Edge</li>
-<li>Color Overlay</li>
-<li>Cross-Hatch</li>
-<li>Depth Of Field</li>
-<li>Fast Approximate Anti Aliasing</li>
-<li>Fog</li>
-<li>Light Scattering</li>
-<li>Posterization</li>
-<li>Radial Blur</li>
-<li>ToneMap</li>
-</ul>
-</li>
-<li>Unshaded Materials</li>
-<li>Phong Lighting Materials</li>
-<li>PBR Materials
-<ul>
-<li>Sphere and OrientedBox Probe areas</li>
-<li>Light Probe blending (up to 3 light probes)</li>
-<li>Supports both Roughness/Metallic &amp; Roughness/SpecularGloss workflow</li>
-</ul>
-</li>
-<li>Vertex, Fragment and Geometry shader support</li>
-<li>Texture Atlas support</li>
-<li>Particles</li>
-</ul>
-<h3 id="language">Language</h3>
-<ul>
-<li>Support for Java 1.8+</li>
-<li>Use Kotlin, Groovy or any combination all in one project.</li>
-</ul>
-<h3 id="physics">Physics</h3>
-<ul>
-<li>Bullet Physics</li>
-<li><strong><a href="https://github.com/stephengold/Minie">Minie Physics</a></strong> - A high-powered improved and up-to-date binding around Bullet with &ldquo;soft body&rdquo; support.</li>
-</ul>
-<h3 id="networking">Networking</h3>
-<ul>
-<li>Networking API supporting UDP/TCP either with low-level Messaging or high-level RMI.</li>
-<li><strong><a href="https://github.com/Simsilica/SimEthereal">SimEthereal</a></strong>  - A high performance library for real-time networked object synching</li>
-</ul>
-<h3 id="gui">GUI</h3>
-<ul>
-<li><strong><a href="http://jmonkeyengine-contributions.github.io/Lemur/">Lemur</a></strong> - a fast and efficient Jme-Native 2D and 3D GUI Toolkit.</li>
-<li><strong><a href="https://github.com/jayfella/jme-jfx-11">JME-JFX-11</a></strong> - A bridge to create a 2D GUI in JME using JavaFX 11.</li>
-</ul>
-<h3 id="entity-system">Entity System</h3>
-<ul>
-<li><strong><a href="https://github.com/jMonkeyEngine-Contributions/zay-es">Zay-ES</a></strong> - A high-performance entity-component-system</li>
-</ul>
-<h3 id="profiling">Profiling</h3>
-<ul>
-<li>DetailedProfiler - Displays timing information for various areas of your game to determine bottlenecks</li>
-</ul>
-
-        <br />
-    </div>
-
-	
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

文件差異過大導致無法顯示
+ 0 - 18
fomantic/semantic.min.css


二進制
images/become_a_patron_button.png


二進制
images/jme-logo.png


二進制
images/main-image.jpg


二進制
images/main-image2.jpg


+ 0 - 394
index.html

@@ -1,394 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
-
-<head>
-	<meta name="generator" content="Hugo 0.75.1" />
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>jMonkeyEngine</title>
-
-  
-  <meta name="description" content="A cross-platform game engine for adventurous Java developers.">
-  
-
-  <link rel="stylesheet" href="/css/custom.css">
-  <link rel="stylesheet" href="/lib/fomantic/semantic.min.css">
-  <link rel="stylesheet" href="/lib/blueimp-gallery/2.41.0/css/blueimp-gallery.min.css" />
-
-  <script src="/js/jquery.min.js"></script>
-  <script src="/lib/fomantic/semantic.min.js"></script>
-  <script src="/lib/blueimp-gallery/2.41.0/js/blueimp-gallery.min.js" defer></script>
-  <script src="/js/custom.js" defer></script>
-
-  
-        <link rel="alternate" type="application/rss+xml" href="/index.xml" title="jMonkeyEngine">
-
-</head>
-
-<body>
-  
-
-
-
-
-
-
-<header>
-
-    <div class="ui stackable inverted secondary menu" style="background-color: #222222;">
-        <div class="ui container">
-            <div class="item">
-                <a href="/"><img class="ui image" src="/images/jme-logo.png"/></a>
-            </div>
-
-            
-                
-                <a class="item" id="Blog" href="/blog/">Blog</a>
-                
-                <a class="item" id="Documentation" href="/docs/">Documentation</a>
-                
-                <a class="item" id="Features" href="/features/">Features</a>
-                
-                <a class="item" id="License" href="/license/">License</a>
-                
-            
-
-            <a class="item" href="https://hub.jmonkeyengine.org">Community</a>
-            <a class="item" href="https://store.jmonkeyengine.org">Store</a>
-
-
-            <div class="right menu">
-                
-    <a class="item" href="https://github.com/jMonkeyEngine/jmonkeyengine" id="git-menu-item"><i class="github icon"></i>Github</a>
-
-
-
-    <a href="https://discord.gg/JhefT9s" class="item" id="discord-menu-item"><i class="discord icon"></i>Discord</a>
-
-            </div>
-        </div>
-    </div>
-
-</header>
-
-
-  
-
-	
-<div id="main-image" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0.0) 100%), url('/images/main-image2.jpg');">
-
-    <div class="ui container" id="main-image-container">
-        
-        <span class="ui large text" id="main-image-text">
-            A free, open source game engine, made especially for Java game developers who want to create 3D games using
-            modern technology. The software is programmed entirely in Java, intended for wide accessibility and quick
-            deployment.
-        </span>
-
-        <div>
-            <br />
-            
-            <a class="ui large blue animated fade button" tabindex="0" href="/start/">
-                <div class="visible content">Get Started<i class="angle right icon"></i></div>
-                <div class="hidden content">
-                    <i class="angle double right icon"></i>
-                </div>
-            </a>
-        </div>
-        
-    </div>
-
-</div>
-
-<div id="top-shadow"></div>
-
-	<div class="ui container">
-		
-	</div>
-
-	
-	
-	<div class="ui container">
-		<br />
-
-		
-
-		<div class="ui raised segments">
-			<div class="ui orange segment">
-
-				<table class="ui very basic compact table">
-					<tbody>
-						<tr>
-
-							<td>
-								<a href="https://jmonkeyengine.org/blog/jme332/">
-									<h2 class="ui header">jMonkeyEngine 3.3.2 released</h2>
-								</a>
-							</td>
-
-							<td class="collapsing">
-								10 May 2020
-							</td>
-						</tr>
-					</tbody>
-				</table>
-
-			</div>
-
-			<div class="ui segment">
-				JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.  …
-					<a class="ui small compact grey label" href="https://jmonkeyengine.org/blog/jme332/">
-						Read More
-					</a>
-				
-			</div>
-
-			<div class="ui segment">
-				By:&nbsp;&nbsp;&nbsp;&nbsp;
-						<img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/itsmike54/120/1989407_2.png" />
-						<i><span> (ItsMike54)</span></i>
-						&nbsp;&nbsp;&nbsp;&nbsp;
-					
-				
-						<img class="ui avatar image" src="https://jme-hub-cdn-jmonkeyengineor.netdna-ssl.com/user_avatar/hub.jmonkeyengine.org/sgold/120/1430_2.png" />
-						<i><span>Stephen Gold (sgold)</span></i>
-						&nbsp;&nbsp;&nbsp;&nbsp;
-					
-				
-			</div>
-		</div>
-
-
-		
-
-		<a class="ui orange right floated button" href="/blog/">Read More News<i class="angle double right icon"></i></a>
-		<br />
-		<br />
-	</div>
-
-	
-
-	<div class="ui container">
-    <br/><br/>
-    <h1 class="ui center aligned header">
-        Games & Media Showcase
-        <div class="sub header">Take at look at some of the games and media created by the jMonkey community!</div>
-    </h1>
-    
-    <a class="ui huge inverted animated fade circular blue fluid button" href="/showcase/">
-        
-
-        <div class="visible content">
-            <i class="photo video icon"></i>Browse Games & Media
-        </div>
-        
-        <div class="hidden content">
-            GO <i class="angle double right icon"></i>
-        </div>
-
-    </a>
-    
-    <br/><br/>
-</div>
-
-
-	<div class="ui container">
-  <br />
-  <br />
-  <h2 class="ui center aligned dividing header">Engine Features</h2>
-
-
-
-    <div class="ui three column stackable grid">
-
-        <div class="column">
-            <h2 class="ui top attached block header">
-                <i class="shapes icon"></i>
-                <div class="content">Physically Based Rendering</div>
-            </h2>
-            <div class="ui attached segment">
-                Create realistic beautiful materials that make your game look modern and professional.
-                <br /><br />
-                If you're familiar with JME already and are thinking about using PBR, take a look at the <a href="/showcase/pbr_tutorial/">Youtube PBR tutorial</a> by @grizeldi
-            </div>
-        </div>
-
-        <div class="column">
-            <h2 class="ui top attached block header">
-                <i class="th icon"></i>
-                <div class="content">AppStates</div>
-            </h2>
-            <div class="ui attached segment">
-                AppStates are the building blocks for your application. They help you separate your application into logical parts and can be used to quickly extend the base application. They can also be reused in other applications so you will quickly
-                build your own library of AppStates and integrate publically available extensions easily into your application.
-            </div>
-        </div>
-
-        <div class="column">
-            <h2 class="ui top attached block header">
-                <i class="magic icon"></i>
-                <div class="content">Filters and Effects</div>
-            </h2>
-            <div class="ui attached segment">
-                jME3 comes with a wide array of special effects, primarily through the use of post processor filters and particle emitters. These are the “smoke and mirrors” tricks that allow you to emulate the wondrous stuff of nature, such as water,
-                fog, light scattering and of course, explosions.
-            </div>
-        </div>
-
-    </div>
-
-    <div class="ui three column stackable grid">
-
-            <div class="column">
-                <h2 class="ui top attached block header">
-                    <i class="discourse icon"></i>
-                    <div class="content">Fantastic Community</div>
-                </h2>
-                <div class="ui attached segment">
-                    The jewel in jMonkey’s crown. Our community is second to none, and full of knowledgable helpful members.
-                </div>
-            </div>
-
-            <div class="column">
-                <h2 class="ui top attached block header">
-                    <i class="store icon"></i>
-                    <div class="content">Software Store</div>
-                </h2>
-                <div class="ui attached segment">
-                    Browse the store for free assets created by the community. Sounds, models, textures, even tech demos are all available for free to download.
-                </div>
-            </div>
-
-            <div class="column">
-                <h2 class="ui top attached block header">
-                    <i class="code branch icon"></i>
-                    <div class="content">Open Source</div>
-                </h2>
-                <div class="ui attached segment">
-                    jMonkeyEngine is completely free and open source! No splash screens, no fees and no requirement to mention jMonkeyEngine in your game at all.
-                </div>
-            </div>
-
-        </div>
-
-
-
-</div>
-
-
-	<div class="ui container">
-    <br />
-    <br />
-    <br />
-    <h2 class="ui center aligned dividing header">Contribute to jMonkeyEngine</h2>
-    <div class="ui raised segments">
-        
-        <div class="ui inverted red segment">
-            <h4 class="ui header">
-                <i class="code icon"></i>
-                <div class="content">
-                    Write Some Code
-                </div>
-            </h4>
-        </div>
-        <div class="ui segment">
-            
-            <p>
-                If you have the ability to create some cool features, filters or technologies, contributing your code to the engine
-                provides those features to everyone. Your contributions may even be given the spotlight in the news! Major contributors
-                are given special ranks on the forum as a mark of respect for their generosity toward the engine.
-            </p>
-
-            <a class="ui red button" href="/contribute/">Learn More</a>
-
-        </div>
-        
-        <div class="ui inverted green segment">
-            <h4 class="ui header">
-                <i class="book icon"></i>
-                <div class="content">
-                    Improve Documentation
-                </div>
-            </h4>
-        </div>
-        <div class="ui segment">
-
-            <p>
-                Documentation is essential to understand the engine and its capabilities. Maintaining complete and up-to-date information
-                helps everyone utilize the engine effectively and makes learning how the engine works a much easier task. Whether it's a
-                spelling correction or a complete page, every little helps!
-            </p>
-
-            <a class="ui green button" href="/contribute/">Learn More</a>
-
-        </div>
-        
-        <div class="ui inverted blue segment">
-            <h4 class="ui header">
-                <i class="bug icon"></i>
-                <div class="content">
-                    Report Bugs
-                </div>
-            </h4>
-        </div>
-        <div class="ui segment">
-            
-            <p>
-                Reporting problems with our engine ensures something gets done. It only takes a few minutes to submit an issue on github
-                and starting the process. These reports keep our engine stable. Bug reporting is important!
-            </p>
-
-            <a class="ui blue button" href="/contribute/">Learn More</a>
-
-        </div>
-
-    </div>
-    <br />
-    <br />
-</div>
-
-
-
-
-
-
-  <footer>
-        <div id="bottom-shadow"></div>
-    <div class="ui inverted segment footer" style="border-radius: 0px; margin-bottom: 0px;">
-
-        <div class="ui container">
-            <br />
-
-            <div class="ui two column stackable grid">
-
-                <div class="column">
-                    <p>
-                        &copy; 2020 <a href="https://jmonkeyengine.org/">jMonkeyEngine</a>.
-                        A free open-source game engine licensed under the <a href="https://choosealicense.com/licenses/bsd-3-clause/">BSD 3-Clause license</a>.
-                        All rights reserved.
-                    </p>
-                </div>
-
-                <div class="column">
-                  <a class="ui yellow right floated button" href="/sponsor/">
-                    <i class="info circle icon"></i>
-                    Sponsor Us
-                  </a>
-                </div>
-
-            </div>
-
-
-            <br />
-        </div>
-    </div>
-
-</footer>
-
-</body>
-
-</html>

+ 0 - 128
index.xml

@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>jMonkeyEngine</title>
-    <link>https://jmonkeyengine.org/</link>
-    <description>Recent content on jMonkeyEngine</description>
-    <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    <lastBuildDate>Sun, 10 May 2020 08:00:00 +0000</lastBuildDate><atom:link href="https://jmonkeyengine.org/index.xml" rel="self" type="application/rss+xml" />
-    <item>
-      <title>jMonkeyEngine 3.3.2 released</title>
-      <link>https://jmonkeyengine.org/blog/jme332/</link>
-      <pubDate>Sun, 10 May 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme332/</guid>
-      <description>JMonkeyEngine version 3.3.2 is here!
-After 3 months of beta testing, the Java game engine&amp;rsquo;s long-awaited v3.3 release arrived on 30 March. With it came exciting new features: AppState ids, light-probe blending, a better ragdoll control, and an animation system rewritten from the ground up.
-As often happens, a few key bugfixes missed the cutoff for v3.3.0-stable. In its wake, the JMonkeyEngine team came together and identified a handful of existing fixes that could be safely backported into v3.</description>
-    </item>
-    
-    <item>
-      <title>jMonkeyEngine 3.3.0-beta2 is out!</title>
-      <link>https://jmonkeyengine.org/blog/jme3-3beta2/</link>
-      <pubDate>Tue, 24 Mar 2020 12:44:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/jme3-3beta2/</guid>
-      <description>Introducing jMonkeyEngine 3.3.0-beta2.
-Today, engine leader Paul Speed successfully released jMonkeyEngine 3.3.0-beta2, marking a new milestone in the advancement towards a stable release of jME3.3. Beta2 introduces many new bug fixes and features with a full list here https://github.com/jMonkeyEngine/jmonkeyengine/releases/tag/v3.3.0-beta2. New game developers using jME should refrain themselves from using this release in production however. Current stable is v3.2.4 found on the github site. But one more time let&amp;rsquo;s give the core developers a big round of applause as we come ever closer a stable release.</description>
-    </item>
-    
-    <item>
-      <title>Sgold interviews Daniel Perano</title>
-      <link>https://jmonkeyengine.org/blog/interview-danielp/</link>
-      <pubDate>Tue, 25 Feb 2020 18:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/interview-danielp/</guid>
-      <description>Sgold:
-Thank you for agreeing to be interviewed.
-First question: Do you remember when you first encountered JMonkeyEngine? What was your first impression?
-  Daniel Perano:
-I started learning jME back in the 3.0 days, as I recall, and I was impressed with the features it offered. The scene-graph control and appstate design made a lot of sense to me &amp;mdash; at the time both were novel concepts.</description>
-    </item>
-    
-    <item>
-      <title>Sgold interviews Jayfella</title>
-      <link>https://jmonkeyengine.org/blog/interview-jayfella/</link>
-      <pubDate>Sat, 15 Feb 2020 12:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/interview-jayfella/</guid>
-      <description>Sgold:
-Thank you for agreeing to be interviewed.
-First question: When did you first hear about JMonkeyEngine?
-  Jayfella:
-Way back in 2014, after a long period of developing desktop applications, servers, and minecraft plugins, I decided to look into writing games. At that time I was more into C#, but XNA was a sinking ship, so looked at alternatives. I found jMonkey and gave it a shot.</description>
-    </item>
-    
-    <item>
-      <title>Minie Physics Library Version 1.4 Released!</title>
-      <link>https://jmonkeyengine.org/blog/minie14/</link>
-      <pubDate>Sun, 09 Feb 2020 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/minie14/</guid>
-      <description>Minie version 1.4 is an exciting new add-on for the JMonkeyEngine (JME) game engine.
-  Minie provides an open-source physics engine for desktop games. It gives software developers using JME access to the proven technology of the Bullet Physics SDK version 2.89, including:
- rigid-body dynamics, soft bodies, collision detection, vehicle and character controllers, ray and sweep tests, and dynamic constraints.  Minie incorporates DynamicAnimControl technology for ragdoll simulation and inverse kinematics.</description>
-    </item>
-    
-    <item>
-      <title>PBR Tutorial</title>
-      <link>https://jmonkeyengine.org/showcase/pbr_tutorial/</link>
-      <pubDate>Mon, 21 Oct 2019 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/pbr_tutorial/</guid>
-      <description>A continuing YouTube series helping users take leap from using the regular Lighting.j3md material to PbrLighting.j3md.
-First part of my tutorial series in which I explain how to use jmonkeyengine&amp;rsquo;s Physically Based Rendering pipeline. Intended for people who already understand how to use the regular Lighting.j3md shader, but have no idea how PBR works.
-Second part of my tutorial series in which I explain how to use jmonkeyengine&amp;rsquo;s Physically Based Rendering pipeline.</description>
-    </item>
-    
-    <item>
-      <title>Mythruna</title>
-      <link>https://jmonkeyengine.org/showcase/mythruna/</link>
-      <pubDate>Wed, 16 Oct 2019 08:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/mythruna/</guid>
-      <description>Mythruna (myth + rune + a) is a game under development attempting to combine serious role playing elements with an endless, living, and completely modifiable randomly generated sandbox world. When completed, Mythruna will be a unique gaming experience.</description>
-    </item>
-    
-    <item>
-      <title>Skullstone</title>
-      <link>https://jmonkeyengine.org/showcase/skullstone/</link>
-      <pubDate>Wed, 16 Oct 2019 08:00:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/skullstone/</guid>
-      <description>Skullstone – a retro styled grid-based dungeon crawler RPG inspired by the good old titles such as Dungeon Master, Stonekeep, Eye of Beholder and many other classics.
-In a few words – a party of mercenaries explore a dungeon. They fight monsters, solve puzzles, find equipment, gather experience and level up while progressing through increasingly difficult levels. And there’s a story behind all that, are you ready to discover the truth behind Skullstone ?</description>
-    </item>
-    
-    <item>
-      <title>Lightspeed Frontier</title>
-      <link>https://jmonkeyengine.org/showcase/ls_frontier/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/ls_frontier/</guid>
-      <description>Leave everything behind and try your hand at captaining a ship on the frontier of the galaxy. Customize it piece by piece to tackle whatever adventures await you. Take on crime lords and space pirates in battle, undercut corporations that are monopolizing business, influence the galactic stock market, and become the most successful captain you can be.
-In this sci-fi adventure sandbox game, you have the opportunity to explore and influence the universe around you and make your own path.</description>
-    </item>
-    
-    <item>
-      <title>Spoxel</title>
-      <link>https://jmonkeyengine.org/showcase/spoxel/</link>
-      <pubDate>Tue, 15 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/showcase/spoxel/</guid>
-      <description>Explore, customize, and build across the world of Spoxel as you fight the otherworlders who have subjugated the land and forced the grounders below the surface. Use runes to construct custom powerful spells to use in your adventure or infuse weapons and armor with rare resources to create legendary items of power. Explore an infinite world and delve into other dimensions while you build a base to establish a foothold of power and defend it from your enemies!</description>
-    </item>
-    
-    <item>
-      <title>jMonkeyStore is Now Open!</title>
-      <link>https://jmonkeyengine.org/blog/new-store/</link>
-      <pubDate>Tue, 08 Oct 2019 06:27:00 +0000</pubDate>
-      
-      <guid>https://jmonkeyengine.org/blog/new-store/</guid>
-      <description>After years of requests and attempts, a software store (a.k.a an asset store) for jmonkey has finally been created and is now open to registration. Everybody can register and submit their software!
-https://store.jmonkeyengine.org/   Currently only free open-source software can be submitted. Once we have the sponsorship required for the legal documentation and setup fees we will be able to allow selling (payment required to use it) and sponsoring (pay the developer if you want to as a thank you) software.</description>
-    </item>
-    
-  </channel>
-</rss>

+ 0 - 1
js/custom.js

@@ -1 +0,0 @@
-$(".tooltip").popup();

文件差異過大導致無法顯示
+ 0 - 1
js/jquery.min.js


文件差異過大導致無法顯示
+ 0 - 10
js/semantic.min.js


+ 0 - 12
js/showcase.js

@@ -1,12 +0,0 @@
-let media = $("#carousel-links > a");
-
-let options = {
-    container: "#gallery-carousel",
-    carousel: true,
-    slideshowInterval: 5000
-};
-
-// we might not have a screenshot or video, and mounting without any links causes a JS error.
-if (media.length > 0) {
-    blueimp.Gallery(media, options);
-}

+ 0 - 29
lib/fomantic/README.md

@@ -1,29 +0,0 @@
-# CSS  Distribution
-
-This repository is a distribution of [Fomantic-UI](https://fomantic-ui.com) as CSS only to provide a lightweight version of Fomantic UI.
-
-This package **does not support theming** and includes generated CSS files of the default theme only.
-
-You can view more on Fomantic UI at [fomantic-ui.com](https://fomantic-ui.com).
-
-## Installation
-
-```console
-$ npm install --save fomantic-ui-css
-``` 
-
-## Usage with [Semantic-UI-React](https://github.com/Semantic-Org/Semantic-UI-React)
-
-```console
-$ yarn add semantic-ui-react
-$ yarn add fomantic-ui-css
-```
-
-After installation
-```javascript
-import 'fomantic-ui-css/semantic.min.css';
-```
-
-## Need help?
-
-If you looking for help please open an issue on the main [Fomantic-UI](https://github.com/fomantic/Fomantic-UI) repository.

文件差異過大導致無法顯示
+ 0 - 221
lib/fomantic/components/accordion.css


+ 0 - 618
lib/fomantic/components/accordion.js

@@ -1,618 +0,0 @@
-/*!
- * # Fomantic-UI - Accordion
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-'use strict';
-
-$.isFunction = $.isFunction || function(obj) {
-  return typeof obj === "function" && typeof obj.nodeType !== "number";
-};
-
-window = (typeof window != 'undefined' && window.Math == Math)
-  ? window
-  : (typeof self != 'undefined' && self.Math == Math)
-    ? self
-    : Function('return this')()
-;
-
-$.fn.accordion = function(parameters) {
-  var
-    $allModules     = $(this),
-
-    time            = new Date().getTime(),
-    performance     = [],
-
-    query           = arguments[0],
-    methodInvoked   = (typeof query == 'string'),
-    queryArguments  = [].slice.call(arguments, 1),
-
-    returnedValue
-  ;
-  $allModules
-    .each(function() {
-      var
-        settings        = ( $.isPlainObject(parameters) )
-          ? $.extend(true, {}, $.fn.accordion.settings, parameters)
-          : $.extend({}, $.fn.accordion.settings),
-
-        className       = settings.className,
-        namespace       = settings.namespace,
-        selector        = settings.selector,
-        error           = settings.error,
-
-        eventNamespace  = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-        moduleSelector  = $allModules.selector || '',
-
-        $module  = $(this),
-        $title   = $module.find(selector.title),
-        $content = $module.find(selector.content),
-
-        element  = this,
-        instance = $module.data(moduleNamespace),
-        observer,
-        module
-      ;
-
-      module = {
-
-        initialize: function() {
-          module.debug('Initializing', $module);
-          module.bind.events();
-          if(settings.observeChanges) {
-            module.observeChanges();
-          }
-          module.instantiate();
-        },
-
-        instantiate: function() {
-          instance = module;
-          $module
-            .data(moduleNamespace, module)
-          ;
-        },
-
-        destroy: function() {
-          module.debug('Destroying previous instance', $module);
-          $module
-            .off(eventNamespace)
-            .removeData(moduleNamespace)
-          ;
-        },
-
-        refresh: function() {
-          $title   = $module.find(selector.title);
-          $content = $module.find(selector.content);
-        },
-
-        observeChanges: function() {
-          if('MutationObserver' in window) {
-            observer = new MutationObserver(function(mutations) {
-              module.debug('DOM tree modified, updating selector cache');
-              module.refresh();
-            });
-            observer.observe(element, {
-              childList : true,
-              subtree   : true
-            });
-            module.debug('Setting up mutation observer', observer);
-          }
-        },
-
-        bind: {
-          events: function() {
-            module.debug('Binding delegated events');
-            $module
-              .on(settings.on + eventNamespace, selector.trigger, module.event.click)
-            ;
-          }
-        },
-
-        event: {
-          click: function() {
-            module.toggle.call(this);
-          }
-        },
-
-        toggle: function(query) {
-          var
-            $activeTitle = (query !== undefined)
-              ? (typeof query === 'number')
-                ? $title.eq(query)
-                : $(query).closest(selector.title)
-              : $(this).closest(selector.title),
-            $activeContent = $activeTitle.next($content),
-            isAnimating = $activeContent.hasClass(className.animating),
-            isActive    = $activeContent.hasClass(className.active),
-            isOpen      = (isActive && !isAnimating),
-            isOpening   = (!isActive && isAnimating)
-          ;
-          module.debug('Toggling visibility of content', $activeTitle);
-          if(isOpen || isOpening) {
-            if(settings.collapsible) {
-              module.close.call($activeTitle);
-            }
-            else {
-              module.debug('Cannot close accordion content collapsing is disabled');
-            }
-          }
-          else {
-            module.open.call($activeTitle);
-          }
-        },
-
-        open: function(query) {
-          var
-            $activeTitle = (query !== undefined)
-              ? (typeof query === 'number')
-                ? $title.eq(query)
-                : $(query).closest(selector.title)
-              : $(this).closest(selector.title),
-            $activeContent = $activeTitle.next($content),
-            isAnimating = $activeContent.hasClass(className.animating),
-            isActive    = $activeContent.hasClass(className.active),
-            isOpen      = (isActive || isAnimating)
-          ;
-          if(isOpen) {
-            module.debug('Accordion already open, skipping', $activeContent);
-            return;
-          }
-          module.debug('Opening accordion content', $activeTitle);
-          settings.onOpening.call($activeContent);
-          settings.onChanging.call($activeContent);
-          if(settings.exclusive) {
-            module.closeOthers.call($activeTitle);
-          }
-          $activeTitle
-            .addClass(className.active)
-          ;
-          $activeContent
-            .stop(true, true)
-            .addClass(className.animating)
-          ;
-          if(settings.animateChildren) {
-            if($.fn.transition !== undefined && $module.transition('is supported')) {
-              $activeContent
-                .children()
-                  .transition({
-                    animation        : 'fade in',
-                    queue            : false,
-                    useFailSafe      : true,
-                    debug            : settings.debug,
-                    verbose          : settings.verbose,
-                    duration         : settings.duration,
-                    skipInlineHidden : true,
-                    onComplete: function() {
-                      $activeContent.children().removeClass(className.transition);
-                    }
-                  })
-              ;
-            }
-            else {
-              $activeContent
-                .children()
-                  .stop(true, true)
-                  .animate({
-                    opacity: 1
-                  }, settings.duration, module.resetOpacity)
-              ;
-            }
-          }
-          $activeContent
-            .slideDown(settings.duration, settings.easing, function() {
-              $activeContent
-                .removeClass(className.animating)
-                .addClass(className.active)
-              ;
-              module.reset.display.call(this);
-              settings.onOpen.call(this);
-              settings.onChange.call(this);
-            })
-          ;
-        },
-
-        close: function(query) {
-          var
-            $activeTitle = (query !== undefined)
-              ? (typeof query === 'number')
-                ? $title.eq(query)
-                : $(query).closest(selector.title)
-              : $(this).closest(selector.title),
-            $activeContent = $activeTitle.next($content),
-            isAnimating    = $activeContent.hasClass(className.animating),
-            isActive       = $activeContent.hasClass(className.active),
-            isOpening      = (!isActive && isAnimating),
-            isClosing      = (isActive && isAnimating)
-          ;
-          if((isActive || isOpening) && !isClosing) {
-            module.debug('Closing accordion content', $activeContent);
-            settings.onClosing.call($activeContent);
-            settings.onChanging.call($activeContent);
-            $activeTitle
-              .removeClass(className.active)
-            ;
-            $activeContent
-              .stop(true, true)
-              .addClass(className.animating)
-            ;
-            if(settings.animateChildren) {
-              if($.fn.transition !== undefined && $module.transition('is supported')) {
-                $activeContent
-                  .children()
-                    .transition({
-                      animation        : 'fade out',
-                      queue            : false,
-                      useFailSafe      : true,
-                      debug            : settings.debug,
-                      verbose          : settings.verbose,
-                      duration         : settings.duration,
-                      skipInlineHidden : true
-                    })
-                ;
-              }
-              else {
-                $activeContent
-                  .children()
-                    .stop(true, true)
-                    .animate({
-                      opacity: 0
-                    }, settings.duration, module.resetOpacity)
-                ;
-              }
-            }
-            $activeContent
-              .slideUp(settings.duration, settings.easing, function() {
-                $activeContent
-                  .removeClass(className.animating)
-                  .removeClass(className.active)
-                ;
-                module.reset.display.call(this);
-                settings.onClose.call(this);
-                settings.onChange.call(this);
-              })
-            ;
-          }
-        },
-
-        closeOthers: function(index) {
-          var
-            $activeTitle = (index !== undefined)
-              ? $title.eq(index)
-              : $(this).closest(selector.title),
-            $parentTitles    = $activeTitle.parents(selector.content).prev(selector.title),
-            $activeAccordion = $activeTitle.closest(selector.accordion),
-            activeSelector   = selector.title + '.' + className.active + ':visible',
-            activeContent    = selector.content + '.' + className.active + ':visible',
-            $openTitles,
-            $nestedTitles,
-            $openContents
-          ;
-          if(settings.closeNested) {
-            $openTitles   = $activeAccordion.find(activeSelector).not($parentTitles);
-            $openContents = $openTitles.next($content);
-          }
-          else {
-            $openTitles   = $activeAccordion.find(activeSelector).not($parentTitles);
-            $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles);
-            $openTitles   = $openTitles.not($nestedTitles);
-            $openContents = $openTitles.next($content);
-          }
-          if( ($openTitles.length > 0) ) {
-            module.debug('Exclusive enabled, closing other content', $openTitles);
-            $openTitles
-              .removeClass(className.active)
-            ;
-            $openContents
-              .removeClass(className.animating)
-              .stop(true, true)
-            ;
-            if(settings.animateChildren) {
-              if($.fn.transition !== undefined && $module.transition('is supported')) {
-                $openContents
-                  .children()
-                    .transition({
-                      animation        : 'fade out',
-                      useFailSafe      : true,
-                      debug            : settings.debug,
-                      verbose          : settings.verbose,
-                      duration         : settings.duration,
-                      skipInlineHidden : true
-                    })
-                ;
-              }
-              else {
-                $openContents
-                  .children()
-                    .stop(true, true)
-                    .animate({
-                      opacity: 0
-                    }, settings.duration, module.resetOpacity)
-                ;
-              }
-            }
-            $openContents
-              .slideUp(settings.duration , settings.easing, function() {
-                $(this).removeClass(className.active);
-                module.reset.display.call(this);
-              })
-            ;
-          }
-        },
-
-        reset: {
-
-          display: function() {
-            module.verbose('Removing inline display from element', this);
-            $(this).css('display', '');
-            if( $(this).attr('style') === '') {
-              $(this)
-                .attr('style', '')
-                .removeAttr('style')
-              ;
-            }
-          },
-
-          opacity: function() {
-            module.verbose('Removing inline opacity from element', this);
-            $(this).css('opacity', '');
-            if( $(this).attr('style') === '') {
-              $(this)
-                .attr('style', '')
-                .removeAttr('style')
-              ;
-            }
-          },
-
-        },
-
-        setting: function(name, value) {
-          module.debug('Changing setting', name, value);
-          if( $.isPlainObject(name) ) {
-            $.extend(true, settings, name);
-          }
-          else if(value !== undefined) {
-            if($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function(name, value) {
-          module.debug('Changing internal', name, value);
-          if(value !== undefined) {
-            if( $.isPlainObject(name) ) {
-              $.extend(true, module, name);
-            }
-            else {
-              module[name] = value;
-            }
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function() {
-          if(!settings.silent && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function() {
-          if(!settings.silent && settings.verbose && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function() {
-          if(!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function(message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-            ;
-            if(settings.performance) {
-              currentTime   = new Date().getTime();
-              previousTime  = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time          = currentTime;
-              performance.push({
-                'Name'           : message[0],
-                'Arguments'      : [].slice.call(message, 1) || '',
-                'Element'        : element,
-                'Execution Time' : executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function() {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-            ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function(index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if(moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if(console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function(index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function(query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-          ;
-          passedArguments = passedArguments || queryArguments;
-          context         = element         || context;
-          if(typeof query == 'string' && object !== undefined) {
-            query    = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function(depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                : query
-              ;
-              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
-                object = object[camelCaseValue];
-              }
-              else if( object[camelCaseValue] !== undefined ) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
-                object = object[value];
-              }
-              else if( object[value] !== undefined ) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ( $.isFunction( found ) ) {
-            response = found.apply(context, passedArguments);
-          }
-          else if(found !== undefined) {
-            response = found;
-          }
-          if(Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if(returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if(response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-      if(methodInvoked) {
-        if(instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if(instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : this
-  ;
-};
-
-$.fn.accordion.settings = {
-
-  name            : 'Accordion',
-  namespace       : 'accordion',
-
-  silent          : false,
-  debug           : false,
-  verbose         : false,
-  performance     : true,
-
-  on              : 'click', // event on title that opens accordion
-
-  observeChanges  : true,  // whether accordion should automatically refresh on DOM insertion
-
-  exclusive       : true,  // whether a single accordion content panel should be open at once
-  collapsible     : true,  // whether accordion content can be closed
-  closeNested     : false, // whether nested content should be closed when a panel is closed
-  animateChildren : true,  // whether children opacity should be animated
-
-  duration        : 350, // duration of animation
-  easing          : 'easeOutQuad', // easing equation for animation
-
-  onOpening       : function(){}, // callback before open animation
-  onClosing       : function(){}, // callback before closing animation
-  onChanging      : function(){}, // callback before closing or opening animation
-
-  onOpen          : function(){}, // callback after open animation
-  onClose         : function(){}, // callback after closing animation
-  onChange        : function(){}, // callback after closing or opening animation
-
-  error: {
-    method : 'The method you called is not defined'
-  },
-
-  className   : {
-    active    : 'active',
-    animating : 'animating',
-    transition: 'transition'
-  },
-
-  selector    : {
-    accordion : '.accordion',
-    title     : '.title',
-    trigger   : '.title',
-    content   : '.content'
-  }
-
-};
-
-// Adds easing
-$.extend( $.easing, {
-  easeOutQuad: function (x, t, b, c, d) {
-    return -c *(t/=d)*(t-2) + b;
-  }
-});
-
-})( jQuery, window, document );
-

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/accordion.min.css


文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/accordion.min.js


+ 0 - 275
lib/fomantic/components/ad.css

@@ -1,275 +0,0 @@
-/*!
- * # Fomantic-UI - Ad
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Copyright 2013 Contributors
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-         Advertisement
-*******************************/
-
-.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;
-}
-
-/*--------------
-     Common
----------------*/
-
-
-/* Leaderboard */
-.ui.leaderboard.ad {
-  width: 728px;
-  height: 90px;
-}
-
-/* Medium Rectangle */
-.ui[class*="medium rectangle"].ad {
-  width: 300px;
-  height: 250px;
-}
-
-/* Large Rectangle */
-.ui[class*="large rectangle"].ad {
-  width: 336px;
-  height: 280px;
-}
-
-/* Half Page */
-.ui[class*="half page"].ad {
-  width: 300px;
-  height: 600px;
-}
-
-/*--------------
-     Square
----------------*/
-
-
-/* Square */
-.ui.square.ad {
-  width: 250px;
-  height: 250px;
-}
-
-/* Small Square */
-.ui[class*="small square"].ad {
-  width: 200px;
-  height: 200px;
-}
-
-/*--------------
-    Rectangle
----------------*/
-
-
-/* Small Rectangle */
-.ui[class*="small rectangle"].ad {
-  width: 180px;
-  height: 150px;
-}
-
-/* Vertical Rectangle */
-.ui[class*="vertical rectangle"].ad {
-  width: 240px;
-  height: 400px;
-}
-
-/*--------------
-     Button
----------------*/
-
-.ui.button.ad {
-  width: 120px;
-  height: 90px;
-}
-.ui[class*="square button"].ad {
-  width: 125px;
-  height: 125px;
-}
-.ui[class*="small button"].ad {
-  width: 120px;
-  height: 60px;
-}
-
-/*--------------
-   Skyscrapers
----------------*/
-
-
-/* Skyscraper */
-.ui.skyscraper.ad {
-  width: 120px;
-  height: 600px;
-}
-
-/* Wide Skyscraper */
-.ui[class*="wide skyscraper"].ad {
-  width: 160px;
-}
-
-/*--------------
-     Banners
----------------*/
-
-
-/* Banner */
-.ui.banner.ad {
-  width: 468px;
-  height: 60px;
-}
-
-/* Vertical Banner */
-.ui[class*="vertical banner"].ad {
-  width: 120px;
-  height: 240px;
-}
-
-/* Top Banner */
-.ui[class*="top banner"].ad {
-  width: 930px;
-  height: 180px;
-}
-
-/* Half Banner */
-.ui[class*="half banner"].ad {
-  width: 234px;
-  height: 60px;
-}
-
-/*--------------
-    Boards
----------------*/
-
-
-/* Leaderboard */
-.ui[class*="large leaderboard"].ad {
-  width: 970px;
-  height: 90px;
-}
-
-/* Billboard */
-.ui.billboard.ad {
-  width: 970px;
-  height: 250px;
-}
-
-/*--------------
-    Panorama
----------------*/
-
-
-/* Panorama */
-.ui.panorama.ad {
-  width: 980px;
-  height: 120px;
-}
-
-/*--------------
-     Netboard
----------------*/
-
-
-/* Netboard */
-.ui.netboard.ad {
-  width: 580px;
-  height: 400px;
-}
-
-/*--------------
-     Mobile
----------------*/
-
-
-/* Large Mobile Banner */
-.ui[class*="large mobile banner"].ad {
-  width: 320px;
-  height: 100px;
-}
-
-/* Mobile Leaderboard */
-.ui[class*="mobile leaderboard"].ad {
-  width: 320px;
-  height: 50px;
-}
-
-
-/*******************************
-             Types
-*******************************/
-
-
-/* Mobile Sizes */
-.ui.mobile.ad {
-  display: none;
-}
-@media only screen and (max-width: 767.98px) {
-  .ui.mobile.ad {
-    display: block;
-  }
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-.ui.centered.ad {
-  margin-left: auto;
-  margin-right: auto;
-}
-.ui.test.ad {
-  position: relative;
-  background: #545454;
-}
-.ui.test.ad:after {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  width: 100%;
-  text-align: center;
-  -webkit-transform: translateX(-50%) translateY(-50%);
-          transform: translateX(-50%) translateY(-50%);
-  content: 'Ad';
-  color: #FFFFFF;
-  font-size: 1em;
-  font-weight: bold;
-}
-.ui.mobile.test.ad:after {
-  font-size: 0.85714286em;
-}
-.ui.test.ad[data-text]:after {
-  content: attr(data-text);
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-    User Variable Overrides
-*******************************/
-

+ 0 - 10
lib/fomantic/components/ad.min.css

@@ -1,10 +0,0 @@
-/*!
- * # Fomantic-UI - Ad
- * http://github.com/fomantic/Fomantic-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 rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:240px;height:400px}.ui.button.ad{width:120px;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:120px;height:60px}.ui.skyscraper.ad{width:120px;height:600px}.ui[class*="wide skyscraper"].ad{width:160px}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:120px;height:240px}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:120px}.ui.netboard.ad{width:580px;height:400px}.ui[class*="large mobile banner"].ad{width:320px;height:100px}.ui[class*="mobile leaderboard"].ad{width:320px;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767.98px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#545454}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#fff;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714286em}.ui.test.ad[data-text]:after{content:attr(data-text)}

+ 0 - 1177
lib/fomantic/components/api.js

@@ -1,1177 +0,0 @@
-/*!
- * # Fomantic-UI - API
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-'use strict';
-
-$.isWindow = $.isWindow || function(obj) {
-  return obj != null && obj === obj.window;
-};
-
-  window = (typeof window != 'undefined' && window.Math == Math)
-    ? window
-    : (typeof self != 'undefined' && self.Math == Math)
-      ? self
-      : Function('return this')()
-;
-
-$.api = $.fn.api = function(parameters) {
-
-  var
-    // use window context if none specified
-    $allModules     = $.isFunction(this)
-        ? $(window)
-        : $(this),
-    moduleSelector = $allModules.selector || '',
-    time           = new Date().getTime(),
-    performance    = [],
-
-    query          = arguments[0],
-    methodInvoked  = (typeof query == 'string'),
-    queryArguments = [].slice.call(arguments, 1),
-
-    returnedValue
-  ;
-
-  $allModules
-    .each(function() {
-      var
-        settings          = ( $.isPlainObject(parameters) )
-          ? $.extend(true, {}, $.fn.api.settings, parameters)
-          : $.extend({}, $.fn.api.settings),
-
-        // internal aliases
-        namespace       = settings.namespace,
-        metadata        = settings.metadata,
-        selector        = settings.selector,
-        error           = settings.error,
-        className       = settings.className,
-
-        // define namespaces for modules
-        eventNamespace  = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-
-        // element that creates request
-        $module         = $(this),
-        $form           = $module.closest(selector.form),
-
-        // context used for state
-        $context        = (settings.stateContext)
-          ? $(settings.stateContext)
-          : $module,
-
-        // request details
-        ajaxSettings,
-        requestSettings,
-        url,
-        data,
-        requestStartTime,
-
-        // standard module
-        element         = this,
-        context         = $context[0],
-        instance        = $module.data(moduleNamespace),
-        module
-      ;
-
-      module = {
-
-        initialize: function() {
-          if(!methodInvoked) {
-            module.bind.events();
-          }
-          module.instantiate();
-        },
-
-        instantiate: function() {
-          module.verbose('Storing instance of module', module);
-          instance = module;
-          $module
-            .data(moduleNamespace, instance)
-          ;
-        },
-
-        destroy: function() {
-          module.verbose('Destroying previous module for', element);
-          $module
-            .removeData(moduleNamespace)
-            .off(eventNamespace)
-          ;
-        },
-
-        bind: {
-          events: function() {
-            var
-              triggerEvent = module.get.event()
-            ;
-            if( triggerEvent ) {
-              module.verbose('Attaching API events to element', triggerEvent);
-              $module
-                .on(triggerEvent + eventNamespace, module.event.trigger)
-              ;
-            }
-            else if(settings.on == 'now') {
-              module.debug('Querying API endpoint immediately');
-              module.query();
-            }
-          }
-        },
-
-        decode: {
-          json: function(response) {
-            if(response !== undefined && typeof response == 'string') {
-              try {
-               response = JSON.parse(response);
-              }
-              catch(e) {
-                // isnt json string
-              }
-            }
-            return response;
-          }
-        },
-
-        read: {
-          cachedResponse: function(url) {
-            var
-              response
-            ;
-            if(window.Storage === undefined) {
-              module.error(error.noStorage);
-              return;
-            }
-            response = sessionStorage.getItem(url);
-            module.debug('Using cached response', url, response);
-            response = module.decode.json(response);
-            return response;
-          }
-        },
-        write: {
-          cachedResponse: function(url, response) {
-            if(response && response === '') {
-              module.debug('Response empty, not caching', response);
-              return;
-            }
-            if(window.Storage === undefined) {
-              module.error(error.noStorage);
-              return;
-            }
-            if( $.isPlainObject(response) ) {
-              response = JSON.stringify(response);
-            }
-            sessionStorage.setItem(url, response);
-            module.verbose('Storing cached response for url', url, response);
-          }
-        },
-
-        query: function() {
-
-          if(module.is.disabled()) {
-            module.debug('Element is disabled API request aborted');
-            return;
-          }
-
-          if(module.is.loading()) {
-            if(settings.interruptRequests) {
-              module.debug('Interrupting previous request');
-              module.abort();
-            }
-            else {
-              module.debug('Cancelling request, previous request is still pending');
-              return;
-            }
-          }
-
-          // pass element metadata to url (value, text)
-          if(settings.defaultData) {
-            $.extend(true, settings.urlData, module.get.defaultData());
-          }
-
-          // Add form content
-          if(settings.serializeForm) {
-            settings.data = module.add.formData(settings.data);
-          }
-
-          // call beforesend and get any settings changes
-          requestSettings = module.get.settings();
-
-          // check if before send cancelled request
-          if(requestSettings === false) {
-            module.cancelled = true;
-            module.error(error.beforeSend);
-            return;
-          }
-          else {
-            module.cancelled = false;
-          }
-
-          // get url
-          url = module.get.templatedURL();
-
-          if(!url && !module.is.mocked()) {
-            module.error(error.missingURL);
-            return;
-          }
-
-          // replace variables
-          url = module.add.urlData( url );
-          // missing url parameters
-          if( !url && !module.is.mocked()) {
-            return;
-          }
-
-          requestSettings.url = settings.base + url;
-
-          // look for jQuery ajax parameters in settings
-          ajaxSettings = $.extend(true, {}, settings, {
-            type       : settings.method || settings.type,
-            data       : data,
-            url        : settings.base + url,
-            beforeSend : settings.beforeXHR,
-            success    : function() {},
-            failure    : function() {},
-            complete   : function() {}
-          });
-
-          module.debug('Querying URL', ajaxSettings.url);
-          module.verbose('Using AJAX settings', ajaxSettings);
-          if(settings.cache === 'local' && module.read.cachedResponse(url)) {
-            module.debug('Response returned from local cache');
-            module.request = module.create.request();
-            module.request.resolveWith(context, [ module.read.cachedResponse(url) ]);
-            return;
-          }
-
-          if( !settings.throttle ) {
-            module.debug('Sending request', data, ajaxSettings.method);
-            module.send.request();
-          }
-          else {
-            if(!settings.throttleFirstRequest && !module.timer) {
-              module.debug('Sending request', data, ajaxSettings.method);
-              module.send.request();
-              module.timer = setTimeout(function(){}, settings.throttle);
-            }
-            else {
-              module.debug('Throttling request', settings.throttle);
-              clearTimeout(module.timer);
-              module.timer = setTimeout(function() {
-                if(module.timer) {
-                  delete module.timer;
-                }
-                module.debug('Sending throttled request', data, ajaxSettings.method);
-                module.send.request();
-              }, settings.throttle);
-            }
-          }
-
-        },
-
-        should: {
-          removeError: function() {
-            return ( settings.hideError === true || (settings.hideError === 'auto' && !module.is.form()) );
-          }
-        },
-
-        is: {
-          disabled: function() {
-            return ($module.filter(selector.disabled).length > 0);
-          },
-          expectingJSON: function() {
-            return settings.dataType === 'json' || settings.dataType === 'jsonp';
-          },
-          form: function() {
-            return $module.is('form') || $context.is('form');
-          },
-          mocked: function() {
-            return (settings.mockResponse || settings.mockResponseAsync || settings.response || settings.responseAsync);
-          },
-          input: function() {
-            return $module.is('input');
-          },
-          loading: function() {
-            return (module.request)
-              ? (module.request.state() == 'pending')
-              : false
-            ;
-          },
-          abortedRequest: function(xhr) {
-            if(xhr && xhr.readyState !== undefined && xhr.readyState === 0) {
-              module.verbose('XHR request determined to be aborted');
-              return true;
-            }
-            else {
-              module.verbose('XHR request was not aborted');
-              return false;
-            }
-          },
-          validResponse: function(response) {
-            if( (!module.is.expectingJSON()) || !$.isFunction(settings.successTest) ) {
-              module.verbose('Response is not JSON, skipping validation', settings.successTest, response);
-              return true;
-            }
-            module.debug('Checking JSON returned success', settings.successTest, response);
-            if( settings.successTest(response) ) {
-              module.debug('Response passed success test', response);
-              return true;
-            }
-            else {
-              module.debug('Response failed success test', response);
-              return false;
-            }
-          }
-        },
-
-        was: {
-          cancelled: function() {
-            return (module.cancelled || false);
-          },
-          succesful: function() {
-            module.verbose('This behavior will be deleted due to typo. Use "was successful" instead.');
-            return module.was.successful();
-          },
-          successful: function() {
-            return (module.request && module.request.state() == 'resolved');
-          },
-          failure: function() {
-            return (module.request && module.request.state() == 'rejected');
-          },
-          complete: function() {
-            return (module.request && (module.request.state() == 'resolved' || module.request.state() == 'rejected') );
-          }
-        },
-
-        add: {
-          urlData: function(url, urlData) {
-            var
-              requiredVariables,
-              optionalVariables
-            ;
-            if(url) {
-              requiredVariables = url.match(settings.regExp.required);
-              optionalVariables = url.match(settings.regExp.optional);
-              urlData           = urlData || settings.urlData;
-              if(requiredVariables) {
-                module.debug('Looking for required URL variables', requiredVariables);
-                $.each(requiredVariables, function(index, templatedString) {
-                  var
-                    // allow legacy {$var} style
-                    variable = (templatedString.indexOf('$') !== -1)
-                      ? templatedString.substr(2, templatedString.length - 3)
-                      : templatedString.substr(1, templatedString.length - 2),
-                    value   = ($.isPlainObject(urlData) && urlData[variable] !== undefined)
-                      ? urlData[variable]
-                      : ($module.data(variable) !== undefined)
-                        ? $module.data(variable)
-                        : ($context.data(variable) !== undefined)
-                          ? $context.data(variable)
-                          : urlData[variable]
-                  ;
-                  // remove value
-                  if(value === undefined) {
-                    module.error(error.requiredParameter, variable, url);
-                    url = false;
-                    return false;
-                  }
-                  else {
-                    module.verbose('Found required variable', variable, value);
-                    value = (settings.encodeParameters)
-                      ? module.get.urlEncodedValue(value)
-                      : value
-                    ;
-                    url = url.replace(templatedString, value);
-                  }
-                });
-              }
-              if(optionalVariables) {
-                module.debug('Looking for optional URL variables', requiredVariables);
-                $.each(optionalVariables, function(index, templatedString) {
-                  var
-                    // allow legacy {/$var} style
-                    variable = (templatedString.indexOf('$') !== -1)
-                      ? templatedString.substr(3, templatedString.length - 4)
-                      : templatedString.substr(2, templatedString.length - 3),
-                    value   = ($.isPlainObject(urlData) && urlData[variable] !== undefined)
-                      ? urlData[variable]
-                      : ($module.data(variable) !== undefined)
-                        ? $module.data(variable)
-                        : ($context.data(variable) !== undefined)
-                          ? $context.data(variable)
-                          : urlData[variable]
-                  ;
-                  // optional replacement
-                  if(value !== undefined) {
-                    module.verbose('Optional variable Found', variable, value);
-                    url = url.replace(templatedString, value);
-                  }
-                  else {
-                    module.verbose('Optional variable not found', variable);
-                    // remove preceding slash if set
-                    if(url.indexOf('/' + templatedString) !== -1) {
-                      url = url.replace('/' + templatedString, '');
-                    }
-                    else {
-                      url = url.replace(templatedString, '');
-                    }
-                  }
-                });
-              }
-            }
-            return url;
-          },
-          formData: function(data) {
-            var
-              canSerialize = ($.fn.serializeObject !== undefined),
-              formData     = (canSerialize)
-                ? $form.serializeObject()
-                : $form.serialize(),
-              hasOtherData
-            ;
-            data         = data || settings.data;
-            hasOtherData = $.isPlainObject(data);
-
-            if(hasOtherData) {
-              if(canSerialize) {
-                module.debug('Extending existing data with form data', data, formData);
-                data = $.extend(true, {}, data, formData);
-              }
-              else {
-                module.error(error.missingSerialize);
-                module.debug('Cant extend data. Replacing data with form data', data, formData);
-                data = formData;
-              }
-            }
-            else {
-              module.debug('Adding form data', formData);
-              data = formData;
-            }
-            return data;
-          }
-        },
-
-        send: {
-          request: function() {
-            module.set.loading();
-            module.request = module.create.request();
-            if( module.is.mocked() ) {
-              module.mockedXHR = module.create.mockedXHR();
-            }
-            else {
-              module.xhr = module.create.xhr();
-            }
-            settings.onRequest.call(context, module.request, module.xhr);
-          }
-        },
-
-        event: {
-          trigger: function(event) {
-            module.query();
-            if(event.type == 'submit' || event.type == 'click') {
-              event.preventDefault();
-            }
-          },
-          xhr: {
-            always: function() {
-              // nothing special
-            },
-            done: function(response, textStatus, xhr) {
-              var
-                context            = this,
-                elapsedTime        = (new Date().getTime() - requestStartTime),
-                timeLeft           = (settings.loadingDuration - elapsedTime),
-                translatedResponse = ( $.isFunction(settings.onResponse) )
-                  ? module.is.expectingJSON() && !settings.rawResponse
-                    ? settings.onResponse.call(context, $.extend(true, {}, response))
-                    : settings.onResponse.call(context, response)
-                  : false
-              ;
-              timeLeft = (timeLeft > 0)
-                ? timeLeft
-                : 0
-              ;
-              if(translatedResponse) {
-                module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response);
-                response = translatedResponse;
-              }
-              if(timeLeft > 0) {
-                module.debug('Response completed early delaying state change by', timeLeft);
-              }
-              setTimeout(function() {
-                if( module.is.validResponse(response) ) {
-                  module.request.resolveWith(context, [response, xhr]);
-                }
-                else {
-                  module.request.rejectWith(context, [xhr, 'invalid']);
-                }
-              }, timeLeft);
-            },
-            fail: function(xhr, status, httpMessage) {
-              var
-                context     = this,
-                elapsedTime = (new Date().getTime() - requestStartTime),
-                timeLeft    = (settings.loadingDuration - elapsedTime)
-              ;
-              timeLeft = (timeLeft > 0)
-                ? timeLeft
-                : 0
-              ;
-              if(timeLeft > 0) {
-                module.debug('Response completed early delaying state change by', timeLeft);
-              }
-              setTimeout(function() {
-                if( module.is.abortedRequest(xhr) ) {
-                  module.request.rejectWith(context, [xhr, 'aborted', httpMessage]);
-                }
-                else {
-                  module.request.rejectWith(context, [xhr, 'error', status, httpMessage]);
-                }
-              }, timeLeft);
-            }
-          },
-          request: {
-            done: function(response, xhr) {
-              module.debug('Successful API Response', response);
-              if(settings.cache === 'local' && url) {
-                module.write.cachedResponse(url, response);
-                module.debug('Saving server response locally', module.cache);
-              }
-              settings.onSuccess.call(context, response, $module, xhr);
-            },
-            complete: function(firstParameter, secondParameter) {
-              var
-                xhr,
-                response
-              ;
-              // have to guess callback parameters based on request success
-              if( module.was.successful() ) {
-                response = firstParameter;
-                xhr      = secondParameter;
-              }
-              else {
-                xhr      = firstParameter;
-                response = module.get.responseFromXHR(xhr);
-              }
-              module.remove.loading();
-              settings.onComplete.call(context, response, $module, xhr);
-            },
-            fail: function(xhr, status, httpMessage) {
-              var
-                // pull response from xhr if available
-                response     = module.get.responseFromXHR(xhr),
-                errorMessage = module.get.errorFromRequest(response, status, httpMessage)
-              ;
-              if(status == 'aborted') {
-                module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage);
-                settings.onAbort.call(context, status, $module, xhr);
-                return true;
-              }
-              else if(status == 'invalid') {
-                module.debug('JSON did not pass success test. A server-side error has most likely occurred', response);
-              }
-              else if(status == 'error') {
-                if(xhr !== undefined) {
-                  module.debug('XHR produced a server error', status, httpMessage);
-                  // make sure we have an error to display to console
-                  if( (xhr.status < 200 || xhr.status >= 300) && httpMessage !== undefined && httpMessage !== '') {
-                    module.error(error.statusMessage + httpMessage, ajaxSettings.url);
-                  }
-                  settings.onError.call(context, errorMessage, $module, xhr);
-                }
-              }
-
-              if(settings.errorDuration && status !== 'aborted') {
-                module.debug('Adding error state');
-                module.set.error();
-                if( module.should.removeError() ) {
-                  setTimeout(module.remove.error, settings.errorDuration);
-                }
-              }
-              module.debug('API Request failed', errorMessage, xhr);
-              settings.onFailure.call(context, response, $module, xhr);
-            }
-          }
-        },
-
-        create: {
-
-          request: function() {
-            // api request promise
-            return $.Deferred()
-              .always(module.event.request.complete)
-              .done(module.event.request.done)
-              .fail(module.event.request.fail)
-            ;
-          },
-
-          mockedXHR: function () {
-            var
-              // xhr does not simulate these properties of xhr but must return them
-              textStatus     = false,
-              status         = false,
-              httpMessage    = false,
-              responder      = settings.mockResponse      || settings.response,
-              asyncResponder = settings.mockResponseAsync || settings.responseAsync,
-              asyncCallback,
-              response,
-              mockedXHR
-            ;
-
-            mockedXHR = $.Deferred()
-              .always(module.event.xhr.complete)
-              .done(module.event.xhr.done)
-              .fail(module.event.xhr.fail)
-            ;
-
-            if(responder) {
-              if( $.isFunction(responder) ) {
-                module.debug('Using specified synchronous callback', responder);
-                response = responder.call(context, requestSettings);
-              }
-              else {
-                module.debug('Using settings specified response', responder);
-                response = responder;
-              }
-              // simulating response
-              mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]);
-            }
-            else if( $.isFunction(asyncResponder) ) {
-              asyncCallback = function(response) {
-                module.debug('Async callback returned response', response);
-
-                if(response) {
-                  mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]);
-                }
-                else {
-                  mockedXHR.rejectWith(context, [{ responseText: response }, status, httpMessage]);
-                }
-              };
-              module.debug('Using specified async response callback', asyncResponder);
-              asyncResponder.call(context, requestSettings, asyncCallback);
-            }
-            return mockedXHR;
-          },
-
-          xhr: function() {
-            var
-              xhr
-            ;
-            // ajax request promise
-            xhr = $.ajax(ajaxSettings)
-              .always(module.event.xhr.always)
-              .done(module.event.xhr.done)
-              .fail(module.event.xhr.fail)
-            ;
-            module.verbose('Created server request', xhr, ajaxSettings);
-            return xhr;
-          }
-        },
-
-        set: {
-          error: function() {
-            module.verbose('Adding error state to element', $context);
-            $context.addClass(className.error);
-          },
-          loading: function() {
-            module.verbose('Adding loading state to element', $context);
-            $context.addClass(className.loading);
-            requestStartTime = new Date().getTime();
-          }
-        },
-
-        remove: {
-          error: function() {
-            module.verbose('Removing error state from element', $context);
-            $context.removeClass(className.error);
-          },
-          loading: function() {
-            module.verbose('Removing loading state from element', $context);
-            $context.removeClass(className.loading);
-          }
-        },
-
-        get: {
-          responseFromXHR: function(xhr) {
-            return $.isPlainObject(xhr)
-              ? (module.is.expectingJSON())
-                ? module.decode.json(xhr.responseText)
-                : xhr.responseText
-              : false
-            ;
-          },
-          errorFromRequest: function(response, status, httpMessage) {
-            return ($.isPlainObject(response) && response.error !== undefined)
-              ? response.error // use json error message
-              : (settings.error[status] !== undefined) // use server error message
-                ? settings.error[status]
-                : httpMessage
-            ;
-          },
-          request: function() {
-            return module.request || false;
-          },
-          xhr: function() {
-            return module.xhr || false;
-          },
-          settings: function() {
-            var
-              runSettings
-            ;
-            runSettings = settings.beforeSend.call(context, settings);
-            if(runSettings) {
-              if(runSettings.success !== undefined) {
-                module.debug('Legacy success callback detected', runSettings);
-                module.error(error.legacyParameters, runSettings.success);
-                runSettings.onSuccess = runSettings.success;
-              }
-              if(runSettings.failure !== undefined) {
-                module.debug('Legacy failure callback detected', runSettings);
-                module.error(error.legacyParameters, runSettings.failure);
-                runSettings.onFailure = runSettings.failure;
-              }
-              if(runSettings.complete !== undefined) {
-                module.debug('Legacy complete callback detected', runSettings);
-                module.error(error.legacyParameters, runSettings.complete);
-                runSettings.onComplete = runSettings.complete;
-              }
-            }
-            if(runSettings === undefined) {
-              module.error(error.noReturnedValue);
-            }
-            if(runSettings === false) {
-              return runSettings;
-            }
-            return (runSettings !== undefined)
-              ? $.extend(true, {}, runSettings)
-              : $.extend(true, {}, settings)
-            ;
-          },
-          urlEncodedValue: function(value) {
-            var
-              decodedValue   = window.decodeURIComponent(value),
-              encodedValue   = window.encodeURIComponent(value),
-              alreadyEncoded = (decodedValue !== value)
-            ;
-            if(alreadyEncoded) {
-              module.debug('URL value is already encoded, avoiding double encoding', value);
-              return value;
-            }
-            module.verbose('Encoding value using encodeURIComponent', value, encodedValue);
-            return encodedValue;
-          },
-          defaultData: function() {
-            var
-              data = {}
-            ;
-            if( !$.isWindow(element) ) {
-              if( module.is.input() ) {
-                data.value = $module.val();
-              }
-              else if( module.is.form() ) {
-
-              }
-              else {
-                data.text = $module.text();
-              }
-            }
-            return data;
-          },
-          event: function() {
-            if( $.isWindow(element) || settings.on == 'now' ) {
-              module.debug('API called without element, no events attached');
-              return false;
-            }
-            else if(settings.on == 'auto') {
-              if( $module.is('input') ) {
-                return (element.oninput !== undefined)
-                  ? 'input'
-                  : (element.onpropertychange !== undefined)
-                    ? 'propertychange'
-                    : 'keyup'
-                ;
-              }
-              else if( $module.is('form') ) {
-                return 'submit';
-              }
-              else {
-                return 'click';
-              }
-            }
-            else {
-              return settings.on;
-            }
-          },
-          templatedURL: function(action) {
-            action = action || $module.data(metadata.action) || settings.action || false;
-            url    = $module.data(metadata.url) || settings.url || false;
-            if(url) {
-              module.debug('Using specified url', url);
-              return url;
-            }
-            if(action) {
-              module.debug('Looking up url for action', action, settings.api);
-              if(settings.api[action] === undefined && !module.is.mocked()) {
-                module.error(error.missingAction, settings.action, settings.api);
-                return;
-              }
-              url = settings.api[action];
-            }
-            else if( module.is.form() ) {
-              url = $module.attr('action') || $context.attr('action') || false;
-              module.debug('No url or action specified, defaulting to form action', url);
-            }
-            return url;
-          }
-        },
-
-        abort: function() {
-          var
-            xhr = module.get.xhr()
-          ;
-          if( xhr && xhr.state() !== 'resolved') {
-            module.debug('Cancelling API request');
-            xhr.abort();
-          }
-        },
-
-        // reset state
-        reset: function() {
-          module.remove.error();
-          module.remove.loading();
-        },
-
-        setting: function(name, value) {
-          module.debug('Changing setting', name, value);
-          if( $.isPlainObject(name) ) {
-            $.extend(true, settings, name);
-          }
-          else if(value !== undefined) {
-            if($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function(name, value) {
-          if( $.isPlainObject(name) ) {
-            $.extend(true, module, name);
-          }
-          else if(value !== undefined) {
-            module[name] = value;
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function() {
-          if(!settings.silent && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function() {
-          if(!settings.silent && settings.verbose && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function() {
-          if(!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function(message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-            ;
-            if(settings.performance) {
-              currentTime   = new Date().getTime();
-              previousTime  = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time          = currentTime;
-              performance.push({
-                'Name'           : message[0],
-                'Arguments'      : [].slice.call(message, 1) || '',
-                //'Element'        : element,
-                'Execution Time' : executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function() {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-            ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function(index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if(moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if(console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function(index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function(query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-          ;
-          passedArguments = passedArguments || queryArguments;
-          context         = element         || context;
-          if(typeof query == 'string' && object !== undefined) {
-            query    = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function(depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                : query
-              ;
-              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
-                object = object[camelCaseValue];
-              }
-              else if( object[camelCaseValue] !== undefined ) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
-                object = object[value];
-              }
-              else if( object[value] !== undefined ) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ( $.isFunction( found ) ) {
-            response = found.apply(context, passedArguments);
-          }
-          else if(found !== undefined) {
-            response = found;
-          }
-          if(Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if(returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if(response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-
-      if(methodInvoked) {
-        if(instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if(instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : this
-  ;
-};
-
-$.api.settings = {
-
-  name              : 'API',
-  namespace         : 'api',
-
-  debug             : false,
-  verbose           : false,
-  performance       : true,
-
-  // object containing all templates endpoints
-  api               : {},
-
-  // whether to cache responses
-  cache             : true,
-
-  // whether new requests should abort previous requests
-  interruptRequests : true,
-
-  // event binding
-  on                : 'auto',
-
-  // context for applying state classes
-  stateContext      : false,
-
-  // duration for loading state
-  loadingDuration   : 0,
-
-  // whether to hide errors after a period of time
-  hideError         : 'auto',
-
-  // duration for error state
-  errorDuration     : 2000,
-
-  // whether parameters should be encoded with encodeURIComponent
-  encodeParameters  : true,
-
-  // API action to use
-  action            : false,
-
-  // templated URL to use
-  url               : false,
-
-  // base URL to apply to all endpoints
-  base              : '',
-
-  // data that will
-  urlData           : {},
-
-  // whether to add default data to url data
-  defaultData          : true,
-
-  // whether to serialize closest form
-  serializeForm        : false,
-
-  // how long to wait before request should occur
-  throttle             : 0,
-
-  // whether to throttle first request or only repeated
-  throttleFirstRequest : true,
-
-  // standard ajax settings
-  method            : 'get',
-  data              : {},
-  dataType          : 'json',
-
-  // mock response
-  mockResponse      : false,
-  mockResponseAsync : false,
-
-  // aliases for mock
-  response          : false,
-  responseAsync     : false,
-
-// whether onResponse should work with response value without force converting into an object
-  rawResponse       : false,
-
-  // callbacks before request
-  beforeSend  : function(settings) { return settings; },
-  beforeXHR   : function(xhr) {},
-  onRequest   : function(promise, xhr) {},
-
-  // after request
-  onResponse  : false, // function(response) { },
-
-  // response was successful, if JSON passed validation
-  onSuccess   : function(response, $module) {},
-
-  // request finished without aborting
-  onComplete  : function(response, $module) {},
-
-  // failed JSON success test
-  onFailure   : function(response, $module) {},
-
-  // server error
-  onError     : function(errorMessage, $module) {},
-
-  // request aborted
-  onAbort     : function(errorMessage, $module) {},
-
-  successTest : false,
-
-  // errors
-  error : {
-    beforeSend        : 'The before send function has aborted the request',
-    error             : 'There was an error with your request',
-    exitConditions    : 'API Request Aborted. Exit conditions met',
-    JSONParse         : 'JSON could not be parsed during error handling',
-    legacyParameters  : 'You are using legacy API success callback names',
-    method            : 'The method you called is not defined',
-    missingAction     : 'API action used but no url was defined',
-    missingSerialize  : 'jquery-serialize-object is required to add form data to an existing data object',
-    missingURL        : 'No URL specified for api event',
-    noReturnedValue   : 'The beforeSend callback must return a settings object, beforeSend ignored.',
-    noStorage         : 'Caching responses locally requires session storage',
-    parseError        : 'There was an error parsing your request',
-    requiredParameter : 'Missing a required URL parameter: ',
-    statusMessage     : 'Server gave an error: ',
-    timeout           : 'Your request timed out'
-  },
-
-  regExp  : {
-    required : /\{\$*[A-z0-9]+\}/g,
-    optional : /\{\/\$*[A-z0-9]+\}/g,
-  },
-
-  className: {
-    loading : 'loading',
-    error   : 'error'
-  },
-
-  selector: {
-    disabled : '.disabled',
-    form      : 'form'
-  },
-
-  metadata: {
-    action  : 'action',
-    url     : 'url'
-  }
-};
-
-
-
-})( jQuery, window, document );

文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/api.min.js


+ 0 - 135
lib/fomantic/components/breadcrumb.css

@@ -1,135 +0,0 @@
-/*!
- * # Fomantic-UI - Breadcrumb
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-           Breadcrumb
-*******************************/
-
-.ui.breadcrumb {
-  line-height: 1.4285em;
-  display: inline-block;
-  margin: 0 0;
-  vertical-align: middle;
-}
-.ui.breadcrumb:first-child {
-  margin-top: 0;
-}
-.ui.breadcrumb:last-child {
-  margin-bottom: 0;
-}
-
-
-/*******************************
-          Content
-*******************************/
-
-
-/* Divider */
-.ui.breadcrumb .divider {
-  display: inline-block;
-  opacity: 0.7;
-  margin: 0 0.21428571rem 0;
-  font-size: 0.92857143em;
-  color: rgba(0, 0, 0, 0.4);
-  vertical-align: baseline;
-}
-
-/* Link */
-.ui.breadcrumb a {
-  color: #4183C4;
-}
-.ui.breadcrumb a:hover {
-  color: #1e70bf;
-}
-
-/* Icon Divider */
-.ui.breadcrumb .icon.divider {
-  font-size: 0.85714286em;
-  vertical-align: baseline;
-}
-
-/* Section */
-.ui.breadcrumb a.section {
-  cursor: pointer;
-}
-.ui.breadcrumb .section {
-  display: inline-block;
-  margin: 0;
-  padding: 0;
-}
-
-/* Loose Coupling */
-.ui.breadcrumb.segment {
-  display: inline-block;
-  padding: 0.78571429em 1em;
-}
-
-/* Inverted */
-.ui.inverted.breadcrumb {
-  color: #DCDDDE;
-}
-.ui.inverted.breadcrumb > .active.section {
-  color: #FFFFFF;
-}
-.ui.inverted.breadcrumb > .divider {
-  color: rgba(255, 255, 255, 0.7);
-}
-
-
-/*******************************
-            States
-*******************************/
-
-.ui.breadcrumb .active.section {
-  font-weight: bold;
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-.ui.mini.breadcrumb {
-  font-size: 0.78571429rem;
-}
-.ui.tiny.breadcrumb {
-  font-size: 0.85714286rem;
-}
-.ui.small.breadcrumb {
-  font-size: 0.92857143rem;
-}
-.ui.breadcrumb {
-  font-size: 1rem;
-}
-.ui.large.breadcrumb {
-  font-size: 1.14285714rem;
-}
-.ui.big.breadcrumb {
-  font-size: 1.28571429rem;
-}
-.ui.huge.breadcrumb {
-  font-size: 1.42857143rem;
-}
-.ui.massive.breadcrumb {
-  font-size: 1.71428571rem;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-         Site Overrides
-*******************************/
-

+ 0 - 9
lib/fomantic/components/breadcrumb.min.css

@@ -1,9 +0,0 @@
-/*!
- * # Fomantic-UI - Breadcrumb
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.breadcrumb{line-height:1.4285em;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:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.78571429em 1em}.ui.inverted.breadcrumb{color:#dcddde}.ui.inverted.breadcrumb>.active.section{color:#fff}.ui.inverted.breadcrumb>.divider{color:rgba(255,255,255,.7)}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.78571429rem}.ui.tiny.breadcrumb{font-size:.85714286rem}.ui.small.breadcrumb{font-size:.92857143rem}.ui.breadcrumb{font-size:1rem}.ui.large.breadcrumb{font-size:1.14285714rem}.ui.big.breadcrumb{font-size:1.28571429rem}.ui.huge.breadcrumb{font-size:1.42857143rem}.ui.massive.breadcrumb{font-size:1.71428571rem}

+ 0 - 4402
lib/fomantic/components/button.css

@@ -1,4402 +0,0 @@
-/*!
- * # Fomantic-UI - Button
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Button
-*******************************/
-
-.ui.button {
-  cursor: pointer;
-  display: inline-block;
-  min-height: 1em;
-  outline: none;
-  border: none;
-  vertical-align: baseline;
-  background: #E0E1E2 none;
-  color: rgba(0, 0, 0, 0.6);
-  font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
-  margin: 0 0.25em 0 0;
-  padding: 0.78571429em 1.5em 0.78571429em;
-  text-transform: none;
-  text-shadow: none;
-  font-weight: bold;
-  line-height: 1em;
-  font-style: normal;
-  text-align: center;
-  text-decoration: none;
-  border-radius: 0.28571429rem;
-  -webkit-box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease;
-  transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease;
-  transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease;
-  transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease;
-  will-change: auto;
-  -webkit-tap-highlight-color: transparent;
-}
-
-
-/*******************************
-            States
-*******************************/
-
-
-/*--------------
-      Hover
----------------*/
-
-.ui.button:hover {
-  background-color: #CACBCD;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-  color: rgba(0, 0, 0, 0.8);
-}
-.ui.button:hover .icon {
-  opacity: 0.85;
-}
-
-/*--------------
-      Focus
----------------*/
-
-.ui.button:focus {
-  background-color: #CACBCD;
-  color: rgba(0, 0, 0, 0.8);
-  background-image: none;
-  -webkit-box-shadow: '';
-          box-shadow: '';
-}
-.ui.button:focus .icon {
-  opacity: 0.85;
-}
-
-/*--------------
-      Down
----------------*/
-
-.ui.button:active,
-.ui.active.button:active {
-  background-color: #BABBBC;
-  background-image: '';
-  color: rgba(0, 0, 0, 0.9);
-  -webkit-box-shadow: 0 0 0 1px transparent inset, none;
-          box-shadow: 0 0 0 1px transparent inset, none;
-}
-
-/*--------------
-     Active
----------------*/
-
-.ui.active.button {
-  background-color: #C0C1C2;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 1px transparent inset;
-          box-shadow: 0 0 0 1px transparent inset;
-  color: rgba(0, 0, 0, 0.95);
-}
-.ui.active.button:hover {
-  background-color: #C0C1C2;
-  background-image: none;
-  color: rgba(0, 0, 0, 0.95);
-}
-.ui.active.button:active {
-  background-color: #C0C1C2;
-  background-image: none;
-}
-
-/*--------------
-    Loading
----------------*/
-
-
-/* Specificity hack */
-.ui.loading.loading.loading.loading.loading.loading.button {
-  position: relative;
-  cursor: default;
-  text-shadow: none !important;
-  color: transparent;
-  opacity: 1;
-  pointer-events: auto;
-  -webkit-transition: all 0s linear, opacity 0.1s ease;
-  transition: all 0s linear, opacity 0.1s ease;
-}
-.ui.loading.button:before {
-  position: absolute;
-  content: '';
-  top: 50%;
-  left: 50%;
-  margin: -0.64285714em 0 0 -0.64285714em;
-  width: 1.28571429em;
-  height: 1.28571429em;
-  border-radius: 500rem;
-  border: 0.2em solid rgba(0, 0, 0, 0.15);
-}
-.ui.loading.button:after {
-  position: absolute;
-  content: '';
-  top: 50%;
-  left: 50%;
-  margin: -0.64285714em 0 0 -0.64285714em;
-  width: 1.28571429em;
-  height: 1.28571429em;
-  border-radius: 500rem;
-  -webkit-animation: loader 0.6s infinite linear;
-          animation: loader 0.6s infinite linear;
-  border: 0.2em solid currentColor;
-  color: #FFFFFF;
-  -webkit-box-shadow: 0 0 0 1px transparent;
-          box-shadow: 0 0 0 1px transparent;
-}
-.ui.labeled.icon.loading.button .icon {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.ui.basic.loading.button:not(.inverted):before {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-.ui.basic.loading.button:not(.inverted):after {
-  border-color: #767676;
-}
-
-/*-------------------
-      Disabled
---------------------*/
-
-.ui.buttons .disabled.button:not(.basic),
-.ui.disabled.button,
-.ui.button:disabled,
-.ui.disabled.button:hover,
-.ui.disabled.active.button {
-  cursor: default;
-  opacity: 0.45 !important;
-  background-image: none;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  pointer-events: none !important;
-}
-
-/* Basic Group With Disabled */
-.ui.basic.buttons .ui.disabled.button {
-  border-color: rgba(34, 36, 38, 0.5);
-}
-
-
-/*******************************
-             Types
-*******************************/
-
-
-/*-------------------
-       Animated
---------------------*/
-
-.ui.animated.button {
-  position: relative;
-  overflow: hidden;
-  padding-right: 0 !important;
-  vertical-align: middle;
-  z-index: 1;
-}
-.ui.animated.button .content {
-  will-change: transform, opacity;
-}
-.ui.animated.button .visible.content {
-  position: relative;
-  margin-right: 1.5em;
-}
-.ui.animated.button .hidden.content {
-  position: absolute;
-  width: 100%;
-}
-
-/* Horizontal */
-.ui.animated.button .visible.content,
-.ui.animated.button .hidden.content {
-  -webkit-transition: right 0.3s ease 0s;
-  transition: right 0.3s ease 0s;
-}
-.ui.animated.button .visible.content {
-  left: auto;
-  right: 0;
-}
-.ui.animated.button .hidden.content {
-  top: 50%;
-  left: auto;
-  right: -100%;
-  margin-top: -0.5em;
-}
-.ui.animated.button:focus .visible.content,
-.ui.animated.button:hover .visible.content {
-  left: auto;
-  right: 200%;
-}
-.ui.animated.button:focus .hidden.content,
-.ui.animated.button:hover .hidden.content {
-  left: auto;
-  right: 0;
-}
-
-/* Vertical */
-.ui.vertical.animated.button .visible.content,
-.ui.vertical.animated.button .hidden.content {
-  -webkit-transition: top 0.3s ease, -webkit-transform 0.3s ease;
-  transition: top 0.3s ease, -webkit-transform 0.3s ease;
-  transition: top 0.3s ease, transform 0.3s ease;
-  transition: top 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease;
-}
-.ui.vertical.animated.button .visible.content {
-  -webkit-transform: translateY(0%);
-          transform: translateY(0%);
-  right: auto;
-}
-.ui.vertical.animated.button .hidden.content {
-  top: -50%;
-  left: 0;
-  right: auto;
-}
-.ui.vertical.animated.button:focus .visible.content,
-.ui.vertical.animated.button:hover .visible.content {
-  -webkit-transform: translateY(200%);
-          transform: translateY(200%);
-  right: auto;
-}
-.ui.vertical.animated.button:focus .hidden.content,
-.ui.vertical.animated.button:hover .hidden.content {
-  top: 50%;
-  right: auto;
-}
-
-/* Fade */
-.ui.fade.animated.button .visible.content,
-.ui.fade.animated.button .hidden.content {
-  -webkit-transition: opacity 0.3s ease, -webkit-transform 0.3s ease;
-  transition: opacity 0.3s ease, -webkit-transform 0.3s ease;
-  transition: opacity 0.3s ease, transform 0.3s ease;
-  transition: opacity 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease;
-}
-.ui.fade.animated.button .visible.content {
-  left: auto;
-  right: auto;
-  opacity: 1;
-  -webkit-transform: scale(1);
-          transform: scale(1);
-}
-.ui.fade.animated.button .hidden.content {
-  opacity: 0;
-  left: 0;
-  right: auto;
-  -webkit-transform: scale(1.5);
-          transform: scale(1.5);
-}
-.ui.fade.animated.button:focus .visible.content,
-.ui.fade.animated.button:hover .visible.content {
-  left: auto;
-  right: auto;
-  opacity: 0;
-  -webkit-transform: scale(0.75);
-          transform: scale(0.75);
-}
-.ui.fade.animated.button:focus .hidden.content,
-.ui.fade.animated.button:hover .hidden.content {
-  left: 0;
-  right: auto;
-  opacity: 1;
-  -webkit-transform: scale(1);
-          transform: scale(1);
-}
-
-/*-------------------
-       Inverted
---------------------*/
-
-.ui.inverted.button {
-  -webkit-box-shadow: 0 0 0 2px #FFFFFF inset;
-          box-shadow: 0 0 0 2px #FFFFFF inset;
-  background: transparent none;
-  color: #FFFFFF;
-  text-shadow: none !important;
-}
-
-/* Group */
-.ui.inverted.buttons .button {
-  margin: 0 0 0 -2px;
-}
-.ui.inverted.buttons .button:first-child {
-  margin-left: 0;
-}
-.ui.inverted.vertical.buttons .button {
-  margin: 0 0 -2px 0;
-}
-.ui.inverted.vertical.buttons .button:first-child {
-  margin-top: 0;
-}
-
-/* States */
-
-/* Hover */
-.ui.inverted.button:hover {
-  background: #FFFFFF;
-  -webkit-box-shadow: 0 0 0 2px #FFFFFF inset;
-          box-shadow: 0 0 0 2px #FFFFFF inset;
-  color: rgba(0, 0, 0, 0.8);
-}
-
-/* Active / Focus */
-.ui.inverted.button:focus,
-.ui.inverted.button.active {
-  background: #FFFFFF;
-  -webkit-box-shadow: 0 0 0 2px #FFFFFF inset;
-          box-shadow: 0 0 0 2px #FFFFFF inset;
-  color: rgba(0, 0, 0, 0.8);
-}
-
-/* Active Focus */
-.ui.inverted.button.active:focus {
-  background: #DCDDDE;
-  -webkit-box-shadow: 0 0 0 2px #DCDDDE inset;
-          box-shadow: 0 0 0 2px #DCDDDE inset;
-  color: rgba(0, 0, 0, 0.8);
-}
-
-/*-------------------
-    Labeled Button
---------------------*/
-
-.ui.labeled.button:not(.icon) {
-  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;
-  background: none;
-  padding: 0 !important;
-  border: none;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.ui.labeled.button > .button {
-  margin: 0;
-}
-.ui.labeled.button > .label {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-      -ms-flex-align: center;
-          align-items: center;
-  margin: 0 0 0 -1px !important;
-  font-size: 1em;
-  padding: '';
-  border-color: rgba(34, 36, 38, 0.15);
-}
-
-/* Tag */
-.ui.labeled.button > .tag.label:before {
-  width: 1.85em;
-  height: 1.85em;
-}
-
-/* Right */
-.ui.labeled.button:not([class*="left labeled"]) > .button {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.ui.labeled.button:not([class*="left labeled"]) > .label {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-/* Left Side */
-.ui[class*="left labeled"].button > .button {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.ui[class*="left labeled"].button > .label {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-
-/*-------------------
-       Social
---------------------*/
-
-
-/* Facebook */
-.ui.facebook.button {
-  background-color: #3B5998;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.facebook.button:hover {
-  background-color: #304d8a;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.facebook.button:active {
-  background-color: #2d4373;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Twitter */
-.ui.twitter.button {
-  background-color: #1DA1F2;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.twitter.button:hover {
-  background-color: #0298f3;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.twitter.button:active {
-  background-color: #0c85d0;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Google Plus */
-.ui.google.plus.button {
-  background-color: #DD4B39;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.google.plus.button:hover {
-  background-color: #e0321c;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.google.plus.button:active {
-  background-color: #c23321;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Linked In */
-.ui.linkedin.button {
-  background-color: #0077B5;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.linkedin.button:hover {
-  background-color: #00669c;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.linkedin.button:active {
-  background-color: #005582;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* YouTube */
-.ui.youtube.button {
-  background-color: #FF0000;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.youtube.button:hover {
-  background-color: #e60000;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.youtube.button:active {
-  background-color: #cc0000;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Instagram */
-.ui.instagram.button {
-  background-color: #49769C;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.instagram.button:hover {
-  background-color: #3d698e;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.instagram.button:active {
-  background-color: #395c79;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Pinterest */
-.ui.pinterest.button {
-  background-color: #BD081C;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.pinterest.button:hover {
-  background-color: #ac0013;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.pinterest.button:active {
-  background-color: #8c0615;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* VK */
-.ui.vk.button {
-  background-color: #45668E;
-  color: #FFFFFF;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.vk.button:hover {
-  background-color: #395980;
-  color: #FFFFFF;
-}
-.ui.vk.button:active {
-  background-color: #344d6c;
-  color: #FFFFFF;
-}
-
-/* WhatsApp */
-.ui.whatsapp.button {
-  background-color: #25D366;
-  color: #FFFFFF;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.whatsapp.button:hover {
-  background-color: #19c55a;
-  color: #FFFFFF;
-}
-.ui.whatsapp.button:active {
-  background-color: #1da851;
-  color: #FFFFFF;
-}
-
-/* Telegram */
-.ui.telegram.button {
-  background-color: #0088CC;
-  color: #FFFFFF;
-  background-image: none;
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.telegram.button:hover {
-  background-color: #0077b3;
-  color: #FFFFFF;
-}
-.ui.telegram.button:active {
-  background-color: #006699;
-  color: #FFFFFF;
-}
-
-/*--------------
-     Icon
----------------*/
-
-.ui.button > .icon:not(.button) {
-  height: auto;
-  opacity: 0.8;
-  margin: 0 0.42857143em 0 -0.21428571em;
-  -webkit-transition: opacity 0.1s ease;
-  transition: opacity 0.1s ease;
-  vertical-align: '';
-  color: '';
-}
-.ui.button:not(.icon) > .icon:not(.button):not(.dropdown),
-.ui.button:not(.icon) > .icons:not(.button):not(.dropdown) {
-  margin: 0 0.42857143em 0 -0.21428571em;
-}
-.ui.button:not(.icon) > .right.icon:not(.button):not(.dropdown) {
-  margin: 0 -0.21428571em 0 0.42857143em;
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-
-/*-------------------
-       Floated
---------------------*/
-
-.ui[class*="left floated"].buttons,
-.ui[class*="left floated"].button {
-  float: left;
-  margin-left: 0;
-  margin-right: 0.25em;
-}
-.ui[class*="right floated"].buttons,
-.ui[class*="right floated"].button {
-  float: right;
-  margin-right: 0;
-  margin-left: 0.25em;
-}
-
-/*-------------------
-       Compact
---------------------*/
-
-.ui.compact.buttons .button,
-.ui.compact.button {
-  padding: 0.58928571em 1.125em 0.58928571em;
-}
-.ui.compact.icon.buttons .button,
-.ui.compact.icon.button {
-  padding: 0.58928571em 0.58928571em 0.58928571em;
-}
-.ui.compact.labeled.icon.buttons .button,
-.ui.compact.labeled.icon.button {
-  padding: 0.58928571em 3.69642857em 0.58928571em;
-}
-.ui.compact.labeled.icon.buttons .button > .icon,
-.ui.compact.labeled.icon.button > .icon {
-  padding: 0.58928571em 0 0.58928571em 0;
-}
-
-/*-------------------
-        Sizes
---------------------*/
-
-.ui.mini.buttons .button,
-.ui.mini.buttons .or,
-.ui.ui.ui.ui.mini.button {
-  font-size: 0.78571429rem;
-}
-.ui.tiny.buttons .button,
-.ui.tiny.buttons .or,
-.ui.ui.ui.ui.tiny.button {
-  font-size: 0.85714286rem;
-}
-.ui.small.buttons .button,
-.ui.small.buttons .or,
-.ui.ui.ui.ui.small.button {
-  font-size: 0.92857143rem;
-}
-.ui.buttons .button,
-.ui.buttons .or,
-.ui.button {
-  font-size: 1rem;
-}
-.ui.large.buttons .button,
-.ui.large.buttons .or,
-.ui.ui.ui.ui.large.button {
-  font-size: 1.14285714rem;
-}
-.ui.big.buttons .button,
-.ui.big.buttons .or,
-.ui.ui.ui.ui.big.button {
-  font-size: 1.28571429rem;
-}
-.ui.huge.buttons .button,
-.ui.huge.buttons .or,
-.ui.ui.ui.ui.huge.button {
-  font-size: 1.42857143rem;
-}
-.ui.massive.buttons .button,
-.ui.massive.buttons .or,
-.ui.ui.ui.ui.massive.button {
-  font-size: 1.71428571rem;
-}
-
-/* Dropdown coupled buttons sizes */
-.ui.mini.buttons .dropdown {
-  font-size: 0.78571429rem;
-}
-.ui.mini.buttons .dropdown .menu > .item {
-  font-size: 0.78571429rem;
-}
-.ui.tiny.buttons .dropdown {
-  font-size: 0.85714286rem;
-}
-.ui.tiny.buttons .dropdown .menu > .item {
-  font-size: 0.85714286rem;
-}
-.ui.small.buttons .dropdown {
-  font-size: 0.92857143rem;
-}
-.ui.small.buttons .dropdown .menu > .item {
-  font-size: 0.92857143rem;
-}
-.ui.large.buttons .dropdown {
-  font-size: 1.14285714rem;
-}
-.ui.large.buttons .dropdown .menu > .item {
-  font-size: 1.14285714rem;
-}
-.ui.big.buttons .dropdown {
-  font-size: 1.28571429rem;
-}
-.ui.big.buttons .dropdown .menu > .item {
-  font-size: 1.28571429rem;
-}
-.ui.huge.buttons .dropdown {
-  font-size: 1.42857143rem;
-}
-.ui.huge.buttons .dropdown .menu > .item {
-  font-size: 1.42857143rem;
-}
-.ui.massive.buttons .dropdown {
-  font-size: 1.71428571rem;
-}
-.ui.massive.buttons .dropdown .menu > .item {
-  font-size: 1.71428571rem;
-}
-
-/*--------------
-    Icon Only
----------------*/
-
-.ui.icon.buttons .button,
-.ui.icon.button {
-  padding: 0.78571429em 0.78571429em 0.78571429em;
-}
-.ui.icon.buttons .button > .icon,
-.ui.icon.button > .icon {
-  opacity: 0.9;
-  margin: 0 !important;
-  vertical-align: top;
-}
-
-/*-------------------
-        Basic
---------------------*/
-
-.ui.basic.buttons .button,
-.ui.basic.button {
-  background: transparent none;
-  color: rgba(0, 0, 0, 0.6);
-  font-weight: normal;
-  border-radius: 0.28571429rem;
-  text-transform: none;
-  text-shadow: none !important;
-  -webkit-box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-}
-.ui.basic.buttons {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 1px solid rgba(34, 36, 38, 0.15);
-  border-radius: 0.28571429rem;
-}
-.ui.basic.buttons .button {
-  border-radius: 0;
-}
-.ui.basic.buttons .button:hover,
-.ui.basic.button:hover {
-  background: #FFFFFF;
-  color: rgba(0, 0, 0, 0.8);
-  -webkit-box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.35) inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.35) inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.basic.buttons .button:focus,
-.ui.basic.button:focus {
-  background: #FFFFFF;
-  color: rgba(0, 0, 0, 0.8);
-  -webkit-box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.35) inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.35) inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.basic.buttons .button:active,
-.ui.basic.button:active {
-  background: #F8F8F8;
-  color: rgba(0, 0, 0, 0.9);
-  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 1px 4px 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 1px 4px 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.basic.buttons .active.button,
-.ui.basic.active.button {
-  background: rgba(0, 0, 0, 0.05);
-  -webkit-box-shadow: '';
-          box-shadow: '';
-  color: rgba(0, 0, 0, 0.95);
-}
-.ui.basic.buttons .active.button:hover,
-.ui.basic.active.button:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-/* Vertical */
-.ui.basic.buttons .button:hover {
-  -webkit-box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.35) inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset inset;
-          box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.35) inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset inset;
-}
-.ui.basic.buttons .button:active {
-  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 1px 4px 0 rgba(34, 36, 38, 0.15) inset inset;
-          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 1px 4px 0 rgba(34, 36, 38, 0.15) inset inset;
-}
-.ui.basic.buttons .active.button {
-  -webkit-box-shadow: '';
-          box-shadow: '';
-}
-
-/* Standard Basic Inverted */
-.ui.basic.inverted.buttons .button,
-.ui.basic.inverted.button {
-  background-color: transparent;
-  color: #F9FAFB;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-}
-.ui.basic.inverted.buttons .button:hover,
-.ui.basic.inverted.button:hover {
-  color: #FFFFFF;
-  -webkit-box-shadow: 0 0 0 2px #ffffff inset;
-          box-shadow: 0 0 0 2px #ffffff inset;
-}
-.ui.basic.inverted.buttons .button:focus,
-.ui.basic.inverted.button:focus {
-  color: #FFFFFF;
-  -webkit-box-shadow: 0 0 0 2px #ffffff inset;
-          box-shadow: 0 0 0 2px #ffffff inset;
-}
-.ui.basic.inverted.buttons .button:active,
-.ui.basic.inverted.button:active {
-  background-color: rgba(255, 255, 255, 0.08);
-  color: #FFFFFF;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9) inset;
-}
-.ui.basic.inverted.buttons .active.button,
-.ui.basic.inverted.active.button {
-  background-color: rgba(255, 255, 255, 0.08);
-  color: #FFFFFF;
-  text-shadow: none;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.7) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.7) inset;
-}
-.ui.basic.inverted.buttons .active.button:hover,
-.ui.basic.inverted.active.button:hover {
-  background-color: rgba(255, 255, 255, 0.15);
-  -webkit-box-shadow: 0 0 0 2px #ffffff inset;
-          box-shadow: 0 0 0 2px #ffffff inset;
-}
-
-/* Basic Group */
-.ui.basic.buttons .button {
-  border-left: 1px solid rgba(34, 36, 38, 0.15);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.ui.basic.vertical.buttons .button {
-  border-left: none;
-  border-left-width: 0;
-  border-top: 1px solid rgba(34, 36, 38, 0.15);
-}
-.ui.basic.vertical.buttons .button:first-child {
-  border-top-width: 0;
-}
-
-/*-------------------
-       Tertiary
---------------------*/
-
-
-/* Overline Mixin */
-.ui.tertiary.button {
-  -webkit-transition: color 0.1s ease !important;
-  transition: color 0.1s ease !important;
-  border-radius: 0;
-  margin: 0.28571429em 0.25em 0.28571429em 0 !important;
-  padding: 0.5em !important;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: rgba(0, 0, 0, 0.6);
-  background: none;
-}
-.ui.tertiary.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #666666;
-          box-shadow: inset 0 -0.2em 0 #666666;
-  color: #333333;
-  background: none;
-}
-.ui.tertiary.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #666666;
-          box-shadow: inset 0 -0.2em 0 #666666;
-  color: #333333;
-  background: none;
-}
-.ui.tertiary.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #999999;
-          box-shadow: inset 0 -0.2em 0 #999999;
-  border-radius: 0.28571429rem 0.28571429rem 0 0;
-  color: #666666;
-  background: none;
-}
-
-/*--------------
-  Labeled Icon
----------------*/
-
-.ui.labeled.icon.buttons .button,
-.ui.labeled.icon.button {
-  position: relative;
-  padding-left: 4.07142857em !important;
-  padding-right: 1.5em !important;
-}
-
-/* Left Labeled */
-.ui.labeled.icon.buttons > .button > .icon,
-.ui.labeled.icon.button > .icon {
-  position: absolute;
-  top: 0;
-  left: 0;
-  height: 100%;
-  line-height: 1;
-  border-radius: 0;
-  border-top-left-radius: inherit;
-  border-bottom-left-radius: inherit;
-  text-align: center;
-  -webkit-animation: none;
-          animation: none;
-  padding: 0.78571429em 0 0.78571429em 0;
-  margin: 0;
-  width: 2.57142857em;
-  background-color: rgba(0, 0, 0, 0.05);
-  color: '';
-  -webkit-box-shadow: -1px 0 0 0 transparent inset;
-          box-shadow: -1px 0 0 0 transparent inset;
-}
-
-/* Right Labeled */
-.ui[class*="right labeled"].icon.button {
-  padding-right: 4.07142857em !important;
-  padding-left: 1.5em !important;
-}
-.ui[class*="right labeled"].icon.button > .icon {
-  left: auto;
-  right: 0;
-  border-radius: 0;
-  border-top-right-radius: inherit;
-  border-bottom-right-radius: inherit;
-  -webkit-box-shadow: 1px 0 0 0 transparent inset;
-          box-shadow: 1px 0 0 0 transparent inset;
-}
-.ui.labeled.icon.buttons > .button > .icon:before,
-.ui.labeled.icon.button > .icon:before,
-.ui.labeled.icon.buttons > .button > .icon:after,
-.ui.labeled.icon.button > .icon:after {
-  display: block;
-  position: relative;
-  width: 100%;
-  top: 0;
-  text-align: center;
-}
-.ui.labeled.icon.buttons .button > .icon {
-  border-radius: 0;
-}
-.ui.labeled.icon.buttons .button:first-child > .icon {
-  border-top-left-radius: 0.28571429rem;
-  border-bottom-left-radius: 0.28571429rem;
-}
-.ui.labeled.icon.buttons .button:last-child > .icon {
-  border-top-right-radius: 0.28571429rem;
-  border-bottom-right-radius: 0.28571429rem;
-}
-.ui.vertical.labeled.icon.buttons .button:first-child > .icon {
-  border-radius: 0;
-  border-top-left-radius: 0.28571429rem;
-}
-.ui.vertical.labeled.icon.buttons .button:last-child > .icon {
-  border-radius: 0;
-  border-bottom-left-radius: 0.28571429rem;
-}
-
-/* Loading Icon in Labeled Button */
-.ui.labeled.icon.button > .loading.icon:before {
-  -webkit-animation: loader 2s linear infinite;
-          animation: loader 2s linear infinite;
-}
-
-/*--------------
-     Toggle
----------------*/
-
-
-/* Toggle (Modifies active state to give affordances) */
-.ui.toggle.buttons .active.button,
-.ui.buttons .button.toggle.active,
-.ui.button.toggle.active {
-  background-color: #21BA45;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  text-shadow: none;
-  color: #FFFFFF;
-}
-.ui.button.toggle.active:hover {
-  background-color: #16ab39;
-  text-shadow: none;
-  color: #FFFFFF;
-}
-
-/*--------------
-    Circular
----------------*/
-
-.ui.circular.button {
-  border-radius: 10em;
-}
-.ui.circular.button > .icon {
-  width: 1em;
-  vertical-align: baseline;
-}
-
-/*-------------------
-      Or Buttons
---------------------*/
-
-.ui.buttons .or {
-  position: relative;
-  width: 0.3em;
-  height: 2.57142857em;
-  z-index: 3;
-}
-.ui.buttons .or:before {
-  position: absolute;
-  text-align: center;
-  border-radius: 500rem;
-  content: 'or';
-  top: 50%;
-  left: 50%;
-  background-color: #FFFFFF;
-  text-shadow: none;
-  margin-top: -0.89285714em;
-  margin-left: -0.89285714em;
-  width: 1.78571429em;
-  height: 1.78571429em;
-  line-height: 1.78571429em;
-  color: rgba(0, 0, 0, 0.4);
-  font-style: normal;
-  font-weight: bold;
-  -webkit-box-shadow: 0 0 0 1px transparent inset;
-          box-shadow: 0 0 0 1px transparent inset;
-}
-.ui.buttons .or[data-text]:before {
-  content: attr(data-text);
-}
-
-/* Fluid Or */
-.ui.fluid.buttons .or {
-  width: 0 !important;
-}
-.ui.fluid.buttons .or:after {
-  display: none;
-}
-
-/*-------------------
-       Attached
---------------------*/
-
-
-/* Singular */
-.ui.attached.button {
-  position: relative;
-  display: block;
-  margin: 0;
-  border-radius: 0;
-  -webkit-box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.15);
-          box-shadow: 0 0 0 1px rgba(34, 36, 38, 0.15);
-}
-
-/* Top / Bottom */
-.ui.attached.top.button {
-  border-radius: 0.28571429rem 0.28571429rem 0 0;
-}
-.ui.attached.bottom.button {
-  border-radius: 0 0 0.28571429rem 0.28571429rem;
-}
-
-/* Left / Right */
-.ui.left.attached.button {
-  display: inline-block;
-  border-left: none;
-  text-align: right;
-  padding-right: 0.75em;
-  border-radius: 0.28571429rem 0 0 0.28571429rem;
-}
-.ui.right.attached.button {
-  display: inline-block;
-  text-align: left;
-  padding-left: 0.75em;
-  border-radius: 0 0.28571429rem 0.28571429rem 0;
-}
-
-/* Plural */
-.ui.attached.buttons {
-  position: relative;
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  border-radius: 0;
-  width: auto !important;
-  z-index: auto;
-  margin-left: -1px;
-  margin-right: -1px;
-}
-.ui.attached.buttons .button {
-  margin: 0;
-}
-.ui.attached.buttons .button:first-child {
-  border-radius: 0;
-}
-.ui.attached.buttons .button:last-child {
-  border-radius: 0;
-}
-
-/* Top / Bottom */
-.ui[class*="top attached"].buttons {
-  margin-bottom: -1px;
-  border-radius: 0.28571429rem 0.28571429rem 0 0;
-}
-.ui[class*="top attached"].buttons .button:first-child {
-  border-radius: 0.28571429rem 0 0 0;
-}
-.ui[class*="top attached"].buttons .button:last-child {
-  border-radius: 0 0.28571429rem 0 0;
-}
-.ui[class*="bottom attached"].buttons {
-  margin-top: -1px;
-  border-radius: 0 0 0.28571429rem 0.28571429rem;
-}
-.ui[class*="bottom attached"].buttons .button:first-child {
-  border-radius: 0 0 0 0.28571429rem;
-}
-.ui[class*="bottom attached"].buttons .button:last-child {
-  border-radius: 0 0 0.28571429rem 0;
-}
-
-/* Left / Right */
-.ui[class*="left attached"].buttons {
-  display: -webkit-inline-box;
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  margin-right: 0;
-  margin-left: -1px;
-  border-radius: 0 0.28571429rem 0.28571429rem 0;
-}
-.ui[class*="left attached"].buttons .button:first-child {
-  margin-left: -1px;
-  border-radius: 0 0.28571429rem 0 0;
-}
-.ui[class*="left attached"].buttons .button:last-child {
-  margin-left: -1px;
-  border-radius: 0 0 0.28571429rem 0;
-}
-.ui[class*="right attached"].buttons {
-  display: -webkit-inline-box;
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  margin-left: 0;
-  margin-right: -1px;
-  border-radius: 0.28571429rem 0 0 0.28571429rem;
-}
-.ui[class*="right attached"].buttons .button:first-child {
-  margin-left: -1px;
-  border-radius: 0.28571429rem 0 0 0;
-}
-.ui[class*="right attached"].buttons .button:last-child {
-  margin-left: -1px;
-  border-radius: 0 0 0 0.28571429rem;
-}
-
-/*-------------------
-        Fluid
---------------------*/
-
-.ui.fluid.buttons,
-.ui.fluid.button {
-  width: 100%;
-}
-.ui.fluid.button {
-  display: block;
-}
-.ui.two.buttons {
-  width: 100%;
-}
-.ui.two.buttons > .button {
-  width: 50%;
-}
-.ui.three.buttons {
-  width: 100%;
-}
-.ui.three.buttons > .button {
-  width: 33.333%;
-}
-.ui.four.buttons {
-  width: 100%;
-}
-.ui.four.buttons > .button {
-  width: 25%;
-}
-.ui.five.buttons {
-  width: 100%;
-}
-.ui.five.buttons > .button {
-  width: 20%;
-}
-.ui.six.buttons {
-  width: 100%;
-}
-.ui.six.buttons > .button {
-  width: 16.666%;
-}
-.ui.seven.buttons {
-  width: 100%;
-}
-.ui.seven.buttons > .button {
-  width: 14.285%;
-}
-.ui.eight.buttons {
-  width: 100%;
-}
-.ui.eight.buttons > .button {
-  width: 12.5%;
-}
-.ui.nine.buttons {
-  width: 100%;
-}
-.ui.nine.buttons > .button {
-  width: 11.11%;
-}
-.ui.ten.buttons {
-  width: 100%;
-}
-.ui.ten.buttons > .button {
-  width: 10%;
-}
-.ui.eleven.buttons {
-  width: 100%;
-}
-.ui.eleven.buttons > .button {
-  width: 9.09%;
-}
-.ui.twelve.buttons {
-  width: 100%;
-}
-.ui.twelve.buttons > .button {
-  width: 8.3333%;
-}
-
-/* Fluid Vertical Buttons */
-.ui.fluid.vertical.buttons,
-.ui.fluid.vertical.buttons > .button {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  width: auto;
-  -webkit-box-pack: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-}
-.ui.two.vertical.buttons > .button {
-  height: 50%;
-}
-.ui.three.vertical.buttons > .button {
-  height: 33.333%;
-}
-.ui.four.vertical.buttons > .button {
-  height: 25%;
-}
-.ui.five.vertical.buttons > .button {
-  height: 20%;
-}
-.ui.six.vertical.buttons > .button {
-  height: 16.666%;
-}
-.ui.seven.vertical.buttons > .button {
-  height: 14.285%;
-}
-.ui.eight.vertical.buttons > .button {
-  height: 12.5%;
-}
-.ui.nine.vertical.buttons > .button {
-  height: 11.11%;
-}
-.ui.ten.vertical.buttons > .button {
-  height: 10%;
-}
-.ui.eleven.vertical.buttons > .button {
-  height: 9.09%;
-}
-.ui.twelve.vertical.buttons > .button {
-  height: 8.3333%;
-}
-
-/*-------------------
-       Colors
---------------------*/
-
-.ui.primary.buttons .button,
-.ui.primary.button {
-  background-color: #2185D0;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.primary.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.primary.buttons .button:hover,
-.ui.primary.button:hover {
-  background-color: #1678c2;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.primary.buttons .button:focus,
-.ui.primary.button:focus {
-  background-color: #0d71bb;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.primary.buttons .button:active,
-.ui.primary.button:active {
-  background-color: #1a69a4;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.primary.buttons .active.button,
-.ui.primary.buttons .active.button:active,
-.ui.primary.active.button,
-.ui.primary.button .active.button:active {
-  background-color: #1279c6;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.primary.buttons .button,
-.ui.basic.primary.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #2185D0 inset;
-          box-shadow: 0 0 0 1px #2185D0 inset;
-  color: #2185D0;
-}
-.ui.basic.primary.buttons .button:hover,
-.ui.basic.primary.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #1678c2 inset;
-          box-shadow: 0 0 0 1px #1678c2 inset;
-  color: #1678c2;
-}
-.ui.basic.primary.buttons .button:focus,
-.ui.basic.primary.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #0d71bb inset;
-          box-shadow: 0 0 0 1px #0d71bb inset;
-  color: #1678c2;
-}
-.ui.basic.primary.buttons .active.button,
-.ui.basic.primary.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #1279c6 inset;
-          box-shadow: 0 0 0 1px #1279c6 inset;
-  color: #1a69a4;
-}
-.ui.basic.primary.buttons .button:active,
-.ui.basic.primary.button:active {
-  -webkit-box-shadow: 0 0 0 1px #1a69a4 inset;
-          box-shadow: 0 0 0 1px #1a69a4 inset;
-  color: #1a69a4;
-}
-.ui.buttons:not(.vertical) > .basic.primary.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.primary.buttons .button,
-.ui.inverted.primary.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #54C8FF inset;
-          box-shadow: 0 0 0 2px #54C8FF inset;
-  color: #54C8FF;
-}
-.ui.inverted.primary.buttons .button:hover,
-.ui.inverted.primary.button:hover,
-.ui.inverted.primary.buttons .button:focus,
-.ui.inverted.primary.button:focus,
-.ui.inverted.primary.buttons .button.active,
-.ui.inverted.primary.button.active,
-.ui.inverted.primary.buttons .button:active,
-.ui.inverted.primary.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.primary.buttons .button:hover,
-.ui.inverted.primary.button:hover {
-  background-color: #21b8ff;
-}
-.ui.inverted.primary.buttons .button:focus,
-.ui.inverted.primary.button:focus {
-  background-color: #2bbbff;
-}
-.ui.inverted.primary.buttons .active.button,
-.ui.inverted.primary.active.button {
-  background-color: #3ac0ff;
-}
-.ui.inverted.primary.buttons .button:active,
-.ui.inverted.primary.button:active {
-  background-color: #21b8ff;
-}
-
-/* Inverted Basic */
-.ui.inverted.primary.basic.buttons .button,
-.ui.inverted.primary.buttons .basic.button,
-.ui.inverted.primary.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.primary.basic.buttons .button:hover,
-.ui.inverted.primary.buttons .basic.button:hover,
-.ui.inverted.primary.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #21b8ff inset;
-          box-shadow: 0 0 0 2px #21b8ff inset;
-  color: #54C8FF;
-}
-.ui.inverted.primary.basic.buttons .button:focus,
-.ui.inverted.primary.basic.buttons .button:focus,
-.ui.inverted.primary.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #2bbbff inset;
-          box-shadow: 0 0 0 2px #2bbbff inset;
-  color: #54C8FF;
-}
-.ui.inverted.primary.basic.buttons .active.button,
-.ui.inverted.primary.buttons .basic.active.button,
-.ui.inverted.primary.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #3ac0ff inset;
-          box-shadow: 0 0 0 2px #3ac0ff inset;
-  color: #54C8FF;
-}
-.ui.inverted.primary.basic.buttons .button:active,
-.ui.inverted.primary.buttons .basic.button:active,
-.ui.inverted.primary.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #21b8ff inset;
-          box-shadow: 0 0 0 2px #21b8ff inset;
-  color: #54C8FF;
-}
-
-/* Tertiary */
-.ui.tertiary.primary.buttons .button,
-.ui.tertiary.primary.buttons .tertiary.button,
-.ui.tertiary.primary.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #2185D0;
-}
-.ui.tertiary.primary.buttons .button:hover,
-.ui.tertiary.primary.buttons button:hover,
-.ui.tertiary.primary.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #2b75ac;
-          box-shadow: inset 0 -0.2em 0 #2b75ac;
-  color: #2b75ac;
-}
-.ui.tertiary.primary.buttons .button:focus,
-.ui.tertiary.primary.buttons .tertiary.button:focus,
-.ui.tertiary.primary.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #216ea7;
-          box-shadow: inset 0 -0.2em 0 #216ea7;
-  color: #216ea7;
-}
-.ui.tertiary.primary.buttons .active.button,
-.ui.tertiary.primary.buttons .tertiary.active.button,
-.ui.tertiary.primary.active.button,
-.ui.tertiary.primary.buttons .button:active,
-.ui.tertiary.primary.buttons .tertiary.button:active,
-.ui.tertiary.primary.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #007bd8;
-          box-shadow: inset 0 -0.2em 0 #007bd8;
-  color: #1279c6;
-}
-.ui.secondary.buttons .button,
-.ui.secondary.button {
-  background-color: #1B1C1D;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.secondary.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.secondary.buttons .button:hover,
-.ui.secondary.button:hover {
-  background-color: #27292a;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.secondary.buttons .button:focus,
-.ui.secondary.button:focus {
-  background-color: #2e3032;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.secondary.buttons .button:active,
-.ui.secondary.button:active {
-  background-color: #343637;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.secondary.buttons .active.button,
-.ui.secondary.buttons .active.button:active,
-.ui.secondary.active.button,
-.ui.secondary.button .active.button:active {
-  background-color: #27292a;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.secondary.buttons .button,
-.ui.basic.secondary.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #1B1C1D inset;
-          box-shadow: 0 0 0 1px #1B1C1D inset;
-  color: #1B1C1D;
-}
-.ui.basic.secondary.buttons .button:hover,
-.ui.basic.secondary.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #27292a inset;
-          box-shadow: 0 0 0 1px #27292a inset;
-  color: #27292a;
-}
-.ui.basic.secondary.buttons .button:focus,
-.ui.basic.secondary.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #2e3032 inset;
-          box-shadow: 0 0 0 1px #2e3032 inset;
-  color: #27292a;
-}
-.ui.basic.secondary.buttons .active.button,
-.ui.basic.secondary.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #27292a inset;
-          box-shadow: 0 0 0 1px #27292a inset;
-  color: #343637;
-}
-.ui.basic.secondary.buttons .button:active,
-.ui.basic.secondary.button:active {
-  -webkit-box-shadow: 0 0 0 1px #343637 inset;
-          box-shadow: 0 0 0 1px #343637 inset;
-  color: #343637;
-}
-.ui.buttons:not(.vertical) > .basic.secondary.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.secondary.buttons .button,
-.ui.inverted.secondary.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #545454 inset;
-          box-shadow: 0 0 0 2px #545454 inset;
-  color: #545454;
-}
-.ui.inverted.secondary.buttons .button:hover,
-.ui.inverted.secondary.button:hover,
-.ui.inverted.secondary.buttons .button:focus,
-.ui.inverted.secondary.button:focus,
-.ui.inverted.secondary.buttons .button.active,
-.ui.inverted.secondary.button.active,
-.ui.inverted.secondary.buttons .button:active,
-.ui.inverted.secondary.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.secondary.buttons .button:hover,
-.ui.inverted.secondary.button:hover {
-  background-color: #6e6e6e;
-}
-.ui.inverted.secondary.buttons .button:focus,
-.ui.inverted.secondary.button:focus {
-  background-color: #686868;
-}
-.ui.inverted.secondary.buttons .active.button,
-.ui.inverted.secondary.active.button {
-  background-color: #616161;
-}
-.ui.inverted.secondary.buttons .button:active,
-.ui.inverted.secondary.button:active {
-  background-color: #6e6e6e;
-}
-
-/* Inverted Basic */
-.ui.inverted.secondary.basic.buttons .button,
-.ui.inverted.secondary.buttons .basic.button,
-.ui.inverted.secondary.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.secondary.basic.buttons .button:hover,
-.ui.inverted.secondary.buttons .basic.button:hover,
-.ui.inverted.secondary.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #6e6e6e inset;
-          box-shadow: 0 0 0 2px #6e6e6e inset;
-  color: #545454;
-}
-.ui.inverted.secondary.basic.buttons .button:focus,
-.ui.inverted.secondary.basic.buttons .button:focus,
-.ui.inverted.secondary.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #686868 inset;
-          box-shadow: 0 0 0 2px #686868 inset;
-  color: #545454;
-}
-.ui.inverted.secondary.basic.buttons .active.button,
-.ui.inverted.secondary.buttons .basic.active.button,
-.ui.inverted.secondary.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #616161 inset;
-          box-shadow: 0 0 0 2px #616161 inset;
-  color: #545454;
-}
-.ui.inverted.secondary.basic.buttons .button:active,
-.ui.inverted.secondary.buttons .basic.button:active,
-.ui.inverted.secondary.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #6e6e6e inset;
-          box-shadow: 0 0 0 2px #6e6e6e inset;
-  color: #545454;
-}
-
-/* Tertiary */
-.ui.tertiary.secondary.buttons .button,
-.ui.tertiary.secondary.buttons .tertiary.button,
-.ui.tertiary.secondary.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #1B1C1D;
-}
-.ui.tertiary.secondary.buttons .button:hover,
-.ui.tertiary.secondary.buttons button:hover,
-.ui.tertiary.secondary.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #292929;
-          box-shadow: inset 0 -0.2em 0 #292929;
-  color: #292929;
-}
-.ui.tertiary.secondary.buttons .button:focus,
-.ui.tertiary.secondary.buttons .tertiary.button:focus,
-.ui.tertiary.secondary.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #303030;
-          box-shadow: inset 0 -0.2em 0 #303030;
-  color: #303030;
-}
-.ui.tertiary.secondary.buttons .active.button,
-.ui.tertiary.secondary.buttons .tertiary.active.button,
-.ui.tertiary.secondary.active.button,
-.ui.tertiary.secondary.buttons .button:active,
-.ui.tertiary.secondary.buttons .tertiary.button:active,
-.ui.tertiary.secondary.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #1f2933;
-          box-shadow: inset 0 -0.2em 0 #1f2933;
-  color: #27292a;
-}
-.ui.red.buttons .button,
-.ui.red.button {
-  background-color: #DB2828;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.red.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.red.buttons .button:hover,
-.ui.red.button:hover {
-  background-color: #d01919;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.red.buttons .button:focus,
-.ui.red.button:focus {
-  background-color: #ca1010;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.red.buttons .button:active,
-.ui.red.button:active {
-  background-color: #b21e1e;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.red.buttons .active.button,
-.ui.red.buttons .active.button:active,
-.ui.red.active.button,
-.ui.red.button .active.button:active {
-  background-color: #d41515;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.red.buttons .button,
-.ui.basic.red.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #DB2828 inset;
-          box-shadow: 0 0 0 1px #DB2828 inset;
-  color: #DB2828;
-}
-.ui.basic.red.buttons .button:hover,
-.ui.basic.red.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #d01919 inset;
-          box-shadow: 0 0 0 1px #d01919 inset;
-  color: #d01919;
-}
-.ui.basic.red.buttons .button:focus,
-.ui.basic.red.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #ca1010 inset;
-          box-shadow: 0 0 0 1px #ca1010 inset;
-  color: #d01919;
-}
-.ui.basic.red.buttons .active.button,
-.ui.basic.red.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #d41515 inset;
-          box-shadow: 0 0 0 1px #d41515 inset;
-  color: #b21e1e;
-}
-.ui.basic.red.buttons .button:active,
-.ui.basic.red.button:active {
-  -webkit-box-shadow: 0 0 0 1px #b21e1e inset;
-          box-shadow: 0 0 0 1px #b21e1e inset;
-  color: #b21e1e;
-}
-.ui.buttons:not(.vertical) > .basic.red.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.red.buttons .button,
-.ui.inverted.red.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #FF695E inset;
-          box-shadow: 0 0 0 2px #FF695E inset;
-  color: #FF695E;
-}
-.ui.inverted.red.buttons .button:hover,
-.ui.inverted.red.button:hover,
-.ui.inverted.red.buttons .button:focus,
-.ui.inverted.red.button:focus,
-.ui.inverted.red.buttons .button.active,
-.ui.inverted.red.button.active,
-.ui.inverted.red.buttons .button:active,
-.ui.inverted.red.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.red.buttons .button:hover,
-.ui.inverted.red.button:hover {
-  background-color: #ff392b;
-}
-.ui.inverted.red.buttons .button:focus,
-.ui.inverted.red.button:focus {
-  background-color: #ff4335;
-}
-.ui.inverted.red.buttons .active.button,
-.ui.inverted.red.active.button {
-  background-color: #ff5144;
-}
-.ui.inverted.red.buttons .button:active,
-.ui.inverted.red.button:active {
-  background-color: #ff392b;
-}
-
-/* Inverted Basic */
-.ui.inverted.red.basic.buttons .button,
-.ui.inverted.red.buttons .basic.button,
-.ui.inverted.red.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.red.basic.buttons .button:hover,
-.ui.inverted.red.buttons .basic.button:hover,
-.ui.inverted.red.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #ff392b inset;
-          box-shadow: 0 0 0 2px #ff392b inset;
-  color: #FF695E;
-}
-.ui.inverted.red.basic.buttons .button:focus,
-.ui.inverted.red.basic.buttons .button:focus,
-.ui.inverted.red.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #ff4335 inset;
-          box-shadow: 0 0 0 2px #ff4335 inset;
-  color: #FF695E;
-}
-.ui.inverted.red.basic.buttons .active.button,
-.ui.inverted.red.buttons .basic.active.button,
-.ui.inverted.red.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #ff5144 inset;
-          box-shadow: 0 0 0 2px #ff5144 inset;
-  color: #FF695E;
-}
-.ui.inverted.red.basic.buttons .button:active,
-.ui.inverted.red.buttons .basic.button:active,
-.ui.inverted.red.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #ff392b inset;
-          box-shadow: 0 0 0 2px #ff392b inset;
-  color: #FF695E;
-}
-
-/* Tertiary */
-.ui.tertiary.red.buttons .button,
-.ui.tertiary.red.buttons .tertiary.button,
-.ui.tertiary.red.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #DB2828;
-}
-.ui.tertiary.red.buttons .button:hover,
-.ui.tertiary.red.buttons button:hover,
-.ui.tertiary.red.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #b93131;
-          box-shadow: inset 0 -0.2em 0 #b93131;
-  color: #b93131;
-}
-.ui.tertiary.red.buttons .button:focus,
-.ui.tertiary.red.buttons .tertiary.button:focus,
-.ui.tertiary.red.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #b52626;
-          box-shadow: inset 0 -0.2em 0 #b52626;
-  color: #b52626;
-}
-.ui.tertiary.red.buttons .active.button,
-.ui.tertiary.red.buttons .tertiary.active.button,
-.ui.tertiary.red.active.button,
-.ui.tertiary.red.buttons .button:active,
-.ui.tertiary.red.buttons .tertiary.button:active,
-.ui.tertiary.red.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #ea0000;
-          box-shadow: inset 0 -0.2em 0 #ea0000;
-  color: #d41515;
-}
-.ui.orange.buttons .button,
-.ui.orange.button {
-  background-color: #F2711C;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.orange.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.orange.buttons .button:hover,
-.ui.orange.button:hover {
-  background-color: #f26202;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.orange.buttons .button:focus,
-.ui.orange.button:focus {
-  background-color: #e55b00;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.orange.buttons .button:active,
-.ui.orange.button:active {
-  background-color: #cf590c;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.orange.buttons .active.button,
-.ui.orange.buttons .active.button:active,
-.ui.orange.active.button,
-.ui.orange.button .active.button:active {
-  background-color: #f56100;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.orange.buttons .button,
-.ui.basic.orange.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #F2711C inset;
-          box-shadow: 0 0 0 1px #F2711C inset;
-  color: #F2711C;
-}
-.ui.basic.orange.buttons .button:hover,
-.ui.basic.orange.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #f26202 inset;
-          box-shadow: 0 0 0 1px #f26202 inset;
-  color: #f26202;
-}
-.ui.basic.orange.buttons .button:focus,
-.ui.basic.orange.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #e55b00 inset;
-          box-shadow: 0 0 0 1px #e55b00 inset;
-  color: #f26202;
-}
-.ui.basic.orange.buttons .active.button,
-.ui.basic.orange.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #f56100 inset;
-          box-shadow: 0 0 0 1px #f56100 inset;
-  color: #cf590c;
-}
-.ui.basic.orange.buttons .button:active,
-.ui.basic.orange.button:active {
-  -webkit-box-shadow: 0 0 0 1px #cf590c inset;
-          box-shadow: 0 0 0 1px #cf590c inset;
-  color: #cf590c;
-}
-.ui.buttons:not(.vertical) > .basic.orange.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.orange.buttons .button,
-.ui.inverted.orange.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #FF851B inset;
-          box-shadow: 0 0 0 2px #FF851B inset;
-  color: #FF851B;
-}
-.ui.inverted.orange.buttons .button:hover,
-.ui.inverted.orange.button:hover,
-.ui.inverted.orange.buttons .button:focus,
-.ui.inverted.orange.button:focus,
-.ui.inverted.orange.buttons .button.active,
-.ui.inverted.orange.button.active,
-.ui.inverted.orange.buttons .button:active,
-.ui.inverted.orange.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.orange.buttons .button:hover,
-.ui.inverted.orange.button:hover {
-  background-color: #e76b00;
-}
-.ui.inverted.orange.buttons .button:focus,
-.ui.inverted.orange.button:focus {
-  background-color: #f17000;
-}
-.ui.inverted.orange.buttons .active.button,
-.ui.inverted.orange.active.button {
-  background-color: #ff7701;
-}
-.ui.inverted.orange.buttons .button:active,
-.ui.inverted.orange.button:active {
-  background-color: #e76b00;
-}
-
-/* Inverted Basic */
-.ui.inverted.orange.basic.buttons .button,
-.ui.inverted.orange.buttons .basic.button,
-.ui.inverted.orange.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.orange.basic.buttons .button:hover,
-.ui.inverted.orange.buttons .basic.button:hover,
-.ui.inverted.orange.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #e76b00 inset;
-          box-shadow: 0 0 0 2px #e76b00 inset;
-  color: #FF851B;
-}
-.ui.inverted.orange.basic.buttons .button:focus,
-.ui.inverted.orange.basic.buttons .button:focus,
-.ui.inverted.orange.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #f17000 inset;
-          box-shadow: 0 0 0 2px #f17000 inset;
-  color: #FF851B;
-}
-.ui.inverted.orange.basic.buttons .active.button,
-.ui.inverted.orange.buttons .basic.active.button,
-.ui.inverted.orange.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #ff7701 inset;
-          box-shadow: 0 0 0 2px #ff7701 inset;
-  color: #FF851B;
-}
-.ui.inverted.orange.basic.buttons .button:active,
-.ui.inverted.orange.buttons .basic.button:active,
-.ui.inverted.orange.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #e76b00 inset;
-          box-shadow: 0 0 0 2px #e76b00 inset;
-  color: #FF851B;
-}
-
-/* Tertiary */
-.ui.tertiary.orange.buttons .button,
-.ui.tertiary.orange.buttons .tertiary.button,
-.ui.tertiary.orange.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #F2711C;
-}
-.ui.tertiary.orange.buttons .button:hover,
-.ui.tertiary.orange.buttons button:hover,
-.ui.tertiary.orange.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #da671b;
-          box-shadow: inset 0 -0.2em 0 #da671b;
-  color: #da671b;
-}
-.ui.tertiary.orange.buttons .button:focus,
-.ui.tertiary.orange.buttons .tertiary.button:focus,
-.ui.tertiary.orange.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #ce6017;
-          box-shadow: inset 0 -0.2em 0 #ce6017;
-  color: #ce6017;
-}
-.ui.tertiary.orange.buttons .active.button,
-.ui.tertiary.orange.buttons .tertiary.active.button,
-.ui.tertiary.orange.active.button,
-.ui.tertiary.orange.buttons .button:active,
-.ui.tertiary.orange.buttons .tertiary.button:active,
-.ui.tertiary.orange.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #f56100;
-          box-shadow: inset 0 -0.2em 0 #f56100;
-  color: #f56100;
-}
-.ui.yellow.buttons .button,
-.ui.yellow.button {
-  background-color: #FBBD08;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.yellow.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.yellow.buttons .button:hover,
-.ui.yellow.button:hover {
-  background-color: #eaae00;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.yellow.buttons .button:focus,
-.ui.yellow.button:focus {
-  background-color: #daa300;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.yellow.buttons .button:active,
-.ui.yellow.button:active {
-  background-color: #cd9903;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.yellow.buttons .active.button,
-.ui.yellow.buttons .active.button:active,
-.ui.yellow.active.button,
-.ui.yellow.button .active.button:active {
-  background-color: #eaae00;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.yellow.buttons .button,
-.ui.basic.yellow.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #FBBD08 inset;
-          box-shadow: 0 0 0 1px #FBBD08 inset;
-  color: #FBBD08;
-}
-.ui.basic.yellow.buttons .button:hover,
-.ui.basic.yellow.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #eaae00 inset;
-          box-shadow: 0 0 0 1px #eaae00 inset;
-  color: #eaae00;
-}
-.ui.basic.yellow.buttons .button:focus,
-.ui.basic.yellow.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #daa300 inset;
-          box-shadow: 0 0 0 1px #daa300 inset;
-  color: #eaae00;
-}
-.ui.basic.yellow.buttons .active.button,
-.ui.basic.yellow.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #eaae00 inset;
-          box-shadow: 0 0 0 1px #eaae00 inset;
-  color: #cd9903;
-}
-.ui.basic.yellow.buttons .button:active,
-.ui.basic.yellow.button:active {
-  -webkit-box-shadow: 0 0 0 1px #cd9903 inset;
-          box-shadow: 0 0 0 1px #cd9903 inset;
-  color: #cd9903;
-}
-.ui.buttons:not(.vertical) > .basic.yellow.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.yellow.buttons .button,
-.ui.inverted.yellow.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #FFE21F inset;
-          box-shadow: 0 0 0 2px #FFE21F inset;
-  color: #FFE21F;
-}
-.ui.inverted.yellow.buttons .button:hover,
-.ui.inverted.yellow.button:hover,
-.ui.inverted.yellow.buttons .button:focus,
-.ui.inverted.yellow.button:focus,
-.ui.inverted.yellow.buttons .button.active,
-.ui.inverted.yellow.button.active,
-.ui.inverted.yellow.buttons .button:active,
-.ui.inverted.yellow.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: rgba(0, 0, 0, 0.6);
-}
-.ui.inverted.yellow.buttons .button:hover,
-.ui.inverted.yellow.button:hover {
-  background-color: #ebcd00;
-}
-.ui.inverted.yellow.buttons .button:focus,
-.ui.inverted.yellow.button:focus {
-  background-color: #f5d500;
-}
-.ui.inverted.yellow.buttons .active.button,
-.ui.inverted.yellow.active.button {
-  background-color: #ffdf05;
-}
-.ui.inverted.yellow.buttons .button:active,
-.ui.inverted.yellow.button:active {
-  background-color: #ebcd00;
-}
-
-/* Inverted Basic */
-.ui.inverted.yellow.basic.buttons .button,
-.ui.inverted.yellow.buttons .basic.button,
-.ui.inverted.yellow.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.yellow.basic.buttons .button:hover,
-.ui.inverted.yellow.buttons .basic.button:hover,
-.ui.inverted.yellow.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #ebcd00 inset;
-          box-shadow: 0 0 0 2px #ebcd00 inset;
-  color: #FFE21F;
-}
-.ui.inverted.yellow.basic.buttons .button:focus,
-.ui.inverted.yellow.basic.buttons .button:focus,
-.ui.inverted.yellow.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #f5d500 inset;
-          box-shadow: 0 0 0 2px #f5d500 inset;
-  color: #FFE21F;
-}
-.ui.inverted.yellow.basic.buttons .active.button,
-.ui.inverted.yellow.buttons .basic.active.button,
-.ui.inverted.yellow.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #ffdf05 inset;
-          box-shadow: 0 0 0 2px #ffdf05 inset;
-  color: #FFE21F;
-}
-.ui.inverted.yellow.basic.buttons .button:active,
-.ui.inverted.yellow.buttons .basic.button:active,
-.ui.inverted.yellow.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #ebcd00 inset;
-          box-shadow: 0 0 0 2px #ebcd00 inset;
-  color: #FFE21F;
-}
-
-/* Tertiary */
-.ui.tertiary.yellow.buttons .button,
-.ui.tertiary.yellow.buttons .tertiary.button,
-.ui.tertiary.yellow.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #FBBD08;
-}
-.ui.tertiary.yellow.buttons .button:hover,
-.ui.tertiary.yellow.buttons button:hover,
-.ui.tertiary.yellow.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #d2a217;
-          box-shadow: inset 0 -0.2em 0 #d2a217;
-  color: #d2a217;
-}
-.ui.tertiary.yellow.buttons .button:focus,
-.ui.tertiary.yellow.buttons .tertiary.button:focus,
-.ui.tertiary.yellow.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #c49816;
-          box-shadow: inset 0 -0.2em 0 #c49816;
-  color: #c49816;
-}
-.ui.tertiary.yellow.buttons .active.button,
-.ui.tertiary.yellow.buttons .tertiary.active.button,
-.ui.tertiary.yellow.active.button,
-.ui.tertiary.yellow.buttons .button:active,
-.ui.tertiary.yellow.buttons .tertiary.button:active,
-.ui.tertiary.yellow.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #eaae00;
-          box-shadow: inset 0 -0.2em 0 #eaae00;
-  color: #eaae00;
-}
-.ui.olive.buttons .button,
-.ui.olive.button {
-  background-color: #B5CC18;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.olive.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.olive.buttons .button:hover,
-.ui.olive.button:hover {
-  background-color: #a7bd0d;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.olive.buttons .button:focus,
-.ui.olive.button:focus {
-  background-color: #a0b605;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.olive.buttons .button:active,
-.ui.olive.button:active {
-  background-color: #8d9e13;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.olive.buttons .active.button,
-.ui.olive.buttons .active.button:active,
-.ui.olive.active.button,
-.ui.olive.button .active.button:active {
-  background-color: #aac109;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.olive.buttons .button,
-.ui.basic.olive.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #B5CC18 inset;
-          box-shadow: 0 0 0 1px #B5CC18 inset;
-  color: #B5CC18;
-}
-.ui.basic.olive.buttons .button:hover,
-.ui.basic.olive.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #a7bd0d inset;
-          box-shadow: 0 0 0 1px #a7bd0d inset;
-  color: #a7bd0d;
-}
-.ui.basic.olive.buttons .button:focus,
-.ui.basic.olive.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #a0b605 inset;
-          box-shadow: 0 0 0 1px #a0b605 inset;
-  color: #a7bd0d;
-}
-.ui.basic.olive.buttons .active.button,
-.ui.basic.olive.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #aac109 inset;
-          box-shadow: 0 0 0 1px #aac109 inset;
-  color: #8d9e13;
-}
-.ui.basic.olive.buttons .button:active,
-.ui.basic.olive.button:active {
-  -webkit-box-shadow: 0 0 0 1px #8d9e13 inset;
-          box-shadow: 0 0 0 1px #8d9e13 inset;
-  color: #8d9e13;
-}
-.ui.buttons:not(.vertical) > .basic.olive.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.olive.buttons .button,
-.ui.inverted.olive.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #D9E778 inset;
-          box-shadow: 0 0 0 2px #D9E778 inset;
-  color: #D9E778;
-}
-.ui.inverted.olive.buttons .button:hover,
-.ui.inverted.olive.button:hover,
-.ui.inverted.olive.buttons .button:focus,
-.ui.inverted.olive.button:focus,
-.ui.inverted.olive.buttons .button.active,
-.ui.inverted.olive.button.active,
-.ui.inverted.olive.buttons .button:active,
-.ui.inverted.olive.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: rgba(0, 0, 0, 0.6);
-}
-.ui.inverted.olive.buttons .button:hover,
-.ui.inverted.olive.button:hover {
-  background-color: #d2e745;
-}
-.ui.inverted.olive.buttons .button:focus,
-.ui.inverted.olive.button:focus {
-  background-color: #daef47;
-}
-.ui.inverted.olive.buttons .active.button,
-.ui.inverted.olive.active.button {
-  background-color: #daed59;
-}
-.ui.inverted.olive.buttons .button:active,
-.ui.inverted.olive.button:active {
-  background-color: #cddf4d;
-}
-
-/* Inverted Basic */
-.ui.inverted.olive.basic.buttons .button,
-.ui.inverted.olive.buttons .basic.button,
-.ui.inverted.olive.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.olive.basic.buttons .button:hover,
-.ui.inverted.olive.buttons .basic.button:hover,
-.ui.inverted.olive.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #d2e745 inset;
-          box-shadow: 0 0 0 2px #d2e745 inset;
-  color: #D9E778;
-}
-.ui.inverted.olive.basic.buttons .button:focus,
-.ui.inverted.olive.basic.buttons .button:focus,
-.ui.inverted.olive.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #daef47 inset;
-          box-shadow: 0 0 0 2px #daef47 inset;
-  color: #D9E778;
-}
-.ui.inverted.olive.basic.buttons .active.button,
-.ui.inverted.olive.buttons .basic.active.button,
-.ui.inverted.olive.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #daed59 inset;
-          box-shadow: 0 0 0 2px #daed59 inset;
-  color: #D9E778;
-}
-.ui.inverted.olive.basic.buttons .button:active,
-.ui.inverted.olive.buttons .basic.button:active,
-.ui.inverted.olive.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #cddf4d inset;
-          box-shadow: 0 0 0 2px #cddf4d inset;
-  color: #D9E778;
-}
-
-/* Tertiary */
-.ui.tertiary.olive.buttons .button,
-.ui.tertiary.olive.buttons .tertiary.button,
-.ui.tertiary.olive.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #B5CC18;
-}
-.ui.tertiary.olive.buttons .button:hover,
-.ui.tertiary.olive.buttons button:hover,
-.ui.tertiary.olive.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #98a922;
-          box-shadow: inset 0 -0.2em 0 #98a922;
-  color: #98a922;
-}
-.ui.tertiary.olive.buttons .button:focus,
-.ui.tertiary.olive.buttons .tertiary.button:focus,
-.ui.tertiary.olive.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #92a418;
-          box-shadow: inset 0 -0.2em 0 #92a418;
-  color: #92a418;
-}
-.ui.tertiary.olive.buttons .active.button,
-.ui.tertiary.olive.buttons .tertiary.active.button,
-.ui.tertiary.olive.active.button,
-.ui.tertiary.olive.buttons .button:active,
-.ui.tertiary.olive.buttons .tertiary.button:active,
-.ui.tertiary.olive.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #b1cb00;
-          box-shadow: inset 0 -0.2em 0 #b1cb00;
-  color: #aac109;
-}
-.ui.green.buttons .button,
-.ui.green.button {
-  background-color: #21BA45;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.green.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.green.buttons .button:hover,
-.ui.green.button:hover {
-  background-color: #16ab39;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.green.buttons .button:focus,
-.ui.green.button:focus {
-  background-color: #0ea432;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.green.buttons .button:active,
-.ui.green.button:active {
-  background-color: #198f35;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.green.buttons .active.button,
-.ui.green.buttons .active.button:active,
-.ui.green.active.button,
-.ui.green.button .active.button:active {
-  background-color: #13ae38;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.green.buttons .button,
-.ui.basic.green.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #21BA45 inset;
-          box-shadow: 0 0 0 1px #21BA45 inset;
-  color: #21BA45;
-}
-.ui.basic.green.buttons .button:hover,
-.ui.basic.green.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #16ab39 inset;
-          box-shadow: 0 0 0 1px #16ab39 inset;
-  color: #16ab39;
-}
-.ui.basic.green.buttons .button:focus,
-.ui.basic.green.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #0ea432 inset;
-          box-shadow: 0 0 0 1px #0ea432 inset;
-  color: #16ab39;
-}
-.ui.basic.green.buttons .active.button,
-.ui.basic.green.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #13ae38 inset;
-          box-shadow: 0 0 0 1px #13ae38 inset;
-  color: #198f35;
-}
-.ui.basic.green.buttons .button:active,
-.ui.basic.green.button:active {
-  -webkit-box-shadow: 0 0 0 1px #198f35 inset;
-          box-shadow: 0 0 0 1px #198f35 inset;
-  color: #198f35;
-}
-.ui.buttons:not(.vertical) > .basic.green.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.green.buttons .button,
-.ui.inverted.green.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #2ECC40 inset;
-          box-shadow: 0 0 0 2px #2ECC40 inset;
-  color: #2ECC40;
-}
-.ui.inverted.green.buttons .button:hover,
-.ui.inverted.green.button:hover,
-.ui.inverted.green.buttons .button:focus,
-.ui.inverted.green.button:focus,
-.ui.inverted.green.buttons .button.active,
-.ui.inverted.green.button.active,
-.ui.inverted.green.buttons .button:active,
-.ui.inverted.green.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.green.buttons .button:hover,
-.ui.inverted.green.button:hover {
-  background-color: #1ea92e;
-}
-.ui.inverted.green.buttons .button:focus,
-.ui.inverted.green.button:focus {
-  background-color: #19b82b;
-}
-.ui.inverted.green.buttons .active.button,
-.ui.inverted.green.active.button {
-  background-color: #1fc231;
-}
-.ui.inverted.green.buttons .button:active,
-.ui.inverted.green.button:active {
-  background-color: #25a233;
-}
-
-/* Inverted Basic */
-.ui.inverted.green.basic.buttons .button,
-.ui.inverted.green.buttons .basic.button,
-.ui.inverted.green.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.green.basic.buttons .button:hover,
-.ui.inverted.green.buttons .basic.button:hover,
-.ui.inverted.green.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #1ea92e inset;
-          box-shadow: 0 0 0 2px #1ea92e inset;
-  color: #2ECC40;
-}
-.ui.inverted.green.basic.buttons .button:focus,
-.ui.inverted.green.basic.buttons .button:focus,
-.ui.inverted.green.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #19b82b inset;
-          box-shadow: 0 0 0 2px #19b82b inset;
-  color: #2ECC40;
-}
-.ui.inverted.green.basic.buttons .active.button,
-.ui.inverted.green.buttons .basic.active.button,
-.ui.inverted.green.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #1fc231 inset;
-          box-shadow: 0 0 0 2px #1fc231 inset;
-  color: #2ECC40;
-}
-.ui.inverted.green.basic.buttons .button:active,
-.ui.inverted.green.buttons .basic.button:active,
-.ui.inverted.green.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #25a233 inset;
-          box-shadow: 0 0 0 2px #25a233 inset;
-  color: #2ECC40;
-}
-
-/* Tertiary */
-.ui.tertiary.green.buttons .button,
-.ui.tertiary.green.buttons .tertiary.button,
-.ui.tertiary.green.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #21BA45;
-}
-.ui.tertiary.green.buttons .button:hover,
-.ui.tertiary.green.buttons button:hover,
-.ui.tertiary.green.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #2a9844;
-          box-shadow: inset 0 -0.2em 0 #2a9844;
-  color: #2a9844;
-}
-.ui.tertiary.green.buttons .button:focus,
-.ui.tertiary.green.buttons .tertiary.button:focus,
-.ui.tertiary.green.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #20923b;
-          box-shadow: inset 0 -0.2em 0 #20923b;
-  color: #20923b;
-}
-.ui.tertiary.green.buttons .active.button,
-.ui.tertiary.green.buttons .tertiary.active.button,
-.ui.tertiary.green.active.button,
-.ui.tertiary.green.buttons .button:active,
-.ui.tertiary.green.buttons .tertiary.button:active,
-.ui.tertiary.green.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #00c22e;
-          box-shadow: inset 0 -0.2em 0 #00c22e;
-  color: #13ae38;
-}
-.ui.teal.buttons .button,
-.ui.teal.button {
-  background-color: #00B5AD;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.teal.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.teal.buttons .button:hover,
-.ui.teal.button:hover {
-  background-color: #009c95;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.teal.buttons .button:focus,
-.ui.teal.button:focus {
-  background-color: #008c86;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.teal.buttons .button:active,
-.ui.teal.button:active {
-  background-color: #00827c;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.teal.buttons .active.button,
-.ui.teal.buttons .active.button:active,
-.ui.teal.active.button,
-.ui.teal.button .active.button:active {
-  background-color: #009c95;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.teal.buttons .button,
-.ui.basic.teal.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #00B5AD inset;
-          box-shadow: 0 0 0 1px #00B5AD inset;
-  color: #00B5AD;
-}
-.ui.basic.teal.buttons .button:hover,
-.ui.basic.teal.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #009c95 inset;
-          box-shadow: 0 0 0 1px #009c95 inset;
-  color: #009c95;
-}
-.ui.basic.teal.buttons .button:focus,
-.ui.basic.teal.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #008c86 inset;
-          box-shadow: 0 0 0 1px #008c86 inset;
-  color: #009c95;
-}
-.ui.basic.teal.buttons .active.button,
-.ui.basic.teal.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #009c95 inset;
-          box-shadow: 0 0 0 1px #009c95 inset;
-  color: #00827c;
-}
-.ui.basic.teal.buttons .button:active,
-.ui.basic.teal.button:active {
-  -webkit-box-shadow: 0 0 0 1px #00827c inset;
-          box-shadow: 0 0 0 1px #00827c inset;
-  color: #00827c;
-}
-.ui.buttons:not(.vertical) > .basic.teal.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.teal.buttons .button,
-.ui.inverted.teal.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #6DFFFF inset;
-          box-shadow: 0 0 0 2px #6DFFFF inset;
-  color: #6DFFFF;
-}
-.ui.inverted.teal.buttons .button:hover,
-.ui.inverted.teal.button:hover,
-.ui.inverted.teal.buttons .button:focus,
-.ui.inverted.teal.button:focus,
-.ui.inverted.teal.buttons .button.active,
-.ui.inverted.teal.button.active,
-.ui.inverted.teal.buttons .button:active,
-.ui.inverted.teal.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: rgba(0, 0, 0, 0.6);
-}
-.ui.inverted.teal.buttons .button:hover,
-.ui.inverted.teal.button:hover {
-  background-color: #3affff;
-}
-.ui.inverted.teal.buttons .button:focus,
-.ui.inverted.teal.button:focus {
-  background-color: #44ffff;
-}
-.ui.inverted.teal.buttons .active.button,
-.ui.inverted.teal.active.button {
-  background-color: #54ffff;
-}
-.ui.inverted.teal.buttons .button:active,
-.ui.inverted.teal.button:active {
-  background-color: #3affff;
-}
-
-/* Inverted Basic */
-.ui.inverted.teal.basic.buttons .button,
-.ui.inverted.teal.buttons .basic.button,
-.ui.inverted.teal.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.teal.basic.buttons .button:hover,
-.ui.inverted.teal.buttons .basic.button:hover,
-.ui.inverted.teal.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #3affff inset;
-          box-shadow: 0 0 0 2px #3affff inset;
-  color: #6DFFFF;
-}
-.ui.inverted.teal.basic.buttons .button:focus,
-.ui.inverted.teal.basic.buttons .button:focus,
-.ui.inverted.teal.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #44ffff inset;
-          box-shadow: 0 0 0 2px #44ffff inset;
-  color: #6DFFFF;
-}
-.ui.inverted.teal.basic.buttons .active.button,
-.ui.inverted.teal.buttons .basic.active.button,
-.ui.inverted.teal.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #54ffff inset;
-          box-shadow: 0 0 0 2px #54ffff inset;
-  color: #6DFFFF;
-}
-.ui.inverted.teal.basic.buttons .button:active,
-.ui.inverted.teal.buttons .basic.button:active,
-.ui.inverted.teal.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #3affff inset;
-          box-shadow: 0 0 0 2px #3affff inset;
-  color: #6DFFFF;
-}
-
-/* Tertiary */
-.ui.tertiary.teal.buttons .button,
-.ui.tertiary.teal.buttons .tertiary.button,
-.ui.tertiary.teal.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #00B5AD;
-}
-.ui.tertiary.teal.buttons .button:hover,
-.ui.tertiary.teal.buttons button:hover,
-.ui.tertiary.teal.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #108c86;
-          box-shadow: inset 0 -0.2em 0 #108c86;
-  color: #108c86;
-}
-.ui.tertiary.teal.buttons .button:focus,
-.ui.tertiary.teal.buttons .tertiary.button:focus,
-.ui.tertiary.teal.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #0e7e79;
-          box-shadow: inset 0 -0.2em 0 #0e7e79;
-  color: #0e7e79;
-}
-.ui.tertiary.teal.buttons .active.button,
-.ui.tertiary.teal.buttons .tertiary.active.button,
-.ui.tertiary.teal.active.button,
-.ui.tertiary.teal.buttons .button:active,
-.ui.tertiary.teal.buttons .tertiary.button:active,
-.ui.tertiary.teal.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #009c95;
-          box-shadow: inset 0 -0.2em 0 #009c95;
-  color: #009c95;
-}
-.ui.blue.buttons .button,
-.ui.blue.button {
-  background-color: #2185D0;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.blue.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.blue.buttons .button:hover,
-.ui.blue.button:hover {
-  background-color: #1678c2;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.blue.buttons .button:focus,
-.ui.blue.button:focus {
-  background-color: #0d71bb;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.blue.buttons .button:active,
-.ui.blue.button:active {
-  background-color: #1a69a4;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.blue.buttons .active.button,
-.ui.blue.buttons .active.button:active,
-.ui.blue.active.button,
-.ui.blue.button .active.button:active {
-  background-color: #1279c6;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.blue.buttons .button,
-.ui.basic.blue.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #2185D0 inset;
-          box-shadow: 0 0 0 1px #2185D0 inset;
-  color: #2185D0;
-}
-.ui.basic.blue.buttons .button:hover,
-.ui.basic.blue.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #1678c2 inset;
-          box-shadow: 0 0 0 1px #1678c2 inset;
-  color: #1678c2;
-}
-.ui.basic.blue.buttons .button:focus,
-.ui.basic.blue.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #0d71bb inset;
-          box-shadow: 0 0 0 1px #0d71bb inset;
-  color: #1678c2;
-}
-.ui.basic.blue.buttons .active.button,
-.ui.basic.blue.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #1279c6 inset;
-          box-shadow: 0 0 0 1px #1279c6 inset;
-  color: #1a69a4;
-}
-.ui.basic.blue.buttons .button:active,
-.ui.basic.blue.button:active {
-  -webkit-box-shadow: 0 0 0 1px #1a69a4 inset;
-          box-shadow: 0 0 0 1px #1a69a4 inset;
-  color: #1a69a4;
-}
-.ui.buttons:not(.vertical) > .basic.blue.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.blue.buttons .button,
-.ui.inverted.blue.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #54C8FF inset;
-          box-shadow: 0 0 0 2px #54C8FF inset;
-  color: #54C8FF;
-}
-.ui.inverted.blue.buttons .button:hover,
-.ui.inverted.blue.button:hover,
-.ui.inverted.blue.buttons .button:focus,
-.ui.inverted.blue.button:focus,
-.ui.inverted.blue.buttons .button.active,
-.ui.inverted.blue.button.active,
-.ui.inverted.blue.buttons .button:active,
-.ui.inverted.blue.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.blue.buttons .button:hover,
-.ui.inverted.blue.button:hover {
-  background-color: #21b8ff;
-}
-.ui.inverted.blue.buttons .button:focus,
-.ui.inverted.blue.button:focus {
-  background-color: #2bbbff;
-}
-.ui.inverted.blue.buttons .active.button,
-.ui.inverted.blue.active.button {
-  background-color: #3ac0ff;
-}
-.ui.inverted.blue.buttons .button:active,
-.ui.inverted.blue.button:active {
-  background-color: #21b8ff;
-}
-
-/* Inverted Basic */
-.ui.inverted.blue.basic.buttons .button,
-.ui.inverted.blue.buttons .basic.button,
-.ui.inverted.blue.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.blue.basic.buttons .button:hover,
-.ui.inverted.blue.buttons .basic.button:hover,
-.ui.inverted.blue.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #21b8ff inset;
-          box-shadow: 0 0 0 2px #21b8ff inset;
-  color: #54C8FF;
-}
-.ui.inverted.blue.basic.buttons .button:focus,
-.ui.inverted.blue.basic.buttons .button:focus,
-.ui.inverted.blue.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #2bbbff inset;
-          box-shadow: 0 0 0 2px #2bbbff inset;
-  color: #54C8FF;
-}
-.ui.inverted.blue.basic.buttons .active.button,
-.ui.inverted.blue.buttons .basic.active.button,
-.ui.inverted.blue.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #3ac0ff inset;
-          box-shadow: 0 0 0 2px #3ac0ff inset;
-  color: #54C8FF;
-}
-.ui.inverted.blue.basic.buttons .button:active,
-.ui.inverted.blue.buttons .basic.button:active,
-.ui.inverted.blue.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #21b8ff inset;
-          box-shadow: 0 0 0 2px #21b8ff inset;
-  color: #54C8FF;
-}
-
-/* Tertiary */
-.ui.tertiary.blue.buttons .button,
-.ui.tertiary.blue.buttons .tertiary.button,
-.ui.tertiary.blue.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #2185D0;
-}
-.ui.tertiary.blue.buttons .button:hover,
-.ui.tertiary.blue.buttons button:hover,
-.ui.tertiary.blue.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #2b75ac;
-          box-shadow: inset 0 -0.2em 0 #2b75ac;
-  color: #2b75ac;
-}
-.ui.tertiary.blue.buttons .button:focus,
-.ui.tertiary.blue.buttons .tertiary.button:focus,
-.ui.tertiary.blue.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #216ea7;
-          box-shadow: inset 0 -0.2em 0 #216ea7;
-  color: #216ea7;
-}
-.ui.tertiary.blue.buttons .active.button,
-.ui.tertiary.blue.buttons .tertiary.active.button,
-.ui.tertiary.blue.active.button,
-.ui.tertiary.blue.buttons .button:active,
-.ui.tertiary.blue.buttons .tertiary.button:active,
-.ui.tertiary.blue.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #007bd8;
-          box-shadow: inset 0 -0.2em 0 #007bd8;
-  color: #1279c6;
-}
-.ui.violet.buttons .button,
-.ui.violet.button {
-  background-color: #6435C9;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.violet.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.violet.buttons .button:hover,
-.ui.violet.button:hover {
-  background-color: #5829bb;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.violet.buttons .button:focus,
-.ui.violet.button:focus {
-  background-color: #4f20b5;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.violet.buttons .button:active,
-.ui.violet.button:active {
-  background-color: #502aa1;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.violet.buttons .active.button,
-.ui.violet.buttons .active.button:active,
-.ui.violet.active.button,
-.ui.violet.button .active.button:active {
-  background-color: #5626bf;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.violet.buttons .button,
-.ui.basic.violet.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #6435C9 inset;
-          box-shadow: 0 0 0 1px #6435C9 inset;
-  color: #6435C9;
-}
-.ui.basic.violet.buttons .button:hover,
-.ui.basic.violet.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #5829bb inset;
-          box-shadow: 0 0 0 1px #5829bb inset;
-  color: #5829bb;
-}
-.ui.basic.violet.buttons .button:focus,
-.ui.basic.violet.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #4f20b5 inset;
-          box-shadow: 0 0 0 1px #4f20b5 inset;
-  color: #5829bb;
-}
-.ui.basic.violet.buttons .active.button,
-.ui.basic.violet.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #5626bf inset;
-          box-shadow: 0 0 0 1px #5626bf inset;
-  color: #502aa1;
-}
-.ui.basic.violet.buttons .button:active,
-.ui.basic.violet.button:active {
-  -webkit-box-shadow: 0 0 0 1px #502aa1 inset;
-          box-shadow: 0 0 0 1px #502aa1 inset;
-  color: #502aa1;
-}
-.ui.buttons:not(.vertical) > .basic.violet.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.violet.buttons .button,
-.ui.inverted.violet.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #A291FB inset;
-          box-shadow: 0 0 0 2px #A291FB inset;
-  color: #A291FB;
-}
-.ui.inverted.violet.buttons .button:hover,
-.ui.inverted.violet.button:hover,
-.ui.inverted.violet.buttons .button:focus,
-.ui.inverted.violet.button:focus,
-.ui.inverted.violet.buttons .button.active,
-.ui.inverted.violet.button.active,
-.ui.inverted.violet.buttons .button:active,
-.ui.inverted.violet.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.violet.buttons .button:hover,
-.ui.inverted.violet.button:hover {
-  background-color: #745aff;
-}
-.ui.inverted.violet.buttons .button:focus,
-.ui.inverted.violet.button:focus {
-  background-color: #7d64ff;
-}
-.ui.inverted.violet.buttons .active.button,
-.ui.inverted.violet.active.button {
-  background-color: #8a73ff;
-}
-.ui.inverted.violet.buttons .button:active,
-.ui.inverted.violet.button:active {
-  background-color: #7860f9;
-}
-
-/* Inverted Basic */
-.ui.inverted.violet.basic.buttons .button,
-.ui.inverted.violet.buttons .basic.button,
-.ui.inverted.violet.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.violet.basic.buttons .button:hover,
-.ui.inverted.violet.buttons .basic.button:hover,
-.ui.inverted.violet.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #745aff inset;
-          box-shadow: 0 0 0 2px #745aff inset;
-  color: #A291FB;
-}
-.ui.inverted.violet.basic.buttons .button:focus,
-.ui.inverted.violet.basic.buttons .button:focus,
-.ui.inverted.violet.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #7d64ff inset;
-          box-shadow: 0 0 0 2px #7d64ff inset;
-  color: #A291FB;
-}
-.ui.inverted.violet.basic.buttons .active.button,
-.ui.inverted.violet.buttons .basic.active.button,
-.ui.inverted.violet.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #8a73ff inset;
-          box-shadow: 0 0 0 2px #8a73ff inset;
-  color: #A291FB;
-}
-.ui.inverted.violet.basic.buttons .button:active,
-.ui.inverted.violet.buttons .basic.button:active,
-.ui.inverted.violet.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #7860f9 inset;
-          box-shadow: 0 0 0 2px #7860f9 inset;
-  color: #A291FB;
-}
-
-/* Tertiary */
-.ui.tertiary.violet.buttons .button,
-.ui.tertiary.violet.buttons .tertiary.button,
-.ui.tertiary.violet.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #6435C9;
-}
-.ui.tertiary.violet.buttons .button:hover,
-.ui.tertiary.violet.buttons button:hover,
-.ui.tertiary.violet.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #6040a5;
-          box-shadow: inset 0 -0.2em 0 #6040a5;
-  color: #6040a5;
-}
-.ui.tertiary.violet.buttons .button:focus,
-.ui.tertiary.violet.buttons .tertiary.button:focus,
-.ui.tertiary.violet.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #5735a0;
-          box-shadow: inset 0 -0.2em 0 #5735a0;
-  color: #5735a0;
-}
-.ui.tertiary.violet.buttons .active.button,
-.ui.tertiary.violet.buttons .tertiary.active.button,
-.ui.tertiary.violet.active.button,
-.ui.tertiary.violet.buttons .button:active,
-.ui.tertiary.violet.buttons .tertiary.button:active,
-.ui.tertiary.violet.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #4e0fd6;
-          box-shadow: inset 0 -0.2em 0 #4e0fd6;
-  color: #5626bf;
-}
-.ui.purple.buttons .button,
-.ui.purple.button {
-  background-color: #A333C8;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.purple.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.purple.buttons .button:hover,
-.ui.purple.button:hover {
-  background-color: #9627ba;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.purple.buttons .button:focus,
-.ui.purple.button:focus {
-  background-color: #8f1eb4;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.purple.buttons .button:active,
-.ui.purple.button:active {
-  background-color: #82299f;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.purple.buttons .active.button,
-.ui.purple.buttons .active.button:active,
-.ui.purple.active.button,
-.ui.purple.button .active.button:active {
-  background-color: #9724be;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.purple.buttons .button,
-.ui.basic.purple.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #A333C8 inset;
-          box-shadow: 0 0 0 1px #A333C8 inset;
-  color: #A333C8;
-}
-.ui.basic.purple.buttons .button:hover,
-.ui.basic.purple.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #9627ba inset;
-          box-shadow: 0 0 0 1px #9627ba inset;
-  color: #9627ba;
-}
-.ui.basic.purple.buttons .button:focus,
-.ui.basic.purple.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #8f1eb4 inset;
-          box-shadow: 0 0 0 1px #8f1eb4 inset;
-  color: #9627ba;
-}
-.ui.basic.purple.buttons .active.button,
-.ui.basic.purple.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #9724be inset;
-          box-shadow: 0 0 0 1px #9724be inset;
-  color: #82299f;
-}
-.ui.basic.purple.buttons .button:active,
-.ui.basic.purple.button:active {
-  -webkit-box-shadow: 0 0 0 1px #82299f inset;
-          box-shadow: 0 0 0 1px #82299f inset;
-  color: #82299f;
-}
-.ui.buttons:not(.vertical) > .basic.purple.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.purple.buttons .button,
-.ui.inverted.purple.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #DC73FF inset;
-          box-shadow: 0 0 0 2px #DC73FF inset;
-  color: #DC73FF;
-}
-.ui.inverted.purple.buttons .button:hover,
-.ui.inverted.purple.button:hover,
-.ui.inverted.purple.buttons .button:focus,
-.ui.inverted.purple.button:focus,
-.ui.inverted.purple.buttons .button.active,
-.ui.inverted.purple.button.active,
-.ui.inverted.purple.buttons .button:active,
-.ui.inverted.purple.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.purple.buttons .button:hover,
-.ui.inverted.purple.button:hover {
-  background-color: #cf40ff;
-}
-.ui.inverted.purple.buttons .button:focus,
-.ui.inverted.purple.button:focus {
-  background-color: #d24aff;
-}
-.ui.inverted.purple.buttons .active.button,
-.ui.inverted.purple.active.button {
-  background-color: #d65aff;
-}
-.ui.inverted.purple.buttons .button:active,
-.ui.inverted.purple.button:active {
-  background-color: #cf40ff;
-}
-
-/* Inverted Basic */
-.ui.inverted.purple.basic.buttons .button,
-.ui.inverted.purple.buttons .basic.button,
-.ui.inverted.purple.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.purple.basic.buttons .button:hover,
-.ui.inverted.purple.buttons .basic.button:hover,
-.ui.inverted.purple.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #cf40ff inset;
-          box-shadow: 0 0 0 2px #cf40ff inset;
-  color: #DC73FF;
-}
-.ui.inverted.purple.basic.buttons .button:focus,
-.ui.inverted.purple.basic.buttons .button:focus,
-.ui.inverted.purple.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #d24aff inset;
-          box-shadow: 0 0 0 2px #d24aff inset;
-  color: #DC73FF;
-}
-.ui.inverted.purple.basic.buttons .active.button,
-.ui.inverted.purple.buttons .basic.active.button,
-.ui.inverted.purple.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #d65aff inset;
-          box-shadow: 0 0 0 2px #d65aff inset;
-  color: #DC73FF;
-}
-.ui.inverted.purple.basic.buttons .button:active,
-.ui.inverted.purple.buttons .basic.button:active,
-.ui.inverted.purple.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #cf40ff inset;
-          box-shadow: 0 0 0 2px #cf40ff inset;
-  color: #DC73FF;
-}
-
-/* Tertiary */
-.ui.tertiary.purple.buttons .button,
-.ui.tertiary.purple.buttons .tertiary.button,
-.ui.tertiary.purple.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #A333C8;
-}
-.ui.tertiary.purple.buttons .button:hover,
-.ui.tertiary.purple.buttons button:hover,
-.ui.tertiary.purple.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #8a3ea4;
-          box-shadow: inset 0 -0.2em 0 #8a3ea4;
-  color: #8a3ea4;
-}
-.ui.tertiary.purple.buttons .button:focus,
-.ui.tertiary.purple.buttons .tertiary.button:focus,
-.ui.tertiary.purple.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #84339f;
-          box-shadow: inset 0 -0.2em 0 #84339f;
-  color: #84339f;
-}
-.ui.tertiary.purple.buttons .active.button,
-.ui.tertiary.purple.buttons .tertiary.active.button,
-.ui.tertiary.purple.active.button,
-.ui.tertiary.purple.buttons .button:active,
-.ui.tertiary.purple.buttons .tertiary.button:active,
-.ui.tertiary.purple.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #a30dd4;
-          box-shadow: inset 0 -0.2em 0 #a30dd4;
-  color: #9724be;
-}
-.ui.pink.buttons .button,
-.ui.pink.button {
-  background-color: #E03997;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.pink.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.pink.buttons .button:hover,
-.ui.pink.button:hover {
-  background-color: #e61a8d;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.pink.buttons .button:focus,
-.ui.pink.button:focus {
-  background-color: #e10f85;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.pink.buttons .button:active,
-.ui.pink.button:active {
-  background-color: #c71f7e;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.pink.buttons .active.button,
-.ui.pink.buttons .active.button:active,
-.ui.pink.active.button,
-.ui.pink.button .active.button:active {
-  background-color: #ea158d;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.pink.buttons .button,
-.ui.basic.pink.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #E03997 inset;
-          box-shadow: 0 0 0 1px #E03997 inset;
-  color: #E03997;
-}
-.ui.basic.pink.buttons .button:hover,
-.ui.basic.pink.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #e61a8d inset;
-          box-shadow: 0 0 0 1px #e61a8d inset;
-  color: #e61a8d;
-}
-.ui.basic.pink.buttons .button:focus,
-.ui.basic.pink.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #e10f85 inset;
-          box-shadow: 0 0 0 1px #e10f85 inset;
-  color: #e61a8d;
-}
-.ui.basic.pink.buttons .active.button,
-.ui.basic.pink.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #ea158d inset;
-          box-shadow: 0 0 0 1px #ea158d inset;
-  color: #c71f7e;
-}
-.ui.basic.pink.buttons .button:active,
-.ui.basic.pink.button:active {
-  -webkit-box-shadow: 0 0 0 1px #c71f7e inset;
-          box-shadow: 0 0 0 1px #c71f7e inset;
-  color: #c71f7e;
-}
-.ui.buttons:not(.vertical) > .basic.pink.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.pink.buttons .button,
-.ui.inverted.pink.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #FF8EDF inset;
-          box-shadow: 0 0 0 2px #FF8EDF inset;
-  color: #FF8EDF;
-}
-.ui.inverted.pink.buttons .button:hover,
-.ui.inverted.pink.button:hover,
-.ui.inverted.pink.buttons .button:focus,
-.ui.inverted.pink.button:focus,
-.ui.inverted.pink.buttons .button.active,
-.ui.inverted.pink.button.active,
-.ui.inverted.pink.buttons .button:active,
-.ui.inverted.pink.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.pink.buttons .button:hover,
-.ui.inverted.pink.button:hover {
-  background-color: #ff5bd1;
-}
-.ui.inverted.pink.buttons .button:focus,
-.ui.inverted.pink.button:focus {
-  background-color: #ff65d3;
-}
-.ui.inverted.pink.buttons .active.button,
-.ui.inverted.pink.active.button {
-  background-color: #ff74d8;
-}
-.ui.inverted.pink.buttons .button:active,
-.ui.inverted.pink.button:active {
-  background-color: #ff5bd1;
-}
-
-/* Inverted Basic */
-.ui.inverted.pink.basic.buttons .button,
-.ui.inverted.pink.buttons .basic.button,
-.ui.inverted.pink.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.pink.basic.buttons .button:hover,
-.ui.inverted.pink.buttons .basic.button:hover,
-.ui.inverted.pink.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #ff5bd1 inset;
-          box-shadow: 0 0 0 2px #ff5bd1 inset;
-  color: #FF8EDF;
-}
-.ui.inverted.pink.basic.buttons .button:focus,
-.ui.inverted.pink.basic.buttons .button:focus,
-.ui.inverted.pink.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #ff65d3 inset;
-          box-shadow: 0 0 0 2px #ff65d3 inset;
-  color: #FF8EDF;
-}
-.ui.inverted.pink.basic.buttons .active.button,
-.ui.inverted.pink.buttons .basic.active.button,
-.ui.inverted.pink.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #ff74d8 inset;
-          box-shadow: 0 0 0 2px #ff74d8 inset;
-  color: #FF8EDF;
-}
-.ui.inverted.pink.basic.buttons .button:active,
-.ui.inverted.pink.buttons .basic.button:active,
-.ui.inverted.pink.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #ff5bd1 inset;
-          box-shadow: 0 0 0 2px #ff5bd1 inset;
-  color: #FF8EDF;
-}
-
-/* Tertiary */
-.ui.tertiary.pink.buttons .button,
-.ui.tertiary.pink.buttons .tertiary.button,
-.ui.tertiary.pink.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #E03997;
-}
-.ui.tertiary.pink.buttons .button:hover,
-.ui.tertiary.pink.buttons button:hover,
-.ui.tertiary.pink.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #cc3389;
-          box-shadow: inset 0 -0.2em 0 #cc3389;
-  color: #cc3389;
-}
-.ui.tertiary.pink.buttons .button:focus,
-.ui.tertiary.pink.buttons .tertiary.button:focus,
-.ui.tertiary.pink.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #c92782;
-          box-shadow: inset 0 -0.2em 0 #c92782;
-  color: #c92782;
-}
-.ui.tertiary.pink.buttons .active.button,
-.ui.tertiary.pink.buttons .tertiary.active.button,
-.ui.tertiary.pink.active.button,
-.ui.tertiary.pink.buttons .button:active,
-.ui.tertiary.pink.buttons .tertiary.button:active,
-.ui.tertiary.pink.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #ff0090;
-          box-shadow: inset 0 -0.2em 0 #ff0090;
-  color: #ea158d;
-}
-.ui.brown.buttons .button,
-.ui.brown.button {
-  background-color: #A5673F;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.brown.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.brown.buttons .button:hover,
-.ui.brown.button:hover {
-  background-color: #975b33;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.brown.buttons .button:focus,
-.ui.brown.button:focus {
-  background-color: #90532b;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.brown.buttons .button:active,
-.ui.brown.button:active {
-  background-color: #805031;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.brown.buttons .active.button,
-.ui.brown.buttons .active.button:active,
-.ui.brown.active.button,
-.ui.brown.button .active.button:active {
-  background-color: #995a31;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.brown.buttons .button,
-.ui.basic.brown.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #A5673F inset;
-          box-shadow: 0 0 0 1px #A5673F inset;
-  color: #A5673F;
-}
-.ui.basic.brown.buttons .button:hover,
-.ui.basic.brown.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #975b33 inset;
-          box-shadow: 0 0 0 1px #975b33 inset;
-  color: #975b33;
-}
-.ui.basic.brown.buttons .button:focus,
-.ui.basic.brown.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #90532b inset;
-          box-shadow: 0 0 0 1px #90532b inset;
-  color: #975b33;
-}
-.ui.basic.brown.buttons .active.button,
-.ui.basic.brown.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #995a31 inset;
-          box-shadow: 0 0 0 1px #995a31 inset;
-  color: #805031;
-}
-.ui.basic.brown.buttons .button:active,
-.ui.basic.brown.button:active {
-  -webkit-box-shadow: 0 0 0 1px #805031 inset;
-          box-shadow: 0 0 0 1px #805031 inset;
-  color: #805031;
-}
-.ui.buttons:not(.vertical) > .basic.brown.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.brown.buttons .button,
-.ui.inverted.brown.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #D67C1C inset;
-          box-shadow: 0 0 0 2px #D67C1C inset;
-  color: #D67C1C;
-}
-.ui.inverted.brown.buttons .button:hover,
-.ui.inverted.brown.button:hover,
-.ui.inverted.brown.buttons .button:focus,
-.ui.inverted.brown.button:focus,
-.ui.inverted.brown.buttons .button.active,
-.ui.inverted.brown.button.active,
-.ui.inverted.brown.buttons .button:active,
-.ui.inverted.brown.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.brown.buttons .button:hover,
-.ui.inverted.brown.button:hover {
-  background-color: #b0620f;
-}
-.ui.inverted.brown.buttons .button:focus,
-.ui.inverted.brown.button:focus {
-  background-color: #c16808;
-}
-.ui.inverted.brown.buttons .active.button,
-.ui.inverted.brown.active.button {
-  background-color: #cc6f0d;
-}
-.ui.inverted.brown.buttons .button:active,
-.ui.inverted.brown.button:active {
-  background-color: #a96216;
-}
-
-/* Inverted Basic */
-.ui.inverted.brown.basic.buttons .button,
-.ui.inverted.brown.buttons .basic.button,
-.ui.inverted.brown.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.brown.basic.buttons .button:hover,
-.ui.inverted.brown.buttons .basic.button:hover,
-.ui.inverted.brown.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #b0620f inset;
-          box-shadow: 0 0 0 2px #b0620f inset;
-  color: #D67C1C;
-}
-.ui.inverted.brown.basic.buttons .button:focus,
-.ui.inverted.brown.basic.buttons .button:focus,
-.ui.inverted.brown.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #c16808 inset;
-          box-shadow: 0 0 0 2px #c16808 inset;
-  color: #D67C1C;
-}
-.ui.inverted.brown.basic.buttons .active.button,
-.ui.inverted.brown.buttons .basic.active.button,
-.ui.inverted.brown.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #cc6f0d inset;
-          box-shadow: 0 0 0 2px #cc6f0d inset;
-  color: #D67C1C;
-}
-.ui.inverted.brown.basic.buttons .button:active,
-.ui.inverted.brown.buttons .basic.button:active,
-.ui.inverted.brown.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #a96216 inset;
-          box-shadow: 0 0 0 2px #a96216 inset;
-  color: #D67C1C;
-}
-
-/* Tertiary */
-.ui.tertiary.brown.buttons .button,
-.ui.tertiary.brown.buttons .tertiary.button,
-.ui.tertiary.brown.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #A5673F;
-}
-.ui.tertiary.brown.buttons .button:hover,
-.ui.tertiary.brown.buttons button:hover,
-.ui.tertiary.brown.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #835f48;
-          box-shadow: inset 0 -0.2em 0 #835f48;
-  color: #835f48;
-}
-.ui.tertiary.brown.buttons .button:focus,
-.ui.tertiary.brown.buttons .tertiary.button:focus,
-.ui.tertiary.brown.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #7d573e;
-          box-shadow: inset 0 -0.2em 0 #7d573e;
-  color: #7d573e;
-}
-.ui.tertiary.brown.buttons .active.button,
-.ui.tertiary.brown.buttons .tertiary.active.button,
-.ui.tertiary.brown.active.button,
-.ui.tertiary.brown.buttons .button:active,
-.ui.tertiary.brown.buttons .tertiary.button:active,
-.ui.tertiary.brown.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #ae561d;
-          box-shadow: inset 0 -0.2em 0 #ae561d;
-  color: #995a31;
-}
-.ui.grey.buttons .button,
-.ui.grey.button {
-  background-color: #767676;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.grey.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.grey.buttons .button:hover,
-.ui.grey.button:hover {
-  background-color: #838383;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.grey.buttons .button:focus,
-.ui.grey.button:focus {
-  background-color: #8a8a8a;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.grey.buttons .button:active,
-.ui.grey.button:active {
-  background-color: #909090;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.grey.buttons .active.button,
-.ui.grey.buttons .active.button:active,
-.ui.grey.active.button,
-.ui.grey.button .active.button:active {
-  background-color: #696969;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.grey.buttons .button,
-.ui.basic.grey.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #767676 inset;
-          box-shadow: 0 0 0 1px #767676 inset;
-  color: #767676;
-}
-.ui.basic.grey.buttons .button:hover,
-.ui.basic.grey.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #838383 inset;
-          box-shadow: 0 0 0 1px #838383 inset;
-  color: #838383;
-}
-.ui.basic.grey.buttons .button:focus,
-.ui.basic.grey.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #8a8a8a inset;
-          box-shadow: 0 0 0 1px #8a8a8a inset;
-  color: #838383;
-}
-.ui.basic.grey.buttons .active.button,
-.ui.basic.grey.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #696969 inset;
-          box-shadow: 0 0 0 1px #696969 inset;
-  color: #909090;
-}
-.ui.basic.grey.buttons .button:active,
-.ui.basic.grey.button:active {
-  -webkit-box-shadow: 0 0 0 1px #909090 inset;
-          box-shadow: 0 0 0 1px #909090 inset;
-  color: #909090;
-}
-.ui.buttons:not(.vertical) > .basic.grey.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.grey.buttons .button,
-.ui.inverted.grey.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #D4D4D5 inset;
-          box-shadow: 0 0 0 2px #D4D4D5 inset;
-  color: #FFFFFF;
-}
-.ui.inverted.grey.buttons .button:hover,
-.ui.inverted.grey.button:hover,
-.ui.inverted.grey.buttons .button:focus,
-.ui.inverted.grey.button:focus,
-.ui.inverted.grey.buttons .button.active,
-.ui.inverted.grey.button.active,
-.ui.inverted.grey.buttons .button:active,
-.ui.inverted.grey.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: rgba(0, 0, 0, 0.6);
-}
-.ui.inverted.grey.buttons .button:hover,
-.ui.inverted.grey.button:hover {
-  background-color: #c2c4c5;
-}
-.ui.inverted.grey.buttons .button:focus,
-.ui.inverted.grey.button:focus {
-  background-color: #c7c9cb;
-}
-.ui.inverted.grey.buttons .active.button,
-.ui.inverted.grey.active.button {
-  background-color: #cfd0d2;
-}
-.ui.inverted.grey.buttons .button:active,
-.ui.inverted.grey.button:active {
-  background-color: #c2c4c5;
-}
-
-/* Inverted Basic */
-.ui.inverted.grey.basic.buttons .button,
-.ui.inverted.grey.buttons .basic.button,
-.ui.inverted.grey.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.grey.basic.buttons .button:hover,
-.ui.inverted.grey.buttons .basic.button:hover,
-.ui.inverted.grey.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #c2c4c5 inset;
-          box-shadow: 0 0 0 2px #c2c4c5 inset;
-  color: #FFFFFF;
-}
-.ui.inverted.grey.basic.buttons .button:focus,
-.ui.inverted.grey.basic.buttons .button:focus,
-.ui.inverted.grey.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #c7c9cb inset;
-          box-shadow: 0 0 0 2px #c7c9cb inset;
-  color: #DCDDDE;
-}
-.ui.inverted.grey.basic.buttons .active.button,
-.ui.inverted.grey.buttons .basic.active.button,
-.ui.inverted.grey.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #cfd0d2 inset;
-          box-shadow: 0 0 0 2px #cfd0d2 inset;
-  color: #FFFFFF;
-}
-.ui.inverted.grey.basic.buttons .button:active,
-.ui.inverted.grey.buttons .basic.button:active,
-.ui.inverted.grey.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #c2c4c5 inset;
-          box-shadow: 0 0 0 2px #c2c4c5 inset;
-  color: #FFFFFF;
-}
-
-/* Tertiary */
-.ui.tertiary.grey.buttons .button,
-.ui.tertiary.grey.buttons .tertiary.button,
-.ui.tertiary.grey.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #767676;
-}
-.ui.tertiary.grey.buttons .button:hover,
-.ui.tertiary.grey.buttons button:hover,
-.ui.tertiary.grey.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #838383;
-          box-shadow: inset 0 -0.2em 0 #838383;
-  color: #838383;
-}
-.ui.tertiary.grey.buttons .button:focus,
-.ui.tertiary.grey.buttons .tertiary.button:focus,
-.ui.tertiary.grey.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #8a8a8a;
-          box-shadow: inset 0 -0.2em 0 #8a8a8a;
-  color: #8a8a8a;
-}
-.ui.tertiary.grey.buttons .active.button,
-.ui.tertiary.grey.buttons .tertiary.active.button,
-.ui.tertiary.grey.active.button,
-.ui.tertiary.grey.buttons .button:active,
-.ui.tertiary.grey.buttons .tertiary.button:active,
-.ui.tertiary.grey.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #7e5454;
-          box-shadow: inset 0 -0.2em 0 #7e5454;
-  color: #696969;
-}
-.ui.black.buttons .button,
-.ui.black.button {
-  background-color: #1B1C1D;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.black.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.black.buttons .button:hover,
-.ui.black.button:hover {
-  background-color: #27292a;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.black.buttons .button:focus,
-.ui.black.button:focus {
-  background-color: #2f3032;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.black.buttons .button:active,
-.ui.black.button:active {
-  background-color: #343637;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.black.buttons .active.button,
-.ui.black.buttons .active.button:active,
-.ui.black.active.button,
-.ui.black.button .active.button:active {
-  background-color: #0f0f10;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.black.buttons .button,
-.ui.basic.black.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #1B1C1D inset;
-          box-shadow: 0 0 0 1px #1B1C1D inset;
-  color: #1B1C1D;
-}
-.ui.basic.black.buttons .button:hover,
-.ui.basic.black.button:hover {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #27292a inset;
-          box-shadow: 0 0 0 1px #27292a inset;
-  color: #27292a;
-}
-.ui.basic.black.buttons .button:focus,
-.ui.basic.black.button:focus {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #2f3032 inset;
-          box-shadow: 0 0 0 1px #2f3032 inset;
-  color: #27292a;
-}
-.ui.basic.black.buttons .active.button,
-.ui.basic.black.active.button {
-  background: transparent ;
-  -webkit-box-shadow: 0 0 0 1px #0f0f10 inset;
-          box-shadow: 0 0 0 1px #0f0f10 inset;
-  color: #343637;
-}
-.ui.basic.black.buttons .button:active,
-.ui.basic.black.button:active {
-  -webkit-box-shadow: 0 0 0 1px #343637 inset;
-          box-shadow: 0 0 0 1px #343637 inset;
-  color: #343637;
-}
-.ui.buttons:not(.vertical) > .basic.black.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/* Inverted */
-.ui.inverted.black.buttons .button,
-.ui.inverted.black.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px #D4D4D5 inset;
-          box-shadow: 0 0 0 2px #D4D4D5 inset;
-  color: #FFFFFF;
-}
-.ui.inverted.black.buttons .button:hover,
-.ui.inverted.black.button:hover,
-.ui.inverted.black.buttons .button:focus,
-.ui.inverted.black.button:focus,
-.ui.inverted.black.buttons .button.active,
-.ui.inverted.black.button.active,
-.ui.inverted.black.buttons .button:active,
-.ui.inverted.black.button:active {
-  -webkit-box-shadow: none ;
-          box-shadow: none ;
-  color: #FFFFFF;
-}
-.ui.inverted.black.buttons .button:hover,
-.ui.inverted.black.button:hover {
-  background-color: #000000;
-}
-.ui.inverted.black.buttons .button:focus,
-.ui.inverted.black.button:focus {
-  background-color: #000000;
-}
-.ui.inverted.black.buttons .active.button,
-.ui.inverted.black.active.button {
-  background-color: #000000;
-}
-.ui.inverted.black.buttons .button:active,
-.ui.inverted.black.button:active {
-  background-color: #000000;
-}
-
-/* Inverted Basic */
-.ui.inverted.black.basic.buttons .button,
-.ui.inverted.black.buttons .basic.button,
-.ui.inverted.black.basic.button {
-  background-color: transparent;
-  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset;
-  color: #FFFFFF;
-}
-.ui.inverted.black.basic.buttons .button:hover,
-.ui.inverted.black.buttons .basic.button:hover,
-.ui.inverted.black.basic.button:hover {
-  -webkit-box-shadow: 0 0 0 2px #000000 inset;
-          box-shadow: 0 0 0 2px #000000 inset;
-  color: #FFFFFF;
-}
-.ui.inverted.black.basic.buttons .button:focus,
-.ui.inverted.black.basic.buttons .button:focus,
-.ui.inverted.black.basic.button:focus {
-  -webkit-box-shadow: 0 0 0 2px #000000 inset;
-          box-shadow: 0 0 0 2px #000000 inset;
-  color: #545454;
-}
-.ui.inverted.black.basic.buttons .active.button,
-.ui.inverted.black.buttons .basic.active.button,
-.ui.inverted.black.basic.active.button {
-  -webkit-box-shadow: 0 0 0 2px #000000 inset;
-          box-shadow: 0 0 0 2px #000000 inset;
-  color: #FFFFFF;
-}
-.ui.inverted.black.basic.buttons .button:active,
-.ui.inverted.black.buttons .basic.button:active,
-.ui.inverted.black.basic.button:active {
-  -webkit-box-shadow: 0 0 0 2px #000000 inset;
-          box-shadow: 0 0 0 2px #000000 inset;
-  color: #FFFFFF;
-}
-
-/* Tertiary */
-.ui.tertiary.black.buttons .button,
-.ui.tertiary.black.buttons .tertiary.button,
-.ui.tertiary.black.button {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #1B1C1D;
-}
-.ui.tertiary.black.buttons .button:hover,
-.ui.tertiary.black.buttons button:hover,
-.ui.tertiary.black.button:hover {
-  -webkit-box-shadow: inset 0 -0.2em 0 #8b8f93;
-          box-shadow: inset 0 -0.2em 0 #8b8f93;
-  color: #8b8f93;
-}
-.ui.tertiary.black.buttons .button:focus,
-.ui.tertiary.black.buttons .tertiary.button:focus,
-.ui.tertiary.black.button:focus {
-  -webkit-box-shadow: inset 0 -0.2em 0 #93969a;
-          box-shadow: inset 0 -0.2em 0 #93969a;
-  color: #93969a;
-}
-.ui.tertiary.black.buttons .active.button,
-.ui.tertiary.black.buttons .tertiary.active.button,
-.ui.tertiary.black.active.button,
-.ui.tertiary.black.buttons .button:active,
-.ui.tertiary.black.buttons .tertiary.button:active,
-.ui.tertiary.black.button:active {
-  -webkit-box-shadow: inset 0 -0.2em 0 #404245;
-          box-shadow: inset 0 -0.2em 0 #404245;
-  color: #0f0f10;
-}
-
-/*---------------
-    Positive
-----------------*/
-
-
-/* Standard */
-.ui.positive.buttons .button,
-.ui.positive.button {
-  background-color: #21BA45;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.positive.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.positive.buttons .button:hover,
-.ui.positive.button:hover {
-  background-color: #16ab39;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.positive.buttons .button:focus,
-.ui.positive.button:focus {
-  background-color: #0ea432;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.positive.buttons .button:active,
-.ui.positive.button:active {
-  background-color: #198f35;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.positive.buttons .active.button,
-.ui.positive.buttons .active.button:active,
-.ui.positive.active.button,
-.ui.positive.button .active.button:active {
-  background-color: #13ae38;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.positive.buttons .button,
-.ui.basic.positive.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #21BA45 inset;
-          box-shadow: 0 0 0 1px #21BA45 inset;
-  color: #21BA45;
-}
-.ui.basic.positive.buttons .button:hover,
-.ui.basic.positive.button:hover {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #16ab39 inset;
-          box-shadow: 0 0 0 1px #16ab39 inset;
-  color: #16ab39;
-}
-.ui.basic.positive.buttons .button:focus,
-.ui.basic.positive.button:focus {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #0ea432 inset;
-          box-shadow: 0 0 0 1px #0ea432 inset;
-  color: #16ab39;
-}
-.ui.basic.positive.buttons .active.button,
-.ui.basic.positive.active.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #13ae38 inset;
-          box-shadow: 0 0 0 1px #13ae38 inset;
-  color: #198f35;
-}
-.ui.basic.positive.buttons .button:active,
-.ui.basic.positive.button:active {
-  -webkit-box-shadow: 0 0 0 1px #198f35 inset;
-          box-shadow: 0 0 0 1px #198f35 inset;
-  color: #198f35;
-}
-.ui.buttons:not(.vertical) > .basic.positive.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-/*---------------
-     Negative
-----------------*/
-
-
-/* Standard */
-.ui.negative.buttons .button,
-.ui.negative.button {
-  background-color: #DB2828;
-  color: #FFFFFF;
-  text-shadow: none;
-  background-image: none;
-}
-.ui.negative.button {
-  -webkit-box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.negative.buttons .button:hover,
-.ui.negative.button:hover {
-  background-color: #d01919;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.negative.buttons .button:focus,
-.ui.negative.button:focus {
-  background-color: #ca1010;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.negative.buttons .button:active,
-.ui.negative.button:active {
-  background-color: #b21e1e;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-.ui.negative.buttons .active.button,
-.ui.negative.buttons .active.button:active,
-.ui.negative.active.button,
-.ui.negative.button .active.button:active {
-  background-color: #d41515;
-  color: #FFFFFF;
-  text-shadow: none;
-}
-
-/* Basic */
-.ui.basic.negative.buttons .button,
-.ui.basic.negative.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #DB2828 inset;
-          box-shadow: 0 0 0 1px #DB2828 inset;
-  color: #DB2828;
-}
-.ui.basic.negative.buttons .button:hover,
-.ui.basic.negative.button:hover {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #d01919 inset;
-          box-shadow: 0 0 0 1px #d01919 inset;
-  color: #d01919;
-}
-.ui.basic.negative.buttons .button:focus,
-.ui.basic.negative.button:focus {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #ca1010 inset;
-          box-shadow: 0 0 0 1px #ca1010 inset;
-  color: #d01919;
-}
-.ui.basic.negative.buttons .active.button,
-.ui.basic.negative.active.button {
-  background: transparent;
-  -webkit-box-shadow: 0 0 0 1px #d41515 inset;
-          box-shadow: 0 0 0 1px #d41515 inset;
-  color: #b21e1e;
-}
-.ui.basic.negative.buttons .button:active,
-.ui.basic.negative.button:active {
-  -webkit-box-shadow: 0 0 0 1px #b21e1e inset;
-          box-shadow: 0 0 0 1px #b21e1e inset;
-  color: #b21e1e;
-}
-.ui.buttons:not(.vertical) > .basic.negative.button:not(:first-child) {
-  margin-left: -1px;
-}
-
-
-/*******************************
-            Groups
-*******************************/
-
-.ui.buttons {
-  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;
-  font-size: 0;
-  vertical-align: baseline;
-  margin: 0 0.25em 0 0;
-}
-.ui.buttons:not(.basic):not(.inverted) {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-
-/* Clearfix */
-.ui.buttons:after {
-  content: ".";
-  display: block;
-  height: 0;
-  clear: both;
-  visibility: hidden;
-}
-
-/* Standard Group */
-.ui.buttons .button {
-  -webkit-box-flex: 1;
-      -ms-flex: 1 0 auto;
-          flex: 1 0 auto;
-  border-radius: 0;
-  margin: 0 0 0 0;
-}
-.ui.buttons:not(.basic):not(.inverted) > .button:not(.basic):not(.inverted) {
-  -webkit-box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, 0.15) inset;
-}
-.ui.buttons .button:first-child {
-  border-left: none;
-  margin-left: 0;
-  border-top-left-radius: 0.28571429rem;
-  border-bottom-left-radius: 0.28571429rem;
-}
-.ui.buttons .button:last-child {
-  border-top-right-radius: 0.28571429rem;
-  border-bottom-right-radius: 0.28571429rem;
-}
-
-/* Vertical  Style */
-.ui.vertical.buttons {
-  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;
-}
-.ui.vertical.buttons .button {
-  display: block;
-  float: none;
-  width: 100%;
-  margin: 0 0 0 0;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border-radius: 0;
-}
-.ui.vertical.buttons .button:first-child {
-  border-top-left-radius: 0.28571429rem;
-  border-top-right-radius: 0.28571429rem;
-}
-.ui.vertical.buttons .button:last-child {
-  margin-bottom: 0;
-  border-bottom-left-radius: 0.28571429rem;
-  border-bottom-right-radius: 0.28571429rem;
-}
-.ui.vertical.buttons .button:only-child {
-  border-radius: 0.28571429rem;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-         Site Overrides
-*******************************/
-

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/button.min.css


+ 0 - 169
lib/fomantic/components/calendar.css

@@ -1,169 +0,0 @@
-/*!
- * # Fomantic-UI - Calendar
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Popup
-*******************************/
-
-.ui.calendar .ui.popup {
-  max-width: none;
-  padding: 0;
-  border: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-
-/*******************************
-            Calendar
-*******************************/
-
-.ui.calendar .calendar:focus {
-  outline: 0;
-}
-
-
-/*******************************
-            Grid
-*******************************/
-
-.ui.calendar .ui.popup .ui.grid {
-  display: block;
-  white-space: nowrap;
-}
-.ui.calendar .ui.popup .ui.grid > .column {
-  width: auto;
-}
-
-
-/*******************************
-            Table
-*******************************/
-
-.ui.calendar .ui.table.year,
-.ui.calendar .ui.table.month,
-.ui.calendar .ui.table.minute {
-  min-width: 15em;
-}
-.ui.calendar .ui.table.day {
-  min-width: 18em;
-}
-.ui.calendar .ui.table.day.andweek {
-  min-width: 22em;
-}
-.ui.calendar .ui.table.hour {
-  min-width: 20em;
-}
-.ui.calendar .ui.table tr th,
-.ui.calendar .ui.table tr td {
-  padding: 0.5em;
-  white-space: nowrap;
-}
-.ui.calendar .ui.table tr th {
-  border-left: none;
-}
-.ui.calendar .ui.table tr th .icon {
-  margin: 0;
-}
-.ui.calendar .ui.table tr:first-child th {
-  position: relative;
-  padding-left: 0;
-  padding-right: 0;
-}
-.ui.calendar .ui.table.day tr:first-child th {
-  border: none;
-}
-.ui.calendar .ui.table.day tr:nth-child(2) th {
-  padding-top: 0.2em;
-  padding-bottom: 0.3em;
-}
-.ui.calendar .ui.table tr td {
-  padding-left: 0.1em;
-  padding-right: 0.1em;
-}
-.ui.calendar .ui.table tr .link {
-  cursor: pointer;
-}
-.ui.calendar .ui.table tr .prev.link {
-  width: 14.28571429%;
-  position: absolute;
-  left: 0;
-}
-.ui.calendar .ui.table tr .next.link {
-  width: 14.28571429%;
-  position: absolute;
-  right: 0;
-}
-.ui.calendar .ui.table tr .disabled {
-  pointer-events: auto;
-  cursor: default;
-  color: rgba(40, 40, 40, 0.3);
-}
-.ui.calendar .ui.table tr .adjacent:not(.disabled) {
-  color: rgba(0, 0, 0, 0.6);
-  background: rgba(0, 0, 0, 0.03);
-}
-
-/*--------------
-     States
----------------*/
-
-.ui.calendar .ui.table tr td.today {
-  font-weight: bold;
-}
-.ui.calendar .ui.table tr td.range {
-  background: rgba(0, 0, 0, 0.05);
-  color: rgba(0, 0, 0, 0.95);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.ui.calendar .ui.table.inverted tr td.range {
-  background: rgba(255, 255, 255, 0.08);
-  color: #ffffff;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.ui.calendar:not(.disabled) .calendar:focus .ui.table tbody tr td.focus,
-.ui.calendar:not(.disabled) .calendar.active .ui.table tbody tr td.focus {
-  -webkit-box-shadow: inset 0 0 0 1px #85B7D9;
-          box-shadow: inset 0 0 0 1px #85B7D9;
-}
-.ui.calendar:not(.disabled) .calendar:focus .ui.table.inverted tbody tr td.focus,
-.ui.calendar:not(.disabled) .calendar.active .ui.table.inverted tbody tr td.focus {
-  -webkit-box-shadow: inset 0 0 0 1px #85B7D9;
-          box-shadow: inset 0 0 0 1px #85B7D9;
-}
-
-
-/*******************************
-            States
-*******************************/
-
-
-/*--------------------
-        Disabled
----------------------*/
-
-.ui.disabled.calendar {
-  opacity: 0.45;
-}
-.ui.disabled.calendar > .input,
-.ui.disabled.calendar .ui.table tr .link {
-  pointer-events: none;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-

+ 0 - 1562
lib/fomantic/components/calendar.js

@@ -1,1562 +0,0 @@
-/*!
- * # Fomantic-UI - Calendar
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-'use strict';
-
-$.isFunction = $.isFunction || function(obj) {
-  return typeof obj === "function" && typeof obj.nodeType !== "number";
-};
-
-window = (typeof window != 'undefined' && window.Math == Math)
-  ? window
-  : (typeof self != 'undefined' && self.Math == Math)
-    ? self
-    : Function('return this')()
-;
-
-$.fn.calendar = function(parameters) {
-  var
-    $allModules    = $(this),
-
-    moduleSelector = $allModules.selector || '',
-
-    time           = new Date().getTime(),
-    performance    = [],
-
-    query          = arguments[0],
-    methodInvoked  = (typeof query == 'string'),
-    queryArguments = [].slice.call(arguments, 1),
-    returnedValue,
-    timeGapTable = {
-      '5': {'row': 4, 'column': 3 },
-      '10': {'row': 3, 'column': 2 },
-      '15': {'row': 2, 'column': 2 },
-      '20': {'row': 3, 'column': 1 },
-      '30': {'row': 2, 'column': 1 }
-    }
-  ;
-
-  $allModules
-    .each(function () {
-      var
-        settings = ( $.isPlainObject(parameters) )
-          ? $.extend(true, {}, $.fn.calendar.settings, parameters)
-          : $.extend({}, $.fn.calendar.settings),
-
-        className = settings.className,
-        namespace = settings.namespace,
-        selector = settings.selector,
-        formatter = settings.formatter,
-        parser = settings.parser,
-        metadata = settings.metadata,
-        timeGap = timeGapTable[settings.minTimeGap],
-        error = settings.error,
-
-        eventNamespace = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-
-        $module = $(this),
-        $input = $module.find(selector.input),
-        $container = $module.find(selector.popup),
-        $activator = $module.find(selector.activator),
-
-        element = this,
-        instance = $module.data(moduleNamespace),
-
-        isTouch,
-        isTouchDown = false,
-        focusDateUsedForRange = false,
-        module
-      ;
-
-      module = {
-
-        initialize: function () {
-          module.debug('Initializing calendar for', element, $module);
-
-          isTouch = module.get.isTouch();
-          module.setup.config();
-          module.setup.popup();
-          module.setup.inline();
-          module.setup.input();
-          module.setup.date();
-          module.create.calendar();
-
-          module.bind.events();
-          module.instantiate();
-        },
-
-        instantiate: function () {
-          module.verbose('Storing instance of calendar');
-          instance = module;
-          $module.data(moduleNamespace, instance);
-        },
-
-        destroy: function () {
-          module.verbose('Destroying previous calendar for', element);
-          $module.removeData(moduleNamespace);
-          module.unbind.events();
-        },
-
-        setup: {
-          config: function () {
-            if (module.get.minDate() !== null) {
-              module.set.minDate($module.data(metadata.minDate));
-            }
-            if (module.get.maxDate() !== null) {
-              module.set.maxDate($module.data(metadata.maxDate));
-            }
-          },
-          popup: function () {
-            if (settings.inline) {
-              return;
-            }
-            if (!$activator.length) {
-              $activator = $module.children().first();
-              if (!$activator.length) {
-                return;
-              }
-            }
-            if ($.fn.popup === undefined) {
-              module.error(error.popup);
-              return;
-            }
-            if (!$container.length) {
-              //prepend the popup element to the activator's parent so that it has less chance of messing with
-              //the styling (eg input action button needs to be the last child to have correct border radius)
-              var $activatorParent = $activator.parent(),
-                  domPositionFunction = $activatorParent.closest(selector.append).length !== 0 ? 'appendTo' : 'prependTo';
-              $container = $('<div/>').addClass(className.popup)[domPositionFunction]($activatorParent);
-            }
-            $container.addClass(className.calendar);
-            var onVisible = settings.onVisible;
-            var onHidden = settings.onHidden;
-            if (!$input.length) {
-              //no input, $container has to handle focus/blur
-              $container.attr('tabindex', '0');
-              onVisible = function () {
-                module.focus();
-                return settings.onVisible.apply($container, arguments);
-              };
-              onHidden = function () {
-                module.blur();
-                return settings.onHidden.apply($container, arguments);
-              };
-            }
-            var onShow = function () {
-              //reset the focus date onShow
-              module.set.focusDate(module.get.date());
-              module.set.mode(settings.startMode);
-              return settings.onShow.apply($container, arguments);
-            };
-            var on = settings.on || ($input.length ? 'focus' : 'click');
-            var options = $.extend({}, settings.popupOptions, {
-              popup: $container,
-              on: on,
-              hoverable: on === 'hover',
-              onShow: onShow,
-              onVisible: onVisible,
-              onHide: settings.onHide,
-              onHidden: onHidden
-            });
-            module.popup(options);
-          },
-          inline: function () {
-            if ($activator.length && !settings.inline) {
-              return;
-            }
-            $container = $('<div/>').addClass(className.calendar).appendTo($module);
-            if (!$input.length) {
-              $container.attr('tabindex', '0');
-            }
-          },
-          input: function () {
-            if (settings.touchReadonly && $input.length && isTouch) {
-              $input.prop('readonly', true);
-            }
-          },
-          date: function () {
-            if (settings.initialDate) {
-              var date = parser.date(settings.initialDate, settings);
-              module.set.date(date, settings.formatInput, false);
-            } else if ($module.data(metadata.date) !== undefined) {
-              var date = parser.date($module.data(metadata.date), settings);
-              module.set.date(date, settings.formatInput, false);
-            } else if ($input.length) {
-              var val = $input.val();
-              var date = parser.date(val, settings);
-              module.set.date(date, settings.formatInput, false);
-            }
-          }
-        },
-
-        create: {
-          calendar: function () {
-            var i, r, c, p, row, cell, pageGrid;
-
-            var mode = module.get.mode();
-            var today = new Date();
-            var date = module.get.date();
-            var focusDate = module.get.focusDate();
-            var display = focusDate || date || settings.initialDate || today;
-            display = module.helper.dateInRange(display);
-
-            if (!focusDate) {
-              focusDate = display;
-              module.set.focusDate(focusDate, false, false);
-            }
-
-            var isYear = mode === 'year';
-            var isMonth = mode === 'month';
-            var isDay = mode === 'day';
-            var isHour = mode === 'hour';
-            var isMinute = mode === 'minute';
-            var isTimeOnly = settings.type === 'time';
-
-            var multiMonth = Math.max(settings.multiMonth, 1);
-            var monthOffset = !isDay ? 0 : module.get.monthOffset();
-
-            var minute = display.getMinutes();
-            var hour = display.getHours();
-            var day = display.getDate();
-            var startMonth = display.getMonth() + monthOffset;
-            var year = display.getFullYear();
-
-            var columns = isDay ? settings.showWeekNumbers ? 8 : 7 : isHour ? 4 : timeGap['column'];
-            var rows = isDay || isHour ? 6 : timeGap['row'];
-            var pages = isDay ? multiMonth : 1;
-
-            var container = $container;
-            var tooltipPosition = container.hasClass("left") ? "right center" : "left center";
-            container.empty();
-            if (pages > 1) {
-              pageGrid = $('<div/>').addClass(className.grid).appendTo(container);
-            }
-
-            for (p = 0; p < pages; p++) {
-              if (pages > 1) {
-                var pageColumn = $('<div/>').addClass(className.column).appendTo(pageGrid);
-                container = pageColumn;
-              }
-
-              var month = startMonth + p;
-              var firstMonthDayColumn = (new Date(year, month, 1).getDay() - settings.firstDayOfWeek % 7 + 7) % 7;
-              if (!settings.constantHeight && isDay) {
-                var requiredCells = new Date(year, month + 1, 0).getDate() + firstMonthDayColumn;
-                rows = Math.ceil(requiredCells / 7);
-              }
-
-              var yearChange = isYear ? 10 : isMonth ? 1 : 0;
-              var monthChange = isDay ? 1 : 0;
-              var dayChange = isHour || isMinute ? 1 : 0;
-              var prevNextDay = isHour || isMinute ? day : 1;
-              var prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour);
-              var nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour);
-
-              var prevLast = isYear ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0) :
-                isMonth ? new Date(year, 0, 0) : isDay ? new Date(year, month, 0) : new Date(year, month, day, -1);
-              var nextFirst = isYear ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1) :
-                isMonth ? new Date(year + 1, 0, 1) : isDay ? new Date(year, month + 1, 1) : new Date(year, month, day + 1);
-
-              var tempMode = mode;
-              if (isDay && settings.showWeekNumbers){
-                tempMode += ' andweek';
-              }
-              var table = $('<table/>').addClass(className.table).addClass(tempMode).appendTo(container);
-              var textColumns = columns;
-              //no header for time-only mode
-              if (!isTimeOnly) {
-                var thead = $('<thead/>').appendTo(table);
-
-                row = $('<tr/>').appendTo(thead);
-                cell = $('<th/>').attr('colspan', '' + columns).appendTo(row);
-
-                var headerDate = isYear || isMonth ? new Date(year, 0, 1) :
-                  isDay ? new Date(year, month, 1) : new Date(year, month, day, hour, minute);
-                var headerText = $('<span/>').addClass(className.link).appendTo(cell);
-                headerText.text(formatter.header(headerDate, mode, settings));
-                var newMode = isMonth ? (settings.disableYear ? 'day' : 'year') :
-                  isDay ? (settings.disableMonth ? 'year' : 'month') : 'day';
-                headerText.data(metadata.mode, newMode);
-
-                if (p === 0) {
-                  var prev = $('<span/>').addClass(className.prev).appendTo(cell);
-                  prev.data(metadata.focusDate, prevDate);
-                  prev.toggleClass(className.disabledCell, !module.helper.isDateInRange(prevLast, mode));
-                  $('<i/>').addClass(className.prevIcon).appendTo(prev);
-                }
-
-                if (p === pages - 1) {
-                  var next = $('<span/>').addClass(className.next).appendTo(cell);
-                  next.data(metadata.focusDate, nextDate);
-                  next.toggleClass(className.disabledCell, !module.helper.isDateInRange(nextFirst, mode));
-                  $('<i/>').addClass(className.nextIcon).appendTo(next);
-                }
-                if (isDay) {
-                  row = $('<tr/>').appendTo(thead);
-                  if(settings.showWeekNumbers) {
-                      cell = $('<th/>').appendTo(row);
-                      cell.text(settings.text.weekNo);
-                      cell.addClass(className.weekCell);
-                      textColumns--;
-                  }
-                  for (i = 0; i < textColumns; i++) {
-                    cell = $('<th/>').appendTo(row);
-                    cell.text(formatter.dayColumnHeader((i + settings.firstDayOfWeek) % 7, settings));
-                  }
-                }
-              }
-
-              var tbody = $('<tbody/>').appendTo(table);
-              i = isYear ? Math.ceil(year / 10) * 10 - 9 : isDay ? 1 - firstMonthDayColumn : 0;
-              for (r = 0; r < rows; r++) {
-                row = $('<tr/>').appendTo(tbody);
-                if(isDay && settings.showWeekNumbers){
-                    cell = $('<th/>').appendTo(row);
-                    cell.text(module.get.weekOfYear(year,month,i+1-settings.firstDayOfWeek));
-                    cell.addClass(className.weekCell);
-                }
-                for (c = 0; c < textColumns; c++, i++) {
-                  var cellDate = isYear ? new Date(i, month, 1, hour, minute) :
-                    isMonth ? new Date(year, i, 1, hour, minute) : isDay ? new Date(year, month, i, hour, minute) :
-                      isHour ? new Date(year, month, day, i) : new Date(year, month, day, hour, i * settings.minTimeGap);
-                  var cellText = isYear ? i :
-                    isMonth ? settings.text.monthsShort[i] : isDay ? cellDate.getDate() :
-                      formatter.time(cellDate, settings, true);
-                  cell = $('<td/>').addClass(className.cell).appendTo(row);
-                  cell.text(cellText);
-                  cell.data(metadata.date, cellDate);
-                  var adjacent = isDay && cellDate.getMonth() !== ((month + 12) % 12);
-                  var disabled = (!settings.selectAdjacentDays && adjacent) || !module.helper.isDateInRange(cellDate, mode) || settings.isDisabled(cellDate, mode) || module.helper.isDisabled(cellDate, mode) || !module.helper.isEnabled(cellDate, mode);
-                  if (disabled) {
-                    var disabledDate = module.helper.findDayAsObject(cellDate, mode, settings.disabledDates);
-                    if (disabledDate !== null && disabledDate[metadata.message]) {
-                      cell.attr("data-tooltip", disabledDate[metadata.message]);
-                      cell.attr("data-position", tooltipPosition);
-                    }
-                  } else {
-                    var eventDate = module.helper.findDayAsObject(cellDate, mode, settings.eventDates);
-                    if (eventDate !== null) {
-                      cell.addClass(eventDate[metadata.class] || settings.eventClass);
-                      if (eventDate[metadata.message]) {
-                        cell.attr("data-tooltip", eventDate[metadata.message]);
-                        cell.attr("data-position", tooltipPosition);
-                      }
-                    }
-                  }
-                  var active = module.helper.dateEqual(cellDate, date, mode);
-                  var isToday = module.helper.dateEqual(cellDate, today, mode);
-                  cell.toggleClass(className.adjacentCell, adjacent);
-                  cell.toggleClass(className.disabledCell, disabled);
-                  cell.toggleClass(className.activeCell, active && !adjacent);
-                  if (!isHour && !isMinute) {
-                    cell.toggleClass(className.todayCell, !adjacent && isToday);
-                  }
-
-                  // Allow for external modifications of each cell
-                  var cellOptions = {
-                    mode: mode,
-                    adjacent: adjacent,
-                    disabled: disabled,
-                    active: active,
-                    today: isToday
-                  };
-                  formatter.cell(cell, cellDate, cellOptions);
-
-                  if (module.helper.dateEqual(cellDate, focusDate, mode)) {
-                    //ensure that the focus date is exactly equal to the cell date
-                    //so that, if selected, the correct value is set
-                    module.set.focusDate(cellDate, false, false);
-                  }
-                }
-              }
-
-              if (settings.today) {
-                var todayRow = $('<tr/>').appendTo(tbody);
-                var todayButton = $('<td/>').attr('colspan', '' + columns).addClass(className.today).appendTo(todayRow);
-                todayButton.text(formatter.today(settings));
-                todayButton.data(metadata.date, today);
-              }
-
-              module.update.focus(false, table);
-            }
-          }
-        },
-
-        update: {
-          focus: function (updateRange, container) {
-            container = container || $container;
-            var mode = module.get.mode();
-            var date = module.get.date();
-            var focusDate = module.get.focusDate();
-            var startDate = module.get.startDate();
-            var endDate = module.get.endDate();
-            var rangeDate = (updateRange ? focusDate : null) || date || (!isTouch ? focusDate : null);
-
-            container.find('td').each(function () {
-              var cell = $(this);
-              var cellDate = cell.data(metadata.date);
-              if (!cellDate) {
-                return;
-              }
-              var disabled = cell.hasClass(className.disabledCell);
-              var active = cell.hasClass(className.activeCell);
-              var adjacent = cell.hasClass(className.adjacentCell);
-              var focused = module.helper.dateEqual(cellDate, focusDate, mode);
-              var inRange = !rangeDate ? false :
-                ((!!startDate && module.helper.isDateInRange(cellDate, mode, startDate, rangeDate)) ||
-                (!!endDate && module.helper.isDateInRange(cellDate, mode, rangeDate, endDate)));
-              cell.toggleClass(className.focusCell, focused && (!isTouch || isTouchDown) && (!adjacent || (settings.selectAdjacentDays && adjacent)) && !disabled);
-              cell.toggleClass(className.rangeCell, inRange && !active && !disabled);
-            });
-          }
-        },
-
-        refresh: function () {
-          module.create.calendar();
-        },
-
-        bind: {
-          events: function () {
-            module.debug('Binding events');
-            $container.on('mousedown' + eventNamespace, module.event.mousedown);
-            $container.on('touchstart' + eventNamespace, module.event.mousedown);
-            $container.on('mouseup' + eventNamespace, module.event.mouseup);
-            $container.on('touchend' + eventNamespace, module.event.mouseup);
-            $container.on('mouseover' + eventNamespace, module.event.mouseover);
-            if ($input.length) {
-              $input.on('input' + eventNamespace, module.event.inputChange);
-              $input.on('focus' + eventNamespace, module.event.inputFocus);
-              $input.on('blur' + eventNamespace, module.event.inputBlur);
-              $input.on('click' + eventNamespace, module.event.inputClick);
-              $input.on('keydown' + eventNamespace, module.event.keydown);
-            } else {
-              $container.on('keydown' + eventNamespace, module.event.keydown);
-            }
-          }
-        },
-
-        unbind: {
-          events: function () {
-            module.debug('Unbinding events');
-            $container.off(eventNamespace);
-            if ($input.length) {
-              $input.off(eventNamespace);
-            }
-          }
-        },
-
-        event: {
-          mouseover: function (event) {
-            var target = $(event.target);
-            var date = target.data(metadata.date);
-            var mousedown = event.buttons === 1;
-            if (date) {
-              module.set.focusDate(date, false, true, mousedown);
-            }
-          },
-          mousedown: function (event) {
-            if ($input.length) {
-              //prevent the mousedown on the calendar causing the input to lose focus
-              event.preventDefault();
-            }
-            isTouchDown = event.type.indexOf('touch') >= 0;
-            var target = $(event.target);
-            var date = target.data(metadata.date);
-            if (date) {
-              module.set.focusDate(date, false, true, true);
-            }
-          },
-          mouseup: function (event) {
-            //ensure input has focus so that it receives keydown events for calendar navigation
-            module.focus();
-            event.preventDefault();
-            event.stopPropagation();
-            isTouchDown = false;
-            var target = $(event.target);
-            if (target.hasClass("disabled")) {
-              return;
-            }
-            var parent = target.parent();
-            if (parent.data(metadata.date) || parent.data(metadata.focusDate) || parent.data(metadata.mode)) {
-              //clicked on a child element, switch to parent (used when clicking directly on prev/next <i> icon element)
-              target = parent;
-            }
-            var date = target.data(metadata.date);
-            var focusDate = target.data(metadata.focusDate);
-            var mode = target.data(metadata.mode);
-            if (date && settings.onSelect.call(element, date, module.get.mode()) !== false) {
-              var forceSet = target.hasClass(className.today);
-              module.selectDate(date, forceSet);
-            }
-            else if (focusDate) {
-              module.set.focusDate(focusDate);
-            }
-            else if (mode) {
-              module.set.mode(mode);
-            }
-          },
-          keydown: function (event) {
-            var keyCode = event.which;
-            if (keyCode === 27 || keyCode === 9) {
-              //esc || tab
-              module.popup('hide');
-            }
-
-            if (module.popup('is visible')) {
-              if (keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) {
-                //arrow keys
-                var mode = module.get.mode();
-                var bigIncrement = mode === 'day' ? 7 : mode === 'hour' ? 4 : mode === 'minute' ? timeGap['column'] : 3;
-                var increment = keyCode === 37 ? -1 : keyCode === 38 ? -bigIncrement : keyCode == 39 ? 1 : bigIncrement;
-                increment *= mode === 'minute' ? settings.minTimeGap : 1;
-                var focusDate = module.get.focusDate() || module.get.date() || new Date();
-                var year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);
-                var month = focusDate.getMonth() + (mode === 'month' ? increment : 0);
-                var day = focusDate.getDate() + (mode === 'day' ? increment : 0);
-                var hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);
-                var minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);
-                var newFocusDate = new Date(year, month, day, hour, minute);
-                if (settings.type === 'time') {
-                  newFocusDate = module.helper.mergeDateTime(focusDate, newFocusDate);
-                }
-                if (module.helper.isDateInRange(newFocusDate, mode)) {
-                  module.set.focusDate(newFocusDate);
-                }
-              } else if (keyCode === 13) {
-                //enter
-                var mode = module.get.mode();
-                var date = module.get.focusDate();
-                if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode)) {
-                  module.selectDate(date);
-                }
-                //disable form submission:
-                event.preventDefault();
-                event.stopPropagation();
-              }
-            }
-
-            if (keyCode === 38 || keyCode === 40) {
-              //arrow-up || arrow-down
-              event.preventDefault(); //don't scroll
-              module.popup('show');
-            }
-          },
-          inputChange: function () {
-            var val = $input.val();
-            var date = parser.date(val, settings);
-            module.set.date(date, false);
-          },
-          inputFocus: function () {
-            $container.addClass(className.active);
-          },
-          inputBlur: function () {
-            $container.removeClass(className.active);
-            if (settings.formatInput) {
-              var date = module.get.date();
-              var text = formatter.datetime(date, settings);
-              $input.val(text);
-            }
-          },
-          inputClick: function () {
-            module.popup('show');
-          }
-        },
-
-        get: {
-          weekOfYear: function(weekYear,weekMonth,weekDay) {
-              // adapted from http://www.merlyn.demon.co.uk/weekcalc.htm
-              var ms1d = 864e5, // milliseconds in a day
-                  ms7d = 7 * ms1d; // milliseconds in a week
-
-              return function() { // return a closure so constants get calculated only once
-                  var DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d, // an Absolute Day Number
-                      AWN = Math.floor(DC3 / 7), // an Absolute Week Number
-                      Wyr = new Date(AWN * ms7d).getUTCFullYear();
-
-                  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
-              }();
-          },
-          date: function () {
-            return module.helper.sanitiseDate($module.data(metadata.date)) || null;
-          },
-          inputDate: function() {
-            return $input.val();
-          },
-          focusDate: function () {
-            return $module.data(metadata.focusDate) || null;
-          },
-          startDate: function () {
-            var startModule = module.get.calendarModule(settings.startCalendar);
-            return (startModule ? startModule.get.date() : $module.data(metadata.startDate)) || null;
-          },
-          endDate: function () {
-            var endModule = module.get.calendarModule(settings.endCalendar);
-            return (endModule ? endModule.get.date() : $module.data(metadata.endDate)) || null;
-          },
-          minDate: function() {
-            return $module.data(metadata.minDate) || null;
-          },
-          maxDate: function() {
-            return $module.data(metadata.maxDate) || null;
-          },
-          monthOffset: function () {
-            return $module.data(metadata.monthOffset) || 0;
-          },
-          mode: function () {
-            //only returns valid modes for the current settings
-            var mode = $module.data(metadata.mode) || settings.startMode;
-            var validModes = module.get.validModes();
-            if ($.inArray(mode, validModes) >= 0) {
-              return mode;
-            }
-            return settings.type === 'time' ? 'hour' :
-              settings.type === 'month' ? 'month' :
-                settings.type === 'year' ? 'year' : 'day';
-          },
-          validModes: function () {
-            var validModes = [];
-            if (settings.type !== 'time') {
-              if (!settings.disableYear || settings.type === 'year') {
-                validModes.push('year');
-              }
-              if (!(settings.disableMonth || settings.type === 'year') || settings.type === 'month') {
-                validModes.push('month');
-              }
-              if (settings.type.indexOf('date') >= 0) {
-                validModes.push('day');
-              }
-            }
-            if (settings.type.indexOf('time') >= 0) {
-              validModes.push('hour');
-              if (!settings.disableMinute) {
-                validModes.push('minute');
-              }
-            }
-            return validModes;
-          },
-          isTouch: function () {
-            try {
-              document.createEvent('TouchEvent');
-              return true;
-            }
-            catch (e) {
-              return false;
-            }
-          },
-          calendarModule: function (selector) {
-            if (!selector) {
-              return null;
-            }
-            if (!(selector instanceof $)) {
-              selector = $(selector).first();
-            }
-            //assume range related calendars are using the same namespace
-            return selector.data(moduleNamespace);
-          }
-        },
-
-        set: {
-          date: function (date, updateInput, fireChange) {
-            updateInput = updateInput !== false;
-            fireChange = fireChange !== false;
-            date = module.helper.sanitiseDate(date);
-            date = module.helper.dateInRange(date);
-
-            var mode = module.get.mode();
-            var text = formatter.datetime(date, settings);
-            if (fireChange && settings.onChange.call(element, date, text, mode) === false) {
-              return false;
-            }
-
-            module.set.focusDate(date);
-
-            if (settings.isDisabled(date, mode)) {
-              return false;
-            }
-
-            var endDate = module.get.endDate();
-            if (!!endDate && !!date && date > endDate) {
-              //selected date is greater than end date in range, so clear end date
-              module.set.endDate(undefined);
-            }
-            module.set.dataKeyValue(metadata.date, date);
-
-            if (updateInput && $input.length) {
-              $input.val(text);
-            }
-          },
-          startDate: function (date, refreshCalendar) {
-            date = module.helper.sanitiseDate(date);
-            var startModule = module.get.calendarModule(settings.startCalendar);
-            if (startModule) {
-              startModule.set.date(date);
-            }
-            module.set.dataKeyValue(metadata.startDate, date, refreshCalendar);
-          },
-          endDate: function (date, refreshCalendar) {
-            date = module.helper.sanitiseDate(date);
-            var endModule = module.get.calendarModule(settings.endCalendar);
-            if (endModule) {
-              endModule.set.date(date);
-            }
-            module.set.dataKeyValue(metadata.endDate, date, refreshCalendar);
-          },
-          focusDate: function (date, refreshCalendar, updateFocus, updateRange) {
-            date = module.helper.sanitiseDate(date);
-            date = module.helper.dateInRange(date);
-            var isDay = module.get.mode() === 'day';
-            var oldFocusDate = module.get.focusDate();
-            if (isDay && date && oldFocusDate) {
-              var yearDelta = date.getFullYear() - oldFocusDate.getFullYear();
-              var monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();
-              if (monthDelta) {
-                var monthOffset = module.get.monthOffset() - monthDelta;
-                module.set.monthOffset(monthOffset, false);
-              }
-            }
-            var changed = module.set.dataKeyValue(metadata.focusDate, date, refreshCalendar);
-            updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;
-            focusDateUsedForRange = updateRange;
-            if (updateFocus) {
-              module.update.focus(updateRange);
-            }
-          },
-          minDate: function (date) {
-            date = module.helper.sanitiseDate(date);
-            if (settings.maxDate !== null && settings.maxDate <= date) {
-              module.verbose('Unable to set minDate variable bigger that maxDate variable', date, settings.maxDate);
-            } else {
-              module.setting('minDate', date);
-              module.set.dataKeyValue(metadata.minDate, date);
-            }
-          },
-          maxDate: function (date) {
-            date = module.helper.sanitiseDate(date);
-            if (settings.minDate !== null && settings.minDate >= date) {
-              module.verbose('Unable to set maxDate variable lower that minDate variable', date, settings.minDate);
-            } else {
-              module.setting('maxDate', date);
-              module.set.dataKeyValue(metadata.maxDate, date);
-            }
-          },
-          monthOffset: function (monthOffset, refreshCalendar) {
-            var multiMonth = Math.max(settings.multiMonth, 1);
-            monthOffset = Math.max(1 - multiMonth, Math.min(0, monthOffset));
-            module.set.dataKeyValue(metadata.monthOffset, monthOffset, refreshCalendar);
-          },
-          mode: function (mode, refreshCalendar) {
-            module.set.dataKeyValue(metadata.mode, mode, refreshCalendar);
-          },
-          dataKeyValue: function (key, value, refreshCalendar) {
-            var oldValue = $module.data(key);
-            var equal = oldValue === value || (oldValue <= value && oldValue >= value); //equality test for dates and string objects
-            if (value) {
-              $module.data(key, value);
-            } else {
-              $module.removeData(key);
-            }
-            refreshCalendar = refreshCalendar !== false && !equal;
-            if (refreshCalendar) {
-              module.refresh();
-            }
-            return !equal;
-          }
-        },
-
-        selectDate: function (date, forceSet) {
-          module.verbose('New date selection', date);
-          var mode = module.get.mode();
-          var complete = forceSet || mode === 'minute' ||
-            (settings.disableMinute && mode === 'hour') ||
-            (settings.type === 'date' && mode === 'day') ||
-            (settings.type === 'month' && mode === 'month') ||
-            (settings.type === 'year' && mode === 'year');
-          if (complete) {
-            var canceled = module.set.date(date) === false;
-            if (!canceled && settings.closable) {
-              module.popup('hide');
-              //if this is a range calendar, show the end date calendar popup and focus the input
-              var endModule = module.get.calendarModule(settings.endCalendar);
-              if (endModule) {
-                endModule.popup('show');
-                endModule.focus();
-              }
-            }
-          } else {
-            var newMode = mode === 'year' ? (!settings.disableMonth ? 'month' : 'day') :
-              mode === 'month' ? 'day' : mode === 'day' ? 'hour' : 'minute';
-            module.set.mode(newMode);
-            if (mode === 'hour' || (mode === 'day' && module.get.date())) {
-              //the user has chosen enough to consider a valid date/time has been chosen
-              module.set.date(date);
-            } else {
-              module.set.focusDate(date);
-            }
-          }
-        },
-
-        changeDate: function (date) {
-          module.set.date(date);
-        },
-
-        clear: function () {
-          module.set.date(undefined);
-        },
-
-        popup: function () {
-          return $activator.popup.apply($activator, arguments);
-        },
-
-        focus: function () {
-          if ($input.length) {
-            $input.focus();
-          } else {
-            $container.focus();
-          }
-        },
-        blur: function () {
-          if ($input.length) {
-            $input.blur();
-          } else {
-            $container.blur();
-          }
-        },
-
-        helper: {
-          isDisabled: function(date, mode) {
-            return mode === 'day' && ((settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
-              if(typeof d === 'string') {
-                d = module.helper.sanitiseDate(d);
-              }
-              if (d instanceof Date) {
-                return module.helper.dateEqual(date, d, mode);
-              }
-              if (d !== null && typeof d === 'object' && d[metadata.date]) {
-                return module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]), mode);
-              }
-            }));
-          },
-          isEnabled: function(date, mode) {
-            if (mode === 'day') {
-              return settings.enabledDates.length === 0 || settings.enabledDates.some(function(d){
-                if(typeof d === 'string') {
-                  d = module.helper.sanitiseDate(d);
-                }
-                if (d instanceof Date) {
-                  return module.helper.dateEqual(date, d, mode);
-                }
-                if (d !== null && typeof d === 'object' && d[metadata.date]) {
-                  return module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]), mode);
-                }
-              });
-            } else {
-              return true;
-            }
-          },
-          findDayAsObject: function(date, mode, dates) {
-            if (mode === 'day') {
-              var i = 0, il = dates.length;
-              var d;
-              for (; i < il; i++) {
-                d = dates[i];
-                if(typeof d === 'string') {
-                  d = module.helper.sanitiseDate(d);
-                }
-                if (d instanceof Date && module.helper.dateEqual(date, d, mode)) {
-                  var dateObject = {};
-                  dateObject[metadata.date] = d;
-                  return dateObject;
-                }
-                else if (d !== null && typeof d === 'object' && d[metadata.date] && module.helper.dateEqual(date,module.helper.sanitiseDate(d[metadata.date]), mode)  ) {
-                  return d;
-                }
-              }
-            }
-            return null;
-          },
-          sanitiseDate: function (date) {
-            if (!date) {
-              return undefined;
-            }
-            if (!(date instanceof Date)) {
-              date = parser.date('' + date, settings);
-            }
-            if (!date || date === null || isNaN(date.getTime())) {
-              return undefined;
-            }
-            return date;
-          },
-          dateDiff: function (date1, date2, mode) {
-            mode = mode || 'day';
-            var isTimeOnly = settings.type === 'time';
-            var isYear = mode === 'year';
-            var isYearOrMonth = isYear || mode === 'month';
-            var isMinute = mode === 'minute';
-            var isHourOrMinute = isMinute || mode === 'hour';
-            //only care about a minute accuracy of settings.minTimeGap
-            date1 = new Date(
-              isTimeOnly ? 2000 : date1.getFullYear(),
-              isTimeOnly ? 0 : isYear ? 0 : date1.getMonth(),
-              isTimeOnly ? 1 : isYearOrMonth ? 1 : date1.getDate(),
-              !isHourOrMinute ? 0 : date1.getHours(),
-              !isMinute ? 0 : settings.minTimeGap * Math.floor(date1.getMinutes() / settings.minTimeGap));
-            date2 = new Date(
-              isTimeOnly ? 2000 : date2.getFullYear(),
-              isTimeOnly ? 0 : isYear ? 0 : date2.getMonth(),
-              isTimeOnly ? 1 : isYearOrMonth ? 1 : date2.getDate(),
-              !isHourOrMinute ? 0 : date2.getHours(),
-              !isMinute ? 0 : settings.minTimeGap * Math.floor(date2.getMinutes() / settings.minTimeGap));
-            return date2.getTime() - date1.getTime();
-          },
-          dateEqual: function (date1, date2, mode) {
-            return !!date1 && !!date2 && module.helper.dateDiff(date1, date2, mode) === 0;
-          },
-          isDateInRange: function (date, mode, minDate, maxDate) {
-            if (!minDate && !maxDate) {
-              var startDate = module.get.startDate();
-              minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
-              maxDate = settings.maxDate;
-            }
-            minDate = minDate && new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), minDate.getHours(), settings.minTimeGap * Math.ceil(minDate.getMinutes() / settings.minTimeGap));
-            return !(!date ||
-            (minDate && module.helper.dateDiff(date, minDate, mode) > 0) ||
-            (maxDate && module.helper.dateDiff(maxDate, date, mode) > 0));
-          },
-          dateInRange: function (date, minDate, maxDate) {
-            if (!minDate && !maxDate) {
-              var startDate = module.get.startDate();
-              minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
-              maxDate = settings.maxDate;
-            }
-            minDate = minDate && new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), minDate.getHours(), settings.minTimeGap * Math.ceil(minDate.getMinutes() / settings.minTimeGap));
-            var isTimeOnly = settings.type === 'time';
-            return !date ? date :
-              (minDate && module.helper.dateDiff(date, minDate, 'minute') > 0) ?
-                (isTimeOnly ? module.helper.mergeDateTime(date, minDate) : minDate) :
-                (maxDate && module.helper.dateDiff(maxDate, date, 'minute') > 0) ?
-                  (isTimeOnly ? module.helper.mergeDateTime(date, maxDate) : maxDate) :
-                  date;
-          },
-          mergeDateTime: function (date, time) {
-            return (!date || !time) ? time :
-              new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes());
-          }
-        },
-
-        setting: function (name, value) {
-          module.debug('Changing setting', name, value);
-          if ($.isPlainObject(name)) {
-            $.extend(true, settings, name);
-          }
-          else if (value !== undefined) {
-            if ($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function (name, value) {
-          if( $.isPlainObject(name) ) {
-            $.extend(true, module, name);
-          }
-          else if(value !== undefined) {
-            module[name] = value;
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function () {
-          if (!settings.silent && settings.debug) {
-            if (settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function () {
-          if (!settings.silent && settings.verbose && settings.debug) {
-            if (settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function () {
-          if (!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function (message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-              ;
-            if (settings.performance) {
-              currentTime = new Date().getTime();
-              previousTime = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time = currentTime;
-              performance.push({
-                'Name': message[0],
-                'Arguments': [].slice.call(message, 1) || '',
-                'Element': element,
-                'Execution Time': executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function () {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-              ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function (index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if (moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if ((console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if (console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function (index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time'] + 'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function (query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-            ;
-          passedArguments = passedArguments || queryArguments;
-          context = element || context;
-          if (typeof query == 'string' && object !== undefined) {
-            query = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function (depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                  : query
-                ;
-              if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
-                object = object[camelCaseValue];
-              }
-              else if (object[camelCaseValue] !== undefined) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
-                object = object[value];
-              }
-              else if (object[value] !== undefined) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ($.isFunction(found)) {
-            response = found.apply(context, passedArguments);
-          }
-          else if (found !== undefined) {
-            response = found;
-          }
-          if (Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if (returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if (response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-
-      if (methodInvoked) {
-        if (instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if (instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : this
-    ;
-};
-
-$.fn.calendar.settings = {
-
-  name            : 'Calendar',
-  namespace       : 'calendar',
-
-  silent: false,
-  debug: false,
-  verbose: false,
-  performance: false,
-
-  type               : 'datetime', // picker type, can be 'datetime', 'date', 'time', 'month', or 'year'
-  firstDayOfWeek     : 0,          // day for first day column (0 = Sunday)
-  constantHeight     : true,       // add rows to shorter months to keep day calendar height consistent (6 rows)
-  today              : false,      // show a 'today/now' button at the bottom of the calendar
-  closable           : true,       // close the popup after selecting a date/time
-  monthFirst         : true,       // month before day when parsing/converting date from/to text
-  touchReadonly      : true,       // set input to readonly on touch devices
-  inline             : false,      // create the calendar inline instead of inside a popup
-  on                 : null,       // when to show the popup (defaults to 'focus' for input, 'click' for others)
-  initialDate        : null,       // date to display initially when no date is selected (null = now)
-  startMode          : false,      // display mode to start in, can be 'year', 'month', 'day', 'hour', 'minute' (false = 'day')
-  minDate            : null,       // minimum date/time that can be selected, dates/times before are disabled
-  maxDate            : null,       // maximum date/time that can be selected, dates/times after are disabled
-  ampm               : true,       // show am/pm in time mode
-  disableYear        : false,      // disable year selection mode
-  disableMonth       : false,      // disable month selection mode
-  disableMinute      : false,      // disable minute selection mode
-  formatInput        : true,       // format the input text upon input blur and module creation
-  startCalendar      : null,       // jquery object or selector for another calendar that represents the start date of a date range
-  endCalendar        : null,       // jquery object or selector for another calendar that represents the end date of a date range
-  multiMonth         : 1,          // show multiple months when in 'day' mode
-  minTimeGap         : 5,
-  showWeekNumbers    : null,       // show Number of Week at the very first column of a dayView
-  disabledDates      : [],         // specific day(s) which won't be selectable and contain additional information.
-  disabledDaysOfWeek : [],         // day(s) which won't be selectable(s) (0 = Sunday)
-  enabledDates       : [],         // specific day(s) which will be selectable, all other days will be disabled
-  eventDates         : [],         // specific day(s) which will be shown in a different color and using tooltips
-  centuryBreak       : 60,         // starting short year until 99 where it will be assumed to belong to the last century
-  currentCentury     : 2000,       // century to be added to 2-digit years (00 to {centuryBreak}-1)
-  selectAdjacentDays : false,     // The calendar can show dates from adjacent month. These adjacent month dates can also be made selectable.
-  // popup options ('popup', 'on', 'hoverable', and show/hide callbacks are overridden)
-  popupOptions: {
-    position: 'bottom left',
-    lastResort: 'bottom left',
-    prefer: 'opposite',
-    hideOnScroll: false
-  },
-
-  text: {
-    days: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
-    months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
-    monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
-    today: 'Today',
-    now: 'Now',
-    am: 'AM',
-    pm: 'PM',
-    weekNo: 'Week'
-  },
-
-  formatter: {
-    header: function (date, mode, settings) {
-      return mode === 'year' ? settings.formatter.yearHeader(date, settings) :
-        mode === 'month' ? settings.formatter.monthHeader(date, settings) :
-          mode === 'day' ? settings.formatter.dayHeader(date, settings) :
-            mode === 'hour' ? settings.formatter.hourHeader(date, settings) :
-              settings.formatter.minuteHeader(date, settings);
-    },
-    yearHeader: function (date, settings) {
-      var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
-      return (decadeYear - 9) + ' - ' + (decadeYear + 2);
-    },
-    monthHeader: function (date, settings) {
-      return date.getFullYear();
-    },
-    dayHeader: function (date, settings) {
-      var month = settings.text.months[date.getMonth()];
-      var year = date.getFullYear();
-      return month + ' ' + year;
-    },
-    hourHeader: function (date, settings) {
-      return settings.formatter.date(date, settings);
-    },
-    minuteHeader: function (date, settings) {
-      return settings.formatter.date(date, settings);
-    },
-    dayColumnHeader: function (day, settings) {
-      return settings.text.days[day];
-    },
-    datetime: function (date, settings) {
-      if (!date) {
-        return '';
-      }
-      var day = settings.type === 'time' ? '' : settings.formatter.date(date, settings);
-      var time = settings.type.indexOf('time') < 0 ? '' : settings.formatter.time(date, settings, false);
-      var separator = settings.type === 'datetime' ? ' ' : '';
-      return day + separator + time;
-    },
-    date: function (date, settings) {
-      if (!date) {
-        return '';
-      }
-      var day = date.getDate();
-      var month = settings.text.months[date.getMonth()];
-      var year = date.getFullYear();
-      return settings.type === 'year' ? year :
-        settings.type === 'month' ? month + ' ' + year :
-        (settings.monthFirst ? month + ' ' + day : day + ' ' + month) + ', ' + year;
-    },
-    time: function (date, settings, forCalendar) {
-      if (!date) {
-        return '';
-      }
-      var hour = date.getHours();
-      var minute = date.getMinutes();
-      var ampm = '';
-      if (settings.ampm) {
-        ampm = ' ' + (hour < 12 ? settings.text.am : settings.text.pm);
-        hour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;
-      }
-      return hour + ':' + (minute < 10 ? '0' : '') + minute + ampm;
-    },
-    today: function (settings) {
-      return settings.type === 'date' ? settings.text.today : settings.text.now;
-    },
-    cell: function (cell, date, cellOptions) {
-    }
-  },
-
-  parser: {
-    date: function (text, settings) {
-      if (text instanceof Date) {
-        return text;
-      }
-      if (!text) {
-        return null;
-      }
-      text = ('' + text).trim().toLowerCase();
-      if (text.length === 0) {
-        return null;
-      }
-      var textDate = new Date(text);
-      if(!isNaN(textDate.getDate())) {
-        return textDate;
-      }
-
-      var i, j, k;
-      var minute = -1, hour = -1, day = -1, month = -1, year = -1;
-      var isAm = undefined;
-
-      var isTimeOnly = settings.type === 'time';
-      var isDateOnly = settings.type.indexOf('time') < 0;
-
-      var words = text.split(settings.regExp.dateWords);
-      var numbers = text.split(settings.regExp.dateNumbers);
-
-      if (!isDateOnly) {
-        //am/pm
-        isAm = $.inArray(settings.text.am.toLowerCase(), words) >= 0 ? true :
-          $.inArray(settings.text.pm.toLowerCase(), words) >= 0 ? false : undefined;
-
-        //time with ':'
-        for (i = 0; i < numbers.length; i++) {
-          var number = numbers[i];
-          if (number.indexOf(':') >= 0) {
-            if (hour < 0 || minute < 0) {
-              var parts = number.split(':');
-              for (k = 0; k < Math.min(2, parts.length); k++) {
-                j = parseInt(parts[k]);
-                if (isNaN(j)) {
-                  j = 0;
-                }
-                if (k === 0) {
-                  hour = j % 24;
-                } else {
-                  minute = j % 60;
-                }
-              }
-            }
-            numbers.splice(i, 1);
-          }
-        }
-      }
-
-      if (!isTimeOnly) {
-        //textual month
-        for (i = 0; i < words.length; i++) {
-          var word = words[i];
-          if (word.length <= 0) {
-            continue;
-          }
-          word = word.substring(0, Math.min(word.length, 3));
-          for (j = 0; j < settings.text.months.length; j++) {
-            var monthString = settings.text.months[j];
-            monthString = monthString.substring(0, Math.min(word.length, Math.min(monthString.length, 3))).toLowerCase();
-            if (monthString === word) {
-              month = j + 1;
-              break;
-            }
-          }
-          if (month >= 0) {
-            break;
-          }
-        }
-
-        //year > settings.centuryBreak
-        for (i = 0; i < numbers.length; i++) {
-          j = parseInt(numbers[i]);
-          if (isNaN(j)) {
-            continue;
-          }
-          if (j >= settings.centuryBreak && i === numbers.length-1) {
-            if (j <= 99) {
-              j += settings.currentCentury - 100;
-            }
-            year = j;
-            numbers.splice(i, 1);
-            break;
-          }
-        }
-
-        //numeric month
-        if (month < 0) {
-          for (i = 0; i < numbers.length; i++) {
-            k = i > 1 || settings.monthFirst ? i : i === 1 ? 0 : 1;
-            j = parseInt(numbers[k]);
-            if (isNaN(j)) {
-              continue;
-            }
-            if (1 <= j && j <= 12) {
-              month = j;
-              numbers.splice(k, 1);
-              break;
-            }
-          }
-        }
-
-        //day
-        for (i = 0; i < numbers.length; i++) {
-          j = parseInt(numbers[i]);
-          if (isNaN(j)) {
-            continue;
-          }
-          if (1 <= j && j <= 31) {
-            day = j;
-            numbers.splice(i, 1);
-            break;
-          }
-        }
-
-        //year <= settings.centuryBreak
-        if (year < 0) {
-          for (i = numbers.length - 1; i >= 0; i--) {
-            j = parseInt(numbers[i]);
-            if (isNaN(j)) {
-              continue;
-            }
-            if (j <= 99) {
-              j += settings.currentCentury;
-            }
-            year = j;
-            numbers.splice(i, 1);
-            break;
-          }
-        }
-      }
-
-      if (!isDateOnly) {
-        //hour
-        if (hour < 0) {
-          for (i = 0; i < numbers.length; i++) {
-            j = parseInt(numbers[i]);
-            if (isNaN(j)) {
-              continue;
-            }
-            if (0 <= j && j <= 23) {
-              hour = j;
-              numbers.splice(i, 1);
-              break;
-            }
-          }
-        }
-
-        //minute
-        if (minute < 0) {
-          for (i = 0; i < numbers.length; i++) {
-            j = parseInt(numbers[i]);
-            if (isNaN(j)) {
-              continue;
-            }
-            if (0 <= j && j <= 59) {
-              minute = j;
-              numbers.splice(i, 1);
-              break;
-            }
-          }
-        }
-      }
-
-      if (minute < 0 && hour < 0 && day < 0 && month < 0 && year < 0) {
-        return null;
-      }
-
-      if (minute < 0) {
-        minute = 0;
-      }
-      if (hour < 0) {
-        hour = 0;
-      }
-      if (day < 0) {
-        day = 1;
-      }
-      if (month < 0) {
-        month = 1;
-      }
-      if (year < 0) {
-        year = new Date().getFullYear();
-      }
-
-      if (isAm !== undefined) {
-        if (isAm) {
-          if (hour === 12) {
-            hour = 0;
-          }
-        } else if (hour < 12) {
-          hour += 12;
-        }
-      }
-
-      var date = new Date(year, month - 1, day, hour, minute);
-      if (date.getMonth() !== month - 1 || date.getFullYear() !== year) {
-        //month or year don't match up, switch to last day of the month
-        date = new Date(year, month, 0, hour, minute);
-      }
-      return isNaN(date.getTime()) ? null : date;
-    }
-  },
-
-  // callback when date changes, return false to cancel the change
-  onChange: function (date, text, mode) {
-    return true;
-  },
-
-  // callback before show animation, return false to prevent show
-  onShow: function () {
-  },
-
-  // callback after show animation
-  onVisible: function () {
-  },
-
-  // callback before hide animation, return false to prevent hide
-  onHide: function () {
-  },
-
-  // callback after hide animation
-  onHidden: function () {
-  },
-
-  // callback before item is selected, return false to prevent selection
-  onSelect: function (date, mode) {
-  },
-
-  // is the given date disabled?
-  isDisabled: function (date, mode) {
-    return false;
-  },
-
-  selector: {
-    popup: '.ui.popup',
-    input: 'input',
-    activator: 'input',
-    append: '.inline.field,.inline.fields'
-  },
-
-  regExp: {
-    dateWords: /[^A-Za-z\u00C0-\u024F]+/g,
-    dateNumbers: /[^\d:]+/g
-  },
-
-  error: {
-    popup: 'UI Popup, a required component is not included in this page',
-    method: 'The method you called is not defined.'
-  },
-
-  className: {
-    calendar: 'calendar',
-    active: 'active',
-    popup: 'ui popup',
-    grid: 'ui equal width grid',
-    column: 'column',
-    table: 'ui celled center aligned unstackable table',
-    prev: 'prev link',
-    next: 'next link',
-    prevIcon: 'chevron left icon',
-    nextIcon: 'chevron right icon',
-    link: 'link',
-    cell: 'link',
-    disabledCell: 'disabled',
-    weekCell: 'disabled',
-    adjacentCell: 'adjacent',
-    activeCell: 'active',
-    rangeCell: 'range',
-    focusCell: 'focus',
-    todayCell: 'today',
-    today: 'today link'
-  },
-
-  metadata: {
-    date: 'date',
-    focusDate: 'focusDate',
-    startDate: 'startDate',
-    endDate: 'endDate',
-    minDate: 'minDate',
-    maxDate: 'maxDate',
-    mode: 'mode',
-    monthOffset: 'monthOffset',
-    message: 'message',
-    class: 'class'
-  },
-
-  eventClass: 'blue'
-};
-
-})(jQuery, window, document);

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/calendar.min.css


文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/calendar.min.js


+ 0 - 1293
lib/fomantic/components/card.css

@@ -1,1293 +0,0 @@
-/*!
- * # Fomantic-UI - Card
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Standard
-*******************************/
-
-
-/*--------------
-      Card
----------------*/
-
-.ui.cards > .card,
-.ui.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: #FFFFFF;
-  padding: 0;
-  border: none;
-  border-radius: 0.28571429rem;
-  -webkit-box-shadow: 0 1px 3px 0 #D4D4D5, 0 0 0 1px #D4D4D5;
-          box-shadow: 0 1px 3px 0 #D4D4D5, 0 0 0 1px #D4D4D5;
-  -webkit-transition: -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease;
-  transition: -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease;
-  transition: box-shadow 0.1s ease, transform 0.1s ease;
-  transition: box-shadow 0.1s ease, transform 0.1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease;
-  z-index: '';
-  word-wrap: break-word;
-}
-.ui.card {
-  margin: 1em 0;
-}
-.ui.cards > .card a,
-.ui.card a {
-  cursor: pointer;
-}
-.ui.card:first-child {
-  margin-top: 0;
-}
-.ui.card:last-child {
-  margin-bottom: 0;
-}
-
-/*--------------
-      Cards
----------------*/
-
-.ui.cards {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  margin: -0.875em -0.5em;
-  -ms-flex-wrap: wrap;
-      flex-wrap: wrap;
-}
-.ui.cards > .card {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  margin: 0.875em 0.5em;
-  float: none;
-}
-
-/* Clearing */
-.ui.cards:after,
-.ui.card:after {
-  display: block;
-  content: ' ';
-  height: 0;
-  clear: both;
-  overflow: hidden;
-  visibility: hidden;
-}
-
-/* Consecutive Card Groups Preserve Row Spacing */
-.ui.cards ~ .ui.cards {
-  margin-top: 0.875em;
-}
-
-/*--------------
-  Rounded Edges
----------------*/
-
-.ui.cards > .card > :first-child,
-.ui.card > :first-child {
-  border-radius: 0.28571429rem 0.28571429rem 0 0 !important;
-  border-top: none !important;
-}
-.ui.cards > .card > :last-child,
-.ui.card > :last-child {
-  border-radius: 0 0 0.28571429rem 0.28571429rem !important;
-}
-.ui.cards > .card > :only-child,
-.ui.card > :only-child {
-  border-radius: 0.28571429rem !important;
-}
-
-/*--------------
-     Images
----------------*/
-
-.ui.cards > .card > .image,
-.ui.card > .image {
-  position: relative;
-  display: block;
-  -webkit-box-flex: 0;
-      -ms-flex: 0 0 auto;
-          flex: 0 0 auto;
-  padding: 0;
-  background: rgba(0, 0, 0, 0.05);
-}
-.ui.cards > .card > .image > img,
-.ui.card > .image > img {
-  display: block;
-  width: 100%;
-  height: auto;
-  border-radius: inherit;
-}
-.ui.cards > .card > .image:not(.ui) > img,
-.ui.card > .image:not(.ui) > img {
-  border: none;
-}
-
-/*--------------
-     Content
----------------*/
-
-.ui.cards > .card > .content,
-.ui.card > .content {
-  -webkit-box-flex: 1;
-      -ms-flex-positive: 1;
-          flex-grow: 1;
-  border: none;
-  border-top: 1px solid rgba(34, 36, 38, 0.1);
-  background: none;
-  margin: 0;
-  padding: 1em 1em;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  font-size: 1em;
-  border-radius: 0;
-}
-.ui.cards > .card > .content:after,
-.ui.card > .content:after {
-  display: block;
-  content: ' ';
-  height: 0;
-  clear: both;
-  overflow: hidden;
-  visibility: hidden;
-}
-.ui.cards > .card > .content > .header,
-.ui.card > .content > .header {
-  display: block;
-  margin: '';
-  font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
-  color: rgba(0, 0, 0, 0.85);
-}
-
-/* Default Header Size */
-.ui.cards > .card > .content > .header:not(.ui),
-.ui.card > .content > .header:not(.ui) {
-  font-weight: bold;
-  font-size: 1.28571429em;
-  margin-top: -0.21425em;
-  line-height: 1.28571429em;
-}
-.ui.cards > .card > .content > .meta + .description,
-.ui.cards > .card > .content > .header + .description,
-.ui.card > .content > .meta + .description,
-.ui.card > .content > .header + .description {
-  margin-top: 0.5em;
-}
-
-/*----------------
- Floated Content
------------------*/
-
-.ui.cards > .card [class*="left floated"],
-.ui.card [class*="left floated"] {
-  float: left;
-}
-.ui.cards > .card [class*="right floated"],
-.ui.card [class*="right floated"] {
-  float: right;
-}
-
-/*--------------
-     Aligned
----------------*/
-
-.ui.cards > .card [class*="left aligned"],
-.ui.card [class*="left aligned"] {
-  text-align: left;
-}
-.ui.cards > .card [class*="center aligned"],
-.ui.card [class*="center aligned"] {
-  text-align: center;
-}
-.ui.cards > .card [class*="right aligned"],
-.ui.card [class*="right aligned"] {
-  text-align: right;
-}
-
-/*--------------
-  Content Image
----------------*/
-
-.ui.cards > .card .content img,
-.ui.card .content img {
-  display: inline-block;
-  vertical-align: middle;
-  width: '';
-}
-.ui.cards > .card img.avatar,
-.ui.cards > .card .avatar img,
-.ui.card img.avatar,
-.ui.card .avatar img {
-  width: 2em;
-  height: 2em;
-  border-radius: 500rem;
-}
-
-/*--------------
-   Description
----------------*/
-
-.ui.cards > .card > .content > .description,
-.ui.card > .content > .description {
-  clear: both;
-  color: rgba(0, 0, 0, 0.68);
-}
-
-/*--------------
-    Paragraph
----------------*/
-
-.ui.cards > .card > .content p,
-.ui.card > .content p {
-  margin: 0 0 0.5em;
-}
-.ui.cards > .card > .content p:last-child,
-.ui.card > .content p:last-child {
-  margin-bottom: 0;
-}
-
-/*--------------
-      Meta
----------------*/
-
-.ui.cards > .card .meta,
-.ui.card .meta {
-  font-size: 1em;
-  color: rgba(0, 0, 0, 0.4);
-}
-.ui.cards > .card .meta *,
-.ui.card .meta * {
-  margin-right: 0.3em;
-}
-.ui.cards > .card .meta :last-child,
-.ui.card .meta :last-child {
-  margin-right: 0;
-}
-.ui.cards > .card .meta [class*="right floated"],
-.ui.card .meta [class*="right floated"] {
-  margin-right: 0;
-  margin-left: 0.3em;
-}
-
-/*--------------
-      Links
----------------*/
-
-
-/* Generic */
-.ui.cards > .card > .content a:not(.ui),
-.ui.card > .content a:not(.ui) {
-  color: '';
-  -webkit-transition: color 0.1s ease;
-  transition: color 0.1s ease;
-}
-.ui.cards > .card > .content a:not(.ui):hover,
-.ui.card > .content a:not(.ui):hover {
-  color: '';
-}
-
-/* Header */
-.ui.cards > .card > .content > a.header,
-.ui.card > .content > a.header {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ui.cards > .card > .content > a.header:hover,
-.ui.card > .content > a.header:hover {
-  color: #1e70bf;
-}
-
-/* Meta */
-.ui.cards > .card .meta > a:not(.ui),
-.ui.card .meta > a:not(.ui) {
-  color: rgba(0, 0, 0, 0.4);
-}
-.ui.cards > .card .meta > a:not(.ui):hover,
-.ui.card .meta > a:not(.ui):hover {
-  color: rgba(0, 0, 0, 0.87);
-}
-
-/*--------------
-     Buttons
----------------*/
-
-.ui.cards > .card > .buttons,
-.ui.card > .buttons,
-.ui.cards > .card > .button,
-.ui.card > .button {
-  margin: 0 -1px;
-  width: calc(100% + 2px);
-}
-.ui.cards > .card > .buttons:last-child,
-.ui.card > .buttons:last-child,
-.ui.cards > .card > .button:last-child,
-.ui.card > .button:last-child {
-  margin-bottom: -1px;
-}
-
-/*--------------
-      Dimmer
----------------*/
-
-.ui.cards > .card .dimmer,
-.ui.card .dimmer {
-  background-color: '';
-  z-index: 10;
-}
-
-/*--------------
-     Labels
----------------*/
-
-
-/*-----Star----- */
-
-
-/* Icon */
-.ui.cards > .card > .content .star.icon,
-.ui.card > .content .star.icon {
-  cursor: pointer;
-  opacity: 0.75;
-  -webkit-transition: color 0.1s ease;
-  transition: color 0.1s ease;
-}
-.ui.cards > .card > .content .star.icon:hover,
-.ui.card > .content .star.icon:hover {
-  opacity: 1;
-  color: #FFB70A;
-}
-.ui.cards > .card > .content .active.star.icon,
-.ui.card > .content .active.star.icon {
-  color: #FFE623;
-}
-
-/*-----Like----- */
-
-
-/* Icon */
-.ui.cards > .card > .content .like.icon,
-.ui.card > .content .like.icon {
-  cursor: pointer;
-  opacity: 0.75;
-  -webkit-transition: color 0.1s ease;
-  transition: color 0.1s ease;
-}
-.ui.cards > .card > .content .like.icon:hover,
-.ui.card > .content .like.icon:hover {
-  opacity: 1;
-  color: #FF2733;
-}
-.ui.cards > .card > .content .active.like.icon,
-.ui.card > .content .active.like.icon {
-  color: #FF2733;
-}
-
-/*----------------
-  Extra Content
------------------*/
-
-.ui.cards > .card > .extra,
-.ui.card > .extra {
-  max-width: 100%;
-  min-height: 0 !important;
-  -webkit-box-flex: 0;
-      -ms-flex-positive: 0;
-          flex-grow: 0;
-  border-top: 1px solid rgba(0, 0, 0, 0.05) !important;
-  position: static;
-  background: none;
-  width: auto;
-  margin: 0 0;
-  padding: 0.75em 1em;
-  top: 0;
-  left: 0;
-  color: rgba(0, 0, 0, 0.4);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  -webkit-transition: color 0.1s ease;
-  transition: color 0.1s ease;
-}
-.ui.cards > .card > .extra a:not(.ui),
-.ui.card > .extra a:not(.ui) {
-  color: rgba(0, 0, 0, 0.4);
-}
-.ui.cards > .card > .extra a:not(.ui):hover,
-.ui.card > .extra a:not(.ui):hover {
-  color: #1e70bf;
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-
-/*-------------------
-      Horizontal
---------------------*/
-
-.ui.horizontal.cards > .card,
-.ui.card.horizontal {
-  -webkit-box-orient: horizontal;
-  -webkit-box-direction: normal;
-      -ms-flex-direction: row;
-          flex-direction: row;
-  -ms-flex-wrap: wrap;
-      flex-wrap: wrap;
-  min-width: 400px;
-  width: 400px;
-  max-width: 100%;
-}
-.ui.horizontal.cards > .card > .image,
-.ui.card.horizontal > .image {
-  border-radius: 0.28571429rem 0 0 0.28571429rem;
-  width: 150px;
-}
-.ui.horizontal.cards > .card > .image > img,
-.ui.card.horizontal > .image > img {
-  background-size: cover;
-  background-repeat: no-repeat;
-  background-position: center;
-  -webkit-box-pack: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  -webkit-box-align: center;
-      -ms-flex-align: center;
-          align-items: center;
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  width: 100%;
-  height: 100%;
-  border-radius: 0.28571429rem 0 0 0.28571429rem;
-}
-.ui.horizontal.cards > .card > .content,
-.ui.horizontal.card > .content {
-  -ms-flex-preferred-size: 1px;
-      flex-basis: 1px;
-}
-.ui.horizontal.cards > .card > .extra,
-.ui.horizontal.card > .extra {
-  -ms-flex-preferred-size: 100%;
-      flex-basis: 100%;
-}
-
-/*-------------------
-       Raised
---------------------*/
-
-.ui.raised.cards > .card,
-.ui.raised.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 4px 0 rgba(34, 36, 38, 0.12), 0 2px 10px 0 rgba(34, 36, 38, 0.15);
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 4px 0 rgba(34, 36, 38, 0.12), 0 2px 10px 0 rgba(34, 36, 38, 0.15);
-}
-.ui.raised.cards a.card:hover,
-.ui.link.cards .raised.card:hover,
-a.ui.raised.card:hover,
-.ui.link.raised.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 4px 0 rgba(34, 36, 38, 0.15), 0 2px 10px 0 rgba(34, 36, 38, 0.25);
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 4px 0 rgba(34, 36, 38, 0.15), 0 2px 10px 0 rgba(34, 36, 38, 0.25);
-}
-
-/*-------------------
-       Centered
---------------------*/
-
-.ui.centered.cards {
-  -webkit-box-pack: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-}
-.ui.centered.card {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-/*-------------------
-        Fluid
---------------------*/
-
-.ui.fluid.card {
-  width: 100%;
-  max-width: 9999px;
-}
-
-/*-------------------
-        Link
---------------------*/
-
-.ui.cards a.card,
-.ui.link.cards .card,
-a.ui.card,
-.ui.link.card {
-  -webkit-transform: none;
-          transform: none;
-}
-.ui.cards a.card:hover,
-.ui.link.cards .card:not(.icon):hover,
-a.ui.card:hover,
-.ui.link.card:hover {
-  cursor: pointer;
-  z-index: 5;
-  background: #FFFFFF;
-  border: none;
-  -webkit-box-shadow: 0 1px 3px 0 #BCBDBD, 0 0 0 1px #D4D4D5;
-          box-shadow: 0 1px 3px 0 #BCBDBD, 0 0 0 1px #D4D4D5;
-  -webkit-transform: translateY(-3px);
-          transform: translateY(-3px);
-}
-
-/*-------------------
-       Colors
---------------------*/
-
-.ui.primary.cards > .card,
-.ui.cards > .primary.card,
-.ui.primary.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #2185D0, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #2185D0, 0 1px 3px 0 #D4D4D5;
-}
-.ui.primary.cards > .card:hover,
-.ui.cards > .primary.card:hover,
-.ui.primary.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1678c2, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1678c2, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.primary.cards > .card,
-.ui.inverted.cards > .primary.card,
-.ui.inverted.primary.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #54C8FF, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #54C8FF, 0 0 0 1px #555555;
-}
-.ui.inverted.primary.cards > .card:hover,
-.ui.inverted.cards > .primary.card:hover,
-.ui.inverted.primary.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #21b8ff, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #21b8ff, 0 0 0 1px #555555;
-}
-.ui.secondary.cards > .card,
-.ui.cards > .secondary.card,
-.ui.secondary.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1B1C1D, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1B1C1D, 0 1px 3px 0 #D4D4D5;
-}
-.ui.secondary.cards > .card:hover,
-.ui.cards > .secondary.card:hover,
-.ui.secondary.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #27292a, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #27292a, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.secondary.cards > .card,
-.ui.inverted.cards > .secondary.card,
-.ui.inverted.secondary.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #545454, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #545454, 0 0 0 1px #555555;
-}
-.ui.inverted.secondary.cards > .card:hover,
-.ui.inverted.cards > .secondary.card:hover,
-.ui.inverted.secondary.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #6e6e6e, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #6e6e6e, 0 0 0 1px #555555;
-}
-.ui.red.cards > .card,
-.ui.cards > .red.card,
-.ui.red.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #DB2828, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #DB2828, 0 1px 3px 0 #D4D4D5;
-}
-.ui.red.cards > .card:hover,
-.ui.cards > .red.card:hover,
-.ui.red.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #d01919, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #d01919, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.red.cards > .card,
-.ui.inverted.cards > .red.card,
-.ui.inverted.red.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FF695E, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FF695E, 0 0 0 1px #555555;
-}
-.ui.inverted.red.cards > .card:hover,
-.ui.inverted.cards > .red.card:hover,
-.ui.inverted.red.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #ff392b, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #ff392b, 0 0 0 1px #555555;
-}
-.ui.orange.cards > .card,
-.ui.cards > .orange.card,
-.ui.orange.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #F2711C, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #F2711C, 0 1px 3px 0 #D4D4D5;
-}
-.ui.orange.cards > .card:hover,
-.ui.cards > .orange.card:hover,
-.ui.orange.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #f26202, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #f26202, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.orange.cards > .card,
-.ui.inverted.cards > .orange.card,
-.ui.inverted.orange.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FF851B, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FF851B, 0 0 0 1px #555555;
-}
-.ui.inverted.orange.cards > .card:hover,
-.ui.inverted.cards > .orange.card:hover,
-.ui.inverted.orange.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #e76b00, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #e76b00, 0 0 0 1px #555555;
-}
-.ui.yellow.cards > .card,
-.ui.cards > .yellow.card,
-.ui.yellow.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #FBBD08, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #FBBD08, 0 1px 3px 0 #D4D4D5;
-}
-.ui.yellow.cards > .card:hover,
-.ui.cards > .yellow.card:hover,
-.ui.yellow.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #eaae00, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #eaae00, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.yellow.cards > .card,
-.ui.inverted.cards > .yellow.card,
-.ui.inverted.yellow.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FFE21F, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FFE21F, 0 0 0 1px #555555;
-}
-.ui.inverted.yellow.cards > .card:hover,
-.ui.inverted.cards > .yellow.card:hover,
-.ui.inverted.yellow.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #ebcd00, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #ebcd00, 0 0 0 1px #555555;
-}
-.ui.olive.cards > .card,
-.ui.cards > .olive.card,
-.ui.olive.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #B5CC18, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #B5CC18, 0 1px 3px 0 #D4D4D5;
-}
-.ui.olive.cards > .card:hover,
-.ui.cards > .olive.card:hover,
-.ui.olive.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #a7bd0d, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #a7bd0d, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.olive.cards > .card,
-.ui.inverted.cards > .olive.card,
-.ui.inverted.olive.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #D9E778, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #D9E778, 0 0 0 1px #555555;
-}
-.ui.inverted.olive.cards > .card:hover,
-.ui.inverted.cards > .olive.card:hover,
-.ui.inverted.olive.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #d2e745, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #d2e745, 0 0 0 1px #555555;
-}
-.ui.green.cards > .card,
-.ui.cards > .green.card,
-.ui.green.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #21BA45, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #21BA45, 0 1px 3px 0 #D4D4D5;
-}
-.ui.green.cards > .card:hover,
-.ui.cards > .green.card:hover,
-.ui.green.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #16ab39, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #16ab39, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.green.cards > .card,
-.ui.inverted.cards > .green.card,
-.ui.inverted.green.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #2ECC40, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #2ECC40, 0 0 0 1px #555555;
-}
-.ui.inverted.green.cards > .card:hover,
-.ui.inverted.cards > .green.card:hover,
-.ui.inverted.green.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #1ea92e, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #1ea92e, 0 0 0 1px #555555;
-}
-.ui.teal.cards > .card,
-.ui.cards > .teal.card,
-.ui.teal.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #00B5AD, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #00B5AD, 0 1px 3px 0 #D4D4D5;
-}
-.ui.teal.cards > .card:hover,
-.ui.cards > .teal.card:hover,
-.ui.teal.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #009c95, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #009c95, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.teal.cards > .card,
-.ui.inverted.cards > .teal.card,
-.ui.inverted.teal.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #6DFFFF, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #6DFFFF, 0 0 0 1px #555555;
-}
-.ui.inverted.teal.cards > .card:hover,
-.ui.inverted.cards > .teal.card:hover,
-.ui.inverted.teal.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #3affff, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #3affff, 0 0 0 1px #555555;
-}
-.ui.blue.cards > .card,
-.ui.cards > .blue.card,
-.ui.blue.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #2185D0, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #2185D0, 0 1px 3px 0 #D4D4D5;
-}
-.ui.blue.cards > .card:hover,
-.ui.cards > .blue.card:hover,
-.ui.blue.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1678c2, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1678c2, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.blue.cards > .card,
-.ui.inverted.cards > .blue.card,
-.ui.inverted.blue.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #54C8FF, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #54C8FF, 0 0 0 1px #555555;
-}
-.ui.inverted.blue.cards > .card:hover,
-.ui.inverted.cards > .blue.card:hover,
-.ui.inverted.blue.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #21b8ff, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #21b8ff, 0 0 0 1px #555555;
-}
-.ui.violet.cards > .card,
-.ui.cards > .violet.card,
-.ui.violet.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #6435C9, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #6435C9, 0 1px 3px 0 #D4D4D5;
-}
-.ui.violet.cards > .card:hover,
-.ui.cards > .violet.card:hover,
-.ui.violet.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #5829bb, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #5829bb, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.violet.cards > .card,
-.ui.inverted.cards > .violet.card,
-.ui.inverted.violet.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #A291FB, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #A291FB, 0 0 0 1px #555555;
-}
-.ui.inverted.violet.cards > .card:hover,
-.ui.inverted.cards > .violet.card:hover,
-.ui.inverted.violet.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #745aff, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #745aff, 0 0 0 1px #555555;
-}
-.ui.purple.cards > .card,
-.ui.cards > .purple.card,
-.ui.purple.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #A333C8, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #A333C8, 0 1px 3px 0 #D4D4D5;
-}
-.ui.purple.cards > .card:hover,
-.ui.cards > .purple.card:hover,
-.ui.purple.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #9627ba, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #9627ba, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.purple.cards > .card,
-.ui.inverted.cards > .purple.card,
-.ui.inverted.purple.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #DC73FF, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #DC73FF, 0 0 0 1px #555555;
-}
-.ui.inverted.purple.cards > .card:hover,
-.ui.inverted.cards > .purple.card:hover,
-.ui.inverted.purple.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #cf40ff, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #cf40ff, 0 0 0 1px #555555;
-}
-.ui.pink.cards > .card,
-.ui.cards > .pink.card,
-.ui.pink.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #E03997, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #E03997, 0 1px 3px 0 #D4D4D5;
-}
-.ui.pink.cards > .card:hover,
-.ui.cards > .pink.card:hover,
-.ui.pink.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #e61a8d, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #e61a8d, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.pink.cards > .card,
-.ui.inverted.cards > .pink.card,
-.ui.inverted.pink.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FF8EDF, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #FF8EDF, 0 0 0 1px #555555;
-}
-.ui.inverted.pink.cards > .card:hover,
-.ui.inverted.cards > .pink.card:hover,
-.ui.inverted.pink.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #ff5bd1, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #ff5bd1, 0 0 0 1px #555555;
-}
-.ui.brown.cards > .card,
-.ui.cards > .brown.card,
-.ui.brown.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #A5673F, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #A5673F, 0 1px 3px 0 #D4D4D5;
-}
-.ui.brown.cards > .card:hover,
-.ui.cards > .brown.card:hover,
-.ui.brown.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #975b33, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #975b33, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.brown.cards > .card,
-.ui.inverted.cards > .brown.card,
-.ui.inverted.brown.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #D67C1C, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #D67C1C, 0 0 0 1px #555555;
-}
-.ui.inverted.brown.cards > .card:hover,
-.ui.inverted.cards > .brown.card:hover,
-.ui.inverted.brown.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #b0620f, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #b0620f, 0 0 0 1px #555555;
-}
-.ui.grey.cards > .card,
-.ui.cards > .grey.card,
-.ui.grey.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #767676, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #767676, 0 1px 3px 0 #D4D4D5;
-}
-.ui.grey.cards > .card:hover,
-.ui.cards > .grey.card:hover,
-.ui.grey.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #838383, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #838383, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.grey.cards > .card,
-.ui.inverted.cards > .grey.card,
-.ui.inverted.grey.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #DCDDDE, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #DCDDDE, 0 0 0 1px #555555;
-}
-.ui.inverted.grey.cards > .card:hover,
-.ui.inverted.cards > .grey.card:hover,
-.ui.inverted.grey.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #c2c4c5, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #c2c4c5, 0 0 0 1px #555555;
-}
-.ui.black.cards > .card,
-.ui.cards > .black.card,
-.ui.black.card {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1B1C1D, 0 1px 3px 0 #D4D4D5;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #1B1C1D, 0 1px 3px 0 #D4D4D5;
-}
-.ui.black.cards > .card:hover,
-.ui.cards > .black.card:hover,
-.ui.black.card:hover {
-  -webkit-box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #27292a, 0 1px 3px 0 #BCBDBD;
-          box-shadow: 0 0 0 1px #D4D4D5, 0 2px 0 0 #27292a, 0 1px 3px 0 #BCBDBD;
-}
-.ui.inverted.black.cards > .card,
-.ui.inverted.cards > .black.card,
-.ui.inverted.black.card {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #545454, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #545454, 0 0 0 1px #555555;
-}
-.ui.inverted.black.cards > .card:hover,
-.ui.inverted.cards > .black.card:hover,
-.ui.inverted.black.card:hover {
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #000000, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 2px 0 0 #000000, 0 0 0 1px #555555;
-}
-
-/*--------------
-   Card Count
----------------*/
-
-.ui.one.cards {
-  margin-left: 0;
-  margin-right: 0;
-}
-.ui.one.cards > .card {
-  width: 100%;
-}
-.ui.two.cards {
-  margin-left: -1em;
-  margin-right: -1em;
-}
-.ui.two.cards > .card {
-  width: calc(50% - 2em);
-  margin-left: 1em;
-  margin-right: 1em;
-}
-.ui.three.cards {
-  margin-left: -1em;
-  margin-right: -1em;
-}
-.ui.three.cards > .card {
-  width: calc(33.33333333333333% - 2em);
-  margin-left: 1em;
-  margin-right: 1em;
-}
-.ui.four.cards {
-  margin-left: -0.75em;
-  margin-right: -0.75em;
-}
-.ui.four.cards > .card {
-  width: calc(25% - 1.5em);
-  margin-left: 0.75em;
-  margin-right: 0.75em;
-}
-.ui.five.cards {
-  margin-left: -0.75em;
-  margin-right: -0.75em;
-}
-.ui.five.cards > .card {
-  width: calc(20% - 1.5em);
-  margin-left: 0.75em;
-  margin-right: 0.75em;
-}
-.ui.six.cards {
-  margin-left: -0.75em;
-  margin-right: -0.75em;
-}
-.ui.six.cards > .card {
-  width: calc(16.666666666666664% - 1.5em);
-  margin-left: 0.75em;
-  margin-right: 0.75em;
-}
-.ui.seven.cards {
-  margin-left: -0.5em;
-  margin-right: -0.5em;
-}
-.ui.seven.cards > .card {
-  width: calc(14.285714285714285% - 1em);
-  margin-left: 0.5em;
-  margin-right: 0.5em;
-}
-.ui.eight.cards {
-  margin-left: -0.5em;
-  margin-right: -0.5em;
-}
-.ui.eight.cards > .card {
-  width: calc(12.5% - 1em);
-  margin-left: 0.5em;
-  margin-right: 0.5em;
-  font-size: 11px;
-}
-.ui.nine.cards {
-  margin-left: -0.5em;
-  margin-right: -0.5em;
-}
-.ui.nine.cards > .card {
-  width: calc(11.11111111111111% - 1em);
-  margin-left: 0.5em;
-  margin-right: 0.5em;
-  font-size: 10px;
-}
-.ui.ten.cards {
-  margin-left: -0.5em;
-  margin-right: -0.5em;
-}
-.ui.ten.cards > .card {
-  width: calc(10% - 1em);
-  margin-left: 0.5em;
-  margin-right: 0.5em;
-}
-
-/*-------------------
-      Doubling
---------------------*/
-
-
-/* Mobile Only */
-@media only screen and (max-width: 767.98px) {
-  .ui.two.doubling.cards {
-    margin-left: 0;
-    margin-right: 0;
-  }
-  .ui.two.doubling.cards > .card {
-    width: 100%;
-    margin-left: 0;
-    margin-right: 0;
-  }
-  .ui.three.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.three.doubling.cards > .card {
-    width: calc(50% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.four.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.four.doubling.cards > .card {
-    width: calc(50% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.five.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.five.doubling.cards > .card {
-    width: calc(50% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.six.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.six.doubling.cards > .card {
-    width: calc(50% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.seven.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.seven.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.eight.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.eight.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.nine.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.nine.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.ten.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.ten.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-}
-
-/* Tablet Only */
-@media only screen and (min-width: 768px) and (max-width: 991.98px) {
-  .ui.two.doubling.cards {
-    margin-left: 0;
-    margin-right: 0;
-  }
-  .ui.two.doubling.cards > .card {
-    width: 100%;
-    margin-left: 0;
-    margin-right: 0;
-  }
-  .ui.three.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.three.doubling.cards > .card {
-    width: calc(50% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.four.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.four.doubling.cards > .card {
-    width: calc(50% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.five.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.five.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.six.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.six.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.eight.doubling.cards {
-    margin-left: -1em;
-    margin-right: -1em;
-  }
-  .ui.eight.doubling.cards > .card {
-    width: calc(33.33333333333333% - 2em);
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.eight.doubling.cards {
-    margin-left: -0.75em;
-    margin-right: -0.75em;
-  }
-  .ui.eight.doubling.cards > .card {
-    width: calc(25% - 1.5em);
-    margin-left: 0.75em;
-    margin-right: 0.75em;
-  }
-  .ui.nine.doubling.cards {
-    margin-left: -0.75em;
-    margin-right: -0.75em;
-  }
-  .ui.nine.doubling.cards > .card {
-    width: calc(25% - 1.5em);
-    margin-left: 0.75em;
-    margin-right: 0.75em;
-  }
-  .ui.ten.doubling.cards {
-    margin-left: -0.75em;
-    margin-right: -0.75em;
-  }
-  .ui.ten.doubling.cards > .card {
-    width: calc(20% - 1.5em);
-    margin-left: 0.75em;
-    margin-right: 0.75em;
-  }
-}
-
-/*-------------------
-      Stackable
---------------------*/
-
-@media only screen and (max-width: 767.98px) {
-  .ui.stackable.cards {
-    display: block !important;
-  }
-  .ui.stackable.cards .card:first-child {
-    margin-top: 0 !important;
-  }
-  .ui.stackable.cards > .card {
-    display: block !important;
-    height: auto !important;
-    margin: 1em 1em;
-    padding: 0 !important;
-    width: calc(100% - 2em) !important;
-  }
-}
-
-/*--------------
-      Size
----------------*/
-
-.ui.cards > .card {
-  font-size: 1em;
-}
-
-/*-----------------
-      Inverted
-------------------*/
-
-.ui.inverted.cards > .card,
-.ui.inverted.card {
-  background: #1B1C1D;
-  -webkit-box-shadow: 0 1px 3px 0 #555555, 0 0 0 1px #555555;
-          box-shadow: 0 1px 3px 0 #555555, 0 0 0 1px #555555;
-}
-
-/* Content */
-.ui.inverted.cards > .card > .content,
-.ui.inverted.card > .content {
-  border-top: 1px solid rgba(255, 255, 255, 0.15);
-}
-
-/* Header */
-.ui.inverted.cards > .card > .content > .header,
-.ui.inverted.card > .content > .header {
-  color: rgba(255, 255, 255, 0.9);
-}
-
-/* Description */
-.ui.inverted.cards > .card > .content > .description,
-.ui.inverted.card > .content > .description {
-  color: rgba(255, 255, 255, 0.8);
-}
-
-/* Meta */
-.ui.inverted.cards > .card .meta,
-.ui.inverted.card .meta {
-  color: rgba(255, 255, 255, 0.7);
-}
-.ui.inverted.cards > .card .meta > a:not(.ui),
-.ui.inverted.card .meta > a:not(.ui) {
-  color: rgba(255, 255, 255, 0.7);
-}
-.ui.inverted.cards > .card .meta > a:not(.ui):hover,
-.ui.inverted.card .meta > a:not(.ui):hover {
-  color: #ffffff;
-}
-
-/* Extra */
-.ui.inverted.cards > .card > .extra,
-.ui.inverted.card > .extra {
-  border-top: 1px solid rgba(255, 255, 255, 0.15) !important;
-  color: rgba(255, 255, 255, 0.7);
-}
-.ui.inverted.cards > .card > .extra a:not(.ui),
-.ui.inverted.card > .extra a:not(.ui) {
-  color: rgba(255, 255, 255, 0.5);
-}
-.ui.inverted.cards > .card > .extra a:not(.ui):hover,
-.ui.inverted.card > .extra a:not(.ui):hover {
-  color: #1e70bf;
-}
-
-/* Link card(s) */
-.ui.inverted.cards a.card:hover,
-.ui.inverted.link.cards .card:not(.icon):hover,
-a.inverted.ui.card:hover,
-.ui.inverted.link.card:hover {
-  background: #1B1C1D;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-    User Variable Overrides
-*******************************/
-

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/card.min.css


+ 0 - 878
lib/fomantic/components/checkbox.css

@@ -1,878 +0,0 @@
-/*!
- * # Fomantic-UI - Checkbox
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-           Checkbox
-*******************************/
-
-
-/*--------------
-    Content
----------------*/
-
-.ui.checkbox {
-  position: relative;
-  display: inline-block;
-  -webkit-backface-visibility: hidden;
-          backface-visibility: hidden;
-  outline: none;
-  vertical-align: baseline;
-  font-style: normal;
-  min-height: 17px;
-  font-size: 1em;
-  line-height: 17px;
-  min-width: 17px;
-}
-
-/* HTML Checkbox */
-.ui.checkbox input[type="checkbox"],
-.ui.checkbox input[type="radio"] {
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  left: 0;
-  opacity: 0 !important;
-  outline: none;
-  z-index: 3;
-  width: 17px;
-  height: 17px;
-}
-
-/*--------------
-      Box
----------------*/
-
-.ui.checkbox .box,
-.ui.checkbox label {
-  cursor: auto;
-  position: relative;
-  display: block;
-  padding-left: 1.85714em;
-  outline: none;
-  font-size: 1em;
-}
-.ui.checkbox .box:before,
-.ui.checkbox label:before {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 17px;
-  height: 17px;
-  content: '';
-  background: #FFFFFF;
-  border-radius: 0.21428571rem;
-  -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease;
-  transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease;
-  transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease;
-  transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease;
-  border: 1px solid #D4D4D5;
-}
-
-/*--------------
-    Checkmark
----------------*/
-
-.ui.checkbox .box:after,
-.ui.checkbox label:after {
-  position: absolute;
-  font-size: 14px;
-  top: 0;
-  left: 0;
-  width: 17px;
-  height: 17px;
-  text-align: center;
-  opacity: 0;
-  color: rgba(0, 0, 0, 0.87);
-  -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease;
-  transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease;
-  transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease;
-  transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease;
-}
-
-/*--------------
-      Label
----------------*/
-
-
-/* Inside */
-.ui.checkbox label,
-.ui.checkbox + label {
-  color: rgba(0, 0, 0, 0.87);
-  -webkit-transition: color 0.1s ease;
-  transition: color 0.1s ease;
-}
-
-/* Outside */
-.ui.checkbox + label {
-  vertical-align: middle;
-}
-
-
-/*******************************
-           States
-*******************************/
-
-
-/*--------------
-      Hover
----------------*/
-
-.ui.checkbox .box:hover::before,
-.ui.checkbox label:hover::before {
-  background: #FFFFFF;
-  border-color: rgba(34, 36, 38, 0.35);
-}
-.ui.checkbox label:hover,
-.ui.checkbox + label:hover {
-  color: rgba(0, 0, 0, 0.8);
-}
-
-/*--------------
-      Down
----------------*/
-
-.ui.checkbox .box:active::before,
-.ui.checkbox label:active::before {
-  background: #F9FAFB;
-  border-color: rgba(34, 36, 38, 0.35);
-}
-.ui.checkbox .box:active::after,
-.ui.checkbox label:active::after {
-  color: rgba(0, 0, 0, 0.95);
-}
-.ui.checkbox input:active ~ label {
-  color: rgba(0, 0, 0, 0.95);
-}
-
-/*--------------
-     Focus
----------------*/
-
-.ui.checkbox input:focus ~ .box:before,
-.ui.checkbox input:focus ~ label:before {
-  background: #FFFFFF;
-  border-color: #96C8DA;
-}
-.ui.checkbox input:focus ~ .box:after,
-.ui.checkbox input:focus ~ label:after {
-  color: rgba(0, 0, 0, 0.95);
-}
-.ui.checkbox input:focus ~ label {
-  color: rgba(0, 0, 0, 0.95);
-}
-
-/*--------------
-     Active
----------------*/
-
-.ui.checkbox input:checked ~ .box:before,
-.ui.checkbox input:checked ~ label:before {
-  background: #FFFFFF;
-  border-color: rgba(34, 36, 38, 0.35);
-}
-.ui.checkbox input:checked ~ .box:after,
-.ui.checkbox input:checked ~ label:after {
-  opacity: 1;
-  color: rgba(0, 0, 0, 0.95);
-}
-
-/*--------------
-  Indeterminate
----------------*/
-
-.ui.checkbox input:not([type=radio]):indeterminate ~ .box:before,
-.ui.checkbox input:not([type=radio]):indeterminate ~ label:before {
-  background: #FFFFFF;
-  border-color: rgba(34, 36, 38, 0.35);
-}
-.ui.checkbox input:not([type=radio]):indeterminate ~ .box:after,
-.ui.checkbox input:not([type=radio]):indeterminate ~ label:after {
-  opacity: 1;
-  color: rgba(0, 0, 0, 0.95);
-}
-.ui.indeterminate.toggle.checkbox input:not([type=radio]):indeterminate ~ label:before {
-  background: rgba(0, 0, 0, 0.15);
-}
-.ui.indeterminate.toggle.checkbox input:not([type=radio]) ~ label:after {
-  left: 1.075rem;
-}
-
-/*--------------
-  Active Focus
----------------*/
-
-.ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:before,
-.ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:before,
-.ui.checkbox input:checked:focus ~ .box:before,
-.ui.checkbox input:checked:focus ~ label:before {
-  background: #FFFFFF;
-  border-color: #96C8DA;
-}
-.ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:after,
-.ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:after,
-.ui.checkbox input:checked:focus ~ .box:after,
-.ui.checkbox input:checked:focus ~ label:after {
-  color: rgba(0, 0, 0, 0.95);
-}
-
-/*--------------
-    Read-Only
----------------*/
-
-.ui.read-only.checkbox,
-.ui.read-only.checkbox label {
-  cursor: default;
-}
-
-/*--------------
-     Disabled
----------------*/
-
-.ui.disabled.checkbox .box:after,
-.ui.disabled.checkbox label,
-.ui.checkbox input[disabled] ~ .box:after,
-.ui.checkbox input[disabled] ~ label {
-  cursor: default !important;
-  opacity: 0.5;
-  color: #000000;
-}
-
-/*--------------
-     Hidden
----------------*/
-
-
-/* Initialized checkbox moves input below element
- to prevent manually triggering */
-.ui.checkbox input.hidden {
-  z-index: -1;
-}
-
-/* Selectable Label */
-.ui.checkbox input.hidden + label {
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-
-/*******************************
-             Types
-*******************************/
-
-
-/*--------------
-     Radio
----------------*/
-
-.ui.radio.checkbox {
-  min-height: 15px;
-}
-.ui.radio.checkbox .box,
-.ui.radio.checkbox label {
-  padding-left: 1.85714em;
-}
-
-/* Box */
-.ui.radio.checkbox .box:before,
-.ui.radio.checkbox label:before {
-  content: '';
-  -webkit-transform: none;
-          transform: none;
-  width: 15px;
-  height: 15px;
-  border-radius: 500rem;
-  top: 1px;
-  left: 0;
-}
-
-/* Bullet */
-.ui.radio.checkbox .box:after,
-.ui.radio.checkbox label:after {
-  border: none;
-  content: '' !important;
-  width: 15px;
-  height: 15px;
-  line-height: 15px;
-}
-
-/* Radio Checkbox */
-.ui.radio.checkbox .box:after,
-.ui.radio.checkbox label:after {
-  top: 1px;
-  left: 0;
-  width: 15px;
-  height: 15px;
-  border-radius: 500rem;
-  -webkit-transform: scale(0.46666667);
-          transform: scale(0.46666667);
-  background-color: rgba(0, 0, 0, 0.87);
-}
-
-/* Focus */
-.ui.radio.checkbox input:focus ~ .box:before,
-.ui.radio.checkbox input:focus ~ label:before {
-  background-color: #FFFFFF;
-}
-.ui.radio.checkbox input:focus ~ .box:after,
-.ui.radio.checkbox input:focus ~ label:after {
-  background-color: rgba(0, 0, 0, 0.95);
-}
-
-/* Indeterminate */
-.ui.radio.checkbox input:indeterminate ~ .box:after,
-.ui.radio.checkbox input:indeterminate ~ label:after {
-  opacity: 0;
-}
-
-/* Active */
-.ui.radio.checkbox input:checked ~ .box:before,
-.ui.radio.checkbox input:checked ~ label:before {
-  background-color: #FFFFFF;
-}
-.ui.radio.checkbox input:checked ~ .box:after,
-.ui.radio.checkbox input:checked ~ label:after {
-  background-color: rgba(0, 0, 0, 0.95);
-}
-
-/* Active Focus */
-.ui.radio.checkbox input:focus:checked ~ .box:before,
-.ui.radio.checkbox input:focus:checked ~ label:before {
-  background-color: #FFFFFF;
-}
-.ui.radio.checkbox input:focus:checked ~ .box:after,
-.ui.radio.checkbox input:focus:checked ~ label:after {
-  background-color: rgba(0, 0, 0, 0.95);
-}
-
-/*--------------
-     Slider
----------------*/
-
-.ui.slider.checkbox {
-  min-height: 1.25rem;
-}
-
-/* Input */
-.ui.slider.checkbox input {
-  width: 3.5rem;
-  height: 1.25rem;
-}
-
-/* Label */
-.ui.slider.checkbox .box,
-.ui.slider.checkbox label {
-  padding-left: 4.5rem;
-  line-height: 1rem;
-  color: rgba(0, 0, 0, 0.4);
-}
-
-/* Line */
-.ui.slider.checkbox .box:before,
-.ui.slider.checkbox label:before {
-  display: block;
-  position: absolute;
-  content: '';
-  -webkit-transform: none;
-          transform: none;
-  border: none !important;
-  left: 0;
-  z-index: 1;
-  top: 0.4rem;
-  background-color: rgba(0, 0, 0, 0.05);
-  width: 3.5rem;
-  height: 0.21428571rem;
-  border-radius: 500rem;
-  -webkit-transition: background 0.3s ease;
-  transition: background 0.3s ease;
-}
-
-/* Handle */
-.ui.slider.checkbox .box:after,
-.ui.slider.checkbox label:after {
-  background: #FFFFFF -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05)));
-  background: #FFFFFF -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05));
-  background: #FFFFFF linear-gradient(transparent, rgba(0, 0, 0, 0.05));
-  position: absolute;
-  content: '' !important;
-  opacity: 1;
-  z-index: 2;
-  border: none;
-  -webkit-box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-  width: 1.5rem;
-  height: 1.5rem;
-  top: -0.25rem;
-  left: 0;
-  -webkit-transform: none;
-          transform: none;
-  border-radius: 500rem;
-  -webkit-transition: left 0.3s ease;
-  transition: left 0.3s ease;
-}
-
-/* Focus */
-.ui.slider.checkbox input:focus ~ .box:before,
-.ui.slider.checkbox input:focus ~ label:before {
-  background-color: rgba(0, 0, 0, 0.15);
-  border: none;
-}
-
-/* Hover */
-.ui.slider.checkbox .box:hover,
-.ui.slider.checkbox label:hover {
-  color: rgba(0, 0, 0, 0.8);
-}
-.ui.slider.checkbox .box:hover::before,
-.ui.slider.checkbox label:hover::before {
-  background: rgba(0, 0, 0, 0.15);
-}
-
-/* Active */
-.ui.slider.checkbox input:checked ~ .box,
-.ui.slider.checkbox input:checked ~ label {
-  color: rgba(0, 0, 0, 0.95) !important;
-}
-.ui.slider.checkbox input:checked ~ .box:before,
-.ui.slider.checkbox input:checked ~ label:before {
-  background-color: #545454 !important;
-}
-.ui.slider.checkbox input:checked ~ .box:after,
-.ui.slider.checkbox input:checked ~ label:after {
-  left: 2rem;
-}
-
-/* Active Focus */
-.ui.slider.checkbox input:focus:checked ~ .box,
-.ui.slider.checkbox input:focus:checked ~ label {
-  color: rgba(0, 0, 0, 0.95) !important;
-}
-.ui.slider.checkbox input:focus:checked ~ .box:before,
-.ui.slider.checkbox input:focus:checked ~ label:before {
-  background-color: #000000 !important;
-}
-
-/*--------------
-     Toggle
----------------*/
-
-.ui.toggle.checkbox {
-  min-height: 1.5rem;
-}
-
-/* Input */
-.ui.toggle.checkbox input {
-  width: 3.5rem;
-  height: 1.5rem;
-}
-
-/* Label */
-.ui.toggle.checkbox .box,
-.ui.toggle.checkbox label {
-  min-height: 1.5rem;
-  padding-left: 4.5rem;
-  color: rgba(0, 0, 0, 0.87);
-}
-.ui.toggle.checkbox label {
-  padding-top: 0.15em;
-}
-
-/* Switch */
-.ui.toggle.checkbox .box:before,
-.ui.toggle.checkbox label:before {
-  display: block;
-  position: absolute;
-  content: '';
-  z-index: 1;
-  -webkit-transform: none;
-          transform: none;
-  border: none;
-  top: 0;
-  background: rgba(0, 0, 0, 0.05);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  width: 3.5rem;
-  height: 1.5rem;
-  border-radius: 500rem;
-}
-
-/* Handle */
-.ui.toggle.checkbox .box:after,
-.ui.toggle.checkbox label:after {
-  background: #FFFFFF -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05)));
-  background: #FFFFFF -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05));
-  background: #FFFFFF linear-gradient(transparent, rgba(0, 0, 0, 0.05));
-  position: absolute;
-  content: '' !important;
-  opacity: 1;
-  z-index: 2;
-  border: none;
-  -webkit-box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-  width: 1.5rem;
-  height: 1.5rem;
-  top: 0;
-  left: 0;
-  border-radius: 500rem;
-  -webkit-transition: background 0.3s ease, left 0.3s ease;
-  transition: background 0.3s ease, left 0.3s ease;
-}
-.ui.toggle.checkbox input ~ .box:after,
-.ui.toggle.checkbox input ~ label:after {
-  left: -0.05rem;
-  -webkit-box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-}
-
-/* Focus */
-.ui.toggle.checkbox input:focus ~ .box:before,
-.ui.toggle.checkbox input:focus ~ label:before {
-  background-color: rgba(0, 0, 0, 0.15);
-  border: none;
-}
-
-/* Hover */
-.ui.toggle.checkbox .box:hover::before,
-.ui.toggle.checkbox label:hover::before {
-  background-color: rgba(0, 0, 0, 0.15);
-  border: none;
-}
-
-/* Active */
-.ui.toggle.checkbox input:checked ~ .box,
-.ui.toggle.checkbox input:checked ~ label {
-  color: rgba(0, 0, 0, 0.95) !important;
-}
-.ui.toggle.checkbox input:checked ~ .box:before,
-.ui.toggle.checkbox input:checked ~ label:before {
-  background-color: #2185D0 !important;
-}
-.ui.toggle.checkbox input:checked ~ .box:after,
-.ui.toggle.checkbox input:checked ~ label:after {
-  left: 2.15rem;
-  -webkit-box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-          box-shadow: 0 1px 2px 0 rgba(34, 36, 38, 0.15), 0 0 0 1px rgba(34, 36, 38, 0.15) inset;
-}
-
-/* Active Focus */
-.ui.toggle.checkbox input:focus:checked ~ .box,
-.ui.toggle.checkbox input:focus:checked ~ label {
-  color: rgba(0, 0, 0, 0.95) !important;
-}
-.ui.toggle.checkbox input:focus:checked ~ .box:before,
-.ui.toggle.checkbox input:focus:checked ~ label:before {
-  background-color: #0d71bb !important;
-}
-
-
-/*******************************
-            Variations
-*******************************/
-
-
-/*--------------
-     Fitted
----------------*/
-
-.ui.fitted.checkbox .box,
-.ui.fitted.checkbox label {
-  padding-left: 0 !important;
-}
-.ui.fitted.toggle.checkbox {
-  width: 3.5rem;
-}
-.ui.fitted.slider.checkbox {
-  width: 3.5rem;
-}
-
-/*--------------
-     Inverted
----------------*/
-
-.ui.inverted.checkbox label,
-.ui.inverted.checkbox + label {
-  color: rgba(255, 255, 255, 0.9) !important;
-}
-
-/* Hover */
-.ui.inverted.checkbox .box:hover,
-.ui.inverted.checkbox label:hover {
-  color: #ffffff !important;
-}
-.ui.inverted.checkbox .box:hover::before,
-.ui.inverted.checkbox label:hover::before {
-  border-color: rgba(34, 36, 38, 0.5);
-}
-/*Slider Label */
-.ui.inverted.slider.checkbox .box,
-.ui.inverted.slider.checkbox label {
-  color: rgba(255, 255, 255, 0.5);
-}
-
-/* Slider Line */
-.ui.inverted.slider.checkbox .box:before,
-.ui.inverted.slider.checkbox label:before {
-  background-color: rgba(255, 255, 255, 0.5) !important;
-}
-
-/* Slider Hover */
-.ui.inverted.slider.checkbox .box:hover::before,
-.ui.inverted.slider.checkbox label:hover::before {
-  background: rgba(255, 255, 255, 0.7) !important;
-}
-
-/* Slider Active */
-.ui.inverted.slider.checkbox input:checked ~ .box,
-.ui.inverted.slider.checkbox input:checked ~ label {
-  color: #ffffff !important;
-}
-.ui.inverted.slider.checkbox input:checked ~ .box:before,
-.ui.inverted.slider.checkbox input:checked ~ label:before {
-  background-color: rgba(255, 255, 255, 0.8) !important;
-}
-
-/* Slider Active Focus */
-.ui.inverted.slider.checkbox input:focus:checked ~ .box,
-.ui.inverted.slider.checkbox input:focus:checked ~ label {
-  color: #ffffff !important;
-}
-.ui.inverted.slider.checkbox input:focus:checked ~ .box:before,
-.ui.inverted.slider.checkbox input:focus:checked ~ label:before {
-  background-color: rgba(255, 255, 255, 0.8) !important;
-}
-
-/* Toggle Switch */
-.ui.inverted.toggle.checkbox .box:before,
-.ui.inverted.toggle.checkbox label:before {
-  background-color: rgba(255, 255, 255, 0.9) !important;
-}
-
-/* Toggle Hover */
-.ui.inverted.toggle.checkbox .box:hover::before,
-.ui.inverted.toggle.checkbox label:hover::before {
-  background: #ffffff !important;
-}
-
-/* Toggle Active */
-.ui.inverted.toggle.checkbox input:checked ~ .box,
-.ui.inverted.toggle.checkbox input:checked ~ label {
-  color: #ffffff !important;
-}
-.ui.inverted.toggle.checkbox input:checked ~ .box:before,
-.ui.inverted.toggle.checkbox input:checked ~ label:before {
-  background-color: #2185D0 !important;
-}
-
-/* Toggle Active Focus */
-.ui.inverted.toggle.checkbox input:focus:checked ~ .box,
-.ui.inverted.toggle.checkbox input:focus:checked ~ label {
-  color: #ffffff !important;
-}
-.ui.inverted.toggle.checkbox input:focus:checked ~ .box:before,
-.ui.inverted.toggle.checkbox input:focus:checked ~ label:before {
-  background-color: #0d71bb !important;
-}
-
-/*--------------------
-        Size
----------------------*/
-
-.ui.mini.checkbox {
-  font-size: 0.78571429em;
-}
-.ui.tiny.checkbox {
-  font-size: 0.85714286em;
-}
-.ui.small.checkbox {
-  font-size: 0.92857143em;
-}
-.ui.large.checkbox {
-  font-size: 1.14285714em;
-}
-.ui.large.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.large.checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.large.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.large.checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.large.form .checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.large.checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.large.form .checkbox:not(.slider):not(.toggle):not(.radio) label:before,
-.ui.large.checkbox:not(.slider):not(.toggle):not(.radio) label:before {
-  -webkit-transform: scale(1.14285714);
-          transform: scale(1.14285714);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.large.form .checkbox.radio .box:before,
-.ui.large.checkbox.radio .box:before,
-.ui.large.form .checkbox.radio label:before,
-.ui.large.checkbox.radio label:before {
-  -webkit-transform: scale(1.14285714);
-          transform: scale(1.14285714);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.large.form .checkbox.radio .box:after,
-.ui.large.checkbox.radio .box:after,
-.ui.large.form .checkbox.radio label:after,
-.ui.large.checkbox.radio label:after {
-  -webkit-transform: scale(0.57142857);
-          transform: scale(0.57142857);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-  left: 0.33571429em;
-}
-.ui.big.checkbox {
-  font-size: 1.28571429em;
-}
-.ui.big.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.big.checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.big.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.big.checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.big.form .checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.big.checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.big.form .checkbox:not(.slider):not(.toggle):not(.radio) label:before,
-.ui.big.checkbox:not(.slider):not(.toggle):not(.radio) label:before {
-  -webkit-transform: scale(1.28571429);
-          transform: scale(1.28571429);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.big.form .checkbox.radio .box:before,
-.ui.big.checkbox.radio .box:before,
-.ui.big.form .checkbox.radio label:before,
-.ui.big.checkbox.radio label:before {
-  -webkit-transform: scale(1.28571429);
-          transform: scale(1.28571429);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.big.form .checkbox.radio .box:after,
-.ui.big.checkbox.radio .box:after,
-.ui.big.form .checkbox.radio label:after,
-.ui.big.checkbox.radio label:after {
-  -webkit-transform: scale(0.64285714);
-          transform: scale(0.64285714);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-  left: 0.37142857em;
-}
-.ui.huge.checkbox {
-  font-size: 1.42857143em;
-}
-.ui.huge.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.huge.checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.huge.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.huge.checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.huge.form .checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.huge.checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.huge.form .checkbox:not(.slider):not(.toggle):not(.radio) label:before,
-.ui.huge.checkbox:not(.slider):not(.toggle):not(.radio) label:before {
-  -webkit-transform: scale(1.42857143);
-          transform: scale(1.42857143);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.huge.form .checkbox.radio .box:before,
-.ui.huge.checkbox.radio .box:before,
-.ui.huge.form .checkbox.radio label:before,
-.ui.huge.checkbox.radio label:before {
-  -webkit-transform: scale(1.42857143);
-          transform: scale(1.42857143);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.huge.form .checkbox.radio .box:after,
-.ui.huge.checkbox.radio .box:after,
-.ui.huge.form .checkbox.radio label:after,
-.ui.huge.checkbox.radio label:after {
-  -webkit-transform: scale(0.71428571);
-          transform: scale(0.71428571);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-  left: 0.40714286em;
-}
-.ui.massive.checkbox {
-  font-size: 1.71428571em;
-}
-.ui.massive.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.massive.checkbox:not(.slider):not(.toggle):not(.radio) .box:after,
-.ui.massive.form .checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.massive.checkbox:not(.slider):not(.toggle):not(.radio) .box:before,
-.ui.massive.form .checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.massive.checkbox:not(.slider):not(.toggle):not(.radio) label:after,
-.ui.massive.form .checkbox:not(.slider):not(.toggle):not(.radio) label:before,
-.ui.massive.checkbox:not(.slider):not(.toggle):not(.radio) label:before {
-  -webkit-transform: scale(1.71428571);
-          transform: scale(1.71428571);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.massive.form .checkbox.radio .box:before,
-.ui.massive.checkbox.radio .box:before,
-.ui.massive.form .checkbox.radio label:before,
-.ui.massive.checkbox.radio label:before {
-  -webkit-transform: scale(1.71428571);
-          transform: scale(1.71428571);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-}
-.ui.massive.form .checkbox.radio .box:after,
-.ui.massive.checkbox.radio .box:after,
-.ui.massive.form .checkbox.radio label:after,
-.ui.massive.checkbox.radio label:after {
-  -webkit-transform: scale(0.85714286);
-          transform: scale(0.85714286);
-  -webkit-transform-origin: left;
-          transform-origin: left;
-  left: 0.47857143em;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-@font-face {
-  font-family: 'Checkbox';
-  src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype');
-}
-
-/* Checkmark */
-.ui.checkbox label:after,
-.ui.checkbox .box:after {
-  font-family: 'Checkbox';
-}
-
-/* Checked */
-.ui.checkbox input:checked ~ .box:after,
-.ui.checkbox input:checked ~ label:after {
-  content: '\e800';
-}
-
-/* Indeterminate */
-.ui.checkbox input:indeterminate ~ .box:after,
-.ui.checkbox input:indeterminate ~ label:after {
-  font-size: 12px;
-  content: '\e801';
-}
-/*  UTF Reference
-.check:before { content: '\e800'; }
-.dash:before  { content: '\e801'; }
-.plus:before { content: '\e802'; }
-*/
-
-
-/*******************************
-         Site Overrides
-*******************************/
-

+ 0 - 876
lib/fomantic/components/checkbox.js

@@ -1,876 +0,0 @@
-/*!
- * # Fomantic-UI - Checkbox
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-'use strict';
-
-$.isFunction = $.isFunction || function(obj) {
-  return typeof obj === "function" && typeof obj.nodeType !== "number";
-};
-
-window = (typeof window != 'undefined' && window.Math == Math)
-  ? window
-  : (typeof self != 'undefined' && self.Math == Math)
-    ? self
-    : Function('return this')()
-;
-
-$.fn.checkbox = function(parameters) {
-  var
-    $allModules    = $(this),
-    moduleSelector = $allModules.selector || '',
-
-    time           = new Date().getTime(),
-    performance    = [],
-
-    query          = arguments[0],
-    methodInvoked  = (typeof query == 'string'),
-    queryArguments = [].slice.call(arguments, 1),
-    returnedValue
-  ;
-
-  $allModules
-    .each(function() {
-      var
-        settings        = $.extend(true, {}, $.fn.checkbox.settings, parameters),
-
-        className       = settings.className,
-        namespace       = settings.namespace,
-        selector        = settings.selector,
-        error           = settings.error,
-
-        eventNamespace  = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-
-        $module         = $(this),
-        $label          = $(this).children(selector.label),
-        $input          = $(this).children(selector.input),
-        input           = $input[0],
-
-        initialLoad     = false,
-        shortcutPressed = false,
-        instance        = $module.data(moduleNamespace),
-
-        observer,
-        element         = this,
-        module
-      ;
-
-      module      = {
-
-        initialize: function() {
-          module.verbose('Initializing checkbox', settings);
-
-          module.create.label();
-          module.bind.events();
-
-          module.set.tabbable();
-          module.hide.input();
-
-          module.observeChanges();
-          module.instantiate();
-          module.setup();
-        },
-
-        instantiate: function() {
-          module.verbose('Storing instance of module', module);
-          instance = module;
-          $module
-            .data(moduleNamespace, module)
-          ;
-        },
-
-        destroy: function() {
-          module.verbose('Destroying module');
-          module.unbind.events();
-          module.show.input();
-          $module.removeData(moduleNamespace);
-        },
-
-        fix: {
-          reference: function() {
-            if( $module.is(selector.input) ) {
-              module.debug('Behavior called on <input> adjusting invoked element');
-              $module = $module.closest(selector.checkbox);
-              module.refresh();
-            }
-          }
-        },
-
-        setup: function() {
-          module.set.initialLoad();
-          if( module.is.indeterminate() ) {
-            module.debug('Initial value is indeterminate');
-            module.indeterminate();
-          }
-          else if( module.is.checked() ) {
-            module.debug('Initial value is checked');
-            module.check();
-          }
-          else {
-            module.debug('Initial value is unchecked');
-            module.uncheck();
-          }
-          module.remove.initialLoad();
-        },
-
-        refresh: function() {
-          $label = $module.children(selector.label);
-          $input = $module.children(selector.input);
-          input  = $input[0];
-        },
-
-        hide: {
-          input: function() {
-            module.verbose('Modifying <input> z-index to be unselectable');
-            $input.addClass(className.hidden);
-          }
-        },
-        show: {
-          input: function() {
-            module.verbose('Modifying <input> z-index to be selectable');
-            $input.removeClass(className.hidden);
-          }
-        },
-
-        observeChanges: function() {
-          if('MutationObserver' in window) {
-            observer = new MutationObserver(function(mutations) {
-              module.debug('DOM tree modified, updating selector cache');
-              module.refresh();
-            });
-            observer.observe(element, {
-              childList : true,
-              subtree   : true
-            });
-            module.debug('Setting up mutation observer', observer);
-          }
-        },
-
-        attachEvents: function(selector, event) {
-          var
-            $element = $(selector)
-          ;
-          event = $.isFunction(module[event])
-            ? module[event]
-            : module.toggle
-          ;
-          if($element.length > 0) {
-            module.debug('Attaching checkbox events to element', selector, event);
-            $element
-              .on('click' + eventNamespace, event)
-            ;
-          }
-          else {
-            module.error(error.notFound);
-          }
-        },
-
-        preventDefaultOnInputTarget: function() {
-          if(typeof event !== 'undefined' && $(event.target).is(selector.input)) {
-            module.verbose('Preventing default check action after manual check action');
-            event.preventDefault();
-          }
-        },
-
-        event: {
-          change: function(event) {
-            if( !module.should.ignoreCallbacks() ) {
-              settings.onChange.call(input);
-            }
-          },
-          click: function(event) {
-            var
-              $target = $(event.target)
-            ;
-            if( $target.is(selector.input) ) {
-              module.verbose('Using default check action on initialized checkbox');
-              return;
-            }
-            if( $target.is(selector.link) ) {
-              module.debug('Clicking link inside checkbox, skipping toggle');
-              return;
-            }
-            module.toggle();
-            $input.focus();
-            event.preventDefault();
-          },
-          keydown: function(event) {
-            var
-              key     = event.which,
-              keyCode = {
-                enter  : 13,
-                space  : 32,
-                escape : 27,
-                left   : 37,
-                up     : 38,
-                right  : 39,
-                down   : 40
-              }
-            ;
-
-            var r = module.get.radios(),
-                rIndex = r.index($module),
-                rLen = r.length,
-                checkIndex = false;
-
-            if(key == keyCode.left || key == keyCode.up) {
-              checkIndex = (rIndex === 0 ? rLen : rIndex) - 1;
-            } else if(key == keyCode.right || key == keyCode.down) {
-              checkIndex = rIndex === rLen-1 ? 0 : rIndex+1;
-            }
-
-            if (!module.should.ignoreCallbacks() && checkIndex !== false) {
-              if(settings.beforeUnchecked.apply(input)===false) {
-                module.verbose('Option not allowed to be unchecked, cancelling key navigation');
-                return false;
-              }
-              if (settings.beforeChecked.apply($(r[checkIndex]).children(selector.input)[0])===false) {
-                module.verbose('Next option should not allow check, cancelling key navigation');
-                return false;
-              }
-            }
-
-            if(key == keyCode.escape) {
-              module.verbose('Escape key pressed blurring field');
-              $input.blur();
-              shortcutPressed = true;
-            }
-            else if(!event.ctrlKey && ( key == keyCode.space || (key == keyCode.enter && settings.enableEnterKey)) ) {
-              module.verbose('Enter/space key pressed, toggling checkbox');
-              module.toggle();
-              shortcutPressed = true;
-            }
-            else {
-              shortcutPressed = false;
-            }
-          },
-          keyup: function(event) {
-            if(shortcutPressed) {
-              event.preventDefault();
-            }
-          }
-        },
-
-        check: function() {
-          if( !module.should.allowCheck() ) {
-            return;
-          }
-          module.debug('Checking checkbox', $input);
-          module.set.checked();
-          if( !module.should.ignoreCallbacks() ) {
-            settings.onChecked.call(input);
-            module.trigger.change();
-          }
-          module.preventDefaultOnInputTarget();
-        },
-
-        uncheck: function() {
-          if( !module.should.allowUncheck() ) {
-            return;
-          }
-          module.debug('Unchecking checkbox');
-          module.set.unchecked();
-          if( !module.should.ignoreCallbacks() ) {
-            settings.onUnchecked.call(input);
-            module.trigger.change();
-          }
-          module.preventDefaultOnInputTarget();
-        },
-
-        indeterminate: function() {
-          if( module.should.allowIndeterminate() ) {
-            module.debug('Checkbox is already indeterminate');
-            return;
-          }
-          module.debug('Making checkbox indeterminate');
-          module.set.indeterminate();
-          if( !module.should.ignoreCallbacks() ) {
-            settings.onIndeterminate.call(input);
-            module.trigger.change();
-          }
-        },
-
-        determinate: function() {
-          if( module.should.allowDeterminate() ) {
-            module.debug('Checkbox is already determinate');
-            return;
-          }
-          module.debug('Making checkbox determinate');
-          module.set.determinate();
-          if( !module.should.ignoreCallbacks() ) {
-            settings.onDeterminate.call(input);
-            module.trigger.change();
-          }
-        },
-
-        enable: function() {
-          if( module.is.enabled() ) {
-            module.debug('Checkbox is already enabled');
-            return;
-          }
-          module.debug('Enabling checkbox');
-          module.set.enabled();
-          if( !module.should.ignoreCallbacks() ) {
-            settings.onEnable.call(input);
-            // preserve legacy callbacks
-            settings.onEnabled.call(input);
-            module.trigger.change();
-          }
-        },
-
-        disable: function() {
-          if( module.is.disabled() ) {
-            module.debug('Checkbox is already disabled');
-            return;
-          }
-          module.debug('Disabling checkbox');
-          module.set.disabled();
-          if( !module.should.ignoreCallbacks() ) {
-            settings.onDisable.call(input);
-            // preserve legacy callbacks
-            settings.onDisabled.call(input);
-            module.trigger.change();
-          }
-        },
-
-        get: {
-          radios: function() {
-            var
-              name = module.get.name()
-            ;
-            return $('input[name="' + name + '"]').closest(selector.checkbox);
-          },
-          otherRadios: function() {
-            return module.get.radios().not($module);
-          },
-          name: function() {
-            return $input.attr('name');
-          }
-        },
-
-        is: {
-          initialLoad: function() {
-            return initialLoad;
-          },
-          radio: function() {
-            return ($input.hasClass(className.radio) || $input.attr('type') == 'radio');
-          },
-          indeterminate: function() {
-            return $input.prop('indeterminate') !== undefined && $input.prop('indeterminate');
-          },
-          checked: function() {
-            return $input.prop('checked') !== undefined && $input.prop('checked');
-          },
-          disabled: function() {
-            return $input.prop('disabled') !== undefined && $input.prop('disabled');
-          },
-          enabled: function() {
-            return !module.is.disabled();
-          },
-          determinate: function() {
-            return !module.is.indeterminate();
-          },
-          unchecked: function() {
-            return !module.is.checked();
-          }
-        },
-
-        should: {
-          allowCheck: function() {
-            if(module.is.determinate() && module.is.checked() && !module.is.initialLoad() ) {
-              module.debug('Should not allow check, checkbox is already checked');
-              return false;
-            }
-            if(!module.should.ignoreCallbacks() && settings.beforeChecked.apply(input) === false) {
-              module.debug('Should not allow check, beforeChecked cancelled');
-              return false;
-            }
-            return true;
-          },
-          allowUncheck: function() {
-            if(module.is.determinate() && module.is.unchecked() && !module.is.initialLoad() ) {
-              module.debug('Should not allow uncheck, checkbox is already unchecked');
-              return false;
-            }
-            if(!module.should.ignoreCallbacks() && settings.beforeUnchecked.apply(input) === false) {
-              module.debug('Should not allow uncheck, beforeUnchecked cancelled');
-              return false;
-            }
-            return true;
-          },
-          allowIndeterminate: function() {
-            if(module.is.indeterminate() && !module.is.initialLoad() ) {
-              module.debug('Should not allow indeterminate, checkbox is already indeterminate');
-              return false;
-            }
-            if(!module.should.ignoreCallbacks() && settings.beforeIndeterminate.apply(input) === false) {
-              module.debug('Should not allow indeterminate, beforeIndeterminate cancelled');
-              return false;
-            }
-            return true;
-          },
-          allowDeterminate: function() {
-            if(module.is.determinate() && !module.is.initialLoad() ) {
-              module.debug('Should not allow determinate, checkbox is already determinate');
-              return false;
-            }
-            if(!module.should.ignoreCallbacks() && settings.beforeDeterminate.apply(input) === false) {
-              module.debug('Should not allow determinate, beforeDeterminate cancelled');
-              return false;
-            }
-            return true;
-          },
-          ignoreCallbacks: function() {
-            return (initialLoad && !settings.fireOnInit);
-          }
-        },
-
-        can: {
-          change: function() {
-            return !( $module.hasClass(className.disabled) || $module.hasClass(className.readOnly) || $input.prop('disabled') || $input.prop('readonly') );
-          },
-          uncheck: function() {
-            return (typeof settings.uncheckable === 'boolean')
-              ? settings.uncheckable
-              : !module.is.radio()
-            ;
-          }
-        },
-
-        set: {
-          initialLoad: function() {
-            initialLoad = true;
-          },
-          checked: function() {
-            module.verbose('Setting class to checked');
-            $module
-              .removeClass(className.indeterminate)
-              .addClass(className.checked)
-            ;
-            if( module.is.radio() ) {
-              module.uncheckOthers();
-            }
-            if(!module.is.indeterminate() && module.is.checked()) {
-              module.debug('Input is already checked, skipping input property change');
-              return;
-            }
-            module.verbose('Setting state to checked', input);
-            $input
-              .prop('indeterminate', false)
-              .prop('checked', true)
-            ;
-          },
-          unchecked: function() {
-            module.verbose('Removing checked class');
-            $module
-              .removeClass(className.indeterminate)
-              .removeClass(className.checked)
-            ;
-            if(!module.is.indeterminate() &&  module.is.unchecked() ) {
-              module.debug('Input is already unchecked');
-              return;
-            }
-            module.debug('Setting state to unchecked');
-            $input
-              .prop('indeterminate', false)
-              .prop('checked', false)
-            ;
-          },
-          indeterminate: function() {
-            module.verbose('Setting class to indeterminate');
-            $module
-              .addClass(className.indeterminate)
-            ;
-            if( module.is.indeterminate() ) {
-              module.debug('Input is already indeterminate, skipping input property change');
-              return;
-            }
-            module.debug('Setting state to indeterminate');
-            $input
-              .prop('indeterminate', true)
-            ;
-          },
-          determinate: function() {
-            module.verbose('Removing indeterminate class');
-            $module
-              .removeClass(className.indeterminate)
-            ;
-            if( module.is.determinate() ) {
-              module.debug('Input is already determinate, skipping input property change');
-              return;
-            }
-            module.debug('Setting state to determinate');
-            $input
-              .prop('indeterminate', false)
-            ;
-          },
-          disabled: function() {
-            module.verbose('Setting class to disabled');
-            $module
-              .addClass(className.disabled)
-            ;
-            if( module.is.disabled() ) {
-              module.debug('Input is already disabled, skipping input property change');
-              return;
-            }
-            module.debug('Setting state to disabled');
-            $input
-              .prop('disabled', 'disabled')
-            ;
-          },
-          enabled: function() {
-            module.verbose('Removing disabled class');
-            $module.removeClass(className.disabled);
-            if( module.is.enabled() ) {
-              module.debug('Input is already enabled, skipping input property change');
-              return;
-            }
-            module.debug('Setting state to enabled');
-            $input
-              .prop('disabled', false)
-            ;
-          },
-          tabbable: function() {
-            module.verbose('Adding tabindex to checkbox');
-            if( $input.attr('tabindex') === undefined) {
-              $input.attr('tabindex', 0);
-            }
-          }
-        },
-
-        remove: {
-          initialLoad: function() {
-            initialLoad = false;
-          }
-        },
-
-        trigger: {
-          change: function() {
-            var
-              events       = document.createEvent('HTMLEvents'),
-              inputElement = $input[0]
-            ;
-            if(inputElement) {
-              module.verbose('Triggering native change event');
-              events.initEvent('change', true, false);
-              inputElement.dispatchEvent(events);
-            }
-          }
-        },
-
-
-        create: {
-          label: function() {
-            if($input.prevAll(selector.label).length > 0) {
-              $input.prev(selector.label).detach().insertAfter($input);
-              module.debug('Moving existing label', $label);
-            }
-            else if( !module.has.label() ) {
-              $label = $('<label>').insertAfter($input);
-              module.debug('Creating label', $label);
-            }
-          }
-        },
-
-        has: {
-          label: function() {
-            return ($label.length > 0);
-          }
-        },
-
-        bind: {
-          events: function() {
-            module.verbose('Attaching checkbox events');
-            $module
-              .on('click'   + eventNamespace, module.event.click)
-              .on('change'  + eventNamespace, module.event.change)
-              .on('keydown' + eventNamespace, selector.input, module.event.keydown)
-              .on('keyup'   + eventNamespace, selector.input, module.event.keyup)
-            ;
-          }
-        },
-
-        unbind: {
-          events: function() {
-            module.debug('Removing events');
-            $module
-              .off(eventNamespace)
-            ;
-          }
-        },
-
-        uncheckOthers: function() {
-          var
-            $radios = module.get.otherRadios()
-          ;
-          module.debug('Unchecking other radios', $radios);
-          $radios.removeClass(className.checked);
-        },
-
-        toggle: function() {
-          if( !module.can.change() ) {
-            if(!module.is.radio()) {
-              module.debug('Checkbox is read-only or disabled, ignoring toggle');
-            }
-            return;
-          }
-          if( module.is.indeterminate() || module.is.unchecked() ) {
-            module.debug('Currently unchecked');
-            module.check();
-          }
-          else if( module.is.checked() && module.can.uncheck() ) {
-            module.debug('Currently checked');
-            module.uncheck();
-          }
-        },
-        setting: function(name, value) {
-          module.debug('Changing setting', name, value);
-          if( $.isPlainObject(name) ) {
-            $.extend(true, settings, name);
-          }
-          else if(value !== undefined) {
-            if($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function(name, value) {
-          if( $.isPlainObject(name) ) {
-            $.extend(true, module, name);
-          }
-          else if(value !== undefined) {
-            module[name] = value;
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function() {
-          if(!settings.silent && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function() {
-          if(!settings.silent && settings.verbose && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function() {
-          if(!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function(message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-            ;
-            if(settings.performance) {
-              currentTime   = new Date().getTime();
-              previousTime  = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time          = currentTime;
-              performance.push({
-                'Name'           : message[0],
-                'Arguments'      : [].slice.call(message, 1) || '',
-                'Element'        : element,
-                'Execution Time' : executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function() {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-            ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function(index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if(moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if(console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function(index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function(query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-          ;
-          passedArguments = passedArguments || queryArguments;
-          context         = element         || context;
-          if(typeof query == 'string' && object !== undefined) {
-            query    = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function(depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                : query
-              ;
-              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
-                object = object[camelCaseValue];
-              }
-              else if( object[camelCaseValue] !== undefined ) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
-                object = object[value];
-              }
-              else if( object[value] !== undefined ) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ( $.isFunction( found ) ) {
-            response = found.apply(context, passedArguments);
-          }
-          else if(found !== undefined) {
-            response = found;
-          }
-          if(Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if(returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if(response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-
-      if(methodInvoked) {
-        if(instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if(instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : this
-  ;
-};
-
-$.fn.checkbox.settings = {
-
-  name                : 'Checkbox',
-  namespace           : 'checkbox',
-
-  silent              : false,
-  debug               : false,
-  verbose             : true,
-  performance         : true,
-
-  // delegated event context
-  uncheckable         : 'auto',
-  fireOnInit          : false,
-  enableEnterKey      : true,
-
-  onChange            : function(){},
-
-  beforeChecked       : function(){},
-  beforeUnchecked     : function(){},
-  beforeDeterminate   : function(){},
-  beforeIndeterminate : function(){},
-
-  onChecked           : function(){},
-  onUnchecked         : function(){},
-
-  onDeterminate       : function() {},
-  onIndeterminate     : function() {},
-
-  onEnable            : function(){},
-  onDisable           : function(){},
-
-  // preserve misspelled callbacks (will be removed in 3.0)
-  onEnabled           : function(){},
-  onDisabled          : function(){},
-
-  className       : {
-    checked       : 'checked',
-    indeterminate : 'indeterminate',
-    disabled      : 'disabled',
-    hidden        : 'hidden',
-    radio         : 'radio',
-    readOnly      : 'read-only'
-  },
-
-  error     : {
-    method       : 'The method you called is not defined'
-  },
-
-  selector : {
-    checkbox : '.ui.checkbox',
-    label    : 'label, .box',
-    input    : 'input[type="checkbox"], input[type="radio"]',
-    link     : 'a[href]'
-  }
-
-};
-
-})( jQuery, window, document );

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/checkbox.min.css


文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/checkbox.min.js


+ 0 - 296
lib/fomantic/components/comment.css

@@ -1,296 +0,0 @@
-/*!
- * # Fomantic-UI - Comment
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Standard
-*******************************/
-
-
-/*--------------
-    Comments
----------------*/
-
-.ui.comments {
-  margin: 1.5em 0;
-  max-width: 650px;
-}
-.ui.comments:first-child {
-  margin-top: 0;
-}
-.ui.comments:last-child {
-  margin-bottom: 0;
-}
-
-/*--------------
-     Comment
----------------*/
-
-.ui.comments .comment {
-  position: relative;
-  background: none;
-  margin: 0.5em 0 0;
-  padding: 0.5em 0 0;
-  border: none;
-  border-top: none;
-  line-height: 1.2;
-}
-.ui.comments .comment:first-child {
-  margin-top: 0;
-  padding-top: 0;
-}
-
-/*--------------------
-    Nested Comments
----------------------*/
-
-.ui.comments .comment > .comments {
-  margin: 0 0 0.5em 0.5em;
-  padding: 1em 0 1em 1em;
-}
-.ui.comments .comment > .comments:before {
-  position: absolute;
-  top: 0;
-  left: 0;
-}
-.ui.comments .comment > .comments .comment {
-  border: none;
-  border-top: none;
-  background: none;
-}
-
-/*--------------
-     Avatar
----------------*/
-
-.ui.comments .comment .avatar {
-  display: block;
-  width: 2.5em;
-  height: auto;
-  float: left;
-  margin: 0.2em 0 0;
-}
-.ui.comments .comment img.avatar,
-.ui.comments .comment .avatar img {
-  display: block;
-  margin: 0 auto;
-  width: 100%;
-  height: 100%;
-  border-radius: 0.25rem;
-}
-
-/*--------------
-     Content
----------------*/
-
-.ui.comments .comment > .content {
-  display: block;
-}
-
-/* If there is an avatar move content over */
-.ui.comments .comment > .avatar ~ .content {
-  margin-left: 3.5em;
-}
-
-/*--------------
-     Author
----------------*/
-
-.ui.comments .comment .author {
-  font-size: 1em;
-  color: rgba(0, 0, 0, 0.87);
-  font-weight: bold;
-}
-.ui.comments .comment a.author {
-  cursor: pointer;
-}
-.ui.comments .comment a.author:hover {
-  color: #1e70bf;
-}
-
-/*--------------
-     Metadata
----------------*/
-
-.ui.comments .comment .metadata {
-  display: inline-block;
-  margin-left: 0.5em;
-  color: rgba(0, 0, 0, 0.4);
-  font-size: 0.875em;
-}
-.ui.comments .comment .metadata > * {
-  display: inline-block;
-  margin: 0 0.5em 0 0;
-}
-.ui.comments .comment .metadata > :last-child {
-  margin-right: 0;
-}
-
-/*--------------------
-     Comment Text
----------------------*/
-
-.ui.comments .comment .text {
-  margin: 0.25em 0 0.5em;
-  font-size: 1em;
-  word-wrap: break-word;
-  color: rgba(0, 0, 0, 0.87);
-  line-height: 1.3;
-}
-
-/*--------------------
-     User Actions
----------------------*/
-
-.ui.comments .comment .actions {
-  font-size: 0.875em;
-}
-.ui.comments .comment .actions a {
-  cursor: pointer;
-  display: inline-block;
-  margin: 0 0.75em 0 0;
-  color: rgba(0, 0, 0, 0.4);
-}
-.ui.comments .comment .actions a:last-child {
-  margin-right: 0;
-}
-.ui.comments .comment .actions a.active,
-.ui.comments .comment .actions a:hover {
-  color: rgba(0, 0, 0, 0.8);
-}
-
-/*--------------------
-      Reply Form
----------------------*/
-
-.ui.comments > .reply.form {
-  margin-top: 1em;
-}
-.ui.comments .comment .reply.form {
-  width: 100%;
-  margin-top: 1em;
-}
-.ui.comments .reply.form textarea {
-  font-size: 1em;
-  height: 12em;
-}
-
-
-/*******************************
-            State
-*******************************/
-
-.ui.collapsed.comments,
-.ui.comments .collapsed.comments,
-.ui.comments .collapsed.comment {
-  display: none;
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-
-/*--------------------
-        Threaded
----------------------*/
-
-.ui.threaded.comments .comment > .comments {
-  margin: -1.5em 0 -1em 1.25em;
-  padding: 3em 0 2em 2.25em;
-  -webkit-box-shadow: -1px 0 0 rgba(34, 36, 38, 0.15);
-          box-shadow: -1px 0 0 rgba(34, 36, 38, 0.15);
-}
-
-/*--------------------
-        Minimal
----------------------*/
-
-.ui.minimal.comments .comment .actions {
-  opacity: 0;
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: auto;
-  -webkit-transition: opacity 0.2s ease;
-  transition: opacity 0.2s ease;
-  -webkit-transition-delay: 0.1s;
-          transition-delay: 0.1s;
-}
-.ui.minimal.comments .comment > .content:hover > .actions {
-  opacity: 1;
-}
-
-/*-------------------
-        Sizes
---------------------*/
-
-.ui.mini.comments {
-  font-size: 0.78571429rem;
-}
-.ui.tiny.comments {
-  font-size: 0.85714286rem;
-}
-.ui.small.comments {
-  font-size: 0.92857143rem;
-}
-.ui.comments {
-  font-size: 1rem;
-}
-.ui.large.comments {
-  font-size: 1.14285714rem;
-}
-.ui.big.comments {
-  font-size: 1.28571429rem;
-}
-.ui.huge.comments {
-  font-size: 1.42857143rem;
-}
-.ui.massive.comments {
-  font-size: 1.71428571rem;
-}
-
-/*-------------------
-        Inverted
---------------------*/
-
-.ui.inverted.comments .comment {
-  background-color: #1B1C1D;
-}
-.ui.inverted.comments .comment .author,
-.ui.inverted.comments .comment .text {
-  color: rgba(255, 255, 255, 0.9);
-}
-.ui.inverted.comments .comment .metadata,
-.ui.inverted.comments .comment .actions a {
-  color: rgba(255, 255, 255, 0.7);
-}
-.ui.inverted.comments .comment a.author:hover,
-.ui.inverted.comments .comment .actions a.active,
-.ui.inverted.comments .comment .actions a:hover {
-  color: #ffffff;
-}
-.ui.inverted.threaded.comments .comment > .comments {
-  -webkit-box-shadow: -1px 0 0 #555555;
-          box-shadow: -1px 0 0 #555555;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-    User Variable Overrides
-*******************************/
-

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/comment.min.css


+ 0 - 145
lib/fomantic/components/container.css

@@ -1,145 +0,0 @@
-/*!
- * # Fomantic-UI - Container
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Container
-*******************************/
-
-
-/* All Sizes */
-.ui.container {
-  display: block;
-  max-width: 100%;
-}
-
-/* Mobile */
-@media only screen and (max-width: 767.98px) {
-  .ui.ui.ui.container:not(.fluid) {
-    width: auto;
-    margin-left: 1em;
-    margin-right: 1em;
-  }
-  .ui.ui.grid.container {
-    width: auto;
-  }
-  .ui.ui.relaxed.grid.container {
-    width: auto;
-  }
-  .ui.ui.very.relaxed.grid.container {
-    width: auto;
-  }
-}
-
-/* Tablet */
-@media only screen and (min-width: 768px) and (max-width: 991.98px) {
-  .ui.ui.ui.container:not(.fluid) {
-    width: 723px;
-    margin-left: auto;
-    margin-right: auto;
-  }
-  .ui.ui.grid.container {
-    width: calc(723px + 2rem);
-  }
-  .ui.ui.relaxed.grid.container {
-    width: calc(723px + 3rem);
-  }
-  .ui.ui.very.relaxed.grid.container {
-    width: calc(723px + 5rem);
-  }
-}
-
-/* Small Monitor */
-@media only screen and (min-width: 992px) and (max-width: 1199.98px) {
-  .ui.ui.ui.container:not(.fluid) {
-    width: 933px;
-    margin-left: auto;
-    margin-right: auto;
-  }
-  .ui.ui.grid.container {
-    width: calc(933px + 2rem);
-  }
-  .ui.ui.relaxed.grid.container {
-    width: calc(933px + 3rem);
-  }
-  .ui.ui.very.relaxed.grid.container {
-    width: calc(933px + 5rem);
-  }
-}
-
-/* Large Monitor */
-@media only screen and (min-width: 1200px) {
-  .ui.ui.ui.container:not(.fluid) {
-    width: 1127px;
-    margin-left: auto;
-    margin-right: auto;
-  }
-  .ui.ui.grid.container {
-    width: calc(1127px + 2rem);
-  }
-  .ui.ui.relaxed.grid.container {
-    width: calc(1127px + 3rem);
-  }
-  .ui.ui.very.relaxed.grid.container {
-    width: calc(1127px + 5rem);
-  }
-}
-
-
-/*******************************
-             Types
-*******************************/
-
-
-/* Text Container */
-.ui.text.container {
-  font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
-  max-width: 700px;
-  line-height: 1.5;
-  font-size: 1.14285714rem;
-}
-
-/* Fluid */
-.ui.fluid.container {
-  width: 100%;
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-.ui[class*="left aligned"].container {
-  text-align: left;
-}
-.ui[class*="center aligned"].container {
-  text-align: center;
-}
-.ui[class*="right aligned"].container {
-  text-align: right;
-}
-.ui.justified.container {
-  text-align: justify;
-  -webkit-hyphens: auto;
-      -ms-hyphens: auto;
-          hyphens: auto;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-         Site Overrides
-*******************************/
-

+ 0 - 9
lib/fomantic/components/container.min.css

@@ -1,9 +0,0 @@
-/*!
- * # Fomantic-UI - Container
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */.ui.container{display:block;max-width:100%}@media only screen and (max-width:767.98px){.ui.ui.ui.container:not(.fluid){width:auto;margin-left:1em;margin-right:1em}.ui.ui.grid.container{width:auto}.ui.ui.relaxed.grid.container{width:auto}.ui.ui.very.relaxed.grid.container{width:auto}}@media only screen and (min-width:768px) and (max-width:991.98px){.ui.ui.ui.container:not(.fluid){width:723px;margin-left:auto;margin-right:auto}.ui.ui.grid.container{width:calc(723px + 2rem)}.ui.ui.relaxed.grid.container{width:calc(723px + 3rem)}.ui.ui.very.relaxed.grid.container{width:calc(723px + 5rem)}}@media only screen and (min-width:992px) and (max-width:1199.98px){.ui.ui.ui.container:not(.fluid){width:933px;margin-left:auto;margin-right:auto}.ui.ui.grid.container{width:calc(933px + 2rem)}.ui.ui.relaxed.grid.container{width:calc(933px + 3rem)}.ui.ui.very.relaxed.grid.container{width:calc(933px + 5rem)}}@media only screen and (min-width:1200px){.ui.ui.ui.container:not(.fluid){width:1127px;margin-left:auto;margin-right:auto}.ui.ui.grid.container{width:calc(1127px + 2rem)}.ui.ui.relaxed.grid.container{width:calc(1127px + 3rem)}.ui.ui.very.relaxed.grid.container{width:calc(1127px + 5rem)}}.ui.text.container{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;max-width:700px;line-height:1.5;font-size:1.14285714rem}.ui.fluid.container{width:100%}.ui[class*="left aligned"].container{text-align:left}.ui[class*="center aligned"].container{text-align:center}.ui[class*="right aligned"].container{text-align:right}.ui.justified.container{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}

+ 0 - 464
lib/fomantic/components/dimmer.css

@@ -1,464 +0,0 @@
-/*!
- * # Fomantic-UI - Dimmer
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Dimmer
-*******************************/
-
-.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;
-  padding: 1em;
-  background-color: rgba(0, 0, 0, 0.85);
-  opacity: 0;
-  line-height: 1;
-  -webkit-animation-fill-mode: both;
-          animation-fill-mode: both;
-  -webkit-animation-duration: 0.5s;
-          animation-duration: 0.5s;
-  -webkit-transition: background-color 0.5s linear;
-  transition: background-color 0.5s linear;
-  -webkit-box-orient: vertical;
-  -webkit-box-direction: normal;
-      -ms-flex-direction: column;
-          flex-direction: column;
-  -webkit-box-align: center;
-      -ms-flex-align: center;
-          align-items: center;
-  -webkit-box-pack: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  will-change: opacity;
-  z-index: 1000;
-}
-
-/* Dimmer Content */
-.ui.dimmer > .content {
-  -webkit-user-select: text;
-     -moz-user-select: text;
-      -ms-user-select: text;
-          user-select: text;
-  color: #FFFFFF;
-}
-
-/* Loose Coupling */
-.ui.segment > .ui.dimmer {
-  border-radius: inherit !important;
-}
-
-/* Scrollbars */
-.ui.dimmer:not(.inverted)::-webkit-scrollbar-track {
-  background: rgba(255, 255, 255, 0.1);
-}
-.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb {
-  background: rgba(255, 255, 255, 0.25);
-}
-.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:window-inactive {
-  background: rgba(255, 255, 255, 0.15);
-}
-.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:hover {
-  background: rgba(255, 255, 255, 0.35);
-}
-
-
-/*******************************
-            States
-*******************************/
-
-
-/* Animating */
-.animating.dimmable:not(body),
-.dimmed.dimmable:not(body) {
-  overflow: hidden;
-}
-
-/* Animating / Active / Visible */
-.dimmed.dimmable > .ui.animating.dimmer,
-.dimmed.dimmable > .ui.visible.dimmer,
-.ui.active.dimmer {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  opacity: 1;
-}
-
-/* Disabled */
-.ui.disabled.dimmer {
-  width: 0 !important;
-  height: 0 !important;
-}
-
-
-/*******************************
-           Variations
-*******************************/
-
-
-/*--------------
-    Legacy
----------------*/
-
-
-/* Animating / Active / Visible */
-.dimmed.dimmable > .ui.animating.legacy.dimmer,
-.dimmed.dimmable > .ui.visible.legacy.dimmer,
-.ui.active.legacy.dimmer {
-  display: block;
-}
-
-/*--------------
-    Alignment
----------------*/
-
-.ui[class*="top aligned"].dimmer {
-  -webkit-box-pack: start;
-      -ms-flex-pack: start;
-          justify-content: flex-start;
-}
-.ui[class*="bottom aligned"].dimmer {
-  -webkit-box-pack: end;
-      -ms-flex-pack: end;
-          justify-content: flex-end;
-}
-
-/*--------------
-      Page
----------------*/
-
-.ui.page.dimmer {
-  position: fixed;
-  -webkit-transform-style: '';
-          transform-style: '';
-  -webkit-perspective: 2000px;
-          perspective: 2000px;
-  -webkit-transform-origin: center center;
-          transform-origin: center center;
-}
-body.animating.in.dimmable,
-body.dimmed.dimmable {
-  overflow: hidden;
-}
-body.dimmable > .dimmer {
-  position: fixed;
-}
-
-/*--------------
-    Blurring
----------------*/
-
-.blurring.dimmable > :not(.dimmer) {
-  -webkit-filter: initial;
-          filter: initial;
-  -webkit-transition: 800ms -webkit-filter ease;
-  transition: 800ms -webkit-filter ease;
-  transition: 800ms filter ease;
-  transition: 800ms filter ease, 800ms -webkit-filter ease;
-}
-.blurring.dimmed.dimmable > :not(.dimmer):not(.popup) {
-  -webkit-filter: blur(5px) grayscale(0.7);
-          filter: blur(5px) grayscale(0.7);
-}
-
-/* Dimmer Color */
-.blurring.dimmable > .dimmer {
-  background-color: rgba(0, 0, 0, 0.6);
-}
-.blurring.dimmable > .inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0.6);
-}
-
-/*--------------
-    Aligned
----------------*/
-
-.ui.dimmer > .top.aligned.content > * {
-  vertical-align: top;
-}
-.ui.dimmer > .bottom.aligned.content > * {
-  vertical-align: bottom;
-}
-
-/*--------------
-    Shades
----------------*/
-
-.medium.medium.medium.medium.medium.dimmer {
-  background-color: rgba(0, 0, 0, 0.65);
-}
-.light.light.light.light.light.dimmer {
-  background-color: rgba(0, 0, 0, 0.45);
-}
-.very.light.light.light.light.dimmer {
-  background-color: rgba(0, 0, 0, 0.25);
-}
-
-/*--------------
-    Inverted
----------------*/
-
-.ui.inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0.85);
-}
-.ui.inverted.dimmer > .content,
-.ui.inverted.dimmer > .content > * {
-  color: #000000;
-}
-
-/*--------------
- Inverted Shades
----------------*/
-
-.medium.medium.medium.medium.medium.inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0.65);
-}
-.light.light.light.light.light.inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0.45);
-}
-.very.light.light.light.light.inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0.25);
-}
-
-/*--------------
-     Simple
----------------*/
-
-
-/* Displays without javascript */
-.ui.simple.dimmer {
-  display: block;
-  overflow: hidden;
-  opacity: 0;
-  width: 0;
-  height: 0;
-  z-index: -100;
-  background-color: rgba(0, 0, 0, 0);
-}
-.dimmed.dimmable > .ui.simple.dimmer {
-  overflow: visible;
-  opacity: 1;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(0, 0, 0, 0.85);
-  z-index: 1;
-}
-.ui.simple.inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0);
-}
-.dimmed.dimmable > .ui.simple.inverted.dimmer {
-  background-color: rgba(255, 255, 255, 0.85);
-}
-
-/*--------------
-     Partially
-----------------*/
-
-.ui[class*="top dimmer"],
-.ui[class*="center dimmer"],
-.ui[class*="bottom dimmer"] {
-  height: auto;
-}
-.ui[class*="bottom dimmer"] {
-  top: auto !important;
-  bottom: 0;
-}
-.ui[class*="center dimmer"] {
-  top: 50% !important;
-  transform: translateY(-50%);
-  -webkit-transform: translateY(calc(-50% - 0.5px));
-}
-.ui.segment > .ui[class*="top dimmer"] {
-  border-bottom-left-radius: 0 !important;
-  border-bottom-right-radius: 0 !important;
-}
-.ui.segment > .ui[class*="center dimmer"] {
-  border-radius: 0 !important;
-}
-.ui.segment > .ui[class*="bottom dimmer"] {
-  border-top-left-radius: 0 !important;
-  border-top-right-radius: 0 !important;
-}
-.ui[class*="center dimmer"].transition[class*="fade up"].in {
-  -webkit-animation-name: fadeInUpCenter;
-          animation-name: fadeInUpCenter;
-}
-.ui[class*="center dimmer"].transition[class*="fade down"].in {
-  -webkit-animation-name: fadeInDownCenter;
-          animation-name: fadeInDownCenter;
-}
-.ui[class*="center dimmer"].transition[class*="fade up"].out {
-  -webkit-animation-name: fadeOutUpCenter;
-          animation-name: fadeOutUpCenter;
-}
-.ui[class*="center dimmer"].transition[class*="fade down"].out {
-  -webkit-animation-name: fadeOutDownCenter;
-          animation-name: fadeOutDownCenter;
-}
-.ui[class*="center dimmer"].bounce.transition {
-  -webkit-animation-name: bounceCenter;
-          animation-name: bounceCenter;
-}
-@-webkit-keyframes fadeInUpCenter {
-  0% {
-    opacity: 0;
-    transform: translateY(-40%);
-    -webkit-transform: translateY(calc(-40% - 0.5px));
-  }
-  100% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-}
-@keyframes fadeInUpCenter {
-  0% {
-    opacity: 0;
-    transform: translateY(-40%);
-    -webkit-transform: translateY(calc(-40% - 0.5px));
-  }
-  100% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-}
-@-webkit-keyframes fadeInDownCenter {
-  0% {
-    opacity: 0;
-    transform: translateY(-60%);
-    -webkit-transform: translateY(calc(-60% - 0.5px));
-  }
-  100% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-}
-@keyframes fadeInDownCenter {
-  0% {
-    opacity: 0;
-    transform: translateY(-60%);
-    -webkit-transform: translateY(calc(-60% - 0.5px));
-  }
-  100% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-}
-@-webkit-keyframes fadeOutUpCenter {
-  0% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-  100% {
-    opacity: 0;
-    transform: translateY(-45%);
-    -webkit-transform: translateY(calc(-45% - 0.5px));
-  }
-}
-@keyframes fadeOutUpCenter {
-  0% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-  100% {
-    opacity: 0;
-    transform: translateY(-45%);
-    -webkit-transform: translateY(calc(-45% - 0.5px));
-  }
-}
-@-webkit-keyframes fadeOutDownCenter {
-  0% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-  100% {
-    opacity: 0;
-    transform: translateY(-55%);
-    -webkit-transform: translateY(calc(-55% - 0.5px));
-  }
-}
-@keyframes fadeOutDownCenter {
-  0% {
-    opacity: 1;
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-  100% {
-    opacity: 0;
-    transform: translateY(-55%);
-    -webkit-transform: translateY(calc(-55% - 0.5px));
-  }
-}
-@-webkit-keyframes bounceCenter {
-  0%,
-  20%,
-  50%,
-  80%,
-  100% {
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-  40% {
-    -webkit-transform: translateY(calc(-50% - 30px));
-            transform: translateY(calc(-50% - 30px));
-  }
-  60% {
-    -webkit-transform: translateY(calc(-50% - 15px));
-            transform: translateY(calc(-50% - 15px));
-  }
-}
-@keyframes bounceCenter {
-  0%,
-  20%,
-  50%,
-  80%,
-  100% {
-    transform: translateY(-50%);
-    -webkit-transform: translateY(calc(-50% - 0.5px));
-  }
-  40% {
-    -webkit-transform: translateY(calc(-50% - 30px));
-            transform: translateY(calc(-50% - 30px));
-  }
-  60% {
-    -webkit-transform: translateY(calc(-50% - 15px));
-            transform: translateY(calc(-50% - 15px));
-  }
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-
-
-/*******************************
-        User Overrides
-*******************************/
-

+ 0 - 753
lib/fomantic/components/dimmer.js

@@ -1,753 +0,0 @@
-/*!
- * # Fomantic-UI - Dimmer
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-'use strict';
-
-$.isFunction = $.isFunction || function(obj) {
-  return typeof obj === "function" && typeof obj.nodeType !== "number";
-};
-
-window = (typeof window != 'undefined' && window.Math == Math)
-  ? window
-  : (typeof self != 'undefined' && self.Math == Math)
-    ? self
-    : Function('return this')()
-;
-
-$.fn.dimmer = function(parameters) {
-  var
-    $allModules     = $(this),
-
-    time            = new Date().getTime(),
-    performance     = [],
-
-    query           = arguments[0],
-    methodInvoked   = (typeof query == 'string'),
-    queryArguments  = [].slice.call(arguments, 1),
-
-    returnedValue
-  ;
-
-  $allModules
-    .each(function() {
-      var
-        settings        = ( $.isPlainObject(parameters) )
-          ? $.extend(true, {}, $.fn.dimmer.settings, parameters)
-          : $.extend({}, $.fn.dimmer.settings),
-
-        selector        = settings.selector,
-        namespace       = settings.namespace,
-        className       = settings.className,
-        error           = settings.error,
-
-        eventNamespace  = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-        moduleSelector  = $allModules.selector || '',
-
-        clickEvent      = ('ontouchstart' in document.documentElement)
-          ? 'touchstart'
-          : 'click',
-
-        $module = $(this),
-        $dimmer,
-        $dimmable,
-
-        element   = this,
-        instance  = $module.data(moduleNamespace),
-        module
-      ;
-
-      module = {
-
-        preinitialize: function() {
-          if( module.is.dimmer() ) {
-
-            $dimmable = $module.parent();
-            $dimmer   = $module;
-          }
-          else {
-            $dimmable = $module;
-            if( module.has.dimmer() ) {
-              if(settings.dimmerName) {
-                $dimmer = $dimmable.find(selector.dimmer).filter('.' + settings.dimmerName);
-              }
-              else {
-                $dimmer = $dimmable.find(selector.dimmer);
-              }
-            }
-            else {
-              $dimmer = module.create();
-            }
-          }
-        },
-
-        initialize: function() {
-          module.debug('Initializing dimmer', settings);
-
-          module.bind.events();
-          module.set.dimmable();
-          module.instantiate();
-        },
-
-        instantiate: function() {
-          module.verbose('Storing instance of module', module);
-          instance = module;
-          $module
-            .data(moduleNamespace, instance)
-          ;
-        },
-
-        destroy: function() {
-          module.verbose('Destroying previous module', $dimmer);
-          module.unbind.events();
-          module.remove.variation();
-          $dimmable
-            .off(eventNamespace)
-          ;
-        },
-
-        bind: {
-          events: function() {
-            if(settings.on == 'hover') {
-              $dimmable
-                .on('mouseenter' + eventNamespace, module.show)
-                .on('mouseleave' + eventNamespace, module.hide)
-              ;
-            }
-            else if(settings.on == 'click') {
-              $dimmable
-                .on(clickEvent + eventNamespace, module.toggle)
-              ;
-            }
-            if( module.is.page() ) {
-              module.debug('Setting as a page dimmer', $dimmable);
-              module.set.pageDimmer();
-            }
-
-            if( module.is.closable() ) {
-              module.verbose('Adding dimmer close event', $dimmer);
-              $dimmable
-                .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)
-              ;
-            }
-          }
-        },
-
-        unbind: {
-          events: function() {
-            $module
-              .removeData(moduleNamespace)
-            ;
-            $dimmable
-              .off(eventNamespace)
-            ;
-          }
-        },
-
-        event: {
-          click: function(event) {
-            module.verbose('Determining if event occured on dimmer', event);
-            if( $dimmer.find(event.target).length === 0 || $(event.target).is(selector.content) ) {
-              module.hide();
-              event.stopImmediatePropagation();
-            }
-          }
-        },
-
-        addContent: function(element) {
-          var
-            $content = $(element)
-          ;
-          module.debug('Add content to dimmer', $content);
-          if($content.parent()[0] !== $dimmer[0]) {
-            $content.detach().appendTo($dimmer);
-          }
-        },
-
-        create: function() {
-          var
-            $element = $( settings.template.dimmer(settings) )
-          ;
-          if(settings.dimmerName) {
-            module.debug('Creating named dimmer', settings.dimmerName);
-            $element.addClass(settings.dimmerName);
-          }
-          $element
-            .appendTo($dimmable)
-          ;
-          return $element;
-        },
-
-        show: function(callback) {
-          callback = $.isFunction(callback)
-            ? callback
-            : function(){}
-          ;
-          module.debug('Showing dimmer', $dimmer, settings);
-          module.set.variation();
-          if( (!module.is.dimmed() || module.is.animating()) && module.is.enabled() ) {
-            module.animate.show(callback);
-            settings.onShow.call(element);
-            settings.onChange.call(element);
-          }
-          else {
-            module.debug('Dimmer is already shown or disabled');
-          }
-        },
-
-        hide: function(callback) {
-          callback = $.isFunction(callback)
-            ? callback
-            : function(){}
-          ;
-          if( module.is.dimmed() || module.is.animating() ) {
-            module.debug('Hiding dimmer', $dimmer);
-            module.animate.hide(callback);
-            settings.onHide.call(element);
-            settings.onChange.call(element);
-          }
-          else {
-            module.debug('Dimmer is not visible');
-          }
-        },
-
-        toggle: function() {
-          module.verbose('Toggling dimmer visibility', $dimmer);
-          if( !module.is.dimmed() ) {
-            module.show();
-          }
-          else {
-            if ( module.is.closable() ) {
-              module.hide();
-            }
-          }
-        },
-
-        animate: {
-          show: function(callback) {
-            callback = $.isFunction(callback)
-              ? callback
-              : function(){}
-            ;
-            if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
-              if(settings.useFlex) {
-                module.debug('Using flex dimmer');
-                module.remove.legacy();
-              }
-              else {
-                module.debug('Using legacy non-flex dimmer');
-                module.set.legacy();
-              }
-              if(settings.opacity !== 'auto') {
-                module.set.opacity();
-              }
-              $dimmer
-                .transition({
-                  displayType : settings.useFlex
-                    ? 'flex'
-                    : 'block',
-                  animation   : settings.transition + ' in',
-                  queue       : false,
-                  duration    : module.get.duration(),
-                  useFailSafe : true,
-                  onStart     : function() {
-                    module.set.dimmed();
-                  },
-                  onComplete  : function() {
-                    module.set.active();
-                    callback();
-                  }
-                })
-              ;
-            }
-            else {
-              module.verbose('Showing dimmer animation with javascript');
-              module.set.dimmed();
-              if(settings.opacity == 'auto') {
-                settings.opacity = 0.8;
-              }
-              $dimmer
-                .stop()
-                .css({
-                  opacity : 0,
-                  width   : '100%',
-                  height  : '100%'
-                })
-                .fadeTo(module.get.duration(), settings.opacity, function() {
-                  $dimmer.removeAttr('style');
-                  module.set.active();
-                  callback();
-                })
-              ;
-            }
-          },
-          hide: function(callback) {
-            callback = $.isFunction(callback)
-              ? callback
-              : function(){}
-            ;
-            if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
-              module.verbose('Hiding dimmer with css');
-              $dimmer
-                .transition({
-                  displayType : settings.useFlex
-                    ? 'flex'
-                    : 'block',
-                  animation   : settings.transition + ' out',
-                  queue       : false,
-                  duration    : module.get.duration(),
-                  useFailSafe : true,
-                  onComplete  : function() {
-                    module.remove.dimmed();
-                    module.remove.variation();
-                    module.remove.active();
-                    callback();
-                  }
-                })
-              ;
-            }
-            else {
-              module.verbose('Hiding dimmer with javascript');
-              $dimmer
-                .stop()
-                .fadeOut(module.get.duration(), function() {
-                  module.remove.dimmed();
-                  module.remove.active();
-                  $dimmer.removeAttr('style');
-                  callback();
-                })
-              ;
-            }
-          }
-        },
-
-        get: {
-          dimmer: function() {
-            return $dimmer;
-          },
-          duration: function() {
-            if(typeof settings.duration == 'object') {
-              if( module.is.active() ) {
-                return settings.duration.hide;
-              }
-              else {
-                return settings.duration.show;
-              }
-            }
-            return settings.duration;
-          }
-        },
-
-        has: {
-          dimmer: function() {
-            if(settings.dimmerName) {
-              return ($module.find(selector.dimmer).filter('.' + settings.dimmerName).length > 0);
-            }
-            else {
-              return ( $module.find(selector.dimmer).length > 0 );
-            }
-          }
-        },
-
-        is: {
-          active: function() {
-            return $dimmer.hasClass(className.active);
-          },
-          animating: function() {
-            return ( $dimmer.is(':animated') || $dimmer.hasClass(className.animating) );
-          },
-          closable: function() {
-            if(settings.closable == 'auto') {
-              if(settings.on == 'hover') {
-                return false;
-              }
-              return true;
-            }
-            return settings.closable;
-          },
-          dimmer: function() {
-            return $module.hasClass(className.dimmer);
-          },
-          dimmable: function() {
-            return $module.hasClass(className.dimmable);
-          },
-          dimmed: function() {
-            return $dimmable.hasClass(className.dimmed);
-          },
-          disabled: function() {
-            return $dimmable.hasClass(className.disabled);
-          },
-          enabled: function() {
-            return !module.is.disabled();
-          },
-          page: function () {
-            return $dimmable.is('body');
-          },
-          pageDimmer: function() {
-            return $dimmer.hasClass(className.pageDimmer);
-          }
-        },
-
-        can: {
-          show: function() {
-            return !$dimmer.hasClass(className.disabled);
-          }
-        },
-
-        set: {
-          opacity: function(opacity) {
-            var
-              color      = $dimmer.css('background-color'),
-              colorArray = color.split(','),
-              isRGB      = (colorArray && colorArray.length == 3),
-              isRGBA     = (colorArray && colorArray.length == 4)
-            ;
-            opacity    = settings.opacity === 0 ? 0 : settings.opacity || opacity;
-            if(isRGB || isRGBA) {
-              colorArray[3] = opacity + ')';
-              color         = colorArray.join(',');
-            }
-            else {
-              color = 'rgba(0, 0, 0, ' + opacity + ')';
-            }
-            module.debug('Setting opacity to', opacity);
-            $dimmer.css('background-color', color);
-          },
-          legacy: function() {
-            $dimmer.addClass(className.legacy);
-          },
-          active: function() {
-            $dimmer.addClass(className.active);
-          },
-          dimmable: function() {
-            $dimmable.addClass(className.dimmable);
-          },
-          dimmed: function() {
-            $dimmable.addClass(className.dimmed);
-          },
-          pageDimmer: function() {
-            $dimmer.addClass(className.pageDimmer);
-          },
-          disabled: function() {
-            $dimmer.addClass(className.disabled);
-          },
-          variation: function(variation) {
-            variation = variation || settings.variation;
-            if(variation) {
-              $dimmer.addClass(variation);
-            }
-          }
-        },
-
-        remove: {
-          active: function() {
-            $dimmer
-              .removeClass(className.active)
-            ;
-          },
-          legacy: function() {
-            $dimmer.removeClass(className.legacy);
-          },
-          dimmed: function() {
-            $dimmable.removeClass(className.dimmed);
-          },
-          disabled: function() {
-            $dimmer.removeClass(className.disabled);
-          },
-          variation: function(variation) {
-            variation = variation || settings.variation;
-            if(variation) {
-              $dimmer.removeClass(variation);
-            }
-          }
-        },
-
-        setting: function(name, value) {
-          module.debug('Changing setting', name, value);
-          if( $.isPlainObject(name) ) {
-            $.extend(true, settings, name);
-          }
-          else if(value !== undefined) {
-            if($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function(name, value) {
-          if( $.isPlainObject(name) ) {
-            $.extend(true, module, name);
-          }
-          else if(value !== undefined) {
-            module[name] = value;
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function() {
-          if(!settings.silent && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function() {
-          if(!settings.silent && settings.verbose && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function() {
-          if(!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function(message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-            ;
-            if(settings.performance) {
-              currentTime   = new Date().getTime();
-              previousTime  = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time          = currentTime;
-              performance.push({
-                'Name'           : message[0],
-                'Arguments'      : [].slice.call(message, 1) || '',
-                'Element'        : element,
-                'Execution Time' : executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function() {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-            ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function(index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if(moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if($allModules.length > 1) {
-              title += ' ' + '(' + $allModules.length + ')';
-            }
-            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if(console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function(index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function(query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-          ;
-          passedArguments = passedArguments || queryArguments;
-          context         = element         || context;
-          if(typeof query == 'string' && object !== undefined) {
-            query    = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function(depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                : query
-              ;
-              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
-                object = object[camelCaseValue];
-              }
-              else if( object[camelCaseValue] !== undefined ) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
-                object = object[value];
-              }
-              else if( object[value] !== undefined ) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ( $.isFunction( found ) ) {
-            response = found.apply(context, passedArguments);
-          }
-          else if(found !== undefined) {
-            response = found;
-          }
-          if(Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if(returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if(response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-
-      module.preinitialize();
-
-      if(methodInvoked) {
-        if(instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if(instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : this
-  ;
-};
-
-$.fn.dimmer.settings = {
-
-  name        : 'Dimmer',
-  namespace   : 'dimmer',
-
-  silent      : false,
-  debug       : false,
-  verbose     : false,
-  performance : true,
-
-  // whether should use flex layout
-  useFlex     : true,
-
-  // name to distinguish between multiple dimmers in context
-  dimmerName  : false,
-
-  // whether to add a variation type
-  variation   : false,
-
-  // whether to bind close events
-  closable    : 'auto',
-
-  // whether to use css animations
-  useCSS      : true,
-
-  // css animation to use
-  transition  : 'fade',
-
-  // event to bind to
-  on          : false,
-
-  // overriding opacity value
-  opacity     : 'auto',
-
-  // transition durations
-  duration    : {
-    show : 500,
-    hide : 500
-  },
-// whether the dynamically created dimmer should have a loader
-  displayLoader: false,
-  loaderText  : false,
-  loaderVariation : '',
-
-  onChange    : function(){},
-  onShow      : function(){},
-  onHide      : function(){},
-
-  error   : {
-    method   : 'The method you called is not defined.'
-  },
-
-  className : {
-    active     : 'active',
-    animating  : 'animating',
-    dimmable   : 'dimmable',
-    dimmed     : 'dimmed',
-    dimmer     : 'dimmer',
-    disabled   : 'disabled',
-    hide       : 'hide',
-    legacy     : 'legacy',
-    pageDimmer : 'page',
-    show       : 'show',
-    loader     : 'ui loader'
-  },
-
-  selector: {
-    dimmer   : '> .ui.dimmer',
-    content  : '.ui.dimmer > .content, .ui.dimmer > .content > .center'
-  },
-
-  template: {
-    dimmer: function(settings) {
-        var d = $('<div/>').addClass('ui dimmer'),l;
-        if(settings.displayLoader) {
-          l = $('<div/>')
-              .addClass(settings.className.loader)
-              .addClass(settings.loaderVariation);
-          if(!!settings.loaderText){
-            l.text(settings.loaderText);
-            l.addClass('text');
-          }
-          d.append(l);
-        }
-        return d;
-    }
-  }
-
-};
-
-})( jQuery, window, document );

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/dimmer.min.css


文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/dimmer.min.js


+ 0 - 276
lib/fomantic/components/divider.css

@@ -1,276 +0,0 @@
-/*!
- * # Fomantic-UI - Divider
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Divider
-*******************************/
-
-.ui.divider {
-  margin: 1rem 0;
-  line-height: 1;
-  height: 0;
-  font-weight: bold;
-  text-transform: uppercase;
-  letter-spacing: 0.05em;
-  color: rgba(0, 0, 0, 0.85);
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-/*--------------
-      Basic
----------------*/
-
-.ui.divider:not(.vertical):not(.horizontal) {
-  border-top: 1px solid rgba(34, 36, 38, 0.15);
-  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
-}
-
-/*--------------
-    Coupling
----------------*/
-
-
-/* Allow divider between each column row */
-.ui.grid > .column + .divider,
-.ui.grid > .row > .column + .divider {
-  left: auto;
-}
-
-/*--------------
-   Horizontal
----------------*/
-
-.ui.horizontal.divider {
-  display: table;
-  white-space: nowrap;
-  height: auto;
-  margin: '';
-  line-height: 1;
-  text-align: center;
-}
-.ui.horizontal.divider:before,
-.ui.horizontal.divider:after {
-  content: '';
-  display: table-cell;
-  position: relative;
-  top: 50%;
-  width: 50%;
-  background-repeat: no-repeat;
-}
-.ui.horizontal.divider:before {
-  background-position: right 1em top 50%;
-}
-.ui.horizontal.divider:after {
-  background-position: left 1em top 50%;
-}
-
-/*--------------
-    Vertical
----------------*/
-
-.ui.vertical.divider {
-  position: absolute;
-  z-index: 2;
-  top: 50%;
-  left: 50%;
-  margin: 0;
-  padding: 0;
-  width: auto;
-  height: 50%;
-  line-height: 0;
-  text-align: center;
-  -webkit-transform: translateX(-50%);
-          transform: translateX(-50%);
-}
-.ui.vertical.divider:before,
-.ui.vertical.divider:after {
-  position: absolute;
-  left: 50%;
-  content: '';
-  z-index: 3;
-  border-left: 1px solid rgba(34, 36, 38, 0.15);
-  border-right: 1px solid rgba(255, 255, 255, 0.1);
-  width: 0;
-  height: calc(100% - 1rem);
-}
-.ui.vertical.divider:before {
-  top: -100%;
-}
-.ui.vertical.divider:after {
-  top: auto;
-  bottom: 0;
-}
-
-/* Inside grid */
-@media only screen and (max-width: 767.98px) {
-  .ui.stackable.grid .ui.vertical.divider,
-  .ui.grid .stackable.row .ui.vertical.divider {
-    display: table;
-    white-space: nowrap;
-    height: auto;
-    margin: '';
-    overflow: hidden;
-    line-height: 1;
-    text-align: center;
-    position: static;
-    top: 0;
-    left: 0;
-    -webkit-transform: none;
-            transform: none;
-  }
-  .ui.stackable.grid .ui.vertical.divider:before,
-  .ui.grid .stackable.row .ui.vertical.divider:before,
-  .ui.stackable.grid .ui.vertical.divider:after,
-  .ui.grid .stackable.row .ui.vertical.divider:after {
-    left: 0;
-    border-left: none;
-    border-right: none;
-    content: '';
-    display: table-cell;
-    position: relative;
-    top: 50%;
-    width: 50%;
-    background-repeat: no-repeat;
-  }
-  .ui.stackable.grid .ui.vertical.divider:before,
-  .ui.grid .stackable.row .ui.vertical.divider:before {
-    background-position: right 1em top 50%;
-  }
-  .ui.stackable.grid .ui.vertical.divider:after,
-  .ui.grid .stackable.row .ui.vertical.divider:after {
-    background-position: left 1em top 50%;
-  }
-}
-
-/*--------------
-      Icon
----------------*/
-
-.ui.divider > .icon {
-  margin: 0;
-  font-size: 1rem;
-  height: 1em;
-  vertical-align: middle;
-}
-
-/*--------------
-     Header
----------------*/
-
-.ui.horizontal.divider[class*="left aligned"]:before {
-  display: none;
-}
-.ui.horizontal.divider[class*="left aligned"]:after {
-  width: 100%;
-}
-.ui.horizontal.divider[class*="right aligned"]:before {
-  width: 100%;
-}
-.ui.horizontal.divider[class*="right aligned"]:after {
-  display: none;
-}
-
-
-/*******************************
-          Variations
-*******************************/
-
-
-/*--------------
-    Hidden
----------------*/
-
-.ui.hidden.divider {
-  border-color: transparent !important;
-}
-.ui.hidden.divider:before,
-.ui.hidden.divider:after {
-  display: none;
-}
-
-/*--------------
-    Inverted
----------------*/
-
-.ui.divider.inverted,
-.ui.vertical.inverted.divider,
-.ui.horizontal.inverted.divider {
-  color: #FFFFFF;
-}
-.ui.divider.inverted,
-.ui.divider.inverted:after,
-.ui.divider.inverted:before {
-  border-top-color: rgba(34, 36, 38, 0.15) !important;
-  border-left-color: rgba(34, 36, 38, 0.15) !important;
-  border-bottom-color: rgba(255, 255, 255, 0.15) !important;
-  border-right-color: rgba(255, 255, 255, 0.15) !important;
-}
-
-/*--------------
-    Fitted
----------------*/
-
-.ui.fitted.divider {
-  margin: 0;
-}
-
-/*--------------
-    Clearing
----------------*/
-
-.ui.clearing.divider {
-  clear: both;
-}
-
-/*--------------
-    Section
----------------*/
-
-.ui.section.divider {
-  margin-top: 2rem;
-  margin-bottom: 2rem;
-}
-
-/*--------------
-     Sizes
----------------*/
-
-.ui.divider {
-  font-size: 1rem;
-}
-
-
-/*******************************
-         Theme Overrides
-*******************************/
-
-.ui.horizontal.divider:before,
-.ui.horizontal.divider:after {
-  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC');
-}
-@media only screen and (max-width: 767px) {
-  .ui.stackable.grid .ui.vertical.divider:before,
-  .ui.grid .stackable.row .ui.vertical.divider:before,
-  .ui.stackable.grid .ui.vertical.divider:after,
-  .ui.grid .stackable.row .ui.vertical.divider:after {
-    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC');
-  }
-}
-
-
-/*******************************
-         Site Overrides
-*******************************/
-

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/divider.min.css


文件差異過大導致無法顯示
+ 0 - 1772
lib/fomantic/components/dropdown.css


+ 0 - 4177
lib/fomantic/components/dropdown.js

@@ -1,4177 +0,0 @@
-/*!
- * # Fomantic-UI - Dropdown
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-'use strict';
-
-$.isFunction = $.isFunction || function(obj) {
-  return typeof obj === "function" && typeof obj.nodeType !== "number";
-};
-
-window = (typeof window != 'undefined' && window.Math == Math)
-  ? window
-  : (typeof self != 'undefined' && self.Math == Math)
-    ? self
-    : Function('return this')()
-;
-
-$.fn.dropdown = function(parameters) {
-  var
-    $allModules    = $(this),
-    $document      = $(document),
-
-    moduleSelector = $allModules.selector || '',
-
-    hasTouch       = ('ontouchstart' in document.documentElement),
-    time           = new Date().getTime(),
-    performance    = [],
-
-    query          = arguments[0],
-    methodInvoked  = (typeof query == 'string'),
-    queryArguments = [].slice.call(arguments, 1),
-    returnedValue
-  ;
-
-  $allModules
-    .each(function(elementIndex) {
-      var
-        settings          = ( $.isPlainObject(parameters) )
-          ? $.extend(true, {}, $.fn.dropdown.settings, parameters)
-          : $.extend({}, $.fn.dropdown.settings),
-
-        className       = settings.className,
-        message         = settings.message,
-        fields          = settings.fields,
-        keys            = settings.keys,
-        metadata        = settings.metadata,
-        namespace       = settings.namespace,
-        regExp          = settings.regExp,
-        selector        = settings.selector,
-        error           = settings.error,
-        templates       = settings.templates,
-
-        eventNamespace  = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-
-        $module         = $(this),
-        $context        = $(settings.context),
-        $text           = $module.find(selector.text),
-        $search         = $module.find(selector.search),
-        $sizer          = $module.find(selector.sizer),
-        $input          = $module.find(selector.input),
-        $icon           = $module.find(selector.icon),
-        $clear          = $module.find(selector.clearIcon),
-
-        $combo = ($module.prev().find(selector.text).length > 0)
-          ? $module.prev().find(selector.text)
-          : $module.prev(),
-
-        $menu           = $module.children(selector.menu),
-        $item           = $menu.find(selector.item),
-        $divider        = settings.hideDividers ? $item.parent().children(selector.divider) : $(),
-
-        activated       = false,
-        itemActivated   = false,
-        internalChange  = false,
-        iconClicked     = false,
-        element         = this,
-        instance        = $module.data(moduleNamespace),
-
-        selectActionActive,
-        initialLoad,
-        pageLostFocus,
-        willRefocus,
-        elementNamespace,
-        id,
-        selectObserver,
-        menuObserver,
-        module
-      ;
-
-      module = {
-
-        initialize: function() {
-          module.debug('Initializing dropdown', settings);
-
-          if( module.is.alreadySetup() ) {
-            module.setup.reference();
-          }
-          else {
-            if (settings.ignoreDiacritics && !String.prototype.normalize) {
-              settings.ignoreDiacritics = false;
-              module.error(error.noNormalize, element);
-            }
-
-            module.setup.layout();
-
-            if(settings.values) {
-              module.change.values(settings.values);
-            }
-
-            module.refreshData();
-
-            module.save.defaults();
-            module.restore.selected();
-
-            module.create.id();
-            module.bind.events();
-
-            module.observeChanges();
-            module.instantiate();
-          }
-
-        },
-
-        instantiate: function() {
-          module.verbose('Storing instance of dropdown', module);
-          instance = module;
-          $module
-            .data(moduleNamespace, module)
-          ;
-        },
-
-        destroy: function() {
-          module.verbose('Destroying previous dropdown', $module);
-          module.remove.tabbable();
-          module.remove.active();
-          $menu.transition('stop all');
-          $menu.removeClass(className.visible).addClass(className.hidden);
-          $module
-            .off(eventNamespace)
-            .removeData(moduleNamespace)
-          ;
-          $menu
-            .off(eventNamespace)
-          ;
-          $document
-            .off(elementNamespace)
-          ;
-          module.disconnect.menuObserver();
-          module.disconnect.selectObserver();
-        },
-
-        observeChanges: function() {
-          if('MutationObserver' in window) {
-            selectObserver = new MutationObserver(module.event.select.mutation);
-            menuObserver   = new MutationObserver(module.event.menu.mutation);
-            module.debug('Setting up mutation observer', selectObserver, menuObserver);
-            module.observe.select();
-            module.observe.menu();
-          }
-        },
-
-        disconnect: {
-          menuObserver: function() {
-            if(menuObserver) {
-              menuObserver.disconnect();
-            }
-          },
-          selectObserver: function() {
-            if(selectObserver) {
-              selectObserver.disconnect();
-            }
-          }
-        },
-        observe: {
-          select: function() {
-            if(module.has.input() && selectObserver) {
-              selectObserver.observe($module[0], {
-                childList : true,
-                subtree   : true
-              });
-            }
-          },
-          menu: function() {
-            if(module.has.menu() && menuObserver) {
-              menuObserver.observe($menu[0], {
-                childList : true,
-                subtree   : true
-              });
-            }
-          }
-        },
-
-        create: {
-          id: function() {
-            id = (Math.random().toString(16) + '000000000').substr(2, 8);
-            elementNamespace = '.' + id;
-            module.verbose('Creating unique id for element', id);
-          },
-          userChoice: function(values) {
-            var
-              $userChoices,
-              $userChoice,
-              isUserValue,
-              html
-            ;
-            values = values || module.get.userValues();
-            if(!values) {
-              return false;
-            }
-            values = Array.isArray(values)
-              ? values
-              : [values]
-            ;
-            $.each(values, function(index, value) {
-              if(module.get.item(value) === false) {
-                html         = settings.templates.addition( module.add.variables(message.addResult, value) );
-                $userChoice  = $('<div />')
-                  .html(html)
-                  .attr('data-' + metadata.value, value)
-                  .attr('data-' + metadata.text, value)
-                  .addClass(className.addition)
-                  .addClass(className.item)
-                ;
-                if(settings.hideAdditions) {
-                  $userChoice.addClass(className.hidden);
-                }
-                $userChoices = ($userChoices === undefined)
-                  ? $userChoice
-                  : $userChoices.add($userChoice)
-                ;
-                module.verbose('Creating user choices for value', value, $userChoice);
-              }
-            });
-            return $userChoices;
-          },
-          userLabels: function(value) {
-            var
-              userValues = module.get.userValues()
-            ;
-            if(userValues) {
-              module.debug('Adding user labels', userValues);
-              $.each(userValues, function(index, value) {
-                module.verbose('Adding custom user value');
-                module.add.label(value, value);
-              });
-            }
-          },
-          menu: function() {
-            $menu = $('<div />')
-              .addClass(className.menu)
-              .appendTo($module)
-            ;
-          },
-          sizer: function() {
-            $sizer = $('<span />')
-              .addClass(className.sizer)
-              .insertAfter($search)
-            ;
-          }
-        },
-
-        search: function(query) {
-          query = (query !== undefined)
-            ? query
-            : module.get.query()
-          ;
-          module.verbose('Searching for query', query);
-          if(module.has.minCharacters(query)) {
-            module.filter(query);
-          }
-          else {
-            module.hide();
-          }
-        },
-
-        select: {
-          firstUnfiltered: function() {
-            module.verbose('Selecting first non-filtered element');
-            module.remove.selectedItem();
-            $item
-              .not(selector.unselectable)
-              .not(selector.addition + selector.hidden)
-                .eq(0)
-                .addClass(className.selected)
-            ;
-          },
-          nextAvailable: function($selected) {
-            $selected = $selected.eq(0);
-            var
-              $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0),
-              $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0),
-              hasNext        = ($nextAvailable.length > 0)
-            ;
-            if(hasNext) {
-              module.verbose('Moving selection to', $nextAvailable);
-              $nextAvailable.addClass(className.selected);
-            }
-            else {
-              module.verbose('Moving selection to', $prevAvailable);
-              $prevAvailable.addClass(className.selected);
-            }
-          }
-        },
-
-        setup: {
-          api: function() {
-            var
-              apiSettings = {
-                debug   : settings.debug,
-                urlData : {
-                  value : module.get.value(),
-                  query : module.get.query()
-                },
-                on    : false
-              }
-            ;
-            module.verbose('First request, initializing API');
-            $module
-              .api(apiSettings)
-            ;
-          },
-          layout: function() {
-            if( $module.is('select') ) {
-              module.setup.select();
-              module.setup.returnedObject();
-            }
-            if( !module.has.menu() ) {
-              module.create.menu();
-            }
-            if ( module.is.selection() && module.is.clearable() && !module.has.clearItem() ) {
-              module.verbose('Adding clear icon');
-              $clear = $('<i />')
-                .addClass('remove icon')
-                .insertBefore($text)
-              ;
-            }
-            if( module.is.search() && !module.has.search() ) {
-              module.verbose('Adding search input');
-              $search = $('<input />')
-                .addClass(className.search)
-                .prop('autocomplete', 'off')
-                .insertBefore($text)
-              ;
-            }
-            if( module.is.multiple() && module.is.searchSelection() && !module.has.sizer()) {
-              module.create.sizer();
-            }
-            if(settings.allowTab) {
-              module.set.tabbable();
-            }
-          },
-          select: function() {
-            var
-              selectValues  = module.get.selectValues()
-            ;
-            module.debug('Dropdown initialized on a select', selectValues);
-            if( $module.is('select') ) {
-              $input = $module;
-            }
-            // see if select is placed correctly already
-            if($input.parent(selector.dropdown).length > 0) {
-              module.debug('UI dropdown already exists. Creating dropdown menu only');
-              $module = $input.closest(selector.dropdown);
-              if( !module.has.menu() ) {
-                module.create.menu();
-              }
-              $menu = $module.children(selector.menu);
-              module.setup.menu(selectValues);
-            }
-            else {
-              module.debug('Creating entire dropdown from select');
-              $module = $('<div />')
-                .attr('class', $input.attr('class') )
-                .addClass(className.selection)
-                .addClass(className.dropdown)
-                .html( templates.dropdown(selectValues, fields, settings.preserveHTML, settings.className) )
-                .insertBefore($input)
-              ;
-              if($input.hasClass(className.multiple) && $input.prop('multiple') === false) {
-                module.error(error.missingMultiple);
-                $input.prop('multiple', true);
-              }
-              if($input.is('[multiple]')) {
-                module.set.multiple();
-              }
-              if ($input.prop('disabled')) {
-                module.debug('Disabling dropdown');
-                $module.addClass(className.disabled);
-              }
-              $input
-                .removeAttr('class')
-                .detach()
-                .prependTo($module)
-              ;
-            }
-            module.refresh();
-          },
-          menu: function(values) {
-            $menu.html( templates.menu(values, fields,settings.preserveHTML,settings.className));
-            $item    = $menu.find(selector.item);
-            $divider = settings.hideDividers ? $item.parent().children(selector.divider) : $();
-          },
-          reference: function() {
-            module.debug('Dropdown behavior was called on select, replacing with closest dropdown');
-            // replace module reference
-            $module  = $module.parent(selector.dropdown);
-            instance = $module.data(moduleNamespace);
-            element  = $module.get(0);
-            module.refresh();
-            module.setup.returnedObject();
-          },
-          returnedObject: function() {
-            var
-              $firstModules = $allModules.slice(0, elementIndex),
-              $lastModules  = $allModules.slice(elementIndex + 1)
-            ;
-            // adjust all modules to use correct reference
-            $allModules = $firstModules.add($module).add($lastModules);
-          }
-        },
-
-        refresh: function() {
-          module.refreshSelectors();
-          module.refreshData();
-        },
-
-        refreshItems: function() {
-          $item    = $menu.find(selector.item);
-          $divider = settings.hideDividers ? $item.parent().children(selector.divider) : $();
-        },
-
-        refreshSelectors: function() {
-          module.verbose('Refreshing selector cache');
-          $text   = $module.find(selector.text);
-          $search = $module.find(selector.search);
-          $input  = $module.find(selector.input);
-          $icon   = $module.find(selector.icon);
-          $combo  = ($module.prev().find(selector.text).length > 0)
-            ? $module.prev().find(selector.text)
-            : $module.prev()
-          ;
-          $menu    = $module.children(selector.menu);
-          $item    = $menu.find(selector.item);
-          $divider = settings.hideDividers ? $item.parent().children(selector.divider) : $();
-        },
-
-        refreshData: function() {
-          module.verbose('Refreshing cached metadata');
-          $item
-            .removeData(metadata.text)
-            .removeData(metadata.value)
-          ;
-        },
-
-        clearData: function() {
-          module.verbose('Clearing metadata');
-          $item
-            .removeData(metadata.text)
-            .removeData(metadata.value)
-          ;
-          $module
-            .removeData(metadata.defaultText)
-            .removeData(metadata.defaultValue)
-            .removeData(metadata.placeholderText)
-          ;
-        },
-
-        toggle: function() {
-          module.verbose('Toggling menu visibility');
-          if( !module.is.active() ) {
-            module.show();
-          }
-          else {
-            module.hide();
-          }
-        },
-
-        show: function(callback) {
-          callback = $.isFunction(callback)
-            ? callback
-            : function(){}
-          ;
-          if(!module.can.show() && module.is.remote()) {
-            module.debug('No API results retrieved, searching before show');
-            module.queryRemote(module.get.query(), module.show);
-          }
-          if( module.can.show() && !module.is.active() ) {
-            module.debug('Showing dropdown');
-            if(module.has.message() && !(module.has.maxSelections() || module.has.allResultsFiltered()) ) {
-              module.remove.message();
-            }
-            if(module.is.allFiltered()) {
-              return true;
-            }
-            if(settings.onShow.call(element) !== false) {
-              module.animate.show(function() {
-                if( module.can.click() ) {
-                  module.bind.intent();
-                }
-                if(module.has.search()) {
-                  module.focusSearch();
-                }
-                module.set.visible();
-                callback.call(element);
-              });
-            }
-          }
-        },
-
-        hide: function(callback) {
-          callback = $.isFunction(callback)
-            ? callback
-            : function(){}
-          ;
-          if( module.is.active() && !module.is.animatingOutward() ) {
-            module.debug('Hiding dropdown');
-            if(settings.onHide.call(element) !== false) {
-              module.animate.hide(function() {
-                module.remove.visible();
-                // hidding search focus
-                if ( module.is.focusedOnSearch() ) {
-                  $search.blur();
-                }
-                callback.call(element);
-              });
-            }
-          } else if( module.can.click() ) {
-              module.unbind.intent();
-          }
-        },
-
-        hideOthers: function() {
-          module.verbose('Finding other dropdowns to hide');
-          $allModules
-            .not($module)
-              .has(selector.menu + '.' + className.visible)
-                .dropdown('hide')
-          ;
-        },
-
-        hideMenu: function() {
-          module.verbose('Hiding menu  instantaneously');
-          module.remove.active();
-          module.remove.visible();
-          $menu.transition('hide');
-        },
-
-        hideSubMenus: function() {
-          var
-            $subMenus = $menu.children(selector.item).find(selector.menu)
-          ;
-          module.verbose('Hiding sub menus', $subMenus);
-          $subMenus.transition('hide');
-        },
-
-        bind: {
-          events: function() {
-            if(hasTouch) {
-              module.bind.touchEvents();
-            }
-            module.bind.keyboardEvents();
-            module.bind.inputEvents();
-            module.bind.mouseEvents();
-          },
-          touchEvents: function() {
-            module.debug('Touch device detected binding additional touch events');
-            if( module.is.searchSelection() ) {
-              // do nothing special yet
-            }
-            else if( module.is.single() ) {
-              $module
-                .on('touchstart' + eventNamespace, module.event.test.toggle)
-              ;
-            }
-            $menu
-              .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
-            ;
-          },
-          keyboardEvents: function() {
-            module.verbose('Binding keyboard events');
-            $module
-              .on('keydown' + eventNamespace, module.event.keydown)
-            ;
-            if( module.has.search() ) {
-              $module
-                .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input)
-              ;
-            }
-            if( module.is.multiple() ) {
-              $document
-                .on('keydown' + elementNamespace, module.event.document.keydown)
-              ;
-            }
-          },
-          inputEvents: function() {
-            module.verbose('Binding input change events');
-            $module
-              .on('change' + eventNamespace, selector.input, module.event.change)
-            ;
-          },
-          mouseEvents: function() {
-            module.verbose('Binding mouse events');
-            if(module.is.multiple()) {
-              $module
-                .on('click'   + eventNamespace, selector.label,  module.event.label.click)
-                .on('click'   + eventNamespace, selector.remove, module.event.remove.click)
-              ;
-            }
-            if( module.is.searchSelection() ) {
-              $module
-                .on('mousedown' + eventNamespace, module.event.mousedown)
-                .on('mouseup'   + eventNamespace, module.event.mouseup)
-                .on('mousedown' + eventNamespace, selector.menu,   module.event.menu.mousedown)
-                .on('mouseup'   + eventNamespace, selector.menu,   module.event.menu.mouseup)
-                .on('click'     + eventNamespace, selector.icon,   module.event.icon.click)
-                .on('click'     + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
-                .on('focus'     + eventNamespace, selector.search, module.event.search.focus)
-                .on('click'     + eventNamespace, selector.search, module.event.search.focus)
-                .on('blur'      + eventNamespace, selector.search, module.event.search.blur)
-                .on('click'     + eventNamespace, selector.text,   module.event.text.focus)
-              ;
-              if(module.is.multiple()) {
-                $module
-                  .on('click' + eventNamespace, module.event.click)
-                ;
-              }
-            }
-            else {
-              if(settings.on == 'click') {
-                $module
-                  .on('click' + eventNamespace, selector.icon, module.event.icon.click)
-                  .on('click' + eventNamespace, module.event.test.toggle)
-                ;
-              }
-              else if(settings.on == 'hover') {
-                $module
-                  .on('mouseenter' + eventNamespace, module.delay.show)
-                  .on('mouseleave' + eventNamespace, module.delay.hide)
-                ;
-              }
-              else {
-                $module
-                  .on(settings.on + eventNamespace, module.toggle)
-                ;
-              }
-              $module
-                .on('mousedown' + eventNamespace, module.event.mousedown)
-                .on('mouseup'   + eventNamespace, module.event.mouseup)
-                .on('focus'     + eventNamespace, module.event.focus)
-                .on('click'     + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
-              ;
-              if(module.has.menuSearch() ) {
-                $module
-                  .on('blur' + eventNamespace, selector.search, module.event.search.blur)
-                ;
-              }
-              else {
-                $module
-                  .on('blur' + eventNamespace, module.event.blur)
-                ;
-              }
-            }
-            $menu
-              .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
-              .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
-              .on('click'      + eventNamespace, selector.item, module.event.item.click)
-            ;
-          },
-          intent: function() {
-            module.verbose('Binding hide intent event to document');
-            if(hasTouch) {
-              $document
-                .on('touchstart' + elementNamespace, module.event.test.touch)
-                .on('touchmove'  + elementNamespace, module.event.test.touch)
-              ;
-            }
-            $document
-              .on('click' + elementNamespace, module.event.test.hide)
-            ;
-          }
-        },
-
-        unbind: {
-          intent: function() {
-            module.verbose('Removing hide intent event from document');
-            if(hasTouch) {
-              $document
-                .off('touchstart' + elementNamespace)
-                .off('touchmove' + elementNamespace)
-              ;
-            }
-            $document
-              .off('click' + elementNamespace)
-            ;
-          }
-        },
-
-        filter: function(query) {
-          var
-            searchTerm = (query !== undefined)
-              ? query
-              : module.get.query(),
-            afterFiltered = function() {
-              if(module.is.multiple()) {
-                module.filterActive();
-              }
-              if(query || (!query && module.get.activeItem().length == 0)) {
-                module.select.firstUnfiltered();
-              }
-              if( module.has.allResultsFiltered() ) {
-                if( settings.onNoResults.call(element, searchTerm) ) {
-                  if(settings.allowAdditions) {
-                    if(settings.hideAdditions) {
-                      module.verbose('User addition with no menu, setting empty style');
-                      module.set.empty();
-                      module.hideMenu();
-                    }
-                  }
-                  else {
-                    module.verbose('All items filtered, showing message', searchTerm);
-                    module.add.message(message.noResults);
-                  }
-                }
-                else {
-                  module.verbose('All items filtered, hiding dropdown', searchTerm);
-                  module.hideMenu();
-                }
-              }
-              else {
-                module.remove.empty();
-                module.remove.message();
-              }
-              if(settings.allowAdditions) {
-                module.add.userSuggestion(module.escape.htmlEntities(query));
-              }
-              if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() ) {
-                module.show();
-              }
-            }
-          ;
-          if(settings.useLabels && module.has.maxSelections()) {
-            return;
-          }
-          if(settings.apiSettings) {
-            if( module.can.useAPI() ) {
-              module.queryRemote(searchTerm, function() {
-                if(settings.filterRemoteData) {
-                  module.filterItems(searchTerm);
-                }
-                var preSelected = $input.val();
-                if(!Array.isArray(preSelected)) {
-                    preSelected = preSelected && preSelected!=="" ? preSelected.split(settings.delimiter) : [];
-                }
-                $.each(preSelected,function(index,value){
-                  $item.filter('[data-value="'+value+'"]')
-                      .addClass(className.filtered)
-                  ;
-                });
-                afterFiltered();
-              });
-            }
-            else {
-              module.error(error.noAPI);
-            }
-          }
-          else {
-            module.filterItems(searchTerm);
-            afterFiltered();
-          }
-        },
-
-        queryRemote: function(query, callback) {
-          var
-            apiSettings = {
-              errorDuration : false,
-              cache         : 'local',
-              throttle      : settings.throttle,
-              urlData       : {
-                query: query
-              },
-              onError: function() {
-                module.add.message(message.serverError);
-                callback();
-              },
-              onFailure: function() {
-                module.add.message(message.serverError);
-                callback();
-              },
-              onSuccess : function(response) {
-                var
-                  values          = response[fields.remoteValues]
-                ;
-                if (!Array.isArray(values)){
-                    values = [];
-                }
-                module.remove.message();
-                module.setup.menu({
-                  values: values
-                });
-
-                if(values.length===0 && !settings.allowAdditions) {
-                  module.add.message(message.noResults);
-                }
-                callback();
-              }
-            }
-          ;
-          if( !$module.api('get request') ) {
-            module.setup.api();
-          }
-          apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings);
-          $module
-            .api('setting', apiSettings)
-            .api('query')
-          ;
-        },
-
-        filterItems: function(query) {
-          var
-            searchTerm = module.remove.diacritics(query !== undefined
-              ? query
-              : module.get.query()
-            ),
-            results          =  null,
-            escapedTerm      = module.escape.string(searchTerm),
-            beginsWithRegExp = new RegExp('^' + escapedTerm, 'igm')
-          ;
-          // avoid loop if we're matching nothing
-          if( module.has.query() ) {
-            results = [];
-
-            module.verbose('Searching for matching values', searchTerm);
-            $item
-              .each(function(){
-                var
-                  $choice = $(this),
-                  text,
-                  value
-                ;
-                if(settings.match === 'both' || settings.match === 'text') {
-                  text = module.remove.diacritics(String(module.get.choiceText($choice, false)));
-                  if(text.search(beginsWithRegExp) !== -1) {
-                    results.push(this);
-                    return true;
-                  }
-                  else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, text)) {
-                    results.push(this);
-                    return true;
-                  }
-                  else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, text)) {
-                    results.push(this);
-                    return true;
-                  }
-                }
-                if(settings.match === 'both' || settings.match === 'value') {
-                  value = module.remove.diacritics(String(module.get.choiceValue($choice, text)));
-                  if(value.search(beginsWithRegExp) !== -1) {
-                    results.push(this);
-                    return true;
-                  }
-                  else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, value)) {
-                    results.push(this);
-                    return true;
-                  }
-                  else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, value)) {
-                    results.push(this);
-                    return true;
-                  }
-                }
-              })
-            ;
-          }
-          module.debug('Showing only matched items', searchTerm);
-          module.remove.filteredItem();
-          if(results) {
-            $item
-              .not(results)
-              .addClass(className.filtered)
-            ;
-          }
-
-          if(!module.has.query()) {
-            $divider
-              .removeClass(className.hidden);
-          } else if(settings.hideDividers === true) {
-            $divider
-              .addClass(className.hidden);
-          } else if(settings.hideDividers === 'empty') {
-            $divider
-              .removeClass(className.hidden)
-              .filter(function() {
-                // First find the last divider in this divider group
-                // Dividers which are direct siblings are considered a group
-                var lastDivider = $(this).nextUntil(selector.item);
-
-                return (lastDivider.length ? lastDivider : $(this))
-                // Count all non-filtered items until the next divider (or end of the dropdown)
-                  .nextUntil(selector.divider)
-                  .filter(selector.item + ":not(." + className.filtered + ")")
-                  // Hide divider if no items are found
-                  .length === 0;
-              })
-              .addClass(className.hidden);
-          }
-        },
-
-        fuzzySearch: function(query, term) {
-          var
-            termLength  = term.length,
-            queryLength = query.length
-          ;
-          query = query.toLowerCase();
-          term  = term.toLowerCase();
-          if(queryLength > termLength) {
-            return false;
-          }
-          if(queryLength === termLength) {
-            return (query === term);
-          }
-          search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
-            var
-              queryCharacter = query.charCodeAt(characterIndex)
-            ;
-            while(nextCharacterIndex < termLength) {
-              if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) {
-                continue search;
-              }
-            }
-            return false;
-          }
-          return true;
-        },
-        exactSearch: function (query, term) {
-          query = query.toLowerCase();
-          term  = term.toLowerCase();
-          return term.indexOf(query) > -1;
-
-        },
-        filterActive: function() {
-          if(settings.useLabels) {
-            $item.filter('.' + className.active)
-              .addClass(className.filtered)
-            ;
-          }
-        },
-
-        focusSearch: function(skipHandler) {
-          if( module.has.search() && !module.is.focusedOnSearch() ) {
-            if(skipHandler) {
-              $module.off('focus' + eventNamespace, selector.search);
-              $search.focus();
-              $module.on('focus'  + eventNamespace, selector.search, module.event.search.focus);
-            }
-            else {
-              $search.focus();
-            }
-          }
-        },
-
-        blurSearch: function() {
-          if( module.has.search() ) {
-            $search.blur();
-          }
-        },
-
-        forceSelection: function() {
-          var
-            $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
-            $activeItem        = $item.not(className.filtered).filter('.' + className.active).eq(0),
-            $selectedItem      = ($currentlySelected.length > 0)
-              ? $currentlySelected
-              : $activeItem,
-            hasSelected = ($selectedItem.length > 0)
-          ;
-          if(hasSelected && !module.is.multiple()) {
-            module.debug('Forcing partial selection to selected item', $selectedItem);
-            module.event.item.click.call($selectedItem, {}, true);
-          }
-          else {
-            if(settings.allowAdditions) {
-              module.set.selected(module.get.query());
-              module.remove.searchTerm();
-            }
-            else {
-              module.remove.searchTerm();
-            }
-          }
-        },
-
-        change: {
-          values: function(values) {
-            if(!settings.allowAdditions) {
-              module.clear();
-            }
-            module.debug('Creating dropdown with specified values', values);
-            module.setup.menu({values: values});
-            $.each(values, function(index, item) {
-              if(item.selected == true) {
-                module.debug('Setting initial selection to', item[fields.value]);
-                module.set.selected(item[fields.value]);
-                if(!module.is.multiple()) {
-                  return false;
-                }
-              }
-            });
-          }
-        },
-
-        event: {
-          change: function() {
-            if(!internalChange) {
-              module.debug('Input changed, updating selection');
-              module.set.selected();
-            }
-          },
-          focus: function() {
-            if(settings.showOnFocus && !activated && module.is.hidden() && !pageLostFocus) {
-              module.show();
-            }
-          },
-          blur: function(event) {
-            pageLostFocus = (document.activeElement === this);
-            if(!activated && !pageLostFocus) {
-              module.remove.activeLabel();
-              module.hide();
-            }
-          },
-          mousedown: function() {
-            if(module.is.searchSelection()) {
-              // prevent menu hiding on immediate re-focus
-              willRefocus = true;
-            }
-            else {
-              // prevents focus callback from occurring on mousedown
-              activated = true;
-            }
-          },
-          mouseup: function() {
-            if(module.is.searchSelection()) {
-              // prevent menu hiding on immediate re-focus
-              willRefocus = false;
-            }
-            else {
-              activated = false;
-            }
-          },
-          click: function(event) {
-            var
-              $target = $(event.target)
-            ;
-            // focus search
-            if($target.is($module)) {
-              if(!module.is.focusedOnSearch()) {
-                module.focusSearch();
-              }
-              else {
-                module.show();
-              }
-            }
-          },
-          search: {
-            focus: function(event) {
-              activated = true;
-              if(module.is.multiple()) {
-                module.remove.activeLabel();
-              }
-              if(settings.showOnFocus || (event.type !== 'focus' && event.type !== 'focusin')) {
-                module.search();
-              }
-            },
-            blur: function(event) {
-              pageLostFocus = (document.activeElement === this);
-              if(module.is.searchSelection() && !willRefocus) {
-                if(!itemActivated && !pageLostFocus) {
-                  if(settings.forceSelection) {
-                    module.forceSelection();
-                  }
-                  module.hide();
-                }
-              }
-              willRefocus = false;
-            }
-          },
-          clearIcon: {
-            click: function(event) {
-              module.clear();
-              if(module.is.searchSelection()) {
-                module.remove.searchTerm();
-              }
-              module.hide();
-              event.stopPropagation();
-            }
-          },
-          icon: {
-            click: function(event) {
-              iconClicked=true;
-              if(module.has.search()) {
-                if(!module.is.active()) {
-                    if(settings.showOnFocus){
-                      module.focusSearch();
-                    } else {
-                      module.toggle();
-                    }
-                } else {
-                  module.blurSearch();
-                }
-              } else {
-                module.toggle();
-              }
-            }
-          },
-          text: {
-            focus: function(event) {
-              activated = true;
-              module.focusSearch();
-            }
-          },
-          input: function(event) {
-            if(module.is.multiple() || module.is.searchSelection()) {
-              module.set.filtered();
-            }
-            clearTimeout(module.timer);
-            module.timer = setTimeout(module.search, settings.delay.search);
-          },
-          label: {
-            click: function(event) {
-              var
-                $label        = $(this),
-                $labels       = $module.find(selector.label),
-                $activeLabels = $labels.filter('.' + className.active),
-                $nextActive   = $label.nextAll('.' + className.active),
-                $prevActive   = $label.prevAll('.' + className.active),
-                $range = ($nextActive.length > 0)
-                  ? $label.nextUntil($nextActive).add($activeLabels).add($label)
-                  : $label.prevUntil($prevActive).add($activeLabels).add($label)
-              ;
-              if(event.shiftKey) {
-                $activeLabels.removeClass(className.active);
-                $range.addClass(className.active);
-              }
-              else if(event.ctrlKey) {
-                $label.toggleClass(className.active);
-              }
-              else {
-                $activeLabels.removeClass(className.active);
-                $label.addClass(className.active);
-              }
-              settings.onLabelSelect.apply(this, $labels.filter('.' + className.active));
-            }
-          },
-          remove: {
-            click: function() {
-              var
-                $label = $(this).parent()
-              ;
-              if( $label.hasClass(className.active) ) {
-                // remove all selected labels
-                module.remove.activeLabels();
-              }
-              else {
-                // remove this label only
-                module.remove.activeLabels( $label );
-              }
-            }
-          },
-          test: {
-            toggle: function(event) {
-              var
-                toggleBehavior = (module.is.multiple())
-                  ? module.show
-                  : module.toggle
-              ;
-              if(module.is.bubbledLabelClick(event) || module.is.bubbledIconClick(event)) {
-                return;
-              }
-              if( module.determine.eventOnElement(event, toggleBehavior) ) {
-                event.preventDefault();
-              }
-            },
-            touch: function(event) {
-              module.determine.eventOnElement(event, function() {
-                if(event.type == 'touchstart') {
-                  module.timer = setTimeout(function() {
-                    module.hide();
-                  }, settings.delay.touch);
-                }
-                else if(event.type == 'touchmove') {
-                  clearTimeout(module.timer);
-                }
-              });
-              event.stopPropagation();
-            },
-            hide: function(event) {
-              if(module.determine.eventInModule(event, module.hide)){
-                if(element.id && $(event.target).attr('for') === element.id){
-                  event.preventDefault();
-                }
-              }
-            }
-          },
-          select: {
-            mutation: function(mutations) {
-              module.debug('<select> modified, recreating menu');
-              if(module.is.selectMutation(mutations)) {
-                module.disconnect.selectObserver();
-                module.refresh();
-                module.setup.select();
-                module.set.selected();
-                module.observe.select();
-              }
-            }
-          },
-          menu: {
-            mutation: function(mutations) {
-              var
-                mutation   = mutations[0],
-                $addedNode = mutation.addedNodes
-                  ? $(mutation.addedNodes[0])
-                  : $(false),
-                $removedNode = mutation.removedNodes
-                  ? $(mutation.removedNodes[0])
-                  : $(false),
-                $changedNodes  = $addedNode.add($removedNode),
-                isUserAddition = $changedNodes.is(selector.addition) || $changedNodes.closest(selector.addition).length > 0,
-                isMessage      = $changedNodes.is(selector.message)  || $changedNodes.closest(selector.message).length > 0
-              ;
-              if(isUserAddition || isMessage) {
-                module.debug('Updating item selector cache');
-                module.refreshItems();
-              }
-              else {
-                module.debug('Menu modified, updating selector cache');
-                module.refresh();
-              }
-            },
-            mousedown: function() {
-              itemActivated = true;
-            },
-            mouseup: function() {
-              itemActivated = false;
-            }
-          },
-          item: {
-            mouseenter: function(event) {
-              var
-                $target        = $(event.target),
-                $item          = $(this),
-                $subMenu       = $item.children(selector.menu),
-                $otherMenus    = $item.siblings(selector.item).children(selector.menu),
-                hasSubMenu     = ($subMenu.length > 0),
-                isBubbledEvent = ($subMenu.find($target).length > 0)
-              ;
-              if( !isBubbledEvent && hasSubMenu ) {
-                clearTimeout(module.itemTimer);
-                module.itemTimer = setTimeout(function() {
-                  module.verbose('Showing sub-menu', $subMenu);
-                  $.each($otherMenus, function() {
-                    module.animate.hide(false, $(this));
-                  });
-                  module.animate.show(false, $subMenu);
-                }, settings.delay.show);
-                event.preventDefault();
-              }
-            },
-            mouseleave: function(event) {
-              var
-                $subMenu = $(this).children(selector.menu)
-              ;
-              if($subMenu.length > 0) {
-                clearTimeout(module.itemTimer);
-                module.itemTimer = setTimeout(function() {
-                  module.verbose('Hiding sub-menu', $subMenu);
-                  module.animate.hide(false, $subMenu);
-                }, settings.delay.hide);
-              }
-            },
-            click: function (event, skipRefocus) {
-              var
-                $choice        = $(this),
-                $target        = (event)
-                  ? $(event.target)
-                  : $(''),
-                $subMenu       = $choice.find(selector.menu),
-                text           = module.get.choiceText($choice),
-                value          = module.get.choiceValue($choice, text),
-                hasSubMenu     = ($subMenu.length > 0),
-                isBubbledEvent = ($subMenu.find($target).length > 0)
-              ;
-              // prevents IE11 bug where menu receives focus even though `tabindex=-1`
-              if (document.activeElement.tagName.toLowerCase() !== 'input') {
-                $(document.activeElement).blur();
-              }
-              if(!isBubbledEvent && (!hasSubMenu || settings.allowCategorySelection)) {
-                if(module.is.searchSelection()) {
-                  if(settings.allowAdditions) {
-                    module.remove.userAddition();
-                  }
-                  module.remove.searchTerm();
-                  if(!module.is.focusedOnSearch() && !(skipRefocus == true)) {
-                    module.focusSearch(true);
-                  }
-                }
-                if(!settings.useLabels) {
-                  module.remove.filteredItem();
-                  module.set.scrollPosition($choice);
-                }
-                module.determine.selectAction.call(this, text, value);
-              }
-            }
-          },
-
-          document: {
-            // label selection should occur even when element has no focus
-            keydown: function(event) {
-              var
-                pressedKey    = event.which,
-                isShortcutKey = module.is.inObject(pressedKey, keys)
-              ;
-              if(isShortcutKey) {
-                var
-                  $label            = $module.find(selector.label),
-                  $activeLabel      = $label.filter('.' + className.active),
-                  activeValue       = $activeLabel.data(metadata.value),
-                  labelIndex        = $label.index($activeLabel),
-                  labelCount        = $label.length,
-                  hasActiveLabel    = ($activeLabel.length > 0),
-                  hasMultipleActive = ($activeLabel.length > 1),
-                  isFirstLabel      = (labelIndex === 0),
-                  isLastLabel       = (labelIndex + 1 == labelCount),
-                  isSearch          = module.is.searchSelection(),
-                  isFocusedOnSearch = module.is.focusedOnSearch(),
-                  isFocused         = module.is.focused(),
-                  caretAtStart      = (isFocusedOnSearch && module.get.caretPosition(false) === 0),
-                  isSelectedSearch  = (caretAtStart && module.get.caretPosition(true) !== 0),
-                  $nextLabel
-                ;
-                if(isSearch && !hasActiveLabel && !isFocusedOnSearch) {
-                  return;
-                }
-
-                if(pressedKey == keys.leftArrow) {
-                  // activate previous label
-                  if((isFocused || caretAtStart) && !hasActiveLabel) {
-                    module.verbose('Selecting previous label');
-                    $label.last().addClass(className.active);
-                  }
-                  else if(hasActiveLabel) {
-                    if(!event.shiftKey) {
-                      module.verbose('Selecting previous label');
-                      $label.removeClass(className.active);
-                    }
-                    else {
-                      module.verbose('Adding previous label to selection');
-                    }
-                    if(isFirstLabel && !hasMultipleActive) {
-                      $activeLabel.addClass(className.active);
-                    }
-                    else {
-                      $activeLabel.prev(selector.siblingLabel)
-                        .addClass(className.active)
-                        .end()
-                      ;
-                    }
-                    event.preventDefault();
-                  }
-                }
-                else if(pressedKey == keys.rightArrow) {
-                  // activate first label
-                  if(isFocused && !hasActiveLabel) {
-                    $label.first().addClass(className.active);
-                  }
-                  // activate next label
-                  if(hasActiveLabel) {
-                    if(!event.shiftKey) {
-                      module.verbose('Selecting next label');
-                      $label.removeClass(className.active);
-                    }
-                    else {
-                      module.verbose('Adding next label to selection');
-                    }
-                    if(isLastLabel) {
-                      if(isSearch) {
-                        if(!isFocusedOnSearch) {
-                          module.focusSearch();
-                        }
-                        else {
-                          $label.removeClass(className.active);
-                        }
-                      }
-                      else if(hasMultipleActive) {
-                        $activeLabel.next(selector.siblingLabel).addClass(className.active);
-                      }
-                      else {
-                        $activeLabel.addClass(className.active);
-                      }
-                    }
-                    else {
-                      $activeLabel.next(selector.siblingLabel).addClass(className.active);
-                    }
-                    event.preventDefault();
-                  }
-                }
-                else if(pressedKey == keys.deleteKey || pressedKey == keys.backspace) {
-                  if(hasActiveLabel) {
-                    module.verbose('Removing active labels');
-                    if(isLastLabel) {
-                      if(isSearch && !isFocusedOnSearch) {
-                        module.focusSearch();
-                      }
-                    }
-                    $activeLabel.last().next(selector.siblingLabel).addClass(className.active);
-                    module.remove.activeLabels($activeLabel);
-                    event.preventDefault();
-                  }
-                  else if(caretAtStart && !isSelectedSearch && !hasActiveLabel && pressedKey == keys.backspace) {
-                    module.verbose('Removing last label on input backspace');
-                    $activeLabel = $label.last().addClass(className.active);
-                    module.remove.activeLabels($activeLabel);
-                  }
-                }
-                else {
-                  $activeLabel.removeClass(className.active);
-                }
-              }
-            }
-          },
-
-          keydown: function(event) {
-            var
-              pressedKey    = event.which,
-              isShortcutKey = module.is.inObject(pressedKey, keys)
-            ;
-            if(isShortcutKey) {
-              var
-                $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),
-                $activeItem        = $menu.children('.' + className.active).eq(0),
-                $selectedItem      = ($currentlySelected.length > 0)
-                  ? $currentlySelected
-                  : $activeItem,
-                $visibleItems = ($selectedItem.length > 0)
-                  ? $selectedItem.siblings(':not(.' + className.filtered +')').addBack()
-                  : $menu.children(':not(.' + className.filtered +')'),
-                $subMenu              = $selectedItem.children(selector.menu),
-                $parentMenu           = $selectedItem.closest(selector.menu),
-                inVisibleMenu         = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),
-                hasSubMenu            = ($subMenu.length> 0),
-                hasSelectedItem       = ($selectedItem.length > 0),
-                selectedIsSelectable  = ($selectedItem.not(selector.unselectable).length > 0),
-                delimiterPressed      = (pressedKey == keys.delimiter && settings.allowAdditions && module.is.multiple()),
-                isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),
-                $nextItem,
-                isSubMenuItem,
-                newIndex
-              ;
-              // allow selection with menu closed
-              if(isAdditionWithoutMenu) {
-                module.verbose('Selecting item from keyboard shortcut', $selectedItem);
-                module.event.item.click.call($selectedItem, event);
-                if(module.is.searchSelection()) {
-                  module.remove.searchTerm();
-                }
-                if(module.is.multiple()){
-                    event.preventDefault();
-                }
-              }
-
-              // visible menu keyboard shortcuts
-              if( module.is.visible() ) {
-
-                // enter (select or open sub-menu)
-                if(pressedKey == keys.enter || delimiterPressed) {
-                  if(pressedKey == keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {
-                    module.verbose('Pressed enter on unselectable category, opening sub menu');
-                    pressedKey = keys.rightArrow;
-                  }
-                  else if(selectedIsSelectable) {
-                    module.verbose('Selecting item from keyboard shortcut', $selectedItem);
-                    module.event.item.click.call($selectedItem, event);
-                    if(module.is.searchSelection()) {
-                      module.remove.searchTerm();
-                      if(module.is.multiple()) {
-                          $search.focus();
-                      }
-                    }
-                  }
-                  event.preventDefault();
-                }
-
-                // sub-menu actions
-                if(hasSelectedItem) {
-
-                  if(pressedKey == keys.leftArrow) {
-
-                    isSubMenuItem = ($parentMenu[0] !== $menu[0]);
-
-                    if(isSubMenuItem) {
-                      module.verbose('Left key pressed, closing sub-menu');
-                      module.animate.hide(false, $parentMenu);
-                      $selectedItem
-                        .removeClass(className.selected)
-                      ;
-                      $parentMenu
-                        .closest(selector.item)
-                          .addClass(className.selected)
-                      ;
-                      event.preventDefault();
-                    }
-                  }
-
-                  // right arrow (show sub-menu)
-                  if(pressedKey == keys.rightArrow) {
-                    if(hasSubMenu) {
-                      module.verbose('Right key pressed, opening sub-menu');
-                      module.animate.show(false, $subMenu);
-                      $selectedItem
-                        .removeClass(className.selected)
-                      ;
-                      $subMenu
-                        .find(selector.item).eq(0)
-                          .addClass(className.selected)
-                      ;
-                      event.preventDefault();
-                    }
-                  }
-                }
-
-                // up arrow (traverse menu up)
-                if(pressedKey == keys.upArrow) {
-                  $nextItem = (hasSelectedItem && inVisibleMenu)
-                    ? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
-                    : $item.eq(0)
-                  ;
-                  if($visibleItems.index( $nextItem ) < 0) {
-                    module.verbose('Up key pressed but reached top of current menu');
-                    event.preventDefault();
-                    return;
-                  }
-                  else {
-                    module.verbose('Up key pressed, changing active item');
-                    $selectedItem
-                      .removeClass(className.selected)
-                    ;
-                    $nextItem
-                      .addClass(className.selected)
-                    ;
-                    module.set.scrollPosition($nextItem);
-                    if(settings.selectOnKeydown && module.is.single()) {
-                      module.set.selectedItem($nextItem);
-                    }
-                  }
-                  event.preventDefault();
-                }
-
-                // down arrow (traverse menu down)
-                if(pressedKey == keys.downArrow) {
-                  $nextItem = (hasSelectedItem && inVisibleMenu)
-                    ? $nextItem = $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
-                    : $item.eq(0)
-                  ;
-                  if($nextItem.length === 0) {
-                    module.verbose('Down key pressed but reached bottom of current menu');
-                    event.preventDefault();
-                    return;
-                  }
-                  else {
-                    module.verbose('Down key pressed, changing active item');
-                    $item
-                      .removeClass(className.selected)
-                    ;
-                    $nextItem
-                      .addClass(className.selected)
-                    ;
-                    module.set.scrollPosition($nextItem);
-                    if(settings.selectOnKeydown && module.is.single()) {
-                      module.set.selectedItem($nextItem);
-                    }
-                  }
-                  event.preventDefault();
-                }
-
-                // page down (show next page)
-                if(pressedKey == keys.pageUp) {
-                  module.scrollPage('up');
-                  event.preventDefault();
-                }
-                if(pressedKey == keys.pageDown) {
-                  module.scrollPage('down');
-                  event.preventDefault();
-                }
-
-                // escape (close menu)
-                if(pressedKey == keys.escape) {
-                  module.verbose('Escape key pressed, closing dropdown');
-                  module.hide();
-                }
-
-              }
-              else {
-                // delimiter key
-                if(delimiterPressed) {
-                  event.preventDefault();
-                }
-                // down arrow (open menu)
-                if(pressedKey == keys.downArrow && !module.is.visible()) {
-                  module.verbose('Down key pressed, showing dropdown');
-                  module.show();
-                  event.preventDefault();
-                }
-              }
-            }
-            else {
-              if( !module.has.search() ) {
-                module.set.selectedLetter( String.fromCharCode(pressedKey) );
-              }
-            }
-          }
-        },
-
-        trigger: {
-          change: function() {
-            var
-              events       = document.createEvent('HTMLEvents'),
-              inputElement = $input[0]
-            ;
-            if(inputElement) {
-              module.verbose('Triggering native change event');
-              events.initEvent('change', true, false);
-              inputElement.dispatchEvent(events);
-            }
-          }
-        },
-
-        determine: {
-          selectAction: function(text, value) {
-            selectActionActive = true;
-            module.verbose('Determining action', settings.action);
-            if( $.isFunction( module.action[settings.action] ) ) {
-              module.verbose('Triggering preset action', settings.action, text, value);
-              module.action[ settings.action ].call(element, text, value, this);
-            }
-            else if( $.isFunction(settings.action) ) {
-              module.verbose('Triggering user action', settings.action, text, value);
-              settings.action.call(element, text, value, this);
-            }
-            else {
-              module.error(error.action, settings.action);
-            }
-            selectActionActive = false;
-          },
-          eventInModule: function(event, callback) {
-            var
-              $target    = $(event.target),
-              inDocument = ($target.closest(document.documentElement).length > 0),
-              inModule   = ($target.closest($module).length > 0)
-            ;
-            callback = $.isFunction(callback)
-              ? callback
-              : function(){}
-            ;
-            if(inDocument && !inModule) {
-              module.verbose('Triggering event', callback);
-              callback();
-              return true;
-            }
-            else {
-              module.verbose('Event occurred in dropdown, canceling callback');
-              return false;
-            }
-          },
-          eventOnElement: function(event, callback) {
-            var
-              $target      = $(event.target),
-              $label       = $target.closest(selector.siblingLabel),
-              inVisibleDOM = document.body.contains(event.target),
-              notOnLabel   = ($module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels)),
-              notInMenu    = ($target.closest($menu).length === 0)
-            ;
-            callback = $.isFunction(callback)
-              ? callback
-              : function(){}
-            ;
-            if(inVisibleDOM && notOnLabel && notInMenu) {
-              module.verbose('Triggering event', callback);
-              callback();
-              return true;
-            }
-            else {
-              module.verbose('Event occurred in dropdown menu, canceling callback');
-              return false;
-            }
-          }
-        },
-
-        action: {
-
-          nothing: function() {},
-
-          activate: function(text, value, element) {
-            value = (value !== undefined)
-              ? value
-              : text
-            ;
-            if( module.can.activate( $(element) ) ) {
-              module.set.selected(value, $(element));
-              if(!module.is.multiple()) {
-                module.hideAndClear();
-              }
-            }
-          },
-
-          select: function(text, value, element) {
-            value = (value !== undefined)
-              ? value
-              : text
-            ;
-            if( module.can.activate( $(element) ) ) {
-              module.set.value(value, text, $(element));
-              if(!module.is.multiple()) {
-                module.hideAndClear();
-              }
-            }
-          },
-
-          combo: function(text, value, element) {
-            value = (value !== undefined)
-              ? value
-              : text
-            ;
-            module.set.selected(value, $(element));
-            module.hideAndClear();
-          },
-
-          hide: function(text, value, element) {
-            module.set.value(value, text, $(element));
-            module.hideAndClear();
-          }
-
-        },
-
-        get: {
-          id: function() {
-            return id;
-          },
-          defaultText: function() {
-            return $module.data(metadata.defaultText);
-          },
-          defaultValue: function() {
-            return $module.data(metadata.defaultValue);
-          },
-          placeholderText: function() {
-            if(settings.placeholder != 'auto' && typeof settings.placeholder == 'string') {
-              return settings.placeholder;
-            }
-            return $module.data(metadata.placeholderText) || '';
-          },
-          text: function() {
-            return $text.text();
-          },
-          query: function() {
-            return $.trim($search.val());
-          },
-          searchWidth: function(value) {
-            value = (value !== undefined)
-              ? value
-              : $search.val()
-            ;
-            $sizer.text(value);
-            // prevent rounding issues
-            return Math.ceil( $sizer.width() + 1);
-          },
-          selectionCount: function() {
-            var
-              values = module.get.values(),
-              count
-            ;
-            count = ( module.is.multiple() )
-              ? Array.isArray(values)
-                ? values.length
-                : 0
-              : (module.get.value() !== '')
-                ? 1
-                : 0
-            ;
-            return count;
-          },
-          transition: function($subMenu) {
-            return (settings.transition == 'auto')
-              ? module.is.upward($subMenu)
-                ? 'slide up'
-                : 'slide down'
-              : settings.transition
-            ;
-          },
-          userValues: function() {
-            var
-              values = module.get.values()
-            ;
-            if(!values) {
-              return false;
-            }
-            values = Array.isArray(values)
-              ? values
-              : [values]
-            ;
-            return $.grep(values, function(value) {
-              return (module.get.item(value) === false);
-            });
-          },
-          uniqueArray: function(array) {
-            return $.grep(array, function (value, index) {
-                return $.inArray(value, array) === index;
-            });
-          },
-          caretPosition: function(returnEndPos) {
-            var
-              input = $search.get(0),
-              range,
-              rangeLength
-            ;
-            if(returnEndPos && 'selectionEnd' in input){
-              return input.selectionEnd;
-            }
-            else if(!returnEndPos && 'selectionStart' in input) {
-              return input.selectionStart;
-            }
-            if (document.selection) {
-              input.focus();
-              range       = document.selection.createRange();
-              rangeLength = range.text.length;
-              if(returnEndPos) {
-                return rangeLength;
-              }
-              range.moveStart('character', -input.value.length);
-              return range.text.length - rangeLength;
-            }
-          },
-          value: function() {
-            var
-              value = ($input.length > 0)
-                ? $input.val()
-                : $module.data(metadata.value),
-              isEmptyMultiselect = (Array.isArray(value) && value.length === 1 && value[0] === '')
-            ;
-            // prevents placeholder element from being selected when multiple
-            return (value === undefined || isEmptyMultiselect)
-              ? ''
-              : value
-            ;
-          },
-          values: function() {
-            var
-              value = module.get.value()
-            ;
-            if(value === '') {
-              return '';
-            }
-            return ( !module.has.selectInput() && module.is.multiple() )
-              ? (typeof value == 'string') // delimited string
-                ? module.escape.htmlEntities(value).split(settings.delimiter)
-                : ''
-              : value
-            ;
-          },
-          remoteValues: function() {
-            var
-              values = module.get.values(),
-              remoteValues = false
-            ;
-            if(values) {
-              if(typeof values == 'string') {
-                values = [values];
-              }
-              $.each(values, function(index, value) {
-                var
-                  name = module.read.remoteData(value)
-                ;
-                module.verbose('Restoring value from session data', name, value);
-                if(name) {
-                  if(!remoteValues) {
-                    remoteValues = {};
-                  }
-                  remoteValues[value] = name;
-                }
-              });
-            }
-            return remoteValues;
-          },
-          choiceText: function($choice, preserveHTML) {
-            preserveHTML = (preserveHTML !== undefined)
-              ? preserveHTML
-              : settings.preserveHTML
-            ;
-            if($choice) {
-              if($choice.find(selector.menu).length > 0) {
-                module.verbose('Retrieving text of element with sub-menu');
-                $choice = $choice.clone();
-                $choice.find(selector.menu).remove();
-                $choice.find(selector.menuIcon).remove();
-              }
-              return ($choice.data(metadata.text) !== undefined)
-                ? $choice.data(metadata.text)
-                : (preserveHTML)
-                  ? $.trim($choice.html())
-                  : $.trim($choice.text())
-              ;
-            }
-          },
-          choiceValue: function($choice, choiceText) {
-            choiceText = choiceText || module.get.choiceText($choice);
-            if(!$choice) {
-              return false;
-            }
-            return ($choice.data(metadata.value) !== undefined)
-              ? String( $choice.data(metadata.value) )
-              : (typeof choiceText === 'string')
-                ? $.trim(choiceText.toLowerCase())
-                : String(choiceText)
-            ;
-          },
-          inputEvent: function() {
-            var
-              input = $search[0]
-            ;
-            if(input) {
-              return (input.oninput !== undefined)
-                ? 'input'
-                : (input.onpropertychange !== undefined)
-                  ? 'propertychange'
-                  : 'keyup'
-              ;
-            }
-            return false;
-          },
-          selectValues: function() {
-            var
-              select = {},
-              oldGroup = []
-            ;
-            select.values = [];
-            $module
-              .find('option')
-                .each(function() {
-                  var
-                    $option  = $(this),
-                    name     = $option.html(),
-                    disabled = $option.attr('disabled'),
-                    value    = ( $option.attr('value') !== undefined )
-                      ? $option.attr('value')
-                      : name,
-                    group = $option.parent('optgroup')
-                  ;
-                  if(settings.placeholder === 'auto' && value === '') {
-                    select.placeholder = name;
-                  }
-                  else {
-                    if(group.length !== oldGroup.length || group[0] !== oldGroup[0]) {
-                      select.values.push({
-                        type: 'header',
-                        divider: settings.headerDivider,
-                        name: group.attr('label') || ''
-                      });
-                      oldGroup = group;
-                    }
-                    select.values.push({
-                      name     : name,
-                      value    : value,
-                      disabled : disabled
-                    });
-                  }
-                })
-            ;
-            if(settings.placeholder && settings.placeholder !== 'auto') {
-              module.debug('Setting placeholder value to', settings.placeholder);
-              select.placeholder = settings.placeholder;
-            }
-            if(settings.sortSelect) {
-              if(settings.sortSelect === true) {
-                select.values.sort(function(a, b) {
-                  return a.name.localeCompare(b.name);
-                });
-              } else if(settings.sortSelect === 'natural') {
-                select.values.sort(function(a, b) {
-                  return (a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
-                });
-              } else if($.isFunction(settings.sortSelect)) {
-                select.values.sort(settings.sortSelect);
-              }
-              module.debug('Retrieved and sorted values from select', select);
-            }
-            else {
-              module.debug('Retrieved values from select', select);
-            }
-            return select;
-          },
-          activeItem: function() {
-            return $item.filter('.'  + className.active);
-          },
-          selectedItem: function() {
-            var
-              $selectedItem = $item.not(selector.unselectable).filter('.'  + className.selected)
-            ;
-            return ($selectedItem.length > 0)
-              ? $selectedItem
-              : $item.eq(0)
-            ;
-          },
-          itemWithAdditions: function(value) {
-            var
-              $items       = module.get.item(value),
-              $userItems   = module.create.userChoice(value),
-              hasUserItems = ($userItems && $userItems.length > 0)
-            ;
-            if(hasUserItems) {
-              $items = ($items.length > 0)
-                ? $items.add($userItems)
-                : $userItems
-              ;
-            }
-            return $items;
-          },
-          item: function(value, strict) {
-            var
-              $selectedItem = false,
-              shouldSearch,
-              isMultiple
-            ;
-            value = (value !== undefined)
-              ? value
-              : ( module.get.values() !== undefined)
-                ? module.get.values()
-                : module.get.text()
-            ;
-            isMultiple = (module.is.multiple() && Array.isArray(value));
-            shouldSearch = (isMultiple)
-              ? (value.length > 0)
-              : (value !== undefined && value !== null)
-            ;
-            strict     = (value === '' || value === false  || value === true)
-              ? true
-              : strict || false
-            ;
-            if(shouldSearch) {
-              $item
-                .each(function() {
-                  var
-                    $choice       = $(this),
-                    optionText    = module.get.choiceText($choice),
-                    optionValue   = module.get.choiceValue($choice, optionText)
-                  ;
-                  // safe early exit
-                  if(optionValue === null || optionValue === undefined) {
-                    return;
-                  }
-                  if(isMultiple) {
-                    if($.inArray( String(optionValue), value) !== -1) {
-                      $selectedItem = ($selectedItem)
-                        ? $selectedItem.add($choice)
-                        : $choice
-                      ;
-                    }
-                  }
-                  else if(strict) {
-                    module.verbose('Ambiguous dropdown value using strict type check', $choice, value);
-                    if( optionValue === value) {
-                      $selectedItem = $choice;
-                      return true;
-                    }
-                  }
-                  else {
-                    if( String(optionValue) == String(value)) {
-                      module.verbose('Found select item by value', optionValue, value);
-                      $selectedItem = $choice;
-                      return true;
-                    }
-                  }
-                })
-              ;
-            }
-            return $selectedItem;
-          }
-        },
-
-        check: {
-          maxSelections: function(selectionCount) {
-            if(settings.maxSelections) {
-              selectionCount = (selectionCount !== undefined)
-                ? selectionCount
-                : module.get.selectionCount()
-              ;
-              if(selectionCount >= settings.maxSelections) {
-                module.debug('Maximum selection count reached');
-                if(settings.useLabels) {
-                  $item.addClass(className.filtered);
-                  module.add.message(message.maxSelections);
-                }
-                return true;
-              }
-              else {
-                module.verbose('No longer at maximum selection count');
-                module.remove.message();
-                module.remove.filteredItem();
-                if(module.is.searchSelection()) {
-                  module.filterItems();
-                }
-                return false;
-              }
-            }
-            return true;
-          }
-        },
-
-        restore: {
-          defaults: function() {
-            module.clear();
-            module.restore.defaultText();
-            module.restore.defaultValue();
-          },
-          defaultText: function() {
-            var
-              defaultText     = module.get.defaultText(),
-              placeholderText = module.get.placeholderText
-            ;
-            if(defaultText === placeholderText) {
-              module.debug('Restoring default placeholder text', defaultText);
-              module.set.placeholderText(defaultText);
-            }
-            else {
-              module.debug('Restoring default text', defaultText);
-              module.set.text(defaultText);
-            }
-          },
-          placeholderText: function() {
-            module.set.placeholderText();
-          },
-          defaultValue: function() {
-            var
-              defaultValue = module.get.defaultValue()
-            ;
-            if(defaultValue !== undefined) {
-              module.debug('Restoring default value', defaultValue);
-              if(defaultValue !== '') {
-                module.set.value(defaultValue);
-                module.set.selected();
-              }
-              else {
-                module.remove.activeItem();
-                module.remove.selectedItem();
-              }
-            }
-          },
-          labels: function() {
-            if(settings.allowAdditions) {
-              if(!settings.useLabels) {
-                module.error(error.labels);
-                settings.useLabels = true;
-              }
-              module.debug('Restoring selected values');
-              module.create.userLabels();
-            }
-            module.check.maxSelections();
-          },
-          selected: function() {
-            module.restore.values();
-            if(module.is.multiple()) {
-              module.debug('Restoring previously selected values and labels');
-              module.restore.labels();
-            }
-            else {
-              module.debug('Restoring previously selected values');
-            }
-          },
-          values: function() {
-            // prevents callbacks from occurring on initial load
-            module.set.initialLoad();
-            if(settings.apiSettings && settings.saveRemoteData && module.get.remoteValues()) {
-              module.restore.remoteValues();
-            }
-            else {
-              module.set.selected();
-            }
-            var value = module.get.value();
-            if(value && value !== '' && !(Array.isArray(value) && value.length === 0)) {
-              $input.removeClass(className.noselection);
-            } else {
-              $input.addClass(className.noselection);
-            }
-            module.remove.initialLoad();
-          },
-          remoteValues: function() {
-            var
-              values = module.get.remoteValues()
-            ;
-            module.debug('Recreating selected from session data', values);
-            if(values) {
-              if( module.is.single() ) {
-                $.each(values, function(value, name) {
-                  module.set.text(name);
-                });
-              }
-              else {
-                $.each(values, function(value, name) {
-                  module.add.label(value, name);
-                });
-              }
-            }
-          }
-        },
-
-        read: {
-          remoteData: function(value) {
-            var
-              name
-            ;
-            if(window.Storage === undefined) {
-              module.error(error.noStorage);
-              return;
-            }
-            name = sessionStorage.getItem(value);
-            return (name !== undefined)
-              ? name
-              : false
-            ;
-          }
-        },
-
-        save: {
-          defaults: function() {
-            module.save.defaultText();
-            module.save.placeholderText();
-            module.save.defaultValue();
-          },
-          defaultValue: function() {
-            var
-              value = module.get.value()
-            ;
-            module.verbose('Saving default value as', value);
-            $module.data(metadata.defaultValue, value);
-          },
-          defaultText: function() {
-            var
-              text = module.get.text()
-            ;
-            module.verbose('Saving default text as', text);
-            $module.data(metadata.defaultText, text);
-          },
-          placeholderText: function() {
-            var
-              text
-            ;
-            if(settings.placeholder !== false && $text.hasClass(className.placeholder)) {
-              text = module.get.text();
-              module.verbose('Saving placeholder text as', text);
-              $module.data(metadata.placeholderText, text);
-            }
-          },
-          remoteData: function(name, value) {
-            if(window.Storage === undefined) {
-              module.error(error.noStorage);
-              return;
-            }
-            module.verbose('Saving remote data to session storage', value, name);
-            sessionStorage.setItem(value, name);
-          }
-        },
-
-        clear: function() {
-          if(module.is.multiple() && settings.useLabels) {
-            module.remove.labels();
-          }
-          else {
-            module.remove.activeItem();
-            module.remove.selectedItem();
-            module.remove.filteredItem();
-          }
-          module.set.placeholderText();
-          module.clearValue();
-        },
-
-        clearValue: function() {
-          module.set.value('');
-        },
-
-        scrollPage: function(direction, $selectedItem) {
-          var
-            $currentItem  = $selectedItem || module.get.selectedItem(),
-            $menu         = $currentItem.closest(selector.menu),
-            menuHeight    = $menu.outerHeight(),
-            currentScroll = $menu.scrollTop(),
-            itemHeight    = $item.eq(0).outerHeight(),
-            itemsPerPage  = Math.floor(menuHeight / itemHeight),
-            maxScroll     = $menu.prop('scrollHeight'),
-            newScroll     = (direction == 'up')
-              ? currentScroll - (itemHeight * itemsPerPage)
-              : currentScroll + (itemHeight * itemsPerPage),
-            $selectableItem = $item.not(selector.unselectable),
-            isWithinRange,
-            $nextSelectedItem,
-            elementIndex
-          ;
-          elementIndex      = (direction == 'up')
-            ? $selectableItem.index($currentItem) - itemsPerPage
-            : $selectableItem.index($currentItem) + itemsPerPage
-          ;
-          isWithinRange = (direction == 'up')
-            ? (elementIndex >= 0)
-            : (elementIndex < $selectableItem.length)
-          ;
-          $nextSelectedItem = (isWithinRange)
-            ? $selectableItem.eq(elementIndex)
-            : (direction == 'up')
-              ? $selectableItem.first()
-              : $selectableItem.last()
-          ;
-          if($nextSelectedItem.length > 0) {
-            module.debug('Scrolling page', direction, $nextSelectedItem);
-            $currentItem
-              .removeClass(className.selected)
-            ;
-            $nextSelectedItem
-              .addClass(className.selected)
-            ;
-            if(settings.selectOnKeydown && module.is.single()) {
-              module.set.selectedItem($nextSelectedItem);
-            }
-            $menu
-              .scrollTop(newScroll)
-            ;
-          }
-        },
-
-        set: {
-          filtered: function() {
-            var
-              isMultiple       = module.is.multiple(),
-              isSearch         = module.is.searchSelection(),
-              isSearchMultiple = (isMultiple && isSearch),
-              searchValue      = (isSearch)
-                ? module.get.query()
-                : '',
-              hasSearchValue   = (typeof searchValue === 'string' && searchValue.length > 0),
-              searchWidth      = module.get.searchWidth(),
-              valueIsSet       = searchValue !== ''
-            ;
-            if(isMultiple && hasSearchValue) {
-              module.verbose('Adjusting input width', searchWidth, settings.glyphWidth);
-              $search.css('width', searchWidth);
-            }
-            if(hasSearchValue || (isSearchMultiple && valueIsSet)) {
-              module.verbose('Hiding placeholder text');
-              $text.addClass(className.filtered);
-            }
-            else if(!isMultiple || (isSearchMultiple && !valueIsSet)) {
-              module.verbose('Showing placeholder text');
-              $text.removeClass(className.filtered);
-            }
-          },
-          empty: function() {
-            $module.addClass(className.empty);
-          },
-          loading: function() {
-            $module.addClass(className.loading);
-          },
-          placeholderText: function(text) {
-            text = text || module.get.placeholderText();
-            module.debug('Setting placeholder text', text);
-            module.set.text(text);
-            $text.addClass(className.placeholder);
-          },
-          tabbable: function() {
-            if( module.is.searchSelection() ) {
-              module.debug('Added tabindex to searchable dropdown');
-              $search
-                .val('')
-                .attr('tabindex', 0)
-              ;
-              $menu
-                .attr('tabindex', -1)
-              ;
-            }
-            else {
-              module.debug('Added tabindex to dropdown');
-              if( $module.attr('tabindex') === undefined) {
-                $module
-                  .attr('tabindex', 0)
-                ;
-                $menu
-                  .attr('tabindex', -1)
-                ;
-              }
-            }
-          },
-          initialLoad: function() {
-            module.verbose('Setting initial load');
-            initialLoad = true;
-          },
-          activeItem: function($item) {
-            if( settings.allowAdditions && $item.filter(selector.addition).length > 0 ) {
-              $item.addClass(className.filtered);
-            }
-            else {
-              $item.addClass(className.active);
-            }
-          },
-          partialSearch: function(text) {
-            var
-              length = module.get.query().length
-            ;
-            $search.val( text.substr(0, length));
-          },
-          scrollPosition: function($item, forceScroll) {
-            var
-              edgeTolerance = 5,
-              $menu,
-              hasActive,
-              offset,
-              itemHeight,
-              itemOffset,
-              menuOffset,
-              menuScroll,
-              menuHeight,
-              abovePage,
-              belowPage
-            ;
-
-            $item       = $item || module.get.selectedItem();
-            $menu       = $item.closest(selector.menu);
-            hasActive   = ($item && $item.length > 0);
-            forceScroll = (forceScroll !== undefined)
-              ? forceScroll
-              : false
-            ;
-            if(module.get.activeItem().length === 0){
-              forceScroll = false;
-            }
-            if($item && $menu.length > 0 && hasActive) {
-              itemOffset = $item.position().top;
-
-              $menu.addClass(className.loading);
-              menuScroll = $menu.scrollTop();
-              menuOffset = $menu.offset().top;
-              itemOffset = $item.offset().top;
-              offset     = menuScroll - menuOffset + itemOffset;
-              if(!forceScroll) {
-                menuHeight = $menu.height();
-                belowPage  = menuScroll + menuHeight < (offset + edgeTolerance);
-                abovePage  = ((offset - edgeTolerance) < menuScroll);
-              }
-              module.debug('Scrolling to active item', offset);
-              if(forceScroll || abovePage || belowPage) {
-                $menu.scrollTop(offset);
-              }
-              $menu.removeClass(className.loading);
-            }
-          },
-          text: function(text) {
-            if(settings.action === 'combo') {
-              module.debug('Changing combo button text', text, $combo);
-              if(settings.preserveHTML) {
-                $combo.html(text);
-              }
-              else {
-                $combo.text(text);
-              }
-            }
-            else if(settings.action === 'activate') {
-              if(text !== module.get.placeholderText()) {
-                $text.removeClass(className.placeholder);
-              }
-              module.debug('Changing text', text, $text);
-              $text
-                .removeClass(className.filtered)
-              ;
-              if(settings.preserveHTML) {
-                $text.html(text);
-              }
-              else {
-                $text.text(text);
-              }
-            }
-          },
-          selectedItem: function($item) {
-            var
-              value      = module.get.choiceValue($item),
-              searchText = module.get.choiceText($item, false),
-              text       = module.get.choiceText($item, true)
-            ;
-            module.debug('Setting user selection to item', $item);
-            module.remove.activeItem();
-            module.set.partialSearch(searchText);
-            module.set.activeItem($item);
-            module.set.selected(value, $item);
-            module.set.text(text);
-          },
-          selectedLetter: function(letter) {
-            var
-              $selectedItem         = $item.filter('.' + className.selected),
-              alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter),
-              $nextValue            = false,
-              $nextItem
-            ;
-            // check next of same letter
-            if(alreadySelectedLetter) {
-              $nextItem = $selectedItem.nextAll($item).eq(0);
-              if( module.has.firstLetter($nextItem, letter) ) {
-                $nextValue  = $nextItem;
-              }
-            }
-            // check all values
-            if(!$nextValue) {
-              $item
-                .each(function(){
-                  if(module.has.firstLetter($(this), letter)) {
-                    $nextValue = $(this);
-                    return false;
-                  }
-                })
-              ;
-            }
-            // set next value
-            if($nextValue) {
-              module.verbose('Scrolling to next value with letter', letter);
-              module.set.scrollPosition($nextValue);
-              $selectedItem.removeClass(className.selected);
-              $nextValue.addClass(className.selected);
-              if(settings.selectOnKeydown && module.is.single()) {
-                module.set.selectedItem($nextValue);
-              }
-            }
-          },
-          direction: function($menu) {
-            if(settings.direction == 'auto') {
-              // reset position, remove upward if it's base menu
-              if (!$menu) {
-                module.remove.upward();
-              } else if (module.is.upward($menu)) {
-                //we need make sure when make assertion openDownward for $menu, $menu does not have upward class
-                module.remove.upward($menu);
-              }
-
-              if(module.can.openDownward($menu)) {
-                module.remove.upward($menu);
-              }
-              else {
-                module.set.upward($menu);
-              }
-              if(!module.is.leftward($menu) && !module.can.openRightward($menu)) {
-                module.set.leftward($menu);
-              }
-            }
-            else if(settings.direction == 'upward') {
-              module.set.upward($menu);
-            }
-          },
-          upward: function($currentMenu) {
-            var $element = $currentMenu || $module;
-            $element.addClass(className.upward);
-          },
-          leftward: function($currentMenu) {
-            var $element = $currentMenu || $menu;
-            $element.addClass(className.leftward);
-          },
-          value: function(value, text, $selected) {
-            if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
-              $input.removeClass(className.noselection);
-            } else {
-              $input.addClass(className.noselection);
-            }
-            var
-              escapedValue = module.escape.value(value),
-              hasInput     = ($input.length > 0),
-              currentValue = module.get.values(),
-              stringValue  = (value !== undefined)
-                ? String(value)
-                : value,
-              newValue
-            ;
-            if(hasInput) {
-              if(!settings.allowReselection && stringValue == currentValue) {
-                module.verbose('Skipping value update already same value', value, currentValue);
-                if(!module.is.initialLoad()) {
-                  return;
-                }
-              }
-
-              if( module.is.single() && module.has.selectInput() && module.can.extendSelect() ) {
-                module.debug('Adding user option', value);
-                module.add.optionValue(value);
-              }
-              module.debug('Updating input value', escapedValue, currentValue);
-              internalChange = true;
-              $input
-                .val(escapedValue)
-              ;
-              if(settings.fireOnInit === false && module.is.initialLoad()) {
-                module.debug('Input native change event ignored on initial load');
-              }
-              else {
-                module.trigger.change();
-              }
-              internalChange = false;
-            }
-            else {
-              module.verbose('Storing value in metadata', escapedValue, $input);
-              if(escapedValue !== currentValue) {
-                $module.data(metadata.value, stringValue);
-              }
-            }
-            if(settings.fireOnInit === false && module.is.initialLoad()) {
-              module.verbose('No callback on initial load', settings.onChange);
-            }
-            else {
-              settings.onChange.call(element, value, text, $selected);
-            }
-          },
-          active: function() {
-            $module
-              .addClass(className.active)
-            ;
-          },
-          multiple: function() {
-            $module.addClass(className.multiple);
-          },
-          visible: function() {
-            $module.addClass(className.visible);
-          },
-          exactly: function(value, $selectedItem) {
-            module.debug('Setting selected to exact values');
-            module.clear();
-            module.set.selected(value, $selectedItem);
-          },
-          selected: function(value, $selectedItem) {
-            var
-              isMultiple = module.is.multiple()
-            ;
-            $selectedItem = (settings.allowAdditions)
-              ? $selectedItem || module.get.itemWithAdditions(value)
-              : $selectedItem || module.get.item(value)
-            ;
-            if(!$selectedItem) {
-              return;
-            }
-            module.debug('Setting selected menu item to', $selectedItem);
-            if(module.is.multiple()) {
-              module.remove.searchWidth();
-            }
-            if(module.is.single()) {
-              module.remove.activeItem();
-              module.remove.selectedItem();
-            }
-            else if(settings.useLabels) {
-              module.remove.selectedItem();
-            }
-            // select each item
-            $selectedItem
-              .each(function() {
-                var
-                  $selected      = $(this),
-                  selectedText   = module.get.choiceText($selected),
-                  selectedValue  = module.get.choiceValue($selected, selectedText),
-
-                  isFiltered     = $selected.hasClass(className.filtered),
-                  isActive       = $selected.hasClass(className.active),
-                  isUserValue    = $selected.hasClass(className.addition),
-                  shouldAnimate  = (isMultiple && $selectedItem.length == 1)
-                ;
-                if(isMultiple) {
-                  if(!isActive || isUserValue) {
-                    if(settings.apiSettings && settings.saveRemoteData) {
-                      module.save.remoteData(selectedText, selectedValue);
-                    }
-                    if(settings.useLabels) {
-                      module.add.label(selectedValue, selectedText, shouldAnimate);
-                      module.add.value(selectedValue, selectedText, $selected);
-                      module.set.activeItem($selected);
-                      module.filterActive();
-                      module.select.nextAvailable($selectedItem);
-                    }
-                    else {
-                      module.add.value(selectedValue, selectedText, $selected);
-                      module.set.text(module.add.variables(message.count));
-                      module.set.activeItem($selected);
-                    }
-                  }
-                  else if(!isFiltered && (settings.useLabels || selectActionActive)) {
-                    module.debug('Selected active value, removing label');
-                    module.remove.selected(selectedValue);
-                  }
-                }
-                else {
-                  if(settings.apiSettings && settings.saveRemoteData) {
-                    module.save.remoteData(selectedText, selectedValue);
-                  }
-                  module.set.text(selectedText);
-                  module.set.value(selectedValue, selectedText, $selected);
-                  $selected
-                    .addClass(className.active)
-                    .addClass(className.selected)
-                  ;
-                }
-              })
-            ;
-          },
-        },
-
-        add: {
-          label: function(value, text, shouldAnimate) {
-            var
-              $next  = module.is.searchSelection()
-                ? $search
-                : $text,
-              escapedValue = module.escape.value(value),
-              $label
-            ;
-            if(settings.ignoreCase) {
-              escapedValue = escapedValue.toLowerCase();
-            }
-            $label =  $('<a />')
-              .addClass(className.label)
-              .attr('data-' + metadata.value, escapedValue)
-              .html(templates.label(escapedValue, text, settings.preserveHTML, settings.className))
-            ;
-            $label = settings.onLabelCreate.call($label, escapedValue, text);
-
-            if(module.has.label(value)) {
-              module.debug('User selection already exists, skipping', escapedValue);
-              return;
-            }
-            if(settings.label.variation) {
-              $label.addClass(settings.label.variation);
-            }
-            if(shouldAnimate === true) {
-              module.debug('Animating in label', $label);
-              $label
-                .addClass(className.hidden)
-                .insertBefore($next)
-                .transition({
-                    animation  : settings.label.transition,
-                    debug      : settings.debug,
-                    verbose    : settings.verbose,
-                    duration   : settings.label.duration
-                })
-              ;
-            }
-            else {
-              module.debug('Adding selection label', $label);
-              $label
-                .insertBefore($next)
-              ;
-            }
-          },
-          message: function(message) {
-            var
-              $message = $menu.children(selector.message),
-              html     = settings.templates.message(module.add.variables(message))
-            ;
-            if($message.length > 0) {
-              $message
-                .html(html)
-              ;
-            }
-            else {
-              $message = $('<div/>')
-                .html(html)
-                .addClass(className.message)
-                .appendTo($menu)
-              ;
-            }
-          },
-          optionValue: function(value) {
-            var
-              escapedValue = module.escape.value(value),
-              $option      = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
-              hasOption    = ($option.length > 0)
-            ;
-            if(hasOption) {
-              return;
-            }
-            // temporarily disconnect observer
-            module.disconnect.selectObserver();
-            if( module.is.single() ) {
-              module.verbose('Removing previous user addition');
-              $input.find('option.' + className.addition).remove();
-            }
-            $('<option/>')
-              .prop('value', escapedValue)
-              .addClass(className.addition)
-              .html(value)
-              .appendTo($input)
-            ;
-            module.verbose('Adding user addition as an <option>', value);
-            module.observe.select();
-          },
-          userSuggestion: function(value) {
-            var
-              $addition         = $menu.children(selector.addition),
-              $existingItem     = module.get.item(value),
-              alreadyHasValue   = $existingItem && $existingItem.not(selector.addition).length,
-              hasUserSuggestion = $addition.length > 0,
-              html
-            ;
-            if(settings.useLabels && module.has.maxSelections()) {
-              return;
-            }
-            if(value === '' || alreadyHasValue) {
-              $addition.remove();
-              return;
-            }
-            if(hasUserSuggestion) {
-              $addition
-                .data(metadata.value, value)
-                .data(metadata.text, value)
-                .attr('data-' + metadata.value, value)
-                .attr('data-' + metadata.text, value)
-                .removeClass(className.filtered)
-              ;
-              if(!settings.hideAdditions) {
-                html = settings.templates.addition( module.add.variables(message.addResult, value) );
-                $addition
-                  .html(html)
-                ;
-              }
-              module.verbose('Replacing user suggestion with new value', $addition);
-            }
-            else {
-              $addition = module.create.userChoice(value);
-              $addition
-                .prependTo($menu)
-              ;
-              module.verbose('Adding item choice to menu corresponding with user choice addition', $addition);
-            }
-            if(!settings.hideAdditions || module.is.allFiltered()) {
-              $addition
-                .addClass(className.selected)
-                .siblings()
-                .removeClass(className.selected)
-              ;
-            }
-            module.refreshItems();
-          },
-          variables: function(message, term) {
-            var
-              hasCount    = (message.search('{count}') !== -1),
-              hasMaxCount = (message.search('{maxCount}') !== -1),
-              hasTerm     = (message.search('{term}') !== -1),
-              count,
-              query
-            ;
-            module.verbose('Adding templated variables to message', message);
-            if(hasCount) {
-              count  = module.get.selectionCount();
-              message = message.replace('{count}', count);
-            }
-            if(hasMaxCount) {
-              count  = module.get.selectionCount();
-              message = message.replace('{maxCount}', settings.maxSelections);
-            }
-            if(hasTerm) {
-              query   = term || module.get.query();
-              message = message.replace('{term}', query);
-            }
-            return message;
-          },
-          value: function(addedValue, addedText, $selectedItem) {
-            var
-              currentValue = module.get.values(),
-              newValue
-            ;
-            if(module.has.value(addedValue)) {
-              module.debug('Value already selected');
-              return;
-            }
-            if(addedValue === '') {
-              module.debug('Cannot select blank values from multiselect');
-              return;
-            }
-            // extend current array
-            if(Array.isArray(currentValue)) {
-              newValue = currentValue.concat([addedValue]);
-              newValue = module.get.uniqueArray(newValue);
-            }
-            else {
-              newValue = [addedValue];
-            }
-            // add values
-            if( module.has.selectInput() ) {
-              if(module.can.extendSelect()) {
-                module.debug('Adding value to select', addedValue, newValue, $input);
-                module.add.optionValue(addedValue);
-              }
-            }
-            else {
-              newValue = newValue.join(settings.delimiter);
-              module.debug('Setting hidden input to delimited value', newValue, $input);
-            }
-
-            if(settings.fireOnInit === false && module.is.initialLoad()) {
-              module.verbose('Skipping onadd callback on initial load', settings.onAdd);
-            }
-            else {
-              settings.onAdd.call(element, addedValue, addedText, $selectedItem);
-            }
-            module.set.value(newValue, addedValue, addedText, $selectedItem);
-            module.check.maxSelections();
-          },
-        },
-
-        remove: {
-          active: function() {
-            $module.removeClass(className.active);
-          },
-          activeLabel: function() {
-            $module.find(selector.label).removeClass(className.active);
-          },
-          empty: function() {
-            $module.removeClass(className.empty);
-          },
-          loading: function() {
-            $module.removeClass(className.loading);
-          },
-          initialLoad: function() {
-            initialLoad = false;
-          },
-          upward: function($currentMenu) {
-            var $element = $currentMenu || $module;
-            $element.removeClass(className.upward);
-          },
-          leftward: function($currentMenu) {
-            var $element = $currentMenu || $menu;
-            $element.removeClass(className.leftward);
-          },
-          visible: function() {
-            $module.removeClass(className.visible);
-          },
-          activeItem: function() {
-            $item.removeClass(className.active);
-          },
-          filteredItem: function() {
-            if(settings.useLabels && module.has.maxSelections() ) {
-              return;
-            }
-            if(settings.useLabels && module.is.multiple()) {
-              $item.not('.' + className.active).removeClass(className.filtered);
-            }
-            else {
-              $item.removeClass(className.filtered);
-            }
-            if(settings.hideDividers) {
-              $divider.removeClass(className.hidden);
-            }
-            module.remove.empty();
-          },
-          optionValue: function(value) {
-            var
-              escapedValue = module.escape.value(value),
-              $option      = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
-              hasOption    = ($option.length > 0)
-            ;
-            if(!hasOption || !$option.hasClass(className.addition)) {
-              return;
-            }
-            // temporarily disconnect observer
-            if(selectObserver) {
-              selectObserver.disconnect();
-              module.verbose('Temporarily disconnecting mutation observer');
-            }
-            $option.remove();
-            module.verbose('Removing user addition as an <option>', escapedValue);
-            if(selectObserver) {
-              selectObserver.observe($input[0], {
-                childList : true,
-                subtree   : true
-              });
-            }
-          },
-          message: function() {
-            $menu.children(selector.message).remove();
-          },
-          searchWidth: function() {
-            $search.css('width', '');
-          },
-          searchTerm: function() {
-            module.verbose('Cleared search term');
-            $search.val('');
-            module.set.filtered();
-          },
-          userAddition: function() {
-            $item.filter(selector.addition).remove();
-          },
-          selected: function(value, $selectedItem) {
-            $selectedItem = (settings.allowAdditions)
-              ? $selectedItem || module.get.itemWithAdditions(value)
-              : $selectedItem || module.get.item(value)
-            ;
-
-            if(!$selectedItem) {
-              return false;
-            }
-
-            $selectedItem
-              .each(function() {
-                var
-                  $selected     = $(this),
-                  selectedText  = module.get.choiceText($selected),
-                  selectedValue = module.get.choiceValue($selected, selectedText)
-                ;
-                if(module.is.multiple()) {
-                  if(settings.useLabels) {
-                    module.remove.value(selectedValue, selectedText, $selected);
-                    module.remove.label(selectedValue);
-                  }
-                  else {
-                    module.remove.value(selectedValue, selectedText, $selected);
-                    if(module.get.selectionCount() === 0) {
-                      module.set.placeholderText();
-                    }
-                    else {
-                      module.set.text(module.add.variables(message.count));
-                    }
-                  }
-                }
-                else {
-                  module.remove.value(selectedValue, selectedText, $selected);
-                }
-                $selected
-                  .removeClass(className.filtered)
-                  .removeClass(className.active)
-                ;
-                if(settings.useLabels) {
-                  $selected.removeClass(className.selected);
-                }
-              })
-            ;
-          },
-          selectedItem: function() {
-            $item.removeClass(className.selected);
-          },
-          value: function(removedValue, removedText, $removedItem) {
-            var
-              values = module.get.values(),
-              newValue
-            ;
-            if( module.has.selectInput() ) {
-              module.verbose('Input is <select> removing selected option', removedValue);
-              newValue = module.remove.arrayValue(removedValue, values);
-              module.remove.optionValue(removedValue);
-            }
-            else {
-              module.verbose('Removing from delimited values', removedValue);
-              newValue = module.remove.arrayValue(removedValue, values);
-              newValue = newValue.join(settings.delimiter);
-            }
-            if(settings.fireOnInit === false && module.is.initialLoad()) {
-              module.verbose('No callback on initial load', settings.onRemove);
-            }
-            else {
-              settings.onRemove.call(element, removedValue, removedText, $removedItem);
-            }
-            module.set.value(newValue, removedText, $removedItem);
-            module.check.maxSelections();
-          },
-          arrayValue: function(removedValue, values) {
-            if( !Array.isArray(values) ) {
-              values = [values];
-            }
-            values = $.grep(values, function(value){
-              return (removedValue != value);
-            });
-            module.verbose('Removed value from delimited string', removedValue, values);
-            return values;
-          },
-          label: function(value, shouldAnimate) {
-            var
-              $labels       = $module.find(selector.label),
-              $removedLabel = $labels.filter('[data-' + metadata.value + '="' + module.escape.string(value) +'"]')
-            ;
-            module.verbose('Removing label', $removedLabel);
-            $removedLabel.remove();
-          },
-          activeLabels: function($activeLabels) {
-            $activeLabels = $activeLabels || $module.find(selector.label).filter('.' + className.active);
-            module.verbose('Removing active label selections', $activeLabels);
-            module.remove.labels($activeLabels);
-          },
-          labels: function($labels) {
-            $labels = $labels || $module.find(selector.label);
-            module.verbose('Removing labels', $labels);
-            $labels
-              .each(function(){
-                var
-                  $label      = $(this),
-                  value       = $label.data(metadata.value),
-                  stringValue = (value !== undefined)
-                    ? String(value)
-                    : value,
-                  isUserValue = module.is.userValue(stringValue)
-                ;
-                if(settings.onLabelRemove.call($label, value) === false) {
-                  module.debug('Label remove callback cancelled removal');
-                  return;
-                }
-                module.remove.message();
-                if(isUserValue) {
-                  module.remove.value(stringValue);
-                  module.remove.label(stringValue);
-                }
-                else {
-                  // selected will also remove label
-                  module.remove.selected(stringValue);
-                }
-              })
-            ;
-          },
-          tabbable: function() {
-            if( module.is.searchSelection() ) {
-              module.debug('Searchable dropdown initialized');
-              $search
-                .removeAttr('tabindex')
-              ;
-              $menu
-                .removeAttr('tabindex')
-              ;
-            }
-            else {
-              module.debug('Simple selection dropdown initialized');
-              $module
-                .removeAttr('tabindex')
-              ;
-              $menu
-                .removeAttr('tabindex')
-              ;
-            }
-          },
-          diacritics: function(text) {
-            return settings.ignoreDiacritics ?  text.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : text;
-          }
-        },
-
-        has: {
-          menuSearch: function() {
-            return (module.has.search() && $search.closest($menu).length > 0);
-          },
-          clearItem: function() {
-            return ($clear.length > 0);
-          },
-          search: function() {
-            return ($search.length > 0);
-          },
-          sizer: function() {
-            return ($sizer.length > 0);
-          },
-          selectInput: function() {
-            return ( $input.is('select') );
-          },
-          minCharacters: function(searchTerm) {
-            if(settings.minCharacters && !iconClicked) {
-              searchTerm = (searchTerm !== undefined)
-                ? String(searchTerm)
-                : String(module.get.query())
-              ;
-              return (searchTerm.length >= settings.minCharacters);
-            }
-            iconClicked=false;
-            return true;
-          },
-          firstLetter: function($item, letter) {
-            var
-              text,
-              firstLetter
-            ;
-            if(!$item || $item.length === 0 || typeof letter !== 'string') {
-              return false;
-            }
-            text        = module.get.choiceText($item, false);
-            letter      = letter.toLowerCase();
-            firstLetter = String(text).charAt(0).toLowerCase();
-            return (letter == firstLetter);
-          },
-          input: function() {
-            return ($input.length > 0);
-          },
-          items: function() {
-            return ($item.length > 0);
-          },
-          menu: function() {
-            return ($menu.length > 0);
-          },
-          message: function() {
-            return ($menu.children(selector.message).length !== 0);
-          },
-          label: function(value) {
-            var
-              escapedValue = module.escape.value(value),
-              $labels      = $module.find(selector.label)
-            ;
-            if(settings.ignoreCase) {
-              escapedValue = escapedValue.toLowerCase();
-            }
-            return ($labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) +'"]').length > 0);
-          },
-          maxSelections: function() {
-            return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections);
-          },
-          allResultsFiltered: function() {
-            var
-              $normalResults = $item.not(selector.addition)
-            ;
-            return ($normalResults.filter(selector.unselectable).length === $normalResults.length);
-          },
-          userSuggestion: function() {
-            return ($menu.children(selector.addition).length > 0);
-          },
-          query: function() {
-            return (module.get.query() !== '');
-          },
-          value: function(value) {
-            return (settings.ignoreCase)
-              ? module.has.valueIgnoringCase(value)
-              : module.has.valueMatchingCase(value)
-            ;
-          },
-          valueMatchingCase: function(value) {
-            var
-              values   = module.get.values(),
-              hasValue = Array.isArray(values)
-               ? values && ($.inArray(value, values) !== -1)
-               : (values == value)
-            ;
-            return (hasValue)
-              ? true
-              : false
-            ;
-          },
-          valueIgnoringCase: function(value) {
-            var
-              values   = module.get.values(),
-              hasValue = false
-            ;
-            if(!Array.isArray(values)) {
-              values = [values];
-            }
-            $.each(values, function(index, existingValue) {
-              if(String(value).toLowerCase() == String(existingValue).toLowerCase()) {
-                hasValue = true;
-                return false;
-              }
-            });
-            return hasValue;
-          }
-        },
-
-        is: {
-          active: function() {
-            return $module.hasClass(className.active);
-          },
-          animatingInward: function() {
-            return $menu.transition('is inward');
-          },
-          animatingOutward: function() {
-            return $menu.transition('is outward');
-          },
-          bubbledLabelClick: function(event) {
-            return $(event.target).is('select, input') && $module.closest('label').length > 0;
-          },
-          bubbledIconClick: function(event) {
-            return $(event.target).closest($icon).length > 0;
-          },
-          alreadySetup: function() {
-            return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
-          },
-          animating: function($subMenu) {
-            return ($subMenu)
-              ? $subMenu.transition && $subMenu.transition('is animating')
-              : $menu.transition    && $menu.transition('is animating')
-            ;
-          },
-          leftward: function($subMenu) {
-            var $selectedMenu = $subMenu || $menu;
-            return $selectedMenu.hasClass(className.leftward);
-          },
-          clearable: function() {
-            return ($module.hasClass(className.clearable) || settings.clearable);
-          },
-          disabled: function() {
-            return $module.hasClass(className.disabled);
-          },
-          focused: function() {
-            return (document.activeElement === $module[0]);
-          },
-          focusedOnSearch: function() {
-            return (document.activeElement === $search[0]);
-          },
-          allFiltered: function() {
-            return( (module.is.multiple() || module.has.search()) && !(settings.hideAdditions == false && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered() );
-          },
-          hidden: function($subMenu) {
-            return !module.is.visible($subMenu);
-          },
-          initialLoad: function() {
-            return initialLoad;
-          },
-          inObject: function(needle, object) {
-            var
-              found = false
-            ;
-            $.each(object, function(index, property) {
-              if(property == needle) {
-                found = true;
-                return true;
-              }
-            });
-            return found;
-          },
-          multiple: function() {
-            return $module.hasClass(className.multiple);
-          },
-          remote: function() {
-            return settings.apiSettings && module.can.useAPI();
-          },
-          single: function() {
-            return !module.is.multiple();
-          },
-          selectMutation: function(mutations) {
-            var
-              selectChanged = false
-            ;
-            $.each(mutations, function(index, mutation) {
-              if($(mutation.target).is('select') || $(mutation.addedNodes).is('select')) {
-                selectChanged = true;
-                return false;
-              }
-            });
-            return selectChanged;
-          },
-          search: function() {
-            return $module.hasClass(className.search);
-          },
-          searchSelection: function() {
-            return ( module.has.search() && $search.parent(selector.dropdown).length === 1 );
-          },
-          selection: function() {
-            return $module.hasClass(className.selection);
-          },
-          userValue: function(value) {
-            return ($.inArray(value, module.get.userValues()) !== -1);
-          },
-          upward: function($menu) {
-            var $element = $menu || $module;
-            return $element.hasClass(className.upward);
-          },
-          visible: function($subMenu) {
-            return ($subMenu)
-              ? $subMenu.hasClass(className.visible)
-              : $menu.hasClass(className.visible)
-            ;
-          },
-          verticallyScrollableContext: function() {
-            var
-              overflowY = ($context.get(0) !== window)
-                ? $context.css('overflow-y')
-                : false
-            ;
-            return (overflowY == 'auto' || overflowY == 'scroll');
-          },
-          horizontallyScrollableContext: function() {
-            var
-              overflowX = ($context.get(0) !== window)
-                ? $context.css('overflow-X')
-                : false
-            ;
-            return (overflowX == 'auto' || overflowX == 'scroll');
-          }
-        },
-
-        can: {
-          activate: function($item) {
-            if(settings.useLabels) {
-              return true;
-            }
-            if(!module.has.maxSelections()) {
-              return true;
-            }
-            if(module.has.maxSelections() && $item.hasClass(className.active)) {
-              return true;
-            }
-            return false;
-          },
-          openDownward: function($subMenu) {
-            var
-              $currentMenu    = $subMenu || $menu,
-              canOpenDownward = true,
-              onScreen        = {},
-              calculations
-            ;
-            $currentMenu
-              .addClass(className.loading)
-            ;
-            calculations = {
-              context: {
-                offset    : ($context.get(0) === window)
-                  ? { top: 0, left: 0}
-                  : $context.offset(),
-                scrollTop : $context.scrollTop(),
-                height    : $context.outerHeight()
-              },
-              menu : {
-                offset: $currentMenu.offset(),
-                height: $currentMenu.outerHeight()
-              }
-            };
-            if(module.is.verticallyScrollableContext()) {
-              calculations.menu.offset.top += calculations.context.scrollTop;
-            }
-            onScreen = {
-              above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
-              below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height
-            };
-            if(onScreen.below) {
-              module.verbose('Dropdown can fit in context downward', onScreen);
-              canOpenDownward = true;
-            }
-            else if(!onScreen.below && !onScreen.above) {
-              module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen);
-              canOpenDownward = true;
-            }
-            else {
-              module.verbose('Dropdown cannot fit below, opening upward', onScreen);
-              canOpenDownward = false;
-            }
-            $currentMenu.removeClass(className.loading);
-            return canOpenDownward;
-          },
-          openRightward: function($subMenu) {
-            var
-              $currentMenu     = $subMenu || $menu,
-              canOpenRightward = true,
-              isOffscreenRight = false,
-              calculations
-            ;
-            $currentMenu
-              .addClass(className.loading)
-            ;
-            calculations = {
-              context: {
-                offset     : ($context.get(0) === window)
-                  ? { top: 0, left: 0}
-                  : $context.offset(),
-                scrollLeft : $context.scrollLeft(),
-                width      : $context.outerWidth()
-              },
-              menu: {
-                offset : $currentMenu.offset(),
-                width  : $currentMenu.outerWidth()
-              }
-            };
-            if(module.is.horizontallyScrollableContext()) {
-              calculations.menu.offset.left += calculations.context.scrollLeft;
-            }
-            isOffscreenRight = (calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
-            if(isOffscreenRight) {
-              module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
-              canOpenRightward = false;
-            }
-            $currentMenu.removeClass(className.loading);
-            return canOpenRightward;
-          },
-          click: function() {
-            return (hasTouch || settings.on == 'click');
-          },
-          extendSelect: function() {
-            return settings.allowAdditions || settings.apiSettings;
-          },
-          show: function() {
-            return !module.is.disabled() && (module.has.items() || module.has.message());
-          },
-          useAPI: function() {
-            return $.fn.api !== undefined;
-          }
-        },
-
-        animate: {
-          show: function(callback, $subMenu) {
-            var
-              $currentMenu = $subMenu || $menu,
-              start = ($subMenu)
-                ? function() {}
-                : function() {
-                  module.hideSubMenus();
-                  module.hideOthers();
-                  module.set.active();
-                },
-              transition
-            ;
-            callback = $.isFunction(callback)
-              ? callback
-              : function(){}
-            ;
-            module.verbose('Doing menu show animation', $currentMenu);
-            module.set.direction($subMenu);
-            transition = module.get.transition($subMenu);
-            if( module.is.selection() ) {
-              module.set.scrollPosition(module.get.selectedItem(), true);
-            }
-            if( module.is.hidden($currentMenu) || module.is.animating($currentMenu) ) {
-              if(transition == 'none') {
-                start();
-                $currentMenu.transition('show');
-                callback.call(element);
-              }
-              else if($.fn.transition !== undefined && $module.transition('is supported')) {
-                $currentMenu
-                  .transition({
-                    animation  : transition + ' in',
-                    debug      : settings.debug,
-                    verbose    : settings.verbose,
-                    duration   : settings.duration,
-                    queue      : true,
-                    onStart    : start,
-                    onComplete : function() {
-                      callback.call(element);
-                    }
-                  })
-                ;
-              }
-              else {
-                module.error(error.noTransition, transition);
-              }
-            }
-          },
-          hide: function(callback, $subMenu) {
-            var
-              $currentMenu = $subMenu || $menu,
-              start = ($subMenu)
-                ? function() {}
-                : function() {
-                  if( module.can.click() ) {
-                    module.unbind.intent();
-                  }
-                  module.remove.active();
-                },
-              transition = module.get.transition($subMenu)
-            ;
-            callback = $.isFunction(callback)
-              ? callback
-              : function(){}
-            ;
-            if( module.is.visible($currentMenu) || module.is.animating($currentMenu) ) {
-              module.verbose('Doing menu hide animation', $currentMenu);
-
-              if(transition == 'none') {
-                start();
-                $currentMenu.transition('hide');
-                callback.call(element);
-              }
-              else if($.fn.transition !== undefined && $module.transition('is supported')) {
-                $currentMenu
-                  .transition({
-                    animation  : transition + ' out',
-                    duration   : settings.duration,
-                    debug      : settings.debug,
-                    verbose    : settings.verbose,
-                    queue      : false,
-                    onStart    : start,
-                    onComplete : function() {
-                      callback.call(element);
-                    }
-                  })
-                ;
-              }
-              else {
-                module.error(error.transition);
-              }
-            }
-          }
-        },
-
-        hideAndClear: function() {
-          module.remove.searchTerm();
-          if( module.has.maxSelections() ) {
-            return;
-          }
-          if(module.has.search()) {
-            module.hide(function() {
-              module.remove.filteredItem();
-            });
-          }
-          else {
-            module.hide();
-          }
-        },
-
-        delay: {
-          show: function() {
-            module.verbose('Delaying show event to ensure user intent');
-            clearTimeout(module.timer);
-            module.timer = setTimeout(module.show, settings.delay.show);
-          },
-          hide: function() {
-            module.verbose('Delaying hide event to ensure user intent');
-            clearTimeout(module.timer);
-            module.timer = setTimeout(module.hide, settings.delay.hide);
-          }
-        },
-
-        escape: {
-          value: function(value) {
-            var
-              multipleValues = Array.isArray(value),
-              stringValue    = (typeof value === 'string'),
-              isUnparsable   = (!stringValue && !multipleValues),
-              hasQuotes      = (stringValue && value.search(regExp.quote) !== -1),
-              values         = []
-            ;
-            if(isUnparsable || !hasQuotes) {
-              return value;
-            }
-            module.debug('Encoding quote values for use in select', value);
-            if(multipleValues) {
-              $.each(value, function(index, value){
-                values.push(value.replace(regExp.quote, '&quot;'));
-              });
-              return values;
-            }
-            return value.replace(regExp.quote, '&quot;');
-          },
-          string: function(text) {
-            text =  String(text);
-            return text.replace(regExp.escape, '\\$&');
-          },
-          htmlEntities: function(string) {
-              var
-                  badChars     = /[&<>"'`]/g,
-                  shouldEscape = /[&<>"'`]/,
-                  escape       = {
-                      "&": "&amp;",
-                      "<": "&lt;",
-                      ">": "&gt;",
-                      '"': "&quot;",
-                      "'": "&#x27;",
-                      "`": "&#x60;"
-                  },
-                  escapedChar  = function(chr) {
-                      return escape[chr];
-                  }
-              ;
-              if(shouldEscape.test(string)) {
-                  return string.replace(badChars, escapedChar);
-              }
-              return string;
-          }
-        },
-
-        setting: function(name, value) {
-          module.debug('Changing setting', name, value);
-          if( $.isPlainObject(name) ) {
-            $.extend(true, settings, name);
-          }
-          else if(value !== undefined) {
-            if($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function(name, value) {
-          if( $.isPlainObject(name) ) {
-            $.extend(true, module, name);
-          }
-          else if(value !== undefined) {
-            module[name] = value;
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function() {
-          if(!settings.silent && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function() {
-          if(!settings.silent && settings.verbose && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function() {
-          if(!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function(message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-            ;
-            if(settings.performance) {
-              currentTime   = new Date().getTime();
-              previousTime  = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time          = currentTime;
-              performance.push({
-                'Name'           : message[0],
-                'Arguments'      : [].slice.call(message, 1) || '',
-                'Element'        : element,
-                'Execution Time' : executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function() {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-            ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function(index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if(moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if(console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function(index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function(query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-          ;
-          passedArguments = passedArguments || queryArguments;
-          context         = element         || context;
-          if(typeof query == 'string' && object !== undefined) {
-            query    = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function(depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                : query
-              ;
-              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
-                object = object[camelCaseValue];
-              }
-              else if( object[camelCaseValue] !== undefined ) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
-                object = object[value];
-              }
-              else if( object[value] !== undefined ) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ( $.isFunction( found ) ) {
-            response = found.apply(context, passedArguments);
-          }
-          else if(found !== undefined) {
-            response = found;
-          }
-          if(Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if(returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if(response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-
-      if(methodInvoked) {
-        if(instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if(instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : $allModules
-  ;
-};
-
-$.fn.dropdown.settings = {
-
-  silent                 : false,
-  debug                  : false,
-  verbose                : false,
-  performance            : true,
-
-  on                     : 'click',    // what event should show menu action on item selection
-  action                 : 'activate', // action on item selection (nothing, activate, select, combo, hide, function(){})
-
-  values                 : false,      // specify values to use for dropdown
-
-  clearable              : false,      // whether the value of the dropdown can be cleared
-
-  apiSettings            : false,
-  selectOnKeydown        : true,       // Whether selection should occur automatically when keyboard shortcuts used
-  minCharacters          : 0,          // Minimum characters required to trigger API call
-
-  filterRemoteData       : false,      // Whether API results should be filtered after being returned for query term
-  saveRemoteData         : true,       // Whether remote name/value pairs should be stored in sessionStorage to allow remote data to be restored on page refresh
-
-  throttle               : 200,        // How long to wait after last user input to search remotely
-
-  context                : window,     // Context to use when determining if on screen
-  direction              : 'auto',     // Whether dropdown should always open in one direction
-  keepOnScreen           : true,       // Whether dropdown should check whether it is on screen before showing
-
-  match                  : 'both',     // what to match against with search selection (both, text, or label)
-  fullTextSearch         : false,      // search anywhere in value (set to 'exact' to require exact matches)
-  ignoreDiacritics       : false,      // match results also if they contain diacritics of the same base character (for example searching for "a" will also match "á" or "â" or "à", etc...)
-  hideDividers           : false,      // Whether to hide any divider elements (specified in selector.divider) that are sibling to any items when searched (set to true will hide all dividers, set to 'empty' will hide them when they are not followed by a visible item)
-
-  placeholder            : 'auto',     // whether to convert blank <select> values to placeholder text
-  preserveHTML           : true,       // preserve html when selecting value
-  sortSelect             : false,      // sort selection on init
-
-  forceSelection         : true,       // force a choice on blur with search selection
-
-  allowAdditions         : false,      // whether multiple select should allow user added values
-  ignoreCase             : false,       // whether to consider values not matching in case to be the same
-  hideAdditions          : true,       // whether or not to hide special message prompting a user they can enter a value
-
-  maxSelections          : false,      // When set to a number limits the number of selections to this count
-  useLabels              : true,       // whether multiple select should filter currently active selections from choices
-  delimiter              : ',',        // when multiselect uses normal <input> the values will be delimited with this character
-
-  showOnFocus            : true,       // show menu on focus
-  allowReselection       : false,      // whether current value should trigger callbacks when reselected
-  allowTab               : true,       // add tabindex to element
-  allowCategorySelection : false,      // allow elements with sub-menus to be selected
-
-  fireOnInit             : false,      // Whether callbacks should fire when initializing dropdown values
-
-  transition             : 'auto',     // auto transition will slide down or up based on direction
-  duration               : 200,        // duration of transition
-
-  glyphWidth             : 1.037,      // widest glyph width in em (W is 1.037 em) used to calculate multiselect input width
-
-  headerDivider          : true,       // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
-
-  // label settings on multi-select
-  label: {
-    transition : 'scale',
-    duration   : 200,
-    variation  : false
-  },
-
-  // delay before event
-  delay : {
-    hide   : 300,
-    show   : 200,
-    search : 20,
-    touch  : 50
-  },
-
-  /* Callbacks */
-  onChange      : function(value, text, $selected){},
-  onAdd         : function(value, text, $selected){},
-  onRemove      : function(value, text, $selected){},
-
-  onLabelSelect : function($selectedLabels){},
-  onLabelCreate : function(value, text) { return $(this); },
-  onLabelRemove : function(value) { return true; },
-  onNoResults   : function(searchTerm) { return true; },
-  onShow        : function(){},
-  onHide        : function(){},
-
-  /* Component */
-  name           : 'Dropdown',
-  namespace      : 'dropdown',
-
-  message: {
-    addResult     : 'Add <b>{term}</b>',
-    count         : '{count} selected',
-    maxSelections : 'Max {maxCount} selections',
-    noResults     : 'No results found.',
-    serverError   : 'There was an error contacting the server'
-  },
-
-  error : {
-    action          : 'You called a dropdown action that was not defined',
-    alreadySetup    : 'Once a select has been initialized behaviors must be called on the created ui dropdown',
-    labels          : 'Allowing user additions currently requires the use of labels.',
-    missingMultiple : '<select> requires multiple property to be set to correctly preserve multiple values',
-    method          : 'The method you called is not defined.',
-    noAPI           : 'The API module is required to load resources remotely',
-    noStorage       : 'Saving remote data requires session storage',
-    noTransition    : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>',
-    noNormalize     : '"ignoreDiacritics" setting will be ignored. Browser does not support String().normalize(). You may consider including <https://cdn.jsdelivr.net/npm/[email protected]/lib/unorm.min.js> as a polyfill.'
-  },
-
-  regExp : {
-    escape   : /[-[\]{}()*+?.,\\^$|#\s:=@]/g,
-    quote    : /"/g
-  },
-
-  metadata : {
-    defaultText     : 'defaultText',
-    defaultValue    : 'defaultValue',
-    placeholderText : 'placeholder',
-    text            : 'text',
-    value           : 'value'
-  },
-
-  // property names for remote query
-  fields: {
-    remoteValues : 'results',  // grouping for api results
-    values       : 'values',   // grouping for all dropdown values
-    disabled     : 'disabled', // whether value should be disabled
-    name         : 'name',     // displayed dropdown text
-    value        : 'value',    // actual dropdown value
-    text         : 'text',     // displayed text when selected
-    type         : 'type',     // type of dropdown element
-    image        : 'image',    // optional image path
-    imageClass   : 'imageClass', // optional individual class for image
-    icon         : 'icon',     // optional icon name
-    iconClass    : 'iconClass', // optional individual class for icon (for example to use flag instead)
-    class        : 'class',    // optional individual class for item/header
-    divider      : 'divider'   // optional divider append for group headers
-  },
-
-  keys : {
-    backspace  : 8,
-    delimiter  : 188, // comma
-    deleteKey  : 46,
-    enter      : 13,
-    escape     : 27,
-    pageUp     : 33,
-    pageDown   : 34,
-    leftArrow  : 37,
-    upArrow    : 38,
-    rightArrow : 39,
-    downArrow  : 40
-  },
-
-  selector : {
-    addition     : '.addition',
-    divider      : '.divider, .header',
-    dropdown     : '.ui.dropdown',
-    hidden       : '.hidden',
-    icon         : '> .dropdown.icon',
-    input        : '> input[type="hidden"], > select',
-    item         : '.item',
-    label        : '> .label',
-    remove       : '> .label > .delete.icon',
-    siblingLabel : '.label',
-    menu         : '.menu',
-    message      : '.message',
-    menuIcon     : '.dropdown.icon',
-    search       : 'input.search, .menu > .search > input, .menu input.search',
-    sizer        : '> input.sizer',
-    text         : '> .text:not(.icon)',
-    unselectable : '.disabled, .filtered',
-    clearIcon    : '> .remove.icon'
-  },
-
-  className : {
-    active      : 'active',
-    addition    : 'addition',
-    animating   : 'animating',
-    disabled    : 'disabled',
-    empty       : 'empty',
-    dropdown    : 'ui dropdown',
-    filtered    : 'filtered',
-    hidden      : 'hidden transition',
-    icon        : 'icon',
-    image       : 'image',
-    item        : 'item',
-    label       : 'ui label',
-    loading     : 'loading',
-    menu        : 'menu',
-    message     : 'message',
-    multiple    : 'multiple',
-    placeholder : 'default',
-    sizer       : 'sizer',
-    search      : 'search',
-    selected    : 'selected',
-    selection   : 'selection',
-    upward      : 'upward',
-    leftward    : 'left',
-    visible     : 'visible',
-    clearable   : 'clearable',
-    noselection : 'noselection',
-    delete      : 'delete',
-    header      : 'header',
-    divider     : 'divider',
-    groupIcon   : ''
-  }
-
-};
-
-/* Templates */
-$.fn.dropdown.settings.templates = {
-  deQuote: function(string) {
-      return String(string).replace(/"/g,"");
-  },
-  escape: function(string, preserveHTML) {
-    if (preserveHTML){
-      return string;
-    }
-    var
-        badChars     = /[&<>"'`]/g,
-        shouldEscape = /[&<>"'`]/,
-        escape       = {
-          "&": "&amp;",
-          "<": "&lt;",
-          ">": "&gt;",
-          '"': "&quot;",
-          "'": "&#x27;",
-          "`": "&#x60;"
-        },
-        escapedChar  = function(chr) {
-          return escape[chr];
-        }
-    ;
-    if(shouldEscape.test(string)) {
-      return string.replace(badChars, escapedChar);
-    }
-    return string;
-  },
-  // generates dropdown from select values
-  dropdown: function(select, fields, preserveHTML, className) {
-    var
-      placeholder = select.placeholder || false,
-      html        = '',
-      escape = $.fn.dropdown.settings.templates.escape
-    ;
-    html +=  '<i class="dropdown icon"></i>';
-    if(placeholder) {
-      html += '<div class="default text">' + escape(placeholder,preserveHTML) + '</div>';
-    }
-    else {
-      html += '<div class="text"></div>';
-    }
-    html += '<div class="'+className.menu+'">';
-    html += $.fn.dropdown.settings.templates.menu(select, fields, preserveHTML,className);
-    html += '</div>';
-    return html;
-  },
-
-  // generates just menu from select
-  menu: function(response, fields, preserveHTML, className) {
-    var
-      values = response[fields.values] || [],
-      html   = '',
-      escape = $.fn.dropdown.settings.templates.escape,
-      deQuote = $.fn.dropdown.settings.templates.deQuote
-    ;
-    $.each(values, function(index, option) {
-      var
-        itemType = (option[fields.type])
-          ? option[fields.type]
-          : 'item'
-      ;
-
-      if( itemType === 'item' ) {
-        var
-          maybeText = (option[fields.text])
-            ? ' data-text="' + deQuote(option[fields.text]) + '"'
-            : '',
-          maybeDisabled = (option[fields.disabled])
-            ? className.disabled+' '
-            : ''
-        ;
-        html += '<div class="'+ maybeDisabled + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value]) + '"' + maybeText + '>';
-        if(option[fields.image]) {
-          html += '<img class="'+(option[fields.imageClass] ? deQuote(option[fields.imageClass]) : className.image)+'" src="' + deQuote(option[fields.image]) + '">';
-        }
-        if(option[fields.icon]) {
-          html += '<i class="'+deQuote(option[fields.icon])+' '+(option[fields.iconClass] ? deQuote(option[fields.iconClass]) : className.icon)+'"></i>';
-        }
-        html +=   escape(option[fields.name],preserveHTML);
-        html += '</div>';
-      } else if (itemType === 'header') {
-        var groupName = escape(option[fields.name],preserveHTML),
-            groupIcon = option[fields.icon] ? deQuote(option[fields.icon]) : className.groupIcon
-        ;
-        if(groupName !== '' || groupIcon !== '') {
-          html += '<div class="' + (option[fields.class] ? deQuote(option[fields.class]) : className.header) + '">';
-          if (groupIcon !== '') {
-            html += '<i class="' + groupIcon + ' ' + (option[fields.iconClass] ? deQuote(option[fields.iconClass]) : className.icon) + '"></i>';
-          }
-          html += groupName;
-          html += '</div>';
-        }
-        if(option[fields.divider]){
-          html += '<div class="'+className.divider+'"></div>';
-        }
-      }
-    });
-    return html;
-  },
-
-  // generates label for multiselect
-  label: function(value, text, preserveHTML, className) {
-    var
-        escape = $.fn.dropdown.settings.templates.escape;
-    return escape(text,preserveHTML) + '<i class="'+className.delete+' icon"></i>';
-  },
-
-
-  // generates messages like "No results"
-  message: function(message) {
-    return message;
-  },
-
-  // generates user addition to selection menu
-  addition: function(choice) {
-    return choice;
-  }
-
-};
-
-})( jQuery, window, document );

文件差異過大導致無法顯示
+ 0 - 8
lib/fomantic/components/dropdown.min.css


文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/dropdown.min.js


+ 0 - 166
lib/fomantic/components/embed.css

@@ -1,166 +0,0 @@
-/*!
- * # Fomantic-UI - Video
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-
-/*******************************
-            Types
-*******************************/
-
-.ui.embed {
-  position: relative;
-  max-width: 100%;
-  height: 0;
-  overflow: hidden;
-  background: #DCDDDE;
-  padding-bottom: 56.25%;
-}
-
-/*-----------------
-  Embedded Content
-------------------*/
-
-.ui.embed iframe,
-.ui.embed embed,
-.ui.embed object {
-  position: absolute;
-  border: none;
-  width: 100%;
-  height: 100%;
-  top: 0;
-  left: 0;
-  margin: 0;
-  padding: 0;
-  overflow: hidden;
-}
-
-/*-----------------
-      Embed
-------------------*/
-
-.ui.embed > .embed {
-  display: none;
-}
-
-/*--------------
-   Placeholder
----------------*/
-
-.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, 0.3));
-}
-
-/*--------------
-      Icon
----------------*/
-
-.ui.embed > .icon {
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  z-index: 2;
-}
-.ui.embed > .icon:after {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  z-index: 3;
-  content: '';
-  background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3));
-  background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3));
-  opacity: 0.5;
-  -webkit-transition: opacity 0.5s ease;
-  transition: opacity 0.5s ease;
-}
-.ui.embed > .icon:before {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  -webkit-transform: translateX(-50%) translateY(-50%);
-          transform: translateX(-50%) translateY(-50%);
-  color: #FFFFFF;
-  font-size: 6rem;
-  text-shadow: 0 2px 10px rgba(34, 36, 38, 0.2);
-  -webkit-transition: opacity 0.5s ease, color 0.5s ease;
-  transition: opacity 0.5s ease, color 0.5s ease;
-  z-index: 10;
-}
-
-
-/*******************************
-            States
-*******************************/
-
-
-/*--------------
-     Hover
----------------*/
-
-.ui.embed .icon:hover:after {
-  background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3));
-  background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3));
-  opacity: 1;
-}
-.ui.embed .icon:hover:before {
-  color: #FFFFFF;
-}
-
-/*--------------
-     Active
----------------*/
-
-.ui.active.embed > .icon,
-.ui.active.embed > .placeholder {
-  display: none;
-}
-.ui.active.embed > .embed {
-  display: block;
-}
-
-
-/*******************************
-        Video Overrides
-*******************************/
-
-
-
-/*******************************
-         Site Overrides
-*******************************/
-
-
-
-/*******************************
-          Variations
-*******************************/
-
-.ui.square.embed {
-  padding-bottom: 100%;
-}
-.ui[class*="4:3"].embed {
-  padding-bottom: 75%;
-}
-.ui[class*="16:9"].embed {
-  padding-bottom: 56.25%;
-}
-.ui[class*="21:9"].embed {
-  padding-bottom: 42.85714286%;
-}

+ 0 - 709
lib/fomantic/components/embed.js

@@ -1,709 +0,0 @@
-/*!
- * # Fomantic-UI - Embed
- * http://github.com/fomantic/Fomantic-UI/
- *
- *
- * Released under the MIT license
- * http://opensource.org/licenses/MIT
- *
- */
-
-;(function ($, window, document, undefined) {
-
-"use strict";
-
-$.isFunction = $.isFunction || function(obj) {
-  return typeof obj === "function" && typeof obj.nodeType !== "number";
-};
-
-window = (typeof window != 'undefined' && window.Math == Math)
-  ? window
-  : (typeof self != 'undefined' && self.Math == Math)
-    ? self
-    : Function('return this')()
-;
-
-$.fn.embed = function(parameters) {
-
-  var
-    $allModules     = $(this),
-
-    moduleSelector  = $allModules.selector || '',
-
-    time            = new Date().getTime(),
-    performance     = [],
-
-    query           = arguments[0],
-    methodInvoked   = (typeof query == 'string'),
-    queryArguments  = [].slice.call(arguments, 1),
-
-    returnedValue
-  ;
-
-  $allModules
-    .each(function() {
-      var
-        settings        = ( $.isPlainObject(parameters) )
-          ? $.extend(true, {}, $.fn.embed.settings, parameters)
-          : $.extend({}, $.fn.embed.settings),
-
-        selector        = settings.selector,
-        className       = settings.className,
-        sources         = settings.sources,
-        error           = settings.error,
-        metadata        = settings.metadata,
-        namespace       = settings.namespace,
-        templates       = settings.templates,
-
-        eventNamespace  = '.' + namespace,
-        moduleNamespace = 'module-' + namespace,
-
-        $module         = $(this),
-        $placeholder    = $module.find(selector.placeholder),
-        $icon           = $module.find(selector.icon),
-        $embed          = $module.find(selector.embed),
-
-        element         = this,
-        instance        = $module.data(moduleNamespace),
-        module
-      ;
-
-      module = {
-
-        initialize: function() {
-          module.debug('Initializing embed');
-          module.determine.autoplay();
-          module.create();
-          module.bind.events();
-          module.instantiate();
-        },
-
-        instantiate: function() {
-          module.verbose('Storing instance of module', module);
-          instance = module;
-          $module
-            .data(moduleNamespace, module)
-          ;
-        },
-
-        destroy: function() {
-          module.verbose('Destroying previous instance of embed');
-          module.reset();
-          $module
-            .removeData(moduleNamespace)
-            .off(eventNamespace)
-          ;
-        },
-
-        refresh: function() {
-          module.verbose('Refreshing selector cache');
-          $placeholder = $module.find(selector.placeholder);
-          $icon        = $module.find(selector.icon);
-          $embed       = $module.find(selector.embed);
-        },
-
-        bind: {
-          events: function() {
-            if( module.has.placeholder() ) {
-              module.debug('Adding placeholder events');
-              $module
-                .on('click' + eventNamespace, selector.placeholder, module.createAndShow)
-                .on('click' + eventNamespace, selector.icon, module.createAndShow)
-              ;
-            }
-          }
-        },
-
-        create: function() {
-          var
-            placeholder = module.get.placeholder()
-          ;
-          if(placeholder) {
-            module.createPlaceholder();
-          }
-          else {
-            module.createAndShow();
-          }
-        },
-
-        createPlaceholder: function(placeholder) {
-          var
-            icon  = module.get.icon(),
-            url   = module.get.url(),
-            embed = module.generate.embed(url)
-          ;
-          placeholder = placeholder || module.get.placeholder();
-          $module.html( templates.placeholder(placeholder, icon) );
-          module.debug('Creating placeholder for embed', placeholder, icon);
-        },
-
-        createEmbed: function(url) {
-          module.refresh();
-          url = url || module.get.url();
-          $embed = $('<div/>')
-            .addClass(className.embed)
-            .html( module.generate.embed(url) )
-            .appendTo($module)
-          ;
-          settings.onCreate.call(element, url);
-          module.debug('Creating embed object', $embed);
-        },
-
-        changeEmbed: function(url) {
-          $embed
-            .html( module.generate.embed(url) )
-          ;
-        },
-
-        createAndShow: function() {
-          module.createEmbed();
-          module.show();
-        },
-
-        // sets new embed
-        change: function(source, id, url) {
-          module.debug('Changing video to ', source, id, url);
-          $module
-            .data(metadata.source, source)
-            .data(metadata.id, id)
-          ;
-          if(url) {
-            $module.data(metadata.url, url);
-          }
-          else {
-            $module.removeData(metadata.url);
-          }
-          if(module.has.embed()) {
-            module.changeEmbed();
-          }
-          else {
-            module.create();
-          }
-        },
-
-        // clears embed
-        reset: function() {
-          module.debug('Clearing embed and showing placeholder');
-          module.remove.data();
-          module.remove.active();
-          module.remove.embed();
-          module.showPlaceholder();
-          settings.onReset.call(element);
-        },
-
-        // shows current embed
-        show: function() {
-          module.debug('Showing embed');
-          module.set.active();
-          settings.onDisplay.call(element);
-        },
-
-        hide: function() {
-          module.debug('Hiding embed');
-          module.showPlaceholder();
-        },
-
-        showPlaceholder: function() {
-          module.debug('Showing placeholder image');
-          module.remove.active();
-          settings.onPlaceholderDisplay.call(element);
-        },
-
-        get: {
-          id: function() {
-            return settings.id || $module.data(metadata.id);
-          },
-          placeholder: function() {
-            return settings.placeholder || $module.data(metadata.placeholder);
-          },
-          icon: function() {
-            return (settings.icon)
-              ? settings.icon
-              : ($module.data(metadata.icon) !== undefined)
-                ? $module.data(metadata.icon)
-                : module.determine.icon()
-            ;
-          },
-          source: function(url) {
-            return (settings.source)
-              ? settings.source
-              : ($module.data(metadata.source) !== undefined)
-                ? $module.data(metadata.source)
-                : module.determine.source()
-            ;
-          },
-          type: function() {
-            var source = module.get.source();
-            return (sources[source] !== undefined)
-              ? sources[source].type
-              : false
-            ;
-          },
-          url: function() {
-            return (settings.url)
-              ? settings.url
-              : ($module.data(metadata.url) !== undefined)
-                ? $module.data(metadata.url)
-                : module.determine.url()
-            ;
-          }
-        },
-
-        determine: {
-          autoplay: function() {
-            if(module.should.autoplay()) {
-              settings.autoplay = true;
-            }
-          },
-          source: function(url) {
-            var
-              matchedSource = false
-            ;
-            url = url || module.get.url();
-            if(url) {
-              $.each(sources, function(name, source) {
-                if(url.search(source.domain) !== -1) {
-                  matchedSource = name;
-                  return false;
-                }
-              });
-            }
-            return matchedSource;
-          },
-          icon: function() {
-            var
-              source = module.get.source()
-            ;
-            return (sources[source] !== undefined)
-              ? sources[source].icon
-              : false
-            ;
-          },
-          url: function() {
-            var
-              id     = settings.id     || $module.data(metadata.id),
-              source = settings.source || $module.data(metadata.source),
-              url
-            ;
-            url = (sources[source] !== undefined)
-              ? sources[source].url.replace('{id}', id)
-              : false
-            ;
-            if(url) {
-              $module.data(metadata.url, url);
-            }
-            return url;
-          }
-        },
-
-
-        set: {
-          active: function() {
-            $module.addClass(className.active);
-          }
-        },
-
-        remove: {
-          data: function() {
-            $module
-              .removeData(metadata.id)
-              .removeData(metadata.icon)
-              .removeData(metadata.placeholder)
-              .removeData(metadata.source)
-              .removeData(metadata.url)
-            ;
-          },
-          active: function() {
-            $module.removeClass(className.active);
-          },
-          embed: function() {
-            $embed.empty();
-          }
-        },
-
-        encode: {
-          parameters: function(parameters) {
-            var
-              urlString = [],
-              index
-            ;
-            for (index in parameters) {
-              urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) );
-            }
-            return urlString.join('&amp;');
-          }
-        },
-
-        generate: {
-          embed: function(url) {
-            module.debug('Generating embed html');
-            var
-              source = module.get.source(),
-              html,
-              parameters
-            ;
-            url = module.get.url(url);
-            if(url) {
-              parameters = module.generate.parameters(source);
-              html       = templates.iframe(url, parameters);
-            }
-            else {
-              module.error(error.noURL, $module);
-            }
-            return html;
-          },
-          parameters: function(source, extraParameters) {
-            var
-              parameters = (sources[source] && sources[source].parameters !== undefined)
-                ? sources[source].parameters(settings)
-                : {}
-            ;
-            extraParameters = extraParameters || settings.parameters;
-            if(extraParameters) {
-              parameters = $.extend({}, parameters, extraParameters);
-            }
-            parameters = settings.onEmbed(parameters);
-            return module.encode.parameters(parameters);
-          }
-        },
-
-        has: {
-          embed: function() {
-            return ($embed.length > 0);
-          },
-          placeholder: function() {
-            return settings.placeholder || $module.data(metadata.placeholder);
-          }
-        },
-
-        should: {
-          autoplay: function() {
-            return (settings.autoplay === 'auto')
-              ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined)
-              : settings.autoplay
-            ;
-          }
-        },
-
-        is: {
-          video: function() {
-            return module.get.type() == 'video';
-          }
-        },
-
-        setting: function(name, value) {
-          module.debug('Changing setting', name, value);
-          if( $.isPlainObject(name) ) {
-            $.extend(true, settings, name);
-          }
-          else if(value !== undefined) {
-            if($.isPlainObject(settings[name])) {
-              $.extend(true, settings[name], value);
-            }
-            else {
-              settings[name] = value;
-            }
-          }
-          else {
-            return settings[name];
-          }
-        },
-        internal: function(name, value) {
-          if( $.isPlainObject(name) ) {
-            $.extend(true, module, name);
-          }
-          else if(value !== undefined) {
-            module[name] = value;
-          }
-          else {
-            return module[name];
-          }
-        },
-        debug: function() {
-          if(!settings.silent && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.debug.apply(console, arguments);
-            }
-          }
-        },
-        verbose: function() {
-          if(!settings.silent && settings.verbose && settings.debug) {
-            if(settings.performance) {
-              module.performance.log(arguments);
-            }
-            else {
-              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
-              module.verbose.apply(console, arguments);
-            }
-          }
-        },
-        error: function() {
-          if(!settings.silent) {
-            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
-            module.error.apply(console, arguments);
-          }
-        },
-        performance: {
-          log: function(message) {
-            var
-              currentTime,
-              executionTime,
-              previousTime
-            ;
-            if(settings.performance) {
-              currentTime   = new Date().getTime();
-              previousTime  = time || currentTime;
-              executionTime = currentTime - previousTime;
-              time          = currentTime;
-              performance.push({
-                'Name'           : message[0],
-                'Arguments'      : [].slice.call(message, 1) || '',
-                'Element'        : element,
-                'Execution Time' : executionTime
-              });
-            }
-            clearTimeout(module.performance.timer);
-            module.performance.timer = setTimeout(module.performance.display, 500);
-          },
-          display: function() {
-            var
-              title = settings.name + ':',
-              totalTime = 0
-            ;
-            time = false;
-            clearTimeout(module.performance.timer);
-            $.each(performance, function(index, data) {
-              totalTime += data['Execution Time'];
-            });
-            title += ' ' + totalTime + 'ms';
-            if(moduleSelector) {
-              title += ' \'' + moduleSelector + '\'';
-            }
-            if($allModules.length > 1) {
-              title += ' ' + '(' + $allModules.length + ')';
-            }
-            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
-              console.groupCollapsed(title);
-              if(console.table) {
-                console.table(performance);
-              }
-              else {
-                $.each(performance, function(index, data) {
-                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
-                });
-              }
-              console.groupEnd();
-            }
-            performance = [];
-          }
-        },
-        invoke: function(query, passedArguments, context) {
-          var
-            object = instance,
-            maxDepth,
-            found,
-            response
-          ;
-          passedArguments = passedArguments || queryArguments;
-          context         = element         || context;
-          if(typeof query == 'string' && object !== undefined) {
-            query    = query.split(/[\. ]/);
-            maxDepth = query.length - 1;
-            $.each(query, function(depth, value) {
-              var camelCaseValue = (depth != maxDepth)
-                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
-                : query
-              ;
-              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
-                object = object[camelCaseValue];
-              }
-              else if( object[camelCaseValue] !== undefined ) {
-                found = object[camelCaseValue];
-                return false;
-              }
-              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
-                object = object[value];
-              }
-              else if( object[value] !== undefined ) {
-                found = object[value];
-                return false;
-              }
-              else {
-                module.error(error.method, query);
-                return false;
-              }
-            });
-          }
-          if ( $.isFunction( found ) ) {
-            response = found.apply(context, passedArguments);
-          }
-          else if(found !== undefined) {
-            response = found;
-          }
-          if(Array.isArray(returnedValue)) {
-            returnedValue.push(response);
-          }
-          else if(returnedValue !== undefined) {
-            returnedValue = [returnedValue, response];
-          }
-          else if(response !== undefined) {
-            returnedValue = response;
-          }
-          return found;
-        }
-      };
-
-      if(methodInvoked) {
-        if(instance === undefined) {
-          module.initialize();
-        }
-        module.invoke(query);
-      }
-      else {
-        if(instance !== undefined) {
-          instance.invoke('destroy');
-        }
-        module.initialize();
-      }
-    })
-  ;
-  return (returnedValue !== undefined)
-    ? returnedValue
-    : this
-  ;
-};
-
-$.fn.embed.settings = {
-
-  name        : 'Embed',
-  namespace   : 'embed',
-
-  silent      : false,
-  debug       : false,
-  verbose     : false,
-  performance : true,
-
-  icon     : false,
-  source   : false,
-  url      : false,
-  id       : false,
-
-  // standard video settings
-  autoplay  : 'auto',
-  color     : '#444444',
-  hd        : true,
-  brandedUI : false,
-
-  // additional parameters to include with the embed
-  parameters: false,
-
-  onDisplay            : function() {},
-  onPlaceholderDisplay : function() {},
-  onReset              : function() {},
-  onCreate             : function(url) {},
-  onEmbed              : function(parameters) {
-    return parameters;
-  },
-
-  metadata    : {
-    id          : 'id',
-    icon        : 'icon',
-    placeholder : 'placeholder',
-    source      : 'source',
-    url         : 'url'
-  },
-
-  error : {
-    noURL  : 'No URL specified',
-    method : 'The method you called is not defined'
-  },
-
-  className : {
-    active : 'active',
-    embed  : 'embed'
-  },
-
-  selector : {
-    embed       : '.embed',
-    placeholder : '.placeholder',
-    icon        : '.icon'
-  },
-
-  sources: {
-    youtube: {
-      name   : 'youtube',
-      type   : 'video',
-      icon   : 'video play',
-      domain : 'youtube.com',
-      url    : '//www.youtube.com/embed/{id}',
-      parameters: function(settings) {
-        return {
-          autohide       : !settings.brandedUI,
-          autoplay       : settings.autoplay,
-          color          : settings.color || undefined,
-          hq             : settings.hd,
-          jsapi          : settings.api,
-          modestbranding : !settings.brandedUI
-        };
-      }
-    },
-    vimeo: {
-      name   : 'vimeo',
-      type   : 'video',
-      icon   : 'video play',
-      domain : 'vimeo.com',
-      url    : '//player.vimeo.com/video/{id}',
-      parameters: function(settings) {
-        return {
-          api      : settings.api,
-          autoplay : settings.autoplay,
-          byline   : settings.brandedUI,
-          color    : settings.color || undefined,
-          portrait : settings.brandedUI,
-          title    : settings.brandedUI
-        };
-      }
-    }
-  },
-
-  templates: {
-    iframe : function(url, parameters) {
-      var src = url;
-      if (parameters) {
-          src += '?' + parameters;
-      }
-      return ''
-        + '<iframe src="' + src + '"'
-        + ' width="100%" height="100%"'
-        + ' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'
-      ;
-    },
-    placeholder : function(image, icon) {
-      var
-        html = ''
-      ;
-      if(icon) {
-        html += '<i class="' + icon + ' icon"></i>';
-      }
-      if(image) {
-        html += '<img class="placeholder" src="' + image + '">';
-      }
-      return html;
-    }
-  },
-
-  // NOT YET IMPLEMENTED
-  api     : false,
-  onPause : function() {},
-  onPlay  : function() {},
-  onStop  : function() {}
-
-};
-
-
-
-})( jQuery, window, document );

+ 0 - 9
lib/fomantic/components/embed.min.css

@@ -1,9 +0,0 @@
-/*!
- * # Fomantic-UI - Video
- * http://github.com/fomantic/Fomantic-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;overflow:hidden}.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:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.ui.embed>.icon:after{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;content:'';background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:.5;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.ui.embed>.icon:before{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:6rem;text-shadow:0 2px 10px rgba(34,36,38,.2);-webkit-transition:opacity .5s ease,color .5s ease;transition:opacity .5s ease,color .5s ease;z-index:10}.ui.embed .icon:hover:after{background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:1}.ui.embed .icon:hover:before{color:#fff}.ui.active.embed>.icon,.ui.active.embed>.placeholder{display:none}.ui.active.embed>.embed{display:block}.ui.square.embed{padding-bottom:100%}.ui[class*="4:3"].embed{padding-bottom:75%}.ui[class*="16:9"].embed{padding-bottom:56.25%}.ui[class*="21:9"].embed{padding-bottom:42.85714286%}

文件差異過大導致無法顯示
+ 0 - 10
lib/fomantic/components/embed.min.js


部分文件因文件數量過多而無法顯示