(\n \n)\n\nexport const IconCheck = () => (\n \n)\n\nexport const IconFolder = () => (\n \n)\n\nexport const IconFile = () => (\n \n)\n\nexport const IconChevronLeft = () => (\n \n)\n\nexport const IconChevronRight = () => (\n \n)\n\nexport const IconChevronDown = () => (\n \n)\n\nexport const IconChevronUp = () => (\n \n)\n\nexport const IconGithub = () => (\n \n)\n\nexport const IconList = () => (\n \n)\n\nexport const IconPlus = () => (\n \n)\n\nexport const IconSearch = () => (\n \n)\n\nexport const IconTimes = () => (\n \n)\n\nexport const IconTwitter = () => (\n \n)\n\nexport const IconHelp = () => (\n \n)\n\nexport const IconFeedBack = () => (\n \n)\n\nexport const IconCloudTookit = () => (\n \n)\n\nexport const IconInitialzrTutorial = () => (\n \n)\nexport const IconHot = () => (\n\n)","import PropTypes from 'prop-types'\nimport React from 'react'\n\nfunction Radio({ handler, value, disabled, error, checked, text }) {\n const onClick = event => {\n event.preventDefault()\n handler(value)\n }\n if (disabled || error) {\n return (\n \n {text}\n \n )\n }\n return (\n \n {text}\n \n )\n}\n\nRadio.defaultProps = {\n disabled: false,\n error: false,\n}\n\nRadio.propTypes = {\n checked: PropTypes.bool.isRequired,\n text: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n handler: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n}\n\nexport default Radio\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport Radio from './Radio'\n\nfunction RadioGroup({ onChange, options, error, selected, disabled }) {\n const onChangeHandler = value => {\n if (onChange) {\n onChange(value)\n }\n }\n const allOptions = options.map(option => {\n return (\n \n )\n })\n if (error) {\n allOptions.push(\n \n )\n }\n return {allOptions}
\n}\n\nRadioGroup.defaultProps = {\n selected: '',\n error: null,\n onChange: null,\n disabled: false,\n options: {\n error: '',\n },\n}\n\nRadioGroup.propTypes = {\n selected: PropTypes.string,\n error: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })\n ),\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n}\n\nexport default RadioGroup\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst Switch = ({ id, isOn, onChange }) => {\n return (\n \n \n {/* eslint-disable-next-line */}\n \n \n )\n}\n\nSwitch.defaultProps = {\n isOn: false,\n onChange: null,\n}\n\nSwitch.propTypes = {\n isOn: PropTypes.bool,\n onChange: PropTypes.func,\n}\n\nexport default Switch\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nfunction Placeholder({ type, count, width }) {\n if (type === 'radios') {\n const options = Array.from({ length: count }, (item, i) => {\n const id = `p${i}`\n return \n })\n return {options}\n }\n if (type === 'input') {\n return \n }\n if (type === 'dropdown') {\n return \n }\n if (type === 'text') {\n return \n }\n if (type === 'button') {\n return \n }\n if (type === 'tabs') {\n const options = Array.from({ length: count }, (item, i) => {\n return \n })\n return (\n \n {options}\n \n )\n }\n return ''\n}\n\nPlaceholder.defaultProps = {\n width: '150px',\n type: 'radios',\n count: 3,\n}\n\nPlaceholder.propTypes = {\n type: PropTypes.string,\n count: PropTypes.number,\n width: PropTypes.string,\n}\n\nexport default Placeholder\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst Form = ({ onSubmit, children }) => (\n \n)\n\nForm.defaultProps = {\n children: null,\n}\n\nForm.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n children: PropTypes.node,\n}\n\nexport default Form\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nfunction Button({ id, onClick, children, variant, hotkey }) {\n return (\n \n )\n}\n\nButton.defaultProps = {\n onClick: null,\n children: null,\n variant: '',\n hotkey: '',\n}\n\nButton.propTypes = {\n id: PropTypes.string.isRequired,\n variant: PropTypes.string,\n hotkey: PropTypes.string,\n onClick: PropTypes.func,\n children: PropTypes.node,\n}\n\nexport default Button\n","import get from 'lodash.get'\nimport querystring from 'querystring'\nimport set from 'lodash.set'\n\nimport Extend from '../../Extend.json'\nimport {isInRange, parseReleases, parseVersion} from './Version'\n\nconst PROPERTIES_MAPPING_URL = {\n type: 'project',\n language: 'language',\n architecture: 'architecture',\n platformVersion: 'boot',\n packaging: 'meta.packaging',\n jvmVersion: 'meta.java',\n groupId: 'meta.group',\n artifactId: 'meta.artifact',\n name: 'meta.name',\n description: 'meta.description',\n packageName: 'meta.packageName',\n dependencies: 'dependencies',\n}\n\nexport const getInfo = function getInfo(url) {\n return new Promise((resolve, reject) => {\n fetch(`${url}`, {\n method: 'GET',\n headers: {\n Accept: 'application/vnd.initializr.v2.1+json',\n },\n })\n .then(\n response => response.json(),\n () => {\n reject()\n return null\n }\n )\n .then(data => {\n if (data) {\n resolve(data)\n }\n })\n })\n}\n\nexport const getShareUrl = values => {\n const props = {}\n Object.keys(PROPERTIES_MAPPING_URL).forEach(key => {\n const key2 = get(PROPERTIES_MAPPING_URL, key)\n const value = get(values, key2)\n if (key !== 'dependencies') {\n set(props, key, value)\n }\n })\n let params = `${querystring.stringify(props)}`\n if (get(values, 'dependencies', []).length > 0) {\n params = `${params}&dependencies=${get(values, 'dependencies').join(',')}`\n }\n return params\n}\n\nexport const isValidParams = params => {\n return (\n Object.keys(params)\n .map(entry => {\n return !!get(PROPERTIES_MAPPING_URL, entry, null)\n })\n .filter(item => !!item).length > 0\n )\n}\n\nexport const parseParams = (values, queryParams, lists) => {\n const errors = {}\n const warnings = {}\n if (isValidParams(queryParams)) {\n Object.keys(queryParams).forEach(entry => {\n const key = get(PROPERTIES_MAPPING_URL, entry)\n if (key) {\n const value = get(queryParams, entry, '').toLowerCase()\n switch (key) {\n case 'project':\n case 'language':\n case 'architecture':\n case 'meta.packaging':\n case 'meta.java': {\n const list = get(lists, key, [])\n const res = list.find(a => a.key.toLowerCase() === value)\n if (res) {\n set(values, key, res.key)\n } else {\n const currentValue = list.find(\n a => a.key.toLowerCase() === get(values, key)\n )\n set(warnings, key, {\n value: get(queryParams, entry, ''),\n select: currentValue.text,\n })\n }\n break\n }\n case 'boot': {\n const list = get(lists, key, [])\n const res = list.find(a => a.key.toLowerCase() === value)\n let error = false\n if (res) {\n set(values, key, res.key)\n } else {\n error = true\n let versionMajor = value\n if (versionMajor.indexOf('.x') === -1) {\n versionMajor = get(parseVersion(versionMajor), 'major', '')\n }\n if (versionMajor.indexOf('.x') > -1) {\n const releases = parseReleases(list).filter(\n release =>\n release.major.toLowerCase() === versionMajor.toLowerCase()\n )\n if (releases.length > 0) {\n const release = releases.reduce((p, c) => {\n if (p.qualify > c.qualify) {\n return p\n }\n if (p.qualify === c.qualify) {\n if (p.minor > c.minor) {\n return p\n }\n }\n return c\n }, releases[0])\n\n if (release) {\n error = false\n set(values, key, release.version)\n const currentValue = list.find(\n a => a.key.toLowerCase() === release.version.toLowerCase()\n )\n set(warnings, key, {\n value: get(queryParams, entry, ''),\n select: currentValue.text,\n })\n }\n }\n }\n }\n if (error) {\n set(errors, 'boot', {\n value: get(queryParams, entry, ''),\n })\n }\n break\n }\n case 'dependencies': {\n const depsWarning = []\n const newVal = value\n .split(',')\n .map(item => {\n const dep = get(lists, 'dependencies').find(\n d => d.id === item.trim()\n )\n if (dep) {\n return dep.id\n }\n depsWarning.push(item)\n return null\n })\n .filter(item => !!item)\n\n if (depsWarning.length > 0) {\n set(warnings, key, {\n value: depsWarning.join(', '),\n })\n }\n set(values, key, newVal)\n break\n }\n default:\n set(values, key, get(queryParams, entry, ''))\n }\n }\n })\n }\n return {\n values,\n errors,\n warnings,\n }\n}\n\nexport const getLists = json => {\n const deps = []\n get(json, 'dependencies.values', []).forEach(group => {\n group.values.forEach(item => {\n const extend = Extend.find(it => it.id === get(item, 'id', ''))\n const val = {\n id: `${get(item, 'id', '')}`,\n name: `${get(item, 'name', '')}`,\n group: `${group.name}`,\n description: `${get(item, 'description', '')}`,\n versionRange: `${get(item, 'versionRange', '')}`,\n versionRequirement: `${get(item, 'versionRange', '')}`,\n weight: get(extend, 'weight', 50),\n }\n deps.push(val)\n })\n })\n return {\n project: get(json, 'type.values', [])\n .filter(type => type.action === '/starter.zip')\n .map(type => ({\n key: `${type.id}`,\n text: `${type.name}`,\n })),\n language: get(json, 'language.values', []).map(language => ({\n key: `${language.id}`,\n text: `${language.name}`,\n })),\n architecture: get(json, 'architecture.values', []).map(architecture => ({\n key: `${architecture.id}`,\n text: `${architecture.name}`,\n dependencies: get(architecture, 'dependOn', []),\n })),\n boot: get(json, 'bootVersion.values', []).map(boot => ({\n key: `${boot.id}`,\n text: `${boot.name}`,\n })),\n meta: {\n java: get(json, 'javaVersion.values', []).map(java => ({\n key: `${java.id}`,\n text: `${java.name}`,\n })),\n packaging: get(json, 'packaging.values', []).map(packaging => ({\n key: `${packaging.id}`,\n text: `${packaging.name}`,\n })),\n },\n dependencies: deps,\n }\n}\n\nexport const getDefaultValues = json => {\n return {\n project: get(json, 'type.default'),\n language: get(json, 'language.default'),\n architecture: get(json, 'architecture.default'),\n boot: get(json, 'bootVersion.default'),\n meta: {\n name: get(json, 'name.default'),\n group: get(json, 'groupId.default'),\n artifact: get(json, 'artifactId.default'),\n description: get(json, 'description.default'),\n packaging: get(json, 'packaging.default'),\n packageName: get(json, 'packageName.default'),\n java: get(json, 'javaVersion.default'),\n },\n share: get(json, 'share.default'),\n dependencies: [],\n availableCount: [],\n }\n}\n\nexport const getConfig = json => {\n return {\n lists: getLists(json),\n defaultValues: getDefaultValues(json),\n }\n}\n\nexport const isValidDependency = function isValidDependency(boot, dependency) {\n if (!dependency) {\n return false\n }\n return get(dependency, 'versionRange')\n ? isInRange(boot, get(dependency, 'versionRange'))\n : true\n}\n\nexport const getQueryString = function getQueryString(values, config) {\n const params = querystring.stringify({\n type: get(values, 'project'),\n language: get(values, 'language'),\n architecture: get(values, 'architecture'),\n bootVersion: get(values, 'boot'),\n baseDir: get(values, 'meta.artifact'),\n groupId: get(values, 'meta.group'),\n artifactId: get(values, 'meta.artifact'),\n name: get(values, 'meta.name'),\n description: get(values, 'meta.description'),\n packageName: get(values, 'meta.packageName'),\n packaging: get(values, 'meta.packaging'),\n javaVersion: get(values, 'meta.java'),\n })\n let paramsDependencies = get(values, 'dependencies', [])\n .map(dependency => {\n const dep = config.find(it => it.id === dependency)\n return isValidDependency(get(values, 'boot'), dep) ? dependency : null\n })\n .filter(dep => !!dep)\n .join(',')\n if (paramsDependencies) {\n paramsDependencies = `&dependencies=${paramsDependencies}`\n }\n\n return `${params}${paramsDependencies}`\n}\n\nexport const getProject = function getProject(url, values, config) {\n return new Promise((resolve, reject) => {\n\n const paramsStr = getQueryString(values, config)\n\n fetch(`${url}?${paramsStr}`, {\n method: 'GET',\n }).then(\n response => {\n if (response.status === 200) {\n resolve(response.blob())\n return\n }\n reject()\n },\n () => {\n reject()\n }\n )\n })\n}\n","import {useState} from 'react'\n\nfunction getTheme() {\n const isDarkConfig =\n window.matchMedia &&\n window.matchMedia('(prefers-color-scheme: dark)').matches\n\n const theme = localStorage.getItem('springtheme')\n if (!theme) {\n return isDarkConfig ? 'dark' : 'light'\n }\n return theme\n}\n\nexport default function useTheme() {\n const [darkTheme] = useState(getTheme())\n return darkTheme\n}\n","import PropTypes from 'prop-types'\nimport get from 'lodash.get'\nimport set from 'lodash.set'\nimport React, {useReducer} from 'react'\n\nimport useTheme from '../utils/Theme'\nimport {isValidDependency} from '../utils/ApiUtils'\nimport {rangeToText} from '../utils/Version'\n\nexport const defaultAppContext = {\n more: false,\n complete: false,\n explore: false,\n share: false,\n fetch: false,\n tab: 'quicksearch',\n theme: 'light',\n language: 'zh',\n config: {},\n groupsOpened: [],\n dependencies: {\n list: [],\n groups: [],\n },\n}\n\nexport function reduceDependencies(boot, items) {\n const groups = []\n const list = []\n const getParent = (m, name) => {\n return m.find(item => item.group === name)\n }\n for (let i = 0; i < items.length; i += 1) {\n let message = ''\n const dep = items[i]\n let parent = getParent(groups, dep.group)\n if (!parent) {\n parent = {\n group: dep.group,\n items: [],\n }\n groups.push(parent)\n }\n const valid = isValidDependency(boot, dep)\n if (!valid) {\n message = `Requires Spring Boot ${rangeToText(\n get(dep, 'versionRequirement')\n )}.`\n }\n parent.items.push({ ...dep, valid, message })\n list.push({ ...dep, valid, message })\n }\n return {\n list,\n groups,\n }\n}\n\nexport function reducer(state, action) {\n switch (action.type) {\n case 'UPDATE': {\n const newState = { ...state }\n const keysContext = Object.keys(defaultAppContext)\n const keys = Object.keys(get(action, 'payload', {}))\n keys.map(key => {\n if (keysContext.indexOf(key) === -1) {\n throw Error('Error AppProvider, invalid paylaod field action')\n }\n const value = get(action, `payload.${key}`)\n set(newState, key, value)\n if (key === 'theme') {\n localStorage.setItem('springtheme', value)\n }\n return key\n })\n return newState\n }\n case 'TOGGLE_GROUP': {\n const id = get(action, 'payload.id')\n let groupsOpened = [...state.groupsOpened]\n if (groupsOpened.indexOf(id) > -1) {\n groupsOpened = [...groupsOpened.filter(g => g !== id)]\n } else {\n groupsOpened = [...groupsOpened, id]\n }\n return { ...state, groupsOpened }\n }\n case 'UPDATE_DEPENDENCIES': {\n const dependencies = reduceDependencies(\n get(action, 'payload.boot'),\n get(state, 'config.lists.dependencies')\n )\n return { ...state, dependencies }\n }\n case 'SHARE_UPDATE': {\n const share = get(action, 'payload.open', false)\n return { ...state, share }\n }\n case 'EXPLORE_UPDATE': {\n const explore = get(action, 'payload.open', false)\n return { ...state, explore }\n }\n case 'FETCH_UPDATE': {\n const fetch = get(action, 'payload.open', false)\n return { ...state, fetch }\n }\n case 'COMPLETE': {\n const json = get(action, 'payload', {})\n const dependencies = reduceDependencies(\n get(json, 'defaultValues.boot'),\n get(json, 'lists.dependencies')\n )\n return { ...state, complete: true, config: json, dependencies }\n }\n default:\n return state\n }\n}\n\nexport const AppContext = React.createContext({ ...defaultAppContext })\n\nexport function AppProvider({ children }) {\n const theme = useTheme()\n const [state, dispatch] = useReducer(reducer, { ...defaultAppContext, theme })\n return (\n \n {children}\n \n )\n}\n\nAppProvider.propTypes = {\n children: PropTypes.node.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport get from 'lodash.get'\nimport set from 'lodash.set'\nimport React, {useReducer} from 'react'\n\nimport {getShareUrl, parseParams} from '../utils/ApiUtils'\n\nexport const defaultInitializrContext = {\n values: {\n project: '',\n language: '',\n architecture: '',\n boot: '',\n meta: {\n name: '',\n group: '',\n artifact: '',\n description: '',\n packaging: '',\n packageName: '',\n java: '',\n },\n dependencies: [],\n share: [],\n },\n share: '',\n errors: {},\n warnings: {},\n}\n\nexport function reducer(state, action) {\n switch (action.type) {\n case 'COMPLETE': {\n const json = get(action, 'payload')\n const defaultValues = {\n ...get(json, 'defaultValues'),\n meta: get(json, 'defaultValues.meta'),\n }\n return {\n values: defaultValues,\n share: getShareUrl(defaultValues),\n errors: {},\n warnings: {},\n }\n }\n case 'UPDATE': {\n const changes = get(action, 'payload')\n let errors = { ...state.errors }\n let meta = { ...get(state, 'values.meta') }\n if (get(changes, 'meta')) {\n meta = { ...meta, ...get(changes, 'meta') }\n }\n if (get(changes, 'boot')) {\n const { boot, ...err } = errors\n errors = err\n }\n if (get(changes, 'meta.group')) {\n set(\n meta,\n 'packageName',\n `${get(meta, 'group')}.${get(meta, 'artifact')}`\n )\n }\n if (get(changes, 'meta.artifact')) {\n set(\n meta,\n 'packageName',\n `${get(meta, 'group')}.${get(meta, 'artifact')}`\n )\n set(meta, 'name', `${get(meta, 'artifact')}`)\n }\n const values = {\n ...get(state, 'values'),\n ...changes,\n meta,\n }\n return { ...state, values, share: getShareUrl(values), errors }\n }\n case 'LOAD': {\n const params = get(action, 'payload.params')\n const lists = get(action, 'payload.lists')\n const { values, errors, warnings } = parseParams(\n state.values,\n params,\n lists\n )\n return { ...state, values, errors, warnings, share: getShareUrl(values) }\n }\n case 'ADD_DEPENDENCY': {\n const dependency = get(action, 'payload.id')\n const values = { ...get(state, 'values') }\n if(get(values, 'dependencies', []).filter(item => item === dependency).length == 0){\n values.dependencies = [...get(values, 'dependencies'), dependency]\n }\n return { ...state, values, share: getShareUrl(values) }\n }\n case 'REMOVE_DEPENDENCY': {\n const dependency = get(action, 'payload.id')\n const values = { ...get(state, 'values') }\n values.dependencies = [\n ...get(values, 'dependencies').filter(dep => dep !== dependency),\n ]\n return { ...state, values, share: getShareUrl(values) }\n }\n case 'CLEAR_WARNINGS': {\n return { ...state, warnings: {} }\n }\n default:\n return state\n }\n}\n\nexport const InitializrContext = React.createContext({\n ...defaultInitializrContext,\n})\n\nexport function InitializrProvider({ children }) {\n const [state, dispatch] = useReducer(reducer, { ...defaultInitializrContext })\n return (\n \n {children}\n \n )\n}\n\nInitializrProvider.defaultProps = {\n children: null,\n}\n\nInitializrProvider.propTypes = {\n children: PropTypes.node,\n}\n","const strictRange = /\\[(.*),(.*)\\]/\nconst halfopenRightRange = /\\[(.*),(.*)\\)/\nconst halfopenLeftRange = /\\((.*),(.*)\\]/\nconst qualifiers = ['M', 'RC', 'BUILD-SNAPSHOT', 'RELEASE']\n\nexport const parseQualifier = version => {\n const qual = (version || '')\n .replace(/\\d+/g, '')\n .replace(/\\./g, ' ')\n .replace(/\\s/g, '')\n return qualifiers.indexOf(qual) > -1 ? qual : 'RELEASE'\n}\n\nexport const parseVersion = version => {\n const r = version.toString().split('.')\n if (r.length < 2) {\n return {\n version,\n }\n }\n return {\n version,\n short: `${r[0]}.${r[1]}.${r[2]}`,\n major: `${r[0]}.${r[1]}.x`,\n qualify: qualifiers.indexOf(parseQualifier(version)),\n minor: +r[2],\n }\n}\n\nexport const compare = (a, b) => {\n let result\n const versionA = a.split('.')\n const versionB = b.split('.')\n if (versionA.length === 3) {\n versionA[3] = ''\n }\n if (versionB.length === 3) {\n versionB[3] = ''\n }\n for (let i = 0; i < 3; i += 1) {\n result = parseInt(versionA[i], 10) - parseInt(versionB[i], 10)\n if (result !== 0) {\n return result\n }\n }\n const qualify = version => qualifiers.indexOf(parseQualifier(version))\n result = qualify(a) - qualify(b)\n if (result !== 0) {\n return result\n }\n return versionA[3].localeCompare(versionB[3])\n}\n\nexport const parseReleases = releases => {\n return releases.map(release => {\n const version = parseVersion(release.key)\n return version\n })\n}\n\nexport const isInRange = (version, range) => {\n if (!range) {\n return true\n }\n const strickMatch = range.match(strictRange)\n if (strickMatch) {\n return (\n compare(strickMatch[1], version) <= 0 &&\n compare(strickMatch[2], version) >= 0\n )\n }\n const horMatch = range.match(halfopenRightRange)\n if (horMatch) {\n return (\n compare(horMatch[1], version) <= 0 && compare(horMatch[2], version) > 0\n )\n }\n const holMatch = range.match(halfopenLeftRange)\n if (holMatch) {\n return (\n compare(holMatch[1], version) < 0 && compare(holMatch[2], version) >= 0\n )\n }\n return compare(range, version) <= 0\n}\n\nexport const rangeToText = range => {\n const strictMatch = range.match(strictRange)\n if (strictMatch) {\n return `>= ${strictMatch[1]} and <= ${strictMatch[2]}`\n }\n const horMatch = range.match(halfopenRightRange)\n if (horMatch) {\n return `>= ${horMatch[1]} and < ${horMatch[2]}`\n }\n const holMatch = range.match(halfopenLeftRange)\n if (holMatch) {\n return `> ${holMatch[1]} and <= ${holMatch[2]}`\n }\n return `>= ${range}`\n}\n\nexport const getValidDependencies = (boot, dependencies) => {\n return dependencies\n .map(dep => {\n const compatibility = dep.versionRange\n ? isInRange(boot, dep.versionRange)\n : true\n if (!compatibility) {\n return null\n }\n return dep\n })\n .filter(d => !!d)\n}\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport {IconTimes} from '../icons'\n\nconst Close = ({ onClose }) => (\n {\n event.preventDefault()\n if (onClose) {\n onClose()\n }\n }}\n >\n \n \n)\n\nClose.defaultProps = {\n onClose: null,\n}\n\nClose.propTypes = {\n onClose: PropTypes.func,\n}\n\nexport default Close\n","import {useState} from 'react'\n\nfunction getProperties() {\n return {\n symb:\n window.navigator.userAgent.toLowerCase().indexOf('mac') > -1\n ? '⌘'\n : 'Ctrl',\n origin: window.location.origin,\n pathname: window.location.pathname,\n }\n}\n\nexport default function useWindowsUtils() {\n const [symb] = useState(getProperties().symb)\n const [origin] = useState(getProperties().origin)\n const [pathname] = useState(getProperties().pathname)\n return { symb, origin, pathname }\n}\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./app.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../fonts/karla-v12-latin-regular.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../fonts/karla-v12-latin-regular.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../fonts/karla-v12-latin-regular.woff\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../fonts/karla-v12-latin-regular.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_4___ = require(\"../fonts/karla-v12-latin-regular.svg\");\nvar ___CSS_LOADER_URL_IMPORT_5___ = require(\"../fonts/karla-v12-latin-700.eot\");\nvar ___CSS_LOADER_URL_IMPORT_6___ = require(\"../fonts/karla-v12-latin-700.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_7___ = require(\"../fonts/karla-v12-latin-700.woff\");\nvar ___CSS_LOADER_URL_IMPORT_8___ = require(\"../fonts/karla-v12-latin-700.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_9___ = require(\"../fonts/karla-v12-latin-700.svg\");\nvar ___CSS_LOADER_URL_IMPORT_10___ = require(\"../fonts/karla-v8-latin-regular.eot\");\nvar ___CSS_LOADER_URL_IMPORT_11___ = require(\"../fonts/karla-v8-latin-regular.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_12___ = require(\"../fonts/karla-v8-latin-regular.woff\");\nvar ___CSS_LOADER_URL_IMPORT_13___ = require(\"../fonts/karla-v8-latin-regular.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_14___ = require(\"../fonts/karla-v8-latin-regular.svg\");\nvar ___CSS_LOADER_URL_IMPORT_15___ = require(\"../fonts/karla-v8-latin-700.eot\");\nvar ___CSS_LOADER_URL_IMPORT_16___ = require(\"../fonts/karla-v8-latin-700.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_17___ = require(\"../fonts/karla-v8-latin-700.woff\");\nvar ___CSS_LOADER_URL_IMPORT_18___ = require(\"../fonts/karla-v8-latin-700.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_19___ = require(\"../fonts/karla-v8-latin-700.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \"#Karla\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \"#Karla\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \"#Karla\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___, { hash: \"#Karla\" });\n// Module\nexports.push([module.id, \"@font-face{font-family:'Karla';font-style:normal;font-weight:400;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:local(\\\"\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format(\\\"svg\\\")}@font-face{font-family:'Karla';font-style:normal;font-weight:700;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \");src:local(\\\"\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \") format(\\\"svg\\\")}html,body{text-rendering:optimizeLegibility;height:100%}body{color:#222;padding:0;margin:0;font-size:15px;font-family:Karla,Arial,sans-serif;font-weight:400;font-style:normal;position:relative;line-height:32px;background-repeat:repeat-y;background-size:316px 1px;background-color:#fff}body.light{background:linear-gradient(to right, #ff6a00 4px, #f7f7f7 4px 316px, #fff 316px)}div{outline:none}@font-face{font-family:'Karla';font-style:normal;font-weight:400;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \") format(\\\"svg\\\")}@font-face{font-family:'Karla';font-style:normal;font-weight:700;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \") format(\\\"svg\\\")}.header{width:316px}.header h1.logo{width:280px;margin:0px 20px 0px 24px}.header h1.logo a{display:block;position:relative;padding:4px 0;color:#000;text-decoration:none;font-size:1.0rem;line-height:1.6rem;font-weight:normal;width:260px;outline:1px dotted transparent}.header h1.logo a span{display:block}.header h1.logo a span.title{display:block;font-size:1.6rem;font-weight:normal;margin-top:10px;letter-spacing:-1px}.header h1.logo a span.title strong{color:#ff6a00}.header h1.logo a svg{width:65px;height:65px;margin-left:-10px;position:absolute;left:0;color:#ff6a00}.header h1.logo a:focus{outline:1px dotted rgba(0,0,0,0.2)}.quick-links{position:absolute;top:10px;right:20px;width:1000px;text-align:right;list-style:none;margin:0px;padding:0px}.quick-links li{position:relative;display:inline-block}.quick-links li a{padding:8px;padding-left:28px;padding-right:4px;position:relative;color:#222;margin:0px 12px;text-decoration:none;cursor:pointer;outline:none;-webkit-transition:color .15s;-moz-transition:color .15s;-ms-transition:color .15s;-o-transition:color .15s;transition:color .15s}.quick-links li a svg{position:absolute;left:4px;top:8px;height:18px}.quick-links li a:hover{color:#ff6a00}.quick-links li a.dropdown{padding-right:8px}.quick-links li a.dropdown svg.icon-caret-down{position:relative;width:10px;top:3px;margin-left:6px}.quick-links ul.dropdown-menu{z-index:999;position:absolute;top:34px;right:0px;width:220px;box-shadow:rgba(0,0,0,0.2) 0px 4px 10px;text-align:left;background:white;padding:0px;margin:0px;list-style:none}.quick-links ul.dropdown-menu li{display:block}.quick-links ul.dropdown-menu li a{display:block;position:relative;color:#222;padding:4px 12px;margin:0px;text-decoration:none;-webkit-transition:background .15s;-moz-transition:background .15s;-ms-transition:background .15s;-o-transition:background .15s;transition:background .15s}.quick-links ul.dropdown-menu li a:hover{background:#e7f1f4}.quick-links .nav-anim-enter{opacity:0.01;transform:scale(0.95)}.quick-links .nav-anim-enter-active{opacity:1;transform:scale(1);transition:all 300ms}.quick-links .nav-anim-exit{opacity:1;transform:scale(1)}.quick-links .nav-anim-exit-active{opacity:0.01;transform:scale(0.95);transition:all 300ms}.quick-links .switch-language{position:relative;padding-left:32px;padding-right:20px}.quick-links .switch-language .switch{position:absolute;top:-3px;left:0}.quick-links .switch-mode{position:relative;padding-left:32px;padding-right:20px}.quick-links .switch-mode .switch{position:absolute;top:-3px;left:0}.quick-links .icon-cloud-tookit{width:25px;height:25px;top:4px;left:0px}.quick-links .icon-feedback{width:20px;height:20px}.footer{background:#f7f7f7;line-height:24px;padding:0 40px 8px 8px;font-weight:400;color:rgba(0,0,0,0.5);font-size:14px;letter-spacing:-0.5px;text-align:right;margin-left:8px}.footer .footer-container{padding:4px 0 0}.footer a{color:#0188ff;text-decoration:underline}.footer a:hover{text-decoration:none}.colset{display:flex;padding-right:8px}.colset .left{font-weight:700;width:280px;text-align:right;position:relative;padding:8px 32px 8px 0px;flex:0 0 280px}.colset .left.nopadding{padding:0;flex:0 0 310px;margin-left:6px}.colset .right{max-width:900px;padding:8px 0px 8px 32px;flex:2 1 0%;min-height:51px}.colset .right.nopadding{max-width:600px;margin-left:28px;flex:2 1 0%;padding:0px}.colset .right.right-md{max-width:500px;padding:8px 0px 8px 32px;flex:2 1 0%;min-height:187px}.dependencies-box{padding:8px 0 8px 32px;flex:2;max-width:900px;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.dependencies-box .colset-2{padding-top:20px}.dependencies-box.large{max-width:1200px}.colset-2{display:flex;min-height:300px}.colset-2 .column{flex:1 1 0%}.colset-2 .column+.column{padding-left:20px}.control{padding-top:8px}.control+.control{padding-top:16px}label{display:block;color:#706c69;font-size:14px;font-weight:lighter;line-height:17px}.dependencies label{padding:8px 0}.control-input{display:block;border:0;outline:none;border-bottom:3px solid #ebebeb;line-height:16px;font-family:Karla, sans-serif;font-size:15px;box-sizing:border-box;background-clip:padding-box;width:100%;padding:0.35rem 0 0.55rem;border-radius:0;background:#fff;-webkit-transition:border-color .15s;-moz-transition:border-color .15s;-ms-transition:border-color .15s;-o-transition:border-color .15s;transition:border-color .15s}.control-input:hover{border-color:#cbcbcb}.control-input:focus{border-color:#ff6a00}.button{display:inline-block;color:#222;padding:4px 32px;border:2px solid #f1f1f1;background-color:#f1f1f1;border-radius:4px;font-family:Karla, sans-serif;font-size:15px;font-weight:400;cursor:pointer;line-height:32px;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s;white-space:nowrap;text-decoration:none;outline:1px dotted transparent}.button:hover{border:2px solid #e4e4e4;background-color:#e4e4e4}.button:focus{outline:1px dotted rgba(0,0,0,0.2)}.button.primary{color:#fff;border:2px solid #ff6a00;background-color:#ff6a00;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.button.primary:hover{border:2px solid #e65f00;background-color:#e65f00}.button.blue{color:#fff;border:2px solid #3d96f7;background-color:#3d96f7;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.button.blue:hover{border:2px solid #3391f7;background-color:#3391f7}.button+.button{margin-left:6px}.control-error{padding:16px 0}.control-error p{padding:0;margin:0;line-height:24px}.control-error p a{color:#0188ff;text-decoration:underline}.control-error p a:hover{text-decoration:none}.control-error .title{color:#f30808}.control-warning{padding:6px 0;color:#eb4200}.control-warning a{color:#0188ff;text-decoration:underline}.control-warning a:hover{text-decoration:none}.sticky{position:sticky;bottom:0px;z-index:100}.see-all{position:absolute;top:38px;right:35px;font-weight:400;width:80px;height:22px;line-height:22px;cursor:pointer;text-decoration:underline;color:#097dff;outline:1px dotted transparent}.see-all:focus{outline:1px dotted rgba(0,0,0,0.2)}.submit{bottom:0px;width:auto;background:white;height:36px;padding:18px 0 29px;margin-right:12px;border-top:1px solid #ccc}.colset-submit .right.nopadding{max-width:100%;background:white;margin-left:0;padding-left:28px;max-width:1212px}.radio{display:inline-block;border-bottom:3px solid #e4e4e4;text-decoration:none;color:#888;line-height:32px;padding:0 16px;text-align:center;font-weight:700;cursor:pointer;margin-right:4px;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s;outline:1px dotted transparent}.radio:focus{outline:1px dotted rgba(0,0,0,0.2)}.radio:hover{border-color:#cbcbcb;color:#222}.radio.checked{border-bottom-color:#ff6a00;color:#000}.radio.err{color:#8e1313;background:#fbe5e5;border-bottom-color:#d60000;cursor:not-allowed}.dependencies-list,ul.dependencies-list{list-style:none;padding:0;margin:0}.dependencies-list .dependency-item,ul.dependencies-list .dependency-item{position:relative;display:block;text-decoration:none;padding:16px;padding-right:60px;color:rgba(34,34,34,0.8);background:#f7f7f7;cursor:pointer;font-size:14px;display:flex;align-items:center;line-height:24px}.dependencies-list .dependency-item:focus,ul.dependencies-list .dependency-item:focus{outline:1px dotted rgba(0,0,0,0.2)}.dependencies-list .dependency-item strong,ul.dependencies-list .dependency-item strong{color:#222}.dependencies-list .dependency-item input,ul.dependencies-list .dependency-item input{display:none}.dependencies-list .dependency-item div,ul.dependencies-list .dependency-item div{padding:0;margin:0}.dependencies-list .dependency-item span,ul.dependencies-list .dependency-item span{font-size:13px}.dependencies-list .dependency-item .icon,ul.dependencies-list .dependency-item .icon{position:absolute;display:block;border:2px solid #e4e4e4;height:24px;width:24px;margin-top:-12px;top:50%;right:16px;border-radius:14px;color:#222}.dependencies-list .dependency-item .icon-times,.dependencies-list .dependency-item .icon-check,.dependencies-list .dependency-item .icon-plus,ul.dependencies-list .dependency-item .icon-times,ul.dependencies-list .dependency-item .icon-check,ul.dependencies-list .dependency-item .icon-plus{display:block;opacity:0;width:12px;margin:0 auto;position:absolute;top:5px;left:6px}.dependencies-list .dependency-item .icon-times,ul.dependencies-list .dependency-item .icon-times{left:7px;width:10px;color:#d20000}.dependencies-list .dependency-item .icon-check,ul.dependencies-list .dependency-item .icon-check{top:6px}.dependencies-list .dependency-item.selected,ul.dependencies-list .dependency-item.selected{background:#e7f1f4}.dependencies-list .dependency-item.selected .icon,ul.dependencies-list .dependency-item.selected .icon{border-color:rgba(161,200,212,0.6);color:#356574}.dependencies-list .dependency-item.selected .icon-plus,ul.dependencies-list .dependency-item.selected .icon-plus{opacity:1}.dependencies-list .dependency-item.checked,.dependencies-list .dependency-item .selected,ul.dependencies-list .dependency-item.checked,ul.dependencies-list .dependency-item .selected{background:white;box-shadow:0 2px 3px 1px rgba(0,0,0,0.1)}.dependencies-list .dependency-item.checked .icon,.dependencies-list .dependency-item .selected .icon,ul.dependencies-list .dependency-item.checked .icon,ul.dependencies-list .dependency-item .selected .icon{border-color:rgba(0,0,0,0.1);color:#ff6a00}.dependencies-list .dependency-item.checked .icon-check,.dependencies-list .dependency-item .selected .icon-check,ul.dependencies-list .dependency-item.checked .icon-check,ul.dependencies-list .dependency-item .selected .icon-check{opacity:1}.dependencies-list .dependency-item.checked:hover .icon-plus,ul.dependencies-list .dependency-item.checked:hover .icon-plus{opacity:0}.dependencies-list .dependency-item.checked:hover .icon-check,ul.dependencies-list .dependency-item.checked:hover .icon-check{opacity:0}.dependencies-list .dependency-item.checked:hover .icon-times,ul.dependencies-list .dependency-item.checked:hover .icon-times{opacity:1}.dependencies-list .dependency-item.invalid,.dependencies-list .dependency-item.checked.invalid,ul.dependencies-list .dependency-item.invalid,ul.dependencies-list .dependency-item.checked.invalid{opacity:0.6;cursor:not-allowed;background:#f7f7f7}.dependencies-list .dependency-item.invalid:hover,.dependencies-list .dependency-item.checked.invalid:hover,ul.dependencies-list .dependency-item.invalid:hover,ul.dependencies-list .dependency-item.checked.invalid:hover{background:#f7f7f7}.dependencies-list .dependency-item.invalid .warning,.dependencies-list .dependency-item.checked.invalid .warning,ul.dependencies-list .dependency-item.invalid .warning,ul.dependencies-list .dependency-item.checked.invalid .warning{color:#f30808}.dependencies-list .dependency-item.invalid .icon,ul.dependencies-list .dependency-item.invalid .icon{display:none}.dependencies-list .dependency-item.checked.invalid,ul.dependencies-list .dependency-item.checked.invalid{cursor:pointer}.dependencies-list .dependency-item.checked.invalid .icon,ul.dependencies-list .dependency-item.checked.invalid .icon{display:block}.dependencies-list .dependency-item.checked.invalid .icon-check,ul.dependencies-list .dependency-item.checked.invalid .icon-check{opacity:0}.dependencies-list .dependency-item.checked.invalid .icon-times,ul.dependencies-list .dependency-item.checked.invalid .icon-times{opacity:1}.dependencies-list.dependencies-list-checked .dependency-item-span,ul.dependencies-list.dependencies-list-checked .dependency-item-span{padding:6px 0}.dependencies-list.dependencies-list-checked .dependency-item-span>a,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a{position:relative;display:block;text-decoration:none;padding:16px;padding-right:60px;color:rgba(34,34,34,0.8);background:#f7f7f7;cursor:pointer;font-size:14px;display:flex;align-items:center;line-height:24px}.dependencies-list.dependencies-list-checked .dependency-item-span>a:focus,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a:focus{outline:1px dotted rgba(0,0,0,0.2)}.dependencies-list.dependencies-list-checked .dependency-item-span>a strong,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a strong{color:#222}.dependencies-list.dependencies-list-checked .dependency-item-span>a input,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a input{display:none}.dependencies-list.dependencies-list-checked .dependency-item-span>a div,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a div{padding:0;margin:0}.dependencies-list.dependencies-list-checked .dependency-item-span>a span,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a span{font-size:13px}.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon{position:absolute;display:block;border:2px solid #e4e4e4;height:24px;width:24px;margin-top:-12px;top:50%;right:16px;border-radius:14px;color:#222}.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-times,.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-check,.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-plus,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-times,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-check,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-plus{display:block;opacity:0;width:12px;margin:0 auto;position:absolute;top:5px;left:6px}.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-times,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-times{left:7px;width:10px;color:#d20000}.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-check,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .icon-check{top:6px}.dependencies-list.dependencies-list-checked .dependency-item-span>a.selected,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.selected{background:#e7f1f4}.dependencies-list.dependencies-list-checked .dependency-item-span>a.selected .icon,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.selected .icon{border-color:rgba(161,200,212,0.6);color:#356574}.dependencies-list.dependencies-list-checked .dependency-item-span>a.selected .icon-plus,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.selected .icon-plus{opacity:1}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked,.dependencies-list.dependencies-list-checked .dependency-item-span>a .selected,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .selected{background:white;box-shadow:0 2px 3px 1px rgba(0,0,0,0.1)}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked .icon,.dependencies-list.dependencies-list-checked .dependency-item-span>a .selected .icon,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked .icon,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .selected .icon{border-color:rgba(0,0,0,0.1);color:#ff6a00}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked .icon-check,.dependencies-list.dependencies-list-checked .dependency-item-span>a .selected .icon-check,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked .icon-check,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a .selected .icon-check{opacity:1}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked:hover .icon-plus,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked:hover .icon-plus{opacity:0}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked:hover .icon-check,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked:hover .icon-check{opacity:0}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked:hover .icon-times,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked:hover .icon-times{opacity:1}.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid,.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid{opacity:0.6;cursor:not-allowed;background:#f7f7f7}.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid:hover,.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid:hover,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid:hover,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid:hover{background:#f7f7f7}.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid .warning,.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .warning,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid .warning,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .warning{color:#f30808}.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid .icon,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.invalid .icon{display:none}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid{cursor:pointer}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .icon,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .icon{display:block}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .icon-check,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .icon-check{opacity:0}.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .icon-times,ul.dependencies-list.dependencies-list-checked .dependency-item-span>a.checked.invalid .icon-times{opacity:1}.dependencies-list .dependency-item-span,ul.dependencies-list .dependency-item-span{display:block;padding-top:4px}.dependencies-list li,ul.dependencies-list li{margin:0}.dependencies-list .fade-enter,ul.dependencies-list .fade-enter{max-height:0;opacity:0}.dependencies-list .fade-enter-active,ul.dependencies-list .fade-enter-active{max-height:200px;opacity:1;transition:all 250ms}.dependencies-list .fade-exit,ul.dependencies-list .fade-exit{max-height:200px;opacity:1}.dependencies-list .fade-exit-active,ul.dependencies-list .fade-exit-active{max-height:0;opacity:0;transition:all 250ms}.more{line-height:16px;padding-top:4px;margin-top:4px}.more div.wrap{border-bottom:3px solid #ebebeb;padding-bottom:4px}.more div.wrap a{position:relative;display:block;height:28px;line-height:28px;margin-top:4px;padding:0 16px 0 24px;color:#222;text-decoration:none;border-radius:4px;outline:1px dotted transparent;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.more div.wrap a:focus{outline:1px dotted rgba(0,0,0,0.2)}.more div.wrap a:hover{color:#222}.more div.wrap a:hover svg{color:#ff6a00}.more div.wrap a svg{position:absolute;width:8px;left:8px;top:8px;color:#222;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.more div.wrap a.toggle svg{transform:rotate(90deg)}.demos{line-height:16px}.demos div.wrap{border-bottom:3px solid #ebebeb;padding-bottom:4px}.demos div.wrap a{position:relative;display:block;height:28px;line-height:28px;padding:0 16px 0 24px;color:#222;text-decoration:none;border-radius:4px;outline:1px dotted transparent;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.demos div.wrap a:focus{outline:1px dotted rgba(0,0,0,0.2)}.demos div.wrap a:hover{color:#222}.demos div.wrap a:hover svg{color:#ff6a00}.demos div.wrap a svg{position:absolute;width:8px;left:8px;top:8px;color:#222;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.demos div.wrap a.toggle svg{transform:rotate(90deg)}.demos div.wrap a strong{float:right;font-weight:normal;background-color:#f7f7f7;padding:0 8px;margin-left:8px;border-radius:4px;line-height:24px;font-weight:bold;color:rgba(34,34,34,0.7)}.demos div.wrap a strong span{color:#222;padding:0px 3px 0px 3px}.panel{overflow:hidden;max-height:0;-webkit-transition:all .45s;-moz-transition:all .45s;-ms-transition:all .45s;-o-transition:all .45s;transition:all .45s}.panel.panel-active{max-height:600px}.panel .panel-wrap{border:1px solid #f5f5f5;border-top:0 none;padding:12px 24px;padding-bottom:24px}.casePanel{overflow:hidden;max-height:0;-webkit-transition:all .45s;-moz-transition:all .45s;-ms-transition:all .45s;-o-transition:all .45s;transition:all .45s}.casePanel.casePanel-active{max-height:600px}.casePanel .panel-wrap{border:1px solid #f5f5f5;border-top:0 none;padding:8px 16px}.groups{padding:0px 0px 16px 0}.groups .group{line-height:1.4rem;position:relative;padding-bottom:12px}.groups .group a{position:relative;display:block;text-decoration:none;padding:16px;padding-right:60px;color:rgba(34,34,34,0.8);background:#f7f7f7;cursor:pointer;font-size:14px;display:flex;align-items:center;line-height:24px}.groups .group a:focus{outline:1px dotted rgba(0,0,0,0.2)}.groups .group a strong{color:#222}.groups .group a input{display:none}.groups .group a div{padding:0;margin:0}.groups .group a span{font-size:13px}.groups .group a .icon{position:absolute;display:block;border:2px solid #e4e4e4;height:24px;width:24px;margin-top:-12px;top:50%;right:16px;border-radius:14px;color:#222}.groups .group a .icon-times,.groups .group a .icon-check,.groups .group a .icon-plus{display:block;opacity:0;width:12px;margin:0 auto;position:absolute;top:5px;left:6px}.groups .group a .icon-times{left:7px;width:10px;color:#d20000}.groups .group a .icon-check{top:6px}.groups .group a.selected{background:#e7f1f4}.groups .group a.selected .icon{border-color:rgba(161,200,212,0.6);color:#356574}.groups .group a.selected .icon-plus{opacity:1}.groups .group a.checked,.groups .group a .selected{background:white;box-shadow:0 2px 3px 1px rgba(0,0,0,0.1)}.groups .group a.checked .icon,.groups .group a .selected .icon{border-color:rgba(0,0,0,0.1);color:#ff6a00}.groups .group a.checked .icon-check,.groups .group a .selected .icon-check{opacity:1}.groups .group a.checked:hover .icon-plus{opacity:0}.groups .group a.checked:hover .icon-check{opacity:0}.groups .group a.checked:hover .icon-times{opacity:1}.groups .group a.invalid,.groups .group a.checked.invalid{opacity:0.6;cursor:not-allowed;background:#f7f7f7}.groups .group a.invalid:hover,.groups .group a.checked.invalid:hover{background:#f7f7f7}.groups .group a.invalid .warning,.groups .group a.checked.invalid .warning{color:#f30808}.groups .group a.invalid .icon{display:none}.groups .group a.checked.invalid{cursor:pointer}.groups .group a.checked.invalid .icon{display:block}.groups .group a.checked.invalid .icon-check{opacity:0}.groups .group a.checked.invalid .icon-times{opacity:1}.groups .group a:hover{background:#e7f1f4}.groups .group a:hover .icon{border-color:rgba(161,200,212,0.6);color:#15282e}.groups .group a:hover .icon-plus{opacity:1}.groups .group a.checked:hover{background:white}.groups .group a.checked:hover .icon{border-color:rgba(0,0,0,0.1)}.groups .group .group-title{border-bottom:1px solid #e4e4e4;font-weight:bold;margin-top:8px;cursor:pointer}.groups .group .group-title a{display:block;position:relative;margin:4px 0;padding:4px 0;padding-left:26px;line-height:22px;font-size:16px;background:white}.groups .group .group-title a:focus{outline:1px dotted rgba(0,0,0,0.2)}.groups .group .group-title a svg{position:absolute;top:8px;left:8px;width:8px;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.groups .group .group-title a.toggleGroupItems svg{transform:rotate(90deg)}.groups .group .group-title a:hover svg{color:#ff6a00}.groups .group:first-child{padding-top:8px}.groups div.group-items{padding-top:15px;display:grid;grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));grid-template-rows:repeat(auto-fill, minmax(85, 0.75fr));grid-gap:8px 10px}.search-label{padding-bottom:8px}.search-no-selected{color:rgba(0,0,0,0.4)}.search-more-warning,.search-no-result{padding:8px 0 16px;color:rgba(0,0,0,0.5)}.search-more-warning p,.search-no-result p{padding:0;margin:0;line-height:24px;padding-left:16px}.search-no-result p{padding-left:0}.sticky-label{padding-top:4px;position:sticky;top:0}.tab{position:sticky;top:0;z-index:90;background:white;padding:0 20px;margin:0 -20px;margin-bottom:10px}.tab .tab-container{border-bottom:3px solid #f3f3f3}.tab a{display:inline-block;margin-bottom:-3px;text-decoration:none;color:rgba(34,34,34,0.6);border-bottom:3px solid #f3f3f3;padding:15px 16px 11px;font-weight:bold;line-height:16px;outline:1px dotted transparent;-webkit-transition:all .15s;-moz-transition:all .15s;-ms-transition:all .15s;-o-transition:all .15s;transition:all .15s}.tab a:focus{outline:1px dotted rgba(0,0,0,0.2)}.tab a svg{width:16px}.tab a:hover{color:#222;border-bottom:3px solid #cbcbcb}.tab a.active{color:#222;border-bottom:3px solid #ff6a00}.tab a span{margin:0px 0px 0px 5px;vertical-align:top}.tab strong{float:right;font-weight:normal;background-color:#f7f7f7;padding:0 8px;border-radius:4px;line-height:24px;margin-top:6px;font-weight:bold;color:rgba(34,34,34,0.7)}.tab strong span{color:#222}.placeholder-radios .placeholder-radio{display:inline-block;height:32px;background:#f7f7f7;border-bottom:3px solid #e4e4e4;margin-right:4px}.placeholder-input{display:block;height:32px;background:#f7f7f7;border-bottom:3px solid #e4e4e4;position:relative;margin-top:15px}.placeholder-input:after{display:inline-block;content:' ';position:absolute;top:-15px;left:0;height:15px;background:#f7f7f7;width:70px}.placeholder-text{display:inline-block;height:14px;background:#f7f7f7}.placeholder-dropdown{display:block;margin-top:-3px;height:32px;background:#f7f7f7;border-bottom:3px solid #e4e4e4;position:relative}.placeholder-tabs{display:block;height:378px}.placeholder-tabs .placeholder-header{display:block;height:45px;border-bottom:3px solid #e4e4e4;position:relative}.placeholder-tabs .placeholder-tab{display:inline-block;height:45px;background:#f7f7f7;width:42px}.placeholder-button{display:inline-block;height:44px;background:#f7f7f7;position:relative;border-radius:4px}.placeholder-button+.placeholder-button{margin-left:6px}.warnings{position:relative;margin-bottom:8px;background:#fff0d0;padding:16px;color:#8f2500;line-height:26px;margin-top:-45px}.warnings .close{display:block;position:absolute;top:0;right:0;padding:12px 12px;height:28px;cursor:pointer;opacity:0.7;color:#8f2500}.warnings .close svg{width:14px}.warnings .close:hover{opacity:1}.warnings ul{padding:0;padding-left:20px;margin:0}.warnings li{padding:0;margin:0}.switch-checkbox{height:0;width:0;visibility:hidden;position:absolute}.switch-label{cursor:pointer;width:25px;height:16px;position:relative;display:inline-block}.switch-label::after{content:' ';width:25px;height:6px;background:rgba(0,0,0,0.2);position:absolute;top:0;left:0;z-index:1;border-radius:6px;top:5px}.switch-label .switch-button{content:'';z-index:2;position:absolute;top:0px;left:0;width:16px;height:16px;border-radius:16px;transition:0.2s left;background:#222}.switch-checkbox:checked+.switch-label .switch-button{left:9px;background:#222;width:16px}.switch-label:active .switch-button{width:16px}.Toastify__toast-container{z-index:9999;-webkit-transform:translate3d(0, 0, 9999px);position:fixed;padding:4px;width:400px;box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:1em;left:1em}.Toastify__toast-container--top-center{top:1em;left:50%;margin-left:-200px}.Toastify__toast-container--top-right{top:1em;right:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;margin-left:-200px}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width: 480px){.Toastify__toast-container{width:100vw;padding:0;left:0;margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:0}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:0}.Toastify__toast-container--rtl{right:0;left:initial}}.Toastify__toast{position:relative;min-height:64px;box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:1px;box-shadow:0 1px 10px 0 rgba(0,0,0,0.1),0 2px 15px 0 rgba(0,0,0,0.05);display:flex;justify-content:space-between;max-height:800px;overflow:hidden;font-family:sans-serif;cursor:pointer;direction:ltr}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--default{background:#fff;color:#aaa}.Toastify__toast--info{background:#3498db}.Toastify__toast--success{background:#ff6a00}.Toastify__toast--warning{background:#e8ba00}.Toastify__toast--error{background:#e74c3c}.Toastify__toast-body{margin:auto 0;flex:1}@media only screen and (max-width: 480px){.Toastify__toast{margin-bottom:0}}.Toastify__close-button{color:#fff;font-weight:bold;font-size:14px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:0.7;transition:0.3s ease;align-self:flex-start}.Toastify__close-button--default{color:#000;opacity:0.3}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}100%{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:9999;opacity:0.7;background-color:rgba(255,255,255,0.7);transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right}.Toastify__progress-bar--default{background:linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55)}@keyframes Toastify__bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(3000px, 0, 0)}60%{opacity:1;transform:translate3d(-25px, 0, 0)}75%{transform:translate3d(10px, 0, 0)}90%{transform:translate3d(-5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px, 0, 0)}to{opacity:0;transform:translate3d(2000px, 0, 0)}}@keyframes Toastify__bounceInLeft{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(-3000px, 0, 0)}60%{opacity:1;transform:translate3d(25px, 0, 0)}75%{transform:translate3d(-10px, 0, 0)}90%{transform:translate3d(5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px, 0, 0)}to{opacity:0;transform:translate3d(-2000px, 0, 0)}}@keyframes Toastify__bounceInUp{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(0, 3000px, 0)}60%{opacity:1;transform:translate3d(0, -20px, 0)}75%{transform:translate3d(0, 10px, 0)}90%{transform:translate3d(0, -5px, 0)}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;transform:translate3d(0, 20px, 0)}to{opacity:0;transform:translate3d(0, -2000px, 0)}}@keyframes Toastify__bounceInDown{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(0, -3000px, 0)}60%{opacity:1;transform:translate3d(0, 25px, 0)}75%{transform:translate3d(0, -10px, 0)}90%{transform:translate3d(0, 5px, 0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0, 10px, 0)}40%,45%{opacity:1;transform:translate3d(0, -20px, 0)}to{opacity:0;transform:translate3d(0, 2000px, 0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{from{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{from{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);opacity:1}to{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{from{transform:translate3d(110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInLeft{from{transform:translate3d(-110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInUp{from{transform:translate3d(0, 110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInDown{from{transform:translate3d(0, -110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideOutRight{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(110%, 0, 0)}}@keyframes Toastify__slideOutLeft{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(-110%, 0, 0)}}@keyframes Toastify__slideOutDown{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, 500px, 0)}}@keyframes Toastify__slideOutUp{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, -500px, 0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown}.Toastify__toast-container{line-height:22px}.Toastify__toast{padding:16px}.Toastify__toast{position:relative;min-height:32px;padding:12px}.Toastify__toast .toast-close{display:block;position:absolute;top:0;right:0;padding:6px 8px;height:28px;cursor:pointer;opacity:0;color:white}.Toastify__toast .toast-close svg{width:14px}.Toastify__toast:hover .toast-close{opacity:0.6}@media (max-width: 900px){.desktop-only{display:none}body,body.light{background:none;padding-bottom:94px;min-width:0}.colset{display:block;max-width:none;min-width:0;padding:16px}.colset .left{text-align:left;padding:0;max-width:none;min-width:0;flex:none}.colset .right{padding:0;max-width:none;min-width:0;flex:none}.colset .right.right-md{padding:0;max-width:none;width:auto;flex:0}.header{padding:0;border-top:4px solid #ff6a00;width:auto}.header h1.logo a{margin:0 auto}.quick-links{position:relative;text-align:center;display:block;top:0;right:0;border-top:1px solid #e4e4e4;border-bottom:1px solid #e4e4e4;background:#f7f7f7;padding:0.5rem 0;width:auto}.colset-2{display:block;flex-flow:wrap}.colset-2 .column{padding:0;margin:0;flex:none}.colset-2 .column+.column{margin:0;padding:0;padding-top:24px}.dependencies-box{padding:8px 0}.colset .left.nopadding{margin-left:0;padding:0px;flex:none;width:auto;text-align:center;display:none}.sticky .colset{padding:0}.colset .right.nopadding{padding:0;margin:0;max-width:none;min-width:0;flex:none}.colset .right.nopadding .submit{width:auto;text-align:center}.colset .right.nopadding .placeholder-button{margin:0 auto}.groups .group{padding-right:0;padding-left:0}.groups .group .group-title{position:relative;margin:0;float:none;top:0}.submit{margin-right:0}.tab{padding:0;margin:0}.error{position:relative;left:auto;top:auto;padding:0 40px}.warnings{margin-top:0}.button{padding:4px 18px}.share-area>.button,.share-area{width:90px}}body.dark{background-color:#1b1f23;background:linear-gradient(to right, #ff6a00 4px, #262a2d 4px 316px, #1b1f23 316px);color:#d1d2d3}body.dark .header h1.logo a{color:#fff}body.dark .header h1.logo a span.title strong{color:#ff6a00}body.dark .header h1.logo a svg{color:#ff6a00}body.dark .radio{color:#8d8f91;border-color:#323638}body.dark .radio:hover{color:#d1d2d3;border-color:#4a5053}body.dark .radio.checked{color:#fff;border-bottom-color:#ff6a00}body.dark .radio:hover{border-bottom-color:#ff6a00}body.dark .colset-submit .right.nopadding{background:#1b1f23}body.dark .submit{background:#1b1f23;border-color:#4a5053}body.dark .tab{background:#1b1f23}body.dark .tab .tab-container{border-color:#323638}body.dark .tab a{color:#8d8f91;border-color:#323638}body.dark .tab a:hover{color:#d1d2d3;border-bottom-color:#4a5053}body.dark .tab a.active{color:#fff;border-bottom-color:#ff6a00}body.dark .tab a.active:hover{border-bottom-color:#ff6a00}body.dark .control-input{background:#1b1f23;color:#fff;border-color:#323638}body.dark .control-input:hover{border-color:#4a5053}body.dark .control-input:focus{border-bottom-color:#ff6a00}body.dark .control-input:focus:hover{border-bottom-color:#ff6a00}body.dark .panel .panel-wrap{border-color:#323638}body.dark .casePanel .panel-wrap{border-color:#323638}body.dark .more div.wrap{border-color:#323638}body.dark .more div.wrap a{color:#d1d2d3}body.dark .more div.wrap a:hover{color:#d1d2d3}body.dark .more div.wrap a:hover svg{color:#ff6a00}body.dark .more div.wrap a svg{color:#d1d2d3}body.dark .demos div.wrap{border-color:#323638}body.dark .demos div.wrap a{color:#d1d2d3}body.dark .demos div.wrap a:hover{color:#d1d2d3}body.dark .demos div.wrap a:hover svg{color:#ff6a00}body.dark .demos div.wrap a svg{color:#d1d2d3}body.dark .demos div.wrap a strong{color:#8d8f91;background:#32373b}body.dark .demos div.wrap a strong span{color:#fff}body.dark .button{background:#262a2d;border-color:#262a2d;color:#fff}body.dark .button:hover{background:#32373b;border-color:#32373b}body.dark .button.primary{border-color:#ff6a00;background-color:#ff6a00}body.dark .button.primary:hover{border-color:#e65f00;background-color:#e65f00}body.dark .footer{background:#262a2d;color:#8d8f91}body.dark label{color:#494c4e}body.dark .search-no-selected{color:#d1d2d3}body.dark .groups .group a{background:#262a2d;color:#d1d2d3}body.dark .groups .group a strong{color:#fff}body.dark .groups .group a .icon{border:2px solid #4a5053;color:#d1d2d3}body.dark .groups .group a:hover{background:#32373b}body.dark .groups .group a:hover .icon{color:#d1d2d3}body.dark .groups .group .group-title{border-color:#323638}body.dark .groups .group .group-title a{background:#1b1f23}body.dark .quick-links li a{color:#d1d2d3}body.dark .quick-links li a:hover{color:#ff6a00}body.dark .groups .group a.invalid,body.dark .groups .group a.checked.invalid{background:#23282b}body.dark .groups .group a.invalid strong,body.dark .groups .group a.checked.invalid strong{color:#8d8f91}body.dark .groups .group a.invalid:hover,body.dark .groups .group a.checked.invalid:hover{background:#23282b}body.dark .groups .group a.checked,body.dark .groups .group a.selected{background:#363e44}body.dark .groups .group a.checked:hover,body.dark .groups .group a.selected:hover{background:#444e55}body.dark .groups .group a.checked .icon,body.dark .groups .group a .selected .icon{border-color:#4a5053}body.dark .groups .group a.checked .icon:hover,body.dark .groups .group a .selected .icon:hover{border-color:#4a5053}body.dark .groups .group a.checked:hover .icon,body.dark .groups .group a .selected:hover .icon{border-color:#626a6e}body.dark .tab strong{color:#8d8f91;background:#32373b}body.dark .tab strong span{color:#fff}body.dark .dependencies-list .dependency-item.checked,body.dark .dependencies-list .dependency-item .selected,body.dark ul.dependencies-list .dependency-item.checked,body.dark ul.dependencies-list .dependency-item .selected{background:#262a2d;color:#d1d2d3}body.dark .dependencies-list .dependency-item.checked strong,body.dark .dependencies-list .dependency-item .selected strong,body.dark ul.dependencies-list .dependency-item.checked strong,body.dark ul.dependencies-list .dependency-item .selected strong{color:#fff}body.dark .dependencies-list .dependency-item.checked .icon,body.dark .dependencies-list .dependency-item .selected .icon,body.dark ul.dependencies-list .dependency-item.checked .icon,body.dark ul.dependencies-list .dependency-item .selected .icon{border-color:#4a5053;color:#d1d2d3}body.dark .dependencies-list .dependency-item.checked:hover,body.dark .dependencies-list .dependency-item .selected:hover,body.dark ul.dependencies-list .dependency-item.checked:hover,body.dark ul.dependencies-list .dependency-item .selected:hover{background:#32373b}body.dark .dependencies-list .dependency-item.checked:hover .icon,body.dark .dependencies-list .dependency-item .selected:hover .icon,body.dark ul.dependencies-list .dependency-item.checked:hover .icon,body.dark ul.dependencies-list .dependency-item .selected:hover .icon{color:#d1d2d3}body.dark .dependencies-list .dependency-item,body.dark ul.dependencies-list .dependency-item{background:#262a2d;color:#d1d2d3}body.dark .dependencies-list .dependency-item strong,body.dark ul.dependencies-list .dependency-item strong{color:#fff}body.dark .dependencies-list .dependency-item .icon,body.dark ul.dependencies-list .dependency-item .icon{border:2px solid #4a5053;color:#ff6a00}body.dark .dependencies-list .dependency-item:hover,body.dark ul.dependencies-list .dependency-item:hover{background:#32373b}body.dark .dependencies-list .dependency-item:hover .icon,body.dark ul.dependencies-list .dependency-item:hover .icon{color:#d1d2d3}body.dark .dependencies-list .dependency-item.invalid,body.dark .dependencies-list .dependency-item.checked.invalid,body.dark ul.dependencies-list .dependency-item.invalid,body.dark ul.dependencies-list .dependency-item.checked.invalid{background:#23282b}body.dark .dependencies-list .dependency-item.invalid:hover,body.dark .dependencies-list .dependency-item.checked.invalid:hover,body.dark ul.dependencies-list .dependency-item.invalid:hover,body.dark ul.dependencies-list .dependency-item.checked.invalid:hover{background:#23282b}body.dark .dependencies-list .dependency-item.invalid .warning,body.dark .dependencies-list .dependency-item.checked.invalid .warning,body.dark ul.dependencies-list .dependency-item.invalid .warning,body.dark ul.dependencies-list .dependency-item.checked.invalid .warning{color:#ff7676}body.dark .search-more-warning,body.dark .search-no-result{color:#8d8f91}body.dark .dependencies-list .dependency-item.selected,body.dark ul.dependencies-list .dependency-item.selected{background:#32373b}body.dark .dependencies-list .dependency-item.selected .icon,body.dark ul.dependencies-list .dependency-item.selected .icon{color:#d1d2d3}body.dark .dependencies-list-checked .dependency-item.checked .icon,body.dark ul.dependencies-list-checked .dependency-item.checked .icon{color:#ff6a00}body.dark .quick-links ul.dropdown-menu{background:#32373b}body.dark .quick-links ul.dropdown-menu li a{color:#fff}body.dark .quick-links ul.dropdown-menu li a:hover{background:#262a2d}body.dark .popup-share{background:#32373b}body.dark .popup-share .popup-header{border-color:#4a5053}body.dark .popup-share .popup-header .close{color:#8d8f91}body.dark .popup-share .popup-content label{color:#d1d2d3}body.dark .popup-share .control-input{background:#32373b;border-color:#4a5053}body.dark .popup-share .control-input:focus{border-color:#ff6a00}body.dark .popup-share-overlay{background:rgba(27,31,35,0.95)}body.dark .placeholder-radios .placeholder-radio{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.2)}body.dark .placeholder-input,body.dark .placeholder-dropdown{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.2)}body.dark .placeholder-input::after,body.dark .placeholder-dropdown::after{background:rgba(255,255,255,0.05)}body.dark .placeholder-button{background:rgba(255,255,255,0.05)}body.dark .placeholder-tabs .placeholder-header{border-color:rgba(255,255,255,0.2)}body.dark .placeholder-tabs .placeholder-tab{background:rgba(255,255,255,0.05)}body.dark .placeholder-text{background:rgba(255,255,255,0.05)}body.dark .overlay{background:rgba(27,31,35,0.95)}body.dark .modal-explorer{background:#32373b;box-shadow:0 0 0 black}body.dark .modal-fetch{background:#32373b;box-shadow:0 0 0 black}body.dark .modal-fetch .control-input{background:#32373b;border-color:#4a5053}body.dark .modal-fetch .control-input:focus{border-color:#ff6a00}body.dark .modal-explorer .colset-explorer .head,body.dark .modal-explorer .colset-explorer .foot,body.dark .modal-explorer .colset-explorer .left,body.dark .modal-explorer .colset-explorer .right{color:#d1d2d3;border-color:#4a5053}body.dark .modal-explorer .colset-explorer .head .placeholder-text,body.dark .modal-explorer .colset-explorer .foot .placeholder-text,body.dark .modal-explorer .colset-explorer .left .placeholder-text,body.dark .modal-explorer .colset-explorer .right .placeholder-text{background:rgba(255,255,255,0.05)}body.dark .modal-explorer .close{color:#8d8f91}body.dark .modal-explorer .colset-explorer .head .actions{color:#8d8f91}body.dark .explorer-ul .file.selected,body.dark .explorer-ul .folder.selected{color:#fff;background:#262a2d}body.dark .explorer-ul .file.selected:hover,body.dark .explorer-ul .folder.selected:hover{color:#fff;background:#262a2d}body.dark .explorer-ul .file,body.dark .explorer-ul .folder{color:#d1d2d3}body.dark .explorer-ul .file:hover,body.dark .explorer-ul .folder:hover{background:rgba(255,255,255,0.05);color:#fff}body.dark pre.prism-code span.explorer-number{color:rgba(255,255,255,0.5)}body.dark pre.prism-code span.explorer-number:before{background-color:#262a2d;color:rgba(255,255,255,0.5)}body.dark pre.prism-code:before{color:rgba(255,255,255,0.5);background-color:#262a2d}body.dark .explorer-ul .file.disabled,body.dark .explorer-ul .folder.disabled{color:#d1d2d3}body.dark .explorer-ul .file.disabled:hover,body.dark .explorer-ul .folder.disabled:hover{color:#d1d2d3}body.dark .token.cdata,body.dark .token.comment,body.dark .token.doctype,body.dark .token.prolog{color:#8d8f91}body.dark code[class*='language-'],body.dark pre[class*='language-'],body.dark .token.operator,body.dark .token.punctuation,body.dark .token.operator{color:#d1d2d3}body.dark .switch-label::after{background:rgba(255,255,255,0.2)}body.dark .warnings{background:#ffe09c}body.dark .radio.err{background:#32373b;border-color:#f30808}body.dark .switch-label .switch-button,body.dark .switch-checkbox:checked+.switch-label .switch-button{background:#fff}body.dark .modal-explorer .colset-explorer .foot .action:focus,body.dark .modal-explorer .colset-explorer .head a:focus,body.dark .modal-explorer .close:focus,body.dark .header h1.logo a:focus,body.dark .radio:focus,body.dark .tab a:focus,body.dark .more div.wrap a:focus,body.dark .button:focus,body.dark .groups .group a:focus,body.dark .groups .group .group-title span:focus,body.dark .dependencies-list .dependency-item:focus,body.dark ul.dependencies-list .dependency-item:focus,body.dark .explorer-ul .file:focus,body.dark .explorer-ul .folder:focus{outline-color:#76797a}body.dark .groups .group a.invalid .warning,body.dark .groups .group a.checked.invalid .warning{color:#ff7676}body.dark .footer a,body.dark .popup-share .popup-content .link,body.dark .modal-explorer .colset-explorer .action,body.dark .markdown a,body.dark .markdown-source a{color:#0188ff}@media (max-width: 900px){body.dark{background:#1b1f23}body.dark .quick-links{border-color:#323638;background:#1b1f23}}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = __webpack_public_path__ + \"fonts/c1e9a8527a4a4f457a8fdf644d373e9c.eot\";","module.exports = __webpack_public_path__ + \"fonts/7f562c00d80cb9d59bed376763039487.woff2\";","module.exports = __webpack_public_path__ + \"fonts/ae06d340240442c47ff1ccaa5ca4cfbe.woff\";","module.exports = __webpack_public_path__ + \"fonts/3c5ebd87cbd775f3be8ed0551a682ef8.ttf\";","module.exports = __webpack_public_path__ + \"fonts/d12e4e15d6e01ff7ceceea6f00e32159.svg\";","module.exports = __webpack_public_path__ + \"fonts/00f4610c11ae2aeb7db685df41262363.eot\";","module.exports = __webpack_public_path__ + \"fonts/063f63b80a18487346b6bf074d4f094b.woff2\";","module.exports = __webpack_public_path__ + \"fonts/63f573c4f806c10fa904fe911089f058.woff\";","module.exports = __webpack_public_path__ + \"fonts/d4f0ebf5d59c08236fe25bb12820c2bd.ttf\";","module.exports = __webpack_public_path__ + \"fonts/f803d8e8ab86c9c0eb9ad1da9978f9f5.svg\";","module.exports = __webpack_public_path__ + \"fonts/98291d65d7c5a049c81e8f5d786eec98.eot\";","module.exports = __webpack_public_path__ + \"fonts/5a488c3dab6ff8ccfa74bbd909a7bb95.woff2\";","module.exports = __webpack_public_path__ + \"fonts/d85e4310339264b58f21bfcac7130bcc.woff\";","module.exports = __webpack_public_path__ + \"fonts/ab4a5ea7b67c74de76a88b85f6ca2ff5.ttf\";","module.exports = __webpack_public_path__ + \"fonts/303a293f207127f2d21561491c3a71c4.svg\";","module.exports = __webpack_public_path__ + \"fonts/07d5c9e793599811873ff699c36b86c5.eot\";","module.exports = __webpack_public_path__ + \"fonts/b8ecef1f4c0e42d365ec8626607e1406.woff2\";","module.exports = __webpack_public_path__ + \"fonts/f4f638d0cbf629e67fa9c355daa47347.woff\";","module.exports = __webpack_public_path__ + \"fonts/5f8a077b674fd55bfb19713a06aa2add.ttf\";","module.exports = __webpack_public_path__ + \"fonts/083662cca067cf52ac4c2d16ca877db9.svg\";","import queryString from 'query-string'\nimport { toast } from 'react-toastify'\nimport { useContext, useEffect, useState } from 'react'\n\nimport { AppContext } from '../reducer/App'\nimport { InitializrContext } from '../reducer/Initializr'\nimport { isValidParams } from './ApiUtils'\n\nconst getHash = () => {\n return window.location.hash\n}\n\nconst clearHash = () => {\n if (window.location.hash) {\n if (window.history.pushState) {\n window.history.pushState(null, null, window.location.pathname)\n } else {\n window.history.hash = ``\n }\n }\n}\n\nexport default function useHash() {\n const [hash, setHash] = useState(getHash())\n\n const { dispatch } = useContext(InitializrContext)\n const { config, complete } = useContext(AppContext)\n\n useEffect(() => {\n const handler = () => {\n setHash(getHash())\n }\n window.addEventListener('hashchange', handler)\n return () => {\n window.removeEventListener('hashchange', handler)\n }\n }, [])\n\n useEffect(() => {\n if (complete && hash) {\n const params = queryString.parse(`?${hash.substr(2)}`)\n if (params && window.safemode) {\n delete params.artifactId\n delete params.groupId\n delete params.description\n delete params.name\n delete params.packageName\n }\n dispatch({ type: 'LOAD', payload: { params, lists: config.lists } })\n clearHash()\n setHash('')\n if (isValidParams(params)) {\n toast.success(`分享配置 已加载.`)\n }\n }\n }, [complete, hash, dispatch, config])\n\n return null\n}\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst Control = ({ text, children, variant }) => {\n if (variant === 'xl' || variant === 'xxl') {\n return (\n \n )\n }\n\n return (\n \n
\n <>{text}>\n
\n
\n {children}\n
\n
\n )\n}\n\nControl.defaultProps = {\n children: null,\n variant: '',\n}\n\nControl.propTypes = {\n children: PropTypes.node,\n variant: PropTypes.string,\n text: PropTypes.string.isRequired,\n}\n\nexport default Control\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst FieldInput = ({ id, text, value, onChange, disabled, inputRef }) => (\n \n \n \n
\n)\n\nFieldInput.defaultProps = {\n disabled: false,\n inputRef: null,\n}\n\nFieldInput.propTypes = {\n id: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]),\n disabled: PropTypes.bool,\n}\n\nexport default FieldInput\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport {RadioGroup} from '../form'\n\nconst FieldRadio = ({ id, text, value, onChange, disabled, options }) => (\n \n \n \n
\n)\n\nFieldRadio.defaultProps = {\n disabled: false,\n options: [],\n}\n\nFieldRadio.propTypes = {\n id: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n text: PropTypes.string,\n })\n ),\n}\n\nexport default FieldRadio\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nfunction FieldError({ children }) {\n return (\n \n )\n}\n\nFieldError.propTypes = {\n children: PropTypes.string.isRequired,\n}\n\nexport default FieldError\n","import PropTypes from 'prop-types'\nimport get from 'lodash.get'\nimport React, {useContext, useEffect} from 'react'\n\nimport {AppContext} from '../../reducer/App'\nimport {IconChevronRight} from '../icons'\n\nconst PanelMore = ({ children, fieldFocusOnOpen }) => {\n const { more, dispatch } = useContext(AppContext)\n\n useEffect(() => {\n if (more && fieldFocusOnOpen) {\n setTimeout(() => {\n get(fieldFocusOnOpen, 'current').focus()\n }, 300)\n }\n }, [more, fieldFocusOnOpen])\n\n return (\n \n )\n}\n\nPanelMore.defaultProps = {\n children: null,\n fieldFocusOnOpen: null,\n}\n\nPanelMore.propTypes = {\n children: PropTypes.node,\n fieldFocusOnOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]),\n}\n\nexport default PanelMore\n","import PropTypes from 'prop-types'\nimport get from 'lodash.get'\nimport React, {useContext, useEffect, useState} from 'react'\n\nimport {AppContext} from '../../reducer/App'\nimport {IconList, IconSearch} from '../icons'\nimport {InitializrContext} from '../../reducer/Initializr'\n\nconst Tabs = ({ changeTab }) => {\n const { dependencies: deps, dispatch, tab } = useContext(AppContext)\n const { values } = useContext(InitializrContext)\n const [count, setCount] = useState(0)\n\n useEffect(() => {\n setCount(\n values.dependencies.filter(d => {\n return get(deps, 'list', []).find(a => a.id === d).valid\n }).length\n )\n }, [deps, values.dependencies])\n\n const change = newTab => {\n dispatch({\n type: 'UPDATE',\n payload: { tab: newTab },\n })\n setTimeout(() => {\n changeTab(newTab)\n })\n }\n\n return (\n \n )\n}\n\nTabs.propTypes = {\n changeTab: PropTypes.func.isRequired,\n}\n\nexport default Tabs\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {CSSTransition, TransitionGroup} from 'react-transition-group'\n\nimport {IconCheck, IconTimes} from '../../icons'\n\nfunction Dependencies({ list, remove }) {\n return (\n \n {list.map(item => {\n return (\n \n \n \n {\n event.preventDefault()\n remove(item)\n }}\n key={item.id}\n >\n \n {item.name}\n
\n {item.valid && (\n \n {item.description}\n \n )}\n \n \n \n \n {!item.valid && (\n \n {item.message}\n \n )}\n
\n \n \n \n \n )\n })}\n \n )\n}\n\nDependencies.defaultProps = {\n list: [],\n}\n\nDependencies.propTypes = {\n list: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n valid: PropTypes.bool.isRequired,\n description: PropTypes.string.isRequired,\n message: PropTypes.string,\n })\n ),\n remove: PropTypes.func.isRequired,\n}\n\nexport default Dependencies\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {CSSTransition, TransitionGroup} from 'react-transition-group'\n\nimport {IconPlus} from '../../icons'\n\nfunction Result({ list, selected, select, add }) {\n return (\n \n {list.map((item, index) => {\n return (\n \n \n \n {\n e.preventDefault()\n if (item.valid) {\n add(item)\n }\n }}\n onMouseEnter={() => {\n if (item.valid) {\n select(index)\n }\n }}\n onMouseLeave={() => {\n if (item.valid) {\n select(-1)\n }\n }}\n >\n \n \n {item.name}\n \n
\n {item.valid && (\n \n \n {item.description}\n \n \n \n \n \n )}\n {!item.valid && (\n \n {item.message}\n \n )}\n
\n \n \n \n \n )\n })}\n \n )\n // }\n}\n\nResult.defaultProps = {\n list: [],\n selected: null,\n}\n\nResult.propTypes = {\n list: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n versionRange: PropTypes.string,\n versionRequirement: PropTypes.string,\n })\n ),\n add: PropTypes.func.isRequired,\n selected: PropTypes.number,\n select: PropTypes.func.isRequired,\n}\n\nexport default Result\n","import * as JsSearch from 'js-search'\nimport PropTypes from 'prop-types'\nimport get from 'lodash.get'\nimport React, {useContext, useEffect, useState} from 'react'\n\nimport Dependencies from './Dependencies'\nimport Result from './Result'\nimport {AppContext} from '../../../reducer/App'\nimport {InitializrContext} from '../../../reducer/Initializr'\n\nconst sortResult = dependencies => {\n return dependencies.sort((a, b) => {\n if (a.valid && !b.valid) {\n return -1\n }\n if (!a.valid && b.valid) {\n return 1\n }\n return b.weight - a.weight\n })\n}\n\nconst QuickSearch = ({ submit, input }) => {\n const { values, dispatch } = useContext(InitializrContext)\n const { dependencies: dependenciesContext } = useContext(AppContext)\n const [query, setQuery] = useState('')\n const [selected, setSelected] = useState(0)\n const [dependencies, setDependencies] = useState([])\n const [result, setResult] = useState([])\n const [count, setCount] = useState(0)\n const [search, setSearch] = useState(null)\n\n const add = id => {\n dispatch({\n type: 'ADD_DEPENDENCY',\n payload: { id },\n })\n }\n\n useEffect(() => {\n const newDeps = get(values, 'dependencies', []).map(item => {\n return get(dependenciesContext, 'list', []).find(d => d.id === item)\n })\n setDependencies(newDeps)\n const jsSearchUp = new JsSearch.Search('name')\n jsSearchUp.addIndex('name')\n jsSearchUp.addIndex('id')\n jsSearchUp.addIndex('description')\n jsSearchUp.addIndex('group')\n jsSearchUp.addDocuments(get(dependenciesContext, 'list'))\n setSearch(jsSearchUp)\n }, [values, dependenciesContext, values.dependencies])\n\n const onFocus = () => {\n setSelected(0)\n }\n\n const onBlur = () => {\n setSelected(-1)\n }\n\n const onKeyDown = event => {\n switch (event.keyCode) {\n case 40: // Down\n event.preventDefault()\n setSelected(Math.min(selected + 1, result.length - 1, 4))\n break\n case 38: // Up\n event.preventDefault()\n setSelected(Math.max(selected - 1, 0))\n break\n case 13: // Enter\n event.preventDefault()\n if (result.length > 0) {\n add(result[selected].id)\n setQuery('')\n } else {\n submit()\n }\n break\n case 27: // Escape\n event.preventDefault()\n setQuery('')\n break\n case 39: // Right\n case 37: // Left\n break\n default:\n // Default\n setSelected(0)\n }\n }\n\n useEffect(() => {\n const onSearch = () => {\n if (!search) {\n return\n }\n let vals = search\n .search(query)\n .filter(\n item => !get(values, 'dependencies', []).find(o => o === item.id)\n )\n setCount(vals.length)\n if (vals.length > 5) {\n vals = vals.slice(0, 5)\n }\n vals = sortResult(vals)\n setResult(vals)\n }\n onSearch()\n }, [values, query, search, setResult])\n\n return (\n \n
\n
\n
{\n setQuery(event.target.value)\n setSelected(0)\n }}\n id='input-quicksearch'\n ref={input}\n onKeyDown={onKeyDown}\n />\n
{\n add(item.id)\n setQuery('')\n if (input) {\n get(input, 'current').focus()\n }\n }}\n selected={selected}\n select={setSelected}\n />\n {count > 5 && (\n \n
\n More than 5 results found.\n
\n Refine your search if necessary.\n
\n
\n )}\n \n
\n {/* eslint-disable-next-line */}\n
\n {get(values, 'dependencies', []).length === 0 ? (\n
暂未选择任何组件
\n ) : (\n
{\n dispatch({\n type: 'REMOVE_DEPENDENCY',\n payload: { id: item.id },\n })\n }}\n />\n )}\n \n
\n )\n}\n\nQuickSearch.defaultProps = {}\n\nQuickSearch.propTypes = {\n submit: PropTypes.func.isRequired,\n input: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]).isRequired,\n}\n\nexport default QuickSearch\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport {IconCheck, IconPlus, IconTimes} from '../../icons'\n\nfunction ListItem({\n id,\n name,\n description,\n valid,\n message,\n onChange,\n selected,\n}) {\n const toggle = event => {\n event.preventDefault()\n if (valid) {\n onChange(!selected)\n }\n }\n const onKeyDown = event => {\n const keyPressed = event.key\n if (keyPressed === 'Enter' || keyPressed === ' ') {\n toggle(event)\n }\n }\n return (\n \n \n {}}\n />\n {name}\n
\n {valid && {description}}\n \n \n \n \n \n {!valid && (\n \n {message}\n \n )}\n
\n \n )\n}\n\nListItem.defaultProps = {\n message: '',\n}\n\nListItem.propTypes = {\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n valid: PropTypes.bool.isRequired,\n message: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n selected: PropTypes.bool.isRequired,\n}\n\nexport default ListItem\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport ListItem from './ListItem'\nimport {IconChevronRight} from '../../icons'\n\nfunction ListGroup({\n group,\n items,\n itemsSelected,\n isClose,\n add,\n remove,\n toggle,\n}) {\n const toggleGroup = event => {\n event.preventDefault()\n toggle(group)\n }\n const onKeyDown = event => {\n const keyPressed = event.key\n if (keyPressed === 'Enter' || keyPressed === ' ') {\n toggleGroup(event)\n }\n }\n const isItemSelected = item => {\n return !!itemsSelected.find(o => o === item.id)\n }\n return (\n \n
\n {!isClose && (\n
\n {items.map(item => (\n {\n if (value) {\n add(item.id)\n } else {\n remove(item.id)\n }\n }}\n />\n ))}\n
\n )}\n
\n )\n}\n\nListGroup.propTypes = {\n group: PropTypes.string.isRequired,\n add: PropTypes.func.isRequired,\n remove: PropTypes.func.isRequired,\n toggle: PropTypes.func.isRequired,\n itemsSelected: PropTypes.arrayOf(PropTypes.string).isRequired,\n isClose: PropTypes.bool.isRequired,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n description: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n keywords: PropTypes.string,\n name: PropTypes.string.isRequired,\n valid: PropTypes.bool.isRequired,\n })\n ).isRequired,\n}\n\nexport default ListGroup\n","import get from 'lodash.get'\nimport React, {useContext} from 'react'\n\nimport ListGroup from './ListGroup'\nimport {AppContext} from '../../../reducer/App'\nimport {InitializrContext} from '../../../reducer/Initializr'\n\nconst List = () => {\n const { dependencies, dispatch, groupsOpened } = useContext(AppContext)\n const { values, dispatch: dispatchInitializr } = useContext(InitializrContext)\n return (\n \n {get(dependencies, 'groups').map(group => {\n return (\n {\n dispatchInitializr({\n type: 'ADD_DEPENDENCY',\n payload: { id },\n })\n }}\n remove={id => {\n dispatchInitializr({\n type: 'REMOVE_DEPENDENCY',\n payload: { id },\n })\n }}\n toggle={id => {\n dispatch({\n type: 'TOGGLE_GROUP',\n payload: { id },\n })\n }}\n itemsSelected={get(values, 'dependencies', [])}\n isClose={groupsOpened.indexOf(group.group) < 0}\n items={group.items}\n />\n )\n })}\n
\n )\n}\n\nexport default List\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst Header = ({ children }) => (\n \n)\n\nHeader.defaultProps = {\n children: null,\n}\n\nHeader.propTypes = {\n children: PropTypes.node,\n}\n\nexport default Header\n","import get from 'lodash.get'\nimport React, {useContext, useEffect, useRef, useState} from 'react'\nimport {CSSTransition, TransitionGroup} from 'react-transition-group'\n\nimport {AppContext} from '../../reducer/App'\nimport {IconCaretDown, IconHelp,IconFile} from '../icons'\nimport {Switch} from '../form'\n\nconst QuickLinks = () => {\n const {theme, dispatch, language} = useContext(AppContext)\n const [help, setHelp] = useState(false)\n const wrapper = useRef(null)\n const toggleTheme = () => {\n const newTheme = theme === 'dark' ? 'light' : 'dark'\n dispatch({\n type: 'UPDATE',\n payload: {\n theme: newTheme,\n },\n })\n }\n const toggleLanguage = () => {\n const newLanguage = language === 'en' ? 'zh' : 'en'\n dispatch({\n type: 'UPDATE',\n payload: {\n language: newLanguage,\n },\n })\n }\n useEffect(() => {\n const clickOutside = event => {\n const children = get(wrapper, 'current')\n if (children && !children.contains(event.target)) {\n setHelp(false)\n }\n }\n document.addEventListener('mousedown', clickOutside)\n return () => {\n document.removeEventListener('mousedown', clickOutside)\n }\n }, [setHelp])\n\n /*\n \n \n \n {language === 'en' ? 'English' : '中文'}\n \n \n */\n return (\n \n )\n}\n\nexport default QuickLinks\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport Header from './Header'\nimport QuickLinks from './QuickLinks'\n\nconst Layout = ({ children }) => (\n <>\n \n {children}\n >\n)\n\nLayout.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default Layout\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst Footer = ({ children }) => (\n \n
\n
\n {children && (\n
\n )}\n
\n
\n)\n\nFooter.defaultProps = {\n children: null,\n}\n\nFooter.propTypes = {\n children: PropTypes.node,\n}\n\nexport default Footer\n","import React from 'react'\n\nimport Control from './Control'\nimport {Footer} from '../layout'\nimport {Placeholder} from '../form'\n\nexport default function Loading() {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n >\n )\n}\n","import get from 'lodash.get'\nimport React, {useContext} from 'react'\n\nimport {IconTimes} from '../icons'\nimport {InitializrContext} from '../../reducer/Initializr'\n\nfunction Warnings() {\n const { warnings, dispatch } = useContext(InitializrContext)\n if (Object.keys(warnings).length > 0) {\n return (\n \n
\n
\n
\n
{\n event.preventDefault()\n dispatch({\n type: 'CLEAR_WARNINGS',\n })\n }}\n >\n \n \n The following attributes could not be handled:\n
\n {get(warnings, 'project') && (\n - \n {get(warnings, 'project.value')} is not a\n valid project type,{' '}\n {get(warnings, 'project.select')} has been\n selected.\n
\n )}\n {get(warnings, 'language') && (\n - \n {get(warnings, 'language.value')} is not a\n valid language,{' '}\n {get(warnings, 'language.select')} has been\n selected.\n
\n )}\n {get(warnings, 'boot') && (\n - \n Spring Boot {get(warnings, 'boot.value')} is\n not available, {get(warnings, 'boot.select')}{' '}\n has been selected.\n
\n )}\n {get(warnings, 'meta.java') && (\n - \n {get(warnings, 'meta.java.value')} is not a\n valid Java version,{' '}\n {get(warnings, 'meta.java.select')} has been\n selected.\n
\n )}\n {get(warnings, 'meta.packaging') && (\n - \n {get(warnings, 'meta.packaging.value')} is\n not a valid packaging,{' '}\n {get(warnings, 'meta.packaging.select')} has\n been selected.\n
\n )}\n {get(warnings, 'dependencies') && (\n - \n The following dependencies are not supported:{' '}\n {get(warnings, 'dependencies.value')}.\n
\n )}\n
\n
\n
\n
\n )\n }\n return <>>\n}\n\nexport default Warnings\n","import BodyClassName from 'react-body-classname'\nimport get from 'lodash.get'\nimport React, {lazy, Suspense, useContext, useEffect, useRef, useState,} from 'react'\nimport {toast} from 'react-toastify'\n\nimport useHash from './utils/Hash'\nimport useWindowsUtils from './utils/WindowsUtils'\nimport {AppContext} from './reducer/App'\nimport {Button, Form, RadioGroup} from './common/form'\nimport {\n Control,\n FieldError,\n FieldInput,\n FieldRadio,\n List,\n Loading,\n PanelMore,\n QuickSearch,\n Tabs,\n Warnings,\n} from './common/builder'\nimport {Footer, Layout} from './common/layout'\nimport {InitializrContext} from './reducer/Initializr'\nimport {getConfig, getInfo, getProject, getQueryString} from './utils/ApiUtils'\n\nconst Explore = lazy(() => import('./common/explore/Explore.js'))\nconst Share = lazy(() => import('./common/share/Share.js'))\nconst Fetch = lazy(() => import('./common/fetch/Fetch.js'))\nconst HotKeys = lazy(() => import('./common/builder/HotKeys.js'))\n\nexport default function Application() {\n const {\n complete,\n config,\n more,\n tab,\n dispatch,\n theme,\n fetch: fetchOpen,\n share: shareOpen,\n explore: exploreOpen,\n dependencies,\n } = useContext(AppContext)\n const { values, share, dispatch: dispatchInitializr, errors } = useContext(InitializrContext)\n\n const [positionShare, setPositionShare] = useState({ x: 0, y: 0 })\n\n const [blob, setBlob] = useState(null)\n\n\n const inputMore = useRef(null)\n const inputQuickSearch = useRef(null)\n\n const windowsUtils = useWindowsUtils()\n useHash()\n\n useEffect(() => {\n if (windowsUtils.origin) {\n const url = `${windowsUtils.origin}/metadata/client`\n getInfo(url).then(jsonConfig => {\n const response = getConfig(jsonConfig)\n dispatchInitializr({ type: 'COMPLETE', payload: { ...response } })\n dispatch({ type: 'COMPLETE', payload: response })\n })\n }\n }, [dispatch, dispatchInitializr, windowsUtils.origin])\n\n const onSubmit = async () => {\n dispatch({ type: 'FETCH_UPDATE', payload: { open: true } })\n }\n\n const onExplore = async () => {\n const url = `${windowsUtils.origin}/starter.zip`\n dispatch({ type: 'EXPLORE_UPDATE', payload: { open: true } })\n const project = await getProject(\n url,\n values,\n get(dependencies, 'list')\n ).catch(() => {\n toast.error(`Could not connect to server. Please check your network.`)\n })\n setBlob(project)\n }\n\n const onShare = event => {\n const { x, y } = get(event, 'target').getBoundingClientRect()\n setPositionShare({ x, y })\n dispatch({ type: 'SHARE_UPDATE', payload: { open: true } })\n }\n\n const update = args => {\n dispatchInitializr({ type: 'UPDATE', payload: args })\n }\n\n const onRunInSandbox = () => {\n const origin = `${windowsUtils.origin}`\n const config = get(dependencies, 'list')\n const params = getQueryString(values, config, [\"cloudshell\"])\n\n const gitUrl = `${origin}/${params}/${values.meta.artifact}.git`\n\n const handsOnUrl = `${origin}/handson?${params}`\n\n window.open(handsOnUrl)\n\n }\n\n const onExport = () => {\n const origin = `${windowsUtils.origin}`\n const config = get(dependencies, 'list')\n const params = getQueryString(values, config)\n\n const codeupUrl = `${origin}/codeup?${params}`\n\n window.open(codeupUrl)\n }\n\n let shareSrc = get(values, 'share')\n if(shareSrc){\n shareSrc = `${shareSrc}/`\n } else {\n shareSrc = ''\n }\n\n return (\n \n \n \n \n \n \n \n {\n dispatch({\n type: 'SHARE_UPDATE',\n payload: { open: false },\n })\n }}\n />\n {\n dispatch({\n type: 'EXPLORE_UPDATE',\n payload: { open: false },\n })\n setBlob(null)\n }}\n />\n {\n dispatch({\n type: 'FETCH_UPDATE',\n payload: { open: false },\n })\n }}\n />\n \n \n )\n}\n","import './styles/app.scss'\n\nimport React from 'react'\nimport {ToastContainer} from 'react-toastify'\nimport {render} from 'react-dom'\n\nimport Application from './components/Application'\nimport Close from './components/common/form/Close'\nimport {AppProvider} from './components/reducer/App'\nimport {InitializrProvider} from './components/reducer/Initializr'\n\nrender(\n \n \n }\n position='top-center'\n hideProgressBar\n />\n \n \n ,\n document.getElementById('app')\n)\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/initializer-page/public/ecosystem-en.html b/initializer-page/public/ecosystem-en.html
new file mode 100644
index 0000000..0f6cf6c
--- /dev/null
+++ b/initializer-page/public/ecosystem-en.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+ Alibaba micro service ecology
+
+
+
+
+
+
Microservice Ecosystem Landscape
+
+
+
+
+
+
+
diff --git a/initializer-page/public/ecosystem.html b/initializer-page/public/ecosystem.html
new file mode 100644
index 0000000..a967026
--- /dev/null
+++ b/initializer-page/public/ecosystem.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+ 阿里巴巴微服务生态
+
+
+
+
+
+
+
微服务生态全景图
+
+
+
+
+
+
+
+
diff --git a/initializer-page/public/main-0328d4e96e03690fe2b2.js b/initializer-page/public/main-0328d4e96e03690fe2b2.js
new file mode 100644
index 0000000..4ce6da8
--- /dev/null
+++ b/initializer-page/public/main-0328d4e96e03690fe2b2.js
@@ -0,0 +1,2 @@
+!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],p=0,d=[];p {
@@ -57,6 +57,16 @@ const QuickLinks = () => {
{theme === 'dark' ? '深色' : '浅色'} 主题
+
+
+
+ 阿里巴巴微服务生态
+
+
-