diff --git a/dist/clay-kiln-edit.css b/dist/clay-kiln-edit.css new file mode 100644 index 000000000..617768e71 --- /dev/null +++ b/dist/clay-kiln-edit.css @@ -0,0 +1,10528 @@ + +.component-selector-wrapper { + position: relative; +} +.mini-selector { + z-index: 1000000010; + opacity: 1; + pointer-events: none; + position: absolute; +} +.mini-selector.selector-left, .mini-selector.selector-right { + height: 100%; + min-height: 20px; + top: 0; +} +.mini-selector.selector-top, .mini-selector.selector-bottom { + left: 0; + min-width: 20px; + width: 100%; +} +.mini-selector.selector-left { + border-right: 3px solid #607d8b; + right: calc(100% + 5px); +} +.mini-selector.selector-right { + border-left: 3px solid #607d8b; + left: calc(100% + 5px); +} +.mini-selector.selector-top { + border-bottom: 3px solid #607d8b; + bottom: calc(100% + 5px); +} +.mini-selector.selector-bottom { + border-top: 3px solid #607d8b; + top: calc(100% + 5px); +} +.mini-selector.selector-hidden { + display: none; +} +.selector-fade-enter-active, .selector-fade-leave-active { + -webkit-transition: opacity 150ms linear; + transition: opacity 150ms linear; +} +.selector-fade-enter, .selector-fade-leave-to { + opacity: 0; +} +.quick-bar { + z-index: 1000000000; + background: rgba(255, 255, 255, 0.95); + border: 1px solid #607d8b; + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + pointer-events: all; + position: absolute; +} +.quick-bar:after { + content: ''; + height: 100%; + position: absolute; + width: 100%; +} +.quick-bar.selector-left, .quick-bar.selector-right { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: auto; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.quick-bar.selector-top, .quick-bar.selector-bottom { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + width: auto; +} +.quick-bar.selector-left { + border-right: none; + right: 0; +} +.quick-bar.selector-left:after { + border-right: 1px solid #607d8b; + height: calc(100% + 2px); + right: -1px; + top: 0; +} +.quick-bar.selector-right { + border-left: none; + left: 0; +} +.quick-bar.selector-right:after { + border-left: 1px solid #607d8b; + height: calc(100% + 2px); + left: -1px; + top: 0; +} +.quick-bar.selector-top { + border-bottom: none; + bottom: 0; +} +.quick-bar.selector-top:after { + border-bottom: 1px solid #607d8b; + bottom: -1px; + left: 0; + width: calc(100% + 2px); +} +.quick-bar.selector-bottom { + border-top: none; + top: 0; +} +.quick-bar.selector-bottom:after { + border-top: 1px solid #607d8b; + left: 0; + top: -1px; + width: calc(100% + 2px); +} +.quick-bar .quick-bar-button { + border-radius: 0; + -webkit-box-flex: 0; + -webkit-flex: 0 0 46px; + -ms-flex: 0 0 46px; + flex: 0 0 46px; + height: 46px; + width: 46px; + z-index: 1; +} +.selector-left .quick-bar .quick-bar-button.quick-bar-add, + .selector-left .quick-bar .quick-bar-button.quick-bar-replace, + .selector-left .quick-bar .quick-bar-button.quick-bar-dupe, + .selector-right .quick-bar .quick-bar-button.quick-bar-add, + .selector-right .quick-bar .quick-bar-button.quick-bar-replace, + .selector-right .quick-bar .quick-bar-button.quick-bar-dupe { + border-top: 1px solid #607d8b; +} +.selector-top .quick-bar .quick-bar-button.quick-bar-add, + .selector-top .quick-bar .quick-bar-button.quick-bar-replace, + .selector-top .quick-bar .quick-bar-button.quick-bar-dupe, + .selector-bottom .quick-bar .quick-bar-button.quick-bar-add, + .selector-bottom .quick-bar .quick-bar-button.quick-bar-replace, + .selector-bottom .quick-bar .quick-bar-button.quick-bar-dupe { + border-left: 1px solid #607d8b; +} +.mini-selector-inactive { + z-index: 1000000010; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + background: #212121; + border-radius: 2px; + color: #ffffff; + font-size: 13px; + left: 50%; + line-height: 1.2; + max-width: 150%; + opacity: .8; + padding: 4px 8px; + pointer-events: none; + position: absolute; + top: 20px; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); +} + +.ui-icon-button { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background: none; + border-radius: 50%; + border: none; + cursor: pointer; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + outline: none; + overflow: hidden; + padding: 0; + position: relative; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); +} +.ui-icon-button, + .ui-icon-button .ui-icon-button__focus-ring { + height: 2.25rem; + width: 2.25rem; +} +body[modality="keyboard"] .ui-icon-button:focus .ui-icon-button__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-icon-button::-moz-focus-inner { + border: 0; +} +.ui-icon-button.is-loading .ui-icon-button__icon { + opacity: 0; +} +.ui-icon-button.is-disabled { + cursor: default; + opacity: 0.6; +} +.ui-icon-button__icon { + height: initial; + opacity: 1; + position: relative; + -webkit-transition-delay: 0.1s; + transition-delay: 0.1s; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; + width: 100%; + z-index: 1; +} +.ui-icon-button__focus-ring { + border-radius: 50%; + height: 2.25rem; + left: 0; + opacity: 0; + position: absolute; + top: 0; + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease; + width: 2.25rem; +} +.ui-progress-circular.ui-icon-button__progress { + left: 50%; + position: absolute; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +.ui-icon-button--size-small, +.ui-icon-button--size-small .ui-icon-button__focus-ring { + height: 2rem; + width: 2rem; +} +.ui-icon-button--size-small .ui-icon { + font-size: 1.125rem; +} +.ui-icon-button--size-large, +.ui-icon-button--size-large .ui-icon-button__focus-ring { + height: 3rem; + width: 3rem; +} +.ui-icon-button--color-black, +.ui-icon-button--color-white { + background-color: transparent; +} +.ui-icon-button--color-black:hover:not(.is-disabled), .ui-icon-button--color-black.has-dropdown-open, + .ui-icon-button--color-white:hover:not(.is-disabled), + .ui-icon-button--color-white.has-dropdown-open { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-icon-button--color-black .ui-icon-button__focus-ring, + .ui-icon-button--color-white .ui-icon-button__focus-ring { + background-color: rgba(0, 0, 0, 0.15); +} +.ui-icon-button--color-black { + color: rgba(0, 0, 0, 0.54); +} +.ui-icon-button--color-black .ui-icon-button__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-icon-button--color-white { + color: rgba(0, 0, 0, 0.54); +} +.ui-icon-button--color-white .ui-icon-button__icon { + color: white; +} +.ui-icon-button--type-primary.ui-icon-button--color-default { + background-color: #eeeeee; +} +.ui-icon-button--type-primary.ui-icon-button--color-default:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-default.has-dropdown-open { + background-color: #dbdbdb; +} +.ui-icon-button--type-primary.ui-icon-button--color-default .ui-icon-button__focus-ring { + background-color: #c8c8c8; +} +.ui-icon-button--type-primary.ui-icon-button--color-default .ui-ripple-ink__ink { + opacity: 0.2; +} +.ui-icon-button--type-primary.ui-icon-button--color-default .ui-icon-button__icon { + color: rgba(0, 0, 0, 0.87); +} +.ui-icon-button--type-primary.ui-icon-button--color-primary, .ui-icon-button--type-primary.ui-icon-button--color-accent, .ui-icon-button--type-primary.ui-icon-button--color-green, .ui-icon-button--type-primary.ui-icon-button--color-orange, .ui-icon-button--type-primary.ui-icon-button--color-red { + color: white; +} +.ui-icon-button--type-primary.ui-icon-button--color-primary .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-accent .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-green .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-orange .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-red .ui-ripple-ink__ink { + opacity: 0.4; +} +.ui-icon-button--type-primary.ui-icon-button--color-primary { + background-color: #607d8b; +} +.ui-icon-button--type-primary.ui-icon-button--color-primary:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-primary.has-dropdown-open { + background-color: #4b626d; +} +.ui-icon-button--type-primary.ui-icon-button--color-primary .ui-icon-button__focus-ring { + background-color: #41545e; +} +.ui-icon-button--type-primary.ui-icon-button--color-accent { + background-color: #1976d2; +} +.ui-icon-button--type-primary.ui-icon-button--color-accent:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-accent.has-dropdown-open { + background-color: #145ca4; +} +.ui-icon-button--type-primary.ui-icon-button--color-accent .ui-icon-button__focus-ring { + background-color: #11508e; +} +.ui-icon-button--type-primary.ui-icon-button--color-green { + background-color: #4caf50; +} +.ui-icon-button--type-primary.ui-icon-button--color-green:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-green.has-dropdown-open { + background-color: #3d8b40; +} +.ui-icon-button--type-primary.ui-icon-button--color-green .ui-icon-button__focus-ring { + background-color: #357a38; +} +.ui-icon-button--type-primary.ui-icon-button--color-orange { + background-color: #ff9800; +} +.ui-icon-button--type-primary.ui-icon-button--color-orange:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-orange.has-dropdown-open { + background-color: #cc7a00; +} +.ui-icon-button--type-primary.ui-icon-button--color-orange .ui-icon-button__focus-ring { + background-color: #b36a00; +} +.ui-icon-button--type-primary.ui-icon-button--color-red { + background-color: #f44336; +} +.ui-icon-button--type-primary.ui-icon-button--color-red:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-red.has-dropdown-open { + background-color: #ea1c0d; +} +.ui-icon-button--type-primary.ui-icon-button--color-red .ui-icon-button__focus-ring { + background-color: #d2190b; +} +.ui-icon-button--type-secondary.ui-icon-button--color-default { + color: rgba(0, 0, 0, 0.87); +} +.ui-icon-button--type-secondary.ui-icon-button--color-default .ui-icon-button__icon { + color: rgba(0, 0, 0, 0.87); +} +.ui-icon-button--type-secondary.ui-icon-button--color-default:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-default.has-dropdown-open, .ui-icon-button--type-secondary.ui-icon-button--color-primary:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-primary.has-dropdown-open, .ui-icon-button--type-secondary.ui-icon-button--color-accent:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-accent.has-dropdown-open, .ui-icon-button--type-secondary.ui-icon-button--color-green:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-green.has-dropdown-open, .ui-icon-button--type-secondary.ui-icon-button--color-orange:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-orange.has-dropdown-open, .ui-icon-button--type-secondary.ui-icon-button--color-red:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-red.has-dropdown-open { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-icon-button--type-secondary.ui-icon-button--color-default .ui-icon-button__focus-ring, .ui-icon-button--type-secondary.ui-icon-button--color-primary .ui-icon-button__focus-ring, .ui-icon-button--type-secondary.ui-icon-button--color-accent .ui-icon-button__focus-ring, .ui-icon-button--type-secondary.ui-icon-button--color-green .ui-icon-button__focus-ring, .ui-icon-button--type-secondary.ui-icon-button--color-orange .ui-icon-button__focus-ring, .ui-icon-button--type-secondary.ui-icon-button--color-red .ui-icon-button__focus-ring { + background-color: rgba(0, 0, 0, 0.15); +} +.ui-icon-button--type-secondary.ui-icon-button--color-primary { + color: #607d8b; +} +.ui-icon-button--type-secondary.ui-icon-button--color-primary .ui-icon-button__icon { + color: #607d8b; +} +.ui-icon-button--type-secondary.ui-icon-button--color-accent { + color: #1976d2; +} +.ui-icon-button--type-secondary.ui-icon-button--color-accent .ui-icon-button__icon { + color: #1976d2; +} +.ui-icon-button--type-secondary.ui-icon-button--color-green { + color: #43a047; +} +.ui-icon-button--type-secondary.ui-icon-button--color-green .ui-icon-button__icon { + color: #43a047; +} +.ui-icon-button--type-secondary.ui-icon-button--color-orange { + color: #ff9800; +} +.ui-icon-button--type-secondary.ui-icon-button--color-orange .ui-icon-button__icon { + color: #ff9800; +} +.ui-icon-button--type-secondary.ui-icon-button--color-red { + color: #f44336; +} +.ui-icon-button--type-secondary.ui-icon-button--color-red .ui-icon-button__icon { + color: #f44336; +} + +.ui-icon { + cursor: inherit; + display: inline-block; + font-size: 1.5rem; + height: 1em; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + width: 1em; +} +.ui-icon svg { + display: block; + fill: currentColor; + height: 1em; + margin: 0; + padding: 0; + width: 1em; +} + +.ui-popover { + background-color: white; + outline: none; +} +.ui-popover.is-raised { + -webkit-box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); +} +.ui-popover .ui-menu { + border: none; +} +.ui-popover__focus-redirector { + opacity: 0; + position: absolute; +} +.drop-element { + display: none; + max-height: 100%; + max-width: 100%; + opacity: 0; + position: absolute; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; + z-index: 1000000040; +} +.drop-element, .drop-element:after, .drop-element:before, + .drop-element *, + .drop-element *:after, + .drop-element *:before { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.drop-element.drop-open { + display: block; +} +.drop-element.drop-after-open { + opacity: 1; +} + +.ui-progress-circular { + position: relative; +} +.ui-progress-circular__determinate { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.ui-progress-circular__determinate-path { + stroke-dashoffset: 0; + -webkit-transition: stroke-dashoffset 0.3s; + transition: stroke-dashoffset 0.3s; +} +.ui-progress-circular__indeterminate { + -webkit-animation: ui-progress-circular-rotate 0.7s linear infinite; + animation: ui-progress-circular-rotate 0.7s linear infinite; + bottom: 0; + height: 100%; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + -webkit-transform-origin: center center; + -ms-transform-origin: center center; + transform-origin: center center; + width: 100%; +} +.ui-progress-circular__indeterminate-path { + stroke-dasharray: 89,200; + stroke-dashoffset: -35px; + stroke-linecap: round; +} +.ui-progress-circular--color-multi-color .ui-progress-circular__determinate-path { + stroke: #607d8b; +} +.ui-progress-circular--color-multi-color .ui-progress-circular__indeterminate-path { + -webkit-animation: ui-progress-circular-color 6s ease-in-out infinite; + animation: ui-progress-circular-color 6s ease-in-out infinite; +} +.ui-progress-circular--color-primary .ui-progress-circular__determinate-path, +.ui-progress-circular--color-primary .ui-progress-circular__indeterminate-path { + stroke: #607d8b; +} +.ui-progress-circular--color-accent .ui-progress-circular__determinate-path, +.ui-progress-circular--color-accent .ui-progress-circular__indeterminate-path { + stroke: #1976d2; +} +.ui-progress-circular--color-black .ui-progress-circular__determinate-path, +.ui-progress-circular--color-black .ui-progress-circular__indeterminate-path { + stroke: #212121; +} +.ui-progress-circular--color-white .ui-progress-circular__determinate-path, +.ui-progress-circular--color-white .ui-progress-circular__indeterminate-path { + stroke: white; +} +.ui-progress-circular--transition-fade-enter-active, +.ui-progress-circular--transition-fade-leave-active { + -webkit-transition: opacity 0.3s ease, -webkit-transform 0.3s ease; + transition: opacity 0.3s ease, -webkit-transform 0.3s ease; + transition: opacity 0.3s ease, transform 0.3s ease; + transition: opacity 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease; +} +.ui-progress-circular--transition-fade-enter, +.ui-progress-circular--transition-fade-leave-active { + opacity: 0; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); +} +@-webkit-keyframes ui-progress-circular-rotate { +100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); +} +} +@keyframes ui-progress-circular-rotate { +100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); +} +} +@-webkit-keyframes ui-progress-circular-color { +0%, + 100% { + stroke: #f44336; +} +40% { + stroke: #2196f3; +} +66% { + stroke: #4caf50; +} +80%, + 90% { + stroke: #ff9800; +} +} +@keyframes ui-progress-circular-color { +0%, + 100% { + stroke: #f44336; +} +40% { + stroke: #2196f3; +} +66% { + stroke: #4caf50; +} +80%, + 90% { + stroke: #ff9800; +} +} + +.ui-ripple-ink { + border-radius: inherit; + bottom: 0; + display: block; + left: 0; + overflow: hidden; + position: absolute; + right: 0; + top: 0; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); +} +.ui-ripple-ink__ink { + background-clip: padding-box; + background-color: currentColor; + border-radius: 50%; + height: 0; + opacity: 0.2; + pointer-events: none; + position: absolute; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: opacity 0.6s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 0.6s ease-out, -webkit-transform 0.6s ease-out; + transition: transform 0.6s ease-out, opacity 0.6s ease-out; + transition: transform 0.6s ease-out, opacity 0.6s ease-out, -webkit-transform 0.6s ease-out; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 0; +} +.ui-ripple-ink__ink.is-held { + opacity: 0.4; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-ripple-ink__ink.is-done { + opacity: 0 !important; +} + +.ui-tooltip { + line-height: 1; +} +.tooltip-element, +.tooltip-element:after, +.tooltip-element:before, +.tooltip-element *, +.tooltip-element *:after, +.tooltip-element *:before { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.tooltip-element { + display: none; + opacity: 0; + position: absolute; + -webkit-transition: opacity 0.2s; + transition: opacity 0.2s; +} +.tooltip-element.tooltip-open { + display: block; +} +.tooltip-element.tooltip-after-open { + opacity: 1; +} +.tooltip-element.ui-tooltip--theme-default { + max-height: 100%; + max-width: 100%; + pointer-events: none; + z-index: 1000000050; +} +.tooltip-element.ui-tooltip--theme-default .tooltip-content { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background: #212121; + border-radius: 0.125rem; + color: white; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: inherit; + font-size: 0.8125rem; + height: 1.625rem; + line-height: 1; + opacity: 0.9; + padding: 0 0.5rem; + position: relative; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-bottom.tooltip-element-attached-center .tooltip-content { + margin-bottom: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-top.tooltip-element-attached-center .tooltip-content { + margin-top: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-right.tooltip-element-attached-middle .tooltip-content { + margin-right: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-left.tooltip-element-attached-middle .tooltip-content { + margin-left: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-top.tooltip-element-attached-left.tooltip-target-attached-bottom .tooltip-content { + margin-top: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-top.tooltip-element-attached-right.tooltip-target-attached-bottom .tooltip-content { + margin-top: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-bottom.tooltip-element-attached-left.tooltip-target-attached-top .tooltip-content { + margin-bottom: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-bottom.tooltip-element-attached-right.tooltip-target-attached-top .tooltip-content { + margin-bottom: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-top.tooltip-element-attached-right.tooltip-target-attached-left .tooltip-content { + margin-right: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-top.tooltip-element-attached-left.tooltip-target-attached-right .tooltip-content { + margin-left: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-bottom.tooltip-element-attached-right.tooltip-target-attached-left .tooltip-content { + margin-right: 0.25rem; +} +.tooltip-element.ui-tooltip--theme-default.tooltip-element-attached-bottom.tooltip-element-attached-left.tooltip-target-attached-right .tooltip-content { + margin-left: 0.25rem; +} + +.component-selector-wrapper *[data-editable] { + cursor: pointer; +} +.component-selector-wrapper p[data-editable], +.component-selector-wrapper blockquote[data-editable] { + cursor: text; +} +.component-selector-wrapper *[data-editable].kiln-internals { + cursor: default; +} +.kiln-collapsed > *:not(.kiln-placeholder) { + display: none; +} +.kiln-placeholder { + -webkit-transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.kiln-placeholder .placeholder-label, + .kiln-placeholder .placeholder-icon, + .kiln-placeholder .placeholder-text { + -webkit-transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.kiln-permanent-placeholder, +.kiln-placeholder, +.kiln-inactive-placeholder { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 100%; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding: 16px 24px; + position: relative; + width: 100%; +} +.kiln-permanent-placeholder .placeholder-add-component, + .kiln-placeholder .placeholder-add-component, + .kiln-inactive-placeholder .placeholder-add-component { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.kiln-permanent-placeholder .placeholder-label, + .kiln-placeholder .placeholder-label, + .kiln-inactive-placeholder .placeholder-label { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.kiln-permanent-placeholder .placeholder-label-collapsible, + .kiln-placeholder .placeholder-label-collapsible, + .kiln-inactive-placeholder .placeholder-label-collapsible { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} +.kiln-permanent-placeholder .placeholder-icon, + .kiln-placeholder .placeholder-icon, + .kiln-inactive-placeholder .placeholder-icon { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.kiln-permanent-placeholder .placeholder-text, + .kiln-placeholder .placeholder-text, + .kiln-inactive-placeholder .placeholder-text { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + line-height: 18px; + text-align: center; +} +.collapsible-component-list > .kiln-placeholder { + height: 68px !important; + margin: 0 0 20px; + min-height: 68px !important; +} +.kiln-permanent-placeholder { + background-color: #eceff1; + cursor: pointer; +} +.kiln-permanent-placeholder .placeholder-label { + color: #607d8b; +} +.kiln-permanent-placeholder .placeholder-icon { + color: #607d8b; +} +.kiln-permanent-placeholder .placeholder-text { + color: #607d8b; +} +.kiln-inactive-placeholder { + background-color: #fafafa; + cursor: not-allowed; +} +.kiln-inactive-placeholder .placeholder-label { + color: #9e9e9e; +} +.kiln-inactive-placeholder .placeholder-icon { + color: #9e9e9e; +} +.kiln-inactive-placeholder .placeholder-text { + color: #9e9e9e; +} +.kiln-placeholder { + background-color: #e3f2fd; +} +.kiln-placeholder .placeholder-label { + color: #1976d2; +} +.kiln-placeholder .placeholder-icon { + color: #1976d2; +} +.kiln-placeholder .placeholder-text { + color: #1976d2; +} +.kiln-placeholder.kiln-error-placeholder { + background-color: #ffebee; +} +.kiln-placeholder.kiln-error-placeholder .placeholder-label { + color: #f44336; +} +.kiln-placeholder.kiln-error-placeholder .placeholder-icon { + color: #f44336; +} +.kiln-placeholder.kiln-error-placeholder .placeholder-text { + color: #f44336; +} + +.ui-button { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background: none; + border-radius: 0.125rem; + border: none; + cursor: pointer; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.875rem; + font-weight: 500; + height: 2.25rem; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + letter-spacing: 0.02em; + line-height: 1; + min-width: 5rem; + outline: none; + overflow: hidden; + padding: 0; + padding-left: 1rem; + padding-right: 1rem; + position: relative; + text-transform: uppercase; + -ms-touch-action: manipulation; + touch-action: manipulation; +} +.ui-button::-moz-focus-inner { + border: 0; +} +.ui-button.has-focus-ring:focus .ui-button__focus-ring, + body[modality="keyboard"] .ui-button:focus .ui-button__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-button.is-raised { + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + -webkit-transition: -webkit-box-shadow 0.1s; + transition: -webkit-box-shadow 0.1s; + transition: box-shadow 0.1s; + transition: box-shadow 0.1s, -webkit-box-shadow 0.1s; +} +.ui-button.is-raised.has-focus-ring:focus, + body[modality="keyboard"] .ui-button.is-raised:focus { + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.22), 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.22), 0 3px 6px rgba(0, 0, 0, 0.3); +} +.ui-button.is-loading .ui-button__content { + opacity: 0; +} +.ui-button.is-disabled { + cursor: default; + opacity: 0.6; +} +.ui-button__content { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + position: relative; + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + z-index: 1; +} +.ui-button__icon { + margin-left: -0.25rem; + margin-right: 0.375rem; + margin-top: -0.125rem; +} +.ui-button__dropdown-icon { + font-size: 1.125rem; + margin-left: 0.125rem; + margin-right: -0.375rem; +} +.ui-button__focus-ring { + background-color: rgba(0, 0, 0, 0.12); + border-radius: 50%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-progress-circular.ui-button__progress { + left: 50%; + position: absolute; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +.ui-button-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.ui-button--icon-position-right .ui-button__icon { + margin-left: 0.375rem; + margin-right: -0.25rem; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} +.ui-button--size-small { + font-size: 0.875rem; + height: 2rem; + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.ui-button--size-small .ui-button__icon { + margin-left: 0; + margin-top: 0; +} +.ui-button--size-small .ui-button__icon .ui-icon { + font-size: 1.125rem; +} +.ui-button--size-small .ui-button__dropdown-icon { + margin-right: -0.25rem; +} +.ui-button--size-small.ui-button--icon-position-right .ui-button__icon { + margin-left: 0.375rem; + margin-right: 0; +} +.ui-button--size-large { + font-size: 1rem; + height: 3rem; + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.ui-button--size-large .ui-button__icon { + margin-left: -0.25rem; + margin-right: 0.5rem; +} +.ui-button--size-large .ui-button__dropdown-icon { + font-size: 1.5rem; + margin-left: 0.25rem; +} +.ui-button--size-large.ui-button--icon-position-right .ui-button__icon { + margin-left: 0.5rem; + margin-right: -0.25rem; +} +.ui-button--type-primary.ui-button--color-default { + background-color: #eeeeee; + color: rgba(0, 0, 0, 0.87); +} +.ui-button--type-primary.ui-button--color-default:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-default.has-dropdown-open, .ui-button--type-primary.ui-button--color-default.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-primary.ui-button--color-default:focus { + background-color: #dbdbdb; +} +.ui-button--type-primary.ui-button--color-default .ui-ripple-ink__ink { + opacity: 0.2; +} +.ui-button--type-primary.ui-button--color-default .ui-button__icon, + .ui-button--type-primary.ui-button--color-default .ui-button__dropdown-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-button--type-primary.ui-button--color-primary, .ui-button--type-primary.ui-button--color-accent, .ui-button--type-primary.ui-button--color-green, .ui-button--type-primary.ui-button--color-orange, .ui-button--type-primary.ui-button--color-red { + color: white; +} +.ui-button--type-primary.ui-button--color-primary .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-accent .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-green .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-orange .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-red .ui-ripple-ink__ink { + opacity: 0.4; +} +.ui-button--type-primary.ui-button--color-primary { + background-color: #607d8b; +} +.ui-button--type-primary.ui-button--color-primary:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-primary.has-dropdown-open, .ui-button--type-primary.ui-button--color-primary.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-primary.ui-button--color-primary:focus { + background-color: #4b626d; +} +.ui-button--type-primary.ui-button--color-accent { + background-color: #1976d2; +} +.ui-button--type-primary.ui-button--color-accent:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-accent.has-dropdown-open, .ui-button--type-primary.ui-button--color-accent.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-primary.ui-button--color-accent:focus { + background-color: #145ca4; +} +.ui-button--type-primary.ui-button--color-green { + background-color: #4caf50; +} +.ui-button--type-primary.ui-button--color-green:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-green.has-dropdown-open, .ui-button--type-primary.ui-button--color-green.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-primary.ui-button--color-green:focus { + background-color: #3d8b40; +} +.ui-button--type-primary.ui-button--color-orange { + background-color: #ff9800; +} +.ui-button--type-primary.ui-button--color-orange:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-orange.has-dropdown-open, .ui-button--type-primary.ui-button--color-orange.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-primary.ui-button--color-orange:focus { + background-color: #cc7a00; +} +.ui-button--type-primary.ui-button--color-red { + background-color: #f44336; +} +.ui-button--type-primary.ui-button--color-red:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-red.has-dropdown-open, .ui-button--type-primary.ui-button--color-red.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-primary.ui-button--color-red:focus { + background-color: #ea1c0d; +} +.ui-button--type-secondary { + background-color: transparent; +} +.ui-button--type-secondary:hover:not(.is-disabled), .ui-button--type-secondary.has-dropdown-open, .ui-button--type-secondary.has-focus-ring:focus, + body[modality="keyboard"] .ui-button--type-secondary:focus { + background-color: #e6e6e6; +} +.ui-button--type-secondary.ui-button--color-default { + color: rgba(0, 0, 0, 0.87); +} +.ui-button--type-secondary.ui-button--color-default .ui-button__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-button--type-secondary.ui-button--color-primary { + color: #607d8b; +} +.ui-button--type-secondary.ui-button--color-accent { + color: #1976d2; +} +.ui-button--type-secondary.ui-button--color-green { + color: #43a047; +} +.ui-button--type-secondary.ui-button--color-orange { + color: #ff9800; +} +.ui-button--type-secondary.ui-button--color-red { + color: #f44336; +} + +.editor-inline { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + cursor: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + min-width: 100px; + padding: 0; + position: relative; + z-index: 1; + z-index: 1000000020; + max-width: 90vw; + margin: 0 auto; +} +.editor-inline > form { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + height: 100%; + overflow: visible; + padding: 0; + width: 100%; +} +.editor-inline > form:before, .editor-inline > form:after { + content: ''; + display: table; +} +.editor-inline > form:after { + clear: both; +} +.editor-inline .input-container { + -webkit-align-content: flex-start; + -ms-flex-line-pack: start; + align-content: flex-start; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + overflow: auto; + padding: 18px; +} +.editor-inline .hidden-submit { + display: none; +} +.editor-inline .input-container { + overflow: visible; + padding: 0; +} +.hidden-wrapped { + display: none; +} + +.kiln-field { + border: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + margin: 0 0 16px; + min-width: 0; + opacity: 1; + padding: 0; + position: relative; + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + visibility: visible; + width: 100%; +} +.editor-inline .kiln-field { + margin: 0; +} +.kiln-field .reveal-enter, + .kiln-field .reveal-leave-to { + opacity: 0; +} +.kiln-field .reveal-enter-to, + .kiln-field .reveal-leave { + opacity: 1; +} +.kiln-field .reveal-enter-active, + .kiln-field .reveal-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.kiln-avatar { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} + +.filterable-list { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; +} +.filterable-list-input { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin: 16px; +} +.filterable-list-headers { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 12px; + text-transform: uppercase; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #fafafa; + border-top: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 8px 16px; +} +.filterable-list-headers .filterable-list-header-drag { + -webkit-box-flex: 0; + -webkit-flex: 0 0 36px; + -ms-flex: 0 0 36px; + flex: 0 0 36px; +} +.filterable-list-headers .filterable-list-header-title { + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; +} +.filterable-list-readout { + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + min-height: 200px; + overflow-y: scroll; + overflow-x: hidden; + padding: 0; +} +.filterable-list-readout-list { + list-style: none; + margin: 0; + padding: 0; +} +.filterable-list-add { + border-top: 1px solid rgba(0, 0, 0, 0.12); + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 16px; +} +.filterable-list-add-button { + width: 100%; +} +@-webkit-keyframes shake { +0%, 100% { + -webkit-transform: translateX(0); + transform: translateX(0); +} +20%, 60% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); +} +40%, 80% { + -webkit-transform: translateX(5px); + transform: translateX(5px); +} +} +@keyframes shake { +0%, 100% { + -webkit-transform: translateX(0); + transform: translateX(0); +} +20%, 60% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); +} +40%, 80% { + -webkit-transform: translateX(5px); + transform: translateX(5px); +} +} +.kiln-shake { + -webkit-animation-name: shake; + animation-name: shake; + -webkit-animation-duration: 250ms; + animation-duration: 250ms; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.filterable-list-item { + border: 0; +} +.filterable-list-item.expanded { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + border-top: 1px solid rgba(0, 0, 0, 0.12); +} +.filterable-list-item.expanded .filterable-list-item-btn { + color: #1976d2; + font-weight: bold; +} +.filterable-list-item-inner { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #ffffff; + color: #607d8b; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0 16px; + position: relative; + -webkit-transition: 200ms background-color ease-out; + transition: 200ms background-color ease-out; +} +.filterable-list-item-inner:after { + background-color: currentColor; + content: ''; + height: 100%; + left: 0; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + -webkit-transition: opacity 600ms ease-out; + transition: opacity 600ms ease-out; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 0%; +} +.filterable-list-item-inner.clickable { + cursor: pointer; +} +.filterable-list-item-inner.clickable:hover, .filterable-list-item-inner.focused { + background-color: #eeeeee; +} +.filterable-list-item-inner.active:after { + opacity: 0.4; + -webkit-transition: opacity 600ms ease-out; + transition: opacity 600ms ease-out; + width: 100%; +} +.filterable-list-item-drag { + color: rgba(0, 0, 0, 0.38); +} +.filterable-list-item-secondary-action { + color: rgba(0, 0, 0, 0.54); +} +.filterable-list-item-btn { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: transparent; + border: none; + cursor: default; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + height: 48px; + padding: 0; + text-align: left; + vertical-align: middle; +} +.clickable .filterable-list-item-btn { + cursor: pointer; +} +.filterable-list-item-btn:focus { + outline: none; +} +.filterable-list-item.selected .filterable-list-item-btn { + font-weight: bold; +} +.filterable-list-item-children { + padding: 0; +} + +.filterable-list-item-child { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #ffffff; + color: #607d8b; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0 16px; + position: relative; + -webkit-transition: 200ms background-color ease-out; + transition: 200ms background-color ease-out; +} +.filterable-list-item-child:after { + background-color: currentColor; + content: ''; + height: 100%; + left: 0; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + -webkit-transition: opacity 600ms ease-out; + transition: opacity 600ms ease-out; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 0%; +} +.filterable-list-item-child.clickable { + cursor: pointer; +} +.filterable-list-item-child.clickable:hover, .filterable-list-item-child.focused { + background-color: #eeeeee; +} +.filterable-list-item-child.active:after { + opacity: 0.4; + -webkit-transition: opacity 600ms ease-out; + transition: opacity 600ms ease-out; + width: 100%; +} +.filterable-list-item-child-secondary-action { + color: rgba(0, 0, 0, 0.54); +} +.filterable-list-item-child-btn { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: transparent; + border: none; + cursor: default; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + height: 48px; + padding: 0; + text-align: left; + vertical-align: middle; +} +.clickable .filterable-list-item-child-btn { + cursor: pointer; +} +.filterable-list-item-child-btn:focus { + outline: none; +} + +.ui-textbox { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 1rem; +} +.ui-textbox:hover:not(.is-disabled) .ui-textbox__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-textbox:hover:not(.is-disabled) .ui-textbox__input, + .ui-textbox:hover:not(.is-disabled) .ui-textbox__textarea { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-textbox.is-active:not(.is-disabled) .ui-textbox__input, + .ui-textbox.is-active:not(.is-disabled) .ui-textbox__textarea { + border-bottom-color: #607d8b; + border-bottom-width: 2px; +} +.ui-textbox.is-active:not(.is-disabled) .ui-textbox__label-text, + .ui-textbox.is-active:not(.is-disabled) .ui-textbox__icon-wrapper .ui-icon { + color: #607d8b; +} +.ui-textbox.has-label .ui-textbox__icon-wrapper { + padding-top: 1.5rem; +} +.ui-textbox.has-counter .ui-textbox__feedback-text { + padding-right: 3rem; +} +.ui-textbox.has-floating-label .ui-textbox__label-text { + display: table; +} +.ui-textbox.has-floating-label .ui-textbox__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: text; + -webkit-transform: translateY(1.625rem) scale(1.1); + -ms-transform: translateY(1.625rem) scale(1.1); + transform: translateY(1.625rem) scale(1.1); +} +.ui-textbox.has-floating-label .ui-textbox__label-text.is-floating { + -webkit-transform: translateY(0) scale(1); + -ms-transform: translateY(0) scale(1); + transform: translateY(0) scale(1); +} +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__label-text, + .ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__icon-wrapper .ui-icon, + .ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__counter { + color: #f44336; +} +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__input, + .ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__textarea { + border-bottom-color: #f44336; +} +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__feedback { + color: #f44336; +} +.ui-textbox.is-disabled .ui-textbox__input, + .ui-textbox.is-disabled .ui-textbox__textarea { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); +} +.ui-textbox.is-disabled .ui-textbox__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-textbox.is-disabled .ui-textbox__feedback { + opacity: 0.8; +} +.ui-textbox__label { + display: block; + margin: 0; + padding: 0; + width: 100%; +} +.ui-textbox__icon-wrapper { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-textbox__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-textbox__content { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-textbox__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + -webkit-transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-textbox__input, +.ui-textbox__textarea { + background: none; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + cursor: auto; + display: block; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + margin: 0; + outline: none; + padding: 0; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; + width: 100%; +} +.ui-textbox__input { + height: 2rem; +} +.ui-textbox__textarea { + overflow-x: hidden; + overflow-y: auto; + padding-bottom: 0.375rem; + resize: vertical; +} +.ui-textbox__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-textbox__counter { + position: absolute; + right: 0; + top: 0.25rem; +} +.ui-textbox--icon-position-right .ui-textbox__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} + +.person-item { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: default; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + padding: 12px 0; + width: 100%; +} +.person-item.has-primary-action { + cursor: pointer; +} +.person-image { + margin-right: 16px; +} +.person-text { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + min-width: 0; +} +.person-name { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} +.person-subtitle { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} +.person-actions { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + color: rgba(0, 0, 0, 0.87); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 16px; +} +.person-actions > * + * { + margin-left: 4px; +} + +.ui-switch { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + height: 2rem; + position: relative; +} +.ui-switch.is-checked .ui-switch__thumb { + -webkit-transform: translateX(0.875rem); + -ms-transform: translateX(0.875rem); + transform: translateX(0.875rem); +} +.ui-switch.is-disabled .ui-switch__track { + background-color: rgba(0, 0, 0, 0.12); +} +.ui-switch.is-disabled .ui-switch__thumb { + background-color: #bdbdbd; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui-switch.is-disabled .ui-switch__input-wrapper, + .ui-switch.is-disabled .ui-switch__label-text { + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-switch__input-wrapper { + cursor: pointer; + height: 1.25rem; + position: relative; + width: 2.125rem; +} +.ui-switch__input { + opacity: 0; + position: absolute; +} +body[modality="keyboard"] .ui-switch__input:focus + .ui-switch__thumb .ui-switch__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-switch__track { + background-color: rgba(0, 0, 0, 0.26); + border-radius: 0.5rem; + height: 0.875rem; + position: absolute; + top: 0.1875rem; + -webkit-transition: background-color 0.1s linear; + transition: background-color 0.1s linear; + width: 2.125rem; + z-index: -1; +} +.ui-switch__thumb { + background-color: #fafafa; + border-radius: 50%; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + height: 1.25rem; + position: absolute; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-property: background-color, -webkit-transform; + transition-property: background-color, -webkit-transform; + transition-property: background-color, transform; + transition-property: background-color, transform, -webkit-transform; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; + width: 1.25rem; +} +.ui-switch__focus-ring { + background-color: rgba(0, 0, 0, 0.1); + border-radius: 50%; + height: 2.625rem; + left: -0.6875rem; + opacity: 0; + position: absolute; + top: -0.6875rem; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: background-color 0.2s ease, opacity 0.15s ease, -webkit-transform 0.15s ease; + transition: background-color 0.2s ease, opacity 0.15s ease, -webkit-transform 0.15s ease; + transition: background-color 0.2s ease, transform 0.15s ease, opacity 0.15s ease; + transition: background-color 0.2s ease, transform 0.15s ease, opacity 0.15s ease, -webkit-transform 0.15s ease; + width: 2.625rem; + z-index: -1; +} +.ui-switch__label-text { + cursor: pointer; + font-size: 0.9375rem; + margin-left: 1rem; +} +.ui-switch--switch-position-right .ui-switch__label-text { + margin-left: 0; + margin-right: auto; + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} +.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__track { + background-color: rgba(96, 125, 139, 0.5); +} +.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__thumb { + background-color: #607d8b; +} +.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__focus-ring { + background-color: rgba(96, 125, 139, 0.2); +} +.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__track { + background-color: rgba(25, 118, 210, 0.5); +} +.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__thumb { + background-color: #1976d2; +} +.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__focus-ring { + background-color: rgba(25, 118, 210, 0.2); +} + +.nav-menu-button { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #000000; + border: none; + border-radius: 0; + color: #ffffff; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + font-weight: bold; + height: 48px; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + outline: none; + padding: 0 16px; + position: relative; + width: 100%; +} +.nav-menu-button.is-large { + height: 56px; +} +.nav-menu-button.is-selected:not(:hover) { + background-color: #37474f; +} +.nav-menu-button:hover { + background-color: #263238; +} +.nav-menu-button .ui-icon { + margin-right: 8px; +} + +.ui-alert { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.9375rem; + line-height: 1.4; + margin-bottom: 1rem; + overflow: hidden; + position: relative; + -webkit-transition: margin-bottom 0.3s; + transition: margin-bottom 0.3s; + width: 100%; +} +.ui-alert a { + text-decoration: none; +} +.ui-alert a:hover, .ui-alert a:focus { + text-decoration: underline; +} +.ui-alert__icon { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; +} +.ui-alert__body { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + color: rgba(0, 0, 0, 0.75); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + margin-bottom: 0; + margin-top: 0; + min-height: 3rem; + padding: 0.75rem 1rem; + -webkit-transition: opacity 0.3s, margin-top 0.4s; + transition: opacity 0.3s, margin-top 0.4s; + width: 100%; +} +.ui-alert__content { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-alert__dismiss-button { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-bottom: -0.25rem; + margin-left: 0.5rem; + margin-right: -0.5rem; + margin-top: -0.25rem; +} +.ui-alert--type-info .ui-alert__body { + background-color: rgba(33, 150, 243, 0.12); +} +.ui-alert--type-info .ui-alert__icon { + color: #2196f3; +} +.ui-alert--type-info a { + color: #2196f3; +} +.ui-alert--type-success .ui-alert__body { + background-color: rgba(76, 175, 80, 0.12); +} +.ui-alert--type-success .ui-alert__icon { + color: #4caf50; +} +.ui-alert--type-success a { + color: #4caf50; +} +.ui-alert--type-warning .ui-alert__body { + background-color: rgba(255, 152, 0, 0.12); +} +.ui-alert--type-warning .ui-alert__icon { + color: #ff9800; +} +.ui-alert--type-warning a { + color: #ff9800; +} +.ui-alert--type-error .ui-alert__body { + background-color: rgba(244, 67, 54, 0.12); +} +.ui-alert--type-error .ui-alert__icon { + color: #f44336; +} +.ui-alert--type-error a { + color: #f44336; +} +.ui-alert--transition-toggle-enter, +.ui-alert--transition-toggle-leave-active { + margin-bottom: 0; +} +.ui-alert--transition-toggle-enter .ui-alert__body, + .ui-alert--transition-toggle-leave-active .ui-alert__body { + margin-top: -3.5rem; + opacity: 0; +} + +.ui-close-button { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: transparent; + background: none; + border-radius: 50%; + border: none; + cursor: pointer; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + outline: none; + overflow: hidden; + padding: 0; + position: relative; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); +} +.ui-close-button::-moz-focus-inner { + border: 0; +} +.ui-close-button:hover:not(.is-disabled) { + background-color: rgba(0, 0, 0, 0.1); +} +body[modality="keyboard"] .ui-close-button:focus .ui-close-button__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-close-button.is-disabled { + cursor: default; + opacity: 0.6; +} +.ui-close-button__icon { + position: relative; + width: 100%; + z-index: 1; +} +.ui-close-button__focus-ring { + background-color: rgba(0, 0, 0, 0.15); + border-radius: 50%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-close-button--size-small, +.ui-close-button--size-small .ui-close-button__focus-ring { + height: 2rem; + width: 2rem; +} +.ui-close-button--size-small .ui-icon { + font-size: 1.125rem; +} +.ui-close-button--size-normal, +.ui-close-button--size-normal .ui-close-button__focus-ring { + height: 2.25rem; + width: 2.25rem; +} +.ui-close-button--size-normal .ui-icon { + font-size: 1.25rem; +} +.ui-close-button--size-large, +.ui-close-button--size-large .ui-close-button__focus-ring { + height: 3rem; + width: 3rem; +} +.ui-close-button--size-large .ui-icon { + font-size: 1.5rem; +} +body[modality="keyboard"] .ui-close-button--color-black:focus .ui-close-button__icon, .ui-close-button--color-black:hover:not(.is-disabled) .ui-close-button__icon { + color: rgba(0, 0, 0, 0.87); +} +.ui-close-button--color-black .ui-close-button__icon { + color: rgba(0, 0, 0, 0.38); +} +body[modality="keyboard"] .ui-close-button--color-white:focus .ui-close-button__icon, .ui-close-button--color-white:hover:not(.is-disabled) .ui-close-button__icon { + color: white; +} +.ui-close-button--color-white .ui-close-button__icon { + color: rgba(0, 0, 0, 0.54); +} + +.ui-autocomplete { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 1rem; + position: relative; +} +.ui-autocomplete:hover:not(.is-disabled) .ui-autocomplete__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-autocomplete:hover:not(.is-disabled) .ui-autocomplete__input { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__label-text, + .ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__icon-wrapper .ui-icon { + color: #607d8b; +} +.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__input { + border-bottom-color: #607d8b; + border-bottom-width: 2px; +} +.ui-autocomplete.has-floating-label .ui-autocomplete__label-text { + display: table; +} +.ui-autocomplete.has-floating-label .ui-autocomplete__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: text; + -webkit-transform: translateY(1.625rem) scale(1.1); + -ms-transform: translateY(1.625rem) scale(1.1); + transform: translateY(1.625rem) scale(1.1); +} +.ui-autocomplete.has-floating-label .ui-autocomplete__label-text.is-floating { + -webkit-transform: translateY(0) scale(1); + -ms-transform: translateY(0) scale(1); + transform: translateY(0) scale(1); +} +.ui-autocomplete.has-label .ui-autocomplete__icon-wrapper { + padding-top: 1.5rem; +} +.ui-autocomplete.has-label .ui-autocomplete__clear-button { + top: 1.6875rem; +} +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__label-text, + .ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__icon-wrapper .ui-icon { + color: #f44336; +} +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__input { + border-bottom-color: #f44336; +} +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__feedback { + color: #f44336; +} +.ui-autocomplete.is-disabled .ui-autocomplete__input { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); +} +.ui-autocomplete.is-disabled .ui-autocomplete__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-autocomplete.is-disabled .ui-autocomplete__feedback { + opacity: 0.8; +} +.ui-autocomplete__label { + display: block; + margin: 0; + padding: 0; + position: relative; + width: 100%; +} +.ui-autocomplete__icon-wrapper { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-autocomplete__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-autocomplete__content { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-autocomplete__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + -webkit-transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-autocomplete__input { + background: none; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + cursor: auto; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + height: 2rem; + outline: none; + padding: 0; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; + width: 100%; +} +.ui-autocomplete__input::-ms-clear { + display: none; +} +.ui-autocomplete__clear-button { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + font-size: 1.125rem; + position: absolute; + right: 0; + top: 0.4375rem; +} +.ui-autocomplete__clear-button:hover { + color: rgba(0, 0, 0, 0.87); +} +.ui-autocomplete__suggestions { + background-color: white; + -webkit-box-shadow: 1px 2px 8px #757575; + box-shadow: 1px 2px 8px #757575; + color: rgba(0, 0, 0, 0.87); + display: block; + list-style-type: none; + margin: 0; + margin-bottom: 0.5rem; + min-width: 100%; + padding: 0; + position: absolute; + z-index: 1000000040; +} +.ui-autocomplete__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-autocomplete--icon-position-right .ui-autocomplete__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} + +.ui-autocomplete-suggestion { + cursor: pointer; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.9375rem; + padding: 0.5rem 0.75rem; +} +.ui-autocomplete-suggestion:hover { + background-color: rgba(0, 0, 0, 0.06); +} +.ui-autocomplete-suggestion.is-highlighted { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-autocomplete-suggestion__image { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.ui-autocomplete-suggestion__image-object { + background-position: 50%; + background-size: cover; + border-radius: 50%; + height: 2rem; + margin-right: 0.75rem; + width: 2rem; +} + +.ui-checkbox { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-weight: normal; + margin: 0; + margin-bottom: 0.5rem; + position: relative; +} +.ui-checkbox:not(.is-disabled):not(.is-checked):hover .ui-checkbox__checkmark::before, .ui-checkbox:not(.is-disabled):not(.is-checked).is-active .ui-checkbox__checkmark::before { + border-color: rgba(0, 0, 0, 0.6); +} +.ui-checkbox.is-checked .ui-checkbox__checkmark::after { + border-bottom: 0.125rem solid white; + border-right: 0.125rem solid white; + opacity: 1; +} +.ui-checkbox.is-disabled .ui-checkbox__checkmark, + .ui-checkbox.is-disabled .ui-checkbox__label-text { + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-checkbox.is-disabled .ui-checkbox__checkmark::before { + border-color: rgba(0, 0, 0, 0.26); +} +.ui-checkbox.is-disabled.is-checked .ui-checkbox__checkmark::before { + background-color: rgba(0, 0, 0, 0.26); + border: none; +} +.ui-checkbox__label-text { + cursor: pointer; + font-size: 1rem; + margin-left: 0.5rem; +} +.ui-checkbox__checkmark { + background-color: white; + cursor: pointer; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + height: 1.25rem; + position: relative; + width: 1.25rem; +} +.ui-checkbox__checkmark::before { + border-radius: 0.125rem; + border: 0.125rem solid rgba(0, 0, 0, 0.38); + -webkit-box-sizing: border-box; + box-sizing: border-box; + content: ""; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + width: 100%; +} +.ui-checkbox__checkmark::after { + bottom: 0.3125rem; + -webkit-box-sizing: border-box; + box-sizing: border-box; + content: ""; + display: block; + height: 0.8125rem; + left: 0.4375rem; + opacity: 0; + position: absolute; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-transition-delay: 0.1s; + transition-delay: 0.1s; + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + width: 0.375rem; +} +.ui-checkbox__input { + position: absolute; + opacity: 0; +} +body[modality="keyboard"] .ui-checkbox__input:focus + .ui-checkbox__checkmark .ui-checkbox__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-checkbox__focus-ring { + border-radius: 50%; + height: 2.625rem; + margin-left: -0.6875rem; + margin-top: -0.6875rem; + opacity: 0; + position: absolute; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition-duration: 0.15s; + transition-duration: 0.15s; + -webkit-transition-property: opacity, -webkit-transform; + transition-property: opacity, -webkit-transform; + transition-property: opacity, transform; + transition-property: opacity, transform, -webkit-transform; + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out; + width: 2.625rem; + background-color: rgba(0, 0, 0, 0.12); +} +.ui-checkbox--box-position-right .ui-checkbox__label-text { + margin-left: 0; + margin-right: auto; + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} +.ui-checkbox--color-primary:not(.is-disabled).is-checked:hover .ui-checkbox__checkmark::before, .ui-checkbox--color-primary:not(.is-disabled).is-checked.is-active .ui-checkbox__checkmark::before { + background-color: #566f7c; + border-color: #566f7c; +} +.ui-checkbox--color-primary.is-checked .ui-checkbox__checkmark::before { + background-color: #607d8b; + border-color: #607d8b; +} +.ui-checkbox--color-primary.is-checked .ui-checkbox__focus-ring { + background-color: rgba(96, 125, 139, 0.18); +} +.ui-checkbox--color-accent:not(.is-disabled).is-checked:hover .ui-checkbox__checkmark::before, .ui-checkbox--color-accent:not(.is-disabled).is-checked.is-active .ui-checkbox__checkmark::before { + background-color: #1669bb; + border-color: #1669bb; +} +.ui-checkbox--color-accent.is-checked .ui-checkbox__checkmark::before { + background-color: #1976d2; + border-color: #1976d2; +} +.ui-checkbox--color-accent.is-checked .ui-checkbox__focus-ring { + background-color: rgba(25, 118, 210, 0.18); +} + +.ui-checkbox-group { + font-family: "Noto Sans", Arial, sans-serif; + line-height: normal; +} +.ui-checkbox-group:not(.is-disabled):not(.is-invalid):hover .ui-checkbox-group__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-checkbox-group:not(.is-disabled):not(.is-invalid).is-active .ui-checkbox-group__label-text { + color: #607d8b; +} +.ui-checkbox-group.is-vertical .ui-checkbox-group__checkboxes { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-top: 0.5rem; +} +.ui-checkbox-group.is-vertical .ui-checkbox-group__checkbox { + margin-bottom: 0.75rem; + margin-left: 0; + width: 100%; +} +.ui-checkbox-group.is-invalid .ui-checkbox-group__label-text { + color: #f44336; +} +.ui-checkbox-group.is-invalid .ui-checkbox-group__feedback { + color: #f44336; +} +.ui-checkbox-group.is-disabled .ui-checkbox-group__feedback { + opacity: 0.8; +} +.ui-checkbox-group__label-text { + color: rgba(0, 0, 0, 0.54); + font-size: 0.9375rem; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui-checkbox-group__checkboxes { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + min-height: 2rem; +} +.ui-checkbox.ui-checkbox-group__checkbox { + margin-bottom: 0; + margin-left: 1.5rem; +} +.ui-checkbox.ui-checkbox-group__checkbox:first-child { + margin-left: 0; +} +.ui-checkbox-group__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0rem; + position: relative; +} +.ui-checkbox-group--box-position-right:not(.is-vertical) .ui-checkbox__label-text { + margin-right: 0.5rem; +} + +.ui-collapsible { + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 0.5rem; + width: 100%; +} +.ui-collapsible:not(.is-disabled) .ui-collapsible__header:hover, + body[modality="keyboard"] .ui-collapsible:not(.is-disabled) .ui-collapsible__header:focus { + background-color: #e0e0e0; +} +.ui-collapsible.is-open .ui-collapsible__header-icon { + -webkit-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + transform: rotate(-180deg); +} +.ui-collapsible.is-disabled .ui-collapsible__header { + cursor: default; + opacity: 0.6; +} +.ui-collapsible.is-disabled .ui-collapsible__header-icon { + cursor: default; +} +.ui-collapsible__header { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #eeeeee; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-size: 0.9375rem; + line-height: 1.5; + margin: 0; + min-height: 3rem; + padding: 0.75rem 1rem; + position: relative; + -ms-touch-action: manipulation; + touch-action: manipulation; + width: 100%; +} +.ui-collapsible__header .ui-ripple-ink__ink { + opacity: 0.1; +} +.ui-collapsible__header-content { + padding-right: 0.5rem; +} +.ui-collapsible__header-icon { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + margin-left: auto; + margin-right: -0.25rem; + -webkit-transition: -webkit-transform 0.3s ease; + transition: -webkit-transform 0.3s ease; + transition: transform 0.3s ease; + transition: transform 0.3s ease, -webkit-transform 0.3s ease; +} +.ui-collapsible__body-wrapper { + height: initial; + overflow: hidden; +} +.ui-collapsible__body { + border-top: 0; + border: 1px solid #eeeeee; + display: block; + padding: 1rem; + width: 100%; +} +.ui-collapsible--transition-toggle-enter-active, +.ui-collapsible--transition-toggle-leave-active { + -webkit-transition: height 0.3s ease; + transition: height 0.3s ease; +} +.ui-collapsible--transition-toggle-enter, +.ui-collapsible--transition-toggle-leave-active { + height: 0 !important; +} + +.ui-confirm__message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.9375rem; +} +.ui-confirm__footer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.ui-modal { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.875rem; +} +.ui-modal.has-footer .ui-modal__body { + max-height: calc(100vh - 7.875rem); +} +.ui-modal:not(.has-footer) .ui-modal__body { + padding: 1rem 1.5rem 1.5rem; +} +.ui-modal--is-open { + overflow: hidden; +} +.ui-modal__mask { + background-color: rgba(0, 0, 0, 0.4); + display: table; + height: 100%; + left: 0; + position: fixed; + top: 0; + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + width: 100%; + z-index: 1000000030; +} +.ui-modal__wrapper { + display: table-cell; + vertical-align: middle; + overflow-x: hidden; +} +.ui-modal__wrapper.has-dummy-scrollbar { + overflow-y: scroll; +} +.ui-modal__container { + background-color: white; + border-radius: 0.125rem; + -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33); + margin: 0 auto; + max-height: 100vh; + max-width: 100vw; + outline: none; + overflow: hidden; + padding: 0; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + width: 33rem; +} +.ui-modal__header { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #F5F5F5; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 3.5rem; + padding: 0 1.5rem; + position: relative; + z-index: 1; +} +.ui-modal__header-text { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + font-size: 1.125rem; + font-weight: normal; + margin: 0; +} +.ui-modal__close-button { + margin-left: auto; + margin-right: -0.5rem; +} +.ui-modal__body { + max-height: calc(100vh - 3.5rem); + overflow-y: auto; + padding: 1rem 1.5rem; +} +.ui-modal__footer { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 4.375rem; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 0 1.5rem; +} +.ui-modal__footer .ui-button { + margin-left: 0.5rem; +} +.ui-modal__footer .ui-button:first-child { + margin-left: 0; +} +.ui-modal--size-large .ui-modal__container { + width: 53rem; +} +.ui-modal--size-small .ui-modal__container { + width: 20rem; +} +.ui-modal--transition-fade-enter, +.ui-modal--transition-fade-leave-active { + opacity: 0; +} +.ui-modal--transition-scale-enter, +.ui-modal--transition-scale-leave-active { + opacity: 0; +} +.ui-modal--transition-scale-enter .ui-modal__container, + .ui-modal--transition-scale-leave-active .ui-modal__container { + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); +} + +.ui-datepicker { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 1rem; + outline: none; + position: relative; +} +.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__display { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__dropdown-button { + color: rgba(0, 0, 0, 0.87); +} +.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__label-text, + .ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__icon-wrapper .ui-icon { + color: #607d8b; +} +.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__display { + border-bottom-color: #607d8b; + border-bottom-width: 2px; +} +.ui-datepicker.has-floating-label .ui-datepicker__label-text { + display: table; +} +.ui-datepicker.has-floating-label .ui-datepicker__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + -webkit-transform: translateY(1.625rem) scale(1.1); + -ms-transform: translateY(1.625rem) scale(1.1); + transform: translateY(1.625rem) scale(1.1); +} +.ui-datepicker.has-floating-label .ui-datepicker__label-text.is-floating { + -webkit-transform: translateY(0) scale(1); + -ms-transform: translateY(0) scale(1); + transform: translateY(0) scale(1); +} +.ui-datepicker.has-label .ui-datepicker__icon-wrapper { + padding-top: 1.5rem; +} +.ui-datepicker.has-label .ui-datepicker__dropdown-button { + top: 1.6875rem; +} +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__label-text, + .ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__icon-wrapper .ui-icon { + color: #f44336; +} +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__display { + border-bottom-color: #f44336; +} +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__feedback { + color: #f44336; +} +.ui-datepicker.is-disabled .ui-datepicker__display { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-datepicker.is-disabled .ui-datepicker__dropdown-button, + .ui-datepicker.is-disabled .ui-datepicker__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); + opacity: 0.6; +} +.ui-datepicker.is-disabled .ui-datepicker__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-datepicker.is-disabled .ui-datepicker__feedback { + opacity: 0.8; +} +.ui-datepicker .ui-modal:not(.has-footer) .ui-modal__body { + padding: 0; +} +.ui-datepicker .ui-modal:not(.has-footer) .ui-modal__body .ui-calendar__body { + height: 21.75rem; +} +.ui-datepicker .ui-modal__container { + width: 16.75rem; +} +.ui-datepicker__label { + display: block; + margin: 0; + outline: none; + padding: 0; + position: relative; + width: 100%; +} +.ui-datepicker__icon-wrapper { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-datepicker__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-datepicker__content { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-datepicker__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + -webkit-transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-datepicker__display { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + height: 2rem; + line-height: 1; + padding: 0; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} +.ui-datepicker__display-value { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-datepicker__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); +} +.ui-datepicker__dropdown-button { + color: rgba(0, 0, 0, 0.54); + font-size: 1.125rem; + margin-left: auto; + margin-right: -0.25rem; +} +.ui-datepicker__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-datepicker__modal-buttons { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.ui-datepicker__modal-buttons .ui-button { + min-width: 4rem; +} +.ui-datepicker--icon-position-right .ui-datepicker__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} +.ui-datepicker--orientation-landscape .ui-modal__container { + width: 24.75rem; +} + +.ui-calendar { + color: rgba(0, 0, 0, 0.87); + font-family: "Noto Sans", Arial, sans-serif; +} +.ui-calendar__header { + color: white; + line-height: 1; + padding: 1rem; +} +.ui-calendar__header-year, +.ui-calendar__header-details { + cursor: pointer; + opacity: 0.75; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; +} +.ui-calendar__header-year:hover, + body[modality="keyboard"] .ui-calendar__header-year:focus, .ui-calendar__header-year.is-active, + .ui-calendar__header-details:hover, + body[modality="keyboard"] + .ui-calendar__header-details:focus, + .ui-calendar__header-details.is-active { + opacity: 1; +} +body[modality="keyboard"] .ui-calendar__header-year:focus, body[modality="keyboard"] + .ui-calendar__header-details:focus { + outline: 1px dotted white; + outline-offset: 1px; +} +.ui-calendar__header-year { + font-size: 0.9375rem; + font-weight: 500; + margin-bottom: 0.5rem; +} +.ui-calendar__header-details { + font-size: 1.375rem; +} +.ui-calendar__body { + height: 19.5rem; + overflow: hidden; + padding: 0.5rem; + position: relative; + width: 16.75rem; +} +.ui-calendar__years { + height: 19.5rem; + list-style: none; + margin: -0.5rem; + overflow-y: auto; + padding: 0.5rem 0; +} +.ui-calendar__year { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-size: 1rem; + height: 2.25rem; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + outline: none; +} +.ui-calendar__year.is-selected { + font-size: 1.5rem; + font-weight: 500; + height: 2.5rem; +} +.ui-calendar--orientation-landscape { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.ui-calendar--orientation-landscape .ui-calendar__header { + min-width: 8rem; +} +.ui-calendar--orientation-landscape .ui-calendar__header-date { + margin-bottom: 0.75rem; +} +.ui-calendar--orientation-landscape .ui-calendar__header-date { + display: block; + padding-top: 0.25rem; +} +.ui-calendar--color-primary .ui-calendar__header { + background-color: #607d8b; +} +.ui-calendar--color-primary .ui-calendar__year:hover, +body[modality="keyboard"] .ui-calendar--color-primary .ui-calendar__year:focus { + color: #607d8b; +} +.ui-calendar--color-primary .ui-calendar__year.is-selected { + color: #607d8b; +} +.ui-calendar--color-primary .ui-calendar-week__date.is-today { + color: #607d8b; +} +.ui-calendar--color-primary .ui-calendar-week__date.is-selected, +body[modality="keyboard"] .ui-calendar--color-primary .ui-calendar-week__date.is-selected { + background-color: #607d8b; +} +.ui-calendar--color-accent .ui-calendar__header { + background-color: #1976d2; +} +.ui-calendar--color-accent .ui-calendar__year:hover, +body[modality="keyboard"] .ui-calendar--color-accent .ui-calendar__year:focus { + color: #1976d2; +} +.ui-calendar--color-accent .ui-calendar__year.is-selected { + color: #1976d2; +} +.ui-calendar--color-accent .ui-calendar-week__date.is-today { + color: #1976d2; +} +.ui-calendar--color-accent .ui-calendar-week__date.is-selected, +body[modality="keyboard"] .ui-calendar--color-accent .ui-calendar-week__date.is-selected { + background-color: #1976d2; +} + +.ui-calendar-controls { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 2.5rem; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} +.ui-calendar-controls__month-and-year { + font-size: 0.9375rem; +} + +.ui-calendar-month { + height: 16rem; + overflow: hidden; + position: relative; + width: 100%; +} +.ui-calendar-month__header { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 2.5rem; + -webkit-justify-content: space-around; + -ms-flex-pack: distribute; + justify-content: space-around; + width: 100%; +} +.ui-calendar-month__header span { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + color: rgba(0, 0, 0, 0.54); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-size: 0.875rem; + height: 2.25rem; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-transform: uppercase; + width: 2.25rem; +} +.ui-calendar-month__week { + position: absolute; + width: 15.75rem; +} +.ui-calendar-month__week.is-current { + left: 0; +} +.ui-calendar-month__week.is-other { + left: 15.75rem; +} +.ui-calendar-month__week.is-other.ui-calendar-month--slide-right { + left: -15.75rem; +} +.ui-calendar-month__week.is-sliding { + -webkit-transition: -webkit-transform 250ms ease; + transition: -webkit-transform 250ms ease; + transition: transform 250ms ease; + transition: transform 250ms ease, -webkit-transform 250ms ease; +} +.ui-calendar-month__week.is-sliding.ui-calendar-month--slide-left { + -webkit-transform: translate3d(-15.75rem, 0, 0); + transform: translate3d(-15.75rem, 0, 0); +} +.ui-calendar-month__week.is-sliding.ui-calendar-month--slide-right { + -webkit-transform: translate3d(15.75rem, 0, 0); + transform: translate3d(15.75rem, 0, 0); +} + +.ui-calendar-week { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-size: 0.875rem; + width: 100%; +} +.ui-calendar-week__date { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border-radius: 50%; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 2.25rem; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + outline: none; + text-align: center; + width: 2.25rem; +} +.ui-calendar-week__date:hover, + body[modality="keyboard"] .ui-calendar-week__date:focus { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-calendar-week__date.is-in-other-month { + visibility: hidden; +} +.ui-calendar-week__date.is-today { + font-weight: bold; +} +.ui-calendar-week__date.is-today.is-selected { + color: white; +} +.ui-calendar-week__date.is-selected { + color: white; +} +.ui-calendar-week__date.is-disabled { + background-color: transparent; + cursor: default; + opacity: 0.4; +} + +.ui-fileupload { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border-radius: 0.125rem; + cursor: pointer; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.875rem; + font-weight: 500; + height: 2.25rem; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + letter-spacing: 0.02em; + line-height: 1; + min-width: 5rem; + overflow: hidden; + padding: 0; + padding-left: 1rem; + padding-right: 1rem; + position: relative; + text-transform: uppercase; +} +.ui-fileupload.has-focus-ring.is-active .ui-fileupload__focus-ring, + body[modality="keyboard"] .ui-fileupload.is-active .ui-fileupload__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-fileupload:not(.is-multiple) .ui-fileupload__display-text { + text-transform: none; +} +.ui-fileupload.is-raised { + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + -webkit-transition: -webkit-box-shadow 0.1s; + transition: -webkit-box-shadow 0.1s; + transition: box-shadow 0.1s; + transition: box-shadow 0.1s, -webkit-box-shadow 0.1s; +} +.ui-fileupload.is-raised.has-focus-ring.is-active, + body[modality="keyboard"] .ui-fileupload.is-raised.is-active { + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.22), 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.22), 0 3px 6px rgba(0, 0, 0, 0.3); +} +.ui-fileupload.is-disabled { + cursor: default; + opacity: 0.6; +} +.ui-fileupload__input { + height: 0.1px; + opacity: 0; + overflow: hidden; + position: absolute; + z-index: -1; + width: 0.1px; +} +.ui-fileupload__content { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + z-index: 1; +} +.ui-fileupload__icon { + margin-left: -0.25rem; + margin-right: 0.375rem; + margin-top: -0.125rem; +} +.ui-fileupload__focus-ring { + background-color: rgba(0, 0, 0, 0.12); + border-radius: 50%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease; + transition: transform 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-fileupload--icon-position-right .ui-fileupload__icon { + margin-left: 0.375rem; + margin-right: -0.25rem; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} +.ui-fileupload--size-small { + font-size: 0.875rem; + height: 2rem; + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.ui-fileupload--size-small .ui-fileupload__icon { + margin-left: 0; + margin-top: 0; +} +.ui-fileupload--size-small .ui-fileupload__icon .ui-icon { + font-size: 1.125rem; +} +.ui-fileupload--size-small.ui-fileupload--icon-position-right .ui-fileupload__icon { + margin-left: 0.375rem; + margin-right: 0; +} +.ui-fileupload--size-large { + font-size: 1rem; + height: 3rem; + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.ui-fileupload--size-large .ui-fileupload__icon { + margin-left: -0.25rem; + margin-right: 0.5rem; +} +.ui-fileupload--size-large.ui-fileupload--icon-position-right .ui-fileupload__icon { + margin-left: 0.5rem; + margin-right: -0.25rem; +} +.ui-fileupload--type-primary.ui-fileupload--color-default { + background-color: #eeeeee; + color: rgba(0, 0, 0, 0.87); +} +.ui-fileupload--type-primary.ui-fileupload--color-default:hover:not(.is-disabled), .ui-fileupload--type-primary.ui-fileupload--color-default.has-focus-ring.is-active, + body[modality="keyboard"] .ui-fileupload--type-primary.ui-fileupload--color-default.is-active { + background-color: #dbdbdb; +} +.ui-fileupload--type-primary.ui-fileupload--color-default .ui-ripple-ink__ink { + opacity: 0.2; +} +.ui-fileupload--type-primary.ui-fileupload--color-default .ui-fileupload__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-fileupload--type-primary.ui-fileupload--color-primary, .ui-fileupload--type-primary.ui-fileupload--color-accent { + color: white; +} +.ui-fileupload--type-primary.ui-fileupload--color-primary .ui-ripple-ink__ink, .ui-fileupload--type-primary.ui-fileupload--color-accent .ui-ripple-ink__ink { + opacity: 0.4; +} +.ui-fileupload--type-primary.ui-fileupload--color-primary { + background-color: #607d8b; +} +.ui-fileupload--type-primary.ui-fileupload--color-primary:hover:not(.is-disabled), .ui-fileupload--type-primary.ui-fileupload--color-primary.has-focus-ring.is-active, + body[modality="keyboard"] .ui-fileupload--type-primary.ui-fileupload--color-primary.is-active { + background-color: #4b626d; +} +.ui-fileupload--type-primary.ui-fileupload--color-accent { + background-color: #1976d2; +} +.ui-fileupload--type-primary.ui-fileupload--color-accent:hover:not(.is-disabled), .ui-fileupload--type-primary.ui-fileupload--color-accent.has-focus-ring.is-active, + body[modality="keyboard"] .ui-fileupload--type-primary.ui-fileupload--color-accent.is-active { + background-color: #145ca4; +} +.ui-fileupload--type-secondary { + background-color: transparent; +} +.ui-fileupload--type-secondary:hover:not(.is-disabled), .ui-fileupload--type-secondary.has-focus-ring.is-active, + body[modality="keyboard"] .ui-fileupload--type-secondary.is-active { + background-color: #e6e6e6; +} +.ui-fileupload--type-secondary.ui-fileupload--color-default { + color: rgba(0, 0, 0, 0.87); +} +.ui-fileupload--type-secondary.ui-fileupload--color-default .ui-fileupload__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-fileupload--type-secondary.ui-fileupload--color-primary { + color: #607d8b; +} +.ui-fileupload--type-secondary.ui-fileupload--color-accent { + color: #1976d2; +} + +.ui-menu { + background-color: white; + border: 0.0625rem solid rgba(0, 0, 0, 0.08); + font-family: "Noto Sans", Arial, sans-serif; + list-style: none; + margin: 0; + max-height: 100vh; + max-width: 17rem; + min-width: 10.5rem; + outline: none; + overflow-x: hidden; + overflow-y: auto; + padding: 0.25rem 0; +} +.ui-menu.is-raised { + border: none; + -webkit-box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); +} +.ui-menu.has-secondary-text { + min-width: 15rem; + max-width: 19rem; +} +.ui-menu__focus-redirector { + position: absolute; + opacity: 0; +} + +.ui-menu-option { + display: block; + font-family: "Noto Sans", Arial, sans-serif; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} +.ui-menu-option.is-divider { + background-color: rgba(0, 0, 0, 0.08); + display: block; + height: 0.0625rem; + margin: 0.375rem 0; + padding: 0; +} +.ui-menu-option:not(.is-divider) { + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + font-size: 0.9375rem; + font-weight: normal; + min-height: 2.5rem; + outline: none; +} +.ui-menu-option:not(.is-divider):hover:not(.is-disabled), + body[modality="keyboard"] .ui-menu-option:not(.is-divider):focus { + background-color: #EEEEEE; +} +.ui-menu-option:not(.is-divider).is-disabled { + color: rgba(0, 0, 0, 0.54); + cursor: default; + opacity: 0.5; +} +.ui-menu-option:not(.is-divider).is-disabled .ui-menu-option__secondary-text { + color: rgba(0, 0, 0, 0.54); +} +.ui-menu-option__content { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 2.5rem; + padding: 0 1rem; +} +.ui-menu-option__icon { + color: rgba(0, 0, 0, 0.54); + font-size: 1.125rem; + margin-right: 1rem; +} +.ui-menu-option__text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-menu-option__secondary-text { + color: rgba(0, 0, 0, 0.38); + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + font-size: 0.8125rem; + margin-left: 0.25rem; +} + +.ui-radio-group { + font-family: "Noto Sans", Arial, sans-serif; +} +.ui-radio-group:not(.is-disabled):not(.is-invalid):hover .ui-radio-group__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-radio-group:not(.is-disabled):not(.is-invalid).is-active .ui-radio-group__label-text { + color: #607d8b; +} +.ui-radio-group.is-vertical .ui-radio-group__radios { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-top: 0.5rem; +} +.ui-radio-group.is-vertical .ui-radio-group__radio { + margin-bottom: 0.75rem; + margin-left: 0; + width: 100%; +} +.ui-radio-group.is-invalid .ui-radio-group__label-text { + color: #f44336; +} +.ui-radio-group.is-invalid .ui-radio-group__feedback { + color: #f44336; +} +.ui-radio-group.is-disabled .ui-radio-group__feedback { + opacity: 0.8; +} +.ui-radio-group__label-text { + color: rgba(0, 0, 0, 0.54); + font-size: 0.9375rem; + line-height: normal; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui-radio-group__radios { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + min-height: 2rem; +} +.ui-radio.ui-radio-group__radio { + margin-left: 1.5rem; +} +.ui-radio.ui-radio-group__radio:first-child { + margin-left: 0; +} +.ui-radio-group__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0rem; + position: relative; +} +.ui-radio-group--button-position-right:not(.is-vertical) .ui-radio__label-text { + margin-right: 0.5rem; +} + +.ui-radio { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.9375rem; + height: 1.25rem; + margin: 0; +} +.ui-radio:hover:not(.is-disabled):not(.is-checked) .ui-radio__outer-circle { + border: 0.125rem solid rgba(0, 0, 0, 0.54); +} +.ui-radio.is-checked .ui-radio__inner-circle { + opacity: 1; + -webkit-transform: scale(0.5); + -ms-transform: scale(0.5); + transform: scale(0.5); + z-index: 0; +} +.ui-radio.is-disabled { + opacity: 0.5; +} +.ui-radio.is-disabled .ui-radio__input-wrapper, + .ui-radio.is-disabled .ui-radio__label-text { + cursor: default; +} +.ui-radio__input-wrapper { + cursor: pointer; + height: 1.25rem; + position: relative; + width: 1.25rem; +} +.ui-radio__input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 1px; + left: 0; + margin: 0; + opacity: 0; + outline: none; + padding: 0; + position: absolute; + top: 0; + width: 1px; +} +body[modality="keyboard"] .ui-radio__input:focus + .ui-radio__focus-ring { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-radio__outer-circle { + background-color: transparent; + border-radius: 50%; + border: 0.125rem solid rgba(0, 0, 0, 0.38); + height: 1.25rem; + left: 0; + position: absolute; + top: 0; + -webkit-transition: border-color 0.2s; + transition: border-color 0.2s; + width: 1.25rem; +} +.ui-radio__inner-circle { + background-color: rgba(0, 0, 0, 0.38); + border-radius: 50%; + height: 1.25rem; + left: 0; + opacity: 0; + position: absolute; + top: 0; + -webkit-transform: scale(1.2); + -ms-transform: scale(1.2); + transform: scale(1.2); + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: opacity, background-color, -webkit-transform; + transition-property: opacity, background-color, -webkit-transform; + transition-property: transform, opacity, background-color; + transition-property: transform, opacity, background-color, -webkit-transform; + width: 1.25rem; + z-index: -1; +} +.ui-radio__focus-ring { + background-color: rgba(0, 0, 0, 0.1); + border-radius: 50%; + height: 2.625rem; + left: -0.6875rem; + opacity: 0; + position: absolute; + top: -0.6875rem; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: background-color 0.2s ease, opacity 0.15s ease, -webkit-transform 0.15s ease; + transition: background-color 0.2s ease, opacity 0.15s ease, -webkit-transform 0.15s ease; + transition: background-color 0.2s ease, transform 0.15s ease, opacity 0.15s ease; + transition: background-color 0.2s ease, transform 0.15s ease, opacity 0.15s ease, -webkit-transform 0.15s ease; + width: 2.625rem; + z-index: -1; +} +.ui-radio__label-text { + cursor: pointer; + font-size: 1rem; + margin-left: 0.5rem; +} +.ui-radio--button-position-right .ui-radio__label-text { + margin-left: 0; + margin-right: auto; + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} +.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__outer-circle { + border-color: #607d8b; +} +.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__inner-circle { + background-color: #607d8b; +} +.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__focus-ring { + background-color: rgba(96, 125, 139, 0.2); +} +.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__outer-circle { + border-color: #1976d2; +} +.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__inner-circle { + background-color: #1976d2; +} +.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__focus-ring { + background-color: rgba(25, 118, 210, 0.2); +} + +.ui-select { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 1rem; + outline: none; + position: relative; +} +.ui-select:hover:not(.is-disabled) .ui-select__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-select:hover:not(.is-disabled) .ui-select__display { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-select:hover:not(.is-disabled) .ui-select__dropdown-button { + color: rgba(0, 0, 0, 0.87); +} +.ui-select.is-active:not(.is-disabled) .ui-select__label-text, + .ui-select.is-active:not(.is-disabled) .ui-select__icon-wrapper .ui-icon { + color: #607d8b; +} +.ui-select.is-active:not(.is-disabled) .ui-select__display { + border-bottom-color: #607d8b; + border-bottom-width: 2px; +} +.ui-select.has-floating-label .ui-select__label-text { + display: table; +} +.ui-select.has-floating-label .ui-select__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + -webkit-transform: translateY(1.625rem) scale(1.1); + -ms-transform: translateY(1.625rem) scale(1.1); + transform: translateY(1.625rem) scale(1.1); +} +.ui-select.has-floating-label .ui-select__label-text.is-floating { + -webkit-transform: translateY(0) scale(1); + -ms-transform: translateY(0) scale(1); + transform: translateY(0) scale(1); +} +.ui-select.has-label .ui-select__icon-wrapper { + padding-top: 1.5rem; +} +.ui-select.has-label .ui-select__dropdown-button { + top: 1.6875rem; +} +.ui-select:not(.is-multiple) .ui-select__display { + height: 2rem; + line-height: 1; +} +.ui-select.is-multiple .ui-select__display { + line-height: 1.4; + padding-bottom: 0.25rem; + padding-top: 0.25rem; +} +.ui-select.is-invalid:not(.is-disabled) .ui-select__label-text, + .ui-select.is-invalid:not(.is-disabled) .ui-select__icon-wrapper .ui-icon { + color: #f44336; +} +.ui-select.is-invalid:not(.is-disabled) .ui-select__display { + border-bottom-color: #f44336; +} +.ui-select.is-invalid:not(.is-disabled) .ui-select__feedback { + color: #f44336; +} +.ui-select.is-disabled .ui-select__display { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-select.is-disabled .ui-select__dropdown-button, + .ui-select.is-disabled .ui-select__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); + opacity: 0.6; +} +.ui-select.is-disabled .ui-select__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-select.is-disabled .ui-select__feedback { + opacity: 0.8; +} +.ui-select__label { + display: block; + margin: 0; + outline: none; + padding: 0; + position: relative; + width: 100%; +} +.ui-select__icon-wrapper { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-select__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-select__content { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-select__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + -webkit-transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, -webkit-transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease; + transition: color 0.1s ease, transform 0.2s ease, -webkit-transform 0.2s ease; +} +.ui-select__display { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + padding: 0; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} +.ui-select__display-value { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-select__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); +} +.ui-select__dropdown-button { + color: rgba(0, 0, 0, 0.54); + font-size: 1.125rem; + margin-left: auto; + margin-right: -0.25rem; +} +.ui-select__dropdown { + background-color: white; + -webkit-box-shadow: 1px 2px 8px #757575; + box-shadow: 1px 2px 8px #757575; + color: rgba(0, 0, 0, 0.87); + display: block; + list-style-type: none; + margin: 0; + margin-bottom: 0.5rem; + min-width: 11.25rem; + outline: none; + padding: 0; + position: absolute; + width: 100%; + z-index: 1000000040; +} +.ui-select__search-input { + background: none; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + cursor: auto; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.9375rem; + font-weight: normal; + height: 2.25rem; + outline: none; + padding: 0 0.75rem; + padding-left: 2.5rem; + -webkit-transition: border 0.1s ease; + transition: border 0.1s ease; + width: 100%; +} +.ui-select__search-input::-ms-clear { + display: none; +} +.ui-select__search-input:focus + .ui-select__search-icon { + color: #607d8b; +} +.ui-select__search-icon, +.ui-select__search-progress { + position: absolute; + top: 0.5rem; +} +.ui-select__search-icon { + color: rgba(0, 0, 0, 0.54); + font-size: 1.25rem; + left: 0.75rem; +} +.ui-select__search-progress { + right: 0.75rem; +} +.ui-select__options { + background-color: white; + color: rgba(0, 0, 0, 0.87); + display: block; + list-style-type: none; + margin: 0; + max-height: 16rem; + min-width: 100%; + overflow-y: auto; + padding: 0; + position: relative; +} +.ui-select__no-results { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + padding: 0.5rem 0.75rem; + width: 100%; +} +.ui-select__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-select--icon-position-right .ui-select__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} +.ui-select--transition-fade-enter-active, +.ui-select--transition-fade-leave-active { + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; +} +.ui-select--transition-fade-enter, +.ui-select--transition-fade-leave-active { + opacity: 0; +} + +.ui-select-option { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 0.9375rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ui-select-option.is-selected { + background-color: rgba(0, 0, 0, 0.05); + color: #607d8b; + font-weight: 500; +} +.ui-select-option.is-selected .ui-select-option__checkbox { + color: #607d8b; +} +.ui-select-option.is-highlighted { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-select-option__basic, +.ui-select-option__image-text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-select-option__image { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.ui-select-option__image-object { + background-position: 50%; + background-size: cover; + border-radius: 50%; + height: 2rem; + margin-right: 0.75rem; + width: 2rem; +} +.ui-select-option__checkbox { + color: rgba(0, 0, 0, 0.38); + margin-left: auto; +} +.ui-select-option--type-basic { + padding: 0.375rem 0.75rem; +} +.ui-select-option--type-image { + padding: 0.25rem 0.75rem; +} + +.ui-slider { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + outline: none; +} +.ui-slider:not(.is-disabled).is-active:not(.has-marker) .ui-slider__thumb::before, .ui-slider:not(.is-disabled).is-dragging:not(.has-marker) .ui-slider__thumb::before { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.ui-slider:not(.is-disabled).is-active .ui-slider__marker, .ui-slider:not(.is-disabled).is-dragging .ui-slider__marker { + opacity: 1; + -webkit-transform: scale(1) translateY(-1.625rem); + -ms-transform: scale(1) translateY(-1.625rem); + transform: scale(1) translateY(-1.625rem); +} +.ui-slider:not(.is-disabled).is-active .ui-slider__marker-text, .ui-slider:not(.is-disabled).is-dragging .ui-slider__marker-text { + color: white; +} +.ui-slider:not(.is-disabled).is-active .ui-slider__snap-point, .ui-slider:not(.is-disabled).is-dragging .ui-slider__snap-point { + opacity: 1; +} +.ui-slider:not(.is-disabled).is-active .ui-slider__icon .ui-icon, .ui-slider:not(.is-disabled).is-dragging .ui-slider__icon .ui-icon { + color: #607d8b; +} +.ui-slider.is-disabled .ui-slider__icon { + opacity: 0.6; +} +.ui-slider.is-disabled .ui-slider__track { + cursor: default; +} +.ui-slider.is-disabled .ui-slider__track-fill { + background-color: transparent; +} +.ui-slider.is-disabled .ui-slider__thumb { + background-color: #DDD; + border: 0.125rem solid white; +} +.ui-slider__icon { + margin-right: 1rem; +} +.ui-slider__icon .ui-icon { + color: rgba(0, 0, 0, 0.54); + -webkit-transition: color 0.2s ease; + transition: color 0.2s ease; +} +.ui-slider__track { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 1.125rem; + margin: 0 auto; + position: relative; + width: 100%; +} +.ui-slider__track-background, +.ui-slider__track-fill { + content: ''; + display: block; + height: 0.1875rem; + left: 0; + position: absolute; + top: 0.46875rem; +} +.ui-slider__track-background { + background-color: rgba(0, 0, 0, 0.12); + width: 100%; +} +.ui-slider__snap-point { + background-color: rgba(0, 0, 0, 0.75); + height: 0.1875rem; + opacity: 0; + position: absolute; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; + width: 0.125rem; + z-index: 1; +} +.ui-slider__track-fill { + background-color: #607d8b; + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + width: 100%; +} +.ui-slider__thumb { + background-color: #607d8b; + border-radius: 50%; + cursor: inherit; + display: block; + height: 0.875rem; + left: 0; + position: relative; + width: 0.875rem; + z-index: 1; +} +.ui-slider__thumb::before { + background-color: rgba(96, 125, 139, 0.38); + border-radius: 50%; + content: ''; + display: block; + height: 2.25rem; + margin-left: -0.6875rem; + margin-top: -0.6875rem; + position: absolute; + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: -webkit-transform 0.2s ease; + transition: -webkit-transform 0.2s ease; + transition: transform 0.2s ease; + transition: transform 0.2s ease, -webkit-transform 0.2s ease; + width: 2.25rem; +} +.ui-slider__marker { + height: 2.25rem; + margin-left: -0.6875rem; + margin-top: -0.6875rem; + opacity: 0; + position: absolute; + -webkit-transform: scale(0) translateY(0); + -ms-transform: scale(0) translateY(0); + transform: scale(0) translateY(0); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 2.25rem; +} +.ui-slider__marker svg { + fill: #607d8b; + height: 2.25rem; + width: 2.25rem; +} +.ui-slider__marker-text { + color: #607d8b; + font-size: 0.8125rem; + font-weight: 500; + left: 0; + position: absolute; + text-align: center; + top: 0.25rem; + -webkit-transition: color 0.2s ease; + transition: color 0.2s ease; + width: 2.25rem; +} +.ui-slider--is-dragging { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.ui-tabs { + margin-bottom: 1.5rem; + width: 100%; +} +.ui-tabs.is-fullwidth .ui-tab-header-item { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-tabs.is-raised { + border: none; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.ui-tabs.is-raised .ui-tabs__body { + border: none; +} +.ui-tabs__header { + position: relative; + width: 100%; +} +.ui-tabs__header-items { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + margin: 0; + padding: 0; + position: relative; +} +.ui-tabs__active-tab-indicator { + bottom: 0; + -webkit-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + height: 0.125rem; + position: absolute; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; +} +.ui-tabs__body { + background-color: white; + border-radius: 0; + border: 0.0625rem solid #eeeeee; + border-top: 0; + margin: 0; + padding: 1rem; +} +.ui-tabs--background-color-default .ui-tabs__header { + background-color: #eeeeee; +} +body[modality="keyboard"] .ui-tabs--background-color-default .ui-tab-header-item:focus { + outline: 1px solid #607d8b; +} +body[modality="keyboard"] .ui-tabs--background-color-primary .ui-tab-header-item:focus, body[modality="keyboard"] +.ui-tabs--background-color-accent .ui-tab-header-item:focus, body[modality="keyboard"] +.ui-tabs--background-color-clear .ui-tab-header-item:focus { + outline: 1px solid white; +} +.ui-tabs--background-color-primary .ui-ripple-ink__ink.is-held, +.ui-tabs--background-color-accent .ui-ripple-ink__ink.is-held, +.ui-tabs--background-color-clear .ui-ripple-ink__ink.is-held { + opacity: 0.7; +} +.ui-tabs--background-color-primary .ui-tabs__header { + background-color: #607d8b; +} +.ui-tabs--background-color-accent .ui-tabs__header { + background-color: #1976d2; +} +.ui-tabs--background-color-clear .ui-tabs__header { + background-color: transparent; +} +.ui-tabs--background-color-clear .ui-tabs__header + .ui-tabs__body { + border-top: 1px solid rgba(0, 0, 0, 0.12); +} +.ui-tabs--text-color-black .ui-tab-header-item { + color: rgba(0, 0, 0, 0.54); +} +.ui-tabs--text-color-black .ui-tab-header-item__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-tabs--text-color-white .ui-tab-header-item { + color: rgba(255, 255, 255, 0.65); +} +.ui-tabs--text-color-white .ui-tab-header-item__icon { + color: rgba(255, 255, 255, 0.65); +} +.ui-tabs--text-color-active-white .ui-tab-header-item.is-active { + color: white; +} +.ui-tabs--text-color-active-white .ui-tab-header-item.is-active .ui-tab-header-item__icon { + color: white; +} +.ui-tabs--text-color-active-primary .ui-tab-header-item.is-active { + color: #607d8b; +} +.ui-tabs--text-color-active-primary .ui-tab-header-item.is-active .ui-tab-header-item__icon { + color: #607d8b; +} +.ui-tabs--text-color-active-accent .ui-tab-header-item.is-active { + color: #1976d2; +} +.ui-tabs--text-color-active-accent .ui-tab-header-item.is-active .ui-tab-header-item__icon { + color: #1976d2; +} +.ui-tabs--indicator-color-primary .ui-tabs__active-tab-indicator { + background-color: #607d8b; +} +.ui-tabs--indicator-color-accent .ui-tabs__active-tab-indicator { + background-color: #1976d2; +} +.ui-tabs--indicator-color-white .ui-tabs__active-tab-indicator { + background-color: white; +} + +.ui-tab-header-item { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + height: 3rem; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + min-width: 5rem; + padding: 0 0.75rem; + position: relative; + text-transform: uppercase; +} +.ui-tab-header-item:hover { + background-color: rgba(0, 0, 0, 0.05); +} +.ui-tab-header-item.is-disabled { + background-color: transparent; + cursor: default; + opacity: 0.4; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ui-tab-header-item--type-icon-and-text { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 4.5rem; +} +.ui-tab-header-item--type-icon-and-text .ui-tab-header-item__icon { + margin-bottom: 0.25rem; +} +.ui-tab-header-item__text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-size: 0.9375rem; + font-weight: 500; +} +.ui-tab-header-item__icon { + height: 1.5rem; + width: 1.5rem; +} +.ui-tab-header-item__icon .ui-icon { + cursor: inherit; +} + +.ui-tab { + outline: none; +} + +.autocomplete-item { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: transparent; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 8px 12px; + text-align: left; + top: 100%; + width: 100%; +} +.autocomplete-item:hover { + background-color: rgba(0, 0, 0, 0.06); +} +.autocomplete-item.selected { + background-color: rgba(0, 0, 0, 0.1); +} +.autocomplete-item .item-value { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + line-height: 32px; +} +.autocomplete-item .item-actions { + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; +} + +.autocomplete { + background-color: #ffffff; + -webkit-box-shadow: 1px 2px 8px #757575; + box-shadow: 1px 2px 8px #757575; + display: block; + list-style: none; + margin: 0 0 8px; + padding: 0; + position: absolute; + top: 100%; + width: 100%; + z-index: 1; +} + +.editor-no-options { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + color: rgba(0, 0, 0, 0.38); +} +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} +.cm-fat-cursor-mark { + background-color: rgba(20, 255, 20, 0.5); + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; +} +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: -20px; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; margin-right: -30px; + padding-bottom: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 30px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -30px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + padding: 0.1px; /* Force widget margins to stay inside of the container */ +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } + +.codemirror-wrapper .CodeMirror { + font-family: monospace; + padding: 0; + -webkit-transition: all 200ms ease; + transition: all 200ms ease; +} +.codemirror-wrapper .ui-textbox__feedback { + border-top: 1px solid rgba(0, 0, 0, 0.12); + -webkit-transition: all 200ms ease; + transition: all 200ms ease; +} +.codemirror-wrapper:hover:not(.is-disabled) .ui-textbox__feedback { + border-top: 1px solid rgba(0, 0, 0, 0.3); +} +.codemirror-wrapper.is-active:not(.is-disabled) .ui-textbox__feedback { + border-top: 2px solid #607d8b; +} +.codemirror-wrapper.is-invalid:not(.is-disabled) .CodeMirror { + border-bottom: 1px solid #f44336; +} +.codemirror-wrapper.is-disabled .ui-textbox__feedback { + border-top: 1px dotted rgba(0, 0, 0, 0.12); +} + +.complex-list-item { + border: 1px solid rgba(0, 0, 0, 0.12); + border-radius: 2px; + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + padding: 16px 16px 0; + -webkit-transition: -webkit-box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); + transition: -webkit-box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); + transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); + transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); +} +.complex-list-item:hover { + -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); +} +.complex-list-item.is-current { + -webkit-box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); + box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); +} +.complex-list-item-hidden { + height: 100px; +} +.complex-list-item-collapsed { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + padding-bottom: 16px; +} +.complex-list-item-collapsed-index { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + color: rgba(0, 0, 0, 0.54); + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.complex-list-item-collapsed-title { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + color: rgba(0, 0, 0, 0.87); + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + overflow: hidden; + padding: 0 16px; + text-overflow: ellipsis; + white-space: nowrap; +} +.complex-list-item-collapsed-caret { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.complex-list-item-inner { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + cursor: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + min-width: 100px; + padding: 0; + position: relative; + z-index: 1; +} +.complex-list-item-inner > form { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + height: 100%; + overflow: visible; + padding: 0; + width: 100%; +} +.complex-list-item-inner > form:before, .complex-list-item-inner > form:after { + content: ''; + display: table; +} +.complex-list-item-inner > form:after { + clear: both; +} +.complex-list-item-inner .input-container { + -webkit-align-content: flex-start; + -ms-flex-line-pack: start; + align-content: flex-start; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + overflow: auto; + padding: 18px; +} +.complex-list-item-inner .hidden-submit { + display: none; +} +.complex-list-item + .complex-list-item { + margin-top: 10px; +} +.complex-list-item-actions { + border-top: 1px solid #eeeeee; + margin: 16px -16px 0; + padding: 8px 16px; + width: calc(100% + 32px); +} +.complex-list-item-actions-inner { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + width: 100%; +} +.complex-list-item-actions-left { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + color: rgba(0, 0, 0, 0.54); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + height: 36px; +} +.complex-list-item-position { + color: rgba(0, 0, 0, 0.54); + margin: 0 4px; +} +.complex-list-item-actions-right { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} + +.complex-list { + margin: 0; + width: 100%; +} +.complex-list > .ui-textbox { + margin-bottom: 10px; +} +.hide-show-enter, +.hide-show-leave-to { + opacity: 0; +} +.hide-show-enter-to, +.hide-show-leave { + opacity: 1; +} +.hide-show-enter-active, +.hide-show-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +/*! + * Quill Editor v1.3.6 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */ +.ql-container { + box-sizing: border-box; + font-family: Helvetica, Arial, sans-serif; + font-size: 13px; + height: 100%; + margin: 0px; + position: relative; +} +.ql-container.ql-disabled .ql-tooltip { + visibility: hidden; +} +.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before { + pointer-events: none; +} +.ql-clipboard { + left: -100000px; + height: 1px; + overflow-y: hidden; + position: absolute; + top: 50%; +} +.ql-clipboard p { + margin: 0; + padding: 0; +} +.ql-editor { + box-sizing: border-box; + line-height: 1.42; + height: 100%; + outline: none; + overflow-y: auto; + padding: 12px 15px; + tab-size: 4; + -moz-tab-size: 4; + text-align: left; + white-space: pre-wrap; + word-wrap: break-word; +} +.ql-editor > * { + cursor: text; +} +.ql-editor p, +.ql-editor ol, +.ql-editor ul, +.ql-editor pre, +.ql-editor blockquote, +.ql-editor h1, +.ql-editor h2, +.ql-editor h3, +.ql-editor h4, +.ql-editor h5, +.ql-editor h6 { + margin: 0; + padding: 0; + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol, +.ql-editor ul { + padding-left: 1.5em; +} +.ql-editor ol > li, +.ql-editor ul > li { + list-style-type: none; +} +.ql-editor ul > li::before { + content: '\2022'; +} +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} +.ql-editor ul[data-checked=true] > li *, +.ql-editor ul[data-checked=false] > li * { + pointer-events: all; +} +.ql-editor ul[data-checked=true] > li::before, +.ql-editor ul[data-checked=false] > li::before { + color: #777; + cursor: pointer; + pointer-events: all; +} +.ql-editor ul[data-checked=true] > li::before { + content: '\2611'; +} +.ql-editor ul[data-checked=false] > li::before { + content: '\2610'; +} +.ql-editor li::before { + display: inline-block; + white-space: nowrap; + width: 1.2em; +} +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 1.5em; +} +.ql-editor ol li { + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; + counter-increment: list-0; +} +.ql-editor ol li:before { + content: counter(list-0, decimal) '. '; +} +.ql-editor ol li.ql-indent-1 { + counter-increment: list-1; +} +.ql-editor ol li.ql-indent-1:before { + content: counter(list-1, lower-alpha) '. '; +} +.ql-editor ol li.ql-indent-1 { + counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-2 { + counter-increment: list-2; +} +.ql-editor ol li.ql-indent-2:before { + content: counter(list-2, lower-roman) '. '; +} +.ql-editor ol li.ql-indent-2 { + counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-3 { + counter-increment: list-3; +} +.ql-editor ol li.ql-indent-3:before { + content: counter(list-3, decimal) '. '; +} +.ql-editor ol li.ql-indent-3 { + counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-4 { + counter-increment: list-4; +} +.ql-editor ol li.ql-indent-4:before { + content: counter(list-4, lower-alpha) '. '; +} +.ql-editor ol li.ql-indent-4 { + counter-reset: list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-5 { + counter-increment: list-5; +} +.ql-editor ol li.ql-indent-5:before { + content: counter(list-5, lower-roman) '. '; +} +.ql-editor ol li.ql-indent-5 { + counter-reset: list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-6 { + counter-increment: list-6; +} +.ql-editor ol li.ql-indent-6:before { + content: counter(list-6, decimal) '. '; +} +.ql-editor ol li.ql-indent-6 { + counter-reset: list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-7 { + counter-increment: list-7; +} +.ql-editor ol li.ql-indent-7:before { + content: counter(list-7, lower-alpha) '. '; +} +.ql-editor ol li.ql-indent-7 { + counter-reset: list-8 list-9; +} +.ql-editor ol li.ql-indent-8 { + counter-increment: list-8; +} +.ql-editor ol li.ql-indent-8:before { + content: counter(list-8, lower-roman) '. '; +} +.ql-editor ol li.ql-indent-8 { + counter-reset: list-9; +} +.ql-editor ol li.ql-indent-9 { + counter-increment: list-9; +} +.ql-editor ol li.ql-indent-9:before { + content: counter(list-9, decimal) '. '; +} +.ql-editor .ql-indent-1:not(.ql-direction-rtl) { + padding-left: 3em; +} +.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { + padding-left: 4.5em; +} +.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 3em; +} +.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 4.5em; +} +.ql-editor .ql-indent-2:not(.ql-direction-rtl) { + padding-left: 6em; +} +.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { + padding-left: 7.5em; +} +.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 6em; +} +.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 7.5em; +} +.ql-editor .ql-indent-3:not(.ql-direction-rtl) { + padding-left: 9em; +} +.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { + padding-left: 10.5em; +} +.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 9em; +} +.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 10.5em; +} +.ql-editor .ql-indent-4:not(.ql-direction-rtl) { + padding-left: 12em; +} +.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { + padding-left: 13.5em; +} +.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 12em; +} +.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 13.5em; +} +.ql-editor .ql-indent-5:not(.ql-direction-rtl) { + padding-left: 15em; +} +.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { + padding-left: 16.5em; +} +.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 15em; +} +.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 16.5em; +} +.ql-editor .ql-indent-6:not(.ql-direction-rtl) { + padding-left: 18em; +} +.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { + padding-left: 19.5em; +} +.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 18em; +} +.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 19.5em; +} +.ql-editor .ql-indent-7:not(.ql-direction-rtl) { + padding-left: 21em; +} +.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { + padding-left: 22.5em; +} +.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 21em; +} +.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 22.5em; +} +.ql-editor .ql-indent-8:not(.ql-direction-rtl) { + padding-left: 24em; +} +.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { + padding-left: 25.5em; +} +.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 24em; +} +.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 25.5em; +} +.ql-editor .ql-indent-9:not(.ql-direction-rtl) { + padding-left: 27em; +} +.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { + padding-left: 28.5em; +} +.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 27em; +} +.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 28.5em; +} +.ql-editor .ql-video { + display: block; + max-width: 100%; +} +.ql-editor .ql-video.ql-align-center { + margin: 0 auto; +} +.ql-editor .ql-video.ql-align-right { + margin: 0 0 0 auto; +} +.ql-editor .ql-bg-black { + background-color: #000; +} +.ql-editor .ql-bg-red { + background-color: #e60000; +} +.ql-editor .ql-bg-orange { + background-color: #f90; +} +.ql-editor .ql-bg-yellow { + background-color: #ff0; +} +.ql-editor .ql-bg-green { + background-color: #008a00; +} +.ql-editor .ql-bg-blue { + background-color: #06c; +} +.ql-editor .ql-bg-purple { + background-color: #93f; +} +.ql-editor .ql-color-white { + color: #fff; +} +.ql-editor .ql-color-red { + color: #e60000; +} +.ql-editor .ql-color-orange { + color: #f90; +} +.ql-editor .ql-color-yellow { + color: #ff0; +} +.ql-editor .ql-color-green { + color: #008a00; +} +.ql-editor .ql-color-blue { + color: #06c; +} +.ql-editor .ql-color-purple { + color: #93f; +} +.ql-editor .ql-font-serif { + font-family: Georgia, Times New Roman, serif; +} +.ql-editor .ql-font-monospace { + font-family: Monaco, Courier New, monospace; +} +.ql-editor .ql-size-small { + font-size: 0.75em; +} +.ql-editor .ql-size-large { + font-size: 1.5em; +} +.ql-editor .ql-size-huge { + font-size: 2.5em; +} +.ql-editor .ql-direction-rtl { + direction: rtl; + text-align: inherit; +} +.ql-editor .ql-align-center { + text-align: center; +} +.ql-editor .ql-align-justify { + text-align: justify; +} +.ql-editor .ql-align-right { + text-align: right; +} +.ql-editor.ql-blank::before { + color: rgba(0,0,0,0.6); + content: attr(data-placeholder); + font-style: italic; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} +/*! + * Quill Editor v1.3.6 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */ +.ql-container { + box-sizing: border-box; + font-family: Helvetica, Arial, sans-serif; + font-size: 13px; + height: 100%; + margin: 0px; + position: relative; +} +.ql-container.ql-disabled .ql-tooltip { + visibility: hidden; +} +.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before { + pointer-events: none; +} +.ql-clipboard { + left: -100000px; + height: 1px; + overflow-y: hidden; + position: absolute; + top: 50%; +} +.ql-clipboard p { + margin: 0; + padding: 0; +} +.ql-editor { + box-sizing: border-box; + line-height: 1.42; + height: 100%; + outline: none; + overflow-y: auto; + padding: 12px 15px; + tab-size: 4; + -moz-tab-size: 4; + text-align: left; + white-space: pre-wrap; + word-wrap: break-word; +} +.ql-editor > * { + cursor: text; +} +.ql-editor p, +.ql-editor ol, +.ql-editor ul, +.ql-editor pre, +.ql-editor blockquote, +.ql-editor h1, +.ql-editor h2, +.ql-editor h3, +.ql-editor h4, +.ql-editor h5, +.ql-editor h6 { + margin: 0; + padding: 0; + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol, +.ql-editor ul { + padding-left: 1.5em; +} +.ql-editor ol > li, +.ql-editor ul > li { + list-style-type: none; +} +.ql-editor ul > li::before { + content: '\2022'; +} +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} +.ql-editor ul[data-checked=true] > li *, +.ql-editor ul[data-checked=false] > li * { + pointer-events: all; +} +.ql-editor ul[data-checked=true] > li::before, +.ql-editor ul[data-checked=false] > li::before { + color: #777; + cursor: pointer; + pointer-events: all; +} +.ql-editor ul[data-checked=true] > li::before { + content: '\2611'; +} +.ql-editor ul[data-checked=false] > li::before { + content: '\2610'; +} +.ql-editor li::before { + display: inline-block; + white-space: nowrap; + width: 1.2em; +} +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 1.5em; +} +.ql-editor ol li { + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; + counter-increment: list-0; +} +.ql-editor ol li:before { + content: counter(list-0, decimal) '. '; +} +.ql-editor ol li.ql-indent-1 { + counter-increment: list-1; +} +.ql-editor ol li.ql-indent-1:before { + content: counter(list-1, lower-alpha) '. '; +} +.ql-editor ol li.ql-indent-1 { + counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-2 { + counter-increment: list-2; +} +.ql-editor ol li.ql-indent-2:before { + content: counter(list-2, lower-roman) '. '; +} +.ql-editor ol li.ql-indent-2 { + counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-3 { + counter-increment: list-3; +} +.ql-editor ol li.ql-indent-3:before { + content: counter(list-3, decimal) '. '; +} +.ql-editor ol li.ql-indent-3 { + counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-4 { + counter-increment: list-4; +} +.ql-editor ol li.ql-indent-4:before { + content: counter(list-4, lower-alpha) '. '; +} +.ql-editor ol li.ql-indent-4 { + counter-reset: list-5 list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-5 { + counter-increment: list-5; +} +.ql-editor ol li.ql-indent-5:before { + content: counter(list-5, lower-roman) '. '; +} +.ql-editor ol li.ql-indent-5 { + counter-reset: list-6 list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-6 { + counter-increment: list-6; +} +.ql-editor ol li.ql-indent-6:before { + content: counter(list-6, decimal) '. '; +} +.ql-editor ol li.ql-indent-6 { + counter-reset: list-7 list-8 list-9; +} +.ql-editor ol li.ql-indent-7 { + counter-increment: list-7; +} +.ql-editor ol li.ql-indent-7:before { + content: counter(list-7, lower-alpha) '. '; +} +.ql-editor ol li.ql-indent-7 { + counter-reset: list-8 list-9; +} +.ql-editor ol li.ql-indent-8 { + counter-increment: list-8; +} +.ql-editor ol li.ql-indent-8:before { + content: counter(list-8, lower-roman) '. '; +} +.ql-editor ol li.ql-indent-8 { + counter-reset: list-9; +} +.ql-editor ol li.ql-indent-9 { + counter-increment: list-9; +} +.ql-editor ol li.ql-indent-9:before { + content: counter(list-9, decimal) '. '; +} +.ql-editor .ql-indent-1:not(.ql-direction-rtl) { + padding-left: 3em; +} +.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { + padding-left: 4.5em; +} +.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 3em; +} +.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 4.5em; +} +.ql-editor .ql-indent-2:not(.ql-direction-rtl) { + padding-left: 6em; +} +.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { + padding-left: 7.5em; +} +.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 6em; +} +.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 7.5em; +} +.ql-editor .ql-indent-3:not(.ql-direction-rtl) { + padding-left: 9em; +} +.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { + padding-left: 10.5em; +} +.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 9em; +} +.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 10.5em; +} +.ql-editor .ql-indent-4:not(.ql-direction-rtl) { + padding-left: 12em; +} +.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { + padding-left: 13.5em; +} +.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 12em; +} +.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 13.5em; +} +.ql-editor .ql-indent-5:not(.ql-direction-rtl) { + padding-left: 15em; +} +.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { + padding-left: 16.5em; +} +.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 15em; +} +.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 16.5em; +} +.ql-editor .ql-indent-6:not(.ql-direction-rtl) { + padding-left: 18em; +} +.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { + padding-left: 19.5em; +} +.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 18em; +} +.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 19.5em; +} +.ql-editor .ql-indent-7:not(.ql-direction-rtl) { + padding-left: 21em; +} +.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { + padding-left: 22.5em; +} +.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 21em; +} +.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 22.5em; +} +.ql-editor .ql-indent-8:not(.ql-direction-rtl) { + padding-left: 24em; +} +.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { + padding-left: 25.5em; +} +.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 24em; +} +.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 25.5em; +} +.ql-editor .ql-indent-9:not(.ql-direction-rtl) { + padding-left: 27em; +} +.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { + padding-left: 28.5em; +} +.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 27em; +} +.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 28.5em; +} +.ql-editor .ql-video { + display: block; + max-width: 100%; +} +.ql-editor .ql-video.ql-align-center { + margin: 0 auto; +} +.ql-editor .ql-video.ql-align-right { + margin: 0 0 0 auto; +} +.ql-editor .ql-bg-black { + background-color: #000; +} +.ql-editor .ql-bg-red { + background-color: #e60000; +} +.ql-editor .ql-bg-orange { + background-color: #f90; +} +.ql-editor .ql-bg-yellow { + background-color: #ff0; +} +.ql-editor .ql-bg-green { + background-color: #008a00; +} +.ql-editor .ql-bg-blue { + background-color: #06c; +} +.ql-editor .ql-bg-purple { + background-color: #93f; +} +.ql-editor .ql-color-white { + color: #fff; +} +.ql-editor .ql-color-red { + color: #e60000; +} +.ql-editor .ql-color-orange { + color: #f90; +} +.ql-editor .ql-color-yellow { + color: #ff0; +} +.ql-editor .ql-color-green { + color: #008a00; +} +.ql-editor .ql-color-blue { + color: #06c; +} +.ql-editor .ql-color-purple { + color: #93f; +} +.ql-editor .ql-font-serif { + font-family: Georgia, Times New Roman, serif; +} +.ql-editor .ql-font-monospace { + font-family: Monaco, Courier New, monospace; +} +.ql-editor .ql-size-small { + font-size: 0.75em; +} +.ql-editor .ql-size-large { + font-size: 1.5em; +} +.ql-editor .ql-size-huge { + font-size: 2.5em; +} +.ql-editor .ql-direction-rtl { + direction: rtl; + text-align: inherit; +} +.ql-editor .ql-align-center { + text-align: center; +} +.ql-editor .ql-align-justify { + text-align: justify; +} +.ql-editor .ql-align-right { + text-align: right; +} +.ql-editor.ql-blank::before { + color: rgba(0,0,0,0.6); + content: attr(data-placeholder); + font-style: italic; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} +.ql-bubble.ql-toolbar:after, +.ql-bubble .ql-toolbar:after { + clear: both; + content: ''; + display: table; +} +.ql-bubble.ql-toolbar button, +.ql-bubble .ql-toolbar button { + background: none; + border: none; + cursor: pointer; + display: inline-block; + float: left; + height: 24px; + padding: 3px 5px; + width: 28px; +} +.ql-bubble.ql-toolbar button svg, +.ql-bubble .ql-toolbar button svg { + float: left; + height: 100%; +} +.ql-bubble.ql-toolbar button:active:hover, +.ql-bubble .ql-toolbar button:active:hover { + outline: none; +} +.ql-bubble.ql-toolbar input.ql-image[type=file], +.ql-bubble .ql-toolbar input.ql-image[type=file] { + display: none; +} +.ql-bubble.ql-toolbar button:hover, +.ql-bubble .ql-toolbar button:hover, +.ql-bubble.ql-toolbar button:focus, +.ql-bubble .ql-toolbar button:focus, +.ql-bubble.ql-toolbar button.ql-active, +.ql-bubble .ql-toolbar button.ql-active, +.ql-bubble.ql-toolbar .ql-picker-label:hover, +.ql-bubble .ql-toolbar .ql-picker-label:hover, +.ql-bubble.ql-toolbar .ql-picker-label.ql-active, +.ql-bubble .ql-toolbar .ql-picker-label.ql-active, +.ql-bubble.ql-toolbar .ql-picker-item:hover, +.ql-bubble .ql-toolbar .ql-picker-item:hover, +.ql-bubble.ql-toolbar .ql-picker-item.ql-selected, +.ql-bubble .ql-toolbar .ql-picker-item.ql-selected { + color: #fff; +} +.ql-bubble.ql-toolbar button:hover .ql-fill, +.ql-bubble .ql-toolbar button:hover .ql-fill, +.ql-bubble.ql-toolbar button:focus .ql-fill, +.ql-bubble .ql-toolbar button:focus .ql-fill, +.ql-bubble.ql-toolbar button.ql-active .ql-fill, +.ql-bubble .ql-toolbar button.ql-active .ql-fill, +.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, +.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { + fill: #fff; +} +.ql-bubble.ql-toolbar button:hover .ql-stroke, +.ql-bubble .ql-toolbar button:hover .ql-stroke, +.ql-bubble.ql-toolbar button:focus .ql-stroke, +.ql-bubble .ql-toolbar button:focus .ql-stroke, +.ql-bubble.ql-toolbar button.ql-active .ql-stroke, +.ql-bubble .ql-toolbar button.ql-active .ql-stroke, +.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-bubble.ql-toolbar button:hover .ql-stroke-miter, +.ql-bubble .ql-toolbar button:hover .ql-stroke-miter, +.ql-bubble.ql-toolbar button:focus .ql-stroke-miter, +.ql-bubble .ql-toolbar button:focus .ql-stroke-miter, +.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter, +.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter, +.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, +.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { + stroke: #fff; +} +@media (pointer: coarse) { + .ql-bubble.ql-toolbar button:hover:not(.ql-active), + .ql-bubble .ql-toolbar button:hover:not(.ql-active) { + color: #ccc; + } + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { + fill: #ccc; + } + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, + .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { + stroke: #ccc; + } +} +.ql-bubble { + box-sizing: border-box; +} +.ql-bubble * { + box-sizing: border-box; +} +.ql-bubble .ql-hidden { + display: none; +} +.ql-bubble .ql-out-bottom, +.ql-bubble .ql-out-top { + visibility: hidden; +} +.ql-bubble .ql-tooltip { + position: absolute; + transform: translateY(10px); +} +.ql-bubble .ql-tooltip a { + cursor: pointer; + text-decoration: none; +} +.ql-bubble .ql-tooltip.ql-flip { + transform: translateY(-10px); +} +.ql-bubble .ql-formats { + display: inline-block; + vertical-align: middle; +} +.ql-bubble .ql-formats:after { + clear: both; + content: ''; + display: table; +} +.ql-bubble .ql-stroke { + fill: none; + stroke: #ccc; + stroke-linecap: round; + stroke-linejoin: round; + stroke-width: 2; +} +.ql-bubble .ql-stroke-miter { + fill: none; + stroke: #ccc; + stroke-miterlimit: 10; + stroke-width: 2; +} +.ql-bubble .ql-fill, +.ql-bubble .ql-stroke.ql-fill { + fill: #ccc; +} +.ql-bubble .ql-empty { + fill: none; +} +.ql-bubble .ql-even { + fill-rule: evenodd; +} +.ql-bubble .ql-thin, +.ql-bubble .ql-stroke.ql-thin { + stroke-width: 1; +} +.ql-bubble .ql-transparent { + opacity: 0.4; +} +.ql-bubble .ql-direction svg:last-child { + display: none; +} +.ql-bubble .ql-direction.ql-active svg:last-child { + display: inline; +} +.ql-bubble .ql-direction.ql-active svg:first-child { + display: none; +} +.ql-bubble .ql-editor h1 { + font-size: 2em; +} +.ql-bubble .ql-editor h2 { + font-size: 1.5em; +} +.ql-bubble .ql-editor h3 { + font-size: 1.17em; +} +.ql-bubble .ql-editor h4 { + font-size: 1em; +} +.ql-bubble .ql-editor h5 { + font-size: 0.83em; +} +.ql-bubble .ql-editor h6 { + font-size: 0.67em; +} +.ql-bubble .ql-editor a { + text-decoration: underline; +} +.ql-bubble .ql-editor blockquote { + border-left: 4px solid #ccc; + margin-bottom: 5px; + margin-top: 5px; + padding-left: 16px; +} +.ql-bubble .ql-editor code, +.ql-bubble .ql-editor pre { + background-color: #f0f0f0; + border-radius: 3px; +} +.ql-bubble .ql-editor pre { + white-space: pre-wrap; + margin-bottom: 5px; + margin-top: 5px; + padding: 5px 10px; +} +.ql-bubble .ql-editor code { + font-size: 85%; + padding: 2px 4px; +} +.ql-bubble .ql-editor pre.ql-syntax { + background-color: #23241f; + color: #f8f8f2; + overflow: visible; +} +.ql-bubble .ql-editor img { + max-width: 100%; +} +.ql-bubble .ql-picker { + color: #ccc; + display: inline-block; + float: left; + font-size: 14px; + font-weight: 500; + height: 24px; + position: relative; + vertical-align: middle; +} +.ql-bubble .ql-picker-label { + cursor: pointer; + display: inline-block; + height: 100%; + padding-left: 8px; + padding-right: 2px; + position: relative; + width: 100%; +} +.ql-bubble .ql-picker-label::before { + display: inline-block; + line-height: 22px; +} +.ql-bubble .ql-picker-options { + background-color: #444; + display: none; + min-width: 100%; + padding: 4px 8px; + position: absolute; + white-space: nowrap; +} +.ql-bubble .ql-picker-options .ql-picker-item { + cursor: pointer; + display: block; + padding-bottom: 5px; + padding-top: 5px; +} +.ql-bubble .ql-picker.ql-expanded .ql-picker-label { + color: #777; + z-index: 2; +} +.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill { + fill: #777; +} +.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke { + stroke: #777; +} +.ql-bubble .ql-picker.ql-expanded .ql-picker-options { + display: block; + margin-top: -1px; + top: 100%; + z-index: 1; +} +.ql-bubble .ql-color-picker, +.ql-bubble .ql-icon-picker { + width: 28px; +} +.ql-bubble .ql-color-picker .ql-picker-label, +.ql-bubble .ql-icon-picker .ql-picker-label { + padding: 2px 4px; +} +.ql-bubble .ql-color-picker .ql-picker-label svg, +.ql-bubble .ql-icon-picker .ql-picker-label svg { + right: 4px; +} +.ql-bubble .ql-icon-picker .ql-picker-options { + padding: 4px 0px; +} +.ql-bubble .ql-icon-picker .ql-picker-item { + height: 24px; + width: 24px; + padding: 2px 4px; +} +.ql-bubble .ql-color-picker .ql-picker-options { + padding: 3px 5px; + width: 152px; +} +.ql-bubble .ql-color-picker .ql-picker-item { + border: 1px solid transparent; + float: left; + height: 16px; + margin: 2px; + padding: 0px; + width: 16px; +} +.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { + position: absolute; + margin-top: -9px; + right: 0; + top: 50%; + width: 18px; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before, +.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before, +.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before, +.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before, +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before { + content: attr(data-label); +} +.ql-bubble .ql-picker.ql-header { + width: 98px; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item::before { + content: 'Normal'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + content: 'Heading 1'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + content: 'Heading 2'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + content: 'Heading 3'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + content: 'Heading 4'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + content: 'Heading 5'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + content: 'Heading 6'; +} +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + font-size: 2em; +} +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + font-size: 1.5em; +} +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + font-size: 1.17em; +} +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + font-size: 1em; +} +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + font-size: 0.83em; +} +.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + font-size: 0.67em; +} +.ql-bubble .ql-picker.ql-font { + width: 108px; +} +.ql-bubble .ql-picker.ql-font .ql-picker-label::before, +.ql-bubble .ql-picker.ql-font .ql-picker-item::before { + content: 'Sans Serif'; +} +.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]::before, +.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + content: 'Serif'; +} +.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, +.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + content: 'Monospace'; +} +.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + font-family: Georgia, Times New Roman, serif; +} +.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + font-family: Monaco, Courier New, monospace; +} +.ql-bubble .ql-picker.ql-size { + width: 98px; +} +.ql-bubble .ql-picker.ql-size .ql-picker-label::before, +.ql-bubble .ql-picker.ql-size .ql-picker-item::before { + content: 'Normal'; +} +.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]::before, +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before { + content: 'Small'; +} +.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]::before, +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before { + content: 'Large'; +} +.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]::before, +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + content: 'Huge'; +} +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before { + font-size: 10px; +} +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before { + font-size: 18px; +} +.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + font-size: 32px; +} +.ql-bubble .ql-color-picker.ql-background .ql-picker-item { + background-color: #fff; +} +.ql-bubble .ql-color-picker.ql-color .ql-picker-item { + background-color: #000; +} +.ql-bubble .ql-toolbar .ql-formats { + margin: 8px 12px 8px 0px; +} +.ql-bubble .ql-toolbar .ql-formats:first-child { + margin-left: 12px; +} +.ql-bubble .ql-color-picker svg { + margin: 1px; +} +.ql-bubble .ql-color-picker .ql-picker-item.ql-selected, +.ql-bubble .ql-color-picker .ql-picker-item:hover { + border-color: #fff; +} +.ql-bubble .ql-tooltip { + background-color: #444; + border-radius: 25px; + color: #fff; +} +.ql-bubble .ql-tooltip-arrow { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + content: " "; + display: block; + left: 50%; + margin-left: -6px; + position: absolute; +} +.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow { + border-bottom: 6px solid #444; + top: -6px; +} +.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow { + border-top: 6px solid #444; + bottom: -6px; +} +.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor { + display: block; +} +.ql-bubble .ql-tooltip.ql-editing .ql-formats { + visibility: hidden; +} +.ql-bubble .ql-tooltip-editor { + display: none; +} +.ql-bubble .ql-tooltip-editor input[type=text] { + background: transparent; + border: none; + color: #fff; + font-size: 13px; + height: 100%; + outline: none; + padding: 10px 20px; + position: absolute; + width: 100%; +} +.ql-bubble .ql-tooltip-editor a { + top: 10px; + position: absolute; + right: 20px; +} +.ql-bubble .ql-tooltip-editor a:before { + color: #ccc; + content: "\D7"; + font-size: 16px; + font-weight: bold; +} +.ql-container.ql-bubble:not(.ql-disabled) a { + position: relative; + white-space: nowrap; +} +.ql-container.ql-bubble:not(.ql-disabled) a::before { + background-color: #444; + border-radius: 15px; + top: -5px; + font-size: 12px; + color: #fff; + content: attr(href); + font-weight: normal; + overflow: hidden; + padding: 5px 15px; + text-decoration: none; + z-index: 1; +} +.ql-container.ql-bubble:not(.ql-disabled) a::after { + border-top: 6px solid #444; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + top: 0; + content: " "; + height: 0; + width: 0; +} +.ql-container.ql-bubble:not(.ql-disabled) a::before, +.ql-container.ql-bubble:not(.ql-disabled) a::after { + left: 0; + margin-left: 50%; + position: absolute; + transform: translate(-50%, -100%); + transition: visibility 0s ease 200ms; + visibility: hidden; +} +.ql-container.ql-bubble:not(.ql-disabled) a:hover::before, +.ql-container.ql-bubble:not(.ql-disabled) a:hover::after { + visibility: visible; +} + +.editor-inline .wysiwyg-input { + color: inherit; + font-family: inherit; + font-size: inherit; + line-height: inherit; + word-break: inherit; + cursor: text; + min-height: 19px; + outline: none; + white-space: normal; +} +.editor-inline .wysiwyg-input::-moz-selection { + background-color: #81d4fa; +} +.editor-inline .wysiwyg-input::selection { + background-color: #81d4fa; +} +.editor-inline .ql-container, +.editor-inline .ql-editor { + color: inherit; + font-family: inherit; + font-size: inherit; + line-height: inherit; + word-break: inherit; +} +.wysiwyg-input *::-moz-selection { + background-color: #81d4fa; +} +.wysiwyg-input *::selection { + background-color: #81d4fa; +} +.ql-editor { + overflow: visible; + padding: 0; +} +.kiln-overlay-form .ql-container { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + font-size: 16px; + letter-spacing: normal; + line-height: normal; +} +.ql-container.ql-bubble:not(.ql-disabled) a { + white-space: inherit; +} +.ql-container.ql-bubble:not(.ql-disabled) a::before { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + color: #ffffff; +} +.ql-bubble .ql-tooltip { + z-index: 1; +} +.ql-bubble.ql-toolbar button, +.ql-bubble .ql-toolbar button { + height: 32px; + width: 32px; +} +.kiln-phrase-button { + color: inherit; + font-family: inherit; + font-size: inherit; + line-height: inherit; + word-break: inherit; + color: #ccc; + font-size: 21px; + font-weight: bold; +} +.kiln-phrase-button:hover { + color: #fff; +} +.ql-editor .kiln-phrase { + background-color: #fff2a8; +} +.ql-editor .clay-annotated { + background-color: #a8d1ff; +} +.ql-editor .clay-designed { + background-color: #ffb7b7; +} +.ui-textbox__input.wysiwyg-content { + height: auto; + min-height: 32px; +} +.ui-textbox__counter--wysiwyg { + font-size: 16px; + background-color: rgba(227, 242, 253, 0.75); + color: #1976d2; + line-height: 1em; + padding: .5em 1em; + top: auto; + mix-blend-mode: multiply; + font-family: "Noto Sans", Arial, sans-serif; +} +.ui-textbox__counter--wysiwyg-error { + background-color: rgba(255, 235, 238, 0.75); + color: #f44336; +} + +.magic-button-icon svg { + fill: rgba(0, 0, 0, 0.87); + height: 18px; + margin-left: 3px; + margin-top: 3px; + -webkit-transition: 100ms fill ease; + transition: 100ms fill ease; + width: 20px; +} +.is-active .magic-button-icon svg { + fill: #607d8b; +} +.is-disabled .magic-button-icon { + pointer-events: none; +} +.is-disabled .magic-button-icon svg { + fill: rgba(0, 0, 0, 0.38); +} +.is-invalid .magic-button-icon svg { + fill: #f44336; +} + +.editor-no-options { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + color: rgba(0, 0, 0, 0.38); +} +/* use variables and styling from KeenUI's UISlider component */ +.editor-range .noUi-target { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-touch-callout: none; + background: rgba(0, 0, 0, 0.12); + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 3px; + margin: 20px 0; + position: relative; + -ms-touch-action: none; + touch-action: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.editor-range .noUi-base, +.editor-range .noUi-connects { + height: 100%; + position: relative; + width: 100%; + z-index: 2; +} +.editor-range .noUi-connects { + overflow: hidden; + z-index: 0; +} +.editor-range .noUi-connect, +.editor-range .noUi-origin { + height: 100%; + left: 0; + position: absolute; + top: 0; + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + width: 100%; + will-change: transform; + z-index: 1; +} +.editor-range .noUi-connect { + background: #1976d2; +} +.editor-range .noUi-origin { + height: 0; + left: auto; + right: 0; +} +.editor-range .noUi-handle { + background: #1976d2; + border-radius: 50%; + cursor: default; + height: 14px; + left: auto; + position: absolute; + right: -7px; + top: -6px; + width: 14px; + z-index: 2; +} +.editor-range .noUi-handle:before { + background-color: rgba(25, 118, 210, 0.38); + border-radius: 50%; + content: ''; + display: block; + height: 36px; + left: -11px; + position: absolute; + top: -11px; + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: -webkit-transform 0.2s ease; + transition: -webkit-transform 0.2s ease; + transition: transform 0.2s ease; + transition: transform 0.2s ease, -webkit-transform 0.2s ease; + width: 36px; +} +.editor-range .noUi-state-tap .noUi-connect, +.editor-range .noUi-state-tap .noUi-origin { + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; +} +.editor-range .noUi-state-drag * { + cursor: inherit; +} +.editor-range .noUi-draggable { + cursor: ew-resize; +} +.editor-range:not(.has-tooltips) .noUi-active:before, +.editor-range:not(.has-tooltips) .noUi-handle:focus:before { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.editor-range .noUi-tooltip { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='36' height='36'%3E%3Cpath fill='%231976d2' d='M11 .5c-1.7.2-3.4.9-4.7 2-1.1.9-2 2-2.5 3.2-1.2 2.4-1.2 5.1-.1 7.7 1.1 2.6 2.8 5 5.3 7.5 1.2 1.2 2.8 2.7 3 2.7 0 0 .3-.2.6-.5 3.2-2.7 5.6-5.6 7.1-8.5.8-1.5 1.1-2.6 1.3-3.8.2-1.4 0-2.9-.5-4.3-1.2-3.2-4.1-5.4-7.5-5.8-.5-.2-1.5-.2-2-.2z'/%3E%3C/svg%3E"); + background-size: 36px 36px; + color: #ffffff; + display: block; + font-size: 13px; + font-weight: 600; + height: 36px; + line-height: 13px; + margin-left: -11px; + margin-top: -11px; + opacity: 0; + padding-top: 8px; + position: absolute; + text-align: center; + -webkit-transform: scale(0) translateY(0); + -ms-transform: scale(0) translateY(0); + transform: scale(0) translateY(0); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; + width: 36px; +} +.editor-range .noUi-active .noUi-tooltip, +.editor-range .noUi-handle:focus .noUi-tooltip { + opacity: 1; + -webkit-transform: scale(1) translateY(-26px); + -ms-transform: scale(1) translateY(-26px); + transform: scale(1) translateY(-26px); +} +.editor-range .noUi-pips { + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.editor-range .noUi-value { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 11px; + position: absolute; + white-space: nowrap; + text-align: center; +} +.editor-range .noUi-value:nth-of-type(2) { + -webkit-transform: translate(0, 50%); + -ms-transform: translate(0, 50%); + transform: translate(0, 50%); +} +.editor-range .noUi-value:last-of-type { + -webkit-transform: translate(-100%, 50%); + -ms-transform: translate(-100%, 50%); + transform: translate(-100%, 50%); +} +.editor-range .noUi-marker { + background-color: rgba(0, 0, 0, 0.75); + height: 3px; + position: absolute; + -webkit-transition: opacity .2s ease; + transition: opacity .2s ease; + width: 2px; + z-index: 1; +} + +.segmented-button-group { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 16px; +} +.segmented-button-group .reveal-enter, + .segmented-button-group .reveal-leave-to { + opacity: 0; +} +.segmented-button-group .reveal-enter-to, + .segmented-button-group .reveal-leave { + opacity: 1; +} +.segmented-button-group .reveal-enter-active, + .segmented-button-group .reveal-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.segmented-button-group .ui-textbox__label { + width: 100%; +} +.segmented-button-group .ui-textbox__label:before, .segmented-button-group .ui-textbox__label:after { + content: ''; + display: table; +} +.segmented-button-group .ui-textbox__label:after { + clear: both; +} +.segmented-button-group:hover .ui-textbox__label-text { + color: rgba(0, 0, 0, 0.75); +} +.segmented-button-group.has-floating-label .ui-textbox__label-text { + display: table; +} +.segmented-button-group.is-invalid .ui-textbox__label-text { + color: #f44336; +} +.segmented-button-group.is-invalid .ui-textbox__feedback { + color: #f44336; +} +.segmented-button-group-input .segmented-button { + margin-bottom: 0; +} +.segmented-button-group-input .ui-textbox__label-text { + font-size: 14px; +} + +.segmented-button { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + font-family: "Noto Sans", Arial, sans-serif; + margin-bottom: 16px; +} +.segmented-button .ui-textbox__label { + width: 100%; +} +.segmented-button .ui-textbox__label:before, .segmented-button .ui-textbox__label:after { + content: ''; + display: table; +} +.segmented-button .ui-textbox__label:after { + clear: both; +} +.segmented-button .button-toggle { + background-color: #ffffff; + border-radius: 2px; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + float: left; + margin: 10px 0; + -webkit-transition: 250ms cubic-bezier(0.25, 0.8, 0.5, 1); + transition: 250ms cubic-bezier(0.25, 0.8, 0.5, 1); + will-change: background, box-shadow; +} +.segmented-button .button-toggle.is-selected { + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12); +} +.segmented-button.has-floating-label .ui-textbox__label-text { + display: table; +} +.segmented-button.is-invalid .ui-textbox__label-text { + color: #f44336; +} +.segmented-button.is-invalid .ui-textbox__feedback { + color: #f44336; +} + +.segmented-button-segment { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: transparent; + border: none; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 36px; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + opacity: .4; + outline: 0; + padding: 0 8px; + position: relative; + -webkit-transition: color 250ms cubic-bezier(0.25, 0.8, 0.5, 1); + transition: color 250ms cubic-bezier(0.25, 0.8, 0.5, 1); +} +.segmented-button-segment:before { + border-radius: inherit; + color: inherit; + content: ''; + height: 100%; + left: 0; + opacity: .12; + position: absolute; + top: 0; + -webkit-transition: 250ms cubic-bezier(0.25, 0.8, 0.5, 1); + transition: 250ms cubic-bezier(0.25, 0.8, 0.5, 1); + width: 100%; +} +.segmented-button-segment:first-child { + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; +} +.segmented-button-segment:not(:last-child) { + border-right: 1px solid transparent; +} +.segmented-button-segment:last-child { + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} +.segmented-button-segment:hover:before, .segmented-button-segment:focus:before, .segmented-button-segment.is-checked:before { + background-color: currentColor; +} +.segmented-button-segment.is-checked { + opacity: 1; +} +.segmented-button-segment .segmented-button-img { + height: auto; + min-height: 22px; + width: 24px; +} +.segmented-button-segment .segmented-button-text { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; + height: auto; + min-height: 14px; +} + +.editor-no-options { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + color: rgba(0, 0, 0, 0.38); +} + +.simple-list-input { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + height: 32px; + margin-bottom: 5px; + min-width: 100px; + position: relative; +} +.simple-list-input .simple-list-add { + border-bottom: none; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + width: auto; +} + +.simple-list-item { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #e0e0e0; + border: none; + border-radius: 16px; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + font-size: 13px; + height: 32px; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 5px 5px 5px 0; + padding: 0; + -webkit-transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; +} +.simple-list-item:focus { + outline: none; +} +.simple-list-item:hover:not(.is-disabled) { + background-color: #bdbdbd; +} +.simple-list-item:active:not(.is-disabled), .simple-list-item.is-current:not(.is-disabled) { + -webkit-box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12); + box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12); +} +.simple-list-item .primary-badge { + background-color: #757575; + border-radius: 50%; + color: #ffffff; + display: none; + line-height: 32px; + height: 32px; + margin-right: -4px; + overflow: hidden; + text-align: center; + vertical-align: middle; + width: 32px; +} +.simple-list-item .primary-badge.is-text { + color: #ffffff; + font-weight: bold; +} +.simple-list-item.is-primary .primary-badge { + display: block; +} +.simple-list-item .item-text { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + cursor: inherit; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; +} +.simple-list-item .simple-list-remove { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: rgba(0, 0, 0, 0.26); + border: none; + border-radius: 50%; + color: #e0e0e0; + cursor: inherit; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 20px; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin-right: 6px; + padding: 0 0 0 1px; + -webkit-transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1), color 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1), color 250ms cubic-bezier(0.4, 0, 0.2, 1); + width: 20px; +} +.simple-list-item .simple-list-remove .ui-icon { + font-size: 14px; +} +.simple-list-item.is-disabled { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.38); +} +.simple-list-item.is-disabled .simple-list-remove { + background-color: rgba(0, 0, 0, 0.38); +} +.simple-list-item .badge-enter, + .simple-list-item .badge-leave-to { + opacity: 0; +} +.simple-list-item .badge-enter-to, + .simple-list-item .badge-leave { + opacity: 1; +} +.simple-list-item .badge-enter-active, + .simple-list-item .badge-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.simple-list .simple-list-items { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + height: auto; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.simple-list .simple-list-items-wrapper { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + max-width: 100%; +} +.simple-list .list-items-enter, +.simple-list .list-items-leave-to { + opacity: 0; +} +.simple-list .list-items-enter-to, +.simple-list .list-items-leave { + opacity: 1; +} +.simple-list .list-items-enter-active, +.simple-list .list-items-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.static-input *::-moz-selection { + background-color: #81d4fa; +} +.static-input *::selection { + background-color: #81d4fa; +} +.static-input-text { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + height: 2rem; +} +.kiln-hide { + display: none !important; } + +.kiln-clearfix:before, .kiln-clearfix:after { + content: ''; + display: table; } + +.kiln-clearfix:after { + clear: both; } + +.kiln-normal-text { + color: inherit; + font-family: inherit; + font-size: inherit; + line-height: inherit; + word-break: inherit; } + +.kiln-display1 { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 34px; + letter-spacing: normal; + line-height: 40px; } + +.kiln-headline { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 24px; + letter-spacing: normal; + line-height: 32px; } + +.kiln-title { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 18px; + letter-spacing: 0.005em; + line-height: 20px; } + +.kiln-subheading { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; } + +.kiln-body { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; } + +.kiln-caption { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; } + +.kiln-button { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; } + +.kiln-list-header { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 12px; + text-transform: uppercase; } + +.kiln-link { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + color: rgba(33, 150, 243, 0.87); + text-decoration: none; } + .kiln-link:active, .kiln-link:visited { + color: rgba(33, 150, 243, 0.87); + text-decoration: none; } + .kiln-link:hover { + color: rgba(33, 150, 243, 0.54); + text-decoration: none; } + +.kiln-link-invalid { + color: #FF0000 !important; } + +.kiln-keyboard { + background-color: #f5f5f5; + border: 1px solid #bdbdbd; + border-radius: 3px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07), 0 0 0 2px #ffffff inset; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07), 0 0 0 2px #ffffff inset; + color: rgba(0, 0, 0, 0.87); + display: inline-block; + font-size: 14px; + font-family: monospace, sans-serif; + font-weight: normal; + padding: 4px 8px; + line-height: 13px; } + +.kiln-code { + color: rgba(0, 0, 0, 0.87); + font-family: 'Consolas', 'Menlo', monospace; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 20px; + text-decoration: none; } + +.kiln-primary-color { + color: #607d8b; } + +.kiln-accent-color { + color: #1976d2; } + +.ui-tooltip { + font-family: "Noto Sans", Arial, sans-serif; } + +.ui-textbox__feedback { + font-family: "Noto Sans", Arial, sans-serif; } + +.ui-textbox { + margin: 0; } + +.ui-button__content { + font-weight: 600; } + +.ui-button--type-primary.ui-button--color-default .ui-button__icon, +.ui-button--type-primary.ui-button--color-default .ui-button__dropdown-icon { + color: rgba(0, 0, 0, 0.87); } + +html.component-selector-wrapper { + font-size: 16px; } +/* mirror is the element added while you are dragging. */ +.gu-mirror { + background-color: rgba(0, 0, 0, 0.3); + cursor: move; + cursor: -webkit-grab; + cursor: grab; + margin: 10px; + padding: 10px; + position: fixed !important; + -webkit-transition: opacity 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out; + z-index: 9999 !important; } + +.gu-hide { + display: none !important; } + +.gu-unselectable { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; } + +.gu-transit { + opacity: 0.2; + filter: alpha(opacity=20); } + +.gu-mirror { + opacity: 0.8; + filter: alpha(opacity=80); } + +/* Custom classes triggered by events (drag, cancel, drop) */ +/* Widen the drop area. */ +.dragula-drop-area:before { + bottom: 0; + content: ''; + left: -30px; + position: absolute; + top: 0; + width: 30px; } + +/* The item while it is being dragged. */ +/* Indicate that the re-ordering has not been saved. */ +.dragula-not-saved { + background: rgba(96, 125, 139, 0.41) !important; + -webkit-transition: background-color 250ms linear; + transition: background-color 250ms linear; } + +.iframe-overlay-div { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; } + +.complex-list-trash { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background: #eceff1; + bottom: 50px; + color: #607d8b; + display: none; + height: 300px; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + left: 50px; + position: fixed; + width: 300px; + z-index: 9998; } + .complex-list-trash li { + /* hide item to be deleted while it's on the trash item */ + display: none; } + +.complex-list-trash .material-icons { + content: 'delete'; + font-size: 150px; } + +.complex-list-trash.dragula-drop-area .material-icons:not(:only-child) { + background: #ffebee; + color: #f44336; + font-size: 300px; + height: 100%; + width: 100%; } + +.complex-list-trash.dragula-drop-area { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; } + +.complex-list-trash > .gu-transit { + display: block; + max-width: 200px; + opacity: 0.7; + filter: alpha(opacity=70); + position: absolute; } +@-webkit-keyframes fadeInKilnLogo { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@keyframes fadeInKilnLogo { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +.clay-kiln-logo { + background-color: rgba(255, 255, 255, 0.8); + display: none; + height: 100vh; + left: 0; + opacity: 0; + position: fixed; + top: 0; + width: 100vw; + z-index: 99999; } + +.clay-kiln-logo.show { + -webkit-animation: 200ms ease forwards fadeInKilnLogo; + animation: 200ms ease forwards fadeInKilnLogo; + display: block; } + +.clay-kiln-logo svg { + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 110px; + left: calc(50vw - 155px); + position: fixed; + top: calc(50vh - 55px); + width: 310px; } + +body { + padding-top: 56px !important; +} +.kiln-wrapper { + z-index: 1000000030; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + position: fixed; + top: 0; + width: 100%; +} +.kiln-wrapper .ui-snackbar-container { + z-index: 1000000060; + bottom: 0; + position: fixed; +} +.kiln-wrapper .alert-container { + pointer-events: none; +} +.kiln-wrapper .alert-container > * { + pointer-events: all; +} +.kiln-progress { + height: 3px; + left: 0; + position: relative; + top: 0; + width: 100%; +} +.toolbar-action-menu.ui-icon-button { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; +} +.toolbar-action-menu.ui-icon-button.drawerOpen { + background: rgba(0, 0, 0, 0.1); +} +@media screen and (min-width: 600px) { +.toolbar-action-menu.ui-icon-button { + display: none; +} +} +.toolbar-action-button.ui-icon-button { + display: none; +} +.toolbar-action-button.ui-icon-button.is-open-drawer { + background-color: rgba(0, 0, 0, 0.3); +} +@media screen and (min-width: 600px) { +.toolbar-action-button.ui-icon-button { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; +} +} +.toolbar-publish-button.is-open-drawer { + background-color: rgba(0, 0, 0, 0.3); +} +.toolbar-button-text { + font-weight: bold; +} +.kiln-toolbar-actions .toolbar-publish-button { + display: none; +} +@media screen and (min-width: 600px) { +.kiln-toolbar-actions .toolbar-publish-button { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; +} +} +.ui-menu-option__content.activeMenuButton { + background: #eeeeee; +} + +.nprogress-container { + left: 0; + overflow: visible; + pointer-events: none; + position: absolute; + top: 0; + width: 100%; +} +.nprogress-container.nprogress-custom-parent { + overflow: visible; + position: absolute; +} +.nprogress-container #nprogress .bar { + z-index: 1000000030; + background-color: #1976d2; + -webkit-box-shadow: 0 0 10px 0 #1976d2; + box-shadow: 0 0 10px 0 #1976d2; + height: 3px; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: #29d; + + position: fixed; + z-index: 1031; + top: 0; + left: 0; + + width: 100%; + height: 2px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0px; + width: 100px; + height: 100%; + box-shadow: 0 0 10px #29d, 0 0 5px #29d; + opacity: 1.0; + + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: block; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + + border: solid 2px transparent; + border-top-color: #29d; + border-left-color: #29d; + border-radius: 50%; + + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@-webkit-keyframes nprogress-spinner { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} +@keyframes nprogress-spinner { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + + + +.editor-overlay-background { + z-index: 1000000040; + background-color: rgba(0, 0, 0, 0.4); + display: block; + height: 100%; + left: 0; + opacity: 1; + overflow: auto; + -webkit-overflow-scrolling: touch; + position: fixed; + top: 0; + width: 100%; +} +.fade-enter-active, .fade-leave-active { + -webkit-transition: opacity 350ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 350ms cubic-bezier(0.4, 0, 0.2, 1); +} +.fade-enter, .fade-leave-to { + opacity: 0; +} + +/* don't scroll the page when overlay (or pane) is open */ +.noscroll { + height: 100%; + overflow: hidden; +} + +.kiln-overlay-form { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + cursor: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + min-width: 100px; + padding: 0; + position: relative; + z-index: 1; + z-index: 1000000040; + background-color: #ffffff; + border-radius: 2px; + -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + min-height: 50px; + min-width: 100px; + display: block; + height: auto; + max-height: calc(100vh - 100px); + max-width: 100vw; + opacity: 0; + position: fixed; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + width: 600px; +} +.kiln-overlay-form > form { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + height: 100%; + overflow: visible; + padding: 0; + width: 100%; +} +.kiln-overlay-form > form:before, .kiln-overlay-form > form:after { + content: ''; + display: table; +} +.kiln-overlay-form > form:after { + clear: both; +} +.kiln-overlay-form .input-container { + -webkit-align-content: flex-start; + -ms-flex-line-pack: start; + align-content: flex-start; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + overflow: auto; + padding: 18px; +} +.kiln-overlay-form .hidden-submit { + display: none; +} +.kiln-overlay-form .form-header { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #f5f5f5; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 56px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + opacity: 0; + padding: 0 14px 0 24px; + position: relative; + width: 100%; +} +.kiln-overlay-form .form-header-title { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 18px; + letter-spacing: 0.005em; + line-height: 20px; + margin: 0; +} +.kiln-overlay-form .form-header-actions { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.kiln-overlay-form .form-close-divider { + border-left: 1px solid rgba(0, 0, 0, 0.12); + height: 22px; + margin-left: 10px; + width: 10px; +} +.kiln-overlay-form .form-contents { + display: block; + height: calc(100% - 56px); + opacity: 0; + position: relative; + width: 100%; +} +.kiln-overlay-form .form-contents .ui-tabs { + height: 100%; + margin: 0; +} +.kiln-overlay-form .form-contents .ui-tabs__body { + border: none; + height: 100%; + padding: 0; +} +.kiln-overlay-form .input-container-wrapper { + height: 100%; + margin: 0; + overflow: auto; + padding: 0; + width: 100%; +} +.kiln-overlay-form .input-container { + height: auto; + min-height: 100%; + padding: 16px 24px 24px; + position: relative; + width: 100%; +} +.kiln-overlay-form .required-footer { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + margin-top: 10px; + width: 100%; +} + +.add-component-modal { + z-index: 1000000040; + background-color: #ffffff; + border-radius: 2px; + -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + min-height: 50px; + min-width: 100px; + display: block; + height: auto; + max-height: calc(100vh - 100px); + max-width: 100vw; + opacity: 0; + position: fixed; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + width: 600px; +} +.add-component-modal .add-component-header { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #f5f5f5; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 56px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + opacity: 0; + padding: 0 14px 0 24px; + position: relative; + width: 100%; +} +.add-component-modal .add-component-header-title { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 18px; + letter-spacing: 0.005em; + line-height: 20px; + margin: 0; +} +.add-component-modal .add-component-header-actions { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.add-component-modal .add-component-close-divider { + border-left: 1px solid rgba(0, 0, 0, 0.12); + height: 22px; + margin-left: 10px; + width: 10px; +} +.add-component-modal .add-component-list { + display: block; + height: 500px; + opacity: 0; + padding: 8px; + position: relative; + width: 100%; +} + +.simple-modal.ui-modal__mask { + z-index: 1000000060; + position: fixed; +} +.simple-modal.ui-modal__mask .ui-modal__container, + .simple-modal.ui-modal__mask .ui-modal__body { + overflow: visible; +} + +.info-text { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + line-height: 20px; + margin: 0; +} +.info-text ul { + margin: 0; + padding-left: 17px; +} +.info-text a { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + color: rgba(33, 150, 243, 0.87); + text-decoration: none; +} +.info-text a:active, .info-text a:visited { + color: rgba(33, 150, 243, 0.87); + text-decoration: none; +} +.info-text a:hover { + color: rgba(33, 150, 243, 0.54); + text-decoration: none; +} +.info-text kbd { + background-color: #f5f5f5; + border: 1px solid #bdbdbd; + border-radius: 3px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07), 0 0 0 2px #ffffff inset; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07), 0 0 0 2px #ffffff inset; + color: rgba(0, 0, 0, 0.87); + display: inline-block; + font-size: 14px; + font-family: monospace, sans-serif; + font-weight: normal; + padding: 4px 8px; + line-height: 13px; +} +.info-text code { + color: rgba(0, 0, 0, 0.87); + font-family: 'Consolas', 'Menlo', monospace; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 20px; + text-decoration: none; +} + +.keyboard-shortcuts .shortcut { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + padding: 10px 17px 10px; +} +.keyboard-shortcuts .shortcut + .shortcut { + border-top: 1px solid rgba(0, 0, 0, 0.12); + margin-top: 10px; +} +.keyboard-shortcuts .shortcut:first-of-type { + padding-top: 20px; +} +.keyboard-shortcuts .shortcut:last-of-type { + padding-bottom: 20px; +} +.keyboard-shortcuts .shortcut-title { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + color: #424242; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.keyboard-shortcuts .shortcut-keys { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; + margin-left: 5px; +} +.keyboard-shortcuts .shortcut-key { + background-color: #f5f5f5; + border: 1px solid #bdbdbd; + border-radius: 3px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07), 0 0 0 2px #ffffff inset; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07), 0 0 0 2px #ffffff inset; + color: rgba(0, 0, 0, 0.87); + display: inline-block; + font-size: 14px; + font-family: monospace, sans-serif; + font-weight: normal; + padding: 4px 8px; + line-height: 13px; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 5px; +} +.keyboard-shortcuts .shortcut-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + -webkit-box-flex: 1; + -webkit-flex: 1 0 100%; + -ms-flex: 1 0 100%; + flex: 1 0 100%; + margin-top: 5px; +} + +.add-contributor { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: calc(100vh - 88px); +} +.invite-filter { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 16px 16px 0; +} +.invite-list { + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + padding: 16px 16px 0; + overflow-y: scroll; +} + +.add-page-modal .add-page-button { + margin-top: 16px; +} + +.add-user-modal { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.add-user-modal .add-user-provider, + .add-user-modal .add-user-admin { + margin: 16px 0 0; + z-index: 0; +} +.add-user-modal .add-user-info { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + margin-top: 16px; +} +.add-user-modal .add-user-button { + margin-top: 16px; +} + +.type-confirm .type-confirm-input { + margin: 8px 0 16px; +} +.type-confirm .ui-confirm__footer { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.type-confirm .ui-confirm__footer .ui-button { + margin-left: 16px; +} + +.type-reason .type-reason-input { + margin: 8px 0 16px; +} +.type-reason .ui-reason__footer { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.type-reason .ui-reason__footer .ui-button { + margin-left: 16px; +} + +.type-reason .type-reason-input { + margin: 8px 0 16px; +} +.type-reason .ui-reason__footer { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.type-reason .ui-reason__footer .ui-button { + margin-left: 16px; +} + +.add-bookmark-modal .add-bookmark-button { + margin-top: 16px; +} + +.ui-toolbar { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-family: "Noto Sans", Arial, sans-serif; + font-size: 1.125rem; + height: 3.5rem; + padding-left: 1rem; + position: relative; +} +.ui-toolbar.is-raised { + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.ui-toolbar:not(.is-raised).ui-toolbar--type-default { + border-bottom: 0.0625rem solid rgba(0, 0, 0, 0.12); +} +.ui-toolbar .ui-icon-button { + height: 3rem; + width: 3rem; +} +.ui-toolbar__left { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.ui-toolbar__nav-icon { + margin-left: -1rem; + margin-right: 0.5rem; +} +.ui-toolbar__brand { + min-width: 10rem; +} +.ui-toolbar__brand-text { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + padding-right: 0.5rem; +} +.ui-toolbar__body { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-toolbar__body.has-brand-divider { + border-left-style: solid; + border-left-width: 0.0625rem; + padding-left: 1.5rem; +} +.ui-toolbar__right { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-left: auto; +} +.ui-toolbar__progress { + bottom: 0; + height: 0.1875rem; + left: 0; + position: absolute; + right: 0; +} +.ui-toolbar--type-default { + background-color: white; +} +.ui-toolbar--type-colored { + background-color: #607d8b; +} +.ui-toolbar--type-clear { + background-color: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui-toolbar--text-color-black { + color: rgba(0, 0, 0, 0.87); +} +.ui-toolbar--text-color-black .ui-toolbar__body { + border-left-color: rgba(0, 0, 0, 0.15); +} +.ui-toolbar--text-color-white { + color: white; +} +.ui-toolbar--text-color-white .ui-toolbar__body { + border-color: rgba(255, 255, 255, 0.4); +} +.ui-toolbar--progress-position-top .ui-toolbar__progress { + top: 0; +} + +.ui-progress-linear { + display: block; + height: 0.25rem; + overflow: hidden; + position: relative; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: height, opacity; + transition-property: height, opacity; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; + width: 100%; +} +.ui-progress-linear__progress-bar.is-determinate { + height: 0.25rem; + left: 0; + position: absolute; + top: 0; + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + -webkit-transition: -webkit-transform 0.2s linear; + transition: -webkit-transform 0.2s linear; + transition: transform 0.2s linear; + transition: transform 0.2s linear, -webkit-transform 0.2s linear; + width: 100%; +} +.ui-progress-linear__progress-bar.is-indeterminate::before { + -webkit-animation: ui-progress-linear-indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: ui-progress-linear-indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + background-color: inherit; + content: ''; + height: 0.25rem; + left: 0; + position: absolute; + top: 0; +} +.ui-progress-linear__progress-bar.is-indeterminate::after { + -webkit-animation-delay: 1.15s; + animation-delay: 1.15s; + -webkit-animation: ui-progress-linear-indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: ui-progress-linear-indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + background-color: inherit; + content: ''; + height: 0.25rem; + left: 0; + position: absolute; + top: 0; +} +@-webkit-keyframes ui-progress-linear-indeterminate { +0% { + left: -35%; + right: 100%; +} +60% { + left: 100%; + right: -90%; +} +100% { + left: 100%; + right: -90%; +} +} +@keyframes ui-progress-linear-indeterminate { +0% { + left: -35%; + right: 100%; +} +60% { + left: 100%; + right: -90%; +} +100% { + left: 100%; + right: -90%; +} +} +@-webkit-keyframes ui-progress-linear-indeterminate-short { +0% { + left: -200%; + right: 100%; +} +60% { + left: 107%; + right: -8%; +} +100% { + left: 107%; + right: -8%; +} +} +@keyframes ui-progress-linear-indeterminate-short { +0% { + left: -200%; + right: 100%; +} +60% { + left: 107%; + right: -8%; +} +100% { + left: 107%; + right: -8%; +} +} +.ui-progress-linear--transition-fade-enter-active, +.ui-progress-linear--transition-fade-leave-active { + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; +} +.ui-progress-linear--transition-fade-enter, +.ui-progress-linear--transition-fade-leave-active { + opacity: 0; +} +.ui-progress-linear--color-primary { + background-color: rgba(96, 125, 139, 0.4); +} +.ui-progress-linear--color-primary .ui-progress-linear__progress-bar { + background-color: #607d8b; +} +.ui-progress-linear--color-accent { + background-color: rgba(25, 118, 210, 0.4); +} +.ui-progress-linear--color-accent .ui-progress-linear__progress-bar { + background-color: #1976d2; +} +.ui-progress-linear--color-black { + background-color: rgba(97, 97, 97, 0.4); +} +.ui-progress-linear--color-black .ui-progress-linear__progress-bar { + background-color: #616161; +} +.ui-progress-linear--color-white { + background-color: rgba(255, 255, 255, 0.4); +} +.ui-progress-linear--color-white .ui-progress-linear__progress-bar { + background-color: white; +} + +.ui-snackbar-container { + bottom: 0; + left: 0.5rem; + overflow: hidden; + position: absolute; +} +.ui-snackbar-container .ui-snackbar { + margin: 0.25rem 0.25rem 0.75rem 0.25rem; +} +.ui-snackbar-container--position-right { + left: initial; + right: 0.5rem; +} +.ui-snackbar-container--position-center { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + left: 0.5rem; + right: 0.5rem; +} + +.ui-snackbar { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #323232; + border-radius: 0.125rem; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + font-family: "Noto Sans", Arial, sans-serif; + max-width: 35.5rem; + min-height: 3rem; + min-width: 18rem; + padding: 0.875rem 1.5rem; +} +.ui-snackbar__message { + color: white; + cursor: default; + font-size: 0.875rem; + line-height: 1.5; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-snackbar__action { + margin-left: auto; + margin: -0.5625rem -0.75rem; + padding-left: 3rem; +} +.ui-snackbar__action-button { + margin: 0; + min-height: initial; + min-width: initial; + padding: 0.75rem; +} +.ui-snackbar__action-button:hover:not(.is-disabled) { + background-color: rgba(255, 255, 255, 0.05); +} +body[modality="keyboard"] .ui-snackbar__action-button:focus { + background-color: rgba(255, 255, 255, 0.1); +} +.ui-snackbar--transition-slide-enter-active, +.ui-snackbar--transition-slide-leave-active { + -webkit-transition: -webkit-transform 0.4s ease; + transition: -webkit-transform 0.4s ease; + transition: transform 0.4s ease; + transition: transform 0.4s ease, -webkit-transform 0.4s ease; +} +.ui-snackbar--transition-slide-enter, +.ui-snackbar--transition-slide-leave-active { + -webkit-transform: translateY(5.25rem); + -ms-transform: translateY(5.25rem); + transform: translateY(5.25rem); +} +.ui-snackbar--transition-fade-enter-active, +.ui-snackbar--transition-fade-leave-active { + -webkit-transition: opacity 0.4s ease; + transition: opacity 0.4s ease; +} +.ui-snackbar--transition-fade-enter, +.ui-snackbar--transition-fade-leave-active { + opacity: 0; +} + +.right-drawer { + background-color: #ffffff; + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + height: calc(100vh - 56px); + position: fixed; + right: 0; + top: 56px; + width: 320px; +} +.right-drawer.ui-tabs { + margin-bottom: 0; + width: 320px; +} +.right-drawer .ui-tabs__body { + border: none; + height: calc(100% - 48px); + padding: 0; +} +.right-drawer .ui-tab { + height: 100%; + max-height: 100%; + overflow-y: scroll; +} +.drawer-enter, +.drawer-leave-to { + -webkit-transform: translateX(330px); + -ms-transform: translateX(330px); + transform: translateX(330px); +} +.drawer-enter-to, +.drawer-leave { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +.drawer-enter-active { + -webkit-transition: -webkit-transform 150ms cubic-bezier(0, 0, 0.2, 1); + transition: -webkit-transform 150ms cubic-bezier(0, 0, 0.2, 1); + transition: transform 150ms cubic-bezier(0, 0, 0.2, 1); + transition: transform 150ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0, 0, 0.2, 1); +} +.drawer-leave-active { + -webkit-transition: -webkit-transform 120ms cubic-bezier(0.4, 0, 0.6, 1); + transition: -webkit-transform 120ms cubic-bezier(0.4, 0, 0.6, 1); + transition: transform 120ms cubic-bezier(0.4, 0, 0.6, 1); + transition: transform 120ms cubic-bezier(0.4, 0, 0.6, 1), -webkit-transform 120ms cubic-bezier(0.4, 0, 0.6, 1); +} + +.contributors-list { + height: 100%; + padding: 0; +} +.contributors-list .person-item { + padding: 12px 16px; +} +.contributors-list .add-contributor-wrapper { + border-top: 1px solid rgba(0, 0, 0, 0.12); + padding: 16px; +} +.contributors-list .add-contributor-wrapper .add-contributor-button { + width: 100%; +} + +.page-history-list { + padding: 0; +} +.page-history-list .page-history-event { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + font-family: "Noto Sans", Arial, sans-serif; + margin: 12px 16px; +} +.page-history-list .page-history-event .person-image.stacked { + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 10px rgba(0, 0, 0, 0.54); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 10px rgba(0, 0, 0, 0.54); +} +.page-history-list .page-history-event-info { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.page-history-list .page-history-event-action, .page-history-list .page-history-event-time { + font-size: 12px; +} +.page-history-list .page-history-event-action { + color: rgba(0, 0, 0, 0.87); + font-weight: bold; + text-transform: uppercase; +} +.page-history-list .page-history-event-action-published { + color: #4caf50; +} +.page-history-list .page-history-event-action-scheduled { + color: #ff9800; +} +.page-history-list .page-history-event-action-archived, .page-history-list .page-history-event-action-unarchived, .page-history-list .page-history-event-action-unpublished, .page-history-list .page-history-event-action-unscheduled { + color: #f44336; +} +.page-history-list .page-history-event-action-edited + .page-history-event-time { + display: none; +} +.page-history-list .page-history-event-users { + font-size: 11px; +} +.page-history-list .page-history-event-time { + color: rgba(0, 0, 0, 0.54); +} +.page-history-list .page-history-event-users { + color: rgba(0, 0, 0, 0.87); +} +.page-history-list .page-history-event-users p { + margin: 0; +} + +.preview { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; +} +.preview .preview-link { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #ffffff; + color: rgba(0, 0, 0, 0.54); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 48px; + padding: 0 16px; + position: relative; + text-decoration: none; + -webkit-transition: 200ms background-color ease-out; + transition: 200ms background-color ease-out; + width: 100%; +} +.preview .preview-link:hover { + background-color: #eeeeee; + cursor: pointer; +} +.preview .preview-link .preview-link-size { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 16px; +} +.preview .preview-link .preview-link-text { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.preview .preview-link .preview-link-icon { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 16px; +} +.preview .preview-share { + border-top: 1px solid rgba(0, 0, 0, 0.12); + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 16px; +} + +@charset "UTF-8"; +.health-drawer { + height: 100%; + overflow-y: scroll; + padding: 16px 0; +} +.health-drawer .validation-info { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + color: rgba(0, 0, 0, 0.87); + font-weight: bold; + margin: 16px 0 8px 16px; + text-transform: uppercase; +} +.health-drawer .validation-items { + list-style: none; + margin: 0 0 0 16px; + padding: 0; +} +.health-drawer .validation-item { + padding-left: 16px; + position: relative; +} +.health-drawer .validation-item:before { + color: #607d8b; + content: '\2022 '; + left: 0; + position: absolute; + top: 2px; +} +.health-drawer .validation-item + .validation-item { + margin-top: 8px; +} +.health-drawer .validation-item-location { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; +} +.health-drawer .validation-item-location.validation-item-link { + color: #607d8b; + cursor: pointer; + font-weight: bold; + text-decoration: underline; +} +.health-drawer .validation-item-preview { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + font-style: italic; + margin-left: 4px; +} +.publish-valid { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 16px; +} +.publish-valid .valid-label { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + color: #4caf50; + margin-bottom: 8px; +} +.publish-valid .valid-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; +} +.publish-error, +.publish-metadata-errors { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 16px; +} +.publish-error .error-label, + .publish-metadata-errors .error-label { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + color: #f44336; + margin-bottom: 8px; +} +.publish-error .error-description, + .publish-metadata-errors .error-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; +} +.publish-warning, +.publish-metadata-warnings { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 16px; +} +.publish-warning .warning-label, + .publish-metadata-warnings .warning-label { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + color: #ff9800; + margin-bottom: 8px; +} +.publish-warning .warning-description, + .publish-metadata-warnings .warning-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; +} + +.publish-drawer { + padding: 16px 0; +} +.publish-drawer .section-heading { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; +} +.publish-drawer .section-text { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + margin-top: 8px; +} +.publish-drawer .action-button { + margin-top: 16px; +} +.publish-status { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 16px 16px; +} +.publish-status .status-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; +} +.publish-status .status-time { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + margin-top: 8px; +} +.publish-status .status-link { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + color: #607d8b; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + margin-top: 8px; +} +.publish-status .status-link .status-link-text { + margin-left: 4px; + text-decoration: underline; +} +.publish-status .status-undo-button { + margin-top: 16px; +} +.publish-actions { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 16px; +} +.publish-actions .action-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 32px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + margin-top: -6px; +} +.publish-actions .schedule-form { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + margin-top: 8px; + width: 100%; +} +.publish-actions .schedule-form .schedule-date, + .publish-actions .schedule-form .schedule-time { + margin: 0; + width: 48%; +} +.publish-actions .action-error-message, + .publish-actions .action-warning-message, + .publish-actions .action-info-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + cursor: pointer; + margin-top: 16px; +} +.publish-actions .action-info-message { + text-align: center; +} +.publish-actions .action-error-message { + color: #f44336; +} +.publish-actions .action-warning-message { + color: #ff9800; +} +.publish-section { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + margin-bottom: 0; + padding: 0; +} +.publish-section .ui-collapsible__header { + background-color: #ffffff; +} +.publish-section .ui-collapsible__body { + border: none; +} +.publish-location .publish-location-form { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.publish-location .location-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; +} +.publish-location .location-input { + margin-top: 8px; +} +.publish-location .location-submit { + margin-top: 16px; +} +.publish-title .publish-title-form { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.publish-title .title-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; +} +.publish-title .title-input { + margin-top: 8px; +} +.publish-title .title-submit { + margin-top: 16px; +} +.publish-archive .ui-collapsible__body { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.publish-archive .archive-help { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; +} +.publish-archive .archive-submit { + margin-top: 16px; +} + +.publish-drawer { + padding: 16px 0; +} +.publish-status { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 16px 16px; +} +.publish-status .status-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; +} +.publish-status .status-time { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + margin-top: 8px; +} +.publish-status .status-undo-button { + margin-top: 16px; +} +.publish-actions { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 16px; +} +.publish-actions .action-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 15px; + letter-spacing: 0.01em; + line-height: 22.5px; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 32px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + margin-top: -6px; +} +.publish-actions .schedule-form { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + margin-top: 8px; + width: 100%; +} +.publish-actions .schedule-form .schedule-date, + .publish-actions .schedule-form .schedule-time { + margin: 0; + width: 48%; +} +.publish-actions .action-button { + margin-top: 16px; +} +.publish-actions .action-error-message, + .publish-actions .action-warning-message, + .publish-actions .action-info-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + cursor: pointer; + margin-top: 16px; +} +.publish-actions .action-info-message { + text-align: center; +} +.publish-actions .action-error-message { + color: #f44336; +} +.publish-actions .action-warning-message { + color: #ff9800; +} +.publish-section { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + margin-bottom: 0; + padding: 0; +} +.publish-section .ui-collapsible__header { + background-color: #ffffff; +} +.publish-section .ui-collapsible__body { + border: none; +} +.publish-title .publish-title-form { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.publish-title .title-description { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; +} +.publish-title .title-input { + margin-top: 8px; +} +.publish-title .title-submit { + margin-top: 16px; +} + +.layout-history-list { + padding: 0; +} +.layout-history-list .layout-history-event { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + font-family: "Noto Sans", Arial, sans-serif; + margin: 12px 16px; +} +.layout-history-list .layout-history-event .person-image.stacked { + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 10px rgba(0, 0, 0, 0.54); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 10px rgba(0, 0, 0, 0.54); +} +.layout-history-list .layout-history-event-info { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.layout-history-list .layout-history-event-action, .layout-history-list .layout-history-event-time { + font-size: 12px; +} +.layout-history-list .layout-history-event-action { + color: rgba(0, 0, 0, 0.87); + font-weight: bold; + text-transform: uppercase; +} +.layout-history-list .layout-history-event-action-published { + color: #4caf50; +} +.layout-history-list .layout-history-event-action-scheduled { + color: #ff9800; +} +.layout-history-list .layout-history-event-action-archived, .layout-history-list .layout-history-event-action-unarchived, .layout-history-list .layout-history-event-action-unpublished, .layout-history-list .layout-history-event-action-unscheduled { + color: #f44336; +} +.layout-history-list .layout-history-event-action-edited + .layout-history-event-time { + display: none; +} +.layout-history-list .layout-history-event-users { + font-size: 11px; +} +.layout-history-list .layout-history-event-time { + color: rgba(0, 0, 0, 0.54); +} +.layout-history-list .layout-history-event-users { + color: rgba(0, 0, 0, 0.87); +} +.layout-history-list .layout-history-event-users p { + margin: 0; +} + +.nav-background { + z-index: 1000000040; + background-color: rgba(38, 50, 56, 0.87); + display: block; + height: 100%; + left: 0; + opacity: 1; + overflow: auto; + -webkit-overflow-scrolling: touch; + position: fixed; + top: 0; + width: 100%; +} +.nav-fade-enter-active, .nav-fade-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.nav-fade-enter, .nav-fade-leave-to { + opacity: 0; +} + +/* dont scroll the page when left nav is open */ +.nav-noscroll { + height: 100%; + overflow: hidden; +} + +.nav-menu { + z-index: 1000000050; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #000000; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: 48px; + left: 0; + position: fixed; + top: 0; + width: 100%; +} +.nav-menu .nav-menu-button, + .nav-menu .nav-menu-divider { + display: none; +} +.nav-menu .nav-menu-button-small { + display: block; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.nav-menu .nav-menu-divider-small { + display: block; +} +.nav-menu .nav-menu-button-small-white { + color: #ffffff; +} +.nav-menu .nav-menu-button-small-white:hover:not(.is-disabled), .nav-menu .nav-menu-button-small-white.has-dropdown-open, .nav-menu .nav-menu-button-small-white.has-focus-ring:focus, + body[modality="keyboard"] .nav-menu .nav-menu-button-small-white:focus { + background-color: #263238; +} +.nav-menu .nav-menu-button-small-white .ui-button__icon, + .nav-menu .nav-menu-button-small-white .ui-button__dropdown-icon { + color: #ffffff; +} +.nav-menu .nav-menu-button-small-white .ui-ripple-ink__ink { + opacity: 0.4; +} +.nav-menu .nav-button-small-text { + font-weight: bold; +} +@media screen and (min-width: 600px) { +.nav-menu { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + width: 200px; +} +.nav-menu .nav-menu-button, + .nav-menu .nav-menu-divider { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.nav-menu .nav-menu-button-small, + .nav-menu .nav-menu-divider-small { + display: none; +} +} +.nav-menu-divider, +.nav-menu-divider-small { + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.nav-menu-enter-to, +.nav-menu-leave { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +.nav-menu-enter, +.nav-menu-leave-to { + -webkit-transform: translateX(-210px); + -ms-transform: translateX(-210px); + transform: translateX(-210px); +} +.nav-menu-enter-active { + -webkit-transition: -webkit-transform 150ms cubic-bezier(0, 0, 0.2, 1); + transition: -webkit-transform 150ms cubic-bezier(0, 0, 0.2, 1); + transition: transform 150ms cubic-bezier(0, 0, 0.2, 1); + transition: transform 150ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0, 0, 0.2, 1); +} +.nav-menu-leave-active { + -webkit-transition: -webkit-transform 120ms cubic-bezier(0.4, 0, 0.6, 1); + transition: -webkit-transform 120ms cubic-bezier(0.4, 0, 0.6, 1); + transition: transform 120ms cubic-bezier(0.4, 0, 0.6, 1); + transition: transform 120ms cubic-bezier(0.4, 0, 0.6, 1), -webkit-transform 120ms cubic-bezier(0.4, 0, 0.6, 1); +} +.mobile-nav-dropdown .ui-menu-option__text { + text-transform: capitalize; +} + +.nav-content { + z-index: 1000000050; + background-color: #ffffff; + height: calc(100vh - 48px); + max-width: 100vw; + position: fixed; + left: 0; + top: 48px; + width: 100%; +} +@media screen and (min-width: 600px) { +.nav-content { + height: 100%; + left: 200px; + top: 0; + width: auto; +} +} +.nav-content-enter, +.nav-content-leave-to { + opacity: 0; +} +.nav-content-enter-to, +.nav-content-leave { + opacity: 1; +} +.nav-content-enter-active, +.nav-content-leave-active { + -webkit-transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.new-page-nav { + width: 400px; +} + +.users-nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 400px; +} +.users-nav .users-input { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin: 16px; +} +.users-nav .users-headers { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 12px; + text-transform: uppercase; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #fafafa; + border-top: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 8px 16px; +} +.users-nav .users-headers .users-header-name { + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + padding-left: 56px; +} +.users-nav .users-headers .users-header-admin { + -webkit-box-flex: 0; + -webkit-flex: 0 0 36px; + -ms-flex: 0 0 36px; + flex: 0 0 36px; +} +.users-nav .users-headers .users-header-remove { + -webkit-box-flex: 0; + -webkit-flex: 0 0 36px; + -ms-flex: 0 0 36px; + flex: 0 0 36px; +} +.users-nav .users-list { + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + overflow-y: scroll; + overflow-x: hidden; + padding: 0; +} +.users-nav .person-item { + padding: 12px 16px; +} +.users-nav .add-user-wrapper { + border-top: 1px solid rgba(0, 0, 0, 0.12); + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 16px; +} +.users-nav .add-user-wrapper .add-user-button { + width: 100%; +} + +.page-list { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; +} +@media screen and (min-width: 664px) { +.page-list { + max-width: calc(100vw - 200px); +} +} +@media screen and (min-width: 1128px) { +.page-list { + max-width: 928px; +} +} +.page-list-controls { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 8px; + width: 100%; +} +@media screen and (min-width: 864px) { +.page-list-controls { + padding: 16px 16px 16px 8px; +} +} +.page-list-sites { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 8px; + max-width: 140px; +} +@media screen and (min-width: 864px) { +.page-list-sites { + max-width: 300px; +} +} +.page-list-search { + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; +} +.page-list-status-small { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 8px; +} +@media screen and (min-width: 1128px) { +.page-list-status-small { + display: none; +} +} +.status-selector.page-list-status-large { + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 8px; +} +.status-selector.page-list-status-large .status-selector-radio:first-child { + margin-left: 0; +} +@media screen and (min-width: 1128px) { +.status-selector.page-list-status-large { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +} +.page-list-headers { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 12px; + text-transform: uppercase; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background-color: #fafafa; + border-top: 1px solid rgba(0, 0, 0, 0.12); + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 8px 16px; +} +@media screen and (min-width: 864px) { +.page-list-headers { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +} +.page-list-headers .page-list-header-site { + -webkit-box-flex: 0; + -webkit-flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; +} +.page-list-headers .page-list-header-title { + -webkit-box-flex: 1; + -webkit-flex: 1 1 400px; + -ms-flex: 1 1 400px; + flex: 1 1 400px; +} +.page-list-headers .page-list-header-byline { + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 144px; + -ms-flex: 0 0 144px; + flex: 0 0 144px; +} +@media screen and (min-width: 1008px) { +.page-list-headers .page-list-header-byline { + display: inline; +} +} +.page-list-headers .page-list-header-status { + -webkit-box-flex: 0; + -webkit-flex: 0 0 144px; + -ms-flex: 0 0 144px; + flex: 0 0 144px; + text-align: right; +} +@media screen and (min-width: 1128px) { +.page-list-headers .page-list-header-status { + text-align: left; +} +} +.page-list-headers .page-list-header-collaborators { + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; +} +@media screen and (min-width: 1128px) { +.page-list-headers .page-list-header-collaborators { + display: inline; +} +} +.page-list-readout { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 1 100%; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + overflow-y: scroll; +} +.page-list-readout .page-list-load-more { + border-top: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding: 16px; +} + +.site-selector { + max-width: 100vw; + width: 500px; +} +@media screen and (min-width: 600px) { +.site-selector { + max-width: calc(100vw - 200px); +} +} +.site-selector-body { + -webkit-column-count: 2; + column-count: 2; + -webkit-column-gap: 16px; + column-gap: 16px; + display: block; + padding: 16px; +} +.site-selector-footer { + padding: 0 16px 16px; + width: 100%; +} + +.status-selector { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.status-selector .status-selector-radio { + margin-left: 16px; +} +.status-selector.is-vertical { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 8px 16px; +} +.status-selector.is-vertical .status-selector-radio { + margin-left: 0; +} +.status-selector.is-vertical .status-selector-radio + .status-selector-radio { + margin-top: 8px; +} + +.page-list-item { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + max-height: 100px; + min-height: 48px; + padding: 0 16px; +} +@media screen and (min-width: 1008px) { +.page-list-item { + -webkit-box-flex: 0; + -webkit-flex: 0 0 48px; + -ms-flex: 0 0 48px; + flex: 0 0 48px; +} +} +.page-list-item-site { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; + cursor: pointer; + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; + overflow: hidden; + padding-right: 16px; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; +} +@media screen and (min-width: 1008px) { +.page-list-item-site { + display: block; +} +} +.page-list-item-title { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1 1 400px; + -ms-flex: 1 1 400px; + flex: 1 1 400px; + min-width: 0; + padding: 16px 16px 16px 0; +} +.page-list-item-title-inner { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} +.page-list-item-title .no-title { + color: rgba(0, 0, 0, 0.54); + font-style: italic; +} +.page-list-item-title .page-list-item-site-small { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 14px; + text-transform: uppercase; + display: block; + text-transform: uppercase; + width: 100%; +} +@media screen and (min-width: 1008px) { +.page-list-item-title .page-list-item-site-small { + display: none; +} +} +.page-list-item-title .page-list-item-byline-small { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + display: block; + width: 100%; +} +.page-list-item-title .page-list-item-byline-small.no-byline { + color: rgba(0, 0, 0, 0.54); + font-style: italic; +} +@media screen and (min-width: 1008px) { +.page-list-item-title .page-list-item-byline-small { + display: none; +} +} +.page-list-item-byline { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.87); + font-size: 14px; + letter-spacing: 0.01em; + line-height: 20px; + cursor: pointer; + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 144px; + -ms-flex: 0 0 144px; + flex: 0 0 144px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.page-list-item-byline.no-byline { + color: rgba(0, 0, 0, 0.54); + cursor: normal; +} +@media screen and (min-width: 1008px) { +.page-list-item-byline { + display: inline; +} +} +@media screen and (min-width: 1128px) { +.page-list-item-byline { + padding-right: 16px; +} +} +.page-list-item-status { + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 144px; + -ms-flex: 0 0 144px; + flex: 0 0 144px; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + padding: 16px 0; +} +@media screen and (min-width: 1128px) { +.page-list-item-status { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; +} +} +.page-list-item-status .status-message { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + overflow: hidden; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; +} +.page-list-item-status .status-message.scheduled { + color: #ff9800; +} +.page-list-item-status .status-message.published { + color: #4caf50; +} +.page-list-item-status .status-message.archived { + color: #f44336; +} +.page-list-item-status .status-time { + font-family: "Noto Sans", Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + text-decoration: none; + text-rendering: optimizeLegibility; + color: rgba(0, 0, 0, 0.54); + font-size: 12px; + line-height: 16px; + overflow: hidden; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; +} +.page-list-item-collaborators { + display: none; + -webkit-box-flex: 0; + -webkit-flex: 0 0 120px; + -ms-flex: 0 0 120px; + flex: 0 0 120px; +} +@media screen and (min-width: 1128px) { +.page-list-item-collaborators { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +} +.page-list-item-collaborator { + cursor: pointer; +} + +.collaborator { + position: relative; +} +.collaborator + .collaborator { + margin-left: 8px; +} + +.kiln-confirm { + z-index: 1000000060; + position: fixed; +} + +.alert-container { + z-index: 1000000030; + left: 0; + position: fixed; + top: 64px; + width: 100%; +} +.alert-container .ui-alert { + z-index: 1000000030; + background-color: #ffffff; + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + margin: 0 auto 8px; + max-width: 768px; +} diff --git a/dist/clay-kiln-edit.js b/dist/clay-kiln-edit.js new file mode 100644 index 000000000..9aea52e1f --- /dev/null +++ b/dist/clay-kiln-edit.js @@ -0,0 +1,153540 @@ +/******/ (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 = 803); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 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__) { + +var baseGet = __webpack_require__(97); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.sharpCurve = exports.accelerationCurve = exports.decelerationCurve = exports.standardCurve = exports.collapsibleListClass = exports.dragItemUnsavedClass = exports.dragItemClass = exports.dropAreaClass = exports.permanentPlaceholderClass = exports.placeholderClass = exports.firstFieldClass = exports.fieldClass = exports.inlineFormClass = exports.wrappedClass = exports.selectorClass = exports.overlayClass = exports.pageAreaClass = exports.componentPropClass = exports.contentText = exports.contentJSON = exports.contentHeader = exports.userHeader = exports.hooksExt = exports.editComponentExt = exports.editExt = exports.htmlExt = exports.searchRoute = exports.instancesRoute = exports.schemaRoute = exports.logoutRoute = exports.loginRoute = exports.scheduleRoute = exports.listsRoute = exports.usersBareRoute = exports.usersRoute = exports.urisRoute = exports.pagesRoute = exports.componentRoute = exports.inputProp = exports.behaviorKey = exports.revealProp = exports.subProp = exports.pubProp = exports.variationProp = exports.removeProp = exports.versionProp = exports.devDescProp = exports.descProp = exports.groupsProp = exports.labelProp = exports.placeholderProp = exports.displayProp = exports.componentProp = exports.componentListProp = exports.bookmarkProp = exports.fieldProp = exports.refProp = exports.reorderItemAttr = exports.reorderAttr = exports.hiddenAttr = exports.layoutAttr = exports.placeholderAttr = exports.editAttr = exports.refAttr = undefined; + +var _startCase2 = __webpack_require__(78); + +var _startCase3 = _interopRequireDefault(_startCase2); + +var _get2 = __webpack_require__(1); + +var _get3 = _interopRequireDefault(_get2); + +exports.getComponentName = getComponentName; +exports.getComponentByNameAndInstance = getComponentByNameAndInstance; +exports.getLayoutNameAndInstance = getLayoutNameAndInstance; + +var _dom = __webpack_require__(15); + +var _dom2 = _interopRequireDefault(_dom); + +var _clayutils = __webpack_require__(19); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * wraps clayutils.getComponentName, swallowing the error if an invalid uri is passed + * + * @param {String} uri + * @returns {String} + */ +function getComponentName(uri) { + try { + return (0, _clayutils.getComponentName)(uri); + } catch (e) { + return false; + } +} + +/** + * Grab an element in the DOM when you know the name of the + * component and the instance of the component. + * + * @param {object} store + * @param {String} name + * @param {String} instance + * @return {Object|Null} + */ +function getComponentByNameAndInstance(store, name, instance) { + var sitePrefix = (0, _get3.default)(store, 'state.site.prefix', null), + uri; + + if (name && instance && sitePrefix) { + uri = sitePrefix + '/_components/' + name + '/instances/' + instance; + + return { + uri: uri, + el: _dom2.default.find('[' + refAttr + '="' + uri + '"]') + }; + } + + return null; +} + +/** + * get name and instance of the layout, as well as the warning message to display when editing the layout + * note: the message will use the custom layout name if it has been set + * @param {object} store + * @return {object} + */ +function getLayoutNameAndInstance(store) { + var layoutURI = (0, _get3.default)(store, 'state.layout.uri'), + layoutName = (0, _startCase3.default)((0, _clayutils.getLayoutName)(layoutURI)), + layoutInstance = (0, _startCase3.default)((0, _clayutils.getLayoutInstance)(layoutURI)), + layoutTitle = (0, _get3.default)(store, 'state.layout.state.title'), + layoutLabel = layoutTitle ? layoutTitle : layoutInstance + ' (' + layoutName + ')'; + + return { + name: layoutName, + instance: layoutInstance, + message: 'You are currently editing "' + layoutLabel + '". Changes you make will be reflected on all pages that use this layout.' + }; +} + +// it's easier to export and declare these in single lines +/* eslint-disable one-var */ +// attributes +var refAttr = exports.refAttr = 'data-uri'; // indicated root el of a component. value is the _ref or _self of the component +var editAttr = exports.editAttr = 'data-editable'; // indicates el is editable when clicked. value is path to data +var placeholderAttr = exports.placeholderAttr = 'data-placeholder'; // indicates el should have placeholder, but is NOT editable when clicked +var layoutAttr = exports.layoutAttr = 'data-layout-uri'; // set on element, points to the layout when data-uri points to the page +var hiddenAttr = exports.hiddenAttr = 'data-kiln-hidden'; +var reorderAttr = exports.reorderAttr = 'data-reorderable'; +var reorderItemAttr = exports.reorderItemAttr = 'data-reorderable-item'; +// properties +var refProp = exports.refProp = '_ref'; +var fieldProp = exports.fieldProp = '_has'; // used to determine if a node (in the schema) is a field +var bookmarkProp = exports.bookmarkProp = '_allowBookmarks'; // used to determine if bookmarked instances may be created +var componentListProp = exports.componentListProp = '_componentList'; +var componentProp = exports.componentProp = '_component'; +var displayProp = exports.displayProp = '_display'; // note: deprecated in kiln 5.x, should be removed in kiln 6.x +var placeholderProp = exports.placeholderProp = '_placeholder'; +var labelProp = exports.labelProp = '_label'; +var groupsProp = exports.groupsProp = '_groups'; +var descProp = exports.descProp = '_description'; +var devDescProp = exports.devDescProp = '_devDescription'; +var versionProp = exports.versionProp = '_version'; +var removeProp = exports.removeProp = '_confirmRemoval'; +var variationProp = exports.variationProp = 'componentVariation'; +var pubProp = exports.pubProp = '_publish'; +var subProp = exports.subProp = '_subscribe'; +var revealProp = exports.revealProp = '_reveal'; +var behaviorKey = exports.behaviorKey = 'fn'; // note: deprecated in kiln 5.x, should be removed in kiln 6.x +var inputProp = exports.inputProp = 'input'; // used to determine input name +// api routes, extensions, and headers +var componentRoute = exports.componentRoute = '/_components/'; +var pagesRoute = exports.pagesRoute = '/_pages/'; +var urisRoute = exports.urisRoute = '/_uris/'; +var usersRoute = exports.usersRoute = '/_users/'; +var usersBareRoute = exports.usersBareRoute = '/_users'; +var listsRoute = exports.listsRoute = '/_lists/'; +var scheduleRoute = exports.scheduleRoute = '/_schedule'; // no ending slash +var loginRoute = exports.loginRoute = '/_auth/login'; +var logoutRoute = exports.logoutRoute = '/_auth/logout'; +var schemaRoute = exports.schemaRoute = '/schema'; // no ending slash +var instancesRoute = exports.instancesRoute = '/instances'; // no ending slash +var searchRoute = exports.searchRoute = '/_search'; +var htmlExt = exports.htmlExt = '.html'; +var editExt = exports.editExt = '?edit=true'; +var editComponentExt = exports.editComponentExt = editExt + '&sitecss=false&js=false'; // ask for edit mode html from the server, sans js or site css +var hooksExt = exports.hooksExt = '?hooks=false'; // flag to disable running component save()/render() hooks on the server +var userHeader = exports.userHeader = 'X-Clay-User'; +var contentHeader = exports.contentHeader = 'Content-Type'; +var contentJSON = exports.contentJSON = 'application/json; charset=UTF-8'; +var contentText = exports.contentText = 'text/plain; charset=UTF-8'; +// reused classes +var componentPropClass = exports.componentPropClass = 'component-prop-wrapper'; +var pageAreaClass = exports.pageAreaClass = 'kiln-page-area'; +var overlayClass = exports.overlayClass = 'iframe-overlay'; +var selectorClass = exports.selectorClass = 'mini-selector'; +var wrappedClass = exports.wrappedClass = 'hidden-wrapped'; +var inlineFormClass = exports.inlineFormClass = 'editor-inline'; +var fieldClass = exports.fieldClass = 'kiln-field'; +var firstFieldClass = exports.firstFieldClass = 'first-field'; +var placeholderClass = exports.placeholderClass = 'kiln-placeholder'; +var permanentPlaceholderClass = exports.permanentPlaceholderClass = 'kiln-permanent-placeholder'; +var dropAreaClass = exports.dropAreaClass = 'dragula-drop-area'; +var dragItemClass = exports.dragItemClass = 'dragula-item'; +var dragItemUnsavedClass = exports.dragItemUnsavedClass = 'dragula-not-saved'; +var collapsibleListClass = exports.collapsibleListClass = 'collapsible-component-list'; +// animations +// standard curve - "ease in out", used for growing and shrinking material, +// and other property changes inside the viewport +var standardCurve = exports.standardCurve = [0.4, 0.0, 0.2, 1]; +// deceleration curve - "ease out", used for elements entering the viewport +var decelerationCurve = exports.decelerationCurve = [0, 0, 0.2, 1]; +// acceleration curve - "ease in", used for elements leaving the viewport permanently +var accelerationCurve = exports.accelerationCurve = [0.4, 0, 1, 1]; +// sharp curve - "ease in out", used for elements leaving the viewport temporarily +var sharpCurve = exports.sharpCurve = [0.4, 0, 0.6, 1]; +/* eslint-enable one-var */ + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(50), + isArray = __webpack_require__(3), + isObjectLike = __webpack_require__(41); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayMap = __webpack_require__(43), + baseIteratee = __webpack_require__(31), + baseMap = __webpack_require__(208), + isArray = __webpack_require__(3); + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); +} + +module.exports = map; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIndexOf = __webpack_require__(143), + isArrayLike = __webpack_require__(44), + isString = __webpack_require__(5), + toInteger = __webpack_require__(51), + values = __webpack_require__(213); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ +function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); +} + +module.exports = includes; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +var moment = __webpack_require__(11); + +function ParsedResult(result){ + result = result || {}; + + this.ref = result.ref; + this.index = result.index; + this.text = result.text; + this.tags = result.tags || {}; + + this.start = new ParsedComponents(result.start, result.ref) + if(result.end){ + this.end = new ParsedComponents(result.end, result.ref) + } +} + +ParsedResult.prototype.clone = function() { + var result = new ParsedResult(this); + result.tags = JSON.parse(JSON.stringify(this.tags)); + result.start = this.start.clone(); + if (this.end) { + result.end = this.end.clone(); + } +} + +ParsedResult.prototype.hasPossibleDates = function() { + return this.start.isPossibleDate() && (!this.end || this.end.isPossibleDate()); +} + + +function ParsedComponents (components, ref){ + + this.knownValues = {}; + this.impliedValues = {}; + + if (components) { + for (key in components) { + this.knownValues[key] = components[key]; + } + } + + if (ref) { + ref = moment(ref); + this.imply('day', ref.date()) + this.imply('month', ref.month() + 1) + this.imply('year', ref.year()) + } + + + this.imply('hour', 12); + this.imply('minute', 0); + this.imply('second', 0); + this.imply('millisecond', 0); +} + +ParsedComponents.prototype.clone = function () { + var component = new ParsedComponents(); + component.knownValues = JSON.parse(JSON.stringify(this.knownValues)); + component.impliedValues = JSON.parse(JSON.stringify(this.impliedValues)); + return component; +}; + +ParsedComponents.prototype.get = function(component, value) { + if (component in this.knownValues) return this.knownValues[component]; + if (component in this.impliedValues) return this.impliedValues[component]; +}; + +ParsedComponents.prototype.assign = function(component, value) { + this.knownValues[component] = value; + delete this.impliedValues[component]; +}; + +ParsedComponents.prototype.imply = function(component, value) { + if (component in this.knownValues) return; + this.impliedValues[component] = value; +}; + +ParsedComponents.prototype.isCertain = function(component) { + return component in this.knownValues; +}; + +ParsedComponents.prototype.isPossibleDate = function() { + var dateMoment = this.moment(); + if (this.isCertain('timezoneOffset')) { + dateMoment.utcOffset(this.get('timezoneOffset')) + } + + if (dateMoment.get('year') != this.get('year')) return false; + if (dateMoment.get('month') != this.get('month')-1) return false; + if (dateMoment.get('date') != this.get('day')) return false; + if (dateMoment.get('hour') != this.get('hour')) return false; + if (dateMoment.get('minute') != this.get('minute')) return false; + + return true; +}; + +ParsedComponents.prototype.date = function() { + var dateMoment = this.moment(); + return dateMoment.toDate(); +}; + +ParsedComponents.prototype.moment = function() { + var dateMoment = moment(); + + dateMoment.set('year', this.get('year')); + dateMoment.set('month', this.get('month')-1); + dateMoment.set('date', this.get('day')); + dateMoment.set('hour', this.get('hour')); + dateMoment.set('minute', this.get('minute')); + dateMoment.set('second', this.get('second')); + dateMoment.set('millisecond', this.get('millisecond')); + + // Javascript Date Object return minus timezone offset + var currentTimezoneOffset = dateMoment.utcOffset(); + var targetTimezoneOffset = this.isCertain('timezoneOffset') ? + this.get('timezoneOffset') : currentTimezoneOffset; + + var adjustTimezoneOffset = targetTimezoneOffset - currentTimezoneOffset; + dateMoment.add(-adjustTimezoneOffset, 'minutes'); + + return dateMoment; +}; + + + +exports.ParsedComponents = ParsedComponents; +exports.ParsedResult = ParsedResult; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +var assignValue = __webpack_require__(103), + copyObject = __webpack_require__(59), + createAssigner = __webpack_require__(196), + isArrayLike = __webpack_require__(44), + isPrototype = __webpack_require__(140), + keys = __webpack_require__(42); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ +var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } +}); + +module.exports = assign; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isObject2 = __webpack_require__(4); + +var _isObject3 = _interopRequireDefault(_isObject2); + +var _isString2 = __webpack_require__(5); + +var _isString3 = _interopRequireDefault(_isString2); + +exports.default = function (filename) { + var logger = void 0; + + if ((0, _isString3.default)(filename)) { + logger = _clayLog2.default.meta({ file: filename }); + } else if ((0, _isObject3.default)(filename)) { + logger = _clayLog2.default.meta(filename); + } else { + logger = _clayLog2.default.meta({}); // empty object for file-specific meta, maintains the syntax for other logs + } + + return { + info: info(logger), + trace: trace(logger), + debug: debug(logger), + warn: warn(logger), + error: error(logger) + }; +}; + +var _clayLog = __webpack_require__(409); + +var _clayLog2 = _interopRequireDefault(_clayLog); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +_clayLog2.default.init({ + name: 'kiln', + meta: { + kilnVersion: "10.2.2", // compile-time added + browserVersion: window.navigator.userAgent + } +}); + +/** + * log informational messages + * @param {function} logger + * @returns {function} + */ +function info(logger) { + return function (message, logObj) { + return logger('info', message, logObj); + }; +} + +/** + * log trace messages (with stack traces) + * @param {function} logger + * @returns {function} + */ +function trace(logger) { + return function (message, logObj) { + return logger('trace', message, logObj); + }; +} + +/** + * log debug messages (without stack traces) + * @param {function} logger + * @returns {function} + */ +function debug(logger) { + return function (message, logObj) { + return logger('debug', message, logObj); + }; +} + +/** + * log warning messages + * @param {function} logger + * @returns {function} + */ +function warn(logger) { + return function (message, logObj) { + return logger('warn', message, logObj); + }; +} + +/** + * log error messages + * note: you can simply pass in an Error and it will print nicely + * @param {function} logger + * @returns {function} + */ +function error(logger) { + return function (message, logObj) { + if ((0, _isString3.default)(message)) { + logger('error', message, logObj); + } else { + logger('error', message); // pass in error object directly + } + }; +} + +/** + * instantiate a logger for your file + * note for plugin authors: when using the log service, please make use of the + * file-specific log metadata to provide additional info when debugging, e.g. + * plugin (plugin name), action (intended action of the code calling the logger), etc + * @param {string|object} [filename] or file-specific log metadata + * @return {object} + */ + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js + +;(function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + + var hookCallback; + + function hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + } + + function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; + } + + function isObjectEmpty(obj) { + if (Object.getOwnPropertyNames) { + return (Object.getOwnPropertyNames(obj).length === 0); + } else { + var k; + for (k in obj) { + if (obj.hasOwnProperty(k)) { + return false; + } + } + return true; + } + } + + function isUndefined(input) { + return input === void 0; + } + + function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; + } + + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; + } + + function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; + } + + function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); + } + + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; + } + + function Locale(config) { + if (config != null) { + this.set(config); + } + } + + var keys; + + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; + + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + ss : '%d seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + var priorities = {}; + + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } + + function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PRIORITIES + + addUnitPriority('year', 1); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } + + function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } + + function set$1 (mom, unit, value) { + if (mom.isValid() && !isNaN(value)) { + if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); + } + else { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + } + + // MOMENTS + + function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + + function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + + function mod(n, x) { + return ((n % x) + x) % x; + } + + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } + + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; + } + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PRIORITY + + addUnitPriority('month', 8); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } + + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } + + function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; + } + + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; + } + + // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } + + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; + } + + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PRIORITIES + + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + // FORMATTING + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + } + + function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } + + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + + + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PRIORITY + addUnitPriority('hour', 13); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + addRegexToken('kk', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse + }; + + // internal storage for locale config files + var locales = {}; + var localeFamilies = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return globalLocale; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + var aliasedRequire = require; + __webpack_require__(819)("./" + name); + getSetGlobalLocale(oldLocale); + } catch (e) {} + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + else { + if ((typeof console !== 'undefined') && console.warn) { + //warn user if arguments are passed but the locale could not be set + console.warn('Locale ' + key + ' not found. Did you forget to load it?'); + } + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, config) { + if (config !== null) { + var locale, parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + locale = loadLocale(config.parentLocale); + if (locale != null) { + parentConfig = locale._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + function updateLocale(name, config) { + if (config != null) { + var locale, tmpLocale, parentConfig = baseConfig; + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + + // returns locale data + function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + function listLocales() { + return keys(locales); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, expectedWeekday, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); + + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + + // check for mismatching day of week + if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { + getParsingFlags(config).weekdayMismatch = true; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; + + function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + var result = [ + untruncateYear(yearStr), + defaultLocaleMonthsShort.indexOf(monthStr), + parseInt(dayStr, 10), + parseInt(hourStr, 10), + parseInt(minuteStr, 10) + ]; + + if (secondStr) { + result.push(parseInt(secondStr, 10)); + } + + return result; + } + + function untruncateYear(yearStr) { + var year = parseInt(yearStr, 10); + if (year <= 49) { + return 2000 + year; + } else if (year <= 999) { + return 1900 + year; + } + return year; + } + + function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + } + + function checkWeekday(weekdayStr, parsedInput, config) { + if (weekdayStr) { + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), + weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); + if (weekdayProvided !== weekdayActual) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return false; + } + } + return true; + } + + var obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + + function calculateOffset(obsOffset, militaryOffset, numOffset) { + if (obsOffset) { + return obsOffsets[obsOffset]; + } else if (militaryOffset) { + // the only allowed military tz is Z + return 0; + } else { + var hm = parseInt(numOffset, 10); + var m = hm % 100, h = (hm - m) / 100; + return h * 60 + m; + } + } + + // date and time from ref 2822 format + function configFromRFC2822(config) { + var match = rfc2822.exec(preprocessRFC2822(config._i)); + if (match) { + var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); + if (!checkWeekday(match[1], parsedArray, config)) { + return; + } + + config._a = parsedArray; + config._tzm = calculateOffset(match[8], match[9], match[10]); + + config._d = createUTCDate.apply(null, config._a); + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); + } + + hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // constant that refers to the ISO standard + hooks.ISO_8601 = function () {}; + + // constant that refers to the RFC 2822 form + hooks.RFC_2822 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + + var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + + function isDurationValid(m) { + for (var key in m) { + if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; + } + + function isValid$1() { + return this._isValid; + } + + function createInvalid$1() { + return createDuration(NaN); + } + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible to translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // FORMATTING + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } + + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } + + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + + function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + createDuration.fn = Duration.prototype; + createDuration.invalid = createInvalid$1; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; + } + + function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } + } + + var add = createAdder(1, 'add'); + var subtract = createAdder(-1, 'subtract'); + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + } + + function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + + function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + + function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); + } + + function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); + } + + function diff (input, units, asFloat) { + var that, + zoneDelta, + output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + switch (units) { + case 'year': output = monthDiff(this, that) / 12; break; + case 'month': output = monthDiff(this, that); break; + case 'quarter': output = monthDiff(this, that) / 3; break; + case 'second': output = (this - that) / 1e3; break; // 1000 + case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 + case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 + case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst + case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: output = this - that; + } + + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + + hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function toISOString(keepOffset) { + if (!this.isValid()) { + return null; + } + var utc = keepOffset !== true; + var m = utc ? this.clone().utc() : this; + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + if (utc) { + return this.toDate().toISOString(); + } else { + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); + } + } + return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + + /** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ + function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); + } + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(this.valueOf() / 1000); + } + + function toDate () { + return new Date(this.valueOf()); + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + + function isValid$2 () { + return isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PRIORITY + + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); + + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); + }); + + // MOMENTS + + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } + + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PRIORITY + + addUnitPriority('quarter', 7); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + // FORMATTING + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PRIORITY + addUnitPriority('date', 9); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0]); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + // FORMATTING + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PRIORITY + addUnitPriority('dayOfYear', 4); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // FORMATTING + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PRIORITY + + addUnitPriority('minute', 14); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + // FORMATTING + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PRIORITY + + addUnitPriority('second', 15); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + // FORMATTING + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PRIORITY + + addUnitPriority('millisecond', 16); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + // FORMATTING + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var proto = Moment.prototype; + + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.year = getSetYear; + proto.isLeapYear = getIsLeapYear; + proto.weekYear = getSetWeekYear; + proto.isoWeekYear = getSetISOWeekYear; + proto.quarter = proto.quarters = getSetQuarter; + proto.month = getSetMonth; + proto.daysInMonth = getDaysInMonth; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.isoWeeksInYear = getISOWeeksInYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeekday = getSetISODayOfWeek; + proto.dayOfYear = getSetDayOfYear; + proto.hour = proto.hours = getSetHour; + proto.minute = proto.minutes = getSetMinute; + proto.second = proto.seconds = getSetSecond; + proto.millisecond = proto.milliseconds = getSetMillisecond; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; + proto.hasAlignedHourOffset = hasAlignedHourOffset; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; + proto.zoneAbbr = getZoneAbbr; + proto.zoneName = getZoneName; + proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); + proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + + function createUnix (input) { + return createLocal(input * 1000); + } + + function createInZone () { + return createLocal.apply(null, arguments).parseZone(); + } + + function preParsePostFormat (string) { + return string; + } + + var proto$1 = Locale.prototype; + + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; + proto$1.week = localeWeek; + proto$1.firstDayOfYear = localeFirstDayOfYear; + proto$1.firstDayOfWeek = localeFirstDayOfWeek; + + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; + + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; + + proto$1.isPM = localeIsPM; + proto$1.meridiem = localeMeridiem; + + function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); + } + + function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; + } + + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; + } + + function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); + } + + function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } + + function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } + + function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } + + function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } + + getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + + hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); + hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + + var mathAbs = Math.abs; + + function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function clone$1 () { + return createDuration(this); + } + + function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; + } + + function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set the rounding function for relative time strings + function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; + } + + // This function allows you to set a threshold for relative time strings + function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; + } + + function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var abs$1 = Math.abs; + + function sign(x) { + return ((x > 0) - (x < 0)) || +x; + } + + function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + var totalSign = total < 0 ? '-' : ''; + var ymSign = sign(this._months) !== sign(total) ? '-' : ''; + var daysSign = sign(this._days) !== sign(total) ? '-' : ''; + var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + + return totalSign + 'P' + + (Y ? ymSign + Y + 'Y' : '') + + (M ? ymSign + M + 'M' : '') + + (D ? daysSign + D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? hmsSign + h + 'H' : '') + + (m ? hmsSign + m + 'M' : '') + + (s ? hmsSign + s + 'S' : ''); + } + + var proto$2 = Duration.prototype; + + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; + proto$2.asMilliseconds = asMilliseconds; + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + + proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); + proto$2.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + hooks.version = '2.22.2'; + + setHookCallback(createLocal); + + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; + + // currently HTML5 input type only supports 24-hour formats + hooks.HTML5_FMT = { + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // + DATE: 'YYYY-MM-DD', // + TIME: 'HH:mm', // + TIME_SECONDS: 'HH:mm:ss', // + TIME_MS: 'HH:mm:ss.SSS', // + WEEK: 'YYYY-[W]WW', // + MONTH: 'YYYY-MM' // + }; + + return hooks; + +}))); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(67)(module))) + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + + +function Parser(config) { + + config = config || {}; + var strictMode = config.strict; + + this.isStrictMode = function() { return (strictMode == true) }; + + this.pattern = function() { return /./i; } + + this.extract = function(text, ref, match, opt){ return null; } + + this.execute = function(text, ref, opt) { + + var results = []; + var regex = this.pattern(); + + var remainingText = text; + var match = regex.exec(remainingText); + + while (match) { + + // Calculate match index on the full text; + match.index += text.length - remainingText.length; + + var result = this.extract(text, ref, match, opt); + if (result) { + + // If success, start from the end of the result + remainingText = text.substring(result.index + result.text.length); + + if (!this.isStrictMode() || result.hasPossibleDates()) { + results.push(result); + } + + } else { + // If fail, move on by 1 + remainingText = text.substring(match.index + 1); + } + + match = regex.exec(remainingText); + } + + if (this.refiners) { + this.refiners.forEach(function () { + results = refiner.refine(results, text, options); + }); + } + + return results; + } +} + +exports.Parser = Parser; + +exports.ENISOFormatParser = __webpack_require__(818).Parser; +exports.ENDeadlineFormatParser = __webpack_require__(820).Parser; +exports.ENRelativeDateFormatParser = __webpack_require__(821).Parser; +exports.ENMonthNameLittleEndianParser = __webpack_require__(822).Parser; +exports.ENMonthNameMiddleEndianParser = __webpack_require__(823).Parser; +exports.ENMonthNameParser = __webpack_require__(824).Parser; +exports.ENSlashDateFormatParser = __webpack_require__(825).Parser; +exports.ENSlashDateFormatStartWithYearParser = __webpack_require__(826).Parser; +exports.ENSlashMonthFormatParser = __webpack_require__(827).Parser; +exports.ENTimeAgoFormatParser = __webpack_require__(828).Parser; +exports.ENTimeExpressionParser = __webpack_require__(829).Parser; +exports.ENTimeFromNowFormatParser = __webpack_require__(830).Parser; +exports.ENWeekdayParser = __webpack_require__(286).Parser; +exports.ENCasualDateParser = __webpack_require__(831).Parser; +exports.ENCasualTimeParser = __webpack_require__(832).Parser; + +exports.JPStandardParser = __webpack_require__(833).Parser; +exports.JPCasualDateParser = __webpack_require__(835).Parser; + +exports.ESCasualDateParser = __webpack_require__(836).Parser; +exports.ESDeadlineFormatParser = __webpack_require__(837).Parser; +exports.ESTimeAgoFormatParser = __webpack_require__(838).Parser; +exports.ESTimeExpressionParser = __webpack_require__(839).Parser; +exports.ESWeekdayParser = __webpack_require__(840).Parser; +exports.ESMonthNameLittleEndianParser = __webpack_require__(841).Parser; +exports.ESSlashDateFormatParser = __webpack_require__(843).Parser; + +exports.FRCasualDateParser = __webpack_require__(844).Parser; +exports.FRDeadlineFormatParser = __webpack_require__(845).Parser; +exports.FRMonthNameLittleEndianParser = __webpack_require__(846).Parser; +exports.FRSlashDateFormatParser = __webpack_require__(847).Parser; +exports.FRTimeAgoFormatParser = __webpack_require__(848).Parser; +exports.FRTimeExpressionParser = __webpack_require__(849).Parser; +exports.FRWeekdayParser = __webpack_require__(850).Parser; +exports.FRRelativeDateFormatParser = __webpack_require__(851).Parser; + +exports.ZHHantDateParser = __webpack_require__(853).Parser; +exports.ZHHantWeekdayParser = __webpack_require__(854).Parser; +exports.ZHHantTimeExpressionParser = __webpack_require__(855).Parser; +exports.ZHHantCasualDateParser = __webpack_require__(856).Parser; +exports.ZHHantDeadlineFormatParser = __webpack_require__(857).Parser; + +exports.DEDeadlineFormatParser = __webpack_require__(858).Parser; +exports.DEMonthNameLittleEndianParser = __webpack_require__(859).Parser; +exports.DEMonthNameParser = __webpack_require__(860).Parser; +exports.DESlashDateFormatParser = __webpack_require__(861).Parser; +exports.DETimeAgoFormatParser = __webpack_require__(862).Parser; +exports.DETimeExpressionParser = __webpack_require__(863).Parser; +exports.DEWeekdayParser = __webpack_require__(864).Parser; +exports.DECasualDateParser = __webpack_require__(865).Parser; + + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayReduce = __webpack_require__(195), + baseEach = __webpack_require__(65), + baseIteratee = __webpack_require__(31), + baseReduce = __webpack_require__(348), + isArray = __webpack_require__(3); + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); +} + +module.exports = reduce; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +var createFind = __webpack_require__(178), + findIndex = __webpack_require__(36); + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ +var find = createFind(findIndex); + +module.exports = find; + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var domify = __webpack_require__(368), + _each = __webpack_require__(28), + _includes = __webpack_require__(7); + +/** + * Get url without _how_ to access it, creating a uri. + * + * Removes port and protocol. + * + * @returns {string} + */ +function uri() { + var location = document.location; + + return location.hostname + location.pathname; +} + +/** + * get page uri + * note: page uri should be in the data-uri attribute of the element + * @returns {string} + */ +function pageUri() { + return document.firstElementChild.getAttribute('data-uri'); +} + +/** + * This function can be minimized smaller than document.querySelector + * @param {Element} [el] + * @param {string} selector + * @returns {Element} + * @example find('ul') //finds globally + * @example find(el, '.list') //finds within + */ +function find(el, selector) { + if (!selector) { + selector = el; + el = document; + } + return el.querySelector(selector); +} + +/** + * This function can be minimized smaller than document.querySelector + * @param {Element} [el] + * @param {string} selector + * @returns {NodeList} + * @example findAll('ul') //finds globally + * @example findAll(el, '.list') //finds within + */ +function findAll(el, selector) { + if (!selector) { + selector = el; + el = document; + } + return el.querySelectorAll(selector); +} + +/** + * NOTE: nodeType of 1 means Element + * @param {Element} parent + * @returns {Element} cursor + */ +function getFirstChildElement(parent) { + var cursor = parent.firstChild; + + while (cursor && cursor.nodeType !== 1) { + cursor = cursor.nextSibling; + } + return cursor; +} + +/** + * Returns true if the element would be selected by the specified selector. + * Essentially a polyfill, but necessary for `closest`. + * @param {Node} node preferably an Element for better performance, but it will accept any Node. + * @param {string} selector + * @returns {boolean} + */ +function matches(node, selector) { + var parent, matches, i; + + if (node.matches) { + return node.matches(selector); + } else { + parent = node.parentElement; + matches = parent ? parent.querySelectorAll(selector) : []; + i = 0; + while (matches[i] && matches[i] !== node) { + i++; + } + return !!matches[i]; + } +} + +/** + * get closest element that matches selector starting with the element itself and traversing up through parents. + * @param {Element} node + * @param {string} parentSelector + * @return {Element|null} + */ +function closest(node, parentSelector) { + var cursor = node; + + if (!parentSelector || typeof parentSelector !== 'string') { + throw new Error('Please specify a selector to match against!'); + } + + while (cursor && !matches(cursor, parentSelector)) { + cursor = cursor.parentNode; + } + + if (!cursor) { + return null; + } else { + return cursor; + } +} + +function prependChild(parent, child) { + if (parent.firstChild) { + parent.insertBefore(child, parent.firstChild); + } else { + parent.appendChild(child); + } +} + +function insertBefore(node, newNode) { + if (node.parentNode) { + node.parentNode.insertBefore(newNode, node); + } +} + +function insertAfter(node, newNode) { + if (node.parentNode) { + node.parentNode.insertBefore(newNode, node.nextSibling); + } +} + +/** + * Fast way to clear all children + * @see http://jsperf.com/innerhtml-vs-removechild/294 + * @param {Element} el + */ +function clearChildren(el) { + while (el.firstChild) { + el.removeChild(el.firstChild); + } +} + +/** + * Remove a single element from its parent + * @param {Element} el + */ +function removeElement(el) { + el.parentNode.removeChild(el); +} + +function preventDefault(e) { + e.preventDefault ? e.preventDefault() : e.returnValue = false; // eslint-disable-line +} + +function replaceElement(el, replacementEl) { + var parent = el.parentNode; + + if (parent) { + parent.replaceChild(replacementEl, el); + } +} + +/** + * wrap elements in another element + * @param {NodeList|Element} els + * @param {string} wrapper + * @returns {Element} wrapperEl + */ +function wrapElements(els, wrapper) { + var wrapperEl = document.createElement(wrapper); + + // make sure elements are in an array + if (els instanceof HTMLElement) { + els = [els]; + } else { + els = Array.prototype.slice.call(els); + } + + _each(els, function (el) { + // put it into the wrapper, remove it from its parent + el.parentNode.removeChild(el); + wrapperEl.appendChild(el); + }); + + // return the wrapped elements + return wrapperEl; +} + +/** + * unwrap elements from another element + * @param {Element} parent + * @param {Element} wrapper + */ +function unwrapElements(parent, wrapper) { + var el = wrapper.childNodes[0]; + + // ok, so this looks weird, right? + // turns out, appending nodes to another node will remove them + // from the live NodeList, so we can keep iterating over the + // first item in that list and grab all of them. Nice! + while (el) { + parent.appendChild(el); + el = wrapper.childNodes[0]; + } + + parent.removeChild(wrapper); +} + +/** + * Create a remove node handler that runs fn and removes the observer. + * @param {Element} el + * @param {Function} fn + * @returns {Function} + */ +function createRemoveNodeHandler(el, fn) { + return function (mutations, observer) { + mutations.forEach(function (mutation) { + if (_includes(mutation.removedNodes, el)) { + fn(); + observer.disconnect(); + } + }); + }; +} + +/** + * Run a function when an element is removed from the DOM. + * Note: Observer is removed after the function is run once. + * @param {Element} el Element to observe. + * @param {Function} fn Function to execute when element is removed. + */ +function onRemove(el, fn) { + var observer = new MutationObserver(this.createRemoveNodeHandler(el, fn)); + + observer.observe(el.parentNode, {childList: true}); +} + +/** + * Get the position of a DOM element + * @param {Element} el + * @return {object} + */ +function getPos(el) { + var rect = el.getBoundingClientRect(), + scrollY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; + + return { + top: rect.top + scrollY, + bottom: rect.top + rect.height + scrollY, + height: rect.height + }; +} + +// creating elements +module.exports.create = domify; + +// getting uri stuff +module.exports.uri = uri; +module.exports.pageUri = pageUri; + +// finding elements (these minify nicely) +module.exports.find = find; +module.exports.findAll = findAll; +module.exports.matches = matches; +module.exports.closest = closest; +module.exports.getFirstChildElement = getFirstChildElement; +module.exports.getPos = getPos; + +// manipulating elements +module.exports.prependChild = prependChild; +module.exports.insertBefore = insertBefore; +module.exports.insertAfter = insertAfter; +module.exports.replaceElement = replaceElement; +module.exports.removeElement = removeElement; +module.exports.clearChildren = clearChildren; + +// wrapping and unwrapping elements +module.exports.wrapElements = wrapElements; +module.exports.unwrapElements = unwrapElements; + +// event handling +module.exports.preventDefault = preventDefault; +module.exports.createRemoveNodeHandler = createRemoveNodeHandler; +module.exports.onRemove = onRemove; + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _startCase2 = __webpack_require__(78); + +var _startCase3 = _interopRequireDefault(_startCase2); + +exports.default = label; + +var _references = __webpack_require__(2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * remove "clay-" from names + * so labels for each npm component don't all start with "Clay ..." + * @param {string} name + * @returns {string} + */ +function dropClay(name) { + return name.replace(/^clay\-/i, ''); +} + +/** + * get label + * if _label exists, use it + * else get the name of the field/group, prettified + * e.g. "mediaplay-image" would become "Mediaplay Image" + * @param {string} name + * @param {object} schema + * @return {string} + */ +function label(name, schema) { + var label = schema && schema[_references.labelProp]; + + if (label) { + return label; + } else { + return dropClay(name).split('-').map(_startCase3.default).join(' '); // split on hyphens + } +}; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var disposed = false; +function injectStyle(ssrContext) { + if (disposed) return; + __webpack_require__(469); +} +var normalizeComponent = __webpack_require__(0); +/* script */ +var __vue_script__ = __webpack_require__(470); +/* template */ +var __vue_template__ = __webpack_require__(471); +/* template functional */ +var __vue_template_functional__ = false; +/* styles */ +var __vue_styles__ = injectStyle; +/* scopeId */ +var __vue_scopeId__ = null; +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null; +var Component = normalizeComponent(__vue_script__, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__); +Component.options.__file = "node_modules/keen-ui/src/UiButton.vue"; + +/* hot reload */ +if (false) { + (function () { + var hotAPI = require("vue-hot-reload-api"); + hotAPI.install(require("vue"), false); + if (!hotAPI.compatible) return; + module.hot.accept(); + if (!module.hot.data) { + hotAPI.createRecord("data-v-4f6c3ba9", Component.options); + } else { + hotAPI.reload("data-v-4f6c3ba9", Component.options); + } + module.hot.dispose(function (data) { + disposed = true; + }); + })(); +} + +module.exports = Component.exports; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _vue = __webpack_require__(46); + +var _vue2 = _interopRequireDefault(_vue); + +var _vuex = __webpack_require__(69); + +var _vuex2 = _interopRequireDefault(_vuex); + +var _vueAsyncComputed = __webpack_require__(345); + +var _vueAsyncComputed2 = _interopRequireDefault(_vueAsyncComputed); + +var _defaultState = __webpack_require__(194); + +var _defaultState2 = _interopRequireDefault(_defaultState); + +var _mutations = __webpack_require__(346); + +var _mutations2 = _interopRequireDefault(_mutations); + +var _actions = __webpack_require__(390); + +var _actions2 = _interopRequireDefault(_actions); + +var _plugins = __webpack_require__(515); + +var _plugins2 = _interopRequireDefault(_plugins); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +_vue2.default.use(_vuex2.default); +_vue2.default.use(_vueAsyncComputed2.default); + +var store = new _vuex2.default.Store({ + strict: Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production', // only do strict mode when developing + state: _defaultState2.default, + mutations: _mutations2.default, + actions: _actions2.default, + plugins: _plugins2.default +}); + +exports.default = store; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +!function (t, e) { + for (var r in e) { + t[r] = e[r]; + } +}(exports, function (t) { + var e = {};function r(n) { + if (e[n]) return e[n].exports;var o = e[n] = { i: n, l: !1, exports: {} };return t[n].call(o.exports, o, o.exports, r), o.l = !0, o.exports; + }return r.m = t, r.c = e, r.d = function (t, e, n) { + r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n }); + }, r.r = function (t) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 }); + }, r.t = function (t, e) { + if (1 & e && (t = r(t)), 8 & e) return t;if (4 & e && "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) && t && t.__esModule) return t;var n = Object.create(null);if (r.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t) for (var o in t) { + r.d(n, o, function (e) { + return t[e]; + }.bind(null, o)); + }return n; + }, r.n = function (t) { + var e = t && t.__esModule ? function () { + return t.default; + } : function () { + return t; + };return r.d(e, "a", e), e; + }, r.o = function (t, e) { + return Object.prototype.hasOwnProperty.call(t, e); + }, r.p = "", r(r.s = 5); +}([function (t, e, r) { + "use strict"; + function n(t) { + return (n = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (t) { + return typeof t === "undefined" ? "undefined" : _typeof(t); + } : function (t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t === "undefined" ? "undefined" : _typeof(t); + })(t); + }t.exports.strCheck = function (t) { + if ("string" == typeof t) return !0;throw new Error("Argument must be a string, not " + n(t)); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /_components\/(.+?)[\/\.]/.exec(t) || /_components\/(.*)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /\/_layouts\/.+?\/instances\/([^\.\/@]+)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.toLowerCase().indexOf("/_layouts/") > -1; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.toLowerCase().indexOf("/_pages/") > -1; + }; +}, function (t, e, r) { + "use strict"; + t.exports.findComponentRefInPage = r(6), t.exports.getComponentInstance = r(7), t.exports.getLayoutInstance = r(2), t.exports.getComponentName = r(1), t.exports.getLayoutName = r(8), t.exports.getComponentVersion = r(9), t.exports.getPageInstance = r(10), t.exports.getPageVersion = r(11), t.exports.getListInstance = r(12), t.exports.getPrefix = r(13), t.exports.isComponent = r(14), t.exports.isLayout = r(3), t.exports.isLayoutMeta = r(15), t.exports.isDefaultComponent = r(16), t.exports.isDefaultLayout = r(17), t.exports.isPage = r(4), t.exports.isPageMeta = r(18), t.exports.isPublished = r(19), t.exports.isList = r(20), t.exports.isUri = r(21), t.exports.isUser = r(22), t.exports.replaceVersion = r(23), t.exports.uriPrefixToSlug = r(24), t.exports.uriSlugToPrefix = r(25), t.exports.jsonPrefixToSlug = r(26), t.exports.jsonSlugToPrefix = r(27); +}, function (t, e, r) { + "use strict"; + function n(t) { + return (n = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (t) { + return typeof t === "undefined" ? "undefined" : _typeof(t); + } : function (t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t === "undefined" ? "undefined" : _typeof(t); + })(t); + }var o = r(1), + c = r(0).strCheck;t.exports = function (t, e) { + if (c(e), "object" !== n(t)) throw new Error("Page argument must be an object, not ".concat(n(t)));return Object.values(t).filter(Array.isArray).reduce(function (t, e) { + return t.concat(e); + }, []).find(function (t) { + return o(t) === e; + }); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /\/_components\/.+?\/instances\/([^\.@]+)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /_layouts\/(.+?)[\/\.]/.exec(t) || /_layouts\/(.*)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /\/_components\/.+?@(.+)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /\/_pages\/([^\.\/]+)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /\/_pages\/.+?@(.+)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + n.strCheck(t);var e = /\/_lists\/(.*)/.exec(t);return e && e[1]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.split(/\/_(pages|components|lists|uris|schedule|users|layouts|sites)/)[0]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.toLowerCase().indexOf("/_components/") > -1; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0), + o = r(3), + c = r(2);t.exports = function (t) { + return n.strCheck(t), o(t) && !!c(t) && !!t.match(/\/meta$/i); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), !!t.match(/\/_components\/[A-Za-z0-9\-]+$/); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), !!t.match(/\/_layouts\/[A-Za-z0-9\-]+$/); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0), + o = r(4);t.exports = function (t) { + return n.strCheck(t), o(t) && !!t.match(/\/meta$/i); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), -1 !== t.indexOf("@published"); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.toLowerCase().indexOf("/_lists/") > -1; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.toLowerCase().indexOf("/_uris/") > -1; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + return n.strCheck(t), t.toLowerCase().indexOf("/_users/") > -1; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t, e) { + return n.strCheck(t), e ? t.split("@")[0] + "@" + e : t.split("@")[0]; + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t, e) { + var r = e.host, + o = e.path, + c = e.slug, + s = e.prefix, + u = -1 !== t.indexOf("/_");return s || (s = o && o.length > 1 ? "".concat(r).concat(o) : r), n.strCheck(t), t.replace("".concat(s).concat(u ? "/" : ""), "".concat(c).concat(u ? "/" : "")); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t, e) { + var r = e.slug, + o = e.prefix, + c = e.host, + s = e.path, + u = -1 !== t.indexOf("/_");return o || (o = s && s.length > 1 ? "".concat(c).concat(s) : c), n.strCheck(t), t.replace("".concat(r).concat(u ? "/" : ""), "".concat(o).concat(u ? "/" : "")); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t, e) { + var r, + o, + c, + s = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], + u = e.slug, + i = e.host, + a = e.path, + f = e.prefix;return n.strCheck(t), f || (f = a && a.length > 1 ? "".concat(i).concat(a) : i), r = "".concat(s ? '"_ref":' : "", '"').concat(f, "/_components/"), o = "".concat(s ? '"_ref":' : "", '"').concat(u, "/_components/"), c = new RegExp(r, "g"), t.replace(c, o); + }; +}, function (t, e, r) { + "use strict"; + var n = r(0);t.exports = function (t) { + var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];return function (r) { + var o, + c, + s, + u = t.slug, + i = t.host, + a = t.path, + f = t.prefix;return n.strCheck(r), f || (f = a && a.length > 1 ? "".concat(i).concat(a) : i), o = "".concat(e ? '"_ref":' : "", '"').concat(f, "/_components/"), c = "".concat(e ? '"_ref":' : "", '"').concat(u, "/_components/"), s = new RegExp(c, "g"), r.replace(s, o); + }; + }; +}])); + +/***/ }), +/* 20 */ +/***/ (function(module, exports) { + +/** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ +function head(array) { + return (array && array.length) ? array[0] : undefined; +} + +module.exports = head; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseClone = __webpack_require__(217); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; + + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var disposed = false; +function injectStyle(ssrContext) { + if (disposed) return; + __webpack_require__(438); +} +var normalizeComponent = __webpack_require__(0); +/* script */ +var __vue_script__ = __webpack_require__(439); +/* template */ +var __vue_template__ = __webpack_require__(440); +/* template functional */ +var __vue_template_functional__ = false; +/* styles */ +var __vue_styles__ = injectStyle; +/* scopeId */ +var __vue_scopeId__ = null; +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null; +var Component = normalizeComponent(__vue_script__, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__); +Component.options.__file = "node_modules/keen-ui/src/UiIcon.vue"; + +/* hot reload */ +if (false) { + (function () { + var hotAPI = require("vue-hot-reload-api"); + hotAPI.install(require("vue"), false); + if (!hotAPI.compatible) return; + module.hot.accept(); + if (!module.hot.data) { + hotAPI.createRecord("data-v-9ed6fda0", Component.options); + } else { + hotAPI.reload("data-v-9ed6fda0", Component.options); + } + module.hot.dispose(function (data) { + disposed = true; + }); + })(); +} + +module.exports = Component.exports; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _find2 = __webpack_require__(14); + +var _find3 = _interopRequireDefault(_find2); + +var _filter2 = __webpack_require__(33); + +var _filter3 = _interopRequireDefault(_filter2); + +var _includes2 = __webpack_require__(7); + +var _includes3 = _interopRequireDefault(_includes2); + +var _isString2 = __webpack_require__(5); + +var _isString3 = _interopRequireDefault(_isString2); + +exports.getComponentEl = getComponentEl; +exports.getParentComponent = getParentComponent; +exports.getLayout = getLayout; +exports.getPrevComponent = getPrevComponent; +exports.getNextComponent = getNextComponent; +exports.getVisibleList = getVisibleList; +exports.getPrevVisible = getPrevVisible; +exports.getNextVisible = getNextVisible; +exports.fieldSelectors = fieldSelectors; +exports.getFieldEl = getFieldEl; +exports.isComponentInPage = isComponentInPage; +exports.isComponentInHead = isComponentInHead; + +var _dom = __webpack_require__(15); + +var _references = __webpack_require__(2); + +var _headComponents = __webpack_require__(73); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Get the closest component element from the DOM. Checks self and then parents. + * note: getting from a uri assumes an instance of a component is used ONCE on the page + * (it returns the first element that matches that particular instance) + * @param {Element|string} el Any element within a component, or the component's uri + * @returns {Element|undefined} + */ +function getComponentEl(el) { + return (0, _isString3.default)(el) ? (0, _dom.find)('[' + _references.refAttr + '="' + el + '"]') : el && (0, _dom.closest)(el, '[' + _references.refAttr + ']'); +} + +/** + * Get the closest parent component of the component from the DOM. + * if the component has no parentNode (e.g. it's outside the DOM, being re-rendered), + * search for the component in the dom before finding the parent + * @param {Element} el A component element + * @returns {Element} + */ +function getParentComponent(el) { + if (el.parentNode) { + return getComponentEl(el.parentNode) || getLayout().el; + } else { + var uri = el.getAttribute(_references.refAttr), + domEl = (0, _dom.find)('[' + _references.refAttr + '="' + uri + '"]'); + + return domEl && domEl.parentNode && getComponentEl(domEl.parentNode) || getLayout().el; + } +} + +function getLayout() { + var el = document.firstElementChild, + uri = el.getAttribute(_references.layoutAttr); + + return { el: el, uri: uri }; +} + +/** + * match against a component, optionally providing a component name + * @param {Element} el + * @param {string} [name] + * @return {Element|undefined} + */ +function matchComponent(el, name) { + if (name) { + return el.nodeType === el.ELEMENT_NODE && (0, _includes3.default)(el.getAttribute(_references.refAttr), '/_components/' + name); + } else { + return el.nodeType === el.ELEMENT_NODE && el.hasAttribute(_references.refAttr); + } +} + +/** + * get previous component element + * @param {Element} el inside current component + * @param {string} [name] to match a specific component + * @return {Element|undefined} + */ +function getPrevComponent(el, name) { + var componentEl = getComponentEl(el); + + var prev = componentEl.previousSibling; + + while (prev) { + if (matchComponent(prev, name)) { + return prev; + } else { + prev = prev.previousSibling; + } + } +} + +/** + * get next component element + * @param {Element} el inside current component + * @param {string} [name] to match a specific component + * @return {Element|undefined} + */ +function getNextComponent(el, name) { + var componentEl = getComponentEl(el); + + var next = componentEl.nextSibling; + + while (next) { + if (matchComponent(next, name)) { + return next; + } else { + next = next.nextSibling; + } + } +} + +/** + * determine if an element is visible on the page + * @param {Element} el + * @returns {boolean} + */ +function showVisible(el) { + // checking offsetParent works for all non-fixed elements, + // and is much faster than checking getComputedStyle(el).display and visibility + // note: [data-kiln-hidden] is a special attribute you can add to your + // component's root element to hide it from the visible component list + // and selector-based component navigation + return el.offsetParent !== null && !el.getAttribute(_references.hiddenAttr); +} + +/** + * get list of visible components on the page + * @param {Element} [doc] for testing + * @return {array} + */ +function getVisibleList(doc) { + doc = doc || /* istanbul ignore next */document.body; + + return (0, _filter3.default)((0, _dom.findAll)(doc, '[' + _references.refAttr + ']'), showVisible); +} + +/** + * get previous visible component + * @param {Element} el + * @param {Element} [doc] for testing + * @return {Element|undefined} + */ +function getPrevVisible(el, doc) { + var list = getVisibleList(doc); + + return list[list.indexOf(el) - 1]; +} + +/** + * get next visible component + * @param {Element} el + * @param {Element} [doc] for testing + * @return {Element|undefined} + */ +function getNextVisible(el, doc) { + var list = getVisibleList(doc); + + return list[list.indexOf(el) + 1]; +} + +/** + * return selectors that can be used to find a specific field + * @param {string} uri + * @param {string} path + * @return {array} of three selectors: one where the editable element is the root component element, + * one where the editable element is inside the component, + * and one that simply matches the editable field (to match editable component lists in the layout) + */ +function fieldSelectors(uri, path) { + return ['[' + _references.refAttr + '="' + uri + '"][' + _references.editAttr + '="' + path + '"]', '[' + _references.refAttr + '="' + uri + '"] [' + _references.editAttr + '="' + path + '"]', '[' + _references.editAttr + '="' + path + '"]']; +} + +/** + * find field element in the dom + * @param {string} uri + * @param {string} path + * @return {Element|null} + */ +function getFieldEl(uri, path) { + var selectors = fieldSelectors(uri, path), + el = (0, _dom.find)(selectors[0]) || (0, _dom.find)(selectors[1]); // find field in normal components + + if (el) { + return el; + } else { + // attempt to find field in layout, + // by checking all the fields that match and returning the first one + // that is NOT inside a component (the field whose closest data-uri node is actually ) + return (0, _find3.default)((0, _dom.findAll)(selectors[2]), function (fieldEl) { + return (0, _dom.closest)(fieldEl, '[' + _references.refAttr + ']') === document.firstElementChild; + }); + } +} + +/** + * determine if a component is in the page or layout + * @param {string} uri + * @return {Boolean} + */ +function isComponentInPage(uri) { + var el = (0, _dom.find)('[' + _references.refAttr + '="' + uri + '"]'); + + if (el) { + var pageArea = (0, _dom.closest)(el, '.' + _references.pageAreaClass); + + return !!pageArea; + } else { + return false; + } +} + +function isComponentInHead(uri) { + return !!(0, _headComponents.getComponentNode)(uri); +} + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseSet = __webpack_require__(199); + +/** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ +function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); +} + +module.exports = set; + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseKeys = __webpack_require__(226), + getTag = __webpack_require__(95), + isArguments = __webpack_require__(98), + isArray = __webpack_require__(3), + isArrayLike = __webpack_require__(44), + isBuffer = __webpack_require__(96), + isPrototype = __webpack_require__(140), + isTypedArray = __webpack_require__(135); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ +function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; +} + +module.exports = isEmpty; + + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(__filename) { + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _head2 = __webpack_require__(20); + +var _head3 = _interopRequireDefault(_head2); + +var _findIndex2 = __webpack_require__(36); + +var _findIndex3 = _interopRequireDefault(_findIndex2); + +var _isNaN2 = __webpack_require__(146); + +var _isNaN3 = _interopRequireDefault(_isNaN2); + +var _tail2 = __webpack_require__(270); + +var _tail3 = _interopRequireDefault(_tail2); + +var _reduce2 = __webpack_require__(13); + +var _reduce3 = _interopRequireDefault(_reduce2); + +var _forOwn2 = __webpack_require__(45); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _isObject2 = __webpack_require__(4); + +var _isObject3 = _interopRequireDefault(_isObject2); + +var _camelCase2 = __webpack_require__(423); + +var _camelCase3 = _interopRequireDefault(_camelCase2); + +var _find2 = __webpack_require__(14); + +var _find3 = _interopRequireDefault(_find2); + +var _includes2 = __webpack_require__(7); + +var _includes3 = _interopRequireDefault(_includes2); + +var _isString2 = __webpack_require__(5); + +var _isString3 = _interopRequireDefault(_isString2); + +var _get2 = __webpack_require__(1); + +var _get3 = _interopRequireDefault(_get2); + +exports.getData = getData; +exports.getDefaultData = getDefaultData; +exports.getSchema = getSchema; +exports.getTemplate = getTemplate; +exports.getModel = getModel; +exports.getLocals = getLocals; +exports.getComponents = getComponents; + +var _clayutils = __webpack_require__(19); + +var _references = __webpack_require__(2); + +var _fieldPath = __webpack_require__(202); + +var _log = __webpack_require__(10); + +var _log2 = _interopRequireDefault(_log); + +var _store = __webpack_require__(18); + +var _store2 = _interopRequireDefault(_store); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var log = (0, _log2.default)(__filename); + +// convenience functions to grab component data, schema, etc from the store +// note: all functions allow passing a dummy store object to test + +function getData(uri, path, testStore) { + var prefix = (0, _clayutils.isLayout)(uri) ? 'state.layout.data' : 'state.components[\'' + uri + '\']'; + + testStore = testStore || /* istanbul ignore next */_store2.default; + + if (path) { + return (0, _get3.default)(testStore, prefix + '.' + path); // path might be deep, e.g. `foo.0.bar` + } else { + return (0, _get3.default)(testStore, '' + prefix); + } +} + +function getDefaultData(uri, testStore) { + var name = (0, _clayutils.isComponent)(uri) ? (0, _references.getComponentName)(uri) : uri; + + testStore = testStore || /* istanbul ignore next */_store2.default; + + return (0, _get3.default)(testStore, 'state.componentDefaults[\'' + name + '\']'); +} + +/** + * Check if a string contains non-letter, non-number, or non-underscore chars + * + * @param {string} str + * @return {boolean} + */ +function isValidKilnDotNotation(str) { + // https://regex101.com/r/wapXTM/2 for an example of this regex in action + + // This function is used after "toDotNotation()" in "assertCamelCasedProps()" below + // "toDotNotation" actually allows numbers, which are not valid property accessors in dot notation, but which is why we permit numbers here + + // If the regex returns false, it means that the string is valid + return !/[^\w\$_]/g.test(str); +} + +/** + * make sure all properties in a schema are camelCased, + * since Kiln assumes they will be + * @param {string|object} item either an individual path or a full schema + * @param {string} name + * @throws {Error} if not camelCased + */ +function assertCamelCasedProps(item, name) { + if ((0, _isString3.default)(item) && (0, _includes3.default)((0, _fieldPath.toDotNotation)(item), '.')) { + // deep path! make sure all parts of it are camelcased + var nonCamelCasedPart = (0, _find3.default)((0, _fieldPath.toDotNotation)(item).split('.'), function (part) { + return !isValidKilnDotNotation(part); + }); + + if (nonCamelCasedPart) { + log.error('Properties in component data must be camelCased: ' + name + ' \u2192 ' + item + ' (try "' + (0, _camelCase3.default)(nonCamelCasedPart) + '")'); + } + } else if ((0, _isString3.default)(item) && !isValidKilnDotNotation(item)) { + log.error('Properties in component data must be camelCased: ' + name + ' \u2192 ' + item + ' (try "' + (0, _camelCase3.default)(item) + '")'); + } else if ((0, _isObject3.default)(item)) { + (0, _forOwn3.default)(item, function (val, prop) { + if (!isValidKilnDotNotation(prop)) { + log.error('Properties in component data must be camelCased: ' + name + ' \u2192 ' + prop + ' (try "' + (0, _camelCase3.default)(prop) + '")'); + } + }); + } +} + +/** + * get the schema for a component (or property of a component) + * note: if the schema uses the old behaviors api, it will print a warning + * and convert it to the kiln 5.x inputs api syntax + * @param {string} uri + * @param {string} [path] + * @param {object} testStore + * @return {object} + */ +function getSchema(uri, path, testStore) { + var schema = void 0, + result = void 0, + name = void 0, + prefix = void 0; + + if ((0, _clayutils.isComponent)(uri)) { + name = (0, _references.getComponentName)(uri); + prefix = 'state.schemas[\'' + name + '\']'; + } else if ((0, _clayutils.isLayout)(uri)) { + name = (0, _clayutils.getLayoutName)(uri); + prefix = 'state.layout.schema'; + } else { + name = uri; + prefix = 'state.schemas[\'' + name + '\']'; + } + + testStore = testStore || /* istanbul ignore next */_store2.default; + schema = (0, _get3.default)(testStore, prefix); + if (path && path.match(/\.\d+\./i)) { + // if the path has a digit, assume it's a complex-list item + var prevPathIsNumber = false; + + // we need to convert a path like 'content.0.foo' into the schema path, + // e.g. content.props.1 + // (and we need to be able to do this recursively for deeply-nested complex-lists) + result = (0, _get3.default)(schema, (0, _reduce3.default)((0, _tail3.default)(path.split('.')), function (schemaPath, part) { + var partIsNumber = !(0, _isNaN3.default)(new Number(part)); // convert to a number, see if that works + + if (partIsNumber) { + // we've hit a number! this means we need to search through the + // current path's props to find the index of the next part of the path + schemaPath += '._has.props'; + } else if (prevPathIsNumber) { + // we had just hit a number before, so this 'part' is a property in a complex-list + // search through the complex-list's 'props' to find the index we want + schemaPath += '.' + (0, _findIndex3.default)((0, _get3.default)(schema, schemaPath), function (prop) { + return prop.prop === part; + }); + } else { + schemaPath += '.' + part; + } + + prevPathIsNumber = partIsNumber; + + return schemaPath; + }, (0, _head3.default)(path.split('.')))); + } else if (path) { + // _.get() works, no special logic required + + result = (0, _get3.default)(schema, path); + } else { + result = schema; + } + + if (path) { + assertCamelCasedProps(path, name); + } else { + assertCamelCasedProps(schema, name); + } + + return result; +} + +function getTemplate(uri, testStore) { + var name = (0, _clayutils.isLayout)(uri) ? (0, _clayutils.getLayoutName)(uri) : (0, _references.getComponentName)(uri); + + testStore = testStore || /* istanbul ignore next */_store2.default; + + return (0, _get3.default)(testStore, 'state.templates[\'' + name + '\']'); +} + +function getModel(uri, testStore) { + var name = (0, _clayutils.isLayout)(uri) ? (0, _clayutils.getLayoutName)(uri) : (0, _references.getComponentName)(uri); + + testStore = testStore || /* istanbul ignore next */_store2.default; + + return (0, _get3.default)(testStore, 'state.models[\'' + name + '\']'); +} + +function getLocals(testStore) { + testStore = testStore || /* istanbul ignore next */_store2.default; + + return (0, _get3.default)(testStore, 'state.locals'); +} + +function getComponents(testStore) { + testStore = testStore || /* istanbul ignore next */_store2.default; + + return (0, _get3.default)(testStore, 'state.components'); +} +/* WEBPACK VAR INJECTION */}.call(exports, "lib/core-data/components.js")) + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +var isDate = __webpack_require__(247) + +var MILLISECONDS_IN_HOUR = 3600000 +var MILLISECONDS_IN_MINUTE = 60000 +var DEFAULT_ADDITIONAL_DIGITS = 2 + +var parseTokenDateTimeDelimeter = /[T ]/ +var parseTokenPlainTime = /:/ + +// year tokens +var parseTokenYY = /^(\d{2})$/ +var parseTokensYYY = [ + /^([+-]\d{2})$/, // 0 additional digits + /^([+-]\d{3})$/, // 1 additional digit + /^([+-]\d{4})$/ // 2 additional digits +] + +var parseTokenYYYY = /^(\d{4})/ +var parseTokensYYYYY = [ + /^([+-]\d{4})/, // 0 additional digits + /^([+-]\d{5})/, // 1 additional digit + /^([+-]\d{6})/ // 2 additional digits +] + +// date tokens +var parseTokenMM = /^-(\d{2})$/ +var parseTokenDDD = /^-?(\d{3})$/ +var parseTokenMMDD = /^-?(\d{2})-?(\d{2})$/ +var parseTokenWww = /^-?W(\d{2})$/ +var parseTokenWwwD = /^-?W(\d{2})-?(\d{1})$/ + +// time tokens +var parseTokenHH = /^(\d{2}([.,]\d*)?)$/ +var parseTokenHHMM = /^(\d{2}):?(\d{2}([.,]\d*)?)$/ +var parseTokenHHMMSS = /^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/ + +// timezone tokens +var parseTokenTimezone = /([Z+-].*)$/ +var parseTokenTimezoneZ = /^(Z)$/ +var parseTokenTimezoneHH = /^([+-])(\d{2})$/ +var parseTokenTimezoneHHMM = /^([+-])(\d{2}):?(\d{2})$/ + +/** + * @category Common Helpers + * @summary Convert the given argument to an instance of Date. + * + * @description + * Convert the given argument to an instance of Date. + * + * If the argument is an instance of Date, the function returns its clone. + * + * If the argument is a number, it is treated as a timestamp. + * + * If an argument is a string, the function tries to parse it. + * Function accepts complete ISO 8601 formats as well as partial implementations. + * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601 + * + * If all above fails, the function passes the given argument to Date constructor. + * + * @param {Date|String|Number} argument - the value to convert + * @param {Object} [options] - the object with options + * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format + * @returns {Date} the parsed date in the local time zone + * + * @example + * // Convert string '2014-02-11T11:30:30' to date: + * var result = parse('2014-02-11T11:30:30') + * //=> Tue Feb 11 2014 11:30:30 + * + * @example + * // Parse string '+02014101', + * // if the additional number of digits in the extended year format is 1: + * var result = parse('+02014101', {additionalDigits: 1}) + * //=> Fri Apr 11 2014 00:00:00 + */ +function parse (argument, dirtyOptions) { + if (isDate(argument)) { + // Prevent the date to lose the milliseconds when passed to new Date() in IE10 + return new Date(argument.getTime()) + } else if (typeof argument !== 'string') { + return new Date(argument) + } + + var options = dirtyOptions || {} + var additionalDigits = options.additionalDigits + if (additionalDigits == null) { + additionalDigits = DEFAULT_ADDITIONAL_DIGITS + } else { + additionalDigits = Number(additionalDigits) + } + + var dateStrings = splitDateString(argument) + + var parseYearResult = parseYear(dateStrings.date, additionalDigits) + var year = parseYearResult.year + var restDateString = parseYearResult.restDateString + + var date = parseDate(restDateString, year) + + if (date) { + var timestamp = date.getTime() + var time = 0 + var offset + + if (dateStrings.time) { + time = parseTime(dateStrings.time) + } + + if (dateStrings.timezone) { + offset = parseTimezone(dateStrings.timezone) + } else { + // get offset accurate to hour in timezones that change offset + offset = new Date(timestamp + time).getTimezoneOffset() + offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset() + } + + return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE) + } else { + return new Date(argument) + } +} + +function splitDateString (dateString) { + var dateStrings = {} + var array = dateString.split(parseTokenDateTimeDelimeter) + var timeString + + if (parseTokenPlainTime.test(array[0])) { + dateStrings.date = null + timeString = array[0] + } else { + dateStrings.date = array[0] + timeString = array[1] + } + + if (timeString) { + var token = parseTokenTimezone.exec(timeString) + if (token) { + dateStrings.time = timeString.replace(token[1], '') + dateStrings.timezone = token[1] + } else { + dateStrings.time = timeString + } + } + + return dateStrings +} + +function parseYear (dateString, additionalDigits) { + var parseTokenYYY = parseTokensYYY[additionalDigits] + var parseTokenYYYYY = parseTokensYYYYY[additionalDigits] + + var token + + // YYYY or ±YYYYY + token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString) + if (token) { + var yearString = token[1] + return { + year: parseInt(yearString, 10), + restDateString: dateString.slice(yearString.length) + } + } + + // YY or ±YYY + token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString) + if (token) { + var centuryString = token[1] + return { + year: parseInt(centuryString, 10) * 100, + restDateString: dateString.slice(centuryString.length) + } + } + + // Invalid ISO-formatted year + return { + year: null + } +} + +function parseDate (dateString, year) { + // Invalid ISO-formatted year + if (year === null) { + return null + } + + var token + var date + var month + var week + + // YYYY + if (dateString.length === 0) { + date = new Date(0) + date.setUTCFullYear(year) + return date + } + + // YYYY-MM + token = parseTokenMM.exec(dateString) + if (token) { + date = new Date(0) + month = parseInt(token[1], 10) - 1 + date.setUTCFullYear(year, month) + return date + } + + // YYYY-DDD or YYYYDDD + token = parseTokenDDD.exec(dateString) + if (token) { + date = new Date(0) + var dayOfYear = parseInt(token[1], 10) + date.setUTCFullYear(year, 0, dayOfYear) + return date + } + + // YYYY-MM-DD or YYYYMMDD + token = parseTokenMMDD.exec(dateString) + if (token) { + date = new Date(0) + month = parseInt(token[1], 10) - 1 + var day = parseInt(token[2], 10) + date.setUTCFullYear(year, month, day) + return date + } + + // YYYY-Www or YYYYWww + token = parseTokenWww.exec(dateString) + if (token) { + week = parseInt(token[1], 10) - 1 + return dayOfISOYear(year, week) + } + + // YYYY-Www-D or YYYYWwwD + token = parseTokenWwwD.exec(dateString) + if (token) { + week = parseInt(token[1], 10) - 1 + var dayOfWeek = parseInt(token[2], 10) - 1 + return dayOfISOYear(year, week, dayOfWeek) + } + + // Invalid ISO-formatted date + return null +} + +function parseTime (timeString) { + var token + var hours + var minutes + + // hh + token = parseTokenHH.exec(timeString) + if (token) { + hours = parseFloat(token[1].replace(',', '.')) + return (hours % 24) * MILLISECONDS_IN_HOUR + } + + // hh:mm or hhmm + token = parseTokenHHMM.exec(timeString) + if (token) { + hours = parseInt(token[1], 10) + minutes = parseFloat(token[2].replace(',', '.')) + return (hours % 24) * MILLISECONDS_IN_HOUR + + minutes * MILLISECONDS_IN_MINUTE + } + + // hh:mm:ss or hhmmss + token = parseTokenHHMMSS.exec(timeString) + if (token) { + hours = parseInt(token[1], 10) + minutes = parseInt(token[2], 10) + var seconds = parseFloat(token[3].replace(',', '.')) + return (hours % 24) * MILLISECONDS_IN_HOUR + + minutes * MILLISECONDS_IN_MINUTE + + seconds * 1000 + } + + // Invalid ISO-formatted time + return null +} + +function parseTimezone (timezoneString) { + var token + var absoluteOffset + + // Z + token = parseTokenTimezoneZ.exec(timezoneString) + if (token) { + return 0 + } + + // ±hh + token = parseTokenTimezoneHH.exec(timezoneString) + if (token) { + absoluteOffset = parseInt(token[2], 10) * 60 + return (token[1] === '+') ? -absoluteOffset : absoluteOffset + } + + // ±hh:mm or ±hhmm + token = parseTokenTimezoneHHMM.exec(timezoneString) + if (token) { + absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10) + return (token[1] === '+') ? -absoluteOffset : absoluteOffset + } + + return 0 +} + +function dayOfISOYear (isoYear, week, day) { + week = week || 0 + day = day || 0 + var date = new Date(0) + date.setUTCFullYear(isoYear, 0, 4) + var fourthOfJanuaryDay = date.getUTCDay() || 7 + var diff = week * 7 + day + 1 - fourthOfJanuaryDay + date.setUTCDate(date.getUTCDate() + diff) + return date +} + +module.exports = parse + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(119); + + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isError2 = __webpack_require__(395); + +var _isError3 = _interopRequireDefault(_isError2); + +var _includes2 = __webpack_require__(7); + +var _includes3 = _interopRequireDefault(_includes2); + +var _get2 = __webpack_require__(1); + +var _get3 = _interopRequireDefault(_get2); + +var _assign2 = __webpack_require__(9); + +var _assign3 = _interopRequireDefault(_assign2); + +exports.getSchema = getSchema; +exports.getObject = getObject; +exports.getJSON = getJSON; +exports.getText = getText; +exports.getHead = getHead; +exports.getHTML = getHTML; +exports.save = save; +exports.saveText = saveText; +exports.create = create; +exports.remove = remove; +exports.removeText = removeText; +exports.postJSON = postJSON; +exports.getList = getList; +exports.saveList = saveList; +exports.patchList = patchList; +exports.getMeta = getMeta; +exports.saveMeta = saveMeta; + +var _dom = __webpack_require__(15); + +var _urls = __webpack_require__(47); + +var _store = __webpack_require__(18); + +var _store2 = _interopRequireDefault(_store); + +var _rest = __webpack_require__(267); + +var _rest2 = _interopRequireDefault(_rest); + +var _references = __webpack_require__(2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// note: all api calls should be going through the queue, so they can handle +// the user dropping offline or having issues with their connection, +// as well as to guarantee the order of operations sent to the server + +/** + * @param {object} obj + * @returns {object} + */ +function addJsonHeader(obj) { + var _headers; + + (0, _assign3.default)(obj, { + headers: (_headers = {}, _defineProperty(_headers, _references.contentHeader, _references.contentJSON), _defineProperty(_headers, _references.userHeader, (0, _get3.default)(_store2.default, 'state.user.username')), _headers) + }); + + return obj; +} + +/** + * @param {object} obj + * @returns {object} + */ +function addTextHeader(obj) { + var _headers2; + + (0, _assign3.default)(obj, { + headers: (_headers2 = {}, _defineProperty(_headers2, _references.contentHeader, _references.contentText), _defineProperty(_headers2, _references.userHeader, (0, _get3.default)(_store2.default, 'state.user.username')), _headers2) + }); + + return obj; +} + +/** + * add headers to all GET requests + * @param {string} url + * @returns {object} + */ +function addGetHeader(url) { + return { + method: 'GET', + url: url, + headers: _defineProperty({}, _references.userHeader, (0, _get3.default)(_store2.default, 'state.user.username')) + }; +} + +/** + * add component hooks flag + * @param {string} uri + * @param {Boolean} hooks + * @returns {string} + */ +function addHooks(uri, hooks) { + // set `false` to disable component models from firing their save/render hooks + // note: this is true by default + return hooks === false ? uri + _references.hooksExt : uri; +} + +/** + * handle errors thrown by fetch itself, e.g. connection refused + * @param {string} method + * @return {object} with `statusText` for checkStatus to handle + */ +function checkError(method) { + return function apiError() { + return { statusText: 'Cannot ' + (method === 'GET' ? 'get' : 'send') + ' data' }; + }; +} + +/** + * check status of a request, passing through data on 2xx and 3xx + * and erroring on 4xx and 5xx + * @param {string} url + * @returns {object} + * @throws error on non-200/300 response status + */ +function checkStatus(url) { + return function (res) { + /* istanbul ignore else */ + if (res.status && res.status >= 200 && res.status < 400) { + return res; + } else if (url !== res.url && (0, _includes3.default)(res.url, _references.loginRoute)) { + // login redirect! + // this means we're trying to do an api call but we're not authenticated. + // reload the page to force a redirect to the login page + // (while also preserving the current page to redirect back to once they log in) + window.location.reload(); + } else { + var error = new Error(res.statusText); + + error.response = res; + throw error; + } + }; +} + +/** + * send api call! + * @param {string|object} options + * @returns {Promise} + */ +function send(options) { + var url = (0, _urls.uriToUrl)(options.url); + + // add credentials. this tells fetch to pass along cookies, incl. auth + options.credentials = 'same-origin'; + + return _rest2.default.send(url, options).catch(checkError(options.method)).then(checkStatus(url)); +} + +/** + * @param {object} res + * @returns {string} + */ +function expectTextResult(res) { + return res.text(); +} + +/** + * expect something to exist + * note: make sure you call this in the .then() AND .catch() of a promise + * @param {object} res + * @returns {boolean} + */ +function expectBooleanResult(res) { + if ((0, _isError3.default)(res)) { + return false; + } else { + return true; + } +} + +/** + * @param {object} res + * @returns {object} + */ +function expectJSONResult(res) { + return res.json(); +} + +/** + * @param {string} uri The returned object probably won't have this because it would be referencing itself, so we need to remember it and add it. + * @returns {function} + */ +function expectHTMLResult(uri) { + return function (res) { + return res.text().then(function (str) { + // if we get a full document, return it as a full document. + // otherwise pass whatever we get into dom.create() + if ((0, _includes3.default)(str, ' 1 && arguments[1] !== undefined ? arguments[1] : ''; + + (0, _urls.assertUri)(uri); + + /* todo: Currently the second argument is ONLY used for the Space component because + * querying for article tags is limited. There is a pending update + * to our elastic indices that should make this unecessary. At that + * point the 'queries' argument should be removed. + */ + + return send(addGetHeader(uri + _references.htmlExt + _references.editComponentExt + queries)).then(expectHTMLResult(uri)); +} + +/** + * @param {string} uri + * @param {object} data + * @param {boolean} [hooks] optional, true by default + * @returns {Promise} + */ +function save(uri, data, hooks) { + (0, _urls.assertUri)(uri); + + uri = addHooks(uri, hooks); + + return send(addJsonHeader({ + method: 'PUT', + url: uri, + body: JSON.stringify(data) + })).then(expectJSONResult); +} + +/** + * @param {string} uri + * @param {object} data + * @returns {Promise} + */ +function saveText(uri, data) { + (0, _urls.assertUri)(uri); + + return send(addTextHeader({ + method: 'PUT', + url: uri, + body: data + })).then(expectTextResult); +} + +/** + * @param {string} uri + * @param {object} data + * @param {boolean} hooks + * @returns {Promise} + */ +function create(uri, data, hooks) { + (0, _urls.assertUri)(uri); + + uri = addHooks(uri, hooks); + + return send(addJsonHeader({ + method: 'POST', + url: uri, + body: JSON.stringify(data) + })).then(expectJSONResult); +} + +/** + * @param {string} uri + * @returns {Promise} + */ +function remove(uri) { + (0, _urls.assertUri)(uri); + + return send(addJsonHeader({ + method: 'DELETE', + url: uri + })).then(expectJSONResult); +} + +/** + * @param {string} uri + * @returns {Promise} + */ +function removeText(uri) { + (0, _urls.assertUri)(uri); + + return send(addTextHeader({ + method: 'DELETE', + url: uri + })).then(expectTextResult); +} + +/** + * @param {string} uri + * @param {object} data + * @returns {Promise} + */ +function postJSON(uri, data) { + (0, _urls.assertUri)(uri); + + return send(addJsonHeader({ + method: 'POST', + url: uri, + body: JSON.stringify(data) + })).then(expectJSONResult); +} + +/** + * convenience function to get list data + * @param {string} prefix + * @param {string} listName + * @return {Promise} + */ +function getList(prefix, listName) { + var uri = '' + prefix + _references.listsRoute + listName; + + (0, _urls.assertUri)(uri); + + return send(addGetHeader(uri)).then(expectJSONResult); +} + +/** + * convenience function to save list data + * @param {string} prefix + * @param {string} listName + * @param {array} items + * @return {Promise} + */ +function saveList(prefix, listName, items) { + var uri = '' + prefix + _references.listsRoute + listName; + + (0, _urls.assertUri)(uri); + + return send(addJsonHeader({ + method: 'PUT', + url: uri, + body: JSON.stringify(items) + })).then(expectJSONResult); +} + +/** + * convenience function to save list data + * @param {string} prefix + * @param {string} listName + * @param {array} items + * @return {Promise} + */ +function patchList(prefix, listName, patch) { + var uri = '' + prefix + _references.listsRoute + listName; + + (0, _urls.assertUri)(uri); + + return send(addJsonHeader({ + method: 'PATCH', + url: uri, + body: JSON.stringify(patch) + })).then(expectJSONResult); +} + +function getMeta(uri) { + (0, _urls.assertUri)(uri); + + return send(addGetHeader(uri + '/meta')).then(expectJSONResult); +} + +function saveMeta(uri, data) { + (0, _urls.assertUri)(uri); + + return send(addJsonHeader({ + method: 'PATCH', + url: uri + '/meta', + body: JSON.stringify(data) + })).then(expectJSONResult); +} + +/***/ }), +/* 30 */ +/***/ (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; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseMatches = __webpack_require__(303), + baseMatchesProperty = __webpack_require__(334), + identity = __webpack_require__(99), + isArray = __webpack_require__(3), + property = __webpack_require__(338); + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +module.exports = baseIteratee; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseHas = __webpack_require__(341), + hasPath = __webpack_require__(187); + +/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ +function has(object, path) { + return object != null && hasPath(object, path, baseHas); +} + +module.exports = has; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayFilter = __webpack_require__(230), + baseFilter = __webpack_require__(231), + baseIteratee = __webpack_require__(31), + isArray = __webpack_require__(3); + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + */ +function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, baseIteratee(predicate, 3)); +} + +module.exports = filter; + + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var disposed = false; +function injectStyle(ssrContext) { + if (disposed) return; + __webpack_require__(436); +} +var normalizeComponent = __webpack_require__(0); +/* script */ +var __vue_script__ = __webpack_require__(437); +/* template */ +var __vue_template__ = __webpack_require__(456); +/* template functional */ +var __vue_template_functional__ = false; +/* styles */ +var __vue_styles__ = injectStyle; +/* scopeId */ +var __vue_scopeId__ = null; +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null; +var Component = normalizeComponent(__vue_script__, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__); +Component.options.__file = "node_modules/keen-ui/src/UiIconButton.vue"; + +/* hot reload */ +if (false) { + (function () { + var hotAPI = require("vue-hot-reload-api"); + hotAPI.install(require("vue"), false); + if (!hotAPI.compatible) return; + module.hot.accept(); + if (!module.hot.data) { + hotAPI.createRecord("data-v-51836cfc", Component.options); + } else { + hotAPI.reload("data-v-51836cfc", Component.options); + } + module.hot.dispose(function (data) { + disposed = true; + }); + })(); +} + +module.exports = Component.exports; + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var disposed = false; +function injectStyle(ssrContext) { + if (disposed) return; + __webpack_require__(534); +} +var normalizeComponent = __webpack_require__(0); +/* script */ +var __vue_script__ = __webpack_require__(535); +/* template */ +var __vue_template__ = __webpack_require__(537); +/* template functional */ +var __vue_template_functional__ = false; +/* styles */ +var __vue_styles__ = injectStyle; +/* scopeId */ +var __vue_scopeId__ = null; +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null; +var Component = normalizeComponent(__vue_script__, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__); +Component.options.__file = "node_modules/keen-ui/src/UiTextbox.vue"; + +/* hot reload */ +if (false) { + (function () { + var hotAPI = require("vue-hot-reload-api"); + hotAPI.install(require("vue"), false); + if (!hotAPI.compatible) return; + module.hot.accept(); + if (!module.hot.data) { + hotAPI.createRecord("data-v-78a06217", Component.options); + } else { + hotAPI.reload("data-v-78a06217", Component.options); + } + module.hot.dispose(function (data) { + disposed = true; + }); + })(); +} + +module.exports = Component.exports; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFindIndex = __webpack_require__(100), + baseIteratee = __webpack_require__(31), + toInteger = __webpack_require__(51); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index); +} + +module.exports = findIndex; + + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var disposed = false; +function injectStyle(ssrContext) { + if (disposed) return; + __webpack_require__(447); +} +var normalizeComponent = __webpack_require__(0); +/* script */ +var __vue_script__ = __webpack_require__(448); +/* template */ +var __vue_template__ = __webpack_require__(449); +/* template functional */ +var __vue_template_functional__ = false; +/* styles */ +var __vue_styles__ = injectStyle; +/* scopeId */ +var __vue_scopeId__ = null; +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null; +var Component = normalizeComponent(__vue_script__, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__); +Component.options.__file = "node_modules/keen-ui/src/UiRippleInk.vue"; + +/* hot reload */ +if (false) { + (function () { + var hotAPI = require("vue-hot-reload-api"); + hotAPI.install(require("vue"), false); + if (!hotAPI.compatible) return; + module.hot.accept(); + if (!module.hot.data) { + hotAPI.createRecord("data-v-0d9c47ef", Component.options); + } else { + hotAPI.reload("data-v-0d9c47ef", Component.options); + } + module.hot.dispose(function (data) { + disposed = true; + }); + })(); +} + +module.exports = Component.exports; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.KeenUiConfig = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _deepAssign = __webpack_require__(454); + +var _deepAssign2 = _interopRequireDefault(_deepAssign); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var config = { + disableRipple: false, + + UiAutocomplete: { + keys: { + label: 'label', + value: 'value', + image: 'image' + } + }, + + UiCheckboxGroup: { + keys: { + id: 'id', + name: 'name', + class: 'class', + label: 'label', + value: 'value', + disabled: 'disabled' + } + }, + + UiMenu: { + keys: { + icon: 'icon', + type: 'type', + label: 'label', + secondaryText: 'secondaryText', + iconProps: 'iconProps', + disabled: 'disabled' + } + }, + + UiRadioGroup: { + keys: { + id: 'id', + class: 'class', + label: 'label', + value: 'value', + checked: 'checked', + disabled: 'disabled' + } + }, + + UiSelect: { + keys: { + label: 'label', + value: 'value', + image: 'image' + } + } +}; + +var KeenUiConfig = exports.KeenUiConfig = function () { + function KeenUiConfig() { + _classCallCheck(this, KeenUiConfig); + + this.data = (0, _deepAssign2.default)(config, window.KeenUiConfig ? window.KeenUiConfig : {}); + } + + _createClass(KeenUiConfig, [{ + key: 'set', + value: function set() { + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.data = (0, _deepAssign2.default)(this.data, config); + } + }]); + + return KeenUiConfig; +}(); + +exports.default = new KeenUiConfig(); + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +/* eslint-disable one-var */ +var OPEN_FORM = exports.OPEN_FORM = 'OPEN_FORM'; +var CLOSE_FORM = exports.CLOSE_FORM = 'CLOSE_FORM'; +var UPDATE_FORMDATA = exports.UPDATE_FORMDATA = 'UPDATE_FORMDATA'; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(__filename) { + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArray2 = __webpack_require__(3); + +var _isArray3 = _interopRequireDefault(_isArray2); + +var _isString2 = __webpack_require__(5); + +var _isString3 = _interopRequireDefault(_isString2); + +var _some2 = __webpack_require__(79); + +var _some3 = _interopRequireDefault(_some2); + +var _isEmpty2 = __webpack_require__(25); + +var _isEmpty3 = _interopRequireDefault(_isEmpty2); + +var _isObject2 = __webpack_require__(4); + +var _isObject3 = _interopRequireDefault(_isObject2); + +var _includes2 = __webpack_require__(7); + +var _includes3 = _interopRequireDefault(_includes2); + +var _get2 = __webpack_require__(1); + +var _get3 = _interopRequireDefault(_get2); + +var _toNumber2 = __webpack_require__(87); + +var _toNumber3 = _interopRequireDefault(_toNumber2); + +var _isNaN2 = __webpack_require__(146); + +var _isNaN3 = _interopRequireDefault(_isNaN2); + +var _isFunction2 = __webpack_require__(49); + +var _isFunction3 = _interopRequireDefault(_isFunction2); + +exports.getField = getField; +exports.isFirstField = isFirstField; +exports.setCaret = setCaret; +exports.getFieldData = getFieldData; +exports.shouldBeRequired = shouldBeRequired; +exports.getValidationError = getValidationError; +exports.shouldBeRevealed = shouldBeRevealed; + +var _caretPosition = __webpack_require__(485); + +var _he = __webpack_require__(151); + +var _striptags = __webpack_require__(84); + +var _striptags2 = _interopRequireDefault(_striptags); + +var _dom = __webpack_require__(15); + +var _references = __webpack_require__(2); + +var _comparators = __webpack_require__(83); + +var _siteFilter = __webpack_require__(127); + +var _log = __webpack_require__(10); + +var _log2 = _interopRequireDefault(_log); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var log = (0, _log2.default)(__filename); + +/** + * find the field element a behavior is inside + * @param {Element} el + * @return {Element} + */ +function getField(el) { + return (0, _dom.closest)(el, '.' + _references.fieldClass); +} + +/** + * DEPRECATED + * determine if a behavior is in the first field of a form + * note: this is used for setting the caret + * @param {Element} el of the behavior + * @return {Boolean} + */ +function isFirstField(el) { + var field = getField(el); + + return field && field.classList.contains(_references.firstFieldClass); +} + +/** + * set the caret into a field + * @param {Element} el of input (something that can get a caret set in it) or el containing an input + * @param {number} offset + * @param {number} [data] if passed a negative offset + */ +function setCaret(el, offset, data) { + var inputEl = (0, _isFunction3.default)(el.createTextRange) ? el : (0, _dom.find)(el, 'input'); + + data = data || ''; + + if (offset === -1) { + // set caret at the end if it's negative + // todo: maybe support arbitrary negative offsets? + offset = data.length - 1; + } + + // set the offset, but fail gracefully + try { + (0, _caretPosition.set)(inputEl, offset); + } catch (e) { + log.debug('Cannot set caret in field: ' + e.message, { action: 'setCaret', el: el }); + } +} + +/** + * find data in the same list item, recursing upwards in case we're inside + * multiple complex-lists + * @param {object} data + * @param {string} prop + * @param {string} path + * @return {*} + */ +function findDataInList(data, prop, path) { + var pathArray = path.split('.'); + + var found = null, + i = pathArray.length - 1; + + for (; i >= 0; i--) { + var part = pathArray[i]; + + if (!(0, _isNaN3.default)((0, _toNumber3.default)(part))) { + // this is inside an array! that means it's in a complex list + var beforeIndex = pathArray.slice(0, i).join('.'), + index = part; + + found = (0, _get3.default)(data, beforeIndex + '.' + index + '.' + prop); + if (found) { + break; + } + } + } + + return found; +} + +/** + * get data from a field + * looks inside current complex-list item first, + * then up to other lists this may be inside, + * then looks in the current form, + * then (finally) looks in the component data + * @param {object} store + * @param {string} prop to look for + * @param {string} path of current field (to check for nested complex-lists) + * @param {string} uri to check inside current component + * @return {*} + */ +function getFieldData(store, prop, path, uri) { + var currentFormData = (0, _get3.default)(store, 'state.ui.currentForm.fields', {}), + insideComplexLists = path.match(/\.\d+\./); // determine if a field is inside an array + + if (insideComplexLists) { + // inside one (or more) complex lists + var found = findDataInList(currentFormData, prop, path); + + if (found) { + return found; + } + } + + // if we haven't found anything, check to see if it's in the current form (or component data) + if ((0, _includes3.default)(Object.keys(currentFormData), prop)) { + // inside current form + return currentFormData[prop]; + } else { + // inside the component data + return (0, _get3.default)(store, 'state.components[\'' + uri + '\'].' + prop); + } +} + +/** + * generate error messages from validation rules, + * specifying default error messages + * @param {object} [validate] + * @param {boolean} [isLengthy] + * @return {object} + */ +function errorMessages() { + var validate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var isLengthy = arguments[1]; + + return { + required: validate.requiredMessage || 'Please fill out this field', + min: validate.minMessage || isLengthy ? 'Please enter at least ' + validate.min + ' characters' : 'Please enter a value of ' + validate.min + ' or above', + max: validate.maxMessage || isLengthy ? 'Please enter fewer than ' + (validate.max + 1) + ' characters' : 'Please enter a value of ' + validate.max + ' or below', + pattern: validate.patternMessage || 'Please match the pattern "/' + validate.pattern + '/ig"' + }; +} + +/** + * determine if a field should be required + * @param {object} validate + * @param {object} store + * @param {string} name + * @return {Boolean} + */ +function shouldBeRequired(validate, store, name) { + if ((0, _isObject3.default)(validate) && (0, _isObject3.default)(validate.required)) { + var field = validate.required.field, + operator = validate.required.operator, + values = validate.required.values, + value = validate.required.value, + uri = (0, _get3.default)(store, 'state.ui.currentForm.uri'), + compareData = getFieldData(store, field, name, uri); + + if (!(0, _isEmpty3.default)(values)) { + // compare against multiple values. will return true if any of them match + return (0, _some3.default)(values, function (v) { + return (0, _comparators.compare)({ data: compareData, operator: operator, value: v }); + }); + } else { + // compare against a single value (note: value might be undefined if we're comparing with certain operators) + return (0, _comparators.compare)({ data: compareData, operator: operator, value: value }); + } + } +} + +/** + * remove tags and decode entities, so we can check the length of strings + * @param {string} value + * @return {string} + */ +function cleanValue(value) { + return (0, _he.decode)((0, _striptags2.default)((0, _isString3.default)(value) ? value : '')); +} + +/** + * determine if a field is valid, based on the validation rules + * @param {*} data + * @param {object|undefined} validate + * @param {object} store + * @param {string} name + * @return {string|null} + */ +function getValidationError(data, validate, store, name) { + // eslint-disable-line + var isFieldEmpty = (0, _comparators.isEmpty)(data), + isLengthy = (0, _isString3.default)(data) || (0, _isArray3.default)(data), + messages = errorMessages(validate, isLengthy), + strValue = (0, _isString3.default)(data) && cleanValue(data); + + var length = void 0; + + if (!(0, _isObject3.default)(validate)) { + return null; // if no validation rules, it's always valid + } + + // if we're dealing with strings or arrays, we'll want to check min/max against the length + // (if it's numbers, dates, or other things, we want to check min/max against the value directly) + if (isLengthy) { + length = (strValue || data).length; + } + + if (isFieldEmpty && validate.required === true) { + // validate required fields first + return messages.required; + } else if (isFieldEmpty && (0, _isObject3.default)(validate.required)) { + return shouldBeRequired(validate, store, name) ? messages.required : null; + } else if (!isFieldEmpty && validate.pattern && !strValue.match(new RegExp(validate.pattern, 'ig'))) { + return messages.pattern; + } else if (!isFieldEmpty && isLengthy) { + // if we're checking stuff with lengths (strings + arrays), + // DON'T check for values against min/max + if (validate.min && length < validate.min) { + return messages.min; + } else if (validate.max && length > validate.max) { + return messages.max; + } + } else if (!isFieldEmpty && validate.min && data < validate.min) { + return messages.min; + } else if (!isFieldEmpty && validate.max && data > validate.max) { + return messages.max; + } +} + +/** + * determine if something should be revealed based on the sites specified + * and the current site + * @param {string} sites + * @param {string} currentSlug + * @return {boolean} + */ +function shouldBeRevealedBySite(sites, currentSlug) { + return !!(0, _siteFilter.filterBySite)([{ sites: sites }], currentSlug).length; +} + +/** + * determine if something should be revealed based on another field's data + * @param {*} data + * @param {string} operator + * @param {*} value if we want to reveal based on a single value + * @param {array} values if we want to reveal based on multiple values + * @return {boolean} + */ +function shouldBeRevealedByData(data, operator, value, values) { + if (!(0, _isEmpty3.default)(values)) { + // compare against multiple values. will return true if any of them match + return (0, _some3.default)(values, function (v) { + return (0, _comparators.compare)({ data: data, operator: operator, value: v }); + }); + } else { + // compare against a single value (note: value might be undefined if we're comparing with certain operators) + return (0, _comparators.compare)({ data: data, operator: operator, value: value }); + } +} + +/** + * determine if a field / option / etc should be revealed + * (based on the config from _reveal) + * @param {object} store + * @param {object} config + * @param {string} name of field + * @return {boolean} + */ +function shouldBeRevealed(store, config, name) { + var currentSlug = (0, _get3.default)(store, 'state.site.slug'), + uri = (0, _get3.default)(store, 'state.ui.currentForm.uri'), + field = config && config.field, + operator = config && config.operator, + value = config && config.value, + values = config && config.values || [], + sites = config && config.sites, + data = config && getFieldData(store, field, name, uri); + + if (sites && field) { + // if there is site logic, run it before field logic + // and return a boolean based on both checks + return shouldBeRevealedBySite(sites, currentSlug) && shouldBeRevealedByData(data, operator, value, values); + } else if (sites) { + // only check the site logic + return shouldBeRevealedBySite(sites, currentSlug); + } else if (field) { + // only check field logic + return shouldBeRevealedByData(data, operator, value, values); + } else { + return true; // show the field if no _reveal config + } +} +/* WEBPACK VAR INJECTION */}.call(exports, "lib/forms/field-helpers.js")) + +/***/ }), +/* 41 */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +var overArg = __webpack_require__(75); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; + + +/***/ }), +/* 43 */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +var isFunction = __webpack_require__(49), + isLength = __webpack_require__(138); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseForOwn = __webpack_require__(101), + castFunction = __webpack_require__(192); + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && baseForOwn(object, castFunction(iteratee)); +} + +module.exports = forOwn; + + +/***/ }), +/* 46 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*! + * Vue.js v2.5.16 + * (c) 2014-2018 Evan You + * Released under the MIT License. + */ +/* */ + +var emptyObject = Object.freeze({}); + +// these helpers produces 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 a input value to a number for persistence. + * If the conversion fails, return original string. + */ +function toNumber (val) { + var n = parseFloat(val); + return isNaN(n) ? val : n +} + +/** + * Make a map and return a function for checking if a key + * is in that map. + */ +function makeMap ( + str, + expectsLowerCase +) { + var map = Object.create(null); + var list = str.split(','); + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase + ? function (val) { return map[val.toLowerCase()]; } + : function (val) { return map[val]; } +} + +/** + * Check if a tag is a built-in tag. + */ +var isBuiltInTag = makeMap('slot,component', true); + +/** + * Check if a 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 the 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 more performant in most browsers, but removing it would be breaking for + * code that was able to run in PhantomJS 1.x, so this must be kept for + * backwards 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 +} + +/** + * 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; }; + +/** + * Return same value + */ +var identity = function (_) { return _; }; + +/** + * Generate a static keys string from compiler modules. + */ + + +/** + * 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 (!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 + } +} + +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: Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production', + + /** + * Whether to enable devtools + */ + devtools: Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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, + + /** + * 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'].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 = (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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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(); + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(); + } +}; + +// the current target watcher being evaluated. +// this is globally unique because there could be only one +// watcher being evaluated at any time. +Dep.target = null; +var targetStack = []; + +function pushTarget (_target) { + if (Dep.target) { targetStack.push(Dep.target); } + Dep.target = _target; +} + +function popTarget () { + Dep.target = targetStack.pop(); +} + +/* */ + +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, + vnode.children, + 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.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)) { + var augment = hasProto + ? protoAugment + : copyAugment; + augment(value, arrayMethods, arrayKeys); + this.observeArray(value); + } else { + this.walk(value); + } +}; + +/** + * Walk through each property and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ +Observer.prototype.walk = function walk (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + defineReactive(obj, keys[i]); + } +}; + +/** + * Observe a list of Array items. + */ +Observer.prototype.observeArray = function observeArray (items) { + for (var i = 0, l = items.length; i < l; i++) { + observe(items[i]); + } +}; + +// helpers + +/** + * Augment an target Object or Array by intercepting + * the prototype chain using __proto__ + */ +function protoAugment (target, src, keys) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ +} + +/** + * Augment an target Object or Array by defining + * hidden properties. + */ +/* istanbul ignore next */ +function copyAugment (target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + def(target, key, src[key]); + } +} + +/** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ +function observe (value, asRootData) { + if (!isObject(value) || 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 ( + 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; + if (!getter && arguments.length === 2) { + val = obj[key]; + } + var setter = property && property.set; + + 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production' && customSetter) { + customSetter(); + } + 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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)) { + Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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(ob.value, key, val); + ob.dep.notify(); + return val +} + +/** + * Delete a property and trigger change if necessary. + */ +function del (target, key) { + if (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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)) { + Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + strats.el = strats.propsData = function (parent, child, vm, key) { + if (!vm) { + warn( + "option \"" + key + "\" can only be used during instance " + + 'creation with the `new` keyword.' + ); + } + return defaultStrat(parent, child) + }; +} + +/** + * Helper that recursively merges two data objects together. + */ +function mergeData (to, from) { + if (!from) { return to } + var key, toVal, fromVal; + var keys = Object.keys(from); + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + toVal = to[key]; + fromVal = from[key]; + if (!hasOwn(to, key)) { + set(to, key, fromVal); + } else if (isPlainObject(toVal) && isPlainObject(fromVal)) { + mergeData(toVal, fromVal); + } + } + return to +} + +/** + * Data + */ +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') { + Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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) { + Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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 && Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + checkComponents(child); + } + + if (typeof child === 'function') { + child = child.options; + } + + normalizeProps(child, vm); + normalizeInject(child, vm); + normalizeDirectives(child); + var extendsFrom = child.extends; + if (extendsFrom) { + parent = mergeOptions(parent, extendsFrom, 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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 ( + Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production' && + // skip validation for weex recycle-list child component props + !(false && isObject(value) && ('@binding' in value)) + ) { + 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production' && isObject(def)) { + warn( + 'Invalid default value for prop "' + key + '": ' + + 'Props with type Object/Array must use a factory function ' + + 'to return the default value.', + vm + ); + } + // the raw prop value was also undefined from previous render, + // return previous default value to avoid unnecessary watcher trigger + if (vm && vm.$options.propsData && + vm.$options.propsData[key] === undefined && + vm._props[key] !== undefined + ) { + return vm._props[key] + } + // call factory function for non-Function types + // a value is Function if its prototype is function even across different execution context + return typeof def === 'function' && getType(prop.type) !== 'Function' + ? def.call(vm) + : def +} + +/** + * Assert whether a prop is valid. + */ +function assertProp ( + prop, + name, + value, + vm, + absent +) { + if (prop.required && absent) { + warn( + 'Missing required prop: "' + name + '"', + vm + ); + return + } + if (value == null && !prop.required) { + return + } + var type = prop.type; + var valid = !type || type === true; + var expectedTypes = []; + if (type) { + if (!Array.isArray(type)) { + type = [type]; + } + for (var i = 0; i < type.length && !valid; i++) { + var assertedType = assertType(value, type[i]); + expectedTypes.push(assertedType.expectedType || ''); + valid = assertedType.valid; + } + } + if (!valid) { + warn( + "Invalid prop: type check failed for prop \"" + name + "\"." + + " Expected " + (expectedTypes.map(capitalize).join(', ')) + + ", got " + (toRawType(value)) + ".", + 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 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); + } + /* istanbul ignore else */ + if ((inBrowser || inWeex) && typeof console !== 'undefined') { + console.error(err); + } else { + throw err + } +} + +/* */ +/* globals MessageChannel */ + +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; + var res = fn.apply(null, arguments); + useMacroTask = false; + return res + }) +} + +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; + }) + } +} + +/* */ + +/* not type checking this file because flow doesn't play well with Proxy */ + +var initProxy; + +if (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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 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) || key.charAt(0) === '_'; + if (!has && !isAllowed) { + warnNonPresent(target, key); + } + return has || !isAllowed + } + }; + + var getHandler = { + get: function get (target, key) { + if (typeof key === 'string' && !(key in target)) { + warnNonPresent(target, key); + } + return target[key] + } + }; + + initProxy = function initProxy (vm) { + if (hasProxy) { + // determine which proxy handler to use + var options = vm.$options; + var handlers = options.render && options.render._withStripped + ? getHandler + : hasHandler; + vm._renderProxy = new Proxy(vm, handlers); + } else { + vm._renderProxy = vm; + } + }; +} + +/* */ + +var 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 mark; +var measure; + +if (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + var perf = inBrowser && window.performance; + /* istanbul ignore if */ + if ( + perf && + perf.mark && + perf.measure && + perf.clearMarks && + perf.clearMeasures + ) { + mark = function (tag) { return perf.mark(tag); }; + measure = function (name, startTag, endTag) { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + perf.clearMeasures(name); + }; + } +} + +/* */ + +var 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, + vm +) { + var name, def, cur, old, event; + for (name in on) { + def = cur = on[name]; + old = oldOn[name]; + event = normalizeEvent(name); + /* istanbul ignore if */ + if (isUndef(cur)) { + Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== '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); + } + add(event.name, cur, event.once, 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 (Object({"KILN_VERSION":"10.2.2","LOG":"trace"}).NODE_ENV !== 'production') { + 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.