@nyris/nyris-webapp 0.3.6 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/asset-manifest.json +11 -11
- package/build/index.html +1 -1
- package/build/{precache-manifest.bffed513ca17d8ac16af1cc3aaa7d908.js → precache-manifest.a97813497ab8d37548141e5e2618d0dc.js} +9 -9
- package/build/service-worker.js +1 -1
- package/build/static/css/{main.2a76dc8a.chunk.css → main.0481043c.chunk.css} +2 -2
- package/build/static/css/main.0481043c.chunk.css.map +1 -0
- package/build/static/js/2.6e13adbe.chunk.js +3 -0
- package/build/static/js/{2.4e9a4ce1.chunk.js.LICENSE.txt → 2.6e13adbe.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/{2.4e9a4ce1.chunk.js.map → 2.6e13adbe.chunk.js.map} +1 -1
- package/build/static/js/main.f5da7aa4.chunk.js +2 -0
- package/build/static/js/main.f5da7aa4.chunk.js.map +1 -0
- package/package.json +2 -2
- package/src/App.tsx +83 -95
- package/src/actions/searchActions.ts +3 -4
- package/src/components/FiltersList.tsx +16 -18
- package/src/components/Sidebar.tsx +6 -4
- package/src/epics/search.ts +2 -41
- package/src/index.css +3 -3
- package/src/index.tsx +5 -3
- package/build/static/css/main.2a76dc8a.chunk.css.map +0 -1
- package/build/static/js/2.4e9a4ce1.chunk.js +0 -3
- package/build/static/js/main.ec93aa4d.chunk.js +0 -2
- package/build/static/js/main.ec93aa4d.chunk.js.map +0 -1
- package/src/Demo2.tsx +0 -220
package/src/App.tsx
CHANGED
|
@@ -1,41 +1,42 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { useDispatch } from "react-redux";
|
|
3
|
+
import { Animate, NodeGroup } from "react-move";
|
|
4
|
+
import { useDropzone} from "react-dropzone";
|
|
5
|
+
import {
|
|
6
|
+
Box,
|
|
7
|
+
Snackbar
|
|
8
|
+
} from "@material-ui/core";
|
|
9
|
+
import { Alert } from "@material-ui/lab";
|
|
10
|
+
import classNames from "classnames";
|
|
11
|
+
import { loadFilters } from "./actions/searchActions";
|
|
12
|
+
import Result from "./components/Result";
|
|
13
|
+
import Sidebar from "./components/Sidebar";
|
|
14
|
+
import Header from "./components/Header";
|
|
15
|
+
import Feedback from "./components/Feedback";
|
|
6
16
|
import CategoryFilter from "./components/CategoryFilter";
|
|
7
|
-
import PredictedCategories from "./components/PredictedCategories";
|
|
8
17
|
import Codes from "./components/Codes";
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import classNames from 'classnames';
|
|
12
|
-
import {Animate, NodeGroup} from "react-move";
|
|
13
|
-
import {AppSettings, MDSettings, CanvasWithId} from "./types";
|
|
14
|
-
import {NyrisAppPart, NyrisFeedbackState} from "./actions/nyrisAppActions";
|
|
18
|
+
import PredictedCategories from "./components/PredictedCategories";
|
|
19
|
+
import ExampleImages from "./components/ExampleImages";
|
|
15
20
|
import {makeFileHandler, Capture, Preview} from "@nyris/nyris-react-components";
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import { useDispatch } from 'react-redux';
|
|
20
|
-
import { loadFilters } from './actions/searchActions';
|
|
21
|
-
import Sidebar from './components/Sidebar';
|
|
21
|
+
import { RectCoords, cadExtensions, CategoryPrediction, Code, Region, Filter} from "@nyris/nyris-api";
|
|
22
|
+
import { AppSettings, CanvasWithId, MDSettings } from "./types";
|
|
23
|
+
import { NyrisAppPart, NyrisFeedbackState } from "./actions/nyrisAppActions";
|
|
22
24
|
|
|
23
25
|
export interface AppHandlers {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
26
|
+
onExampleImageClick: (url: string) => void,
|
|
27
|
+
onImageClick: (position: number, url: string) => void,
|
|
28
|
+
onLinkClick: (position: number, url: string) => void,
|
|
29
|
+
onFileDropped: (file: File) => void,
|
|
30
|
+
onCaptureComplete: (image: HTMLCanvasElement) => void,
|
|
31
|
+
onCaptureCanceled: () => void,
|
|
32
|
+
onSelectFile: (f: File) => void,
|
|
33
|
+
onCameraClick: () => void,
|
|
34
|
+
onShowStart: () => void,
|
|
35
|
+
onSelectionChange: (r: RectCoords) => void,
|
|
36
|
+
onPositiveFeedback: () => void,
|
|
37
|
+
onNegativeFeedback: () => void,
|
|
38
|
+
onCloseFeedback: () => void
|
|
37
39
|
}
|
|
38
|
-
|
|
39
40
|
export interface AppProps {
|
|
40
41
|
search: {
|
|
41
42
|
results: any[],
|
|
@@ -48,7 +49,8 @@ export interface AppProps {
|
|
|
48
49
|
regions: Region[],
|
|
49
50
|
previewSelection: RectCoords,
|
|
50
51
|
toastErrorMessage?: string,
|
|
51
|
-
filters: Filter[]
|
|
52
|
+
filters: Filter[],
|
|
53
|
+
selectedFilters: Map<string,string[]>
|
|
52
54
|
},
|
|
53
55
|
previewImage?: CanvasWithId,
|
|
54
56
|
settings: AppSettings,
|
|
@@ -59,70 +61,54 @@ export interface AppProps {
|
|
|
59
61
|
mdSettings: MDSettings
|
|
60
62
|
}
|
|
61
63
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
search: {results, regions, previewSelection, requestId, duration, errorMessage, filterOptions, categoryPredictions, codes, toastErrorMessage, filters},
|
|
68
|
-
showPart, settings, handlers, loading, previewImage, feedbackState
|
|
69
|
-
}) => {
|
|
64
|
+
const Demo2: React.FC<AppProps> = ({
|
|
65
|
+
search: {results, regions, previewSelection, requestId, duration, errorMessage, filterOptions, categoryPredictions, codes, toastErrorMessage, filters, selectedFilters},
|
|
66
|
+
showPart, settings, handlers, loading, previewImage, feedbackState
|
|
67
|
+
}) => {
|
|
68
|
+
|
|
70
69
|
const {getRootProps, getInputProps, isDragActive} = useDropzone({onDrop: (fs: File[]) => handlers.onFileDropped(fs[0])});
|
|
70
|
+
|
|
71
71
|
const minPreviewHeight = 400;
|
|
72
72
|
const halfOfTheScreenHeight = Math.floor(window.innerHeight * 0.45);
|
|
73
73
|
const maxPreviewHeight = Math.max(minPreviewHeight, halfOfTheScreenHeight);
|
|
74
|
-
const acceptTypes =
|
|
75
|
-
[ 'image/*' ].concat(
|
|
76
|
-
settings.cadSearch ? cadExtensions : []
|
|
77
|
-
).join(',');
|
|
78
74
|
const [toastOpen, setToastOpen] = useState(false);
|
|
79
75
|
const dispatch = useDispatch();
|
|
80
76
|
|
|
77
|
+
const acceptTypes =[ 'image/*' ].concat( settings.cadSearch ? cadExtensions : [] ).join(',');
|
|
78
|
+
|
|
79
|
+
|
|
81
80
|
useEffect(() => {
|
|
82
81
|
if (toastErrorMessage !== '') {
|
|
83
82
|
setToastOpen(true);
|
|
84
83
|
}
|
|
85
84
|
}, [toastErrorMessage])
|
|
86
|
-
|
|
85
|
+
|
|
87
86
|
useEffect(() =>{
|
|
88
87
|
dispatch(loadFilters());
|
|
89
|
-
}, [])
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
}, [showPart, dispatch])
|
|
89
|
+
|
|
90
|
+
return (
|
|
91
|
+
<React.Fragment>
|
|
92
|
+
<Header/>
|
|
93
|
+
<div className="wrapperBody">
|
|
94
|
+
<Sidebar filters={filters} selectedFilters={selectedFilters}/>
|
|
95
|
+
|
|
96
|
+
<div className="mainContent">
|
|
97
|
+
{showPart === 'camera' &&
|
|
94
98
|
<Capture onCaptureComplete={handlers.onCaptureComplete} onCaptureCanceled={handlers.onCaptureCanceled}
|
|
95
99
|
useAppText='Use default camera app'/>}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
<section id="branding" style={{paddingLeft: '50px',marginLeft: '70px'}}/>
|
|
100
|
-
<div id="menu" className="menuWrap" role="navigation">
|
|
101
|
-
<ul>
|
|
102
|
-
<li><a href="https://nyris.io/imprint/#privacy" target="_blank"
|
|
103
|
-
rel="noopener noreferrer">Privacy Policy</a></li>
|
|
104
|
-
<li><a href="https://nyris.io/" target="_blank" rel="noopener noreferrer">Visit our
|
|
105
|
-
Website</a></li>
|
|
106
|
-
</ul>
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
<div className={classNames('headSection', {hidden: showPart === 'results'})} id="headSection">
|
|
110
103
|
<div {...getRootProps({
|
|
111
104
|
onClick: e => {
|
|
112
105
|
e.stopPropagation();
|
|
113
106
|
}
|
|
114
107
|
})} className={classNames('wrapper', 'dragAndDropActionArea', {'fileIsHover': isDragActive})}>
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
</Toolbar>
|
|
120
|
-
{ filters && filters.length > 0 ? <Sidebar filters={filters}/> : <div></div> }
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
</section>
|
|
124
|
-
<div className="contentWrap" style={{marginLeft: '50px', marginTop:'50px'}}>
|
|
125
|
-
<section className="uploadImage">
|
|
108
|
+
|
|
109
|
+
<div className={classNames('contentWrap')}>
|
|
110
|
+
<Box display="flex" flexDirection="column" justifyContent="center" alignItems="center" minHeight="100vh">
|
|
111
|
+
<section className="uploadImage">
|
|
126
112
|
<input type="button" name="file" id="capture" className="inputfile" accept="image/*"
|
|
127
113
|
capture="environment" onClick={handlers.onCameraClick}/>
|
|
128
114
|
<input type="file" name="file" id="capture_file" className="inputfile" accept={acceptTypes}
|
|
@@ -139,18 +125,23 @@ const App: React.FC<AppProps> = ({
|
|
|
139
125
|
<img src="./images/ic_cam_large.svg" alt="Camera"/>
|
|
140
126
|
</div>
|
|
141
127
|
<label htmlFor="capture" className="btn primary onMobile"
|
|
142
|
-
style={{marginBottom: '2em', width: '
|
|
128
|
+
style={{marginBottom: '2em', width: '12em'}}>
|
|
143
129
|
<span className="onMobile">Take a picture</span>
|
|
144
130
|
</label>
|
|
145
131
|
<br/>
|
|
146
|
-
<label htmlFor="select_file" className="btn primary" style={{width: '
|
|
132
|
+
<label htmlFor="select_file" className="btn primary" style={{width: '12em'}}>
|
|
147
133
|
<span>Select a file</span>
|
|
148
134
|
</label>
|
|
149
135
|
<label htmlFor="capture" className="mobileUploadHandler onMobile"/>
|
|
150
|
-
|
|
151
|
-
|
|
136
|
+
</section>
|
|
137
|
+
<ExampleImages images={settings.exampleImages} onExampleImageClicked={handlers.onExampleImageClick}/>
|
|
138
|
+
|
|
139
|
+
</Box>
|
|
152
140
|
</div>
|
|
153
141
|
</div>
|
|
142
|
+
|
|
143
|
+
<div className="headerSeparatorTop"/>
|
|
144
|
+
<div className="headerSeparatorBack"/>
|
|
154
145
|
<div className={classNames('tryDifferent', {hidden: showPart !== 'results'})}
|
|
155
146
|
onClick={handlers.onShowStart}>
|
|
156
147
|
<div className="icIcon">
|
|
@@ -158,16 +149,13 @@ const App: React.FC<AppProps> = ({
|
|
|
158
149
|
<div className="textDesc"> Try a different image</div>
|
|
159
150
|
<br style={{clear: 'both'}}/>
|
|
160
151
|
</div>
|
|
161
|
-
<div className="headerSeparatorTop"/>
|
|
162
|
-
<div className="headerSeparatorBack"/>
|
|
163
152
|
</div>
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
className={classNames('results', {resultsActive: showPart === 'results'}, (results.length === 1 ? 'singleProduct' : 'multipleProducts'))}>
|
|
153
|
+
|
|
154
|
+
<section className={classNames({hideResults: showPart !== 'results'},'results', {resultsActive: showPart === 'results'}, (results.length === 1 ? 'singleProduct' : 'multipleProducts'))}>
|
|
167
155
|
{errorMessage &&
|
|
168
156
|
<div className="errorMsg">
|
|
169
157
|
{errorMessage}
|
|
170
|
-
<div style={{textAlign: 'center', fontSize: '0
|
|
158
|
+
<div style={{textAlign: 'center', fontSize: '0ß.7em', paddingTop: '0.8em'}}><span>Make sure to include the request ID when reporting a problem: {requestId}</span>
|
|
171
159
|
</div>
|
|
172
160
|
</div>
|
|
173
161
|
}
|
|
@@ -236,8 +224,10 @@ const App: React.FC<AppProps> = ({
|
|
|
236
224
|
<Alert onClose={() => setToastOpen(false)} severity="error">
|
|
237
225
|
{toastErrorMessage}
|
|
238
226
|
</Alert>
|
|
239
|
-
</Snackbar>
|
|
240
|
-
|
|
227
|
+
</Snackbar>
|
|
228
|
+
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
241
231
|
<section className="footnote">
|
|
242
232
|
<div className="wrapper">
|
|
243
233
|
© 2017 - 2019 <a href="https://nyris.io">nyris GmbH</a> - All rights reserved - <a
|
|
@@ -246,11 +236,9 @@ const App: React.FC<AppProps> = ({
|
|
|
246
236
|
</section>
|
|
247
237
|
<Feedback feedbackState={feedbackState} onPositiveFeedback={handlers.onPositiveFeedback}
|
|
248
238
|
onNegativeFeedback={handlers.onNegativeFeedback} onClose={handlers.onCloseFeedback}/>
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
239
|
+
|
|
240
|
+
</React.Fragment>
|
|
241
|
+
);
|
|
242
|
+
}
|
|
255
243
|
|
|
256
|
-
export default
|
|
244
|
+
export default Demo2;
|
|
@@ -25,9 +25,7 @@ export type SearchAction =
|
|
|
25
25
|
| { type: 'LOAD_FILTERS_SUCCESS', filters: Filter[]}
|
|
26
26
|
| { type: 'LOAD_FILTERS_FAIL', reason: string, exception: any}
|
|
27
27
|
| { type: 'ADD_TO_SELECTEDFILTERS', key: string, value : string}
|
|
28
|
-
| { type: 'ADD_TO_SELECTEDFILTERS_SUCCESS', key: string , value : string}
|
|
29
28
|
| { type: 'REMOVE_FROM_SELECTEDFILTERS', key: string , value: string}
|
|
30
|
-
| { type: 'REMOVE_FROM_SELECTEDFILTERS_SUCCESS', key: string , value: string}
|
|
31
29
|
| { type: 'CLEAR_SELECTED_FILTERS'}
|
|
32
30
|
|
|
33
31
|
|
|
@@ -166,12 +164,12 @@ export const reducer = (state : SearchState = initialState, action: SearchAction
|
|
|
166
164
|
...state,
|
|
167
165
|
errorMessage: action.exception.response.data.detail
|
|
168
166
|
}
|
|
169
|
-
case "
|
|
167
|
+
case "ADD_TO_SELECTEDFILTERS":
|
|
170
168
|
return {
|
|
171
169
|
...state,
|
|
172
170
|
selectedFilters : ADDtoSelectedfilters(state.selectedFilters, action.key, action.value)
|
|
173
171
|
}
|
|
174
|
-
case "
|
|
172
|
+
case "REMOVE_FROM_SELECTEDFILTERS":
|
|
175
173
|
return {
|
|
176
174
|
...state,
|
|
177
175
|
selectedFilters : RemoveFromSelectedFilters(state.selectedFilters, action.key, action.value)
|
|
@@ -214,5 +212,6 @@ function RemoveFromSelectedFilters(selectedFilters: Map<string, string[]>, key:
|
|
|
214
212
|
}
|
|
215
213
|
|
|
216
214
|
}
|
|
215
|
+
console.log(selectedFilters);
|
|
217
216
|
return selectedFilters;
|
|
218
217
|
}
|
|
@@ -1,34 +1,28 @@
|
|
|
1
1
|
|
|
2
|
-
import React
|
|
2
|
+
import React from 'react';
|
|
3
3
|
import {Filter} from '../../../nyris-api/index';
|
|
4
4
|
import { addToSelectedFilters, removeFromSelectedFilters } from '../actions/searchActions';
|
|
5
5
|
import { useDispatch } from 'react-redux';
|
|
6
6
|
import { RiLayoutGridLine} from 'react-icons/ri';
|
|
7
7
|
|
|
8
8
|
interface FilterProps {
|
|
9
|
-
filter : Filter
|
|
9
|
+
filter : Filter,
|
|
10
|
+
selectedValues?: string[]
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
const FiltersList : React.FC<FilterProps> = ({filter})=>{
|
|
15
|
-
const [checked, setChecked] = useState<string[]>([]);
|
|
15
|
+
const FiltersList : React.FC<FilterProps> = ({filter, selectedValues})=>{
|
|
16
16
|
const dispatch = useDispatch();
|
|
17
17
|
|
|
18
|
-
const onFilterChanged=(e: React.ChangeEvent<HTMLInputElement>,value:string) =>{
|
|
19
|
-
var updatedList = [...checked];
|
|
20
|
-
console.log(e.target.checked);
|
|
18
|
+
const onFilterChanged=(e: React.ChangeEvent<HTMLInputElement>,value:string) =>{
|
|
21
19
|
if (e.target.checked) {
|
|
22
20
|
if(filter.key)
|
|
23
21
|
dispatch(addToSelectedFilters(filter.key , value));
|
|
24
|
-
updatedList = [...checked, value];
|
|
25
22
|
} else {
|
|
26
23
|
if(filter.key)
|
|
27
24
|
dispatch(removeFromSelectedFilters(filter.key, value));
|
|
28
|
-
updatedList.splice(checked.indexOf(value), 1);
|
|
29
25
|
}
|
|
30
|
-
setChecked(updatedList);
|
|
31
|
-
console.log(updatedList);
|
|
32
26
|
}
|
|
33
27
|
|
|
34
28
|
if(filter && filter.values && filter.key && filter.values.length > 0){
|
|
@@ -43,13 +37,17 @@ const FiltersList : React.FC<FilterProps> = ({filter})=>{
|
|
|
43
37
|
<div className='item'>
|
|
44
38
|
<div className="list-container">
|
|
45
39
|
|
|
46
|
-
{filter.values.slice(0, 6).map((item, index) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
{filter.values.slice(0, 6).map((item, index) => {
|
|
41
|
+
const checked = selectedValues && selectedValues.includes(item);
|
|
42
|
+
return (
|
|
43
|
+
|
|
44
|
+
<div key={index}>
|
|
45
|
+
|
|
46
|
+
<input value={item} checked={checked ? true: false} type="checkbox" onChange={(e)=>onFilterChanged(e,item)} />
|
|
47
|
+
<label className='itemLabel'>{item}</label>
|
|
48
|
+
</div>
|
|
49
|
+
)
|
|
50
|
+
})}
|
|
53
51
|
</div>
|
|
54
52
|
</div>
|
|
55
53
|
|
|
@@ -4,10 +4,11 @@ import { Filter } from '../../../nyris-api/index';
|
|
|
4
4
|
import FiltersList from './FiltersList';
|
|
5
5
|
|
|
6
6
|
interface SidebarProps {
|
|
7
|
-
filters: Filter[]
|
|
7
|
+
filters: Filter[],
|
|
8
|
+
selectedFilters: Map<string, string[]>
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
const Sidebar: React.FC<SidebarProps> = ({filters}) =>{
|
|
11
|
+
const Sidebar: React.FC<SidebarProps> = ({filters, selectedFilters}) =>{
|
|
11
12
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
12
13
|
const handleToggler =()=>{
|
|
13
14
|
if(isExpanded){
|
|
@@ -25,8 +26,9 @@ const Sidebar: React.FC<SidebarProps> = ({filters}) =>{
|
|
|
25
26
|
<h1 className={isExpanded ? "sidebar-logo" : "sidebar-logo collapsedHide"}> Select Filters </h1>
|
|
26
27
|
</div>
|
|
27
28
|
<div className={isExpanded ? "Sidebar-items" : "Sidebar-items collapsedHide"}>
|
|
28
|
-
{filters && filters.map((x) => {
|
|
29
|
-
|
|
29
|
+
{filters && filters.map((x) => {
|
|
30
|
+
let selectedValues = x.key ? selectedFilters.get(x.key): undefined
|
|
31
|
+
return <FiltersList filter={x} selectedValues={selectedValues}/>
|
|
30
32
|
})
|
|
31
33
|
}
|
|
32
34
|
</div>
|
package/src/epics/search.ts
CHANGED
|
@@ -145,28 +145,7 @@ const loadFilters: EpicConf = (action$, state$, {api}) => action$.pipe(
|
|
|
145
145
|
let filters = await api.getFilters();
|
|
146
146
|
|
|
147
147
|
filters= filters.slice(0, 3);
|
|
148
|
-
console.log(filters);
|
|
149
|
-
// let filters : Filter[] = [
|
|
150
|
-
// {
|
|
151
|
-
// filterType: 'MachineType',
|
|
152
|
-
// filterValues : [
|
|
153
|
-
// "MachineType1",
|
|
154
|
-
// "MachineType2",
|
|
155
|
-
// "MachineType3",
|
|
156
|
-
// "MachineType4",
|
|
157
|
-
// "MachineType5"
|
|
158
|
-
// ]
|
|
159
|
-
// },
|
|
160
|
-
// {
|
|
161
|
-
// filterType: 'Color',
|
|
162
|
-
// filterValues :[
|
|
163
|
-
// "Red",
|
|
164
|
-
// "Green",
|
|
165
|
-
// "Blue",
|
|
166
|
-
// "Yellow",
|
|
167
|
-
// "Black"
|
|
168
|
-
// ]
|
|
169
|
-
// }];
|
|
148
|
+
console.log(filters);
|
|
170
149
|
return {type: 'LOAD_FILTERS_SUCCESS', filters };
|
|
171
150
|
|
|
172
151
|
} catch (e) {
|
|
@@ -176,28 +155,10 @@ const loadFilters: EpicConf = (action$, state$, {api}) => action$.pipe(
|
|
|
176
155
|
})
|
|
177
156
|
);
|
|
178
157
|
|
|
179
|
-
const addToSelectedFilters: EpicConf = (action$) => action$.pipe(
|
|
180
|
-
ofType('ADD_TO_SELECTEDFILTERS'),
|
|
181
|
-
switchMap(async (action) : Promise<AppAction> => {
|
|
182
|
-
|
|
183
|
-
if(action.type !== 'ADD_TO_SELECTEDFILTERS'){
|
|
184
|
-
throw new Error(`Wrong action type ${action.type}`);
|
|
185
|
-
}
|
|
186
|
-
if('key' in action && 'value' in action){
|
|
187
|
-
|
|
188
|
-
let {key, value} = action;
|
|
189
|
-
console.log(key);
|
|
190
|
-
console.log(action);
|
|
191
|
-
return {type : 'ADD_TO_SELECTEDFILTERS_SUCCESS', key , value }
|
|
192
|
-
}
|
|
193
|
-
throw new Error(`Change filters action wrong properties ${Object.keys(action).join(',')}`);
|
|
194
|
-
})
|
|
195
|
-
);
|
|
196
158
|
|
|
197
159
|
export default combineEpics(
|
|
198
160
|
imageSearch,
|
|
199
161
|
regionSearch,
|
|
200
162
|
loadFile,
|
|
201
163
|
loadImage,
|
|
202
|
-
loadFilters
|
|
203
|
-
addToSelectedFilters);
|
|
164
|
+
loadFilters);
|
package/src/index.css
CHANGED
|
@@ -553,7 +553,7 @@ a img.aligncenter {
|
|
|
553
553
|
}
|
|
554
554
|
|
|
555
555
|
.headSection {
|
|
556
|
-
position:
|
|
556
|
+
position: relative;
|
|
557
557
|
width: 100%;
|
|
558
558
|
height: 90vh;
|
|
559
559
|
height: -webkit-calc(100vh - 30px);
|
|
@@ -648,7 +648,6 @@ a img.aligncenter {
|
|
|
648
648
|
-webkit-box-pack: center;
|
|
649
649
|
-ms-flex-pack: center;
|
|
650
650
|
justify-content: center;
|
|
651
|
-
margin-left: 35px;
|
|
652
651
|
margin-top: 50px;
|
|
653
652
|
}
|
|
654
653
|
.dragAndDropActionArea:focus {
|
|
@@ -1474,8 +1473,9 @@ a img.aligncenter {
|
|
|
1474
1473
|
}
|
|
1475
1474
|
.mainContent{
|
|
1476
1475
|
width: calc(100vh-230);
|
|
1477
|
-
flex: 0 0
|
|
1476
|
+
flex: 0 0 80%;
|
|
1478
1477
|
flex-grow: 1;
|
|
1478
|
+
position: inherit;
|
|
1479
1479
|
}
|
|
1480
1480
|
.sidebarContent {
|
|
1481
1481
|
height: 100%;
|
package/src/index.tsx
CHANGED
|
@@ -34,7 +34,7 @@ import 'typeface-roboto';
|
|
|
34
34
|
import {defaultMdSettings, defaultSettings} from "./defaults";
|
|
35
35
|
import rootEpic from "./epics";
|
|
36
36
|
import { createHashHistory } from 'history';
|
|
37
|
-
import
|
|
37
|
+
import App from './App';
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
declare var settings: AppSettings;
|
|
@@ -91,6 +91,7 @@ history.listen((location, action) => {
|
|
|
91
91
|
switch (location.pathname) {
|
|
92
92
|
case '/results':
|
|
93
93
|
store.dispatch({type: 'SHOW_RESULTS'});
|
|
94
|
+
store.dispatch({type: 'LOAD_FILTERS'});
|
|
94
95
|
break;
|
|
95
96
|
case '/':
|
|
96
97
|
store.dispatch({type: 'SHOW_START'});
|
|
@@ -113,7 +114,8 @@ const mapStateToProps = (state: AppState) => ({
|
|
|
113
114
|
duration: state.search.duration,
|
|
114
115
|
requestId: state.search.requestId,
|
|
115
116
|
toastErrorMessage: state.search.errorMessage,
|
|
116
|
-
filters: state.search.filters
|
|
117
|
+
filters: state.search.filters,
|
|
118
|
+
selectedFilters: state.search.selectedFilters
|
|
117
119
|
},
|
|
118
120
|
settings: state.settings,
|
|
119
121
|
previewImage: state.search.requestImage,
|
|
@@ -189,7 +191,7 @@ let theme = createMuiTheme({
|
|
|
189
191
|
}
|
|
190
192
|
}
|
|
191
193
|
});
|
|
192
|
-
const SelectedApp = useMd ? AppMD :
|
|
194
|
+
const SelectedApp = useMd ? AppMD : App;
|
|
193
195
|
const ConnectedApp = connect(mapStateToProps, mapDispatchToProps)(SelectedApp);
|
|
194
196
|
|
|
195
197
|
ReactDOM.render(<Provider store={store}><MuiThemeProvider
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["index.css"],"names":[],"mappings":"AAAA,KACE,QAAS,CACT,mJAEY,CACZ,kCAAmC,CACnC,iCAAkC,CAClC,wBACF,CAEA,KACE,yEAEF,CAEA,eACE,uBACF,CAEA,8BACE,eACF,CAEA,2ZACE,YAAa,CACb,SAAU,CACV,QAAS,CACT,QAAS,CACT,uBACF,CAEA,aACE,WACF,CAEA,oDACE,UAAW,CACX,YACF,CAEA,MACE,wBAAyB,CACzB,gBACF,CAEA,8EACE,aACF,CAEA,OACE,UACF,CAEA,oBACE,0BAA8B,CAC9B,2BACF,CAEA,oCACE,iBACF,CAEA,EACE,qBACF,CAEA,SACE,SAAU,CACV,gBAAiB,CACjB,aAAc,CAGd,QACF,CAEA,oBACE,YAAa,CACb,iBACF,CAEA,wCACE,SACF,CAEA,0CACE,oBACE,YACF,CACF,CAEA,gEACE,oBACE,YACF,CACF,CAEA,4BACE,SACF,CAEA,aACE,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CAGnB,YACF,CAEA,sBACE,sBACF,CAEA,cACE,aAAc,CAGd,WAAY,CACZ,UACF,CAEA,UACE,SAAU,CACV,UACF,CAEA,+DACE,UACE,UAAW,CACX,UACF,CACF,CAEA,WACE,SAAU,CACV,UACF,CAEA,QACE,iBACF,CAEA,cACE,SAAU,CACV,oBACF,CAEA,gEACE,iBACE,YACF,CACF,CAEA,+DACE,cACE,UACF,CACF,CAEA,yCACE,WACE,YACF,CACF,CAEA,mCACE,yBACF,CAEA,2BACE,mBACF,CAEA,uCACE,cACF,CAEA,iBACE,UACF,CAEA,WACE,eAAgB,CAChB,kBAAmB,CAEnB,oDAA+D,CAC/D,+GACF,CAEA,2CACE,YACF,CAEA,KACE,eAAgB,CAChB,iBAAkB,CAClB,iBAAkB,CAClB,cAAe,CACf,gBAAiB,CACjB,wBAAyB,CACzB,oBAAqB,CACrB,iBAAkB,CAClB,WAAY,CACZ,eAAgB,CAChB,uBACF,CAEA,sBACE,YACF,CAEA,aACE,kBAAmB,CACnB,UACF,CAEA,mBACE,cAAe,CACf,UACF,CAEA,gBACE,2CACF,CAEA,sBACE,UACF,CAEA,uBAEE,iDAAqD,CAGrD,yBAA0B,CAC1B,2CACF,CAEA,6DACE,iBAAkB,CAClB,cAAe,CACf,cAAe,CACf,YAAa,CACb,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,UAAW,CACX,kBACF,CAEA,WACE,kBAAmB,CACnB,yMAAiK,CACjK,eAAgB,CAChB,iBACF,CAEA,WACE,kBAAmB,CACnB,iMAAyJ,CACzJ,eAAgB,CAChB,iBACF,CAEA,WACE,kBAAmB,CACnB,6MAAqK,CACrK,eAAgB,CAChB,iBACF,CAEA,WACE,8BAA+B,CAC/B,sOAA8L,CAC9L,eAAgB,CAChB,iBACF,CAEA,WACE,8BAA+B,CAC/B,+PAAuN,CACvN,eAAgB,CAChB,iBACF,CAEA,kCACE,uBAA2B,CAC3B,6CAAiD,CACjD,cAAe,CACf,eAAgB,CAChB,eAAgB,CAChB,iCAAkC,CAClC,kCAAmC,CACnC,0BAA2B,CAC3B,iCACF,CAEA,6BACE,eACF,CAEA,KACE,kBACF,CAEA,kBACE,aACF,CAEA,MACE,iBAAkB,CAClB,aACF,CAEA,GACE,cAAe,CACf,kBACF,CAEA,iBACE,aAAc,CACd,cACF,CAEA,GACE,cAAe,CACf,qBACF,CAEA,iBACE,aAAc,CACd,cACF,CAEA,UACE,eACF,CAEA,+DACE,YACE,YACF,CACF,CAEA,GACE,aAAc,CACd,cAAe,CACf,eAAgB,CAChB,qBACF,CAEA,GACE,cAAe,CACf,qBACF,CAEA,GACE,cAAe,CACf,qBACF,CAEA,GACE,cAAe,CACf,oBACF,CAEA,EACE,kBACF,CAEA,IACE,yBACF,CAEA,GACE,iBACF,CAEA,WACE,cAAe,CACf,WACF,CAEA,EACE,oBAAqB,CACrB,uBACF,CAEA,QACE,cAAe,CACf,sBACF,CAEA,MACE,eAAgB,CAChB,iBACF,CAEA,YACE,eAAgB,CAChB,iBAAkB,CAClB,kBACF,CAEA,WACE,sBACF,CAEA,6BACE,aAAc,CACd,eACF,CAEA,YACE,WAAY,CACZ,sBACF,CAEA,WACE,UAAW,CACX,sBACF,CAEA,iBACE,WAAY,CACZ,sBACF,CAEA,gCACE,sBACF,CAEA,gBACE,UACF,CAEA,kBACE,aAAc,CACd,gBAAiB,CACjB,iBACF,CAEA,YACE,eAAgB,CAChB,wBAAyB,CACzB,aAAc,CACd,oBAAqB,CACrB,iBACF,CAEA,4CACE,sBACF,CAEA,uBACE,sBACF,CAEA,gBACE,QAAS,CACT,WAAY,CACZ,QAAS,CACT,eAAgB,CAChB,SAAU,CACV,UACF,CAEA,8CACE,cAAe,CACf,gBAAiB,CACjB,QAAS,CACT,iBACF,CAEA,aACE,sBACE,uBACF,CAEA,EACE,wBAA0B,CAC1B,oBAAsB,CACtB,yBAA2B,CAC3B,0BACF,CAEA,YACE,yBACF,CAEA,cACE,2BACF,CAEA,kBACE,4BACF,CAEA,4DACE,UACF,CAEA,eACE,qBACF,CAEA,MACE,0BACF,CAEA,IACE,wBACF,CAEA,MACE,WACF,CAEA,QACE,SAAU,CACV,QACF,CAEA,MACE,sBACF,CACF,CAEA,yCACE,iBAAkB,CAClB,OAAQ,CACR,WAAY,CACZ,MAAO,CACP,UAAW,CACX,WAAY,CACZ,YAAa,CACb,kFACF,CAEA,yDACE,gyZACF,CAEA,oBACE,WAAY,CACZ,YAAa,CACb,iFACF,CAEA,4BACE,w6HACF,CAEA,aACE,iBAAkB,CAClB,UAAW,CACX,WAAY,CAEZ,yBAA0B,CAC1B,kBAAmB,CACnB,qBACF,CAEA,oBACE,YAEF,CAEA,yCACE,aACE,gBACF,CACF,CAEA,sBACE,SAAU,CAGV,QACF,CAEA,SACE,UAAW,CACX,YAAa,CACb,iBAAkB,CAClB,YAAa,CACb,2CACF,CAEA,0BACE,iBAAkB,CAClB,SACF,CAEA,UACE,WAAY,CACZ,SACF,CAEA,aACE,QAAS,CACT,gBACF,CAEA,gBACE,UAAW,CACX,eAAgB,CAChB,QAAS,CACT,SACF,CAEA,kBACE,yBAA+B,CAC/B,sBAAuB,CACvB,cAAe,CACf,oBACF,CAEA,wBACE,UACF,CAEA,UACE,UAAW,CACX,UAAW,CACX,WAAY,CACZ,YAAa,CACb,w8FAAwD,CACxD,eAAgB,CAChB,oBAAqB,CACrB,uBACF,CAEA,yBACE,WACF,CAEA,uBACE,WAAY,CACZ,mBAAoB,CAGpB,YAAa,CAGb,kBAAmB,CAGnB,sBAAuB,CACvB,gBAAiB,CACjB,eACF,CACA,6BACE,SACF,CAEA,aAGE,aAAY,CACZ,eACF,CAEA,aACE,gBAAiB,CACjB,kBAAmB,CACnB,qCAA2C,CAC3C,cAAe,CACf,iBAAkB,CAClB,cAAe,CACf,2BAA+B,CAC/B,aAAc,CAEd,uBACF,CAEA,0CACE,aACE,cACF,CACF,CAEA,yCACE,aACE,cAAe,CACf,QAAS,CACT,WACF,CACF,CAEA,wBACE,cAAe,CACf,2BAA+B,CAC/B,oBACF,CAEA,0BACE,qCACF,CAEA,qBACE,iBAAkB,CAClB,UAAW,CACX,aAAc,CACd,QAAS,CACT,OAAQ,CACR,YAAa,CACb,MACF,CAEA,WACE,UAAW,CACX,WAAY,CACZ,SAAU,CACV,eAAgB,CAChB,iBAAkB,CAClB,UACF,CAEA,eACE,yBAA+B,CAC/B,cAAe,CACf,eACF,CAEA,yCACE,0BACE,QACF,CAEA,eACE,iBAAkB,CAClB,YAAa,CACb,UACF,CACF,CAEA,8BACE,eAAgB,CAChB,UAAW,CACX,aAAc,CACd,gCAAiC,CACjC,mBACF,CAEA,4CACE,kBACF,CAEA,kCACE,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,gBAAiB,CACjB,qBACF,CAEA,wCACE,cAAe,CACf,SACF,CAEA,SACE,kBACF,CAEA,sBACE,UACE,YACF,CACF,CAEA,0CACE,WACE,YACF,CACF,CAEA,8CACE,oBAAqB,CACrB,kBACF,CAEA,cACE,iBAAkB,CAClB,QAAW,CACX,QAAS,CACT,0BAA2B,CAC3B,WAAY,CACZ,WAAY,CACZ,iBAAkB,CAClB,iBAAkB,CAClB,YAAa,CACb,yBAA0B,CAC1B,kBAAmB,CACnB,cAAe,CACf,UAAW,CACX,eAAgB,CAChB,qBACF,CACA,qBACE,YACF,CAEA,gEACE,cACE,WACF,CACF,CAEA,+DACE,cACE,WACF,CACF,CAEA,+DACE,cACE,WACF,CACF,CAEA,yCACE,cACE,SAAU,CACV,mBAAoB,CACpB,gBACF,CACF,CAEA,sBACE,UAAW,CACX,WAAY,CACZ,gEAA4C,CAC5C,iBACF,CAEA,8BACE,wfACF,CAEA,oBACE,cACF,CAEA,cACE,iBAAkB,CAGlB,0BAA2B,CAC3B,aACF,CAEA,SACE,iBACF,CACA,uBACE,WAAY,CACZ,eAAgB,CAChB,gBACF,CACA,aACE,YACF,CAEA,kBAEE,6BAA8B,CAC9B,WACF,CAEA,yCACE,kBACE,SACF,CACF,CAEA,yBACE,YAAa,CACb,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,MAAO,CACP,QAAS,CACT,kBAAmB,CACnB,SAAU,CACV,iBACF,CAEA,wBACE,GAEE,mBACF,CACA,GAEE,uBACF,CACF,CAEA,gBACE,GAEE,mBACF,CACA,GAEE,uBACF,CACF,CAEA,kCACE,iBAAkB,CAClB,SAAU,CACV,QAAS,CACT,iBAAkB,CAClB,gBAAiB,CACjB,iBAAkB,CAClB,UAAW,CACX,WAAY,CAEZ,mCAAqC,CAArC,iCAAqC,CACrC,yCAA0C,CAC1C,iCACF,CAEA,WACE,WAAY,CACZ,gBAAiB,CACjB,UAAW,CACX,kBAAmB,CACnB,iBAAkB,CAClB,eAAgB,CAChB,qCAAyC,CACzC,cAAe,CACf,eACF,CAEA,0CACE,qCACE,UACF,CACF,CAEA,gEACE,WACE,WAAY,CACZ,gBACF,CAEA,qCACE,UACF,CACF,CAEA,+DACE,WACE,WAAY,CACZ,gBACF,CAEA,qCACE,UACF,CACF,CAEA,+DACE,WACE,WAAY,CACZ,gBACF,CAEA,qCACE,UACF,CACF,CAEA,qBACE,iBAAkB,CAClB,eAAgB,CAChB,iBAAkB,CAClB,yCACF,CAEA,yCACE,WACE,UAAW,CACX,aACF,CAEA,uCACE,UAAW,CACX,SAAU,CACV,eACF,CACF,CAEA,2BACE,UAAW,CACX,aAAc,CACd,UAAW,CACX,mBAAoB,CACpB,iBACF,CAEA,8BACE,iBAAkB,CAClB,MAAO,CACP,QAAS,CACT,SAAU,CACV,OACF,CAEA,yBACE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,cAAe,CACf,eAAgB,CAChB,WAAY,CACZ,qBACF,CAEA,6BACE,aACF,CAEA,yCACE,+CACE,UAAW,CACX,SAAU,CACV,UAAW,CACX,uCACF,CAEA,UACE,iBACF,CACF,CAEA,yCACE,aACF,CAEA,wCACE,aACF,CAEA,oDACE,eAAgB,CAChB,aACF,CAEA,4CACE,kBACF,CAEA,4CACE,cAAe,CACf,oBAAqB,CACrB,yBAA0B,CAC1B,wBAAyB,CACzB,cAAe,CACf,iBAAkB,CAClB,0FAAsE,CACtE,kCACF,CAEA,oDACE,6XACF,CAEA,kDACE,qFAAiE,CACjE,wBAAyB,CACzB,aACF,CAEA,0DACE,qWACF,CAEA,yCACE,0BACE,SAAU,CACV,aAAc,CACd,gBAAiB,CACjB,UAAW,CACX,iBACF,CAEA,oCACE,UAAW,CACX,SAAU,CACV,eAAgB,CAChB,wCACF,CAEA,4CACE,UAAW,CACX,SAAU,CACV,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,QAAS,CACT,QAAS,CACT,UAAW,CAGX,YAAa,CAGb,kBAAmB,CAEnB,cACF,CACF,CAEA,sCACE,sCACF,CAEA,mBACE,kBAAmB,CACnB,cAAe,CACf,uBAA2B,CAC3B,iBACF,CAEA,qBACE,uBAA2B,CAC3B,eACF,CAEA,2BACE,uBACF,CAEA,UACE,cAAe,CACf,OAAQ,CACR,QAAS,CACT,MAAO,CACP,0BAA2B,CAC3B,SAAU,CACV,kBAAmB,CACnB,YAAa,CACb,cAAe,CACf,2BACF,CAEA,mBACE,cACF,CAEA,YACE,oBAAqB,CACrB,iBACF,CAEA,yCACE,YACE,aAAc,CACd,kBACF,CACF,CAEA,eACE,eAAgB,CAChB,iBAAkB,CAClB,oBAAqB,CACrB,WAAY,CACZ,YACF,CAEA,uBACE,cAAe,CACf,2BACF,CAEA,6BACE,kBAAmB,CACnB,oCAAwC,CACxC,UACF,CAEA,yBACE,cACF,CAEA,+BACE,kBAAmB,CACnB,gCAAoC,CACpC,UACF,CAEA,uBACE,eAAgB,CAChB,2BACF,CAEA,6BACE,kBAAmB,CACnB,oCAAwC,CACxC,UACF,CAEA,qBACE,cACF,CAEA,kCACE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,QACF,CAEA,iDACE,iBAAkB,CAClB,UAAW,CACX,OAAQ,CAGR,0BAA2B,CAC3B,UAAW,CACX,WAAY,CACZ,mFAA+D,CAC/D,WAAY,CACZ,WAAY,CAEZ,uBACF,CAEA,uDACE,cAAe,CACf,SACF,CAEA,2BACE,cAAe,CACf,iBAAkB,CAClB,aAAc,CACd,gBACF,CAEA,yCACE,iDACE,UAAW,CACX,QAAS,CAGT,uBACF,CAEA,2BACE,aACF,CACF,CAEA,oEACE,aACF,CAEA,4GACE,aACF,CAEA,0BACE,YAAa,CACb,iBAAkB,CAClB,cAAe,CACf,cAAe,CACf,YAAa,CACb,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,UAAW,CACX,kBACF,CAEA,6DACE,aACF,CAWA,YAGE,YAAa,CACb,iBAGF,CAEA,uBARE,sBAAuB,CACvB,eAAgB,CAGhB,kBAAmB,CACnB,cAUF,CAPA,WAGE,YAAa,CACb,iBAGF,CAEA,2BACE,WAAY,CACZ,kBACF,CAEA,UACE,SAAU,CACV,wBAAyB,CACzB,kBAAmB,CACnB,WAAY,CACZ,YAAc,CACd,iBACF,CAEA,SACE,SACF,CAEA,uBACE,oBACF,CAEA,iBACE,aAAc,CACd,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,8BAAgC,CAChC,qBAAuB,CACvB,wBAAyB,CACzB,iBAAkB,CAClB,YACF,CAEA,sBACE,iBAAkB,CAClB,yBAA8B,CAC9B,UAAc,CACd,qBAAsB,CACtB,cAAe,CACf,kBACF,CAEA,uBACE,oBAAqB,CACrB,YACF,CAEA,4BACE,WACF,CAEA,yCACE,UACE,cACF,CACF,CAEA,WACE,UAAc,CACd,aAAc,CACd,iBAAkB,CAClB,cACF,CAEA,gBACE,+BAAoC,CACpC,iBACF,CAEA,gBACE,iBAAkB,CAClB,oKAG2C,CAC3C,qDAAyD,CACzD,mDAAuD,CACvD,yCAA+D,CAC/D,iDAA0C,CAA1C,yCACF,CACA,gBACE,iBAAkB,CAClB,yBAA2B,CAC3B,UAAW,CACX,WACF,CACA,sBACE,+BAAkC,CAClC,iBAAkB,CAClB,+BACF,CACA,mBACE,yBAA2B,CAC3B,0BACF,CACA,mBACE,yBAA2B,CAC3B,2BACF,CACA,mBACE,4BAA8B,CAC9B,0BACF,CACA,mBACE,4BAA8B,CAC9B,2BACF,CAEA,gCACE,GACE,+CACF,CACA,GACE,+CACF,CACF,CAPA,wBACE,GACE,+CACF,CACA,GACE,+CACF,CACF,CACA,QAEE,WAAY,CAEZ,4BACF,CACA,mBALE,UAAW,CAEX,wBAOF,CAJA,WAEE,WAEF,CACA,aAGE,YAAa,CAIb,oBAAqB,CAErB,SAAU,CACV,kBAAmB,CAEnB,qBAAsB,CACtB,yBACF,CACA,SACE,OAAQ,CAER,aAAc,CACd,SAAU,CACV,QAAS,CACT,eAAgB,CAIhB,cAAe,CACf,2BAA4B,CAC5B,SACF,CACA,aACE,uBAAsB,CACtB,cAAe,CACf,WACF,CACA,gBACE,WAAY,CACZ,kBAAmB,CAGnB,UACF,CACA,eACE,YAAa,CACb,kBAAmB,CACnB,YACA,CACA,cACC,YAAa,CACb,aAAc,CACd,iBAAkB,CAClB,cAAe,CACf,wBAAiB,CAAjB,qBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,WAED,CACA,cACA,cAAe,CACf,UAAW,CACX,UAAY,CACZ,eACA,CACA,eACE,YAAa,CACb,qBAAsB,CACtB,aACF,CAEA,2BACA,qCAEA,CACA,qBACA,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,iBAAkB,CAClB,+BAAiC,CACjC,cACA,CACA,oBACE,UAEF,CACA,kCACE,cACF,CAEF,eACI,YACF,CACA,cACE,UACF,CAEA,WACE,iBACF,CACF,WAAa,oBAAqB,CAAE,YAAa,CAAG,kBAAsB,CAC1E,iBAAmB,qBAAyB,CAC5C,oBAAsB,qBAAsB,CAAE,UAAa","file":"main.2a76dc8a.chunk.css","sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #031F2B;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n#branding, .btn {\n transition: all .2s ease\n}\n\n.headSection, .mainContentWrap {\n overflow: hidden\n}\n\na, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video {\n font: inherit;\n padding: 0;\n border: 0;\n margin: 0;\n vertical-align: baseline\n}\n\nblockquote, q {\n quotes: none\n}\n\nblockquote:after, blockquote:before, q:after, q:before {\n content: '';\n content: none\n}\n\ntable {\n border-collapse: collapse;\n border-spacing: 0\n}\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n display: block\n}\n\n.clear {\n clear: both\n}\n\n.screen-reader-text {\n clip: rect(1px, 1px, 1px, 1px);\n position: absolute !important\n}\n\n.container, .mainContentWrap, article {\n position: relative\n}\n\n* {\n box-sizing: border-box\n}\n\n.wrapper {\n width: 96%;\n max-width: 1200px;\n margin: 0 auto;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1\n}\n\n.fullWidth, .wrapper {\n padding: 4% 0;\n position: relative\n}\n\n.fullWidth.noPadding, .wrapper.noPadding {\n padding: 0\n}\n\n@media only screen and (min-width: 1300px) {\n .fullWidth, .wrapper {\n padding: 2% 0\n }\n}\n\n@media only screen and (min-width: 900px) and (max-width: 1120px) {\n .fullWidth, .wrapper {\n padding: 4% 0\n }\n}\n\n.fullWidth .wrapper, article {\n padding: 0\n}\n\n.flexWrapper {\n align-items: center;\n flex-flow: row wrap;\n flex-direction: row;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex\n}\n\n.flexWrapper.alignTop {\n align-items: flex-start\n}\n\n.tileFlexible {\n margin: 20px 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n float: left\n}\n\n.tileHalf {\n width: 50%;\n float: left\n}\n\n@media only screen and (min-width: 530px) and (max-width: 750px) {\n .tileHalf {\n float: none;\n width: 100%\n }\n}\n\n.tileThird {\n width: 33%;\n float: left\n}\n\n.center {\n text-align: center\n}\n\n.smallerWidth {\n width: 70%;\n display: inline-block\n}\n\n@media only screen and (min-width: 900px) and (max-width: 1120px) {\n .smallerWidth br {\n display: none\n }\n}\n\n@media only screen and (min-width: 750px) and (max-width: 900px) {\n .smallerWidth {\n width: 100%\n }\n}\n\n@media only screen and (max-width: 530px) {\n .onDesktop {\n display: none\n }\n}\n\n.bold, .bold a, .bold div, .bold span {\n font-weight: 700 !important\n}\n\n.disabled, .notAvailableJet {\n pointer-events: none\n}\n\n.disabled:hover, .notAvailableJet:hover {\n cursor: default\n}\n\n.notAvailableJet {\n opacity: .5\n}\n\n.container {\n min-height: 60vh;\n background: #e7eaee;\n background: -webkit-linear-gradient(top, #e7eaee 0, #f0f2f4 100%);\n background: linear-gradient(to bottom, #e7eaee 0, #f0f2f4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e7eaee', endColorstr='#f0f2f4', GradientType=0)\n}\n\n.page-template-template-contact .container {\n min-height: 0\n}\n\n.btn {\n min-width: 200px;\n border-radius: 3px;\n padding: 15px 35px;\n font-size: 14px;\n line-height: 14px;\n text-transform: uppercase;\n display: inline-block;\n text-align: center;\n height: 45px;\n font-weight: 700;\n transition: all .2s ease\n}\n\n.hide, .oldBrowserHint {\n display: none\n}\n\n.btn.primary {\n background: #4C8F9F;\n color: #fff\n}\n\n.btn.primary:hover {\n cursor: pointer;\n opacity: .8\n}\n\n.btn.withShadow {\n box-shadow: 0 19px 25px -17px rgba(0, 0, 0, .3)\n}\n\n.btn.withShadow:hover {\n opacity: .8\n}\n\n.btn.withShadow:active {\n -webkit-transition: all 50ms cubic-bezier(.54, .03, .42, .99);\n transition: all 50ms cubic-bezier(.54, .03, .42, .99);\n -webkit-transform: translateY(1px);\n -ms-transform: translateY(1px);\n transform: translateY(1px);\n box-shadow: 0 17px 22px -15px rgba(0, 0, 0, .2)\n}\n\n.no-borderradius .oldBrowserHint, .no-opacity .oldBrowserHint {\n text-align: center;\n padding: 20% 5%;\n position: fixed;\n z-index: 9999;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n color: #fff;\n background: #031F2B\n}\n\n@font-face {\n font-family: Roboto;\n src: local(\"Roboto Italic\"), local(\"Roboto-Italic\"), url(fonts/roboto-italic-webfont.woff2) format(\"woff2\"), url(fonts/roboto-italic-webfont.woff) format(\"woff\");\n font-weight: 400;\n font-style: italic\n}\n\n@font-face {\n font-family: Roboto;\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"), url(fonts/roboto-bold-webfont.woff2) format(\"woff2\"), url(fonts/roboto-bold-webfont.woff) format(\"woff\");\n font-weight: 700;\n font-style: normal\n}\n\n@font-face {\n font-family: Roboto;\n src: local(\"Roboto Regular\"), local(\"Roboto-Regular\"), url(fonts/roboto-regular-webfont.woff2) format(\"woff2\"), url(fonts/roboto-regular-webfont.woff) format(\"woff\");\n font-weight: 400;\n font-style: normal\n}\n\n@font-face {\n font-family: \"Roboto Condensed\";\n src: local(\"Roboto Condensed Bold\"), local(\"RobotoCondensed-Bold\"), url(fonts/robotocondensed-bold-webfont.woff2) format(\"woff2\"), url(fonts/robotocondensed-bold-webfont.woff) format(\"woff\");\n font-weight: 700;\n font-style: normal\n}\n\n@font-face {\n font-family: \"Roboto Condensed\";\n src: local(\"Roboto Condensed Bold Italic\"), local(\"RobotoCondensed-BoldItalic\"), url(fonts/robotocondensed-bolditalic-webfont.woff2) format(\"woff2\"), url(fonts/robotocondensed-bolditalic-webfont.woff) format(\"woff\");\n font-weight: 700;\n font-style: italic\n}\n\nbody, button, input, select, textarea {\n color: rgba(3, 31, 43, .54);\n font-family: Roboto, Arial, Helvetica, sans-serif;\n font-size: 17px;\n line-height: 1.5;\n font-weight: 400;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale\n}\n\na, b, h1, h2, h3, h4, h5, h6, strong {\n font-weight: 700\n}\n\nbody {\n background: #e7eaee\n}\n\nh1, h2, h3, h4, h5, h6 {\n line-height: 1\n}\n\nh1, h2 {\n line-height: 1.618;\n color: #031F2B\n}\n\nh1 {\n font-size: 25px;\n margin: 0 auto 25px\n}\n\nh1.entry-title a {\n color: #031F2B;\n font-size: 25px\n}\n\nh2 {\n font-size: 16px;\n margin: 15px auto 25px\n}\n\nh2.entry-title a {\n color: #031F2B;\n font-size: 25px\n}\n\nh1 p, h2 p {\n margin-bottom: 0\n}\n\n@media only screen and (min-width: 530px) and (max-width: 750px) {\n h1 br, h2 br {\n display: none\n }\n}\n\nh3 {\n color: #031F2B;\n font-size: 17px;\n line-height: 1.5;\n margin: 22px auto 16px\n}\n\nh4 {\n font-size: 15px;\n margin: 22px auto 12px\n}\n\nh5 {\n font-size: 13px;\n margin: 22px auto 10px\n}\n\nh6 {\n font-size: 11px;\n margin: 22px auto 8px\n}\n\np {\n margin-bottom: 16px\n}\n\np a {\n text-decoration: underline\n}\n\nem {\n font-style: italic\n}\n\niframe, img {\n max-width: 100%;\n height: auto\n}\n\na {\n text-decoration: none;\n color: rgba(3, 31, 43, .54)\n}\n\na:hover {\n cursor: pointer;\n color: rgba(3, 31, 43, .7)\n}\n\nol, ul {\n list-style: none;\n padding-left: 20px\n}\n\nol li, ul li {\n list-style: disc;\n padding-left: 10px;\n margin-bottom: 10px\n}\n\n.alignnone {\n margin: 5px 20px 20px 0\n}\n\n.aligncenter, div.aligncenter {\n display: block;\n margin: 5px auto\n}\n\n.alignright {\n float: right;\n margin: 5px 0 20px 20px\n}\n\n.alignleft {\n float: left;\n margin: 5px 20px 20px 0\n}\n\na img.alignright {\n float: right;\n margin: 5px 0 20px 20px\n}\n\na img.alignleft, a img.alignnone {\n margin: 5px 20px 20px 0\n}\n\na img.alignleft {\n float: left\n}\n\na img.aligncenter {\n display: block;\n margin-left: auto;\n margin-right: auto\n}\n\n.wp-caption {\n background: #FFF;\n border: 1px solid #F0F0F0;\n max-width: 96%;\n padding: 5px 3px 10px;\n text-align: center\n}\n\n.wp-caption.alignleft, .wp-caption.alignnone {\n margin: 5px 20px 20px 0\n}\n\n.wp-caption.alignright {\n margin: 5px 0 20px 20px\n}\n\n.wp-caption img {\n border: 0;\n height: auto;\n margin: 0;\n max-width: 98.5%;\n padding: 0;\n width: auto\n}\n\n.gallery-caption, .wp-caption .wp-caption-text {\n font-size: 11px;\n line-height: 17px;\n margin: 0;\n padding: 0 4px 5px\n}\n\n@media print {\n blockquote, img, pre, tr {\n page-break-inside: avoid\n }\n\n * {\n background: 0 0 !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important\n }\n\n a, a:visited {\n text-decoration: underline\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\"\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\"\n }\n\n .ir a:after, a[href^=\"javascript:\"]:after, a[href^=\"#\"]:after {\n content: \"\"\n }\n\n blockquote, pre {\n border: 1px solid #999\n }\n\n thead {\n display: table-header-group\n }\n\n img {\n max-width: 100% !important\n }\n\n @page {\n margin: .5cm\n }\n\n h2, h3, p {\n orphans: 3;\n widows: 3\n }\n\n h2, h3 {\n page-break-after: avoid\n }\n}\n\n.headerSeparatorBack, .headerSeparatorTop {\n position: absolute;\n right: 0;\n bottom: -2px;\n left: 0;\n width: 100%;\n height: 61px;\n z-index: 9996;\n background: url(images/sectionTransBack.svg) 0 bottom repeat-x\n}\n\n.no-svg .headerSeparatorBack, .no-svg .headerSeparatorTop {\n background: url(images/sectionTransBack.png) 0 bottom repeat-x\n}\n\n.headerSeparatorTop {\n height: 30px;\n z-index: 9999;\n background: url(images/sectionTransTop.svg) 0 bottom repeat-x\n}\n\n.no-svg .headerSeparatorTop {\n background: url(images/sectionTransTop.png) 0 bottom repeat-x\n}\n\n.headSection {\n position: absolute;\n width: 100%;\n height: 90vh;\n height: -webkit-calc(100vh - 30px);\n height: calc(100vh - 30px);\n background: #031F2B;\n transition: height 300ms;\n}\n\n.headSection.hidden {\n height: 110px;\n\n}\n\n@media only screen and (max-width: 530px) {\n .headSection {\n min-height: 146px\n }\n}\n\n.headSection .wrapper {\n padding: 0;\n -webkit-box-flex: 0;\n -ms-flex: 0;\n flex: 0;\n}\n\n.navWrap {\n width: 100%;\n height: 100px;\n position: absolute;\n z-index: 9996;\n border-bottom: 4px solid rgba(255, 255, 255, .12);\n}\n\n.contentWrap, .uploadImage {\n position: relative;\n width: 65%\n}\n\n.menuWrap {\n float: right;\n z-index: 1\n}\n\n.menuWrap ul {\n margin: 0;\n padding: 17px 0 0\n}\n\n.menuWrap ul li {\n float: left;\n list-style: none;\n margin: 0;\n padding: 0\n}\n\n.menuWrap ul li a {\n color: rgba(255, 255, 255, .54);\n padding: 7px 0 7px 10px;\n font-size: 11px;\n display: inline-block\n}\n\n.menuWrap ul li a:hover {\n color: #fff\n}\n\n#branding {\n float: left;\n width: 93px;\n height: 60px;\n min-height: 0;\n background: url(images/nyris_logo.png) 50% 50% no-repeat;\n overflow: hidden;\n text-indent: -99999px;\n transition: all .2s ease\n}\n\n.resultsActive #branding {\n opacity: .54\n}\n\n.dragAndDropActionArea {\n height: 90vh;\n padding-bottom: 80px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-left: 35px;\n margin-top: 50px;\n}\n.dragAndDropActionArea:focus {\n outline: 0;\n}\n\n.contentWrap {\n -webkit-box-flex: 1;\n -ms-flex: 1 100%;\n flex: 1 100%;\n overflow: hidden\n}\n\n.uploadImage {\n min-height: 120px;\n border-radius: 12px;\n border: 4px dashed rgba(255, 255, 255, .12);\n padding: 12vh 0;\n text-align: center;\n font-size: 22px;\n color: rgba(251, 253, 254, .54);\n display: block;\n -webkit-transition: all .2s ease;\n transition: all .2s ease\n}\n\n@media only screen and (max-height: 610px) {\n .uploadImage {\n padding: 30px 0\n }\n}\n\n@media only screen and (max-width: 530px) {\n .uploadImage {\n padding: 10vh 0;\n border: 0;\n height: 70vh\n }\n}\n\n.uploadImage .smallText {\n font-size: 14px;\n color: rgba(251, 253, 254, .38);\n margin: 8px auto 17px\n}\n\n.fileIsHover .uploadImage {\n border: 4px dashed rgba(255, 255, 255, .38)\n}\n\n.mobileUploadHandler {\n position: absolute;\n width: 100%;\n display: block;\n top: 70px;\n right: 0;\n height: 100px;\n left: 0\n}\n\n.inputfile {\n width: .1px;\n height: .1px;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n z-index: -1\n}\n\n.useExampleImg {\n color: rgba(255, 255, 255, .38);\n font-size: 14px;\n margin-top: 30px\n}\n\n@media only screen and (max-width: 530px) {\n .fileIsHover .uploadImage {\n border: 0\n }\n\n .useExampleImg {\n position: absolute;\n bottom: -20px;\n width: 102%\n }\n}\n\n.useExampleImg .exampleImages {\n margin-top: 10px;\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n padding-bottom: 20px\n}\n\n.useExampleImg .exampleImages .exImagesWrap {\n white-space: nowrap\n}\n\n.useExampleImg .exampleImages img {\n opacity: .54;\n width: 86px;\n height: 86px;\n border-radius: 3px;\n margin-right: 4px;\n vertical-align: bottom\n}\n\n.useExampleImg .exampleImages img:hover {\n cursor: pointer;\n opacity: 1\n}\n\n.camIcon {\n margin-bottom: 15px\n}\n\n@media (pointer:fine) {\n .onMobile {\n display: none\n }\n}\n\n@media (pointer:none) or (pointer:coarse) {\n .onDesktop {\n display: none\n }\n}\n\n.tryDifferent .icIcon, .tryDifferent .textDesc {\n display: inline-block;\n vertical-align: top\n}\n\n.tryDifferent {\n position: absolute;\n bottom: 0px;\n left: 45%;\n transform: translateX(-50%);\n width: 18.5%;\n height: 90px;\n text-align: center;\n padding: 25px 15px;\n z-index: 9997;\n border-radius: 3px 3px 0 0;\n background: #4C8F9F;\n font-size: 14px;\n color: #fff;\n max-width: 240px;\n transition: bottom 500ms;\n}\n.tryDifferent.hidden {\n bottom: -80px;\n}\n\n@media only screen and (min-width: 900px) and (max-width: 1120px) {\n .tryDifferent {\n width: 23.5%\n }\n}\n\n@media only screen and (min-width: 750px) and (max-width: 900px) {\n .tryDifferent {\n width: 31.8%\n }\n}\n\n@media only screen and (min-width: 530px) and (max-width: 750px) {\n .tryDifferent {\n width: 48.5%\n }\n}\n\n@media only screen and (max-width: 530px) {\n .tryDifferent {\n width: 80%;\n margin-bottom: -13px;\n padding-top: 20px\n }\n}\n\n.tryDifferent .icIcon {\n width: 22px;\n height: 18px;\n background: url(images/ic_cam.svg) no-repeat;\n margin-right: 10px\n}\n\n.no-svg .tryDifferent .icIcon {\n background: url(images/ic_cam.png) no-repeat\n}\n\n.tryDifferent:hover {\n cursor: pointer\n}\n\n.resultsTitle {\n text-align: center;\n -webkit-transform: translateY(20px);\n -ms-transform: translateY(20px);\n transform: translateY(20px);\n margin-top: 3%\n}\n\n.results {\n position: relative;\n}\n.results.resultsActive {\n height: auto;\n min-height: 90vh;\n margin-top: 100px;\n}\n.hideResults{\n display: none;\n}\n\n.results .wrapper {\n max-width: -webkit-calc(1200px + 1.5%);\n max-width: calc(1200px + 1.5%);\n width: 97.5%;\n}\n\n@media only screen and (max-width: 530px) {\n .results .wrapper {\n width: 96%\n }\n}\n\n.results .loadingOverlay {\n padding: 30px;\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #e7eaee;\n z-index: 3;\n border-radius: 3px\n}\n\n@-webkit-keyframes spin {\n 0% {\n -webkit-transform: rotate(0);\n transform: rotate(0)\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg)\n }\n}\n\n@keyframes spin {\n 0% {\n -webkit-transform: rotate(0);\n transform: rotate(0)\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg)\n }\n}\n\n.results .loadingOverlay .loading {\n position: absolute;\n top: 150px;\n left: 50%;\n margin-left: -12px;\n margin-top: -12px;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n border: .25rem solid rgba(0, 0, 0, .12);\n border-top-color: rgba(3, 31, 43, .6);\n -webkit-animation: spin 1s infinite linear;\n animation: spin 1s infinite linear\n}\n\n.prdctItem {\n width: 18.5%;\n margin: 0 .75% 2%;\n float: left;\n background: #FBFDFE;\n border-radius: 3px;\n overflow: hidden;\n box-shadow: 0 1px 3px rgba(3, 31, 43, .2);\n font-size: 14px;\n line-height: 1.3\n}\n\n@media only screen and (min-width: 1120px) {\n .prdctItem:visible:nth-of-type(5n+6) {\n clear: both\n }\n}\n\n@media only screen and (min-width: 900px) and (max-width: 1120px) {\n .prdctItem {\n width: 23.5%;\n margin: 0 .75% 3%\n }\n\n .prdctItem:visible:nth-of-type(4n+5) {\n clear: both\n }\n}\n\n@media only screen and (min-width: 750px) and (max-width: 900px) {\n .prdctItem {\n width: 31.8%;\n margin: 0 .75% 3%\n }\n\n .prdctItem:visible:nth-of-type(3n+4) {\n clear: both\n }\n}\n\n@media only screen and (min-width: 530px) and (max-width: 750px) {\n .prdctItem {\n width: 48.5%;\n margin: 0 .75% 3%\n }\n\n .prdctItem:visible:nth-of-type(2n+3) {\n clear: both\n }\n}\n\n.prdctItem .prdctImg {\n position: relative;\n background: #fff;\n text-align: center;\n border-bottom: 1px solid rgba(3, 31, 43, .12)\n}\n\n@media only screen and (max-width: 530px) {\n .prdctItem {\n width: 100%;\n margin: 0 0 4%\n }\n\n .multipleProducts .prdctItem .prdctImg {\n float: left;\n width: 25%;\n border-bottom: 0\n }\n}\n\n.prdctItem .prdctImg:after {\n content: \"\";\n display: block;\n width: 100%;\n padding-bottom: 100%;\n position: relative\n}\n\n.prdctItem .prdctImg .imgWrap {\n position: absolute;\n top: 9%;\n right: 9%;\n bottom: 9%;\n left: 9%\n}\n\n.prdctItem .prdctImg img {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n max-width: 100%;\n max-height: 100%;\n margin: auto;\n vertical-align: middle\n}\n\n.prdctItem .prdctDetailsWrap {\n padding: 8% 9%\n}\n\n@media only screen and (max-width: 530px) {\n .multipleProducts .prdctItem .prdctDetailsWrap {\n float: left;\n width: 75%;\n padding: 4%;\n border-left: 1px solid rgba(3, 31, 43, .12)\n }\n\n .feedback {\n text-align: center\n }\n}\n\n.prdctItem .prdctDetailsWrap .prdctTitle {\n color: #031F2B\n}\n\n.prdctItem .prdctDetailsWrap .prdctMeta {\n margin: 10px 0\n}\n\n.prdctItem .prdctDetailsWrap .prdctMeta .prdctPrice {\n font-weight: 700;\n color: #031F2B\n}\n\n.prdctItem .prdctDetailsWrap .prdctShipping {\n margin-bottom: 10px\n}\n\n.prdctItem .prdctDetailsWrap .prdctShopLink {\n margin-top: 3px;\n display: inline-block;\n padding: 7px 10px 7px 30px;\n text-transform: uppercase;\n font-size: 13px;\n border-radius: 3px;\n background: url(images/ic_shopNowLight.svg) 10px 50% no-repeat #FBFDFE;\n border: 1px solid rgba(3, 31, 43, .12)\n}\n\n.no-svg .prdctItem .prdctDetailsWrap .prdctShopLink {\n background: url(images/ic_shopNowLight.png) 10px 50% no-repeat #FBFDFE\n}\n\n.prdctItem .prdctDetailsWrap .prdctShopLink:hover {\n background: url(images/ic_shopNow.svg) 10px 50% no-repeat #4C8F9F;\n border: 1px solid #4c8f9f;\n color: #FBFDFE\n}\n\n.no-svg .prdctItem .prdctDetailsWrap .prdctShopLink:hover {\n background: url(images/ic_shopNow.png) 10px 50% no-repeat #4C8F9F\n}\n\n@media only screen and (min-width: 530px) {\n .singleProduct .prdctItem {\n width: 50%;\n display: block;\n margin: 0 auto 4%;\n float: none;\n position: relative\n }\n\n .singleProduct .prdctItem .prdctImg {\n float: left;\n width: 50%;\n border-bottom: 0;\n border-right: 1px solid rgba(3, 31, 43, .12)\n }\n\n .singleProduct .prdctItem .prdctDetailsWrap {\n float: left;\n width: 50%;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 50%;\n padding: 4%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap\n }\n}\n\n.feedback .btn, .feedback .btn.primary {\n border: 1px solid rgba(251, 253, 254, .12)\n}\n\n.footnote .wrapper {\n padding: 30px 0 6px;\n font-size: 12px;\n color: rgba(3, 31, 43, .38);\n text-align: center\n}\n\n.footnote .wrapper a {\n color: rgba(3, 31, 43, .38);\n font-weight: 400\n}\n\n.footnote .wrapper a:hover {\n color: rgba(3, 31, 43, .54)\n}\n\n.feedback {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n transform: translateY(100%);\n opacity: 0;\n background: #031F2B;\n z-index: 9999;\n font-size: 14px;\n color: rgba(251, 253, 254, .54)\n}\n\n.feedback .wrapper {\n padding: 15px 0\n}\n\n.feedback p {\n display: inline-block;\n margin: 0 10px 0 0\n}\n\n@media only screen and (max-width: 530px) {\n .feedback p {\n display: block;\n margin-bottom: 15px\n }\n}\n\n.feedback .btn {\n min-width: 100px;\n padding: 10px 25px;\n display: inline-block;\n height: auto;\n margin: 0 4px\n}\n\n.feedback .btn.primary {\n background: 0 0;\n color: rgba(251, 253, 254, .54)\n}\n\n.feedback .btn.primary:hover {\n background: #4c8f9f;\n border: 1px solid rgba(251, 253, 254, 0);\n color: #fff\n}\n\n.feedback .btn.secondary {\n background: 0 0\n}\n\n.feedback .btn.secondary:hover {\n background: #E31B5D;\n border: 1px solid rgba(3, 31, 43, 0);\n color: #fff\n}\n\n.feedback .btn.dismiss {\n margin-top: 15px;\n color: rgba(251, 253, 254, .54)\n}\n\n.feedback .btn.dismiss:hover {\n background: #4c8f9f;\n border: 1px solid rgba(251, 253, 254, 0);\n color: #fff\n}\n\n.feedback .btn:hover {\n cursor: pointer\n}\n\n.feedback .closeFeedbackContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0\n}\n\n.feedback .closeFeedbackContainer .closeFeedback {\n position: absolute;\n right: 15px;\n top: 50%;\n -webkit-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n transform: translateY(-50%);\n width: 30px;\n height: 30px;\n background: url(images/ic_close_feedback.svg) 50% 50% no-repeat;\n float: right;\n opacity: .38;\n -webkit-transition: all .2s ease;\n transition: all .2s ease\n}\n\n.feedback .closeFeedbackContainer .closeFeedback:hover {\n cursor: pointer;\n opacity: 1\n}\n\n.feedback .feedbackMessage {\n font-size: 17px;\n text-align: center;\n max-width: 80%;\n margin: 15px auto;\n}\n\n@media only screen and (max-width: 530px) {\n .feedback .closeFeedbackContainer .closeFeedback {\n width: 18px;\n top: 10px;\n -webkit-transform: translateY(0);\n -ms-transform: translateY(0);\n transform: translateY(0)\n }\n\n .feedback .feedbackMessage {\n max-width: 95%\n }\n}\n\n.feedback .feedbackMessage span, .feedback .feedbackMessage.positive {\n color: #4C8F9F\n}\n\n.negativeFeedback .feedback .feedbackMessage.negative, .positiveFeedback .feedback .feedbackMessage.positive {\n display: block\n}\n\n.noscript, .oldBrowserHint {\n display: none;\n text-align: center;\n padding: 20% 5%;\n position: fixed;\n z-index: 9999;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n color: #fff;\n background: #031F2B\n}\n\n.no-borderradius .oldBrowserHint, .no-opacity .oldBrowserHint {\n display: block\n}\n\n.prdctTitle {\n text-overflow: ellipsis;\n overflow: hidden;\n height: 1.3em;\n line-height: 1.3em;\n white-space: nowrap;\n max-width: 100%;\n}\n\n.prdctTitle {\n text-overflow: ellipsis;\n overflow: hidden;\n height: 1.3em;\n line-height: 1.3em;\n white-space: nowrap;\n max-width: 100%;\n}\n\n.prdctMeta {\n text-overflow: ellipsis;\n overflow: hidden;\n height: 1.2em;\n line-height: 1.2em;\n white-space: nowrap;\n max-width: 100%;\n}\n\n.singleProduct .prdctTitle {\n height: auto;\n white-space: normal;\n}\n\n.errorMsg {\n color: red;\n background-color: #4f4f4f;\n border-radius: 10px;\n margin: auto;\n padding: 0.2em;\n text-align: center;\n}\n\n.preview {\n z-index: 4;\n}\n\n.preview .jcrop-holder {\n display: inline-block;\n}\n\n.preview .circle {\n display: block;\n border-radius: 50%;\n width: 18px;\n height: 18px;\n transform: translate(-9px, -9px);\n background-color: white;\n border: 6px solid #4C8F9F;\n position: absolute;\n z-index: 4000;\n}\n\n.preview .circle span {\n position: absolute;\n background: rgba(0, 0, 0, 0.7);\n color: #FFFFFF;\n font-family: monospace;\n font-size: 10px;\n white-space: nowrap;\n}\n\n.preview .circle:hover {\n border-color: #5ed6e6;\n z-index: 4001;\n}\n\n.preview .circle:hover span {\n color: green;\n}\n\n@media only screen and (max-width: 500px) {\n .feedback {\n font-size: 10px;\n }\n}\n\n.noResults {\n color: #999999;\n font-size: 3em;\n text-align: center;\n cursor: default;\n}\n\n.selection_mask {\n background-color: rgba(0, 0, 0, 0.5);\n position: absolute;\n}\n\n.selection_rect {\n position: absolute;\n background: linear-gradient(90deg, black 50%, white 50%),\n linear-gradient(0deg, black 50%, white 50%),\n linear-gradient(90deg, black 50%, white 50%),\n linear-gradient(0deg, black 50%, white 50%);\n background-repeat: repeat-x, repeat-y, repeat-x, repeat-y;\n background-size: 15px 2px, 2px 15px, 15px 2px, 2px 15px;\n background-position: left top, right top, left bottom, left top;\n animation: border-dance 8s infinite linear;\n}\n.selection_grip {\n position: absolute;\n background: rgba(0,0,0,0.2);\n width: 40px;\n height: 40px;\n}\n.selection_grip:hover {\n transition: background-color 100ms;\n position: absolute;\n background-color: rgba(0,0,0,0.5);\n}\n.selection_grip.tl {\n border-top: 5px solid black;\n border-left: 5px solid black;\n}\n.selection_grip.tr {\n border-top: 5px solid black;\n border-right: 5px solid black;\n}\n.selection_grip.bl {\n border-bottom: 5px solid black;\n border-left: 5px solid black;\n}\n.selection_grip.br {\n border-bottom: 5px solid black;\n border-right: 5px solid black;\n}\n\n@keyframes border-dance {\n 0% {\n background-position: left top, right top, right bottom, left bottom;\n }\n 100% {\n background-position: right top, right bottom, left bottom, left top;\n }\n}\n#header {\n width: 100%;\n height: 60px;\n background-color: #031F2B;\n border-bottom: 1px solid #eee;;\n}\n.sideBelow {\n width: 100%;\n height: 100%;\n background-color: #031F2B;\n}\n.wrapperBody {\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n\n -webkit-flex-flow: row nowrap;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n \n padding: 0;\n background: #031F2B;\n \n -ms-flex-pack: justify;\n height: calc( 100vh - 60px);\n}\n.sidebar {\n order: 0;\n \n display: block;\n padding: 0;\n margin: 0;\n background: #bbb;\n \n -webkit-flex: 0 0 329px;\n -ms-flex: 0 0 329px;\n flex: 0 0 240px;\n border-right: 1px solid #eee;\n width: 25%;\n}\n.mainContent{\n width: calc(100vh-230);\n flex: 0 0 900px;\n flex-grow: 1;\n}\n.sidebarContent {\n height: 100%;\n background: #031F2B;\n /* margin: 10px;\n border: 1px solid #dfdfdf; */\n color: white;\n}\n.sidebarHeader{\n display: flex;\n align-items: center;\n padding: 16px;\n }\n .sidebar-icon{\n width: 1.25em;\n height: 1.25em;\n margin-right: 16px;\n cursor: pointer;\n user-select: none;\n float: right;\n\n }\n .sidebar-logo{\n font-size: 16px;\n float: left;\n color: white;\n margin-top: 27px;\n }\n .Sidebar-items{\n display: flex;\n flex-direction: column;\n padding: 0 8px;\n }\n \n .Sidebar-items .item:hover{\n background-color: rgba(246, 242, 242, 0.1);\n \n }\n .Sidebar-items .item{\n display: flex;\n align-items: center;\n padding: 16px 8px;\n border-radius: 5px;\n transition: background-color 0.2s;\n cursor: pointer;\n }\n .sidebar .collapsed{\n width: 20px;\n\n }\n .sidebar .collapsed .sidebar-icon{\n margin-right: 0;\n }\n \n.collapsedHide {\n display: none;\n }\n .sidebar-text{\n color: white;\n }\n\n .itemLabel{\n padding-left: 10px;\n }\n#catlist a { display: inline-block; padding: 10px; border-radius: 10px; }\n#catlist a:hover { background-color: white; }\n#catlist a.selected { background-color: #444; color: #ddd; }"]}
|