diff --git a/.gitignore b/.gitignore index 2a41229..0422438 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ /node_modules /public/hot /public/storage +/public/css +/public/fonts +/public/js +/public/images /storage/*.key /vendor /.idea diff --git a/public/css/global.css b/public/css/global.css deleted file mode 100644 index 17c18a6..0000000 --- a/public/css/global.css +++ /dev/null @@ -1,380 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Lato:300,400,700|Maven+Pro:400,700); -html { - -ms-box-sizing: border-box; - -o-box-sizing: border-box; - box-sizing: border-box; -} - -body { - min-width: 320px; - font-family: "Maven Pro", Helvetica, Verdana, sans-serif; - font-weight: 400; - font-size: 18px; - line-height: 29.124px; - text-align: left; - color: #212121; - background: #FFFFFF; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -moz-font-feature-settings: "liga" on; -} - -*, -*:before, -*:after { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -h1, -h2, -h3, -h4 { - font-family: "Lato", Helvetica, Verdana, sans-serif; -} - -a { - color: #000000; -} - -aside, -section, -main, -nav, -header, -footer { - display: block; -} - -.outer-overlay, -.outer-menu, -.global-header > .hamburger { - display: none; -} - -.global-header { - z-index: 100; - position: relative; - padding: 0 40px 0 40px; - height: 100px; -} - -.global-header > .container { - margin: 0 auto 0 auto; - height: 100%; - max-width: 1000px; -} - -.global-header nav:after, -.global-header > .container:after, -.global-header ul:after { - content: ""; - display: table; - clear: both; -} - -.global-header .title, -.global-header .nav li, -.global-header .links li { - display: table; - height: 100px; -} - -.global-header ul { - list-style: none; -} - -.global-header ul > li { - float: left; -} - -.global-header a { - display: table-cell; - vertical-align: middle; - font-family: "Lato", Helvetica, Verdana, sans-serif; - text-decoration: none; - color: inherit; -} - -.global-header a span { - padding: 4px; - font-size: 18px; - line-height: 18px; - border-bottom: 1px solid transparent; -} - -.global-header a:hover span, -.global-header .nav .current > a span { - border-bottom-color: #CCCCCC; -} - -.global-header .title, -.global-header .nav { - float: left; -} - -.global-header .title { - margin-right: 20px; -} - -.global-header .title > a { - font-weight: 700; - font-size: 26px; - line-height: 26px; -} - -.global-header .nav a, -.global-header .links a { - padding: 0 10px 0 10px; -} - -.global-header .nav .current > a { - font-weight: 700; -} - -.global-header .links { - float: right; -} - -.global-header .links a { - position: relative; - padding-left: 39px; -} - -.global-header .links a:before, -.outer-menu .links a span:before { - content: ""; - position: absolute; - left: 10px; - top: 50%; - margin-top: -12px; - display: inline-block; - width: 24px; - height: 24px; - background: center center no-repeat transparent; - background-size: contain; -} - -.global-header .links .github a:before { - background-image: url("../images/global/global-link-github.svg"); -} - -.global-header .links .codepen a:before { - background-image: url("../images/global/global-link-codepen.svg"); -} - -.global-footer { - margin-top: 160px; - padding: 0 40px 60px 40px; - text-align: center; - font-size: 12px; -} - -.global-footer p { - font-size: 14px; -} - -.global-footer p.small { - font-size: 12px; - color: #AAAAAA; -} - -.global-footer p:last-child { - margin-bottom: 0; -} - -@media (max-width: 900px) { - .global-header .links a { - padding: 0 10px 0 10px; - } - .global-header .links a:before { - position: static; - margin: 0 auto 5px auto; - display: block; - } -} - -@media (max-width: 800px) { - body { - font-size: 14px; - line-height: 22.652px; - } - .outer-wrapper { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - width: auto; - height: auto; - perspective: 2000px; - -webkit-perspective: 2000px; - min-width: 320px; - overflow: hidden; - background: #3F4257; - background: linear-gradient(135deg, #3F4257 0%, #727998 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3F4257", endColorstr="#727998", GradientType=1); - } - .outer-menu { - z-index: 0; - position: absolute; - top: 50%; - right: 0; - display: block; - width: 100%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - .outer-menu > ul { - list-style: none; - } - .outer-menu > .nav { - margin-bottom: 40px; - } - .outer-menu > ul > li > a { - padding: 20px 10% 20px 0; - display: block; - font-size: 16px; - line-height: 16px; - font-weight: 400; - text-align: right; - text-decoration: none; - color: #FFFFFF; - } - .outer-menu > ul > li > a { - opacity: 0; - transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1); - } - body.menu .outer-menu > ul > li > a { - opacity: 1; - } - .outer-menu .nav > li:nth-child(1) > a { - transition-delay: 0.1s; - } - .outer-menu .nav > li:nth-child(2) > a { - transition-delay: 0.15s; - } - .outer-menu .nav > li:nth-child(3) > a { - transition-delay: 0.2s; - } - .outer-menu .links > li:nth-child(1) > a { - transition-delay: 0.25s; - } - .outer-menu .links > li:nth-child(2) > a { - transition-delay: 0.3s; - } - .outer-menu > ul > li.current > a { - font-weight: 700; - } - .outer-menu > ul > li.current > a, - .outer-menu > ul > li > a:hover { - background: rgba(255, 255, 255, 0.2); - } - .outer-menu > .links > li > a > span { - position: relative; - padding-left: 34px; - } - .outer-menu > .links > li > a > span:before { - left: 0; - } - .outer-menu > .links .github a span:before { - background-image: url("../images/global/global-link-github-light.svg"); - } - .outer-menu > .links .codepen a span:before { - background-image: url("../images/global/global-link-codepen-light.svg"); - } - .outer-content, - .outer-overlay { - left: 0; - top: 0; - position: absolute; - width: 100%; - height: 100%; - overflow-x: hidden; - } - .outer-content { - z-index: 10; - background: #FFFFFF; - will-change: transform; - transition: -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: transform 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: transform 0.2s cubic-bezier(0.4, 0, 1, 1), -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1); - } - body.menu .outer-content { - transition-timing-function: cubic-bezier(0, 0, 0.2, 1); - } - body.menu .outer-wrapper, - body.menu .outer-content { - position: absolute; - } - body .outer-overlay { - z-index: 20; - } - body.menu .outer-overlay { - display: block; - } - body.menu .outer-overlay:hover { - cursor: pointer; - } - body.menu .outer-content { - overflow: hidden; - box-shadow: rgba(0, 0, 0, 0.3) 0 0 10px 3px; - } - body.menu .outer-content, - body .outer-overlay { - -webkit-transform: translate3d(-50%, 0, 0) scale3d(0.85, 0.85, 1) rotateY(25deg) translateZ(0); - transform: translate3d(-50%, 0, 0) scale3d(0.85, 0.85, 1) rotateY(25deg) translateZ(0); - } - .global-header { - padding: 0 0 0 20px; - } - .global-header, - .global-header .title { - height: 50px; - } - .global-header .title { - margin-right: 0; - } - .global-header .title > a { - font-size: 20px; - line-height: 20px; - } - .global-header nav { - display: none; - } - .global-header .hamburger { - float: right; - position: relative; - display: block; - width: 70px; - height: 50px; - } - .global-header .hamburger:before { - content: ""; - position: absolute; - left: 10px; - top: 50%; - margin-top: -15px; - display: block; - width: 40px; - height: 30px; - background: url("/images/global/global-header-hamburger.svg") 0 center no-repeat transparent; - } - body.menu .global-header .hamburger:before { - background-position: -40px center; - } - .global-footer { - margin-top: 60px; - padding: 0 20px 20px 20px; - } - .global-footer p, - .global-footer p.small { - font-size: 10px; - line-height: 12px; - } - .global-footer p.small { - margin-top: 5px; - } -} diff --git a/public/css/photography.css b/public/css/photography.css deleted file mode 100644 index 0cef420..0000000 --- a/public/css/photography.css +++ /dev/null @@ -1,481 +0,0 @@ -/* OVERRIDES */ -body { - color: #FFFFFF; - background: #000000; -} - -.global-footer { - display: none; -} - -.global-header { - opacity: 0.5; - padding-left: 20px; - padding-right: 10px; -} - -.global-header > .container { - max-width: none; -} - -.global-header, -.global-header .title, -.global-header .nav li { - height: 70px; -} - -.global-header .links { - display: none; -} - -/* MAIN */ -#photography { - position: absolute; - left: 0; - top: 70px; - width: 100%; - height: -ms-calc(100% - 70px); - height: -o-calc(100% - 70px); - height: calc(100% - 70px); - will-change: transform; - overflow: hidden; - background: #000000; -} - -/* VIEWER */ -#photography > .viewer { - z-index: 0; - position: absolute; - left: 0; - top: 0; - width: -ms-calc(100% - 160px); - width: -o-calc(100% - 160px); - width: calc(100% - 160px); - height: -ms-calc(100% - 80px); - height: -o-calc(100% - 80px); - height: calc(100% - 80px); -} - -#photography > .viewer > .arrow { - z-index: 10; - position: absolute; - top: 0; - width: 20%; - height: 100%; -} - -#photography > .viewer > .arrow:hover { - cursor: pointer; -} - -#photography > .viewer > .arrow.prev { - left: 0; -} - -#photography > .viewer > .arrow.next { - right: 0; -} - -#photography > .viewer > .arrow:before { - content: ""; - opacity: 0; - position: absolute; - top: 50%; - margin-top: -15px; - width: 30px; - height: 50px; - background: url("../images/photography/viewer-arrow.svg") center center no-repeat transparent; - transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); -} - -#photography > .viewer > .arrow:hover:before { - opacity: 0.5; -} - -#photography > .viewer > .arrow.prev:before { - left: 60px; - -webkit-transform: translateX(0px); - transform: translateX(0px); -} - -#photography > .viewer > .arrow.prev:hover:before { - -webkit-transform: translateX(-20px); - transform: translateX(-20px); -} - -#photography > .viewer > .arrow.next:before { - right: 50px; - -webkit-transform: translateX(0px) rotate(180deg); - transform: translateX(0px) rotate(180deg); -} - -#photography > .viewer > .arrow.next:hover:before { - -webkit-transform: translateX(20px) rotate(180deg); - transform: translateX(20px) rotate(180deg); -} - -#photography > .viewer > .viewer-photo { - z-index: 0; - position: absolute; - left: 20px; - top: 20px; - width: -ms-calc(100% - 30px); - width: -o-calc(100% - 30px); - width: calc(100% - 30px); - height: -ms-calc(100% - 30px); - height: -o-calc(100% - 30px); - height: calc(100% - 30px); - background: center center no-repeat transparent; - background-size: contain; - transition: opacity 0.2s cubic-bezier(0.4, 0, 1, 1); -} - -#photography.loading > .viewer > .viewer-photo { - opacity: 0.5; - transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1); -} - -#photography.loading > .viewer:before { - content: ""; - position: absolute; - left: 50%; - top: 50%; - margin-left: -30px; - margin-top: -30px; - width: 60px; - height: 60px; - border-radius: 50%; - border: 6px solid #FFFFFF; - -webkit-animation: loading 1s infinite cubic-bezier(0, 0, 0.2, 1); - animation: loading 1s infinite cubic-bezier(0, 0, 0.2, 1); -} - -@-webkit-keyframes loading { - 0% { - -webkit-transform: scale(0.1); - opacity: 0; - } - 50% { - opacity: 1; - } - 100% { - -webkit-transform: scale(1); - opacity: 0; - } -} - -@keyframes loading { - 0% { - -webkit-transform: scale(0.1); - transform: scale(0.1); - opacity: 0; - } - 50% { - opacity: 1; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0; - } -} - -/* MAP */ -#photography > .map { - z-index: 10; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: -ms-calc(100% - 80px); - height: -o-calc(100% - 80px); - height: calc(100% - 80px); - background: #000000; - -webkit-transform: translateY(0); - transform: translateY(0); - transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); -} - -#photography > .map.v-enter, -#photography > .map.v-leave-to { - opacity: 0; - -webkit-transform: translateY(100%); - transform: translateY(100%); -} - -/* NAVIGATOR */ -#photography > .navigator { - z-index: 20; - position: absolute; - left: 0; - bottom: 0; - width: 100%; - height: 80px; - background: #000000; -} - -#photography > .navigator > .details { - position: absolute; - left: 20px; - top: 50%; - list-style: none; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} - -#photography > .navigator > .details > .title { - margin-bottom: 5px; - font-size: 16px; - line-height: 16px; -} - -#photography > .navigator > .details > .index { - font-size: 12px; - line-height: 12px; - color: #8C8C8C; -} - -#photography > .navigator > .buttons { - position: absolute; - right: 340px; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} - -#photography > .navigator > .buttons:after { - content: ""; - display: table; - clear: both; -} - -#photography > .navigator > .buttons > .button { - opacity: 0.5; - float: left; - display: block; - margin-right: 20px; - font-size: 12px; - line-height: 12px; - text-align: center; - color: #FFFFFF; - text-decoration: none; -} - -#photography > .navigator > .buttons > .button:last-child { - margin-right: 0; -} - -#photography > .navigator > .buttons > .button:before { - content: ""; - display: block; - margin: 0 auto 5px auto; - width: 16px; - height: 16px; - background: center center no-repeat transparent; -} - -#photography > .navigator > .buttons > .button.map:before { - background-image: url("../images/photography/map-button.svg"); -} - -#photography > .navigator > .buttons > .button.close:before { - background-image: url("../images/photography/close-button.svg"); -} - -#photography > .navigator > .buttons > .button:hover { - opacity: 1; -} - -#photography > .navigator > .selector { - position: absolute; - right: 20px; - top: 50%; - padding: 0 38px 0 15px; - width: 300px; - height: 40px; - font-size: 14px; - color: #BABABA; - border-radius: 3px; - border: none; - background: url("../images/photography/select-arrow.svg") no-repeat #181818; - background-position: -ms-calc(100% - 15px) center; - background-position: -o-calc(100% - 15px) center; - background-position: calc(100% - 15px) center; - -webkit-appearance: none; - apperance: none; - outline: none; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} - -#photography > .navigator > .selector:hover { - cursor: pointer; - background-color: #252525; -} - -/* SIDEBAR */ -#photography > .sidebar { - z-index: 0; - position: absolute; - right: 0; - top: 0; - padding: 20px 0 20px 0; - width: 160px; - height: -ms-calc(100% - 80px); - height: -o-calc(100% - 80px); - height: calc(100% - 80px); - overflow: hidden; - overflow-y: scroll; - background: #000000; -} - -#photography > .sidebar .sidebar-thumb { - opacity: 0.25; - display: block; - margin: 0 auto 20px auto; - width: 120px; - height: 80px; - background: center center no-repeat transparent; - background-size: cover; - transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1); -} - -#photography > .sidebar .sidebar-thumb:last-child { - margin-bottom: 0; -} - -#photography > .sidebar .sidebar-thumb:hover { - opacity: 0.5; -} - -#photography > .sidebar .sidebar-thumb.current { - opacity: 1; -} - -@media (min-width: 801px) { - #photography > .sidebar > .sidebar-wrapper { - width: auto !important; - } -} - -@media (max-width: 800px) { - /* OVERRIDES */ - .outer-content { - background: #000000; - } - .global-header { - opacity: 0.3; - padding-left: 10px; - padding-right: 0; - } - .global-header, - .global-header .title, - .global-header .hamburger { - height: 50px; - } - .global-header .hamburger { - width: 60px; - } - .global-header .hamburger:before { - background-image: url("/images/global/global-header-hamburger-light.svg"); - } - /* MAIN */ - #photography { - top: 50px; - height: -ms-calc(100% - 50px); - height: -o-calc(100% - 50px); - height: calc(100% - 50px); - } - /* VIEWER */ - #photography > .viewer { - width: 100%; - height: -ms-calc(100% - 100px); - height: -o-calc(100% - 100px); - height: calc(100% - 100px); - } - #photography > .viewer > .viewer-photo { - left: 0; - top: 0; - width: 100%; - height: -ms-calc(100% - 10px); - height: -o-calc(100% - 10px); - height: calc(100% - 10px); - } - #photography > .viewer > .arrow { - width: 40%; - } - #photography > .viewer > .arrow:before { - display: none; - } - /* MAP */ - #photography > .map { - display: none; - } - /* NAVIGATOR */ - #photography > .navigator { - padding: 10px; - height: 50px; - } - #photography > .navigator > .details { - left: 10px; - padding-right: 10px; - width: -ms-calc(45% - 10px); - width: -o-calc(45% - 10px); - width: calc(45% - 10px); - } - #photography > .navigator > .details > .title, - #photography > .navigator > .details > .index { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } - #photography > .navigator > .details > .title { - margin-bottom: 2px; - font-size: 12px; - line-height: 12px; - } - #photography > .navigator > .details > .index { - font-size: 10px; - line-height: 10px; - } - #photography > .navigator > .buttons { - display: none; - } - #photography > .navigator > .selector { - right: 10px; - padding: 0 28px 0 10px; - width: -ms-calc(55% - 10px); - width: -o-calc(55% - 10px); - width: calc(55% - 10px); - height: 30px; - font-size: 12px; - background-position: -ms-calc(100% - 10px) center; - background-position: -o-calc(100% - 10px) center; - background-position: calc(100% - 10px) center; - } - /* SIDEBAR */ - #photography > .sidebar { - top: auto; - bottom: 50px; - padding: 10px; - width: 100%; - height: 50px; - overflow-x: scroll; - overflow-y: hidden; - } - #photography > .sidebar > .sidebar-wrapper:after { - content: ""; - display: table; - clear: both; - } - #photography > .sidebar .sidebar-thumb { - float: left; - margin-bottom: 0; - margin-right: 10px; - width: 50px; - height: 30px; - } - #photography > .sidebar .sidebar-thumb:last-child { - margin-right: 0; - } -} diff --git a/public/css/project-list.css b/public/css/project-list.css deleted file mode 100644 index ecd27f1..0000000 --- a/public/css/project-list.css +++ /dev/null @@ -1,120 +0,0 @@ -.project-list { - margin: 0 auto 0 auto; - padding: 80px 20px 40px 20px; - max-width: 1080px; -} - -.project-list:after { - content: ""; - display: table; - clear: both; -} - -.project-list > .list-item { - float: left; - display: block; - margin-top: 60px; - padding: 0 20px 0 20px; - width: 50%; -} - -.project-list > .list-item:nth-child(1), -.project-list > .list-item:nth-child(2) { - margin-top: 0; -} - -.project-list > .list-item:nth-child(odd) { - clear: both; -} - -.project-list > .list-item > .item-image, -.project-list > .list-item > .item-image > img { - display: block; - width: 100%; - height: auto; -} - -.project-list > .list-item > .item-image { - margin-bottom: 20px; - border: none; -} - -.project-list > .list-item > h2 { - display: inline-block; - margin-bottom: 10px; - font-size: 20px; - line-height: 20px; -} - -.project-list > .list-item > .view { - opacity: 0.5; - float: right; - padding: 5px 10px 5px 10px; - font-size: 16px; - line-height: 16px; - color: #212121; - border: 1px solid #212121; - border-radius: 5px; - text-decoration: none; -} - -.project-list > .list-item > .view:hover { - opacity: 1; - text-decoration: underline; -} - -.project-list > .list-item > p { - clear: both; -} - -.project-list > .list-item > .details { - margin-top: 10px; - list-style: none; -} - -.project-list > .list-item > .details > li { - margin-bottom: 5px; - font-size: 14px; - line-height: 18px; - color: #9E9E9E; -} - -.project-list > .list-item > .details > li:last-child { - margin-bottom: 0; -} - -@media (max-width: 800px) { - .project-list { - padding-top: 40px; - padding-bottom: 20px; - } - .project-list > .list-item { - float: none; - margin: 0 auto 40px auto; - padding: 0; - width: 100%; - max-width: 500px; - } - .project-list > .list-item:last-child { - margin-bottom: 0; - } - .project-list > .list-item > h2 { - font-size: 16px; - line-height: 16px; - } - .project-list > .list-item > .view { - padding: 5px 5px 5px 5px; - font-size: 14px; - line-height: 14px; - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - } - .project-list > .list-item > .details { - margin-top: 5px; - } - .project-list > .list-item > .details > li { - margin-bottom: 0; - font-size: 12px; - line-height: 16px; - } -} diff --git a/public/css/project.css b/public/css/project.css deleted file mode 100644 index 1ccc695..0000000 --- a/public/css/project.css +++ /dev/null @@ -1,239 +0,0 @@ -.project-header { - padding: 140px 40px 40px 40px; -} - -.project-header.joyce { - color: #FFFFFF; - border-color: #FFFFFF; - background: #000000; -} - -.project-header.enicar { - color: #FFFFFF; - border-color: #FFFFFF; - background: #E44436; -} - -.project-header.steamchat { - color: #FFFFFF; - border-color: #FFFFFF; - background: #0064BF; -} - -.project-header.k11 { - color: #FFFFFF; - border-color: #FFFFFF; - background: #A7834A; -} - -.project-header.hkjc { - color: #FAD40E; - border-color: #FFFFFF; - background: #002E65; -} - -.project-header > .container { - margin: 0 auto 0 auto; - max-width: 1000px; -} - -.project-header h2 { - float: left; - display: inline-block; - margin-bottom: 20px; - font-size: 72px; - line-height: 72px; - font-weight: 300; -} - -.project-header .view { - opacity: 0.5; - float: left; - margin-top: 32px; - margin-left: 32px; - padding: 5px 10px 5px 10px; - font-size: 16px; - line-height: 16px; - color: inherit; - border: 1px solid; - border-color: inherit; - border-radius: 5px; - text-decoration: none; -} - -.project-header .view:hover { - opacity: 1; - text-decoration: underline; -} - -.project-header h3 { - clear: both; - font-size: 26px; - line-height: 34px; - font-weight: 300; - max-width: 650px; -} - -.project-header .details { - margin-top: 60px; - list-style: none; -} - -.project-header .details:after { - content: ""; - display: table; - clear: both; -} - -.project-header .details > li { - float: left; - margin-right: 40px; - margin-bottom: 20px; - max-width: 320px; - font-size: 14px; - line-height: 14px; -} - -.project-header .details > li:last-child { - margin-right: 0; -} - -.project-header .details > li .title { - display: block; - margin-bottom: 5px; - font-weight: 700; -} - -.project-cover { - display: block; - margin: 0 auto 80px auto; - width: 100%; - max-width: 1800px; - height: auto; -} - -.project-content > h3, -.project-content > h4, -.project-content > p, -.project-content > ol, -.project-content > ul { - display: block; - margin: 20px auto 20px auto; - padding: 0 40px 0 40px; - max-width: 800px; -} - -.project-content > h4 { - margin-top: 40px; -} - -.project-content > p + h3, -.project-content > ol + h3, -.project-content > ul + h3 { - margin-top: 60px; -} - -.project-content > p { - text-align: justify; -} - -.project-content > p code { - padding: 1px 5px 1px 5px; - color: #0077AA; - text-shadow: 0 1px #FFFFFF; - border-radius: 2px; - background: #F0F2F1; -} - -.project-image { - margin: 40px auto 40px auto; - padding: 0 40px 0 40px; - max-width: 600px; -} - -.project-image > .image { - display: block; - width: 100%; - height: auto; -} - -.project-image > .caption { - margin-top: 10px; - padding: 0 20px 0 20px; - font-size: 14px; - line-height: 18px; - text-align: center; - color: #9E9E9E; -} - -@media (max-width: 800px) { - .project-header { - padding: 60px 20px 20px 20px; - } - .project-header h2 { - float: none; - display: block; - margin-bottom: 10px; - font-size: 48px; - line-height: 48px; - } - .project-header .view { - opacity: 1; - float: none; - display: inline-block; - margin: 10px 0 10px 0; - padding: 5px 10px 5px 10px; - font-size: 14px; - line-height: 14px; - } - .project-header h3 { - font-size: 18px; - line-height: 24px; - max-width: 320px; - } - .project-header .details { - margin-top: 20px; - } - .project-header .details > li { - float: none; - margin-right: 0; - margin-bottom: 20px; - font-size: 12px; - line-height: 12px; - } - .project-header .details > li .title { - margin-bottom: 2px; - } - .project-cover { - margin-bottom: 40px; - } - .project-content > h3, - .project-content > h4, - .project-content > p, - .project-content > ol, - .project-content > ul { - margin: 10px auto 10px auto; - padding: 0 20px 0 20px; - } - .project-content > h4 { - margin-top: 20px; - } - .project-content > p + h3, - .project-content > ol + h3, - .project-content > ul + h3 { - margin-top: 30px; - } - .project-content > p code { - padding: 1px 2px 1px 2px; - } - .project-image { - margin: 20px auto 20px auto; - padding: 0; - } - .project-image > .caption { - margin-top: 10px; - padding: 0 20px 0 20px; - font-size: 12px; - line-height: 16px; - } -} diff --git a/public/fonts/close-button.svg b/public/fonts/close-button.svg deleted file mode 100644 index fe473a9..0000000 --- a/public/fonts/close-button.svg +++ /dev/null @@ -1 +0,0 @@ -close-button \ No newline at end of file diff --git a/public/fonts/global-link-codepen.svg b/public/fonts/global-link-codepen.svg deleted file mode 100644 index 6d227ac..0000000 --- a/public/fonts/global-link-codepen.svg +++ /dev/null @@ -1 +0,0 @@ -global-link-codepen \ No newline at end of file diff --git a/public/fonts/global-link-github.svg b/public/fonts/global-link-github.svg deleted file mode 100644 index 6b4c540..0000000 --- a/public/fonts/global-link-github.svg +++ /dev/null @@ -1 +0,0 @@ -global-link-github \ No newline at end of file diff --git a/public/fonts/map-button.svg b/public/fonts/map-button.svg deleted file mode 100644 index f403b89..0000000 --- a/public/fonts/map-button.svg +++ /dev/null @@ -1 +0,0 @@ -map-button \ No newline at end of file diff --git a/public/fonts/select-arrow.svg b/public/fonts/select-arrow.svg deleted file mode 100644 index d20b853..0000000 --- a/public/fonts/select-arrow.svg +++ /dev/null @@ -1 +0,0 @@ -select-arrow \ No newline at end of file diff --git a/public/fonts/viewer-arrow.svg b/public/fonts/viewer-arrow.svg deleted file mode 100644 index 4f021be..0000000 --- a/public/fonts/viewer-arrow.svg +++ /dev/null @@ -1 +0,0 @@ -viewer-arrow \ No newline at end of file diff --git a/public/images/albums/hongkong/hongkong_10_full.jpg b/public/images/albums/hongkong/hongkong_10_full.jpg deleted file mode 100644 index ba64262..0000000 Binary files a/public/images/albums/hongkong/hongkong_10_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_10_thumb.jpg b/public/images/albums/hongkong/hongkong_10_thumb.jpg deleted file mode 100644 index 808ecff..0000000 Binary files a/public/images/albums/hongkong/hongkong_10_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_11_full.jpg b/public/images/albums/hongkong/hongkong_11_full.jpg deleted file mode 100644 index ef851a2..0000000 Binary files a/public/images/albums/hongkong/hongkong_11_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_11_thumb.jpg b/public/images/albums/hongkong/hongkong_11_thumb.jpg deleted file mode 100644 index 11482bb..0000000 Binary files a/public/images/albums/hongkong/hongkong_11_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_1_full.jpg b/public/images/albums/hongkong/hongkong_1_full.jpg deleted file mode 100644 index 3d41832..0000000 Binary files a/public/images/albums/hongkong/hongkong_1_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_1_thumb.jpg b/public/images/albums/hongkong/hongkong_1_thumb.jpg deleted file mode 100644 index 8b3c6fe..0000000 Binary files a/public/images/albums/hongkong/hongkong_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_2_full.jpg b/public/images/albums/hongkong/hongkong_2_full.jpg deleted file mode 100644 index 62c9b48..0000000 Binary files a/public/images/albums/hongkong/hongkong_2_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_2_thumb.jpg b/public/images/albums/hongkong/hongkong_2_thumb.jpg deleted file mode 100644 index 9f74d29..0000000 Binary files a/public/images/albums/hongkong/hongkong_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_3_full.jpg b/public/images/albums/hongkong/hongkong_3_full.jpg deleted file mode 100644 index 85a6fb8..0000000 Binary files a/public/images/albums/hongkong/hongkong_3_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_3_thumb.jpg b/public/images/albums/hongkong/hongkong_3_thumb.jpg deleted file mode 100644 index 816f4c4..0000000 Binary files a/public/images/albums/hongkong/hongkong_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_4_full.jpg b/public/images/albums/hongkong/hongkong_4_full.jpg deleted file mode 100644 index b029474..0000000 Binary files a/public/images/albums/hongkong/hongkong_4_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_4_thumb.jpg b/public/images/albums/hongkong/hongkong_4_thumb.jpg deleted file mode 100644 index d8d8791..0000000 Binary files a/public/images/albums/hongkong/hongkong_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_5_full.jpg b/public/images/albums/hongkong/hongkong_5_full.jpg deleted file mode 100644 index 633182e..0000000 Binary files a/public/images/albums/hongkong/hongkong_5_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_5_thumb.jpg b/public/images/albums/hongkong/hongkong_5_thumb.jpg deleted file mode 100644 index 24feb40..0000000 Binary files a/public/images/albums/hongkong/hongkong_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_6_full.jpg b/public/images/albums/hongkong/hongkong_6_full.jpg deleted file mode 100644 index 8a75b33..0000000 Binary files a/public/images/albums/hongkong/hongkong_6_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_6_thumb.jpg b/public/images/albums/hongkong/hongkong_6_thumb.jpg deleted file mode 100644 index f0dbdec..0000000 Binary files a/public/images/albums/hongkong/hongkong_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_7_full.jpg b/public/images/albums/hongkong/hongkong_7_full.jpg deleted file mode 100644 index 0fd8c5f..0000000 Binary files a/public/images/albums/hongkong/hongkong_7_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_7_thumb.jpg b/public/images/albums/hongkong/hongkong_7_thumb.jpg deleted file mode 100644 index 1db4bf6..0000000 Binary files a/public/images/albums/hongkong/hongkong_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_8_full.jpg b/public/images/albums/hongkong/hongkong_8_full.jpg deleted file mode 100644 index eebdab9..0000000 Binary files a/public/images/albums/hongkong/hongkong_8_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_8_thumb.jpg b/public/images/albums/hongkong/hongkong_8_thumb.jpg deleted file mode 100644 index ddc6baa..0000000 Binary files a/public/images/albums/hongkong/hongkong_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_9_full.jpg b/public/images/albums/hongkong/hongkong_9_full.jpg deleted file mode 100644 index fd4b62a..0000000 Binary files a/public/images/albums/hongkong/hongkong_9_full.jpg and /dev/null differ diff --git a/public/images/albums/hongkong/hongkong_9_thumb.jpg b/public/images/albums/hongkong/hongkong_9_thumb.jpg deleted file mode 100644 index e5a418a..0000000 Binary files a/public/images/albums/hongkong/hongkong_9_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_10_full.jpg b/public/images/albums/kenya/kenya_10_full.jpg deleted file mode 100644 index 0929f22..0000000 Binary files a/public/images/albums/kenya/kenya_10_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_10_thumb.jpg b/public/images/albums/kenya/kenya_10_thumb.jpg deleted file mode 100644 index 96634b4..0000000 Binary files a/public/images/albums/kenya/kenya_10_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_11_full.jpg b/public/images/albums/kenya/kenya_11_full.jpg deleted file mode 100644 index 5dfd8ce..0000000 Binary files a/public/images/albums/kenya/kenya_11_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_11_thumb.jpg b/public/images/albums/kenya/kenya_11_thumb.jpg deleted file mode 100644 index 1a048e4..0000000 Binary files a/public/images/albums/kenya/kenya_11_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_1_full.jpg b/public/images/albums/kenya/kenya_1_full.jpg deleted file mode 100644 index c059b8e..0000000 Binary files a/public/images/albums/kenya/kenya_1_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_1_thumb.jpg b/public/images/albums/kenya/kenya_1_thumb.jpg deleted file mode 100644 index 438f155..0000000 Binary files a/public/images/albums/kenya/kenya_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_2_full.jpg b/public/images/albums/kenya/kenya_2_full.jpg deleted file mode 100644 index 56fd124..0000000 Binary files a/public/images/albums/kenya/kenya_2_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_2_thumb.jpg b/public/images/albums/kenya/kenya_2_thumb.jpg deleted file mode 100644 index 25726d7..0000000 Binary files a/public/images/albums/kenya/kenya_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_3_full.jpg b/public/images/albums/kenya/kenya_3_full.jpg deleted file mode 100644 index d407b63..0000000 Binary files a/public/images/albums/kenya/kenya_3_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_3_thumb.jpg b/public/images/albums/kenya/kenya_3_thumb.jpg deleted file mode 100644 index ed4669b..0000000 Binary files a/public/images/albums/kenya/kenya_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_4_full.jpg b/public/images/albums/kenya/kenya_4_full.jpg deleted file mode 100644 index cee3758..0000000 Binary files a/public/images/albums/kenya/kenya_4_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_4_thumb.jpg b/public/images/albums/kenya/kenya_4_thumb.jpg deleted file mode 100644 index dc6d70c..0000000 Binary files a/public/images/albums/kenya/kenya_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_5_full.jpg b/public/images/albums/kenya/kenya_5_full.jpg deleted file mode 100644 index 8e1ba07..0000000 Binary files a/public/images/albums/kenya/kenya_5_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_5_thumb.jpg b/public/images/albums/kenya/kenya_5_thumb.jpg deleted file mode 100644 index 0be22fe..0000000 Binary files a/public/images/albums/kenya/kenya_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_6_full.jpg b/public/images/albums/kenya/kenya_6_full.jpg deleted file mode 100644 index 6dccff8..0000000 Binary files a/public/images/albums/kenya/kenya_6_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_6_thumb.jpg b/public/images/albums/kenya/kenya_6_thumb.jpg deleted file mode 100644 index 5d169a4..0000000 Binary files a/public/images/albums/kenya/kenya_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_7_full.jpg b/public/images/albums/kenya/kenya_7_full.jpg deleted file mode 100644 index ded7103..0000000 Binary files a/public/images/albums/kenya/kenya_7_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_7_thumb.jpg b/public/images/albums/kenya/kenya_7_thumb.jpg deleted file mode 100644 index 4bc867c..0000000 Binary files a/public/images/albums/kenya/kenya_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_8_full.jpg b/public/images/albums/kenya/kenya_8_full.jpg deleted file mode 100644 index 3d60cdb..0000000 Binary files a/public/images/albums/kenya/kenya_8_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_8_thumb.jpg b/public/images/albums/kenya/kenya_8_thumb.jpg deleted file mode 100644 index 5e59dda..0000000 Binary files a/public/images/albums/kenya/kenya_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_9_full.jpg b/public/images/albums/kenya/kenya_9_full.jpg deleted file mode 100644 index 36f671a..0000000 Binary files a/public/images/albums/kenya/kenya_9_full.jpg and /dev/null differ diff --git a/public/images/albums/kenya/kenya_9_thumb.jpg b/public/images/albums/kenya/kenya_9_thumb.jpg deleted file mode 100644 index dc9dcaa..0000000 Binary files a/public/images/albums/kenya/kenya_9_thumb.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_1_full.jpg b/public/images/albums/korea/korea_1_full.jpg deleted file mode 100644 index a7776b8..0000000 Binary files a/public/images/albums/korea/korea_1_full.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_1_thumb.jpg b/public/images/albums/korea/korea_1_thumb.jpg deleted file mode 100644 index 51eccdc..0000000 Binary files a/public/images/albums/korea/korea_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_2_full.jpg b/public/images/albums/korea/korea_2_full.jpg deleted file mode 100644 index 65c1631..0000000 Binary files a/public/images/albums/korea/korea_2_full.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_2_thumb.jpg b/public/images/albums/korea/korea_2_thumb.jpg deleted file mode 100644 index af0b7b5..0000000 Binary files a/public/images/albums/korea/korea_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_3_full.jpg b/public/images/albums/korea/korea_3_full.jpg deleted file mode 100644 index 38e6375..0000000 Binary files a/public/images/albums/korea/korea_3_full.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_3_thumb.jpg b/public/images/albums/korea/korea_3_thumb.jpg deleted file mode 100644 index 68478e5..0000000 Binary files a/public/images/albums/korea/korea_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_4_full.jpg b/public/images/albums/korea/korea_4_full.jpg deleted file mode 100644 index d1258ca..0000000 Binary files a/public/images/albums/korea/korea_4_full.jpg and /dev/null differ diff --git a/public/images/albums/korea/korea_4_thumb.jpg b/public/images/albums/korea/korea_4_thumb.jpg deleted file mode 100644 index a707c20..0000000 Binary files a/public/images/albums/korea/korea_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_1_full.jpg b/public/images/albums/leicester/leicester_1_full.jpg deleted file mode 100644 index 629d928..0000000 Binary files a/public/images/albums/leicester/leicester_1_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_1_thumb.jpg b/public/images/albums/leicester/leicester_1_thumb.jpg deleted file mode 100644 index 9de390c..0000000 Binary files a/public/images/albums/leicester/leicester_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_2_full.jpg b/public/images/albums/leicester/leicester_2_full.jpg deleted file mode 100644 index ec3ae43..0000000 Binary files a/public/images/albums/leicester/leicester_2_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_2_thumb.jpg b/public/images/albums/leicester/leicester_2_thumb.jpg deleted file mode 100644 index 75f0fc1..0000000 Binary files a/public/images/albums/leicester/leicester_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_3_full.jpg b/public/images/albums/leicester/leicester_3_full.jpg deleted file mode 100644 index 6398d83..0000000 Binary files a/public/images/albums/leicester/leicester_3_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_3_thumb.jpg b/public/images/albums/leicester/leicester_3_thumb.jpg deleted file mode 100644 index b6ce532..0000000 Binary files a/public/images/albums/leicester/leicester_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_4_full.jpg b/public/images/albums/leicester/leicester_4_full.jpg deleted file mode 100644 index 3fbd186..0000000 Binary files a/public/images/albums/leicester/leicester_4_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_4_thumb.jpg b/public/images/albums/leicester/leicester_4_thumb.jpg deleted file mode 100644 index a2ef3b5..0000000 Binary files a/public/images/albums/leicester/leicester_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_5_full.jpg b/public/images/albums/leicester/leicester_5_full.jpg deleted file mode 100644 index 637eba2..0000000 Binary files a/public/images/albums/leicester/leicester_5_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_5_thumb.jpg b/public/images/albums/leicester/leicester_5_thumb.jpg deleted file mode 100644 index b44913d..0000000 Binary files a/public/images/albums/leicester/leicester_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_6_full.jpg b/public/images/albums/leicester/leicester_6_full.jpg deleted file mode 100644 index 1d3181d..0000000 Binary files a/public/images/albums/leicester/leicester_6_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_6_thumb.jpg b/public/images/albums/leicester/leicester_6_thumb.jpg deleted file mode 100644 index 4f9cb54..0000000 Binary files a/public/images/albums/leicester/leicester_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_7_full.jpg b/public/images/albums/leicester/leicester_7_full.jpg deleted file mode 100644 index 65712d7..0000000 Binary files a/public/images/albums/leicester/leicester_7_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_7_thumb.jpg b/public/images/albums/leicester/leicester_7_thumb.jpg deleted file mode 100644 index bc2781e..0000000 Binary files a/public/images/albums/leicester/leicester_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_8_full.jpg b/public/images/albums/leicester/leicester_8_full.jpg deleted file mode 100644 index 5ddfab2..0000000 Binary files a/public/images/albums/leicester/leicester_8_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_8_thumb.jpg b/public/images/albums/leicester/leicester_8_thumb.jpg deleted file mode 100644 index 4e88774..0000000 Binary files a/public/images/albums/leicester/leicester_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_9_full.jpg b/public/images/albums/leicester/leicester_9_full.jpg deleted file mode 100644 index 49c2ece..0000000 Binary files a/public/images/albums/leicester/leicester_9_full.jpg and /dev/null differ diff --git a/public/images/albums/leicester/leicester_9_thumb.jpg b/public/images/albums/leicester/leicester_9_thumb.jpg deleted file mode 100644 index 3ef6ed1..0000000 Binary files a/public/images/albums/leicester/leicester_9_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_10_full.jpg b/public/images/albums/london/london_10_full.jpg deleted file mode 100644 index bc518b9..0000000 Binary files a/public/images/albums/london/london_10_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_10_thumb.jpg b/public/images/albums/london/london_10_thumb.jpg deleted file mode 100644 index d608708..0000000 Binary files a/public/images/albums/london/london_10_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_11_full.jpg b/public/images/albums/london/london_11_full.jpg deleted file mode 100644 index 4df7958..0000000 Binary files a/public/images/albums/london/london_11_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_11_thumb.jpg b/public/images/albums/london/london_11_thumb.jpg deleted file mode 100644 index 1bedc91..0000000 Binary files a/public/images/albums/london/london_11_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_12_full.jpg b/public/images/albums/london/london_12_full.jpg deleted file mode 100644 index a4f0d22..0000000 Binary files a/public/images/albums/london/london_12_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_12_thumb.jpg b/public/images/albums/london/london_12_thumb.jpg deleted file mode 100644 index 0e0d36c..0000000 Binary files a/public/images/albums/london/london_12_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_13_full.jpg b/public/images/albums/london/london_13_full.jpg deleted file mode 100644 index 5e8e5e1..0000000 Binary files a/public/images/albums/london/london_13_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_13_thumb.jpg b/public/images/albums/london/london_13_thumb.jpg deleted file mode 100644 index c91f7d2..0000000 Binary files a/public/images/albums/london/london_13_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_14_full.jpg b/public/images/albums/london/london_14_full.jpg deleted file mode 100644 index 483ee65..0000000 Binary files a/public/images/albums/london/london_14_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_14_thumb.jpg b/public/images/albums/london/london_14_thumb.jpg deleted file mode 100644 index b8a4229..0000000 Binary files a/public/images/albums/london/london_14_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_15_full.jpg b/public/images/albums/london/london_15_full.jpg deleted file mode 100644 index cf20a30..0000000 Binary files a/public/images/albums/london/london_15_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_15_thumb.jpg b/public/images/albums/london/london_15_thumb.jpg deleted file mode 100644 index 791f80f..0000000 Binary files a/public/images/albums/london/london_15_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_16_full.jpg b/public/images/albums/london/london_16_full.jpg deleted file mode 100644 index 29ec364..0000000 Binary files a/public/images/albums/london/london_16_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_16_thumb.jpg b/public/images/albums/london/london_16_thumb.jpg deleted file mode 100644 index b16605e..0000000 Binary files a/public/images/albums/london/london_16_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_1_full.jpg b/public/images/albums/london/london_1_full.jpg deleted file mode 100644 index 495650a..0000000 Binary files a/public/images/albums/london/london_1_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_1_thumb.jpg b/public/images/albums/london/london_1_thumb.jpg deleted file mode 100644 index 55e692f..0000000 Binary files a/public/images/albums/london/london_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_2_full.jpg b/public/images/albums/london/london_2_full.jpg deleted file mode 100644 index 8118179..0000000 Binary files a/public/images/albums/london/london_2_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_2_thumb.jpg b/public/images/albums/london/london_2_thumb.jpg deleted file mode 100644 index a9fd367..0000000 Binary files a/public/images/albums/london/london_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_3_full.jpg b/public/images/albums/london/london_3_full.jpg deleted file mode 100644 index d702df5..0000000 Binary files a/public/images/albums/london/london_3_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_3_thumb.jpg b/public/images/albums/london/london_3_thumb.jpg deleted file mode 100644 index 0006104..0000000 Binary files a/public/images/albums/london/london_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_4_full.jpg b/public/images/albums/london/london_4_full.jpg deleted file mode 100644 index 3ac4385..0000000 Binary files a/public/images/albums/london/london_4_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_4_thumb.jpg b/public/images/albums/london/london_4_thumb.jpg deleted file mode 100644 index 8d1cf6f..0000000 Binary files a/public/images/albums/london/london_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_5_full.jpg b/public/images/albums/london/london_5_full.jpg deleted file mode 100644 index 03dac99..0000000 Binary files a/public/images/albums/london/london_5_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_5_thumb.jpg b/public/images/albums/london/london_5_thumb.jpg deleted file mode 100644 index fb04b8b..0000000 Binary files a/public/images/albums/london/london_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_6_full.jpg b/public/images/albums/london/london_6_full.jpg deleted file mode 100644 index ce61a92..0000000 Binary files a/public/images/albums/london/london_6_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_6_thumb.jpg b/public/images/albums/london/london_6_thumb.jpg deleted file mode 100644 index e180237..0000000 Binary files a/public/images/albums/london/london_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_7_full.jpg b/public/images/albums/london/london_7_full.jpg deleted file mode 100644 index b2a0856..0000000 Binary files a/public/images/albums/london/london_7_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_7_thumb.jpg b/public/images/albums/london/london_7_thumb.jpg deleted file mode 100644 index c6e8fa5..0000000 Binary files a/public/images/albums/london/london_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_8_full.jpg b/public/images/albums/london/london_8_full.jpg deleted file mode 100644 index c05b615..0000000 Binary files a/public/images/albums/london/london_8_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_8_thumb.jpg b/public/images/albums/london/london_8_thumb.jpg deleted file mode 100644 index 7d566b4..0000000 Binary files a/public/images/albums/london/london_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/london/london_9_full.jpg b/public/images/albums/london/london_9_full.jpg deleted file mode 100644 index 079b6bb..0000000 Binary files a/public/images/albums/london/london_9_full.jpg and /dev/null differ diff --git a/public/images/albums/london/london_9_thumb.jpg b/public/images/albums/london/london_9_thumb.jpg deleted file mode 100644 index 0690b3b..0000000 Binary files a/public/images/albums/london/london_9_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_10_full.jpg b/public/images/albums/queensland/queensland_10_full.jpg deleted file mode 100644 index ca1355c..0000000 Binary files a/public/images/albums/queensland/queensland_10_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_10_thumb.jpg b/public/images/albums/queensland/queensland_10_thumb.jpg deleted file mode 100644 index 1314835..0000000 Binary files a/public/images/albums/queensland/queensland_10_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_11_full.jpg b/public/images/albums/queensland/queensland_11_full.jpg deleted file mode 100644 index 18ed6ae..0000000 Binary files a/public/images/albums/queensland/queensland_11_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_11_thumb.jpg b/public/images/albums/queensland/queensland_11_thumb.jpg deleted file mode 100644 index 97f86d9..0000000 Binary files a/public/images/albums/queensland/queensland_11_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_12_full.jpg b/public/images/albums/queensland/queensland_12_full.jpg deleted file mode 100644 index 3cfdae6..0000000 Binary files a/public/images/albums/queensland/queensland_12_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_12_thumb.jpg b/public/images/albums/queensland/queensland_12_thumb.jpg deleted file mode 100644 index 4de868e..0000000 Binary files a/public/images/albums/queensland/queensland_12_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_13_full.jpg b/public/images/albums/queensland/queensland_13_full.jpg deleted file mode 100644 index 241b015..0000000 Binary files a/public/images/albums/queensland/queensland_13_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_13_thumb.jpg b/public/images/albums/queensland/queensland_13_thumb.jpg deleted file mode 100644 index 1494052..0000000 Binary files a/public/images/albums/queensland/queensland_13_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_14_full.jpg b/public/images/albums/queensland/queensland_14_full.jpg deleted file mode 100644 index 70f2a37..0000000 Binary files a/public/images/albums/queensland/queensland_14_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_14_thumb.jpg b/public/images/albums/queensland/queensland_14_thumb.jpg deleted file mode 100644 index a319acb..0000000 Binary files a/public/images/albums/queensland/queensland_14_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_1_full.jpg b/public/images/albums/queensland/queensland_1_full.jpg deleted file mode 100644 index 00a5cca..0000000 Binary files a/public/images/albums/queensland/queensland_1_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_1_thumb.jpg b/public/images/albums/queensland/queensland_1_thumb.jpg deleted file mode 100644 index 97aa203..0000000 Binary files a/public/images/albums/queensland/queensland_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_2_full.jpg b/public/images/albums/queensland/queensland_2_full.jpg deleted file mode 100644 index 12b38d0..0000000 Binary files a/public/images/albums/queensland/queensland_2_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_2_thumb.jpg b/public/images/albums/queensland/queensland_2_thumb.jpg deleted file mode 100644 index 210ec4c..0000000 Binary files a/public/images/albums/queensland/queensland_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_3_full.jpg b/public/images/albums/queensland/queensland_3_full.jpg deleted file mode 100644 index c6c5672..0000000 Binary files a/public/images/albums/queensland/queensland_3_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_3_thumb.jpg b/public/images/albums/queensland/queensland_3_thumb.jpg deleted file mode 100644 index ed0dc9b..0000000 Binary files a/public/images/albums/queensland/queensland_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_4_full.jpg b/public/images/albums/queensland/queensland_4_full.jpg deleted file mode 100644 index 77c4202..0000000 Binary files a/public/images/albums/queensland/queensland_4_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_4_thumb.jpg b/public/images/albums/queensland/queensland_4_thumb.jpg deleted file mode 100644 index ff36163..0000000 Binary files a/public/images/albums/queensland/queensland_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_5_full.jpg b/public/images/albums/queensland/queensland_5_full.jpg deleted file mode 100644 index cd7ea6d..0000000 Binary files a/public/images/albums/queensland/queensland_5_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_5_thumb.jpg b/public/images/albums/queensland/queensland_5_thumb.jpg deleted file mode 100644 index 352071b..0000000 Binary files a/public/images/albums/queensland/queensland_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_6_full.jpg b/public/images/albums/queensland/queensland_6_full.jpg deleted file mode 100644 index 7399586..0000000 Binary files a/public/images/albums/queensland/queensland_6_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_6_thumb.jpg b/public/images/albums/queensland/queensland_6_thumb.jpg deleted file mode 100644 index 7d48d4c..0000000 Binary files a/public/images/albums/queensland/queensland_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_7_full.jpg b/public/images/albums/queensland/queensland_7_full.jpg deleted file mode 100644 index b782f2f..0000000 Binary files a/public/images/albums/queensland/queensland_7_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_7_thumb.jpg b/public/images/albums/queensland/queensland_7_thumb.jpg deleted file mode 100644 index 4b3412b..0000000 Binary files a/public/images/albums/queensland/queensland_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_8_full.jpg b/public/images/albums/queensland/queensland_8_full.jpg deleted file mode 100644 index 66cb70d..0000000 Binary files a/public/images/albums/queensland/queensland_8_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_8_thumb.jpg b/public/images/albums/queensland/queensland_8_thumb.jpg deleted file mode 100644 index 55f92d6..0000000 Binary files a/public/images/albums/queensland/queensland_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_9_full.jpg b/public/images/albums/queensland/queensland_9_full.jpg deleted file mode 100644 index 671d512..0000000 Binary files a/public/images/albums/queensland/queensland_9_full.jpg and /dev/null differ diff --git a/public/images/albums/queensland/queensland_9_thumb.jpg b/public/images/albums/queensland/queensland_9_thumb.jpg deleted file mode 100644 index 64286db..0000000 Binary files a/public/images/albums/queensland/queensland_9_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_10_full.jpg b/public/images/albums/vietnam/vietnam_10_full.jpg deleted file mode 100644 index 1a8f1e5..0000000 Binary files a/public/images/albums/vietnam/vietnam_10_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_10_thumb.jpg b/public/images/albums/vietnam/vietnam_10_thumb.jpg deleted file mode 100644 index 933ec37..0000000 Binary files a/public/images/albums/vietnam/vietnam_10_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_1_full.jpg b/public/images/albums/vietnam/vietnam_1_full.jpg deleted file mode 100644 index 9d18baf..0000000 Binary files a/public/images/albums/vietnam/vietnam_1_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_1_thumb.jpg b/public/images/albums/vietnam/vietnam_1_thumb.jpg deleted file mode 100644 index 5d37d51..0000000 Binary files a/public/images/albums/vietnam/vietnam_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_2_full.jpg b/public/images/albums/vietnam/vietnam_2_full.jpg deleted file mode 100644 index f675a8e..0000000 Binary files a/public/images/albums/vietnam/vietnam_2_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_2_thumb.jpg b/public/images/albums/vietnam/vietnam_2_thumb.jpg deleted file mode 100644 index d2b6364..0000000 Binary files a/public/images/albums/vietnam/vietnam_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_3_full.jpg b/public/images/albums/vietnam/vietnam_3_full.jpg deleted file mode 100644 index 95098d9..0000000 Binary files a/public/images/albums/vietnam/vietnam_3_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_3_thumb.jpg b/public/images/albums/vietnam/vietnam_3_thumb.jpg deleted file mode 100644 index 2aba1f7..0000000 Binary files a/public/images/albums/vietnam/vietnam_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_4_full.jpg b/public/images/albums/vietnam/vietnam_4_full.jpg deleted file mode 100644 index 44b851b..0000000 Binary files a/public/images/albums/vietnam/vietnam_4_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_4_thumb.jpg b/public/images/albums/vietnam/vietnam_4_thumb.jpg deleted file mode 100644 index 7ae2c06..0000000 Binary files a/public/images/albums/vietnam/vietnam_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_5_full.jpg b/public/images/albums/vietnam/vietnam_5_full.jpg deleted file mode 100644 index 4c34a66..0000000 Binary files a/public/images/albums/vietnam/vietnam_5_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_5_thumb.jpg b/public/images/albums/vietnam/vietnam_5_thumb.jpg deleted file mode 100644 index 63bbc98..0000000 Binary files a/public/images/albums/vietnam/vietnam_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_6_full.jpg b/public/images/albums/vietnam/vietnam_6_full.jpg deleted file mode 100644 index 8e4eca7..0000000 Binary files a/public/images/albums/vietnam/vietnam_6_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_6_thumb.jpg b/public/images/albums/vietnam/vietnam_6_thumb.jpg deleted file mode 100644 index 6b2a639..0000000 Binary files a/public/images/albums/vietnam/vietnam_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_7_full.jpg b/public/images/albums/vietnam/vietnam_7_full.jpg deleted file mode 100644 index 2131bcf..0000000 Binary files a/public/images/albums/vietnam/vietnam_7_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_7_thumb.jpg b/public/images/albums/vietnam/vietnam_7_thumb.jpg deleted file mode 100644 index b607e14..0000000 Binary files a/public/images/albums/vietnam/vietnam_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_8_full.jpg b/public/images/albums/vietnam/vietnam_8_full.jpg deleted file mode 100644 index 75cd341..0000000 Binary files a/public/images/albums/vietnam/vietnam_8_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_8_thumb.jpg b/public/images/albums/vietnam/vietnam_8_thumb.jpg deleted file mode 100644 index c7fd862..0000000 Binary files a/public/images/albums/vietnam/vietnam_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_9_full.jpg b/public/images/albums/vietnam/vietnam_9_full.jpg deleted file mode 100644 index 8f94578..0000000 Binary files a/public/images/albums/vietnam/vietnam_9_full.jpg and /dev/null differ diff --git a/public/images/albums/vietnam/vietnam_9_thumb.jpg b/public/images/albums/vietnam/vietnam_9_thumb.jpg deleted file mode 100644 index 8208904..0000000 Binary files a/public/images/albums/vietnam/vietnam_9_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_10_full.jpg b/public/images/albums/yunnan/yunnan_10_full.jpg deleted file mode 100644 index c5a74ed..0000000 Binary files a/public/images/albums/yunnan/yunnan_10_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_10_thumb.jpg b/public/images/albums/yunnan/yunnan_10_thumb.jpg deleted file mode 100644 index 4edc308..0000000 Binary files a/public/images/albums/yunnan/yunnan_10_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_11_full.jpg b/public/images/albums/yunnan/yunnan_11_full.jpg deleted file mode 100644 index 546f875..0000000 Binary files a/public/images/albums/yunnan/yunnan_11_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_11_thumb.jpg b/public/images/albums/yunnan/yunnan_11_thumb.jpg deleted file mode 100644 index 12b61bf..0000000 Binary files a/public/images/albums/yunnan/yunnan_11_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_12_full.jpg b/public/images/albums/yunnan/yunnan_12_full.jpg deleted file mode 100644 index 9a81eb8..0000000 Binary files a/public/images/albums/yunnan/yunnan_12_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_12_thumb.jpg b/public/images/albums/yunnan/yunnan_12_thumb.jpg deleted file mode 100644 index a75d458..0000000 Binary files a/public/images/albums/yunnan/yunnan_12_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_13_full.jpg b/public/images/albums/yunnan/yunnan_13_full.jpg deleted file mode 100644 index 7491fb2..0000000 Binary files a/public/images/albums/yunnan/yunnan_13_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_13_thumb.jpg b/public/images/albums/yunnan/yunnan_13_thumb.jpg deleted file mode 100644 index 8a76aab..0000000 Binary files a/public/images/albums/yunnan/yunnan_13_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_1_full.jpg b/public/images/albums/yunnan/yunnan_1_full.jpg deleted file mode 100644 index c5c8ce3..0000000 Binary files a/public/images/albums/yunnan/yunnan_1_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_1_thumb.jpg b/public/images/albums/yunnan/yunnan_1_thumb.jpg deleted file mode 100644 index aeb6758..0000000 Binary files a/public/images/albums/yunnan/yunnan_1_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_2_full.jpg b/public/images/albums/yunnan/yunnan_2_full.jpg deleted file mode 100644 index 564b282..0000000 Binary files a/public/images/albums/yunnan/yunnan_2_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_2_thumb.jpg b/public/images/albums/yunnan/yunnan_2_thumb.jpg deleted file mode 100644 index d1943cb..0000000 Binary files a/public/images/albums/yunnan/yunnan_2_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_3_full.jpg b/public/images/albums/yunnan/yunnan_3_full.jpg deleted file mode 100644 index f3f3680..0000000 Binary files a/public/images/albums/yunnan/yunnan_3_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_3_thumb.jpg b/public/images/albums/yunnan/yunnan_3_thumb.jpg deleted file mode 100644 index df388a0..0000000 Binary files a/public/images/albums/yunnan/yunnan_3_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_4_full.jpg b/public/images/albums/yunnan/yunnan_4_full.jpg deleted file mode 100644 index da63bf0..0000000 Binary files a/public/images/albums/yunnan/yunnan_4_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_4_thumb.jpg b/public/images/albums/yunnan/yunnan_4_thumb.jpg deleted file mode 100644 index c01b702..0000000 Binary files a/public/images/albums/yunnan/yunnan_4_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_5_full.jpg b/public/images/albums/yunnan/yunnan_5_full.jpg deleted file mode 100644 index 6c5843f..0000000 Binary files a/public/images/albums/yunnan/yunnan_5_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_5_thumb.jpg b/public/images/albums/yunnan/yunnan_5_thumb.jpg deleted file mode 100644 index e3c1264..0000000 Binary files a/public/images/albums/yunnan/yunnan_5_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_6_full.jpg b/public/images/albums/yunnan/yunnan_6_full.jpg deleted file mode 100644 index daca85d..0000000 Binary files a/public/images/albums/yunnan/yunnan_6_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_6_thumb.jpg b/public/images/albums/yunnan/yunnan_6_thumb.jpg deleted file mode 100644 index f0fafa3..0000000 Binary files a/public/images/albums/yunnan/yunnan_6_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_7_full.jpg b/public/images/albums/yunnan/yunnan_7_full.jpg deleted file mode 100644 index e02d42b..0000000 Binary files a/public/images/albums/yunnan/yunnan_7_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_7_thumb.jpg b/public/images/albums/yunnan/yunnan_7_thumb.jpg deleted file mode 100644 index b36d9df..0000000 Binary files a/public/images/albums/yunnan/yunnan_7_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_8_full.jpg b/public/images/albums/yunnan/yunnan_8_full.jpg deleted file mode 100644 index a4ba885..0000000 Binary files a/public/images/albums/yunnan/yunnan_8_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_8_thumb.jpg b/public/images/albums/yunnan/yunnan_8_thumb.jpg deleted file mode 100644 index 84bd000..0000000 Binary files a/public/images/albums/yunnan/yunnan_8_thumb.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_9_full.jpg b/public/images/albums/yunnan/yunnan_9_full.jpg deleted file mode 100644 index e984121..0000000 Binary files a/public/images/albums/yunnan/yunnan_9_full.jpg and /dev/null differ diff --git a/public/images/albums/yunnan/yunnan_9_thumb.jpg b/public/images/albums/yunnan/yunnan_9_thumb.jpg deleted file mode 100644 index 701c511..0000000 Binary files a/public/images/albums/yunnan/yunnan_9_thumb.jpg and /dev/null differ diff --git a/public/images/global/global-header-hamburger-light.svg b/public/images/global/global-header-hamburger-light.svg deleted file mode 100644 index 1593336..0000000 --- a/public/images/global/global-header-hamburger-light.svg +++ /dev/null @@ -1 +0,0 @@ -global-header-hamburger \ No newline at end of file diff --git a/public/images/global/global-header-hamburger.svg b/public/images/global/global-header-hamburger.svg deleted file mode 100644 index a24f912..0000000 --- a/public/images/global/global-header-hamburger.svg +++ /dev/null @@ -1 +0,0 @@ -global-header-hamburger \ No newline at end of file diff --git a/public/images/global/global-link-codepen-light.svg b/public/images/global/global-link-codepen-light.svg deleted file mode 100644 index 7cebe45..0000000 --- a/public/images/global/global-link-codepen-light.svg +++ /dev/null @@ -1 +0,0 @@ -global-link-codepen \ No newline at end of file diff --git a/public/images/global/global-link-codepen.svg b/public/images/global/global-link-codepen.svg deleted file mode 100644 index 6d227ac..0000000 --- a/public/images/global/global-link-codepen.svg +++ /dev/null @@ -1 +0,0 @@ -global-link-codepen \ No newline at end of file diff --git a/public/images/global/global-link-github-light.svg b/public/images/global/global-link-github-light.svg deleted file mode 100644 index 0040fff..0000000 --- a/public/images/global/global-link-github-light.svg +++ /dev/null @@ -1 +0,0 @@ -global-link-github \ No newline at end of file diff --git a/public/images/global/global-link-github.svg b/public/images/global/global-link-github.svg deleted file mode 100644 index 6b4c540..0000000 --- a/public/images/global/global-link-github.svg +++ /dev/null @@ -1 +0,0 @@ -global-link-github \ No newline at end of file diff --git a/public/images/photography/close-button.svg b/public/images/photography/close-button.svg deleted file mode 100644 index fe473a9..0000000 --- a/public/images/photography/close-button.svg +++ /dev/null @@ -1 +0,0 @@ -close-button \ No newline at end of file diff --git a/public/images/photography/map-button.svg b/public/images/photography/map-button.svg deleted file mode 100644 index f403b89..0000000 --- a/public/images/photography/map-button.svg +++ /dev/null @@ -1 +0,0 @@ -map-button \ No newline at end of file diff --git a/public/images/photography/select-arrow.svg b/public/images/photography/select-arrow.svg deleted file mode 100644 index d20b853..0000000 --- a/public/images/photography/select-arrow.svg +++ /dev/null @@ -1 +0,0 @@ -select-arrow \ No newline at end of file diff --git a/public/images/photography/viewer-arrow.svg b/public/images/photography/viewer-arrow.svg deleted file mode 100644 index 4f021be..0000000 --- a/public/images/photography/viewer-arrow.svg +++ /dev/null @@ -1 +0,0 @@ -viewer-arrow \ No newline at end of file diff --git a/public/images/projects/enicar/enicar-cover.jpg b/public/images/projects/enicar/enicar-cover.jpg deleted file mode 100755 index 35f9d85..0000000 Binary files a/public/images/projects/enicar/enicar-cover.jpg and /dev/null differ diff --git a/public/images/projects/enicar/enicar-image-1.jpg b/public/images/projects/enicar/enicar-image-1.jpg deleted file mode 100755 index 8e274cd..0000000 Binary files a/public/images/projects/enicar/enicar-image-1.jpg and /dev/null differ diff --git a/public/images/projects/enicar/enicar-image-2.jpg b/public/images/projects/enicar/enicar-image-2.jpg deleted file mode 100755 index d116bd4..0000000 Binary files a/public/images/projects/enicar/enicar-image-2.jpg and /dev/null differ diff --git a/public/images/projects/enicar/enicar-image-3.jpg b/public/images/projects/enicar/enicar-image-3.jpg deleted file mode 100755 index b568c47..0000000 Binary files a/public/images/projects/enicar/enicar-image-3.jpg and /dev/null differ diff --git a/public/images/projects/enicar/enicar-image-4.jpg b/public/images/projects/enicar/enicar-image-4.jpg deleted file mode 100755 index 2afafed..0000000 Binary files a/public/images/projects/enicar/enicar-image-4.jpg and /dev/null differ diff --git a/public/images/projects/enicar/enicar-preview.jpg b/public/images/projects/enicar/enicar-preview.jpg deleted file mode 100755 index 6da7fbe..0000000 Binary files a/public/images/projects/enicar/enicar-preview.jpg and /dev/null differ diff --git a/public/images/projects/hkjc/hkjc-cover.jpg b/public/images/projects/hkjc/hkjc-cover.jpg deleted file mode 100755 index d052cfe..0000000 Binary files a/public/images/projects/hkjc/hkjc-cover.jpg and /dev/null differ diff --git a/public/images/projects/hkjc/hkjc-image-1.jpg b/public/images/projects/hkjc/hkjc-image-1.jpg deleted file mode 100755 index 66105a8..0000000 Binary files a/public/images/projects/hkjc/hkjc-image-1.jpg and /dev/null differ diff --git a/public/images/projects/hkjc/hkjc-image-2.jpg b/public/images/projects/hkjc/hkjc-image-2.jpg deleted file mode 100755 index 0bbcb08..0000000 Binary files a/public/images/projects/hkjc/hkjc-image-2.jpg and /dev/null differ diff --git a/public/images/projects/hkjc/hkjc-preview.jpg b/public/images/projects/hkjc/hkjc-preview.jpg deleted file mode 100755 index 6d74cf9..0000000 Binary files a/public/images/projects/hkjc/hkjc-preview.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-cover.jpg b/public/images/projects/joyce/joyce-cover.jpg deleted file mode 100644 index 4ed3c0e..0000000 Binary files a/public/images/projects/joyce/joyce-cover.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-image-1.jpg b/public/images/projects/joyce/joyce-image-1.jpg deleted file mode 100644 index ce354de..0000000 Binary files a/public/images/projects/joyce/joyce-image-1.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-image-2.jpg b/public/images/projects/joyce/joyce-image-2.jpg deleted file mode 100644 index 9627a65..0000000 Binary files a/public/images/projects/joyce/joyce-image-2.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-image-3.jpg b/public/images/projects/joyce/joyce-image-3.jpg deleted file mode 100644 index d3b422a..0000000 Binary files a/public/images/projects/joyce/joyce-image-3.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-image-4.jpg b/public/images/projects/joyce/joyce-image-4.jpg deleted file mode 100644 index 9b377e8..0000000 Binary files a/public/images/projects/joyce/joyce-image-4.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-image-5.jpg b/public/images/projects/joyce/joyce-image-5.jpg deleted file mode 100644 index a4fdb8a..0000000 Binary files a/public/images/projects/joyce/joyce-image-5.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-image-6.jpg b/public/images/projects/joyce/joyce-image-6.jpg deleted file mode 100644 index 2a6bc85..0000000 Binary files a/public/images/projects/joyce/joyce-image-6.jpg and /dev/null differ diff --git a/public/images/projects/joyce/joyce-preview.jpg b/public/images/projects/joyce/joyce-preview.jpg deleted file mode 100755 index 8ef6b02..0000000 Binary files a/public/images/projects/joyce/joyce-preview.jpg and /dev/null differ diff --git a/public/images/projects/k11/k11-cover.jpg b/public/images/projects/k11/k11-cover.jpg deleted file mode 100755 index 80ca7cf..0000000 Binary files a/public/images/projects/k11/k11-cover.jpg and /dev/null differ diff --git a/public/images/projects/k11/k11-image-1.jpg b/public/images/projects/k11/k11-image-1.jpg deleted file mode 100755 index 2ee2861..0000000 Binary files a/public/images/projects/k11/k11-image-1.jpg and /dev/null differ diff --git a/public/images/projects/k11/k11-image-2.jpg b/public/images/projects/k11/k11-image-2.jpg deleted file mode 100755 index 9ffac70..0000000 Binary files a/public/images/projects/k11/k11-image-2.jpg and /dev/null differ diff --git a/public/images/projects/k11/k11-image-3.jpg b/public/images/projects/k11/k11-image-3.jpg deleted file mode 100755 index 59d8426..0000000 Binary files a/public/images/projects/k11/k11-image-3.jpg and /dev/null differ diff --git a/public/images/projects/k11/k11-preview.jpg b/public/images/projects/k11/k11-preview.jpg deleted file mode 100755 index 7247bac..0000000 Binary files a/public/images/projects/k11/k11-preview.jpg and /dev/null differ diff --git a/public/images/projects/phonicshero/phonicshero-cover.jpg b/public/images/projects/phonicshero/phonicshero-cover.jpg deleted file mode 100755 index eb12402..0000000 Binary files a/public/images/projects/phonicshero/phonicshero-cover.jpg and /dev/null differ diff --git a/public/images/projects/phonicshero/phonicshero-image-1.jpg b/public/images/projects/phonicshero/phonicshero-image-1.jpg deleted file mode 100755 index 1ecb689..0000000 Binary files a/public/images/projects/phonicshero/phonicshero-image-1.jpg and /dev/null differ diff --git a/public/images/projects/phonicshero/phonicshero-preview.jpg b/public/images/projects/phonicshero/phonicshero-preview.jpg deleted file mode 100755 index ed11f14..0000000 Binary files a/public/images/projects/phonicshero/phonicshero-preview.jpg and /dev/null differ diff --git a/public/images/projects/steamchat/steamchat-cover.jpg b/public/images/projects/steamchat/steamchat-cover.jpg deleted file mode 100755 index 9c616da..0000000 Binary files a/public/images/projects/steamchat/steamchat-cover.jpg and /dev/null differ diff --git a/public/images/projects/steamchat/steamchat-image-1.jpg b/public/images/projects/steamchat/steamchat-image-1.jpg deleted file mode 100755 index a588133..0000000 Binary files a/public/images/projects/steamchat/steamchat-image-1.jpg and /dev/null differ diff --git a/public/images/projects/steamchat/steamchat-preview.jpg b/public/images/projects/steamchat/steamchat-preview.jpg deleted file mode 100755 index 903644d..0000000 Binary files a/public/images/projects/steamchat/steamchat-preview.jpg and /dev/null differ diff --git a/public/images/projects/stevemadden/stevemadden-cover.jpg b/public/images/projects/stevemadden/stevemadden-cover.jpg deleted file mode 100755 index 8a9bf1a..0000000 Binary files a/public/images/projects/stevemadden/stevemadden-cover.jpg and /dev/null differ diff --git a/public/images/projects/stevemadden/stevemadden-image-1.jpg b/public/images/projects/stevemadden/stevemadden-image-1.jpg deleted file mode 100755 index e371611..0000000 Binary files a/public/images/projects/stevemadden/stevemadden-image-1.jpg and /dev/null differ diff --git a/public/images/projects/stevemadden/stevemadden-image-2.jpg b/public/images/projects/stevemadden/stevemadden-image-2.jpg deleted file mode 100755 index 4346752..0000000 Binary files a/public/images/projects/stevemadden/stevemadden-image-2.jpg and /dev/null differ diff --git a/public/images/projects/stevemadden/stevemadden-image-3.jpg b/public/images/projects/stevemadden/stevemadden-image-3.jpg deleted file mode 100755 index 917c9cb..0000000 Binary files a/public/images/projects/stevemadden/stevemadden-image-3.jpg and /dev/null differ diff --git a/public/images/projects/stevemadden/stevemadden-image-4.jpg b/public/images/projects/stevemadden/stevemadden-image-4.jpg deleted file mode 100755 index 5e5b936..0000000 Binary files a/public/images/projects/stevemadden/stevemadden-image-4.jpg and /dev/null differ diff --git a/public/images/projects/stevemadden/stevemadden-preview.jpg b/public/images/projects/stevemadden/stevemadden-preview.jpg deleted file mode 100755 index 04800ac..0000000 Binary files a/public/images/projects/stevemadden/stevemadden-preview.jpg and /dev/null differ diff --git a/public/js/app.js b/public/js/app.js deleted file mode 100644 index a438093..0000000 --- a/public/js/app.js +++ /dev/null @@ -1,11276 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 31); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var bind = __webpack_require__(6); - -/*global toString:true*/ - -// utils is a library of generic helper functions non-specific to axios - -var toString = Object.prototype.toString; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Array, otherwise false - */ -function isArray(val) { - return toString.call(val) === '[object Array]'; -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -function isArrayBuffer(val) { - return toString.call(val) === '[object ArrayBuffer]'; -} - -/** - * Determine if a value is a FormData - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an FormData, otherwise false - */ -function isFormData(val) { - return (typeof FormData !== 'undefined') && (val instanceof FormData); -} - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - var result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a String, otherwise false - */ -function isString(val) { - return typeof val === 'string'; -} - -/** - * Determine if a value is a Number - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Number, otherwise false - */ -function isNumber(val) { - return typeof val === 'number'; -} - -/** - * Determine if a value is undefined - * - * @param {Object} val The value to test - * @returns {boolean} True if the value is undefined, otherwise false - */ -function isUndefined(val) { - return typeof val === 'undefined'; -} - -/** - * Determine if a value is an Object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Object, otherwise false - */ -function isObject(val) { - return val !== null && typeof val === 'object'; -} - -/** - * Determine if a value is a Date - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Date, otherwise false - */ -function isDate(val) { - return toString.call(val) === '[object Date]'; -} - -/** - * Determine if a value is a File - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a File, otherwise false - */ -function isFile(val) { - return toString.call(val) === '[object File]'; -} - -/** - * Determine if a value is a Blob - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Blob, otherwise false - */ -function isBlob(val) { - return toString.call(val) === '[object Blob]'; -} - -/** - * Determine if a value is a Function - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -function isFunction(val) { - return toString.call(val) === '[object Function]'; -} - -/** - * Determine if a value is a Stream - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Stream, otherwise false - */ -function isStream(val) { - return isObject(val) && isFunction(val.pipe); -} - -/** - * Determine if a value is a URLSearchParams object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -function isURLSearchParams(val) { - return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; -} - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * @returns {String} The String freed of excess whitespace - */ -function trim(str) { - return str.replace(/^\s*/, '').replace(/\s*$/, ''); -} - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * typeof document.createElement -> undefined - */ -function isStandardBrowserEnv() { - return ( - typeof window !== 'undefined' && - typeof document !== 'undefined' && - typeof document.createElement === 'function' - ); -} - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - */ -function forEach(obj, fn) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - // Force an array if not already something iterable - if (typeof obj !== 'object' && !isArray(obj)) { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (var i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - fn.call(null, obj[key], key, obj); - } - } - } -} - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - var result = {}; - function assignValue(val, key) { - if (typeof result[key] === 'object' && typeof val === 'object') { - result[key] = merge(result[key], val); - } else { - result[key] = val; - } - } - - for (var i = 0, l = arguments.length; i < l; i++) { - forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * @return {Object} The resulting value of object a - */ -function extend(a, b, thisArg) { - forEach(b, function assignValue(val, key) { - if (thisArg && typeof val === 'function') { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }); - return a; -} - -module.exports = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isObject: isObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isFunction: isFunction, - isStream: isStream, - isURLSearchParams: isURLSearchParams, - isStandardBrowserEnv: isStandardBrowserEnv, - forEach: forEach, - merge: merge, - extend: extend, - trim: trim -}; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(process) { - -var utils = __webpack_require__(0); -var normalizeHeaderName = __webpack_require__(25); - -var PROTECTION_PREFIX = /^\)\]\}',?\n/; -var DEFAULT_CONTENT_TYPE = { - 'Content-Type': 'application/x-www-form-urlencoded' -}; - -function setContentTypeIfUnset(headers, value) { - if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { - headers['Content-Type'] = value; - } -} - -function getDefaultAdapter() { - var adapter; - if (typeof XMLHttpRequest !== 'undefined') { - // For browsers use XHR adapter - adapter = __webpack_require__(2); - } else if (typeof process !== 'undefined') { - // For node use HTTP adapter - adapter = __webpack_require__(2); - } - return adapter; -} - -var defaults = { - adapter: getDefaultAdapter(), - - transformRequest: [function transformRequest(data, headers) { - normalizeHeaderName(headers, 'Content-Type'); - if (utils.isFormData(data) || - utils.isArrayBuffer(data) || - utils.isStream(data) || - utils.isFile(data) || - utils.isBlob(data) - ) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isURLSearchParams(data)) { - setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); - return data.toString(); - } - if (utils.isObject(data)) { - setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); - return JSON.stringify(data); - } - return data; - }], - - transformResponse: [function transformResponse(data) { - /*eslint no-param-reassign:0*/ - if (typeof data === 'string') { - data = data.replace(PROTECTION_PREFIX, ''); - try { - data = JSON.parse(data); - } catch (e) { /* Ignore */ } - } - return data; - }], - - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - } -}; - -defaults.headers = { - common: { - 'Accept': 'application/json, text/plain, */*' - } -}; - -utils.forEach(['delete', 'get', 'head'], function forEachMehtodNoData(method) { - defaults.headers[method] = {}; -}); - -utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); -}); - -module.exports = defaults; - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(28))) - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); -var settle = __webpack_require__(17); -var buildURL = __webpack_require__(20); -var parseHeaders = __webpack_require__(26); -var isURLSameOrigin = __webpack_require__(24); -var createError = __webpack_require__(5); -var btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || __webpack_require__(19); - -module.exports = function xhrAdapter(config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - var requestData = config.data; - var requestHeaders = config.headers; - - if (utils.isFormData(requestData)) { - delete requestHeaders['Content-Type']; // Let the browser set it - } - - var request = new XMLHttpRequest(); - var loadEvent = 'onreadystatechange'; - var xDomain = false; - - // For IE 8/9 CORS support - // Only supports POST and GET calls and doesn't returns the response headers. - // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest. - if ("development" !== 'test' && - typeof window !== 'undefined' && - window.XDomainRequest && !('withCredentials' in request) && - !isURLSameOrigin(config.url)) { - request = new window.XDomainRequest(); - loadEvent = 'onload'; - xDomain = true; - request.onprogress = function handleProgress() {}; - request.ontimeout = function handleTimeout() {}; - } - - // HTTP basic authentication - if (config.auth) { - var username = config.auth.username || ''; - var password = config.auth.password || ''; - requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); - } - - request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - // Listen for ready state - request[loadEvent] = function handleLoad() { - if (!request || (request.readyState !== 4 && !xDomain)) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - - // Prepare the response - var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; - var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; - var response = { - data: responseData, - // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201) - status: request.status === 1223 ? 204 : request.status, - statusText: request.status === 1223 ? 'No Content' : request.statusText, - headers: responseHeaders, - config: config, - request: request - }; - - settle(resolve, reject, response); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(createError('Network Error', config)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED')); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if (utils.isStandardBrowserEnv()) { - var cookies = __webpack_require__(22); - - // Add xsrf header - var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? - cookies.read(config.xsrfCookieName) : - undefined; - - if (xsrfValue) { - requestHeaders[config.xsrfHeaderName] = xsrfValue; - } - } - - // Add headers to the request - if ('setRequestHeader' in request) { - utils.forEach(requestHeaders, function setRequestHeader(val, key) { - if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { - // Remove Content-Type if data is undefined - delete requestHeaders[key]; - } else { - // Otherwise add header to the request - request.setRequestHeader(key, val); - } - }); - } - - // Add withCredentials to request if needed - if (config.withCredentials) { - request.withCredentials = true; - } - - // Add responseType to request if needed - if (config.responseType) { - try { - request.responseType = config.responseType; - } catch (e) { - if (request.responseType !== 'json') { - throw e; - } - } - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', config.onDownloadProgress); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', config.onUploadProgress); - } - - if (config.cancelToken) { - // Handle cancellation - config.cancelToken.promise.then(function onCanceled(cancel) { - if (!request) { - return; - } - - request.abort(); - reject(cancel); - // Clean up request - request = null; - }); - } - - if (requestData === undefined) { - requestData = null; - } - - // Send the request - request.send(requestData); - }); -}; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * A `Cancel` is an object that is thrown when an operation is canceled. - * - * @class - * @param {string=} message The message. - */ -function Cancel(message) { - this.message = message; -} - -Cancel.prototype.toString = function toString() { - return 'Cancel' + (this.message ? ': ' + this.message : ''); -}; - -Cancel.prototype.__CANCEL__ = true; - -module.exports = Cancel; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = function isCancel(value) { - return !!(value && value.__CANCEL__); -}; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var enhanceError = __webpack_require__(16); - -/** - * Create an Error with the specified message, config, error code, and response. - * - * @param {string} message The error message. - * @param {Object} config The config. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - @ @param {Object} [response] The response. - * @returns {Error} The created error. - */ -module.exports = function createError(message, config, code, response) { - var error = new Error(message); - return enhanceError(error, config, code, response); -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = function bind(fn, thisArg) { - return function wrap() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - return fn.apply(thisArg, args); - }; -}; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -window.Vue = __webpack_require__(29); -window.axios = __webpack_require__(10); - -var selection = Vue.component('selection', { - props: ['albumList'], - template: '\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t

{{ album.title }}

\n\t\t\t\t\t

{{ album.location }}

\n\t\t\t\t
\n\t\t\t
\n\t\t
', - methods: { - openAlbum: function openAlbum(key) { - photography.getAlbumData(key); - } - } -}); - -var viewer = Vue.component('viewer', { - props: ['photo'], - template: '
\n\t\t\t

Back

\n\t\t\t

{{ photo.title }}

\n\t\t\t

Next

\n\t\t
', - methods: { - prevPhoto: function prevPhoto() { - photography.prevPhoto(); - }, - nextPhoto: function nextPhoto() { - photography.nextPhoto(); - } - } -}); - -var navigator = Vue.component('navigator', { - props: ['albumList', 'albumData', 'selectedAlbum'], - template: '', - data: function data() { - return { - currentAlbum: this.selectedAlbum - }; - }, - methods: { - changeAlbum: function changeAlbum() { - photography.changeAlbum(this.currentAlbum); - }, - closeAlbum: function closeAlbum() { - photography.closeAlbum(); - } - } -}); - -var sidebar = Vue.component('sidebar', { - props: ['albumData', 'photoIndex'], - template: '', - methods: { - changePhoto: function changePhoto(index) { - photography.changePhoto(index); - } - } -}); - -var album = Vue.component('album', { - props: ['albumList', 'albumData', 'album', 'photoIndex'], - template: '\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
', - computed: { - photoData: function photoData() { - return this.albumData[this.photoIndex]; - } - } -}); - -var photography = new Vue({ - el: '#photography', - template: '
\n\t\t\t\n\t\t\t\n\t\t
', - data: { - albumList: null, - albumData: null, - selectedAlbum: null, - photoIndex: null - }, - methods: { - getAlbumList: function getAlbumList() { - - axios.get('/api/album').then(function (response) { - photography.albumList = response.data; - }).catch(function (error) { - console.log(error); - }); - }, - getAlbumData: function getAlbumData(album) { - - axios.get('/api/album/' + album).then(function (response) { - photography.albumData = response.data; - photography.selectedAlbum = album; - photography.photoIndex = 0; - }).catch(function (error) { - console.log(error); - }); - }, - changeAlbum: function changeAlbum(album) { - this.getAlbumData(album); - }, - changePhoto: function changePhoto(newPhotoIndex) { - this.photoIndex = newPhotoIndex; - }, - prevPhoto: function prevPhoto() { - - if (this.photoIndex <= 0) { - this.photoIndex = this.albumLength; - } else { - this.photoIndex--; - } - }, - nextPhoto: function nextPhoto() { - - if (this.photoIndex >= this.albumLength) { - this.photoIndex = 0; - } else { - this.photoIndex++; - } - }, - closeAlbum: function closeAlbum() { - this.albumData = null; - } - }, - computed: { - albumLength: function albumLength() { - return this.albumData.length - 1; - } - }, - mounted: function mounted() { - this.getAlbumList(); - } -}); - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(11); - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); -var bind = __webpack_require__(6); -var Axios = __webpack_require__(13); -var defaults = __webpack_require__(1); - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * @return {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - var context = new Axios(defaultConfig); - var instance = bind(Axios.prototype.request, context); - - // Copy axios.prototype to instance - utils.extend(instance, Axios.prototype, context); - - // Copy context to instance - utils.extend(instance, context); - - return instance; -} - -// Create the default instance to be exported -var axios = createInstance(defaults); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios; - -// Factory for creating new instances -axios.create = function create(instanceConfig) { - return createInstance(utils.merge(defaults, instanceConfig)); -}; - -// Expose Cancel & CancelToken -axios.Cancel = __webpack_require__(3); -axios.CancelToken = __webpack_require__(12); -axios.isCancel = __webpack_require__(4); - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; -axios.spread = __webpack_require__(27); - -module.exports = axios; - -// Allow use of default import syntax in TypeScript -module.exports.default = axios; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var Cancel = __webpack_require__(3); - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @class - * @param {Function} executor The executor function. - */ -function CancelToken(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - var resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - var token = this; - executor(function cancel(message) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new Cancel(message); - resolvePromise(token.reason); - }); -} - -/** - * Throws a `Cancel` if cancellation has been requested. - */ -CancelToken.prototype.throwIfRequested = function throwIfRequested() { - if (this.reason) { - throw this.reason; - } -}; - -/** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ -CancelToken.source = function source() { - var cancel; - var token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token: token, - cancel: cancel - }; -}; - -module.exports = CancelToken; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var defaults = __webpack_require__(1); -var utils = __webpack_require__(0); -var InterceptorManager = __webpack_require__(14); -var dispatchRequest = __webpack_require__(15); -var isAbsoluteURL = __webpack_require__(23); -var combineURLs = __webpack_require__(21); - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - */ -function Axios(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; -} - -/** - * Dispatch a request - * - * @param {Object} config The config specific for this request (merged with this.defaults) - */ -Axios.prototype.request = function request(config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof config === 'string') { - config = utils.merge({ - url: arguments[0] - }, arguments[1]); - } - - config = utils.merge(defaults, this.defaults, { method: 'get' }, config); - - // Support baseURL config - if (config.baseURL && !isAbsoluteURL(config.url)) { - config.url = combineURLs(config.baseURL, config.url); - } - - // Hook up interceptors middleware - var chain = [dispatchRequest, undefined]; - var promise = Promise.resolve(config); - - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - chain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - chain.push(interceptor.fulfilled, interceptor.rejected); - }); - - while (chain.length) { - promise = promise.then(chain.shift(), chain.shift()); - } - - return promise; -}; - -// Provide aliases for supported request methods -utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(utils.merge(config || {}, { - method: method, - url: url - })); - }; -}); - -utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, data, config) { - return this.request(utils.merge(config || {}, { - method: method, - url: url, - data: data - })); - }; -}); - -module.exports = Axios; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -function InterceptorManager() { - this.handlers = []; -} - -/** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ -InterceptorManager.prototype.use = function use(fulfilled, rejected) { - this.handlers.push({ - fulfilled: fulfilled, - rejected: rejected - }); - return this.handlers.length - 1; -}; - -/** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - */ -InterceptorManager.prototype.eject = function eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } -}; - -/** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - */ -InterceptorManager.prototype.forEach = function forEach(fn) { - utils.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); -}; - -module.exports = InterceptorManager; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); -var transformData = __webpack_require__(18); -var isCancel = __webpack_require__(4); -var defaults = __webpack_require__(1); - -/** - * Throws a `Cancel` if cancellation has been requested. - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * @returns {Promise} The Promise to be fulfilled - */ -module.exports = function dispatchRequest(config) { - throwIfCancellationRequested(config); - - // Ensure headers exist - config.headers = config.headers || {}; - - // Transform request data - config.data = transformData( - config.data, - config.headers, - config.transformRequest - ); - - // Flatten headers - config.headers = utils.merge( - config.headers.common || {}, - config.headers[config.method] || {}, - config.headers || {} - ); - - utils.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - function cleanHeaderConfig(method) { - delete config.headers[method]; - } - ); - - var adapter = config.adapter || defaults.adapter; - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData( - response.data, - response.headers, - config.transformResponse - ); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData( - reason.response.data, - reason.response.headers, - config.transformResponse - ); - } - } - - return Promise.reject(reason); - }); -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Update an Error with the specified config, error code, and response. - * - * @param {Error} error The error to update. - * @param {Object} config The config. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - @ @param {Object} [response] The response. - * @returns {Error} The error. - */ -module.exports = function enhanceError(error, config, code, response) { - error.config = config; - if (code) { - error.code = code; - } - error.response = response; - return error; -}; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var createError = __webpack_require__(5); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - */ -module.exports = function settle(resolve, reject, response) { - var validateStatus = response.config.validateStatus; - // Note: status is not exposed by XDomainRequest - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(createError( - 'Request failed with status code ' + response.status, - response.config, - null, - response - )); - } -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -/** - * Transform the data for a request or a response - * - * @param {Object|String} data The data to be transformed - * @param {Array} headers The headers for the request or response - * @param {Array|Function} fns A single function or Array of functions - * @returns {*} The resulting transformed data - */ -module.exports = function transformData(data, headers, fns) { - /*eslint no-param-reassign:0*/ - utils.forEach(fns, function transform(fn) { - data = fn(data, headers); - }); - - return data; -}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js - -var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - -function E() { - this.message = 'String contains an invalid character'; -} -E.prototype = new Error; -E.prototype.code = 5; -E.prototype.name = 'InvalidCharacterError'; - -function btoa(input) { - var str = String(input); - var output = ''; - for ( - // initialize result and counter - var block, charCode, idx = 0, map = chars; - // if the next str index does not exist: - // change the mapping table to "=" - // check if d has no fractional digits - str.charAt(idx | 0) || (map = '=', idx % 1); - // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 - output += map.charAt(63 & block >> 8 - idx % 1 * 8) - ) { - charCode = str.charCodeAt(idx += 3 / 4); - if (charCode > 0xFF) { - throw new E(); - } - block = block << 8 | charCode; - } - return output; -} - -module.exports = btoa; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -function encode(val) { - return encodeURIComponent(val). - replace(/%40/gi, '@'). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @returns {string} The formatted url - */ -module.exports = function buildURL(url, params, paramsSerializer) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - var serializedParams; - if (paramsSerializer) { - serializedParams = paramsSerializer(params); - } else if (utils.isURLSearchParams(params)) { - serializedParams = params.toString(); - } else { - var parts = []; - - utils.forEach(params, function serialize(val, key) { - if (val === null || typeof val === 'undefined') { - return; - } - - if (utils.isArray(val)) { - key = key + '[]'; - } - - if (!utils.isArray(val)) { - val = [val]; - } - - utils.forEach(val, function parseValue(v) { - if (utils.isDate(v)) { - v = v.toISOString(); - } else if (utils.isObject(v)) { - v = JSON.stringify(v); - } - parts.push(encode(key) + '=' + encode(v)); - }); - }); - - serializedParams = parts.join('&'); - } - - if (serializedParams) { - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * @returns {string} The combined URL - */ -module.exports = function combineURLs(baseURL, relativeURL) { - return baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, ''); -}; - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -module.exports = ( - utils.isStandardBrowserEnv() ? - - // Standard browser envs support document.cookie - (function standardBrowserEnv() { - return { - write: function write(name, value, expires, path, domain, secure) { - var cookie = []; - cookie.push(name + '=' + encodeURIComponent(value)); - - if (utils.isNumber(expires)) { - cookie.push('expires=' + new Date(expires).toGMTString()); - } - - if (utils.isString(path)) { - cookie.push('path=' + path); - } - - if (utils.isString(domain)) { - cookie.push('domain=' + domain); - } - - if (secure === true) { - cookie.push('secure'); - } - - document.cookie = cookie.join('; '); - }, - - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - }; - })() : - - // Non standard browser env (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return { - write: function write() {}, - read: function read() { return null; }, - remove: function remove() {} - }; - })() -); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -module.exports = function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -module.exports = ( - utils.isStandardBrowserEnv() ? - - // Standard browser envs have full support of the APIs needed to test - // whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originURL; - - /** - * Parse a URL to discover it's components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - var href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })() -); - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -module.exports = function normalizeHeaderName(headers, normalizedName) { - utils.forEach(headers, function processHeader(value, name) { - if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { - headers[normalizedName] = value; - delete headers[name]; - } - }); -}; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(0); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} headers Headers needing to be parsed - * @returns {Object} Headers parsed into an object - */ -module.exports = function parseHeaders(headers) { - var parsed = {}; - var key; - var val; - var i; - - if (!headers) { return parsed; } - - utils.forEach(headers.split('\n'), function parser(line) { - i = line.indexOf(':'); - key = utils.trim(line.substr(0, i)).toLowerCase(); - val = utils.trim(line.substr(i + 1)); - - if (key) { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * @returns {Function} - */ -module.exports = function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports) { - -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/*! - * Vue.js v2.2.6 - * (c) 2014-2017 Evan You - * Released under the MIT License. - */ - - -/* */ - -/** - * Convert a value to a string that is actually rendered. - */ -function _toString (val) { - return val == null - ? '' - : typeof val === 'object' - ? JSON.stringify(val, null, 2) - : String(val) -} - -/** - * Convert a input value to a number for persistence. - * If the conversion fails, return original string. - */ -function toNumber (val) { - var n = parseFloat(val); - return isNaN(n) ? val : n -} - -/** - * Make a map and return a function for checking if a key - * is in that map. - */ -function makeMap ( - str, - expectsLowerCase -) { - var map = Object.create(null); - var list = str.split(','); - for (var i = 0; i < list.length; i++) { - map[list[i]] = true; - } - return expectsLowerCase - ? function (val) { return map[val.toLowerCase()]; } - : function (val) { return map[val]; } -} - -/** - * Check if a tag is a built-in tag. - */ -var isBuiltInTag = makeMap('slot,component', true); - -/** - * Remove an item from an array - */ -function remove (arr, item) { - if (arr.length) { - var index = arr.indexOf(item); - if (index > -1) { - return arr.splice(index, 1) - } - } -} - -/** - * Check whether the object has the property. - */ -var hasOwnProperty = Object.prototype.hasOwnProperty; -function hasOwn (obj, key) { - return hasOwnProperty.call(obj, key) -} - -/** - * Check if value is primitive - */ -function isPrimitive (value) { - return typeof value === 'string' || typeof value === 'number' -} - -/** - * Create a cached version of a pure function. - */ -function cached (fn) { - var cache = Object.create(null); - return (function cachedFn (str) { - var hit = cache[str]; - return hit || (cache[str] = fn(str)) - }) -} - -/** - * Camelize a hyphen-delimited string. - */ -var camelizeRE = /-(\w)/g; -var camelize = cached(function (str) { - return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }) -}); - -/** - * Capitalize a string. - */ -var capitalize = cached(function (str) { - return str.charAt(0).toUpperCase() + str.slice(1) -}); - -/** - * Hyphenate a camelCase string. - */ -var hyphenateRE = /([^-])([A-Z])/g; -var hyphenate = cached(function (str) { - return str - .replace(hyphenateRE, '$1-$2') - .replace(hyphenateRE, '$1-$2') - .toLowerCase() -}); - -/** - * Simple bind, faster than native - */ -function bind (fn, ctx) { - function boundFn (a) { - var l = arguments.length; - return l - ? l > 1 - ? fn.apply(ctx, arguments) - : fn.call(ctx, a) - : fn.call(ctx) - } - // record original fn length - boundFn._length = fn.length; - return boundFn -} - -/** - * Convert an Array-like object to a real Array. - */ -function toArray (list, start) { - start = start || 0; - var i = list.length - start; - var ret = new Array(i); - while (i--) { - ret[i] = list[i + start]; - } - return ret -} - -/** - * Mix properties into target object. - */ -function extend (to, _from) { - for (var key in _from) { - to[key] = _from[key]; - } - return to -} - -/** - * Quick object check - this is primarily used to tell - * Objects from primitive values when we know the value - * is a JSON-compliant type. - */ -function isObject (obj) { - return obj !== null && typeof obj === 'object' -} - -/** - * Strict object type check. Only returns true - * for plain JavaScript objects. - */ -var toString = Object.prototype.toString; -var OBJECT_STRING = '[object Object]'; -function isPlainObject (obj) { - return toString.call(obj) === OBJECT_STRING -} - -/** - * Merge an Array of Objects into a single Object. - */ -function toObject (arr) { - var res = {}; - for (var i = 0; i < arr.length; i++) { - if (arr[i]) { - extend(res, arr[i]); - } - } - return res -} - -/** - * Perform no operation. - */ -function noop () {} - -/** - * Always return false. - */ -var no = function () { return false; }; - -/** - * Return same value - */ -var identity = function (_) { return _; }; - -/** - * Generate a static keys string from compiler modules. - */ -function genStaticKeys (modules) { - return modules.reduce(function (keys, m) { - return keys.concat(m.staticKeys || []) - }, []).join(',') -} - -/** - * Check if two values are loosely equal - that is, - * if they are plain objects, do they have the same shape? - */ -function looseEqual (a, b) { - var isObjectA = isObject(a); - var isObjectB = isObject(b); - if (isObjectA && isObjectB) { - try { - return JSON.stringify(a) === JSON.stringify(b) - } catch (e) { - // possible circular reference - return a === b - } - } else if (!isObjectA && !isObjectB) { - return String(a) === String(b) - } else { - return false - } -} - -function looseIndexOf (arr, val) { - for (var i = 0; i < arr.length; i++) { - if (looseEqual(arr[i], val)) { return i } - } - return -1 -} - -/** - * Ensure a function is called only once. - */ -function once (fn) { - var called = false; - return function () { - if (!called) { - called = true; - fn(); - } - } -} - -/* */ - -var config = { - /** - * Option merge strategies (used in core/util/options) - */ - optionMergeStrategies: Object.create(null), - - /** - * Whether to suppress warnings. - */ - silent: false, - - /** - * Show production mode tip message on boot? - */ - productionTip: "development" !== 'production', - - /** - * Whether to enable devtools - */ - devtools: "development" !== 'production', - - /** - * Whether to record perf - */ - performance: false, - - /** - * Error handler for watcher errors - */ - errorHandler: null, - - /** - * Ignore certain custom elements - */ - ignoredElements: [], - - /** - * Custom user key aliases for v-on - */ - keyCodes: Object.create(null), - - /** - * Check if a tag is reserved so that it cannot be registered as a - * component. This is platform-dependent and may be overwritten. - */ - isReservedTag: no, - - /** - * Check if a tag is an unknown element. - * Platform-dependent. - */ - isUnknownElement: no, - - /** - * Get the namespace of an element - */ - getTagNamespace: noop, - - /** - * Parse the real tag name for the specific platform. - */ - parsePlatformTagName: identity, - - /** - * Check if an attribute must be bound using property, e.g. value - * Platform-dependent. - */ - mustUseProp: no, - - /** - * List of asset types that a component can own. - */ - _assetTypes: [ - 'component', - 'directive', - 'filter' - ], - - /** - * List of lifecycle hooks. - */ - _lifecycleHooks: [ - 'beforeCreate', - 'created', - 'beforeMount', - 'mounted', - 'beforeUpdate', - 'updated', - 'beforeDestroy', - 'destroyed', - 'activated', - 'deactivated' - ], - - /** - * Max circular updates allowed in a scheduler flush cycle. - */ - _maxUpdateCount: 100 -}; - -/* */ - -var emptyObject = Object.freeze({}); - -/** - * Check if a string starts with $ or _ - */ -function isReserved (str) { - var c = (str + '').charCodeAt(0); - return c === 0x24 || c === 0x5F -} - -/** - * Define a property. - */ -function def (obj, key, val, enumerable) { - Object.defineProperty(obj, key, { - value: val, - enumerable: !!enumerable, - writable: true, - configurable: true - }); -} - -/** - * Parse simple path. - */ -var bailRE = /[^\w.$]/; -function parsePath (path) { - if (bailRE.test(path)) { - return - } - var segments = path.split('.'); - return function (obj) { - for (var i = 0; i < segments.length; i++) { - if (!obj) { return } - obj = obj[segments[i]]; - } - return obj - } -} - -/* */ -/* globals MutationObserver */ - -// can we use __proto__? -var hasProto = '__proto__' in {}; - -// Browser environment sniffing -var inBrowser = typeof window !== 'undefined'; -var UA = inBrowser && window.navigator.userAgent.toLowerCase(); -var isIE = UA && /msie|trident/.test(UA); -var isIE9 = UA && UA.indexOf('msie 9.0') > 0; -var isEdge = UA && UA.indexOf('edge/') > 0; -var isAndroid = UA && UA.indexOf('android') > 0; -var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); -var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; - -// this needs to be lazy-evaled because vue may be required before -// vue-server-renderer can set VUE_ENV -var _isServer; -var isServerRendering = function () { - if (_isServer === undefined) { - /* istanbul ignore if */ - if (!inBrowser && typeof global !== 'undefined') { - // detect presence of vue-server-renderer and avoid - // Webpack shimming the process - _isServer = global['process'].env.VUE_ENV === 'server'; - } else { - _isServer = false; - } - } - return _isServer -}; - -// detect devtools -var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; - -/* istanbul ignore next */ -function isNative (Ctor) { - return /native code/.test(Ctor.toString()) -} - -var hasSymbol = - typeof Symbol !== 'undefined' && isNative(Symbol) && - typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); - -/** - * Defer a task to execute it asynchronously. - */ -var nextTick = (function () { - var callbacks = []; - var pending = false; - var timerFunc; - - function nextTickHandler () { - pending = false; - var copies = callbacks.slice(0); - callbacks.length = 0; - for (var i = 0; i < copies.length; i++) { - copies[i](); - } - } - - // the nextTick behavior leverages the microtask queue, which can be accessed - // via either native Promise.then or MutationObserver. - // MutationObserver has wider support, however it is seriously bugged in - // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It - // completely stops working after triggering a few times... so, if native - // Promise is available, we will use it: - /* istanbul ignore if */ - if (typeof Promise !== 'undefined' && isNative(Promise)) { - var p = Promise.resolve(); - var logError = function (err) { console.error(err); }; - timerFunc = function () { - p.then(nextTickHandler).catch(logError); - // in problematic UIWebViews, Promise.then doesn't completely break, but - // it can get stuck in a weird state where callbacks are pushed into the - // microtask queue but the queue isn't being flushed, until the browser - // needs to do some other work, e.g. handle a timer. Therefore we can - // "force" the microtask queue to be flushed by adding an empty timer. - if (isIOS) { setTimeout(noop); } - }; - } else if (typeof MutationObserver !== 'undefined' && ( - isNative(MutationObserver) || - // PhantomJS and iOS 7.x - MutationObserver.toString() === '[object MutationObserverConstructor]' - )) { - // use MutationObserver where native Promise is not available, - // e.g. PhantomJS IE11, iOS7, Android 4.4 - var counter = 1; - var observer = new MutationObserver(nextTickHandler); - var textNode = document.createTextNode(String(counter)); - observer.observe(textNode, { - characterData: true - }); - timerFunc = function () { - counter = (counter + 1) % 2; - textNode.data = String(counter); - }; - } else { - // fallback to setTimeout - /* istanbul ignore next */ - timerFunc = function () { - setTimeout(nextTickHandler, 0); - }; - } - - return function queueNextTick (cb, ctx) { - var _resolve; - callbacks.push(function () { - if (cb) { cb.call(ctx); } - if (_resolve) { _resolve(ctx); } - }); - if (!pending) { - pending = true; - timerFunc(); - } - if (!cb && typeof Promise !== 'undefined') { - return new Promise(function (resolve) { - _resolve = resolve; - }) - } - } -})(); - -var _Set; -/* istanbul ignore if */ -if (typeof Set !== 'undefined' && isNative(Set)) { - // use native Set when available. - _Set = Set; -} else { - // a non-standard Set polyfill that only works with primitive keys. - _Set = (function () { - function Set () { - this.set = Object.create(null); - } - Set.prototype.has = function has (key) { - return this.set[key] === true - }; - Set.prototype.add = function add (key) { - this.set[key] = true; - }; - Set.prototype.clear = function clear () { - this.set = Object.create(null); - }; - - return Set; - }()); -} - -var warn = noop; -var tip = noop; -var formatComponentName; - -if (true) { - var hasConsole = typeof console !== 'undefined'; - var classifyRE = /(?:^|[-_])(\w)/g; - var classify = function (str) { return str - .replace(classifyRE, function (c) { return c.toUpperCase(); }) - .replace(/[-_]/g, ''); }; - - warn = function (msg, vm) { - if (hasConsole && (!config.silent)) { - console.error("[Vue warn]: " + msg + " " + ( - vm ? formatLocation(formatComponentName(vm)) : '' - )); - } - }; - - tip = function (msg, vm) { - if (hasConsole && (!config.silent)) { - console.warn("[Vue tip]: " + msg + " " + ( - vm ? formatLocation(formatComponentName(vm)) : '' - )); - } - }; - - formatComponentName = function (vm, includeFile) { - if (vm.$root === vm) { - return '' - } - var name = typeof vm === 'string' - ? vm - : typeof vm === 'function' && vm.options - ? vm.options.name - : vm._isVue - ? vm.$options.name || vm.$options._componentTag - : vm.name; - - var file = vm._isVue && vm.$options.__file; - if (!name && file) { - var match = file.match(/([^/\\]+)\.vue$/); - name = match && match[1]; - } - - return ( - (name ? ("<" + (classify(name)) + ">") : "") + - (file && includeFile !== false ? (" at " + file) : '') - ) - }; - - var formatLocation = function (str) { - if (str === "") { - str += " - use the \"name\" option for better debugging messages."; - } - return ("\n(found in " + str + ")") - }; -} - -/* */ - - -var uid$1 = 0; - -/** - * A dep is an observable that can have multiple - * directives subscribing to it. - */ -var Dep = function Dep () { - this.id = uid$1++; - this.subs = []; -}; - -Dep.prototype.addSub = function addSub (sub) { - this.subs.push(sub); -}; - -Dep.prototype.removeSub = function removeSub (sub) { - remove(this.subs, sub); -}; - -Dep.prototype.depend = function depend () { - if (Dep.target) { - Dep.target.addDep(this); - } -}; - -Dep.prototype.notify = function notify () { - // stabilize the subscriber list first - var subs = this.subs.slice(); - for (var i = 0, l = subs.length; i < l; i++) { - subs[i].update(); - } -}; - -// the current target watcher being evaluated. -// this is globally unique because there could be only one -// watcher being evaluated at any time. -Dep.target = null; -var targetStack = []; - -function pushTarget (_target) { - if (Dep.target) { targetStack.push(Dep.target); } - Dep.target = _target; -} - -function popTarget () { - Dep.target = targetStack.pop(); -} - -/* - * not type checking this file because flow doesn't play well with - * dynamically accessing methods on Array prototype - */ - -var arrayProto = Array.prototype; -var arrayMethods = Object.create(arrayProto);[ - 'push', - 'pop', - 'shift', - 'unshift', - 'splice', - 'sort', - 'reverse' -] -.forEach(function (method) { - // cache original method - var original = arrayProto[method]; - def(arrayMethods, method, function mutator () { - var arguments$1 = arguments; - - // avoid leaking arguments: - // http://jsperf.com/closure-with-arguments - var i = arguments.length; - var args = new Array(i); - while (i--) { - args[i] = arguments$1[i]; - } - var result = original.apply(this, args); - var ob = this.__ob__; - var inserted; - switch (method) { - case 'push': - inserted = args; - break - case 'unshift': - inserted = args; - break - case 'splice': - inserted = args.slice(2); - break - } - if (inserted) { ob.observeArray(inserted); } - // notify change - ob.dep.notify(); - return result - }); -}); - -/* */ - -var arrayKeys = Object.getOwnPropertyNames(arrayMethods); - -/** - * By default, when a reactive property is set, the new value is - * also converted to become reactive. However when passing down props, - * we don't want to force conversion because the value may be a nested value - * under a frozen data structure. Converting it would defeat the optimization. - */ -var observerState = { - shouldConvert: true, - isSettingProps: false -}; - -/** - * Observer class that are attached to each observed - * object. Once attached, the observer converts target - * object's property keys into getter/setters that - * collect dependencies and dispatches updates. - */ -var Observer = function Observer (value) { - this.value = value; - this.dep = new Dep(); - this.vmCount = 0; - def(value, '__ob__', this); - if (Array.isArray(value)) { - var augment = hasProto - ? protoAugment - : copyAugment; - augment(value, arrayMethods, arrayKeys); - this.observeArray(value); - } else { - this.walk(value); - } -}; - -/** - * Walk through each property and convert them into - * getter/setters. This method should only be called when - * value type is Object. - */ -Observer.prototype.walk = function walk (obj) { - var keys = Object.keys(obj); - for (var i = 0; i < keys.length; i++) { - defineReactive$$1(obj, keys[i], obj[keys[i]]); - } -}; - -/** - * Observe a list of Array items. - */ -Observer.prototype.observeArray = function observeArray (items) { - for (var i = 0, l = items.length; i < l; i++) { - observe(items[i]); - } -}; - -// helpers - -/** - * Augment an target Object or Array by intercepting - * the prototype chain using __proto__ - */ -function protoAugment (target, src) { - /* eslint-disable no-proto */ - target.__proto__ = src; - /* eslint-enable no-proto */ -} - -/** - * Augment an target Object or Array by defining - * hidden properties. - */ -/* istanbul ignore next */ -function copyAugment (target, src, keys) { - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - def(target, key, src[key]); - } -} - -/** - * Attempt to create an observer instance for a value, - * returns the new observer if successfully observed, - * or the existing observer if the value already has one. - */ -function observe (value, asRootData) { - if (!isObject(value)) { - return - } - var ob; - if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { - ob = value.__ob__; - } else if ( - observerState.shouldConvert && - !isServerRendering() && - (Array.isArray(value) || isPlainObject(value)) && - Object.isExtensible(value) && - !value._isVue - ) { - ob = new Observer(value); - } - if (asRootData && ob) { - ob.vmCount++; - } - return ob -} - -/** - * Define a reactive property on an Object. - */ -function defineReactive$$1 ( - obj, - key, - val, - customSetter -) { - var dep = new Dep(); - - var property = Object.getOwnPropertyDescriptor(obj, key); - if (property && property.configurable === false) { - return - } - - // cater for pre-defined getter/setters - var getter = property && property.get; - var setter = property && property.set; - - var childOb = observe(val); - Object.defineProperty(obj, key, { - enumerable: true, - configurable: true, - get: function reactiveGetter () { - var value = getter ? getter.call(obj) : val; - if (Dep.target) { - dep.depend(); - if (childOb) { - childOb.dep.depend(); - } - if (Array.isArray(value)) { - dependArray(value); - } - } - return value - }, - set: function reactiveSetter (newVal) { - var value = getter ? getter.call(obj) : val; - /* eslint-disable no-self-compare */ - if (newVal === value || (newVal !== newVal && value !== value)) { - return - } - /* eslint-enable no-self-compare */ - if ("development" !== 'production' && customSetter) { - customSetter(); - } - if (setter) { - setter.call(obj, newVal); - } else { - val = newVal; - } - childOb = observe(newVal); - dep.notify(); - } - }); -} - -/** - * Set a property on an object. Adds the new property and - * triggers change notification if the property doesn't - * already exist. - */ -function set (target, key, val) { - if (Array.isArray(target) && typeof key === 'number') { - target.length = Math.max(target.length, key); - target.splice(key, 1, val); - return val - } - if (hasOwn(target, key)) { - target[key] = val; - return val - } - var ob = (target ).__ob__; - if (target._isVue || (ob && ob.vmCount)) { - "development" !== 'production' && warn( - 'Avoid adding reactive properties to a Vue instance or its root $data ' + - 'at runtime - declare it upfront in the data option.' - ); - return val - } - if (!ob) { - target[key] = val; - return val - } - defineReactive$$1(ob.value, key, val); - ob.dep.notify(); - return val -} - -/** - * Delete a property and trigger change if necessary. - */ -function del (target, key) { - if (Array.isArray(target) && typeof key === 'number') { - target.splice(key, 1); - return - } - var ob = (target ).__ob__; - if (target._isVue || (ob && ob.vmCount)) { - "development" !== 'production' && warn( - 'Avoid deleting properties on a Vue instance or its root $data ' + - '- just set it to null.' - ); - return - } - if (!hasOwn(target, key)) { - return - } - delete target[key]; - if (!ob) { - return - } - ob.dep.notify(); -} - -/** - * Collect dependencies on array elements when the array is touched, since - * we cannot intercept array element access like property getters. - */ -function dependArray (value) { - for (var e = (void 0), i = 0, l = value.length; i < l; i++) { - e = value[i]; - e && e.__ob__ && e.__ob__.dep.depend(); - if (Array.isArray(e)) { - dependArray(e); - } - } -} - -/* */ - -/** - * Option overwriting strategies are functions that handle - * how to merge a parent option value and a child option - * value into the final value. - */ -var strats = config.optionMergeStrategies; - -/** - * Options with restrictions - */ -if (true) { - strats.el = strats.propsData = function (parent, child, vm, key) { - if (!vm) { - warn( - "option \"" + key + "\" can only be used during instance " + - 'creation with the `new` keyword.' - ); - } - return defaultStrat(parent, child) - }; -} - -/** - * Helper that recursively merges two data objects together. - */ -function mergeData (to, from) { - if (!from) { return to } - var key, toVal, fromVal; - var keys = Object.keys(from); - for (var i = 0; i < keys.length; i++) { - key = keys[i]; - toVal = to[key]; - fromVal = from[key]; - if (!hasOwn(to, key)) { - set(to, key, fromVal); - } else if (isPlainObject(toVal) && isPlainObject(fromVal)) { - mergeData(toVal, fromVal); - } - } - return to -} - -/** - * Data - */ -strats.data = function ( - parentVal, - childVal, - vm -) { - if (!vm) { - // in a Vue.extend merge, both should be functions - if (!childVal) { - return parentVal - } - if (typeof childVal !== 'function') { - "development" !== 'production' && warn( - 'The "data" option should be a function ' + - 'that returns a per-instance value in component ' + - 'definitions.', - vm - ); - return parentVal - } - if (!parentVal) { - return childVal - } - // when parentVal & childVal are both present, - // we need to return a function that returns the - // merged result of both functions... no need to - // check if parentVal is a function here because - // it has to be a function to pass previous merges. - return function mergedDataFn () { - return mergeData( - childVal.call(this), - parentVal.call(this) - ) - } - } else if (parentVal || childVal) { - return function mergedInstanceDataFn () { - // instance merge - var instanceData = typeof childVal === 'function' - ? childVal.call(vm) - : childVal; - var defaultData = typeof parentVal === 'function' - ? parentVal.call(vm) - : undefined; - if (instanceData) { - return mergeData(instanceData, defaultData) - } else { - return defaultData - } - } - } -}; - -/** - * Hooks and props are merged as arrays. - */ -function mergeHook ( - parentVal, - childVal -) { - return childVal - ? parentVal - ? parentVal.concat(childVal) - : Array.isArray(childVal) - ? childVal - : [childVal] - : parentVal -} - -config._lifecycleHooks.forEach(function (hook) { - strats[hook] = mergeHook; -}); - -/** - * Assets - * - * When a vm is present (instance creation), we need to do - * a three-way merge between constructor options, instance - * options and parent options. - */ -function mergeAssets (parentVal, childVal) { - var res = Object.create(parentVal || null); - return childVal - ? extend(res, childVal) - : res -} - -config._assetTypes.forEach(function (type) { - strats[type + 's'] = mergeAssets; -}); - -/** - * Watchers. - * - * Watchers hashes should not overwrite one - * another, so we merge them as arrays. - */ -strats.watch = function (parentVal, childVal) { - /* istanbul ignore if */ - if (!childVal) { return Object.create(parentVal || null) } - if (!parentVal) { return childVal } - var ret = {}; - extend(ret, parentVal); - for (var key in childVal) { - var parent = ret[key]; - var child = childVal[key]; - if (parent && !Array.isArray(parent)) { - parent = [parent]; - } - ret[key] = parent - ? parent.concat(child) - : [child]; - } - return ret -}; - -/** - * Other object hashes. - */ -strats.props = -strats.methods = -strats.computed = function (parentVal, childVal) { - if (!childVal) { return Object.create(parentVal || null) } - if (!parentVal) { return childVal } - var ret = Object.create(null); - extend(ret, parentVal); - extend(ret, childVal); - return ret -}; - -/** - * Default strategy. - */ -var defaultStrat = function (parentVal, childVal) { - return childVal === undefined - ? parentVal - : childVal -}; - -/** - * Validate component names - */ -function checkComponents (options) { - for (var key in options.components) { - var lower = key.toLowerCase(); - if (isBuiltInTag(lower) || config.isReservedTag(lower)) { - warn( - 'Do not use built-in or reserved HTML elements as component ' + - 'id: ' + key - ); - } - } -} - -/** - * Ensure all props option syntax are normalized into the - * Object-based format. - */ -function normalizeProps (options) { - var props = options.props; - if (!props) { return } - var res = {}; - var i, val, name; - if (Array.isArray(props)) { - i = props.length; - while (i--) { - val = props[i]; - if (typeof val === 'string') { - name = camelize(val); - res[name] = { type: null }; - } else if (true) { - warn('props must be strings when using array syntax.'); - } - } - } else if (isPlainObject(props)) { - for (var key in props) { - val = props[key]; - name = camelize(key); - res[name] = isPlainObject(val) - ? val - : { type: val }; - } - } - options.props = res; -} - -/** - * Normalize raw function directives into object format. - */ -function normalizeDirectives (options) { - var dirs = options.directives; - if (dirs) { - for (var key in dirs) { - var def = dirs[key]; - if (typeof def === 'function') { - dirs[key] = { bind: def, update: def }; - } - } - } -} - -/** - * Merge two option objects into a new one. - * Core utility used in both instantiation and inheritance. - */ -function mergeOptions ( - parent, - child, - vm -) { - if (true) { - checkComponents(child); - } - normalizeProps(child); - normalizeDirectives(child); - var extendsFrom = child.extends; - if (extendsFrom) { - parent = typeof extendsFrom === 'function' - ? mergeOptions(parent, extendsFrom.options, vm) - : mergeOptions(parent, extendsFrom, vm); - } - if (child.mixins) { - for (var i = 0, l = child.mixins.length; i < l; i++) { - var mixin = child.mixins[i]; - if (mixin.prototype instanceof Vue$3) { - mixin = mixin.options; - } - parent = mergeOptions(parent, mixin, vm); - } - } - var options = {}; - var key; - for (key in parent) { - mergeField(key); - } - for (key in child) { - if (!hasOwn(parent, key)) { - mergeField(key); - } - } - function mergeField (key) { - var strat = strats[key] || defaultStrat; - options[key] = strat(parent[key], child[key], vm, key); - } - return options -} - -/** - * Resolve an asset. - * This function is used because child instances need access - * to assets defined in its ancestor chain. - */ -function resolveAsset ( - options, - type, - id, - warnMissing -) { - /* istanbul ignore if */ - if (typeof id !== 'string') { - return - } - var assets = options[type]; - // check local registration variations first - if (hasOwn(assets, id)) { return assets[id] } - var camelizedId = camelize(id); - if (hasOwn(assets, camelizedId)) { return assets[camelizedId] } - var PascalCaseId = capitalize(camelizedId); - if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] } - // fallback to prototype chain - var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; - if ("development" !== 'production' && warnMissing && !res) { - warn( - 'Failed to resolve ' + type.slice(0, -1) + ': ' + id, - options - ); - } - return res -} - -/* */ - -function validateProp ( - key, - propOptions, - propsData, - vm -) { - var prop = propOptions[key]; - var absent = !hasOwn(propsData, key); - var value = propsData[key]; - // handle boolean props - if (isType(Boolean, prop.type)) { - if (absent && !hasOwn(prop, 'default')) { - value = false; - } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) { - value = true; - } - } - // check default value - if (value === undefined) { - value = getPropDefaultValue(vm, prop, key); - // since the default value is a fresh copy, - // make sure to observe it. - var prevShouldConvert = observerState.shouldConvert; - observerState.shouldConvert = true; - observe(value); - observerState.shouldConvert = prevShouldConvert; - } - if (true) { - assertProp(prop, key, value, vm, absent); - } - return value -} - -/** - * Get the default value of a prop. - */ -function getPropDefaultValue (vm, prop, key) { - // no default, return undefined - if (!hasOwn(prop, 'default')) { - return undefined - } - var def = prop.default; - // warn against non-factory defaults for Object & Array - if ("development" !== 'production' && isObject(def)) { - warn( - 'Invalid default value for prop "' + key + '": ' + - 'Props with type Object/Array must use a factory function ' + - 'to return the default value.', - vm - ); - } - // the raw prop value was also undefined from previous render, - // return previous default value to avoid unnecessary watcher trigger - if (vm && vm.$options.propsData && - vm.$options.propsData[key] === undefined && - vm._props[key] !== undefined) { - return vm._props[key] - } - // call factory function for non-Function types - // a value is Function if its prototype is function even across different execution context - return typeof def === 'function' && getType(prop.type) !== 'Function' - ? def.call(vm) - : def -} - -/** - * Assert whether a prop is valid. - */ -function assertProp ( - prop, - name, - value, - vm, - absent -) { - if (prop.required && absent) { - warn( - 'Missing required prop: "' + name + '"', - vm - ); - return - } - if (value == null && !prop.required) { - return - } - var type = prop.type; - var valid = !type || type === true; - var expectedTypes = []; - if (type) { - if (!Array.isArray(type)) { - type = [type]; - } - for (var i = 0; i < type.length && !valid; i++) { - var assertedType = assertType(value, type[i]); - expectedTypes.push(assertedType.expectedType || ''); - valid = assertedType.valid; - } - } - if (!valid) { - warn( - 'Invalid prop: type check failed for prop "' + name + '".' + - ' Expected ' + expectedTypes.map(capitalize).join(', ') + - ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.', - vm - ); - return - } - var validator = prop.validator; - if (validator) { - if (!validator(value)) { - warn( - 'Invalid prop: custom validator check failed for prop "' + name + '".', - vm - ); - } - } -} - -/** - * Assert the type of a value - */ -function assertType (value, type) { - var valid; - var expectedType = getType(type); - if (expectedType === 'String') { - valid = typeof value === (expectedType = 'string'); - } else if (expectedType === 'Number') { - valid = typeof value === (expectedType = 'number'); - } else if (expectedType === 'Boolean') { - valid = typeof value === (expectedType = 'boolean'); - } else if (expectedType === 'Function') { - valid = typeof value === (expectedType = 'function'); - } else if (expectedType === 'Object') { - valid = isPlainObject(value); - } else if (expectedType === 'Array') { - valid = Array.isArray(value); - } else { - valid = value instanceof type; - } - return { - valid: valid, - expectedType: expectedType - } -} - -/** - * Use function string name to check built-in types, - * because a simple equality check will fail when running - * across different vms / iframes. - */ -function getType (fn) { - var match = fn && fn.toString().match(/^\s*function (\w+)/); - return match && match[1] -} - -function isType (type, fn) { - if (!Array.isArray(fn)) { - return getType(fn) === getType(type) - } - for (var i = 0, len = fn.length; i < len; i++) { - if (getType(fn[i]) === getType(type)) { - return true - } - } - /* istanbul ignore next */ - return false -} - -function handleError (err, vm, info) { - if (config.errorHandler) { - config.errorHandler.call(null, err, vm, info); - } else { - if (true) { - warn(("Error in " + info + ":"), vm); - } - /* istanbul ignore else */ - if (inBrowser && typeof console !== 'undefined') { - console.error(err); - } else { - throw err - } - } -} - -/* not type checking this file because flow doesn't play well with Proxy */ - -var initProxy; - -if (true) { - var allowedGlobals = makeMap( - 'Infinity,undefined,NaN,isFinite,isNaN,' + - 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + - 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' + - 'require' // for Webpack/Browserify - ); - - var warnNonPresent = function (target, key) { - warn( - "Property or method \"" + key + "\" is not defined on the instance but " + - "referenced during render. Make sure to declare reactive data " + - "properties in the data option.", - target - ); - }; - - var hasProxy = - typeof Proxy !== 'undefined' && - Proxy.toString().match(/native code/); - - if (hasProxy) { - var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta'); - config.keyCodes = new Proxy(config.keyCodes, { - set: function set (target, key, value) { - if (isBuiltInModifier(key)) { - warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key)); - return false - } else { - target[key] = value; - return true - } - } - }); - } - - var hasHandler = { - has: function has (target, key) { - var has = key in target; - var isAllowed = allowedGlobals(key) || key.charAt(0) === '_'; - if (!has && !isAllowed) { - warnNonPresent(target, key); - } - return has || !isAllowed - } - }; - - var getHandler = { - get: function get (target, key) { - if (typeof key === 'string' && !(key in target)) { - warnNonPresent(target, key); - } - return target[key] - } - }; - - initProxy = function initProxy (vm) { - if (hasProxy) { - // determine which proxy handler to use - var options = vm.$options; - var handlers = options.render && options.render._withStripped - ? getHandler - : hasHandler; - vm._renderProxy = new Proxy(vm, handlers); - } else { - vm._renderProxy = vm; - } - }; -} - -var mark; -var measure; - -if (true) { - var perf = inBrowser && window.performance; - /* istanbul ignore if */ - if ( - perf && - perf.mark && - perf.measure && - perf.clearMarks && - perf.clearMeasures - ) { - mark = function (tag) { return perf.mark(tag); }; - measure = function (name, startTag, endTag) { - perf.measure(name, startTag, endTag); - perf.clearMarks(startTag); - perf.clearMarks(endTag); - perf.clearMeasures(name); - }; - } -} - -/* */ - -var VNode = function VNode ( - tag, - data, - children, - text, - elm, - context, - componentOptions -) { - this.tag = tag; - this.data = data; - this.children = children; - this.text = text; - this.elm = elm; - this.ns = undefined; - this.context = context; - this.functionalContext = undefined; - this.key = data && data.key; - this.componentOptions = componentOptions; - this.componentInstance = undefined; - this.parent = undefined; - this.raw = false; - this.isStatic = false; - this.isRootInsert = true; - this.isComment = false; - this.isCloned = false; - this.isOnce = false; -}; - -var prototypeAccessors = { child: {} }; - -// DEPRECATED: alias for componentInstance for backwards compat. -/* istanbul ignore next */ -prototypeAccessors.child.get = function () { - return this.componentInstance -}; - -Object.defineProperties( VNode.prototype, prototypeAccessors ); - -var createEmptyVNode = function () { - var node = new VNode(); - node.text = ''; - node.isComment = true; - return node -}; - -function createTextVNode (val) { - return new VNode(undefined, undefined, undefined, String(val)) -} - -// optimized shallow clone -// used for static nodes and slot nodes because they may be reused across -// multiple renders, cloning them avoids errors when DOM manipulations rely -// on their elm reference. -function cloneVNode (vnode) { - var cloned = new VNode( - vnode.tag, - vnode.data, - vnode.children, - vnode.text, - vnode.elm, - vnode.context, - vnode.componentOptions - ); - cloned.ns = vnode.ns; - cloned.isStatic = vnode.isStatic; - cloned.key = vnode.key; - cloned.isCloned = true; - return cloned -} - -function cloneVNodes (vnodes) { - var len = vnodes.length; - var res = new Array(len); - for (var i = 0; i < len; i++) { - res[i] = cloneVNode(vnodes[i]); - } - return res -} - -/* */ - -var normalizeEvent = cached(function (name) { - var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first - name = once$$1 ? name.slice(1) : name; - var capture = name.charAt(0) === '!'; - name = capture ? name.slice(1) : name; - return { - name: name, - once: once$$1, - capture: capture - } -}); - -function createFnInvoker (fns) { - function invoker () { - var arguments$1 = arguments; - - var fns = invoker.fns; - if (Array.isArray(fns)) { - for (var i = 0; i < fns.length; i++) { - fns[i].apply(null, arguments$1); - } - } else { - // return handler return value for single handlers - return fns.apply(null, arguments) - } - } - invoker.fns = fns; - return invoker -} - -function updateListeners ( - on, - oldOn, - add, - remove$$1, - vm -) { - var name, cur, old, event; - for (name in on) { - cur = on[name]; - old = oldOn[name]; - event = normalizeEvent(name); - if (!cur) { - "development" !== 'production' && warn( - "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), - vm - ); - } else if (!old) { - if (!cur.fns) { - cur = on[name] = createFnInvoker(cur); - } - add(event.name, cur, event.once, event.capture); - } else if (cur !== old) { - old.fns = cur; - on[name] = old; - } - } - for (name in oldOn) { - if (!on[name]) { - event = normalizeEvent(name); - remove$$1(event.name, oldOn[name], event.capture); - } - } -} - -/* */ - -function mergeVNodeHook (def, hookKey, hook) { - var invoker; - var oldHook = def[hookKey]; - - function wrappedHook () { - hook.apply(this, arguments); - // important: remove merged hook to ensure it's called only once - // and prevent memory leak - remove(invoker.fns, wrappedHook); - } - - if (!oldHook) { - // no existing hook - invoker = createFnInvoker([wrappedHook]); - } else { - /* istanbul ignore if */ - if (oldHook.fns && oldHook.merged) { - // already a merged invoker - invoker = oldHook; - invoker.fns.push(wrappedHook); - } else { - // existing plain hook - invoker = createFnInvoker([oldHook, wrappedHook]); - } - } - - invoker.merged = true; - def[hookKey] = invoker; -} - -/* */ - -// The template compiler attempts to minimize the need for normalization by -// statically analyzing the template at compile time. -// -// For plain HTML markup, normalization can be completely skipped because the -// generated render function is guaranteed to return Array. There are -// two cases where extra normalization is needed: - -// 1. When the children contains components - because a functional component -// may return an Array instead of a single root. In this case, just a simple -// normalization is needed - if any child is an Array, we flatten the whole -// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep -// because functional components already normalize their own children. -function simpleNormalizeChildren (children) { - for (var i = 0; i < children.length; i++) { - if (Array.isArray(children[i])) { - return Array.prototype.concat.apply([], children) - } - } - return children -} - -// 2. When the children contains constructs that always generated nested Arrays, -// e.g.