From ec8c365a6359e33b54315d8e5b0a68772f4b024c Mon Sep 17 00:00:00 2001 From: Sebastian Baum Date: Wed, 6 Feb 2019 14:45:16 +0100 Subject: [PATCH] - build for production --- public/css/app.css | 1711 +- public/js/app.js | 42383 +------------------------------------------ 2 files changed, 2 insertions(+), 44092 deletions(-) diff --git a/public/css/app.css b/public/css/app.css index 9c05cfe..4c49c9f 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -1,1710 +1 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - -webkit-box-sizing: content-box; - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - -webkit-box-sizing: border-box; - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type="checkbox"], -[type="radio"] { - -webkit-box-sizing: border-box; - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} -/** - * okaidia theme for JavaScript, CSS and HTML - * Loosely based on Monokai textmate theme by http://www.monokai.nl/ - * @author ocodia - */ - -code[class*="language-"], -pre[class*="language-"] { - color: #f8f8f2; - background: none; - text-shadow: 0 1px rgba(0, 0, 0, 0.3); - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #272822; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #f8f8f2; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: #f92672; -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: #f8f8f2; -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: #e6db74; -} - -.token.keyword { - color: #66d9ef; -} - -.token.regex, -.token.important { - color: #fd971f; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} -/* -Here we do define the variables that we are using across all pages of our project. -We use the CSS variables to keep theming a possibility in the future. -We also declare basically the same stuff as a SASS variable to be able to declare fallback -solutions for the browsers that can't use CSS vars. - -this would then look like this - -.el { - background: var(--var, $varFallback); -} - -*/ - -/* for layout*/ - -/* for colors*/ - -/* for animation timings*/ - -:root { - /* for colors*/ - --brandMain: #03314B; - --brandDark: #02273C; - --brandCon: #FFF621; - --positive: #10E2AB; - --alert: #FF4F4F; - --warning: #FFB421; - --inactive: #B9C5C5; - /* for layout*/ - --headerheight: 66px; - --gap: 1rem; -} - -/* -These are all our helpers that we might take from project to project. -*/ - -/* -These are the styles that we want to acces globally throughout the whoel project. -Here you can find the Grid-Definitions for the whole layout for example. -*/ - -*, -*::before, -*::after { - -webkit-box-sizing: inherit; - box-sizing: inherit; -} - -html { - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: white; - font-family: 'Roboto Mono', sans-serif; - font-size: 100%; -} - -body { - background: var(--brandMain, #03314B); -} - -:focus { - outline-color: var(--positive, #10E2AB); - outline-offset: -2px; - outline-style: dashed; - outline-width: 1px; -} - -*::-webkit-scrollbar { - width: 8px; - height: 8px; -} - -*::-webkit-scrollbar-track, -*::-webkit-scrollbar-corner { - background: #03314b; -} - -*::-webkit-scrollbar-thumb { - border-radius: 1rem; - background-color: #001B22; -} - -/* -This builds the basic structure of the viewport, -containing the header and the so called view, containing most of the UI. -*/ - -.window { - display: grid; - height: 100vh; - grid-template-columns: 1fr 1fr 1fr 1fr; - grid-template-rows: var(--headerheight) auto; - grid-template-areas: "header header header header" "main main main main"; - overflow: hidden; -} - -.view, -.view--inner { - display: grid; - grid-area: main; - grid-template-columns: 1fr 1fr 1fr 1fr; - grid-template-rows: 1fr 1fr 1fr var(--headerheight); - overflow: hidden; -} - -@media (max-width: 599px) { - .view, - .view--inner { - grid-template-areas: "code code code code" "view view view view" "view view view view" "footer footer footer footer"; - } -} - -@media (min-width: 600px) { - .view, - .view--inner { - grid-template-areas: "code code code code" "view view view view" "view view view view" "footer footer footer footer"; - } -} - -@media (min-width: 1200px) { - .view, - .view--inner { - grid-template-areas: "code view view view" "code view view view" "code view view view" ".... footer footer footer"; - } -} - -.view--inner { - grid-area: code / code/ footer / footer; -} - -.footer { - grid-area: footer; -} - -.u-hide { - display: none !important; -} - -.u-transparent { - opacity: 0; - pointer-events: none; -} - -.u-transparent#usage { - position: absolute; -} - -.u-center { - text-align: center; -} - -.u-right { - text-align: right; -} - -/* -These are the styles that we want to acces globally throughout the whole project. -Here you can find the definition & mixins for our transitions and animations. -These are the only ones that are allowed. -*/ - -@-webkit-keyframes slideIn { - 0% { - opacity: 0; - -webkit-transform: scaleX(0.5) translateX(-1000px); - transform: scaleX(0.5) translateX(-1000px); - } - - 75% { - opacity: 1; - } - - 100% { - -webkit-transform: scaleX(1) translateX(0px); - transform: scaleX(1) translateX(0px); - } -} - -@keyframes slideIn { - 0% { - opacity: 0; - -webkit-transform: scaleX(0.5) translateX(-1000px); - transform: scaleX(0.5) translateX(-1000px); - } - - 75% { - opacity: 1; - } - - 100% { - -webkit-transform: scaleX(1) translateX(0px); - transform: scaleX(1) translateX(0px); - } -} - -@-webkit-keyframes dropIn { - 0% { - opacity: 0; - -webkit-transform: scaleY(0.5) translateY(-1000px); - transform: scaleY(0.5) translateY(-1000px); - } - - 75% { - opacity: 1; - } - - 100% { - -webkit-transform: scaleY(1) translateY(0px); - transform: scaleY(1) translateY(0px); - } -} - -@keyframes dropIn { - 0% { - opacity: 0; - -webkit-transform: scaleY(0.5) translateY(-1000px); - transform: scaleY(0.5) translateY(-1000px); - } - - 75% { - opacity: 1; - } - - 100% { - -webkit-transform: scaleY(1) translateY(0px); - transform: scaleY(1) translateY(0px); - } -} - -.a-slideIn { - -webkit-animation-name: slideIn; - animation-name: slideIn; - -webkit-animation-duration: 300ms; - animation-duration: 300ms; - -webkit-animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1); - animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1); - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -.a-dropIn { - -webkit-animation-name: dropIn; - animation-name: dropIn; - -webkit-animation-duration: 300ms; - animation-duration: 300ms; - -webkit-animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1); - animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1); - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -.warning-includes, -.preview-menu, -.status-menue { - background: var(--brandDark, #02273C); - min-width: 10rem; - padding: calc(var(--gap, $l-gap) / 2) 0; - position: absolute; - top: 1.4rem; - z-index: 1; -} - -.warning-listItem, -.preview-option, -.status-option { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background: transparent; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-weight: normal; - padding: calc(var(--gap, $l-gap) / 2) var(--gap, 1rem); - text-align: left; - text-decoration: none; - width: 100%; -} - -/* -These are the styles for all interactive elements that aren't buttons. -*/ - -a { - color: inherit; - display: inline-block; -} - -.back { - padding: 0.5rem 1rem; -} - -/* -These are the styles for every interactive element that is clickable but no link or doesn't look like a link. -*/ - -.btn--primary, -.btn--secondary { - background: none; - border: 1px solid #fff; - color: #fff; - margin: 0 1rem 1rem 0; - padding: 0; - position: relative; - white-space: nowrap; - text-decoration: none; -} - -.btn--primary > span, -.btn--secondary > span { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 100%; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - left: 0; - padding: 1rem; - position: relative; - top: 0; - -webkit-transform: translate(5px, -5px); - transform: translate(5px, -5px); - -webkit-transition: 150ms cubic-bezier(0.4, 0, 0.2, 1) -webkit-transform; - transition: 150ms cubic-bezier(0.4, 0, 0.2, 1) -webkit-transform; - transition: 150ms cubic-bezier(0.4, 0, 0.2, 1) transform; - transition: 150ms cubic-bezier(0.4, 0, 0.2, 1) transform, 150ms cubic-bezier(0.4, 0, 0.2, 1) -webkit-transform; - z-index: 1; -} - -.btn--primary > span > i, -.btn--secondary > span > i { - margin-right: 0.5rem; -} - -.btn--primary:hover > span, -.btn--secondary:hover > span { - -webkit-transform: translate(2px, -2px); - transform: translate(2px, -2px); -} - -.btn--primary > span { - background: white; - color: var(--brandMain, #03314B); -} - -.btn--secondary > span { - background: var(--brandMain, #03314B); - border: 1px solid white; - color: white; -} - -.btn--sm { - height: auto; -} - -.btn--sm > span { - padding: 0.25rem 0.5rem; - -webkit-transform: translate(3px, -3px); - transform: translate(3px, -3px); -} - -.btn--sm:hover > span { - -webkit-transform: translate(0px, 0px); - transform: translate(0px, 0px); -} - -.btn--la { - min-height: 50px; - min-width: calc(100px + 2rem); -} - -.btn--cta > span { - background: var(--brandCon, #FFF621); - color: var(--brandMain, #03314B); -} - -.toggle-wrap { - width: 1rem; - height: 1rem; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 2px solid white; - border-radius: 1rem; - -webkit-box-shadow: 0 0 0px 0px var(--positive, #10E2AB); - box-shadow: 0 0 0px 0px var(--positive, #10E2AB); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: 0 0.5rem; - position: relative; - -webkit-transition: 150ms ease-in box-shadow; - transition: 150ms ease-in box-shadow; - width: 2rem; -} - -.toggle-wrap:focus-within { - -webkit-box-shadow: 0 0 20px 2px var(--positive, #10E2AB); - box-shadow: 0 0 20px 2px var(--positive, #10E2AB); -} - -.toggle-wrap .toggle { - width: 100%; - height: 100%; - opacity: 0; - position: relative; - z-index: auto; -} - -.toggle-wrap .toggle + div { - width: 13px; - height: 13px; - background: white; - border: 1px solid var(--brandMain); - border-radius: 100%; - content: ''; - display: block; - left: 1px; - top: 50%; - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - -webkit-transition: 150ms cubic-bezier(0.19, 1, 0.22, 1) -webkit-transform; - transition: 150ms cubic-bezier(0.19, 1, 0.22, 1) -webkit-transform; - transition: 150ms cubic-bezier(0.19, 1, 0.22, 1) transform; - transition: 150ms cubic-bezier(0.19, 1, 0.22, 1) transform, 150ms cubic-bezier(0.19, 1, 0.22, 1) -webkit-transform; - position: absolute; -} - -.toggle-wrap .toggle:checked + div { - -webkit-transform: translate(14px, -50%); - transform: translate(14px, -50%); -} - -.toggle-wrap span { - display: none; -} - -.toggle--more { - background: none; - border: none; - color: white; - font-size: 1rem; - padding: 0 0.35rem; -} - -.toggle--more.active, -.toggle--more:hover { - color: #10E2AB; - color: var(--positive, #10E2AB); -} - -.toggle--more.shortcuts { - bottom: 0; - left: 0; - position: fixed; -} - -.toggle--showIncludes { - font-size: inherit; - text-shadow: inherit; -} - -.toggle--showIncludes:hover { - color: #fff; - text-decoration: underline; -} - -/* -These are the styles for the form elements like inputs, fieldsets & labels etc. -More special Forms might be a component. -*/ - -.form { - max-width: 50rem; - width: 100%; -} - -.form-group { - padding: var(--gap, 1rem) 0; -} - -.form-group--end { - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - padding: 1rem 0; -} - -.form-group + .form-group--end { - margin-top: 1rem; -} - -.form-group--end a { - margin: 0 2rem; - padding: 0.5rem 1rem; - text-decoration: none; -} - -.form-group--end a > span { - display: block; - -webkit-transform: translate(5px, -5px); - transform: translate(5px, -5px); -} - -label { - margin-bottom: 1rem; -} - -label > span { - display: block; -} - -.label-hint { - font-size: 0.8rem; -} - -input:not([type="checkbox"]), -textarea { - background: transparent; - border: 1px solid white; - color: inherit; - margin: var(--gap, 1rem) 0; - padding: 1rem; - width: 100%; -} - -textarea { - min-height: 200px; -} - -.error { - color: var(--alert, #FF4F4F); - display: inline-block; -} - -/* -This is the rule set for all headings in our project. -*/ - -h1, -.headline--one { - font-family: 'Noto serif', serif; - font-size: 3.75rem; - font-weight: 700; -} - -h1 > small, -.headline--one > small { - display: block; - font-size: 2rem; -} - -h2, -.headline--two { - font-family: 'Roboto Mono', serif; - font-size: 1rem; - font-weight: 400; -} - -.welcome h2, -.welcome -.headline--two { - margin-top: 1rem; -} - -/* -These are the styles for lists. -*/ - -ul { - color: inherit; - list-style: none; - margin: 0; - padding: 0; -} - -.tooltip { - display: block !important; - font-family: sans-serif; - font-size: 0.75rem; - z-index: 10000; -} - -.tooltip .tooltip-inner { - background: black; - color: white; - border-radius: 16px; - padding: 5px 10px 4px; -} - -.tooltip .tooltip-arrow { - width: 0; - height: 0; - border-style: solid; - position: absolute; - margin: 5px; - border-color: black; - z-index: 1; -} - -.tooltip[x-placement^="top"] { - margin-bottom: 5px; -} - -.tooltip[x-placement^="top"] .tooltip-arrow { - border-width: 5px 5px 0 5px; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - bottom: -5px; - left: calc(50% - 5px); - margin-top: 0; - margin-bottom: 0; -} - -.tooltip[x-placement^="bottom"] { - margin-top: 5px; -} - -.tooltip[x-placement^="bottom"] .tooltip-arrow { - border-width: 0 5px 5px 5px; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-top-color: transparent !important; - top: -5px; - left: calc(50% - 5px); - margin-top: 0; - margin-bottom: 0; -} - -.tooltip[x-placement^="right"] { - margin-left: 5px; -} - -.tooltip[x-placement^="right"] .tooltip-arrow { - border-width: 5px 5px 5px 0; - border-left-color: transparent !important; - border-top-color: transparent !important; - border-bottom-color: transparent !important; - left: -5px; - top: calc(50% - 5px); - margin-left: 0; - margin-right: 0; -} - -.tooltip[x-placement^="left"] { - margin-right: 5px; -} - -.tooltip[x-placement^="left"] .tooltip-arrow { - border-width: 5px 0 5px 5px; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - right: -5px; - top: calc(50% - 5px); - margin-left: 0; - margin-right: 0; -} - -.tooltip.popover .popover-inner { - background: #f9f9f9; - color: black; - padding: 24px; - border-radius: 5px; - -webkit-box-shadow: 0 5px 30px rgba(0, 0, 0, 0.1); - box-shadow: 0 5px 30px rgba(0, 0, 0, 0.1); -} - -.tooltip.popover .popover-arrow { - border-color: #f9f9f9; -} - -.tooltip[aria-hidden='true'] { - visibility: hidden; - opacity: 0; - -webkit-transition: opacity .15s, visibility .15s; - transition: opacity .15s, visibility .15s; -} - -.tooltip[aria-hidden='false'] { - visibility: visible; - opacity: 1; - -webkit-transition: opacity .15s; - transition: opacity .15s; -} - -/* -These are the styles for the feedback or warning boxes that giove the user feedback -*/ - -.warning { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background-color: var(--alert); - border-radius: 1rem; - color: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0.5rem 1rem; - position: relative; - text-shadow: 1px 1px 1px rgba(58, 58, 58, 0.8); -} - -.warning-message { - color: inherit; - margin: 0; -} - -.warning-includes { - right: 0; -} - -.header { - background: var(--brandDark); - height: var(--headerheight); - grid-area: header; -} - -.project-info { - text-align: center; -} - -.project-name { - font-family: sans-serif; - font-size: 0.75rem; -} - -/* -These are the styles that are needed to render our welcome dashboard. -*/ - -.dashboard-container { - max-height: 100%; - overflow: hidden; - padding: 1rem; - padding: var(--gap, 1rem); -} - -.dashboard-container.welcome { - grid-column: span 2; -} - -.dashboard-info { - display: block; - font-family: sans-serif; - font-size: 0.75rem; - padding: 0.5rem 0; -} - -.dashboard-list { - height: 100%; - list-style-type: none; - margin-left: -1rem; - min-width: 300px; - overflow: auto; -} - -.dashboard-listItem > a { - background: transparent; - display: block; - padding: 1rem; - padding: var(--gap, 1rem); -} - -.dashboard-listItem > a:hover { - background: #02273C; - background: var(--brandDark, #02273C); - color: #10E2AB; - color: var(--positive, #10E2AB); -} - -.rejected .dashboard-list .dashboard-listItem > a:hover { - color: #FF4F4F; - color: var(--alert, #FF4F4F); -} - -.dashboard-list--empty { - margin-left: -1rem; - padding: 1rem; - padding: var(--gap, 1rem); -} - -.dashboard-list--empty span { - opacity: 0.6; -} - -pre[class*="language-"] { - background: var(--brandMain, #03314B); -} - -.code { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - grid-area: code; - padding: var(--gap, 1rem); -} - -@media (min-width: 600px) { - .code { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - } -} - -@media (min-width: 1200px) { - .code { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - } -} - -.code-el { - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin-bottom: 2rem; -} - -.code-lang { - margin: 0; -} - -.code-header { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0 0 1rem 0; - position: relative; -} - -.code-header:after { - background: -webkit-gradient(linear, left top, left bottom, from(#03314B), to(rgba(3, 49, 75, 0))); - background: linear-gradient(to bottom, #03314B, rgba(3, 49, 75, 0)); - bottom: -1rem; - content: ''; - display: block; - height: 1rem; - left: 0; - position: absolute; - width: calc(100% - 8px); - z-index: 1; -} - -.code-type { - display: inline-block; -} - -.code-tabs { - height: 100%; - overflow: auto; - padding-bottom: 1rem; - position: relative; -} - -.code-tabs .tab { - width: 100%; - height: 100%; - left: 0; - position: absolute; - top: 0; -} - -/* -These are the styles that are needed to render the pattern preview. -*/ - -.status-current, -.status-option:before { - width: 1rem; - height: 1rem; - background: var(--inactive, #B9C5C5); - border-radius: 100%; - margin: 0 0.5rem 0 0; -} - -.accepted.status-current, -.accepted.status-option:before { - background: var(--positive, #10E2AB); -} - -.rejected.status-current, -.rejected.status-option:before { - background: var(--alert, #FF4F4F); -} - -.toCheck.status-current, -.toCheck.status-option:before { - background: var(--warning, #FFB421); -} - -.wip.status-current, -.wip.status-option:before { - background: white; -} - -.preview { - grid-area: view; - max-height: 100%; - max-width: 100%; - position: relative; - overflow: auto; -} - -.preview iframe { - width: 100%; -} - -.preview-infosWrap { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background: var(--brandMain, #03314B); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-family: Arial, sans-serif; - font-size: 0.75rem; - height: 50px; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - left: 0; - padding: var(--gap, 1rem); - position: -webkit-sticky; - position: sticky; - top: 0; - width: 100%; - z-index: auto; -} - -.preview-infos { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.preview-optionsWrap { - position: relative; - color: red; -} - -.preview-menu { - min-width: 10rem; - right: 0; - z-index: 1; -} - -.preview-option { - border: 0; - color: #fff; -} - -.preview-option:hover { - background: #03314B; - background: var(--brandMain, #03314B); -} - -.preview-description { - background: rgba(3, 49, 75, 0.9); - left: 0; - margin: 0; - padding: 1rem; - position: absolute; - top: 100%; - width: 100%; - z-index: 1; -} - -.statusbar { - padding: 0 0.45rem; - position: relative; -} - -.status-current { - cursor: pointer; - margin-right: 0; -} - -.status-menue { - left: -0.5rem; - z-index: 500; -} - -.status-option:before { - display: inline-block; - content: ''; -} - -.status-option:hover { - background: var(--brandMain, #03314B); -} - -/* -These are the styles for the project pattern navigation. -*/ - -.project-navigation { - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; -} - -.project-navigation a { - text-decoration: none; -} - -.patterns { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - width: 100%; -} - -.patterns--sub { - background: var(--brandDark, #02273C); - left: 0; - position: absolute; - top: 2rem; - width: 100%; - z-index: 500; -} - -.pattern { - cursor: pointer; - font-size: 0.875rem; - padding: 0; - position: relative; - text-align: center; - -webkit-transition: opacity 250ms; - transition: opacity 250ms; - min-width: 10rem; -} - -.pattern a, -.pattern span { - display: block; - padding: 0.5rem var(--gap, 1rem); -} - -.pattern:not(:first-child) { - border-left: 1px solid rgba(255, 255, 255, 0.1); -} - -.patterns:hover .pattern:not(:hover) { - opacity: 0.5; -} - -.pattern > .patterns--sub { - overflow: hidden; - max-height: 0; - margin: 0; - padding: 0; -} - -.pattern > .patterns--sub .pattern { - border: none; - text-align: left; -} - -.pattern > .patterns--sub .patterns--sub { - position: static; -} - -.pattern > .patterns--sub .patterns--sub .pattern { - padding: 0 0 0 0.5rem; -} - -.pattern i { - -webkit-transition: -webkit-transform 0.2s; - transition: -webkit-transform 0.2s; - transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s; -} - -.pattern.active { - opacity: 1 !important; -} - -.pattern.active > .patterns--sub { - max-height: 120em; -} - -.pattern.active > a > i { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -/* -These are the styles for the confirmation modal. -*/ - -.popUp { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background: none; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 100%; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 999; -} - -.popUp .popUp-inner { - background: var(--brandMain, #03314B); - padding: var(--gap, 1rem); -} - -.darken { - background: var(--brandMain, #03314B); - height: 100%; - left: 0; - opacity: 0.95; - position: fixed; - top: 0; - width: 100%; - z-index: -1; -} - -.popUp-controls { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -/* -These are the styles for the inline footer underneath the preview window - carrying the actions for each pattern. -*/ - -.footer { - height: var(--headerheight); - grid-area: footer; - padding: var(--gap, 1rem); - text-align: right; -} - -.project-info { - text-align: center; -} - -.project-name { - font-family: sans-serif; - font-size: 0.75rem; -} - -.popUp { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.navbar-laravel { - background-color: #fff; - -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); -} - -.state-todo { - color: red; -} - -.state-review { - color: orange; -} - -.state-done { - color: forestgreen; -} - -.design { - max-height: 500px; - max-width: 1200px; -} - +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:none;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}:root{--basicCopy:#8a8d8f;--brandMain:#03314b;--brandDark:#02273c;--brandCon:#fff621;--positive:#10e2ab;--alert:#ff4f4f;--warning:#ffb421;--inactive:#b9c5c5;--headerheight:66px;--gap:1rem}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;font-family:Roboto Mono,sans-serif;font-size:100%}body{background:var(--brandMain,#03314b)}:focus{outline-color:var(--positive,#10e2ab);outline-offset:-2px;outline-style:dashed;outline-width:1px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background:#03314b}::-webkit-scrollbar-thumb{border-radius:1rem;background-color:#001b22}.window{height:100vh;grid-template-columns:1fr 1fr 1fr 1fr;grid-template-rows:var(--headerheight) auto;grid-template-areas:"header header header header" "main main main main"}.view,.view--inner,.window{display:grid;overflow:hidden}.view,.view--inner{grid-area:main;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);grid-template-areas:"code code code code" "view view view view" "view view view view" "view view view view"}@media (min-width:1200px){.view,.view--inner{grid-template-areas:"code view view view" "code view view view" "code view view view" "code view view view"}}.view--inner{grid-area:code/code/view/view}.fullscreen{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;grid-area:code/code/footer/footer;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form--fullscreen{max-width:50rem;width:100%}.u-hide{display:none!important}.u-transparent{opacity:0;pointer-events:none}.u-transparent#usage{position:absolute}.u-center{text-align:center}.u-right{text-align:right}@-webkit-keyframes slideIn{0%{opacity:0;-webkit-transform:scaleX(.5) translateX(-1000px);transform:scaleX(.5) translateX(-1000px)}75%{opacity:1}to{-webkit-transform:scaleX(1) translateX(0);transform:scaleX(1) translateX(0)}}@keyframes slideIn{0%{opacity:0;-webkit-transform:scaleX(.5) translateX(-1000px);transform:scaleX(.5) translateX(-1000px)}75%{opacity:1}to{-webkit-transform:scaleX(1) translateX(0);transform:scaleX(1) translateX(0)}}@-webkit-keyframes dropIn{0%{opacity:0;-webkit-transform:scaleY(.5) translateY(-1000px);transform:scaleY(.5) translateY(-1000px)}75%{opacity:1}to{-webkit-transform:scaleY(1) translateY(0);transform:scaleY(1) translateY(0)}}@keyframes dropIn{0%{opacity:0;-webkit-transform:scaleY(.5) translateY(-1000px);transform:scaleY(.5) translateY(-1000px)}75%{opacity:1}to{-webkit-transform:scaleY(1) translateY(0);transform:scaleY(1) translateY(0)}}.a-slideIn{-webkit-animation-name:slideIn;animation-name:slideIn;-webkit-animation-timing-function:cubic-bezier(.19,1,.22,1);animation-timing-function:cubic-bezier(.19,1,.22,1);-webkit-animation-iteration-count:1;animation-iteration-count:1}.a-dropIn,.a-slideIn{-webkit-animation-duration:.3s;animation-duration:.3s}.a-dropIn{-webkit-animation-name:dropIn;animation-name:dropIn;-webkit-animation-timing-function:cubic-bezier(.19,1,.22,1);animation-timing-function:cubic-bezier(.19,1,.22,1);-webkit-animation-iteration-count:1;animation-iteration-count:1}.preview-menu,.status-menue,.warning-includes{background:var(--brandDark,#02273c);min-width:10rem;padding:calc(var(--gap, $l-gap) / 2) 0;position:absolute;top:1.4rem;z-index:1}.preview-option,.status-option,.warning-listItem{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:transparent;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:400;padding:calc(var(--gap, $l-gap) / 2) var(--gap,1rem);text-align:left;text-decoration:none;width:100%}a{color:inherit;display:inline-block}.back{padding:.5rem 1rem}.btn--cancel,.btn--primary,.btn--save,.btn--secondary{background:none;border:1px solid #fff;margin:0 1rem 1rem 0;padding:0;position:relative;white-space:nowrap;text-decoration:none}.btn--cancel>span,.btn--primary>span,.btn--save>span,.btn--secondary>span{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;left:0;padding:1rem;position:relative;top:0;-webkit-transform:translate(5px,-5px);transform:translate(5px,-5px);-webkit-transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1);transition:transform .15s cubic-bezier(.4,0,.2,1),-webkit-transform .15s cubic-bezier(.4,0,.2,1);z-index:1}.btn--cancel>span>i,.btn--primary>span>i,.btn--save>span>i,.btn--secondary>span>i{margin-right:.5rem}.btn--cancel:hover>span,.btn--primary:hover>span,.btn--save:hover>span,.btn--secondary:hover>span{-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px)}.btn--primary{color:#fff;min-width:100px}.btn--primary>span{background:#fff;color:var(--brandMain,#03314b)}.btn--secondary>span{background:var(--brandMain,#03314b);border:1px solid transparent;color:currentColor}.btn--save{border:1px solid var(--positive,#10e2ab)}.btn--save>span{background:var(--positive,#10e2ab)}.btn--cancel{border:none;background:transparent;color:currentColor}.btn--cancel>span{background:none;color:inherit}.btn--create{font-size:.875rem;white-space:nowrap;padding:.5rem var(--gap,1rem)}.btn--create:hover,.btn--create>i{color:#10e2ab;color:var(--positive,#10e2ab)}.btn--sm{height:auto}.btn--sm>span{padding:.25rem .5rem;-webkit-transform:translate(3px,-3px);transform:translate(3px,-3px)}.btn--sm:hover>span{-webkit-transform:translate(0);transform:translate(0)}.btn--la{min-height:50px;min-width:calc(100px + 2rem)}.btn--cta>span{background:var(--brandCon,#fff621);color:var(--brandMain,#03314b)}.toggle-wrap{width:1rem;height:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:2px solid #fff;border-radius:1rem;-webkit-box-shadow:0 0 0 0 var(--positive,#10e2ab);box-shadow:0 0 0 0 var(--positive,#10e2ab);display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 .5rem;position:relative;-webkit-transition:box-shadow .15s ease-in;transition:box-shadow .15s ease-in;width:2rem}.toggle-wrap:focus-within{-webkit-box-shadow:0 0 20px 2px var(--positive,#10e2ab);box-shadow:0 0 20px 2px var(--positive,#10e2ab)}.toggle-wrap .toggle{width:100%;height:100%;opacity:0;position:relative;z-index:auto}.toggle-wrap .toggle+div{width:13px;height:13px;background:#fff;border:1px solid var(--brandMain);border-radius:100%;content:"";display:block;left:1px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .15s cubic-bezier(.19,1,.22,1);transition:-webkit-transform .15s cubic-bezier(.19,1,.22,1);transition:transform .15s cubic-bezier(.19,1,.22,1);transition:transform .15s cubic-bezier(.19,1,.22,1),-webkit-transform .15s cubic-bezier(.19,1,.22,1);position:absolute}.toggle-wrap .toggle:checked+div{-webkit-transform:translate(14px,-50%);transform:translate(14px,-50%)}.toggle-wrap span{display:none}.toggle--more{background:none;border:none;color:#fff;font-size:1rem;padding:0 .5rem}.toggle--more.active,.toggle--more:hover{color:#10e2ab;color:var(--positive,#10e2ab)}.toggle--more.shortcuts{bottom:0;left:0;padding:.5rem;position:fixed}.toggle--more.close{position:absolute;right:1rem;top:1rem}.toggle--more>svg{max-height:14px}.toggle--more>svg line,.toggle--more>svg path,.toggle--more>svg rect{fill:#fff}.toggle--showIncludes{font-size:inherit;text-shadow:inherit}.toggle--showIncludes:hover{color:#fff;text-decoration:underline}.tabs-list{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:1rem 0}.tab{background:transparent;border-bottom:1px solid;border-color:var(--brandMain,#03314b);cursor:pointer;padding:1rem;padding:var(--gap,1rem);width:100%}.tab:not(:first-child){border-left:1px solid}.tab.active{background:var(--brandMain,#03314b);color:#fff}.tab span{-webkit-transition:color .tab span transform .15s ease-in;transition:color .tab span transform .15s ease-in}.tab:focus>span,.tab:hover>span{display:inline-block;-webkit-transform:translate(-2px,2px);transform:translate(-2px,2px)}.form{max-width:50rem;width:100%}.form-group{padding:var(--gap,1rem) 0}.form-group--end{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem 0}.form-group+.form-group--end{margin-top:1rem}.form-group--end a{margin:0 2rem;padding:.5rem 1rem;text-decoration:none}.form-group--end a>span{display:block;-webkit-transform:translate(5px,-5px);transform:translate(5px,-5px)}label{margin-bottom:1rem}label>span{display:block}.label-hint{font-size:.8rem;opacity:.6}input:not([type=checkbox]),textarea{background:transparent;border:1px dashed currentColor;color:inherit;margin:var(--gap,1rem) 0;padding:1rem;resize:none;width:100%}textarea{min-height:200px}.error{color:#ff4f4f;color:var(--alert,#ff4f4f)}.error,.success{display:inline-block}.success{color:#10e2ab;color:var(--positive,#10e2ab)}.headline--one,h1{font-family:"Noto serif",serif;font-size:3.75rem;font-weight:700}.headline--one>small,h1>small{display:block;font-size:2rem}.headline--two,h2{font-family:Roboto Mono,serif;font-size:1rem;font-weight:400}.welcome .headline--two,.welcome h2{margin-top:1rem}ul{color:inherit;list-style:none;margin:0;padding:0}.tooltip{display:block!important;font-family:sans-serif;font-size:.75rem;z-index:10000}.tooltip .tooltip-inner{background:#000;color:#fff;border-radius:16px;padding:5px 10px 4px}.tooltip .tooltip-arrow{width:0;height:0;border-style:solid;position:absolute;margin:5px;border-color:#000;z-index:1}.tooltip[x-placement^=top]{margin-bottom:5px}.tooltip[x-placement^=top] .tooltip-arrow{border-width:5px 5px 0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;bottom:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.tooltip[x-placement^=bottom]{margin-top:5px}.tooltip[x-placement^=bottom] .tooltip-arrow{border-width:0 5px 5px;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important;top:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.tooltip[x-placement^=right]{margin-left:5px}.tooltip[x-placement^=right] .tooltip-arrow{border-width:5px 5px 5px 0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important;left:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}.tooltip[x-placement^=left]{margin-right:5px}.tooltip[x-placement^=left] .tooltip-arrow{border-width:5px 0 5px 5px;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;right:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}.tooltip.popover .popover-inner{background:#f9f9f9;color:#000;padding:24px;border-radius:5px;-webkit-box-shadow:0 5px 30px rgba(0,0,0,.1);box-shadow:0 5px 30px rgba(0,0,0,.1)}.tooltip.popover .popover-arrow{border-color:#f9f9f9}.tooltip[aria-hidden=true]{visibility:hidden;opacity:0;-webkit-transition:opacity .15s,visibility .15s;transition:opacity .15s,visibility .15s}.tooltip[aria-hidden=false]{visibility:visible;opacity:1;-webkit-transition:opacity .15s;transition:opacity .15s}.warning{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--alert);border-radius:1rem;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;padding:.5rem 1rem;position:relative;text-shadow:1px 1px 1px rgba(58,58,58,.8)}.warning-message{color:inherit;margin:0}.warning-includes{right:0}.header{background:var(--brandDark);height:var(--headerheight);grid-area:header}.project-name{color:#fff;text-decoration:none}.project-name:hover{color:#10e2ab;color:var(--positive,#10e2ab)}.project-name>a{text-decoration:inherit}.project-actions{padding:.375em 1rem;position:absolute;right:0;top:0}.dashboard-container{max-height:100%;overflow:hidden;padding:1rem;padding:var(--gap,1rem)}.dashboard-container.toReview{grid-column:span 2}@media (min-width:1200px){.dashboard-container.toReview{grid-column:3/4}}.dashboard-container.rejected{grid-column:span 2}@media (min-width:1200px){.dashboard-container.rejected{grid-column:4/5}}.dashboard-info{display:block;font-family:sans-serif;font-size:.75rem;padding:.5rem 0}.dashboard-list{height:100%;list-style-type:none;margin-left:-1rem;min-width:300px;overflow:auto}.dashboard-listItem>a{background:transparent;display:block;padding:1rem;padding:var(--gap,1rem)}.dashboard-listItem>a:hover{background:#02273c;background:var(--brandDark,#02273c);color:#10e2ab;color:var(--positive,#10e2ab)}.rejected .dashboard-list .dashboard-listItem>a:hover{color:#ff4f4f;color:var(--alert,#ff4f4f)}.dashboard-list--empty{margin-left:-1rem;padding:1rem;padding:var(--gap,1rem)}.dashboard-list--empty span{opacity:.6}.code{display:-webkit-box;display:-ms-flexbox;display:flex;grid-area:code;padding:var(--gap,1rem)}@media (min-width:600px){.code{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (min-width:1200px){.code{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.code-el{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;margin-bottom:2rem;width:100%}.code-el,.code-lang{display:-webkit-box;display:-ms-flexbox;display:flex}.code-lang{-ms-flex-line-pack:center;align-content:center;margin:0}.code-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 0 1rem;position:relative}.code-header:after{background:-webkit-gradient(linear,left top,left bottom,from(#03314b),to(rgba(3,49,75,0)));background:linear-gradient(180deg,#03314b,rgba(3,49,75,0));bottom:-1rem;content:"";display:block;height:1rem;left:0;position:absolute;width:calc(100% - 8px);z-index:1}.code-type{display:inline-block}.code-tabs{height:100%;overflow:auto;padding-bottom:1rem;position:relative}.code-tabs .tab{width:100%;height:100%;border:0;display:-webkit-box;display:-ms-flexbox;display:flex;left:0;padding:0;position:absolute;top:0}pre[class*=language-]{background:var(--brandMain,#03314b);padding:0;width:100%}.status-current,.status-option:before{width:1rem;height:1rem;background:var(--inactive,#b9c5c5);border-radius:100%;margin:0 .5rem 0 0}.accepted.status-current,.accepted.status-option:before{background:var(--positive,#10e2ab)}.rejected.status-current,.rejected.status-option:before{background:var(--alert,#ff4f4f)}.toCheck.status-current,.toCheck.status-option:before{background:var(--warning,#ffb421)}.wip.status-current,.wip.status-option:before{background:#fff}.preview{grid-area:view;max-height:100%;max-width:100%;position:relative;overflow:auto}.preview-inner{height:calc(100% - 50px)}.preview iframe{height:100%;width:100%}.preview-infosWrap{background:var(--brandMain,#03314b);font-family:Arial,sans-serif;font-size:.75rem;height:50px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;left:0;padding:var(--gap,1rem);position:-webkit-sticky;position:sticky;top:0;width:100%;z-index:auto}.preview-infos,.preview-infosWrap{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.preview-optionsWrap{position:relative;color:red}.preview-menu{min-width:10rem;right:0;z-index:1}.preview-option{border:0;color:#fff}.preview-option:hover{background:#03314b;background:var(--brandMain,#03314b)}.preview-description{background:rgba(3,49,75,.9);left:0;margin:0;padding:1rem;position:absolute;top:100%;width:100%;z-index:1}.statusbar{padding:0 .45rem;position:relative}.status-current{cursor:pointer;margin-right:0}.status-menue{left:-.5rem;z-index:500}.status-option:before{display:inline-block;content:""}.status-option:hover{background:var(--brandMain,#03314b)}.project-navigation{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.project-navigation a{text-decoration:none}.patterns{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;width:100%}.patterns--sub{background:var(--brandDark,#02273c);left:0;position:absolute;top:2rem;width:100%;z-index:500}.pattern{cursor:pointer;font-size:.875rem;padding:0;position:relative;text-align:center;-webkit-transition:opacity .25s;transition:opacity .25s;min-width:10rem}.pattern a,.pattern span{display:block;padding:.5rem var(--gap,1rem)}.pattern:not(:first-child){border-left:1px solid hsla(0,0%,100%,.1)}.patterns:hover .pattern:not(:hover){opacity:.5}.pattern>.patterns--sub{overflow:hidden;max-height:0;margin:0;padding:0}.pattern>.patterns--sub .pattern{border:none;text-align:left}.pattern>.patterns--sub .patterns--sub{position:static}.pattern>.patterns--sub .patterns--sub .pattern{padding:0 0 0 .5rem}.pattern i{-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.pattern.active{opacity:1!important}.pattern.active>.patterns--sub{max-height:120em}.pattern.active>a>i{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.popUp{background:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:999}.popUp .popUp-inner{background:#fff;color:#03314b;color:var(--brandMain,#03314b);padding:var(--gap,1rem);max-width:40rem;width:100%}.darken{background:var(--brandDark,#02273c);height:100%;left:0;opacity:.95;position:fixed;top:0;width:100%;z-index:-1}.popUp-controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.shortcut-list{margin:0;padding:0}.shortcut{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1.2;margin-bottom:1rem}.shortcut:last-child{margin-bottom:2rem}.shortcut-keys{background:#03314b;background:var(--brandMain,#03314b);border-radius:1rem;color:#fff;display:inline-block;padding:.5rem;text-align:center}.shortcut-description{color:#8a8d8f;font-family:Arial,sans-serif;width:80%}.footer{height:var(--headerheight);grid-area:footer;padding:var(--gap,1rem);text-align:right}.project-info{text-align:center}.project-name{font-family:sans-serif;font-size:.75rem}.popUp{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.navbar-laravel{background-color:#fff;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.04);box-shadow:0 2px 4px rgba(0,0,0,.04)}.state-todo{color:red}.state-review{color:orange}.state-done{color:#228b22}.design{max-height:500px;max-width:1200px} \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index 8426d69..5aa98ff 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,42382 +1 @@ -/******/ (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; -/******/ -/******/ // 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 = 20); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -/* globals __VUE_SSR_CONTEXT__ */ - -// IMPORTANT: Do NOT use ES2015 features in this file. -// This module is a runtime utility for cleaner component module output and will -// be included in the final webpack user bundle. - -module.exports = function normalizeComponent ( - rawScriptExports, - compiledTemplate, - functionalTemplate, - injectStyles, - scopeId, - moduleIdentifier /* server only */ -) { - var esModule - var scriptExports = rawScriptExports = rawScriptExports || {} - - // ES6 modules interop - var type = typeof rawScriptExports.default - if (type === 'object' || type === 'function') { - esModule = rawScriptExports - scriptExports = rawScriptExports.default - } - - // Vue.extend constructor export interop - var options = typeof scriptExports === 'function' - ? scriptExports.options - : scriptExports - - // render functions - if (compiledTemplate) { - options.render = compiledTemplate.render - options.staticRenderFns = compiledTemplate.staticRenderFns - options._compiled = true - } - - // functional template - if (functionalTemplate) { - options.functional = true - } - - // scopedId - if (scopeId) { - options._scopeId = scopeId - } - - var hook - if (moduleIdentifier) { // server build - hook = function (context) { - // 2.3 injection - context = - context || // cached call - (this.$vnode && this.$vnode.ssrContext) || // stateful - (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional - // 2.2 with runInNewContext: true - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__ - } - // inject component styles - if (injectStyles) { - injectStyles.call(this, context) - } - // register component module identifier for async chunk inferrence - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier) - } - } - // used by ssr in case component is cached and beforeCreate - // never gets called - options._ssrRegister = hook - } else if (injectStyles) { - hook = injectStyles - } - - if (hook) { - var functional = options.functional - var existing = functional - ? options.render - : options.beforeCreate - - if (!functional) { - // inject component registration as beforeCreate hook - options.beforeCreate = existing - ? [].concat(existing, hook) - : [hook] - } else { - // for template-only hot-reload because in that case the render fn doesn't - // go through the normalizer - options._injectStyles = hook - // register for functioal component in vue file - options.render = function renderWithStyleInjection (h, context) { - hook.call(context) - return existing(h, context) - } - } - } - - return { - esModule: esModule, - exports: scriptExports, - options: options - } -} - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var bind = __webpack_require__(13); -var isBuffer = __webpack_require__(34); - -/*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: - * navigator.product -> 'ReactNative' - */ -function isStandardBrowserEnv() { - if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { - return false; - } - return ( - typeof window !== 'undefined' && - typeof document !== 'undefined' - ); -} - -/** - * 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') { - /*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, - isBuffer: isBuffer, - 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 -}; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(30); - - -/***/ }), -/* 4 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return API; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_axios__ = __webpack_require__(32); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_axios___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_axios__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(11); - - - -var API = __WEBPACK_IMPORTED_MODULE_0_axios___default.a.create({ - baseURL: __WEBPACK_IMPORTED_MODULE_1__config__["a" /* default */].apiUri -}); - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(11); - - -/* harmony default export */ __webpack_exports__["a"] = ({ - - /** - * Dubug logging if devMode is enabled. - * @param params - */ - debug: function debug() { - if (__WEBPACK_IMPORTED_MODULE_0__config__["a" /* default */].devMode) { - var _console; - - (_console = console).log.apply(_console, arguments); - } - }, - - /** - * Error logging if devMode is enabled. - * @param params - */ - error: function error() { - if (__WEBPACK_IMPORTED_MODULE_0__config__["a" /* default */].devMode) { - var _console2; - - (_console2 = console).error.apply(_console2, arguments); - } - } -}); - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*! - * Vue.js v2.5.19 - * (c) 2014-2018 Evan You - * Released under the MIT License. - */ - - -/* */ - -var emptyObject = Object.freeze({}); - -// These helpers produce better VM code in JS engines due to their -// explicitness and function inlining. -function isUndef (v) { - return v === undefined || v === null -} - -function isDef (v) { - return v !== undefined && v !== null -} - -function isTrue (v) { - return v === true -} - -function isFalse (v) { - return v === false -} - -/** - * Check if value is primitive. - */ -function isPrimitive (value) { - return ( - typeof value === 'string' || - typeof value === 'number' || - // $flow-disable-line - typeof value === 'symbol' || - typeof value === 'boolean' - ) -} - -/** - * 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' -} - -/** - * Get the raw type string of a value, e.g., [object Object]. - */ -var _toString = Object.prototype.toString; - -function toRawType (value) { - return _toString.call(value).slice(8, -1) -} - -/** - * Strict object type check. Only returns true - * for plain JavaScript objects. - */ -function isPlainObject (obj) { - return _toString.call(obj) === '[object Object]' -} - -function isRegExp (v) { - return _toString.call(v) === '[object RegExp]' -} - -/** - * Check if val is a valid array index. - */ -function isValidArrayIndex (val) { - var n = parseFloat(String(val)); - return n >= 0 && Math.floor(n) === n && isFinite(val) -} - -/** - * 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 an 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); - -/** - * Check if an attribute is a reserved attribute. - */ -var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); - -/** - * 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 an object has the property. - */ -var hasOwnProperty = Object.prototype.hasOwnProperty; -function hasOwn (obj, key) { - return hasOwnProperty.call(obj, key) -} - -/** - * 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 = /\B([A-Z])/g; -var hyphenate = cached(function (str) { - return str.replace(hyphenateRE, '-$1').toLowerCase() -}); - -/** - * Simple bind polyfill for environments that do not support it, - * e.g., PhantomJS 1.x. Technically, we don't need this anymore - * since native bind is now performant enough in most browsers. - * But removing it would mean breaking code that was able to run in - * PhantomJS 1.x, so this must be kept for backward compatibility. - */ - -/* istanbul ignore next */ -function polyfillBind (fn, ctx) { - function boundFn (a) { - var l = arguments.length; - return l - ? l > 1 - ? fn.apply(ctx, arguments) - : fn.call(ctx, a) - : fn.call(ctx) - } - - boundFn._length = fn.length; - return boundFn -} - -function nativeBind (fn, ctx) { - return fn.bind(ctx) -} - -var bind = Function.prototype.bind - ? nativeBind - : polyfillBind; - -/** - * 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 -} - -/** - * 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 -} - -/* eslint-disable no-unused-vars */ - -/** - * Perform no operation. - * Stubbing args to make Flow happy without leaving useless transpiled code - * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). - */ -function noop (a, b, c) {} - -/** - * Always return false. - */ -var no = function (a, b, c) { return false; }; - -/* eslint-enable no-unused-vars */ - -/** - * Return the same value. - */ -var identity = function (_) { return _; }; - -/** - * Generate a string containing static keys 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) { - if (a === b) { return true } - var isObjectA = isObject(a); - var isObjectB = isObject(b); - if (isObjectA && isObjectB) { - try { - var isArrayA = Array.isArray(a); - var isArrayB = Array.isArray(b); - if (isArrayA && isArrayB) { - return a.length === b.length && a.every(function (e, i) { - return looseEqual(e, b[i]) - }) - } else if (a instanceof Date && b instanceof Date) { - return a.getTime() === b.getTime() - } else if (!isArrayA && !isArrayB) { - var keysA = Object.keys(a); - var keysB = Object.keys(b); - return keysA.length === keysB.length && keysA.every(function (key) { - return looseEqual(a[key], b[key]) - }) - } else { - /* istanbul ignore next */ - return false - } - } catch (e) { - /* istanbul ignore next */ - return false - } - } else if (!isObjectA && !isObjectB) { - return String(a) === String(b) - } else { - return false - } -} - -/** - * Return the first index at which a loosely equal value can be - * found in the array (if value is a plain object, the array must - * contain an object of the same shape), or -1 if it is not present. - */ -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.apply(this, arguments); - } - } -} - -var SSR_ATTR = 'data-server-rendered'; - -var ASSET_TYPES = [ - 'component', - 'directive', - 'filter' -]; - -var LIFECYCLE_HOOKS = [ - 'beforeCreate', - 'created', - 'beforeMount', - 'mounted', - 'beforeUpdate', - 'updated', - 'beforeDestroy', - 'destroyed', - 'activated', - 'deactivated', - 'errorCaptured' -]; - -/* */ - - - -var config = ({ - /** - * Option merge strategies (used in core/util/options) - */ - // $flow-disable-line - 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, - - /** - * Warn handler for watcher warns - */ - warnHandler: null, - - /** - * Ignore certain custom elements - */ - ignoredElements: [], - - /** - * Custom user key aliases for v-on - */ - // $flow-disable-line - 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 an attribute is reserved so that it cannot be used as a component - * prop. This is platform-dependent and may be overwritten. - */ - isReservedAttr: 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, - - /** - * Perform updates asynchronously. Intended to be used by Vue Test Utils - * This will significantly reduce performance if set to false. - */ - async: true, - - /** - * Exposed for legacy reasons - */ - _lifecycleHooks: LIFECYCLE_HOOKS -}); - -/* */ - -/** - * 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 - } -} - -/* */ - -// can we use __proto__? -var hasProto = '__proto__' in {}; - -// Browser environment sniffing -var inBrowser = typeof window !== 'undefined'; -var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform; -var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(); -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) || (weexPlatform === 'android'); -var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios'); -var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; - -// Firefox has a "watch" function on Object.prototype... -var nativeWatch = ({}).watch; - -var supportsPassive = false; -if (inBrowser) { - try { - var opts = {}; - Object.defineProperty(opts, 'passive', ({ - get: function get () { - /* istanbul ignore next */ - supportsPassive = true; - } - })); // https://github.com/facebook/flow/issues/285 - window.addEventListener('test-passive', null, opts); - } catch (e) {} -} - -// 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 && !inWeex && typeof global !== 'undefined') { - // detect presence of vue-server-renderer and avoid - // Webpack shimming the process - _isServer = global['process'] && 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 typeof Ctor === 'function' && /native code/.test(Ctor.toString()) -} - -var hasSymbol = - typeof Symbol !== 'undefined' && isNative(Symbol) && - typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); - -var _Set; -/* istanbul ignore if */ // $flow-disable-line -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 = /*@__PURE__*/(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 generateComponentTrace = (noop); // work around flow check -var formatComponentName = (noop); - -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) { - var trace = vm ? generateComponentTrace(vm) : ''; - - if (config.warnHandler) { - config.warnHandler.call(null, msg, vm, trace); - } else if (hasConsole && (!config.silent)) { - console.error(("[Vue warn]: " + msg + trace)); - } - }; - - tip = function (msg, vm) { - if (hasConsole && (!config.silent)) { - console.warn("[Vue tip]: " + msg + ( - vm ? generateComponentTrace(vm) : '' - )); - } - }; - - formatComponentName = function (vm, includeFile) { - if (vm.$root === vm) { - return '' - } - var options = typeof vm === 'function' && vm.cid != null - ? vm.options - : vm._isVue - ? vm.$options || vm.constructor.options - : vm || {}; - var name = options.name || options._componentTag; - var file = options.__file; - if (!name && file) { - var match = file.match(/([^/\\]+)\.vue$/); - name = match && match[1]; - } - - return ( - (name ? ("<" + (classify(name)) + ">") : "") + - (file && includeFile !== false ? (" at " + file) : '') - ) - }; - - var repeat = function (str, n) { - var res = ''; - while (n) { - if (n % 2 === 1) { res += str; } - if (n > 1) { str += str; } - n >>= 1; - } - return res - }; - - generateComponentTrace = function (vm) { - if (vm._isVue && vm.$parent) { - var tree = []; - var currentRecursiveSequence = 0; - while (vm) { - if (tree.length > 0) { - var last = tree[tree.length - 1]; - if (last.constructor === vm.constructor) { - currentRecursiveSequence++; - vm = vm.$parent; - continue - } else if (currentRecursiveSequence > 0) { - tree[tree.length - 1] = [last, currentRecursiveSequence]; - currentRecursiveSequence = 0; - } - } - tree.push(vm); - vm = vm.$parent; - } - return '\n\nfound in\n\n' + tree - .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) - ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)") - : formatComponentName(vm))); }) - .join('\n') - } else { - return ("\n\n(found in " + (formatComponentName(vm)) + ")") - } - }; -} - -/* */ - -var uid = 0; - -/** - * A dep is an observable that can have multiple - * directives subscribing to it. - */ -var Dep = function Dep () { - this.id = uid++; - 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(); - if ("development" !== 'production' && !config.async) { - // subs aren't sorted in scheduler if not running async - // we need to sort them now to make sure they fire in correct - // order - subs.sort(function (a, b) { return a.id - b.id; }); - } - 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) { - targetStack.push(target); - Dep.target = target; -} - -function popTarget () { - targetStack.pop(); - Dep.target = targetStack[targetStack.length - 1]; -} - -/* */ - -var VNode = function VNode ( - tag, - data, - children, - text, - elm, - context, - componentOptions, - asyncFactory -) { - this.tag = tag; - this.data = data; - this.children = children; - this.text = text; - this.elm = elm; - this.ns = undefined; - this.context = context; - this.fnContext = undefined; - this.fnOptions = undefined; - this.fnScopeId = 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; - this.asyncFactory = asyncFactory; - this.asyncMeta = undefined; - this.isAsyncPlaceholder = false; -}; - -var prototypeAccessors = { child: { configurable: true } }; - -// 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 (text) { - if ( text === void 0 ) text = ''; - - var node = new VNode(); - node.text = 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, - // #7975 - // clone children array to avoid mutating original in case of cloning - // a child. - vnode.children && vnode.children.slice(), - vnode.text, - vnode.elm, - vnode.context, - vnode.componentOptions, - vnode.asyncFactory - ); - cloned.ns = vnode.ns; - cloned.isStatic = vnode.isStatic; - cloned.key = vnode.key; - cloned.isComment = vnode.isComment; - cloned.fnContext = vnode.fnContext; - cloned.fnOptions = vnode.fnOptions; - cloned.fnScopeId = vnode.fnScopeId; - cloned.asyncMeta = vnode.asyncMeta; - cloned.isCloned = true; - return cloned -} - -/* - * 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); - -var methodsToPatch = [ - 'push', - 'pop', - 'shift', - 'unshift', - 'splice', - 'sort', - 'reverse' -]; - -/** - * Intercept mutating methods and emit events - */ -methodsToPatch.forEach(function (method) { - // cache original method - var original = arrayProto[method]; - def(arrayMethods, method, function mutator () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var result = original.apply(this, args); - var ob = this.__ob__; - var inserted; - switch (method) { - case 'push': - 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); - -/** - * In some cases we may want to disable observation inside a component's - * update computation. - */ -var shouldObserve = true; - -function toggleObserving (value) { - shouldObserve = value; -} - -/** - * Observer class that is attached to each observed - * object. Once attached, the observer converts the target - * object's property keys into getter/setters that - * collect dependencies and dispatch updates. - */ -var Observer = function Observer (value) { - this.value = value; - this.dep = new Dep(); - this.vmCount = 0; - def(value, '__ob__', this); - if (Array.isArray(value)) { - if (hasProto) { - protoAugment(value, arrayMethods); - } else { - copyAugment(value, arrayMethods, arrayKeys); - } - this.observeArray(value); - } else { - this.walk(value); - } -}; - -/** - * Walk through all properties 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]); - } -}; - -/** - * 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 a 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 a 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) || value instanceof VNode) { - return - } - var ob; - if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { - ob = value.__ob__; - } else if ( - shouldObserve && - !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, - shallow -) { - 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; - if ((!getter || setter) && arguments.length === 2) { - val = obj[key]; - } - - var childOb = !shallow && 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(); - } - // #7981: for accessor properties without setter - if (getter && !setter) { return } - if (setter) { - setter.call(obj, newVal); - } else { - val = newVal; - } - childOb = !shallow && 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 ("development" !== 'production' && - (isUndef(target) || isPrimitive(target)) - ) { - warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target)))); - } - if (Array.isArray(target) && isValidArrayIndex(key)) { - target.length = Math.max(target.length, key); - target.splice(key, 1, val); - return val - } - if (key in target && !(key in Object.prototype)) { - 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 ("development" !== 'production' && - (isUndef(target) || isPrimitive(target)) - ) { - warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target)))); - } - if (Array.isArray(target) && isValidArrayIndex(key)) { - 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 ( - toVal !== fromVal && - isPlainObject(toVal) && - isPlainObject(fromVal) - ) { - mergeData(toVal, fromVal); - } - } - return to -} - -/** - * Data - */ -function mergeDataOrFn ( - parentVal, - childVal, - vm -) { - if (!vm) { - // in a Vue.extend merge, both should be functions - if (!childVal) { - 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( - typeof childVal === 'function' ? childVal.call(this, this) : childVal, - typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal - ) - } - } else { - return function mergedInstanceDataFn () { - // instance merge - var instanceData = typeof childVal === 'function' - ? childVal.call(vm, vm) - : childVal; - var defaultData = typeof parentVal === 'function' - ? parentVal.call(vm, vm) - : parentVal; - if (instanceData) { - return mergeData(instanceData, defaultData) - } else { - return defaultData - } - } - } -} - -strats.data = function ( - parentVal, - childVal, - vm -) { - if (!vm) { - if (childVal && 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 - } - return mergeDataOrFn(parentVal, childVal) - } - - return mergeDataOrFn(parentVal, childVal, vm) -}; - -/** - * Hooks and props are merged as arrays. - */ -function mergeHook ( - parentVal, - childVal -) { - return childVal - ? parentVal - ? parentVal.concat(childVal) - : Array.isArray(childVal) - ? childVal - : [childVal] - : parentVal -} - -LIFECYCLE_HOOKS.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, - vm, - key -) { - var res = Object.create(parentVal || null); - if (childVal) { - "development" !== 'production' && assertObjectType(key, childVal, vm); - return extend(res, childVal) - } else { - return res - } -} - -ASSET_TYPES.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, - vm, - key -) { - // work around Firefox's Object.prototype.watch... - if (parentVal === nativeWatch) { parentVal = undefined; } - if (childVal === nativeWatch) { childVal = undefined; } - /* istanbul ignore if */ - if (!childVal) { return Object.create(parentVal || null) } - if (true) { - assertObjectType(key, childVal, vm); - } - if (!parentVal) { return childVal } - var ret = {}; - extend(ret, parentVal); - for (var key$1 in childVal) { - var parent = ret[key$1]; - var child = childVal[key$1]; - if (parent && !Array.isArray(parent)) { - parent = [parent]; - } - ret[key$1] = parent - ? parent.concat(child) - : Array.isArray(child) ? child : [child]; - } - return ret -}; - -/** - * Other object hashes. - */ -strats.props = -strats.methods = -strats.inject = -strats.computed = function ( - parentVal, - childVal, - vm, - key -) { - if (childVal && "development" !== 'production') { - assertObjectType(key, childVal, vm); - } - if (!parentVal) { return childVal } - var ret = Object.create(null); - extend(ret, parentVal); - if (childVal) { extend(ret, childVal); } - return ret -}; -strats.provide = mergeDataOrFn; - -/** - * Default strategy. - */ -var defaultStrat = function (parentVal, childVal) { - return childVal === undefined - ? parentVal - : childVal -}; - -/** - * Validate component names - */ -function checkComponents (options) { - for (var key in options.components) { - validateComponentName(key); - } -} - -function validateComponentName (name) { - if (!/^[a-zA-Z][\w-]*$/.test(name)) { - warn( - 'Invalid component name: "' + name + '". Component names ' + - 'can only contain alphanumeric characters and the hyphen, ' + - 'and must start with a letter.' - ); - } - if (isBuiltInTag(name) || config.isReservedTag(name)) { - warn( - 'Do not use built-in or reserved HTML elements as component ' + - 'id: ' + name - ); - } -} - -/** - * Ensure all props option syntax are normalized into the - * Object-based format. - */ -function normalizeProps (options, vm) { - 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 }; - } - } else if (true) { - warn( - "Invalid value for option \"props\": expected an Array or an Object, " + - "but got " + (toRawType(props)) + ".", - vm - ); - } - options.props = res; -} - -/** - * Normalize all injections into Object-based format - */ -function normalizeInject (options, vm) { - var inject = options.inject; - if (!inject) { return } - var normalized = options.inject = {}; - if (Array.isArray(inject)) { - for (var i = 0; i < inject.length; i++) { - normalized[inject[i]] = { from: inject[i] }; - } - } else if (isPlainObject(inject)) { - for (var key in inject) { - var val = inject[key]; - normalized[key] = isPlainObject(val) - ? extend({ from: key }, val) - : { from: val }; - } - } else if (true) { - warn( - "Invalid value for option \"inject\": expected an Array or an Object, " + - "but got " + (toRawType(inject)) + ".", - vm - ); - } -} - -/** - * 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 }; - } - } - } -} - -function assertObjectType (name, value, vm) { - if (!isPlainObject(value)) { - warn( - "Invalid value for option \"" + name + "\": expected an Object, " + - "but got " + (toRawType(value)) + ".", - vm - ); - } -} - -/** - * 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); - } - - if (typeof child === 'function') { - child = child.options; - } - - normalizeProps(child, vm); - normalizeInject(child, vm); - normalizeDirectives(child); - - // Apply extends and mixins on the child options, - // but only if it is a raw options object that isn't - // the result of another mergeOptions call. - // Only merged options has the _base property. - if (!child._base) { - if (child.extends) { - parent = mergeOptions(parent, child.extends, vm); - } - if (child.mixins) { - for (var i = 0, l = child.mixins.length; i < l; i++) { - parent = mergeOptions(parent, child.mixins[i], 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]; - // boolean casting - var booleanIndex = getTypeIndex(Boolean, prop.type); - if (booleanIndex > -1) { - if (absent && !hasOwn(prop, 'default')) { - value = false; - } else if (value === '' || value === hyphenate(key)) { - // only cast empty string / same name to boolean if - // boolean has higher priority - var stringIndex = getTypeIndex(String, prop.type); - if (stringIndex < 0 || booleanIndex < stringIndex) { - 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 prevShouldObserve = shouldObserve; - toggleObserving(true); - observe(value); - toggleObserving(prevShouldObserve); - } - 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( - getInvalidTypeMessage(name, value, expectedTypes), - vm - ); - return - } - var validator = prop.validator; - if (validator) { - if (!validator(value)) { - warn( - 'Invalid prop: custom validator check failed for prop "' + name + '".', - vm - ); - } - } -} - -var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/; - -function assertType (value, type) { - var valid; - var expectedType = getType(type); - if (simpleCheckRE.test(expectedType)) { - var t = typeof value; - valid = t === expectedType.toLowerCase(); - // for primitive wrapper objects - if (!valid && t === 'object') { - valid = value instanceof type; - } - } 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 isSameType (a, b) { - return getType(a) === getType(b) -} - -function getTypeIndex (type, expectedTypes) { - if (!Array.isArray(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1 - } - for (var i = 0, len = expectedTypes.length; i < len; i++) { - if (isSameType(expectedTypes[i], type)) { - return i - } - } - return -1 -} - -function getInvalidTypeMessage (name, value, expectedTypes) { - var message = "Invalid prop: type check failed for prop \"" + name + "\"." + - " Expected " + (expectedTypes.map(capitalize).join(', ')); - var expectedType = expectedTypes[0]; - var receivedType = toRawType(value); - var expectedValue = styleValue(value, expectedType); - var receivedValue = styleValue(value, receivedType); - // check if we need to specify expected value - if (expectedTypes.length === 1 && - isExplicable(expectedType) && - !isBoolean(expectedType, receivedType)) { - message += " with value " + expectedValue; - } - message += ", got " + receivedType + " "; - // check if we need to specify received value - if (isExplicable(receivedType)) { - message += "with value " + receivedValue + "."; - } - return message -} - -function styleValue (value, type) { - if (type === 'String') { - return ("\"" + value + "\"") - } else if (type === 'Number') { - return ("" + (Number(value))) - } else { - return ("" + value) - } -} - -function isExplicable (value) { - var explicitTypes = ['string', 'number', 'boolean']; - return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; }) -} - -function isBoolean () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }) -} - -/* */ - -function handleError (err, vm, info) { - if (vm) { - var cur = vm; - while ((cur = cur.$parent)) { - var hooks = cur.$options.errorCaptured; - if (hooks) { - for (var i = 0; i < hooks.length; i++) { - try { - var capture = hooks[i].call(cur, err, vm, info) === false; - if (capture) { return } - } catch (e) { - globalHandleError(e, cur, 'errorCaptured hook'); - } - } - } - } - } - globalHandleError(err, vm, info); -} - -function globalHandleError (err, vm, info) { - if (config.errorHandler) { - try { - return config.errorHandler.call(null, err, vm, info) - } catch (e) { - logError(e, null, 'config.errorHandler'); - } - } - logError(err, vm, info); -} - -function logError (err, vm, info) { - if (true) { - warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); - } - /* istanbul ignore else */ - if ((inBrowser || inWeex) && typeof console !== 'undefined') { - console.error(err); - } else { - throw err - } -} - -/* */ - -var callbacks = []; -var pending = false; - -function flushCallbacks () { - pending = false; - var copies = callbacks.slice(0); - callbacks.length = 0; - for (var i = 0; i < copies.length; i++) { - copies[i](); - } -} - -// Here we have async deferring wrappers using both microtasks and (macro) tasks. -// In < 2.4 we used microtasks everywhere, but there are some scenarios where -// microtasks have too high a priority and fire in between supposedly -// sequential events (e.g. #4521, #6690) or even between bubbling of the same -// event (#6566). However, using (macro) tasks everywhere also has subtle problems -// when state is changed right before repaint (e.g. #6813, out-in transitions). -// Here we use microtask by default, but expose a way to force (macro) task when -// needed (e.g. in event handlers attached by v-on). -var microTimerFunc; -var macroTimerFunc; -var useMacroTask = false; - -// Determine (macro) task defer implementation. -// Technically setImmediate should be the ideal choice, but it's only available -// in IE. The only polyfill that consistently queues the callback after all DOM -// events triggered in the same loop is by using MessageChannel. -/* istanbul ignore if */ -if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { - macroTimerFunc = function () { - setImmediate(flushCallbacks); - }; -} else if (typeof MessageChannel !== 'undefined' && ( - isNative(MessageChannel) || - // PhantomJS - MessageChannel.toString() === '[object MessageChannelConstructor]' -)) { - var channel = new MessageChannel(); - var port = channel.port2; - channel.port1.onmessage = flushCallbacks; - macroTimerFunc = function () { - port.postMessage(1); - }; -} else { - /* istanbul ignore next */ - macroTimerFunc = function () { - setTimeout(flushCallbacks, 0); - }; -} - -// Determine microtask defer implementation. -/* istanbul ignore next, $flow-disable-line */ -if (typeof Promise !== 'undefined' && isNative(Promise)) { - var p = Promise.resolve(); - microTimerFunc = function () { - p.then(flushCallbacks); - // 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 { - // fallback to macro - microTimerFunc = macroTimerFunc; -} - -/** - * Wrap a function so that if any code inside triggers state change, - * the changes are queued using a (macro) task instead of a microtask. - */ -function withMacroTask (fn) { - return fn._withTask || (fn._withTask = function () { - useMacroTask = true; - try { - return fn.apply(null, arguments) - } finally { - useMacroTask = false; - } - }) -} - -function nextTick (cb, ctx) { - var _resolve; - callbacks.push(function () { - if (cb) { - try { - cb.call(ctx); - } catch (e) { - handleError(e, ctx, 'nextTick'); - } - } else if (_resolve) { - _resolve(ctx); - } - }); - if (!pending) { - pending = true; - if (useMacroTask) { - macroTimerFunc(); - } else { - microTimerFunc(); - } - } - // $flow-disable-line - if (!cb && typeof Promise !== 'undefined') { - return new Promise(function (resolve) { - _resolve = resolve; - }) - } -} - -/* */ - -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); - }; - } -} - -/* 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 that this property is reactive, ' + - 'either in the data option, or for class-based components, by ' + - 'initializing the property. ' + - 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', - target - ); - }; - - var warnReservedPrefix = function (target, key) { - warn( - "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " + - 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + - 'prevent conflicts with Vue internals' + - 'See: https://vuejs.org/v2/api/#data', - target - ); - }; - - var hasProxy = - typeof Proxy !== 'undefined' && isNative(Proxy); - - if (hasProxy) { - var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); - 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) || - (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data)); - if (!has && !isAllowed) { - if (key in target.$data) { warnReservedPrefix(target, key); } - else { warnNonPresent(target, key); } - } - return has || !isAllowed - } - }; - - var getHandler = { - get: function get (target, key) { - if (typeof key === 'string' && !(key in target)) { - if (key in target.$data) { warnReservedPrefix(target, key); } - else { 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 seenObjects = new _Set(); - -/** - * Recursively traverse an object to evoke all converted - * getters, so that every nested property inside the object - * is collected as a "deep" dependency. - */ -function traverse (val) { - _traverse(val, seenObjects); - seenObjects.clear(); -} - -function _traverse (val, seen) { - var i, keys; - var isA = Array.isArray(val); - if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) { - return - } - if (val.__ob__) { - var depId = val.__ob__.dep.id; - if (seen.has(depId)) { - return - } - seen.add(depId); - } - if (isA) { - i = val.length; - while (i--) { _traverse(val[i], seen); } - } else { - keys = Object.keys(val); - i = keys.length; - while (i--) { _traverse(val[keys[i]], seen); } - } -} - -/* */ - -var normalizeEvent = cached(function (name) { - var passive = name.charAt(0) === '&'; - name = passive ? name.slice(1) : 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, - passive: passive - } -}); - -function createFnInvoker (fns) { - function invoker () { - var arguments$1 = arguments; - - var fns = invoker.fns; - if (Array.isArray(fns)) { - var cloned = fns.slice(); - for (var i = 0; i < cloned.length; i++) { - cloned[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, - createOnceHandler, - vm -) { - var name, def$$1, cur, old, event; - for (name in on) { - def$$1 = cur = on[name]; - old = oldOn[name]; - event = normalizeEvent(name); - if (isUndef(cur)) { - "development" !== 'production' && warn( - "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), - vm - ); - } else if (isUndef(old)) { - if (isUndef(cur.fns)) { - cur = on[name] = createFnInvoker(cur); - } - if (isTrue(event.once)) { - cur = on[name] = createOnceHandler(event.name, cur, event.capture); - } - add(event.name, cur, event.capture, event.passive, event.params); - } else if (cur !== old) { - old.fns = cur; - on[name] = old; - } - } - for (name in oldOn) { - if (isUndef(on[name])) { - event = normalizeEvent(name); - remove$$1(event.name, oldOn[name], event.capture); - } - } -} - -/* */ - -function mergeVNodeHook (def, hookKey, hook) { - if (def instanceof VNode) { - def = def.data.hook || (def.data.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 (isUndef(oldHook)) { - // no existing hook - invoker = createFnInvoker([wrappedHook]); - } else { - /* istanbul ignore if */ - if (isDef(oldHook.fns) && isTrue(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; -} - -/* */ - -function extractPropsFromVNodeData ( - data, - Ctor, - tag -) { - // we are only extracting raw values here. - // validation and default values are handled in the child - // component itself. - var propOptions = Ctor.options.props; - if (isUndef(propOptions)) { - return - } - var res = {}; - var attrs = data.attrs; - var props = data.props; - if (isDef(attrs) || isDef(props)) { - for (var key in propOptions) { - var altKey = hyphenate(key); - if (true) { - var keyInLowerCase = key.toLowerCase(); - if ( - key !== keyInLowerCase && - attrs && hasOwn(attrs, keyInLowerCase) - ) { - tip( - "Prop \"" + keyInLowerCase + "\" is passed to component " + - (formatComponentName(tag || Ctor)) + ", but the declared prop name is" + - " \"" + key + "\". " + - "Note that HTML attributes are case-insensitive and camelCased " + - "props need to use their kebab-case equivalents when using in-DOM " + - "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"." - ); - } - } - checkProp(res, props, key, altKey, true) || - checkProp(res, attrs, key, altKey, false); - } - } - return res -} - -function checkProp ( - res, - hash, - key, - altKey, - preserve -) { - if (isDef(hash)) { - if (hasOwn(hash, key)) { - res[key] = hash[key]; - if (!preserve) { - delete hash[key]; - } - return true - } else if (hasOwn(hash, altKey)) { - res[key] = hash[altKey]; - if (!preserve) { - delete hash[altKey]; - } - return true - } - } - return false -} - -/* */ - -// 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.