x
";return div.childNodes[1]}function hasLength(input){return input.length>0}function trim(str){return str.replace(/^\s+|\s+$/g,"")}function flatten(input){return[].concat.apply([],input)}function isObject(input){return Object.prototype.toString.call(input)==="[object Object]"}function isArray(input){return Object.prototype.toString.call(input)==="[object Array]"}},{}]},{},[1])(1)}); -------------------------------------------------------------------------------- /libs/font-awesome/less/_animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | animation: fa-spin 2s infinite linear; 6 | } 7 | 8 | .@{fa-css-prefix}-pulse { 9 | animation: fa-spin 1s infinite steps(8); 10 | } 11 | 12 | @keyframes fa-spin { 13 | 0% { 14 | transform: rotate(0deg); 15 | } 16 | 100% { 17 | transform: rotate(360deg); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | border-radius: .1em; 6 | border: solid .08em @fa-border-color; 7 | padding: .2em .25em .15em; 8 | } 9 | 10 | .@{fa-css-prefix}-pull-left { float: left; } 11 | .@{fa-css-prefix}-pull-right { float: right; } 12 | 13 | .@{fa-css-prefix}, .fas, .far, .fal, .fab { 14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}, .fas, .far, .fal, .fab { 5 | -moz-osx-font-smoothing: grayscale; 6 | -webkit-font-smoothing: antialiased; 7 | display: inline-block; 8 | font-style: normal; 9 | font-variant: normal; 10 | text-rendering: auto; 11 | line-height: 1; 12 | } 13 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | text-align: center; 5 | width: (20em / 16); 6 | } 7 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | .larger(@factor) when (@factor > 0) { 5 | .larger((@factor - 1)); 6 | 7 | .@{fa-css-prefix}-@{factor}x { 8 | font-size: (@factor * 1em); 9 | } 10 | } 11 | 12 | /* makes the font 33% larger relative to the icon container */ 13 | .@{fa-css-prefix}-lg { 14 | font-size: (4em / 3); 15 | line-height: (3em / 4); 16 | vertical-align: -.0667em; 17 | } 18 | 19 | .@{fa-css-prefix}-xs { 20 | font-size: .75em; 21 | } 22 | 23 | .@{fa-css-prefix}-sm { 24 | font-size: .875em; 25 | } 26 | 27 | .larger(10); 28 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | list-style-type: none; 6 | margin-left: @fa-li-width * 5/4; 7 | padding-left: 0; 8 | 9 | > li { position: relative; } 10 | } 11 | 12 | .@{fa-css-prefix}-li { 13 | left: -@fa-li-width; 14 | position: absolute; 15 | text-align: center; 16 | width: @fa-li-width; 17 | line-height: inherit; 18 | } 19 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | -moz-osx-font-smoothing: grayscale; 6 | -webkit-font-smoothing: antialiased; 7 | display: inline-block; 8 | font-style: normal; 9 | font-variant: normal; 10 | font-weight: normal; 11 | line-height: 1; 12 | vertical-align: -.125em; 13 | } 14 | 15 | .fa-icon-rotate(@degrees, @rotation) { 16 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 17 | transform: rotate(@degrees); 18 | } 19 | 20 | .fa-icon-flip(@horiz, @vert, @rotation) { 21 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 22 | transform: scale(@horiz, @vert); 23 | } 24 | 25 | 26 | // Only display content to screen readers. A la Bootstrap 4. 27 | // 28 | // See: http://a11yproject.com/posts/how-to-hide-content/ 29 | 30 | .sr-only() { 31 | border: 0; 32 | clip: rect(0,0,0,0); 33 | height: 1px; 34 | margin: -1px; 35 | overflow: hidden; 36 | padding: 0; 37 | position: absolute; 38 | width: 1px; 39 | } 40 | 41 | // Use in conjunction with .sr-only to only display content when it's focused. 42 | // 43 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 44 | // 45 | // Credit: HTML5 Boilerplate 46 | 47 | .sr-only-focusable() { 48 | &:active, 49 | &:focus { 50 | clip: auto; 51 | height: auto; 52 | margin: 0; 53 | overflow: visible; 54 | position: static; 55 | width: auto; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); } 11 | 12 | // Hook for IE8-9 13 | // ------------------------- 14 | 15 | :root { 16 | .@{fa-css-prefix}-rotate-90, 17 | .@{fa-css-prefix}-rotate-180, 18 | .@{fa-css-prefix}-rotate-270, 19 | .@{fa-css-prefix}-flip-horizontal, 20 | .@{fa-css-prefix}-flip-vertical { 21 | filter: none; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /libs/font-awesome/less/_stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | display: inline-block; 6 | height: 2em; 7 | line-height: 2em; 8 | position: relative; 9 | vertical-align: middle; 10 | width: 2em; 11 | } 12 | 13 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 14 | left: 0; 15 | position: absolute; 16 | text-align: center; 17 | width: 100%; 18 | } 19 | 20 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 21 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 22 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 23 | -------------------------------------------------------------------------------- /libs/font-awesome/less/brands.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import "_variables.less"; 6 | 7 | @font-face { 8 | font-family: 'Font Awesome 5 Brands'; 9 | font-style: normal; 10 | font-weight: normal; 11 | src: url('@{fa-font-path}/fa-brands-400.eot'); 12 | src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), 13 | url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'), 14 | url('@{fa-font-path}/fa-brands-400.woff') format('woff'), 15 | url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'), 16 | url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); 17 | } 18 | 19 | .fab { 20 | font-family: 'Font Awesome 5 Brands'; 21 | } 22 | -------------------------------------------------------------------------------- /libs/font-awesome/less/fontawesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import "_variables.less"; 6 | @import "_mixins.less"; 7 | @import "_core.less"; 8 | @import "_larger.less"; 9 | @import "_fixed-width.less"; 10 | @import "_list.less"; 11 | @import "_bordered-pulled.less"; 12 | @import "_animated.less"; 13 | @import "_rotated-flipped.less"; 14 | @import "_stacked.less"; 15 | @import "_icons.less"; 16 | @import "_screen-reader.less"; 17 | -------------------------------------------------------------------------------- /libs/font-awesome/less/regular.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import "_variables.less"; 6 | 7 | @font-face { 8 | font-family: 'Font Awesome 5 Free'; 9 | font-style: normal; 10 | font-weight: 400; 11 | src: url('@{fa-font-path}/fa-regular-400.eot'); 12 | src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), 13 | url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'), 14 | url('@{fa-font-path}/fa-regular-400.woff') format('woff'), 15 | url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'), 16 | url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); 17 | } 18 | 19 | .far { 20 | font-family: 'Font Awesome 5 Free'; 21 | font-weight: 400; 22 | } 23 | -------------------------------------------------------------------------------- /libs/font-awesome/less/solid.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import "_variables.less"; 6 | 7 | @font-face { 8 | font-family: 'Font Awesome 5 Free'; 9 | font-style: normal; 10 | font-weight: 900; 11 | src: url('@{fa-font-path}/fa-solid-900.eot'); 12 | src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), 13 | url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'), 14 | url('@{fa-font-path}/fa-solid-900.woff') format('woff'), 15 | url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'), 16 | url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); 17 | } 18 | 19 | .fa, 20 | .fas { 21 | font-family: 'Font Awesome 5 Free'; 22 | font-weight: 900; 23 | } 24 | -------------------------------------------------------------------------------- /libs/font-awesome/less/v4-shims.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import '_variables.less'; 6 | @import '_shims.less'; 7 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | animation: fa-spin 2s infinite linear; 6 | } 7 | 8 | .#{$fa-css-prefix}-pulse { 9 | animation: fa-spin 1s infinite steps(8); 10 | } 11 | 12 | @keyframes fa-spin { 13 | 0% { 14 | transform: rotate(0deg); 15 | } 16 | 17 | 100% { 18 | transform: rotate(360deg); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | border: solid .08em $fa-border-color; 6 | border-radius: .1em; 7 | padding: .2em .25em .15em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix}, 14 | .fas, 15 | .far, 16 | .fal, 17 | .fab { 18 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 19 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 20 | } 21 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}, 5 | .fas, 6 | .far, 7 | .fal, 8 | .fab { 9 | -moz-osx-font-smoothing: grayscale; 10 | -webkit-font-smoothing: antialiased; 11 | display: inline-block; 12 | font-style: normal; 13 | font-variant: normal; 14 | text-rendering: auto; 15 | line-height: 1; 16 | } 17 | 18 | %fa-icon { 19 | @include fa-icon; 20 | } 21 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | text-align: center; 5 | width: (20em / 16); 6 | } 7 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | // makes the font 33% larger relative to the icon container 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -.0667em; 9 | } 10 | 11 | .#{$fa-css-prefix}-xs { 12 | font-size: .75em; 13 | } 14 | 15 | .#{$fa-css-prefix}-sm { 16 | font-size: .875em; 17 | } 18 | 19 | @for $i from 1 through 10 { 20 | .#{$fa-css-prefix}-#{$i}x { 21 | font-size: $i * 1em; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | list-style-type: none; 6 | margin-left: $fa-li-width * 5/4; 7 | padding-left: 0; 8 | 9 | > li { position: relative; } 10 | } 11 | 12 | .#{$fa-css-prefix}-li { 13 | left: -$fa-li-width; 14 | position: absolute; 15 | text-align: center; 16 | width: $fa-li-width; 17 | line-height: inherit; 18 | } 19 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon { 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | display: inline-block; 8 | font-style: normal; 9 | font-variant: normal; 10 | font-weight: normal; 11 | line-height: 1; 12 | vertical-align: -.125em; 13 | } 14 | 15 | @mixin fa-icon-rotate($degrees, $rotation) { 16 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 17 | transform: rotate($degrees); 18 | } 19 | 20 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 21 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 22 | transform: scale($horiz, $vert); 23 | } 24 | 25 | 26 | // Only display content to screen readers. A la Bootstrap 4. 27 | // 28 | // See: http://a11yproject.com/posts/how-to-hide-content/ 29 | 30 | @mixin sr-only { 31 | border: 0; 32 | clip: rect(0, 0, 0, 0); 33 | height: 1px; 34 | margin: -1px; 35 | overflow: hidden; 36 | padding: 0; 37 | position: absolute; 38 | width: 1px; 39 | } 40 | 41 | // Use in conjunction with .sr-only to only display content when it's focused. 42 | // 43 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 44 | // 45 | // Credit: HTML5 Boilerplate 46 | 47 | @mixin sr-only-focusable { 48 | &:active, 49 | &:focus { 50 | clip: auto; 51 | height: auto; 52 | margin: 0; 53 | overflow: visible; 54 | position: static; 55 | width: auto; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | .#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); } 11 | 12 | // Hook for IE8-9 13 | // ------------------------- 14 | 15 | :root { 16 | .#{$fa-css-prefix}-rotate-90, 17 | .#{$fa-css-prefix}-rotate-180, 18 | .#{$fa-css-prefix}-rotate-270, 19 | .#{$fa-css-prefix}-flip-horizontal, 20 | .#{$fa-css-prefix}-flip-vertical { 21 | filter: none; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only; } 5 | .sr-only-focusable { @include sr-only-focusable; } 6 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | display: inline-block; 6 | height: 2em; 7 | line-height: 2em; 8 | position: relative; 9 | vertical-align: middle; 10 | width: 2em; 11 | } 12 | 13 | .#{$fa-css-prefix}-stack-1x, 14 | .#{$fa-css-prefix}-stack-2x { 15 | left: 0; 16 | position: absolute; 17 | text-align: center; 18 | width: 100%; 19 | } 20 | 21 | .#{$fa-css-prefix}-stack-1x { 22 | line-height: inherit; 23 | } 24 | 25 | .#{$fa-css-prefix}-stack-2x { 26 | font-size: 2em; 27 | } 28 | 29 | .#{$fa-css-prefix}-inverse { 30 | color: $fa-inverse; 31 | } 32 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/brands.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import 'variables'; 6 | 7 | @font-face { 8 | font-family: 'Font Awesome 5 Brands'; 9 | font-style: normal; 10 | font-weight: normal; 11 | src: url('#{$fa-font-path}/fa-brands-400.eot'); 12 | src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), 13 | url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), 14 | url('#{$fa-font-path}/fa-brands-400.woff') format('woff'), 15 | url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'), 16 | url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); 17 | } 18 | 19 | .fab { 20 | font-family: 'Font Awesome 5 Brands'; 21 | } 22 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/fontawesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import 'variables'; 6 | @import 'mixins'; 7 | @import 'core'; 8 | @import 'larger'; 9 | @import 'fixed-width'; 10 | @import 'list'; 11 | @import 'bordered-pulled'; 12 | @import 'animated'; 13 | @import 'rotated-flipped'; 14 | @import 'stacked'; 15 | @import 'icons'; 16 | @import 'screen-reader'; 17 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/regular.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import 'variables'; 6 | 7 | @font-face { 8 | font-family: 'Font Awesome 5 Free'; 9 | font-style: normal; 10 | font-weight: 400; 11 | src: url('#{$fa-font-path}/fa-regular-400.eot'); 12 | src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), 13 | url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), 14 | url('#{$fa-font-path}/fa-regular-400.woff') format('woff'), 15 | url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'), 16 | url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); 17 | } 18 | 19 | .far { 20 | font-family: 'Font Awesome 5 Free'; 21 | font-weight: 400; 22 | } 23 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/solid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import 'variables'; 6 | 7 | @font-face { 8 | font-family: 'Font Awesome 5 Free'; 9 | font-style: normal; 10 | font-weight: 900; 11 | src: url('#{$fa-font-path}/fa-solid-900.eot'); 12 | src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), 13 | url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), 14 | url('#{$fa-font-path}/fa-solid-900.woff') format('woff'), 15 | url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'), 16 | url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); 17 | } 18 | 19 | .fa, 20 | .fas { 21 | font-family: 'Font Awesome 5 Free'; 22 | font-weight: 900; 23 | } 24 | -------------------------------------------------------------------------------- /libs/font-awesome/scss/v4-shims.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @import 'variables'; 6 | @import 'shims'; 7 | -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /libs/font-awesome/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/font-awesome/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /libs/leaflet/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/leaflet/images/layers-2x.png -------------------------------------------------------------------------------- /libs/leaflet/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/leaflet/images/layers.png -------------------------------------------------------------------------------- /libs/leaflet/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/leaflet/images/marker-icon-2x.png -------------------------------------------------------------------------------- /libs/leaflet/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/leaflet/images/marker-icon.png -------------------------------------------------------------------------------- /libs/leaflet/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spcanelon/tour-of-the-tidyverse/fbd2afc7156e55cc08753c60086e99ff729ec20b/libs/leaflet/images/marker-shadow.png -------------------------------------------------------------------------------- /libs/leafletfix/leafletfix.css: -------------------------------------------------------------------------------- 1 | /* Work around CSS properties introduced on img by bootstrap */ 2 | img.leaflet-tile { 3 | padding: 0; 4 | margin: 0; 5 | border-radius: 0; 6 | border: none; 7 | } 8 | .info { 9 | padding: 6px 8px; 10 | font: 14px/16px Arial, Helvetica, sans-serif; 11 | background: white; 12 | background: rgba(255,255,255,0.8); 13 | box-shadow: 0 0 15px rgba(0,0,0,0.2); 14 | border-radius: 5px; 15 | } 16 | .legend { 17 | line-height: 18px; 18 | color: #555; 19 | } 20 | .legend svg text { 21 | fill: #555; 22 | } 23 | .legend svg line { 24 | stroke: #555; 25 | } 26 | .legend i { 27 | width: 18px; 28 | height: 18px; 29 | margin-right: 4px; 30 | opacity: 0.7; 31 | display: inline-block; 32 | vertical-align: top; 33 | /*For IE 7*/ 34 | zoom: 1; 35 | *display: inline; 36 | } 37 | -------------------------------------------------------------------------------- /libs/panelset/panelset.css: -------------------------------------------------------------------------------- 1 | /* prefixed by https://autoprefixer.github.io (PostCSS: v7.0.23, autoprefixer: v9.7.3) */ 2 | 3 | .panelset { 4 | width: 100%; 5 | position: relative; 6 | --panel-tabs-border-bottom: #ddd; 7 | --panel-tab-foreground: currentColor; 8 | --panel-tab-background: unset; 9 | --panel-tab-active-foreground: currentColor; 10 | --panel-tab-active-background: unset; 11 | --panel-tab-hover-foreground: currentColor; 12 | --panel-tab-hover-background: unset; 13 | --panel-tab-active-border-color: currentColor; 14 | --panel-tab-hover-border-color: currentColor; 15 | --panel-tab-inactive-opacity: 0.5; 16 | --panel-tab-font-family: inherit; 17 | } 18 | 19 | .panelset * { 20 | box-sizing: border-box; 21 | } 22 | 23 | .panelset .panel-tabs { 24 | display: -webkit-box; 25 | display: flex; 26 | flex-wrap: wrap; 27 | -webkit-box-orient: horizontal; 28 | -webkit-box-direction: normal; 29 | flex-direction: row; 30 | -webkit-box-pack: start; 31 | justify-content: start; 32 | -webkit-box-align: center; 33 | align-items: center; 34 | overflow-y: visible; 35 | overflow-x: auto; 36 | -webkit-overflow-scrolling: touch; 37 | padding: 0 0 2px 0; 38 | box-shadow: inset 0 -2px 0px var(--panel-tabs-border-bottom); 39 | } 40 | 41 | .panelset .panel-tabs * { 42 | -webkit-transition: opacity 0.5s ease; 43 | transition: opacity 0.5s ease; 44 | } 45 | 46 | .panelset .panel-tabs .panel-tab { 47 | min-height: 50px; 48 | display: -webkit-box; 49 | display: flex; 50 | -webkit-box-pack: center; 51 | justify-content: center; 52 | -webkit-box-align: center; 53 | align-items: center; 54 | padding: 0.5em 1em; 55 | font-family: var(--panel-tab-font-family); 56 | opacity: var(--panel-tab-inactive-opacity); 57 | border-top: 2px solid transparent; 58 | border-bottom: 2px solid transparent; 59 | margin-bottom: -2px; 60 | color: var(--panel-tab-foreground); 61 | background-color: var(--panel-tab-background); 62 | list-style: none; 63 | z-index: 5; 64 | } 65 | 66 | .panelset .panel-tabs .panel-tab > a { 67 | color: currentColor; 68 | text-decoration: none; 69 | border: none; 70 | } 71 | 72 | .panelset .panel-tabs .panel-tab > a:focus { 73 | outline: none; 74 | text-decoration: none; 75 | border: none; 76 | } 77 | 78 | .panelset .panel-tabs .panel-tab > a:hover { 79 | text-decoration: none; 80 | border: none; 81 | } 82 | 83 | .panelset .panel-tabs .panel-tab:hover { 84 | border-bottom-color: var(--panel-tab-hover-border-color); 85 | color: var(--panel-tab-hover-foreground); 86 | background-color: var(--panel-tab-hover-background); 87 | opacity: 1; 88 | cursor: pointer; 89 | z-index: 10; 90 | } 91 | 92 | .panelset .panel-tabs .panel-tab:focus { 93 | outline: none; 94 | color: var(--panel-tab-hover-foreground); 95 | border-bottom-color: var(--panel-tab-hover-border-color); 96 | background-color: var(--panel-tab-hover-background); 97 | } 98 | 99 | .panelset .panel-tabs .panel-tab.panel-tab-active { 100 | border-top-color: var(--panel-tab-active-border-color); 101 | color: var(--panel-tab-active-foreground); 102 | background-color: var(--panel-tab-active-background); 103 | opacity: 1; 104 | } 105 | 106 | .panelset .panel { 107 | display: none; 108 | } 109 | 110 | .panelset .panel-active { 111 | display: block; 112 | } 113 | -------------------------------------------------------------------------------- /libs/panelset/panelset.js: -------------------------------------------------------------------------------- 1 | /* global slideshow */ 2 | (function () { 3 | const ready = function (fn) { 4 | /* MIT License Copyright (c) 2016 Nuclei */ 5 | /* https://github.com/nuclei/readyjs */ 6 | const completed = () => { 7 | document.removeEventListener('DOMContentLoaded', completed) 8 | window.removeEventListener('load', completed) 9 | fn() 10 | } 11 | if (document.readyState !== 'loading') { 12 | setTimeout(fn) 13 | } else { 14 | document.addEventListener('DOMContentLoaded', completed) 15 | window.addEventListener('load', completed) 16 | } 17 | } 18 | 19 | ready(function () { 20 | [...document.querySelectorAll('.panel-name')] 21 | .map(el => el.textContent.trim()) 22 | 23 | const panelIds = {} 24 | 25 | const uniquePanelId = (name) => { 26 | name = encodeURIComponent(name.toLowerCase().replace(/[\s]/g, '-')) 27 | if (Object.keys(panelIds).includes(name)) { 28 | name += ++panelIds[name] 29 | } else { 30 | panelIds[name] = 1 31 | } 32 | return name 33 | } 34 | 35 | const identifyPanelName = (item) => { 36 | let name = 'Panel' 37 | 38 | // If the item doesn't have a parent element, then we've already processed 39 | // it, probably because we're in an Rmd, and it's been removed from the DOM 40 | if (!item.parentElement) { 41 | return 42 | } 43 | 44 | // In R Markdown when header-attrs.js is present, we may have found a 45 | // section header but the class attributes won't be duplicated on the is empty, we'll remove it
61 | if (
62 | nameDiv.tagName === 'SPAN' &&
63 | nameDiv.parentNode.tagName === 'P' &&
64 | nameDiv.textContent === nameDiv.parentNode.textContent
65 | ) {
66 | name = nameDiv.textContent
67 | item.removeChild(nameDiv.parentNode)
68 | return name
69 | }
70 |
71 | // If none of the above, remove the nameDiv and return the name
72 | name = nameDiv.textContent
73 | nameDiv.parentNode.removeChild(nameDiv)
74 | return name
75 | }
76 |
77 | const processPanelItem = (item) => {
78 | const name = identifyPanelName(item)
79 | if (!name) {
80 | return null
81 | }
82 | return { name, content: item.children, id: uniquePanelId(name) }
83 | }
84 |
85 | const getCurrentPanelFromUrl = (panelset) => {
86 | const params = new URLSearchParams(window.location.search)
87 | return params.get(panelset)
88 | }
89 |
90 | const reflowPanelSet = (panels, idx) => {
91 | const res = document.createElement('div')
92 | res.className = 'panelset'
93 | res.id = 'panelset' + (idx > 0 ? idx : '')
94 | const panelSelected = getCurrentPanelFromUrl(res.id)
95 |
96 | // create header row
97 | const headerRow = document.createElement('ul')
98 | headerRow.className = 'panel-tabs'
99 | headerRow.setAttribute('role', 'tablist')
100 | panels
101 | .map((p, idx) => {
102 | const panelHeaderItem = document.createElement('li')
103 | panelHeaderItem.className = 'panel-tab'
104 | panelHeaderItem.setAttribute('role', 'tab')
105 | const thisPanelIsActive = panelSelected ? panelSelected === p.id : idx === 0
106 | if (thisPanelIsActive) {
107 | panelHeaderItem.classList.add('panel-tab-active')
108 | panelHeaderItem.setAttribute('aria-selected', true)
109 | }
110 | panelHeaderItem.tabIndex = 0
111 | panelHeaderItem.id = res.id + '_' + p.id // #panelsetid_panelid
112 |
113 | const panelHeaderLink = document.createElement('a')
114 | panelHeaderLink.href = '?' + res.id + '=' + p.id + '#' + panelHeaderItem.id
115 | panelHeaderLink.setAttribute('onclick', 'return false;')
116 | panelHeaderLink.tabIndex = -1 // list item is tabable, not link
117 | panelHeaderLink.innerHTML = p.name
118 | panelHeaderLink.setAttribute('aria-controls', p.id)
119 |
120 | panelHeaderItem.appendChild(panelHeaderLink)
121 | return panelHeaderItem
122 | })
123 | .forEach(el => headerRow.appendChild(el))
124 |
125 | res.appendChild(headerRow)
126 |
127 | panels
128 | .map((p, idx) => {
129 | const panelContent = document.createElement('section')
130 | panelContent.className = 'panel'
131 | panelContent.setAttribute('role', 'tabpanel')
132 | const thisPanelIsActive = panelSelected ? panelSelected === p.id : idx === 0
133 | panelContent.classList.toggle('panel-active', thisPanelIsActive)
134 | panelContent.id = p.id
135 | panelContent.setAttribute('aria-labelledby', p.id)
136 | Array.from(p.content).forEach(el => panelContent.appendChild(el))
137 | return panelContent
138 | })
139 | .forEach(el => res.appendChild(el))
140 |
141 | return res
142 | }
143 |
144 | /*
145 | * Update selected panel for panelset or delete panelset from query string
146 | *
147 | * @param panelset Panelset ID to update in the search params
148 | * @param panel Panel ID of selected panel in panelset, or null to delete from search params
149 | * @param params Current params object, or params from window.location.search
150 | */
151 | function updateSearchParams (panelset, panel, params = new URLSearchParams(window.location.search)) {
152 | if (panel) {
153 | params.set(panelset, panel)
154 | } else {
155 | params.delete(panelset)
156 | }
157 | return params
158 | }
159 |
160 | /*
161 | * Update the URL to match params
162 | */
163 | const updateUrl = (params) => {
164 | if (typeof params === 'undefined') return
165 | params = params.toString() ? ('?' + params.toString()) : ''
166 | const { pathname, hash } = window.location
167 | const uri = pathname + params + hash
168 | window.history.replaceState(uri, '', uri)
169 | }
170 |
171 | const togglePanel = (clicked) => {
172 | if (clicked.nodeName.toUpperCase() === 'A') {
173 | clicked = clicked.parentElement
174 | }
175 | if (!clicked.classList.contains('panel-tab')) return
176 | if (clicked.classList.contains('panel-tab-active')) return
177 |
178 | const tabs = clicked.parentNode
179 | .querySelectorAll('.panel-tab')
180 | const panels = clicked.parentNode.parentNode
181 | .querySelectorAll('.panel')
182 | const panelTabClicked = clicked.children[0].getAttribute('aria-controls')
183 | const panelClicked = clicked.parentNode.parentNode.id
184 |
185 | Array.from(tabs)
186 | .forEach(t => {
187 | t.classList.remove('panel-tab-active')
188 | t.removeAttribute('aria-selected')
189 | })
190 | Array.from(panels)
191 | .forEach(p => {
192 | const active = p.id === panelTabClicked
193 | p.classList.toggle('panel-active', active)
194 | // make inactive panels inaccessible by keyboard navigation
195 | if (active) {
196 | p.removeAttribute('tabIndex')
197 | p.removeAttribute('aria-hidden')
198 | } else {
199 | p.setAttribute('tabIndex', -1)
200 | p.setAttribute('aria-hidden', true)
201 | }
202 | })
203 |
204 | clicked.classList.add('panel-tab-active')
205 | clicked.setAttribute('aria-selected', true)
206 |
207 | // update query string
208 | const params = updateSearchParams(panelClicked, panelTabClicked)
209 | updateUrl(params)
210 | }
211 |
212 | const initPanelSet = (panelset, idx) => {
213 | let panels = Array.from(panelset.querySelectorAll('.panel'))
214 | if (!panels.length && panelset.matches('.section[class*="level"]')) {
215 | // we're in tabset-alike R Markdown
216 | const panelsetLevel = [...panelset.classList]
217 | .filter(s => s.match(/^level/))[0]
218 | .replace('level', '')
219 |
220 | // move children that aren't inside a section up above the panelset
221 | Array.from(panelset.children).forEach(function (el) {
222 | if (el.matches('div.section[class*="level"]')) return
223 | panelset.parentElement.insertBefore(el, panelset)
224 | })
225 |
226 | // panels are all .sections with .levelo '
181 | newRow.innerHTML += 'Tile View: Overview of Slides '
182 | helpTable.append(newRow)
183 | }
184 |
185 | createTileView({ minSize: 200 })
186 | toggleElement(tileView)
187 | addTileViewHelpText()
188 | })
189 | })()
190 |
--------------------------------------------------------------------------------
/libs/xaringanExtra-clipboard/xaringanExtra-clipboard.css:
--------------------------------------------------------------------------------
1 | .xaringanextra-clipboard-button {
2 | position: absolute;
3 | top: 0;
4 | right: 0;
5 | font-size: 0.8em;
6 | padding: 0.5em;
7 | display: none;
8 | background-color: transparent;
9 | border: none;
10 | opacity: 0.5;
11 | border-radius: 0;
12 | }
13 |
14 | .xaringanextra-clipboard-button:hover {
15 | background-color: rgba(0, 0, 0, 0.1);
16 | border: none;
17 | opacity: 1;
18 | }
19 |
20 | :hover > .xaringanextra-clipboard-button {
21 | display: block;
22 | transform: translateY(0);
23 | }
24 |
--------------------------------------------------------------------------------
/libs/xaringanExtra-clipboard/xaringanExtra-clipboard.js:
--------------------------------------------------------------------------------
1 | /* global slideshow,window,document */
2 | window.xaringanExtraClipboard = function (selector, text) {
3 | if (!window.ClipboardJS.isSupported()) return
4 | if (!window.xaringanExtraClipboards) window.xaringanExtraClipboards = {}
5 |
6 | const ready = function (fn) {
7 | /* MIT License Copyright (c) 2016 Nuclei */
8 | /* https://github.com/nuclei/readyjs */
9 | const completed = () => {
10 | document.removeEventListener('DOMContentLoaded', completed)
11 | window.removeEventListener('load', completed)
12 | fn()
13 | }
14 | if (document.readyState !== 'loading') {
15 | setTimeout(fn)
16 | } else {
17 | document.addEventListener('DOMContentLoaded', completed)
18 | window.addEventListener('load', completed)
19 | }
20 | }
21 |
22 | ready(function () {
23 | const {
24 | button: buttonText = 'Copy Code',
25 | success: successText = 'Copied!',
26 | error: errorText = 'Press Ctrl+C to Copy'
27 | } = text
28 |
29 | const template = '`
31 |
32 | const isRemarkSlideshow = typeof slideshow !== 'undefined' &&
33 | Object.prototype.hasOwnProperty.call(slideshow, 'getSlides')
34 |
35 | let siblingSelector = selector || 'pre'
36 | if (!selector && isRemarkSlideshow) {
37 | siblingSelector = '.remark-slides-area ' + siblingSelector
38 | }
39 |
40 | // insert