react-ui-basics 0.0.129 → 0.0.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AutocompleteSelect.js +7 -5
- package/AutocompleteSelect.js.map +1 -1
- package/Modal.js +4 -2
- package/Modal.js.map +1 -1
- package/bundle.css +399 -399
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/store/ProxyTools.js +64 -0
- package/store/ProxyTools.js.map +1 -0
- package/store/Store.js +71 -0
- package/store/Store.js.map +1 -0
package/AutocompleteSelect.js
CHANGED
|
@@ -224,7 +224,8 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
224
224
|
scroll = _this$props3.scroll,
|
|
225
225
|
required = _this$props3.required,
|
|
226
226
|
allowCustom = _this$props3.allowCustom,
|
|
227
|
-
inlineSelected = _this$props3.inlineSelected
|
|
227
|
+
inlineSelected = _this$props3.inlineSelected,
|
|
228
|
+
removeIcon = _this$props3.removeIcon;
|
|
228
229
|
var id = this.props.id || this.randomId;
|
|
229
230
|
var selectedComponent = this.props.selectedComponent || childComponent;
|
|
230
231
|
var _this$state2 = this.state,
|
|
@@ -327,7 +328,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
327
328
|
_this3.remove(id);
|
|
328
329
|
}
|
|
329
330
|
}, ReactCreateElement(MaterialIcon, {
|
|
330
|
-
icon:
|
|
331
|
+
icon: removeIcon
|
|
331
332
|
})));
|
|
332
333
|
}), selectedMode === 'inline' && selectedIds.map(function (id) {
|
|
333
334
|
return ReactCreateElement(React.Fragment, {
|
|
@@ -344,7 +345,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
344
345
|
raised: false,
|
|
345
346
|
onClick: this.clean
|
|
346
347
|
}, ReactCreateElement(MaterialIcon, {
|
|
347
|
-
icon:
|
|
348
|
+
icon: removeIcon
|
|
348
349
|
}))), inlineSelected && hasSelected && ReactCreateElement(React.Fragment, null, selectedMode === 'full' && selectedIds.map(function (id) {
|
|
349
350
|
return ReactCreateElement("div", {
|
|
350
351
|
className: "value",
|
|
@@ -360,7 +361,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
360
361
|
_this3.remove(id);
|
|
361
362
|
}
|
|
362
363
|
}, ReactCreateElement(MaterialIcon, {
|
|
363
|
-
icon:
|
|
364
|
+
icon: removeIcon
|
|
364
365
|
})));
|
|
365
366
|
}), selectedMode === 'inline' && selectedIds.map(function (id) {
|
|
366
367
|
return ReactCreateElement(React.Fragment, {
|
|
@@ -438,7 +439,8 @@ AutocompleteSelect.defaultProps = {
|
|
|
438
439
|
withReset: false,
|
|
439
440
|
scrollToValue: false,
|
|
440
441
|
mode: MODE_DEFAULT,
|
|
441
|
-
selectedMode: 'full'
|
|
442
|
+
selectedMode: 'full',
|
|
443
|
+
removeIcon: 'close'
|
|
442
444
|
};
|
|
443
445
|
var AutocompleteSelect$1 = AutocompleteSelect;
|
|
444
446
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteSelect.js","sources":["../src/react-ui-basics/AutocompleteSelect.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './AutocompleteSelect.css'\nimport TextField from \"./TextField\";\nimport FilteredList, {getLabel} from \"./FilteredList\";\nimport {\n classNames,\n continuousIncludes,\n getRandomId,\n ref,\n orNoop,\n preventDefault,\n stopPropagation,\n DOCUMENT,\n addEventListener,\n removeEventListener,\n isObject,\n isFunction,\n isString, UNDEFINED\n} from \"./Tools\";\nimport Button from \"./Button\";\nimport MaterialIcon from \"./MaterialIcon\";\n\nexport const MODE_DEFAULT = 'default';\nexport const MODE_INLINE = 'inline';\nexport const MODE_INLINE_MULTIPLE = 'inline-multiple';\nexport const MODE_MULTIPLE_AUTO = 'multiple-auto';\nexport const MODE_MULTIPLE = 'multiple';\nexport const MODE_MULTIPLE_MINI = 'multiple-mini';\nexport const MODE_MINI = 'mini';\nexport const MODE_MULTIPLE_MINI_INLINE = 'multiple-mini-inline';\n\n\nconst DummyChild = ({id, label, dataConsumer, onClick}) => {\n orNoop(dataConsumer)(label || id);\n return <div className={`DummyChild`} onClick={onClick}>{label || id}</div>\n};\n\nconst prepareSelected = (value) => {\n let result;\n if (value != null) {\n if (Array.isArray(value))\n result = value.reduce((map, obj) => {\n map[obj] = obj;\n return map;\n }, {});\n else if (isObject(value))\n result = value;\n else if (value)\n result = {[value]: value};\n else\n result = {}\n } else {\n result = {};\n }\n return result;\n};\n\nconst findParent = (el, tag) => {\n if (el != null) {\n const tagName = el.tagName;\n if (tagName && tagName.toUpperCase() === tag.toUpperCase()) {\n return el;\n } else {\n return findParent(el.parentNode, tag)\n }\n }\n return null;\n}\n\nfunction isMultipleSelect(mode) {\n return mode === MODE_MULTIPLE || mode === MODE_MULTIPLE_AUTO || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI || mode === MODE_MULTIPLE_MINI_INLINE;\n}\n\nclass AutocompleteSelect extends React.Component {\n\n static propTypes = {\n mode: PropTypes.oneOf([MODE_DEFAULT, MODE_INLINE, MODE_MULTIPLE, MODE_MULTIPLE_AUTO, MODE_MULTIPLE_MINI, MODE_MULTIPLE_MINI_INLINE, MODE_INLINE_MULTIPLE, MODE_MINI])\n };\n\n constructor(props) {\n super(props);\n const that = this;\n that.state = {\n selected: prepareSelected(props.value),\n isActive: !!props.focused,\n\n };\n that.randomId = getRandomId('acs-');\n\n const {data, getSelected} = props;\n isFunction(data) && data(data => that.setState({data}));\n\n getSelected && getSelected(() => Object.values(that.state.selected));\n }\n\n componentDidMount() {\n addEventListener(DOCUMENT, 'mousedown', this.listener = (e) => {\n if (this.state.isActive && this.el && !this.el.contains(e.target)) {\n this.onClickOutside()\n }\n })\n if (this.props.required) {\n const form = findParent(this.el.parentNode, 'form')\n if (form) {\n addEventListener(this.submitButton = form.querySelector('button[type=submit]'), 'click', this.formSubmitListener = (e) => {\n const errored = Object.keys(this.state.selected).length === 0;\n this.setState({errored: errored})\n })\n }\n }\n this.initSelected(this.props, this.state)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value)\n this.initSelected(this.props, this.state)\n }\n\n initSelected = ({value, mode, allowCustom}, {filterValue = ''}) => {\n this.setState({\n selected: prepareSelected(value),\n filterValue: allowCustom && isString(value) && !isMultipleSelect(mode) ? value : filterValue,\n });\n };\n\n componentWillUnmount() {\n removeEventListener(DOCUMENT, 'mousedown', this.listener)\n removeEventListener(this.submitButton, 'click', this.formSubmitListener)\n }\n\n static defaultProps = {\n childComponent: DummyChild,\n withArrow: true,\n withFilter: true,\n withReset: false,\n scrollToValue: false,\n mode: MODE_DEFAULT,\n selectedMode: 'full',\n };\n\n render() {\n const {\n childComponent,\n childProps,\n withArrow,\n withFilter,\n withReset,\n filter,\n label,\n inputLabel,\n mode,\n selectedMode,\n prefilter,\n className,\n scrollToValue,\n scroll,\n required,\n allowCustom,\n inlineSelected,\n } = this.props;\n const id = this.props.id || this.randomId;\n const selectedComponent = this.props.selectedComponent || childComponent;\n const {selected = {}, filterValue = '', errored} = this.state;\n let {isActive} = this.state;\n if (this.props.isActive !== UNDEFINED) {\n isActive = this.props.isActive\n }\n let {data = [], labels = {}} = this.props;\n if (this.state.data)\n data = this.state.data;\n\n if (!Array.isArray(data))\n data = [];\n\n const selectedIds = Object.values(selected);\n const hasSelected = selectedIds.length !== 0;\n const setActive = (e) => {\n stopPropagation(e);\n this.setState({isActive: true}, () => (scrollToValue && selectedIds.length > 0) && this.list.scrollTo(selectedIds[0]));\n };\n const toggle = (e) => {\n if (!this.state.isActive) {\n setActive(e);\n } else {\n stopPropagation(e);\n this.setState({isActive: false});\n }\n };\n\n const isInline = mode === MODE_INLINE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE;\n const filterValueTrimmed = filterValue.trim();\n const dataFiltered = allowCustom ? [filterValueTrimmed, ...data.filter(suggestion => suggestion !== filterValueTrimmed)] : data;\n\n const list = <FilteredList className={classNames(isActive && 'visible')}\n ref={ref('list', this)}\n filter={it => {\n if (!it) return false;\n if (prefilter && !prefilter(it)) return false;\n if (!filterValue) return true;\n\n const f = filterValueTrimmed.toLowerCase();\n if (filter) return filter(it, f);\n\n let value = (isString(it) ? it : (it.name || it.label || '')).toLowerCase().trim();\n return continuousIncludes(value, f);\n }}\n selectSingle={!allowCustom}\n scroll={scroll}\n inline={isInline}\n nextProvider={ref('next', this)}\n prevProvider={ref('prev', this)}\n selectedProvider={ref('getSelected', this)}\n resetProvider={ref('reset', this)}\n onSelect={this.onSelect}\n selected={selected}\n childComponent={childComponent}\n childProps={childProps}\n data={dataFiltered}\n labels={labels}\n />;\n\n return (\n <div id={id}\n className={classNames(\n 'AutocompleteSelect',\n mode,\n isMultipleSelect(mode) && 'multi',\n className,\n withFilter ? 'withFilter' : 'withoutFilter',\n isActive && 'active',\n errored && 'errored',\n inlineSelected && 'inlineSelected',\n hasSelected && 'hasSelected',\n )}\n ref={ref('el', this)}>\n {label && <label className={classNames(`label`, (hasSelected || filterValue) && 'active', hasSelected && 'hasSelected')}\n htmlFor={'f-' + id}\n onClick={() => {\n if (mode === MODE_MULTIPLE_MINI_INLINE || !isActive) {\n toggle();\n }\n }}\n >\n {label}\n {required && ' *'}\n {withArrow && <span className=\"arrow\"/>}\n </label>}\n\n {(!isActive || mode === MODE_MULTIPLE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE || mode === MODE_MULTIPLE_AUTO || !withFilter) && !inlineSelected && hasSelected && (\n <div\n className={classNames('selected',\n !label && 'nolabel',\n (mode === MODE_MULTIPLE_MINI || mode === MODE_MINI || mode === MODE_MULTIPLE_MINI_INLINE) && 'clickable',\n selectedMode)}\n onClick={toggle}>\n\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon=\"close\"/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n {!label && withArrow && <span className=\"arrow\"/>}\n {withReset && <Button className=\"reset\" raised={false} onClick={this.clean}>\n <MaterialIcon icon=\"close\"/>\n </Button>}\n </div>\n )}\n\n {inlineSelected && hasSelected && <>\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon=\"close\"/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n </>}\n\n {(isActive || (!hasSelected && mode !== MODE_MULTIPLE_MINI_INLINE) || mode === MODE_MULTIPLE || (mode === MODE_MULTIPLE_AUTO && selectedIds.length > 1) || mode === MODE_INLINE_MULTIPLE) && (\n <div className={`input`} data-value={filterValue}>\n {withFilter && <TextField autoComplete=\"new-password\" id={'f-' + id}\n ref={ref('input', this)}\n focused={isActive}\n value={filterValue}\n label={inputLabel}\n onChange={this.onChange}\n onFocus={e => this.setState({isActive: true})}\n check={this.props.filterCheck}\n onKeyDown={e => {\n const keyCode = e.keyCode;\n if (keyCode === 38/*up*/) {\n preventDefault(e);\n this.prev();\n } else if (keyCode === 40/*down*/) {\n preventDefault(e);\n this.next();\n } else if (keyCode === 13/*enter*/) {\n preventDefault(e);\n this.onSelect(this.getSelected())\n } else if (keyCode === 9/*tab*/) {\n this.onSelect(this.getSelected())\n } else if (keyCode === 8/*backspace*/) {\n if (!filterValue && (selectedIds.length !== 0) && isMultipleSelect(mode)) {\n this.remove(selectedIds[selectedIds.length - 1]);\n }\n this.reset()\n } else if (keyCode === 46/*delete*/) {\n this.reset()\n } else if (keyCode === 27/*esc*/) {\n this.setState({\n isActive: false,\n filterValue: isMultipleSelect(mode) ? '' : (allowCustom ? filterValue : ''),\n });\n this.input.getInput().blur()\n this.onCancel();\n }\n // console.log('key pressed:', e.keyCode)\n }}\n />}\n {!withFilter && inputLabel && <label>{inputLabel}</label>}\n </div>\n )}\n {list}\n </div>\n )\n }\n\n onClickOutside = () => {\n const {allowCustom, required} = this.props;\n const {filterValue} = this.state;\n if (allowCustom && (!!filterValue || !required)) {\n this.onSelect()\n }\n\n this.setState({isActive: false});\n\n this.onCancel();\n };\n\n onCancel = () => {\n orNoop(this.props.onCancel)()\n };\n\n onSelect = (selectedId) => {\n const {mode, required, allowCustom, onSelect, onChange, default: defaultValue} = this.props;\n const {filterValue, selected: currentSelection} = this.state;\n\n if (selectedId == null && (!!filterValue || !required) && allowCustom && (!this.input || !this.input.check()))\n selectedId = filterValue.trim();\n\n const isMultiSelect = isMultipleSelect(mode);\n\n if (!selectedId && isMultiSelect) {\n selectedId = null;\n }\n\n // debugger\n\n const isSelected = selectedId != null;\n\n let selected = {...currentSelection};\n if (selected[selectedId] && (defaultValue || isMultiSelect)) {\n delete selected[selectedId];\n if (defaultValue && Object.keys(selected).length === 0)\n selected[defaultValue] = defaultValue;\n } else if (isSelected && (isMultiSelect)) {\n selected[selectedId] = selectedId;\n } else if (isSelected) {\n selected = {[selectedId]: selectedId};\n }\n\n const errored = required && Object.keys(selected) === 0;\n\n const isActive = mode === MODE_MULTIPLE_MINI_INLINE || (isMultiSelect && isSelected)\n\n this.setState({\n isActive: isActive,\n selected: selected,\n filterValue: isMultiSelect ? '' : (allowCustom ? selectedId || '' : ''),\n errored,\n });\n\n if (isActive && this.input)\n this.input.getInput().focus()\n\n orNoop(onSelect)(selectedId);\n orNoop(onChange)(Object.values(selected));\n };\n\n clean = (e) => {\n preventDefault(e);\n stopPropagation(e);\n\n this.setState({\n isActive: false,\n selected: {},\n filterValue: '',\n });\n\n orNoop(this.props.onSelect)(null);\n orNoop(this.props.onChange)([]);\n\n this.initSelected(this.props, this.state);\n };\n\n remove = (id) => {\n let result = {\n ...this.state,\n selected: {...this.state.selected},\n filterValue: '',\n };\n delete result.selected[id];\n this.setState(result);\n orNoop(this.props.onChange)(Object.values(result.selected));\n };\n\n onChange = (event) => {\n const value = event.target.value;\n this.setState({filterValue: value});\n }\n}\n\nexport default AutocompleteSelect;\n"],"names":["MODE_DEFAULT","MODE_INLINE","MODE_INLINE_MULTIPLE","MODE_MULTIPLE_AUTO","MODE_MULTIPLE","MODE_MULTIPLE_MINI","MODE_MINI","MODE_MULTIPLE_MINI_INLINE","DummyChild","id","label","dataConsumer","onClick","orNoop","prepareSelected","value","result","Array","isArray","reduce","map","obj","isObject","findParent","el","tag","tagName","toUpperCase","parentNode","isMultipleSelect","mode","AutocompleteSelect","props","initSelected","allowCustom","filterValue","setState","selected","isString","onClickOutside","required","state","onSelect","isActive","onCancel","selectedId","onChange","defaultValue","currentSelection","input","check","trim","isMultiSelect","isSelected","Object","keys","length","errored","getInput","focus","values","clean","e","preventDefault","stopPropagation","remove","event","target","that","focused","randomId","getRandomId","data","getSelected","isFunction","addEventListener","DOCUMENT","listener","contains","form","submitButton","querySelector","formSubmitListener","prevProps","prevState","snapshot","removeEventListener","childComponent","childProps","withArrow","withFilter","withReset","filter","inputLabel","selectedMode","prefilter","className","scrollToValue","scroll","inlineSelected","selectedComponent","UNDEFINED","labels","selectedIds","hasSelected","setActive","list","scrollTo","toggle","isInline","filterValueTrimmed","dataFiltered","suggestion","classNames","ref","it","f","toLowerCase","name","continuousIncludes","React","createElement","getLabel","filterCheck","keyCode","prev","next","reset","blur","Component","propTypes","PropTypes","oneOf","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutocompleteSelect.js","sources":["../src/react-ui-basics/AutocompleteSelect.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './AutocompleteSelect.css'\nimport TextField from \"./TextField\";\nimport FilteredList, {getLabel} from \"./FilteredList\";\nimport {\n classNames,\n continuousIncludes,\n getRandomId,\n ref,\n orNoop,\n preventDefault,\n stopPropagation,\n DOCUMENT,\n addEventListener,\n removeEventListener,\n isObject,\n isFunction,\n isString, UNDEFINED\n} from \"./Tools\";\nimport Button from \"./Button\";\nimport MaterialIcon from \"./MaterialIcon\";\n\nexport const MODE_DEFAULT = 'default';\nexport const MODE_INLINE = 'inline';\nexport const MODE_INLINE_MULTIPLE = 'inline-multiple';\nexport const MODE_MULTIPLE_AUTO = 'multiple-auto';\nexport const MODE_MULTIPLE = 'multiple';\nexport const MODE_MULTIPLE_MINI = 'multiple-mini';\nexport const MODE_MINI = 'mini';\nexport const MODE_MULTIPLE_MINI_INLINE = 'multiple-mini-inline';\n\n\nconst DummyChild = ({id, label, dataConsumer, onClick}) => {\n orNoop(dataConsumer)(label || id);\n return <div className={`DummyChild`} onClick={onClick}>{label || id}</div>\n};\n\nconst prepareSelected = (value) => {\n let result;\n if (value != null) {\n if (Array.isArray(value))\n result = value.reduce((map, obj) => {\n map[obj] = obj;\n return map;\n }, {});\n else if (isObject(value))\n result = value;\n else if (value)\n result = {[value]: value};\n else\n result = {}\n } else {\n result = {};\n }\n return result;\n};\n\nconst findParent = (el, tag) => {\n if (el != null) {\n const tagName = el.tagName;\n if (tagName && tagName.toUpperCase() === tag.toUpperCase()) {\n return el;\n } else {\n return findParent(el.parentNode, tag)\n }\n }\n return null;\n}\n\nfunction isMultipleSelect(mode) {\n return mode === MODE_MULTIPLE || mode === MODE_MULTIPLE_AUTO || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI || mode === MODE_MULTIPLE_MINI_INLINE;\n}\n\nclass AutocompleteSelect extends React.Component {\n\n static propTypes = {\n mode: PropTypes.oneOf([MODE_DEFAULT, MODE_INLINE, MODE_MULTIPLE, MODE_MULTIPLE_AUTO, MODE_MULTIPLE_MINI, MODE_MULTIPLE_MINI_INLINE, MODE_INLINE_MULTIPLE, MODE_MINI])\n };\n\n constructor(props) {\n super(props);\n const that = this;\n that.state = {\n selected: prepareSelected(props.value),\n isActive: !!props.focused,\n\n };\n that.randomId = getRandomId('acs-');\n\n const {data, getSelected} = props;\n isFunction(data) && data(data => that.setState({data}));\n\n getSelected && getSelected(() => Object.values(that.state.selected));\n }\n\n componentDidMount() {\n addEventListener(DOCUMENT, 'mousedown', this.listener = (e) => {\n if (this.state.isActive && this.el && !this.el.contains(e.target)) {\n this.onClickOutside()\n }\n })\n if (this.props.required) {\n const form = findParent(this.el.parentNode, 'form')\n if (form) {\n addEventListener(this.submitButton = form.querySelector('button[type=submit]'), 'click', this.formSubmitListener = (e) => {\n const errored = Object.keys(this.state.selected).length === 0;\n this.setState({errored: errored})\n })\n }\n }\n this.initSelected(this.props, this.state)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value)\n this.initSelected(this.props, this.state)\n }\n\n initSelected = ({value, mode, allowCustom}, {filterValue = ''}) => {\n this.setState({\n selected: prepareSelected(value),\n filterValue: allowCustom && isString(value) && !isMultipleSelect(mode) ? value : filterValue,\n });\n };\n\n componentWillUnmount() {\n removeEventListener(DOCUMENT, 'mousedown', this.listener)\n removeEventListener(this.submitButton, 'click', this.formSubmitListener)\n }\n\n static defaultProps = {\n childComponent: DummyChild,\n withArrow: true,\n withFilter: true,\n withReset: false,\n scrollToValue: false,\n mode: MODE_DEFAULT,\n selectedMode: 'full',\n removeIcon: 'close',\n };\n\n render() {\n const {\n childComponent,\n childProps,\n withArrow,\n withFilter,\n withReset,\n filter,\n label,\n inputLabel,\n mode,\n selectedMode,\n prefilter,\n className,\n scrollToValue,\n scroll,\n required,\n allowCustom,\n inlineSelected,\n removeIcon,\n } = this.props;\n const id = this.props.id || this.randomId;\n const selectedComponent = this.props.selectedComponent || childComponent;\n const {selected = {}, filterValue = '', errored} = this.state;\n let {isActive} = this.state;\n if (this.props.isActive !== UNDEFINED) {\n isActive = this.props.isActive\n }\n let {data = [], labels = {}} = this.props;\n if (this.state.data)\n data = this.state.data;\n\n if (!Array.isArray(data))\n data = [];\n\n const selectedIds = Object.values(selected);\n const hasSelected = selectedIds.length !== 0;\n const setActive = (e) => {\n stopPropagation(e);\n this.setState({isActive: true}, () => (scrollToValue && selectedIds.length > 0) && this.list.scrollTo(selectedIds[0]));\n };\n const toggle = (e) => {\n if (!this.state.isActive) {\n setActive(e);\n } else {\n stopPropagation(e);\n this.setState({isActive: false});\n }\n };\n\n const isInline = mode === MODE_INLINE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE;\n const filterValueTrimmed = filterValue.trim();\n const dataFiltered = allowCustom ? [filterValueTrimmed, ...data.filter(suggestion => suggestion !== filterValueTrimmed)] : data;\n\n const list = <FilteredList className={classNames(isActive && 'visible')}\n ref={ref('list', this)}\n filter={it => {\n if (!it) return false;\n if (prefilter && !prefilter(it)) return false;\n if (!filterValue) return true;\n\n const f = filterValueTrimmed.toLowerCase();\n if (filter) return filter(it, f);\n\n let value = (isString(it) ? it : (it.name || it.label || '')).toLowerCase().trim();\n return continuousIncludes(value, f);\n }}\n selectSingle={!allowCustom}\n scroll={scroll}\n inline={isInline}\n nextProvider={ref('next', this)}\n prevProvider={ref('prev', this)}\n selectedProvider={ref('getSelected', this)}\n resetProvider={ref('reset', this)}\n onSelect={this.onSelect}\n selected={selected}\n childComponent={childComponent}\n childProps={childProps}\n data={dataFiltered}\n labels={labels}\n />;\n\n return (\n <div id={id}\n className={classNames(\n 'AutocompleteSelect',\n mode,\n isMultipleSelect(mode) && 'multi',\n className,\n withFilter ? 'withFilter' : 'withoutFilter',\n isActive && 'active',\n errored && 'errored',\n inlineSelected && 'inlineSelected',\n hasSelected && 'hasSelected',\n )}\n ref={ref('el', this)}>\n {label && <label className={classNames(`label`, (hasSelected || filterValue) && 'active', hasSelected && 'hasSelected')}\n htmlFor={'f-' + id}\n onClick={() => {\n if (mode === MODE_MULTIPLE_MINI_INLINE || !isActive) {\n toggle();\n }\n }}\n >\n {label}\n {required && ' *'}\n {withArrow && <span className=\"arrow\"/>}\n </label>}\n\n {(!isActive || mode === MODE_MULTIPLE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE || mode === MODE_MULTIPLE_AUTO || !withFilter) && !inlineSelected && hasSelected && (\n <div\n className={classNames('selected',\n !label && 'nolabel',\n (mode === MODE_MULTIPLE_MINI || mode === MODE_MINI || mode === MODE_MULTIPLE_MINI_INLINE) && 'clickable',\n selectedMode)}\n onClick={toggle}>\n\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon={removeIcon}/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n {!label && withArrow && <span className=\"arrow\"/>}\n {withReset && <Button className=\"reset\" raised={false} onClick={this.clean}>\n <MaterialIcon icon={removeIcon}/>\n </Button>}\n </div>\n )}\n\n {inlineSelected && hasSelected && <>\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon={removeIcon}/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n </>}\n\n {(isActive || (!hasSelected && mode !== MODE_MULTIPLE_MINI_INLINE) || mode === MODE_MULTIPLE || (mode === MODE_MULTIPLE_AUTO && selectedIds.length > 1) || mode === MODE_INLINE_MULTIPLE) && (\n <div className={`input`} data-value={filterValue}>\n {withFilter && <TextField autoComplete=\"new-password\" id={'f-' + id}\n ref={ref('input', this)}\n focused={isActive}\n value={filterValue}\n label={inputLabel}\n onChange={this.onChange}\n onFocus={e => this.setState({isActive: true})}\n check={this.props.filterCheck}\n onKeyDown={e => {\n const keyCode = e.keyCode;\n if (keyCode === 38/*up*/) {\n preventDefault(e);\n this.prev();\n } else if (keyCode === 40/*down*/) {\n preventDefault(e);\n this.next();\n } else if (keyCode === 13/*enter*/) {\n preventDefault(e);\n this.onSelect(this.getSelected())\n } else if (keyCode === 9/*tab*/) {\n this.onSelect(this.getSelected())\n } else if (keyCode === 8/*backspace*/) {\n if (!filterValue && (selectedIds.length !== 0) && isMultipleSelect(mode)) {\n this.remove(selectedIds[selectedIds.length - 1]);\n }\n this.reset()\n } else if (keyCode === 46/*delete*/) {\n this.reset()\n } else if (keyCode === 27/*esc*/) {\n this.setState({\n isActive: false,\n filterValue: isMultipleSelect(mode) ? '' : (allowCustom ? filterValue : ''),\n });\n this.input.getInput().blur()\n this.onCancel();\n }\n // console.log('key pressed:', e.keyCode)\n }}\n />}\n {!withFilter && inputLabel && <label>{inputLabel}</label>}\n </div>\n )}\n {list}\n </div>\n )\n }\n\n onClickOutside = () => {\n const {allowCustom, required} = this.props;\n const {filterValue} = this.state;\n if (allowCustom && (!!filterValue || !required)) {\n this.onSelect()\n }\n\n this.setState({isActive: false});\n\n this.onCancel();\n };\n\n onCancel = () => {\n orNoop(this.props.onCancel)()\n };\n\n onSelect = (selectedId) => {\n const {mode, required, allowCustom, onSelect, onChange, default: defaultValue} = this.props;\n const {filterValue, selected: currentSelection} = this.state;\n\n if (selectedId == null && (!!filterValue || !required) && allowCustom && (!this.input || !this.input.check()))\n selectedId = filterValue.trim();\n\n const isMultiSelect = isMultipleSelect(mode);\n\n if (!selectedId && isMultiSelect) {\n selectedId = null;\n }\n\n // debugger\n\n const isSelected = selectedId != null;\n\n let selected = {...currentSelection};\n if (selected[selectedId] && (defaultValue || isMultiSelect)) {\n delete selected[selectedId];\n if (defaultValue && Object.keys(selected).length === 0)\n selected[defaultValue] = defaultValue;\n } else if (isSelected && (isMultiSelect)) {\n selected[selectedId] = selectedId;\n } else if (isSelected) {\n selected = {[selectedId]: selectedId};\n }\n\n const errored = required && Object.keys(selected) === 0;\n\n const isActive = mode === MODE_MULTIPLE_MINI_INLINE || (isMultiSelect && isSelected)\n\n this.setState({\n isActive: isActive,\n selected: selected,\n filterValue: isMultiSelect ? '' : (allowCustom ? selectedId || '' : ''),\n errored,\n });\n\n if (isActive && this.input)\n this.input.getInput().focus()\n\n orNoop(onSelect)(selectedId);\n orNoop(onChange)(Object.values(selected));\n };\n\n clean = (e) => {\n preventDefault(e);\n stopPropagation(e);\n\n this.setState({\n isActive: false,\n selected: {},\n filterValue: '',\n });\n\n orNoop(this.props.onSelect)(null);\n orNoop(this.props.onChange)([]);\n\n this.initSelected(this.props, this.state);\n };\n\n remove = (id) => {\n let result = {\n ...this.state,\n selected: {...this.state.selected},\n filterValue: '',\n };\n delete result.selected[id];\n this.setState(result);\n orNoop(this.props.onChange)(Object.values(result.selected));\n };\n\n onChange = (event) => {\n const value = event.target.value;\n this.setState({filterValue: value});\n }\n}\n\nexport default AutocompleteSelect;\n"],"names":["MODE_DEFAULT","MODE_INLINE","MODE_INLINE_MULTIPLE","MODE_MULTIPLE_AUTO","MODE_MULTIPLE","MODE_MULTIPLE_MINI","MODE_MINI","MODE_MULTIPLE_MINI_INLINE","DummyChild","id","label","dataConsumer","onClick","orNoop","prepareSelected","value","result","Array","isArray","reduce","map","obj","isObject","findParent","el","tag","tagName","toUpperCase","parentNode","isMultipleSelect","mode","AutocompleteSelect","props","initSelected","allowCustom","filterValue","setState","selected","isString","onClickOutside","required","state","onSelect","isActive","onCancel","selectedId","onChange","defaultValue","currentSelection","input","check","trim","isMultiSelect","isSelected","Object","keys","length","errored","getInput","focus","values","clean","e","preventDefault","stopPropagation","remove","event","target","that","focused","randomId","getRandomId","data","getSelected","isFunction","addEventListener","DOCUMENT","listener","contains","form","submitButton","querySelector","formSubmitListener","prevProps","prevState","snapshot","removeEventListener","childComponent","childProps","withArrow","withFilter","withReset","filter","inputLabel","selectedMode","prefilter","className","scrollToValue","scroll","inlineSelected","removeIcon","selectedComponent","UNDEFINED","labels","selectedIds","hasSelected","setActive","list","scrollTo","toggle","isInline","filterValueTrimmed","dataFiltered","suggestion","classNames","ref","it","f","toLowerCase","name","continuousIncludes","React","createElement","getLabel","filterCheck","keyCode","prev","next","reset","blur","Component","propTypes","PropTypes","oneOf","defaultProps"],"mappings":"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"}
|
package/Modal.js
CHANGED
|
@@ -65,7 +65,9 @@ var Modal = function (_PureComponent) {
|
|
|
65
65
|
top = _props2.top,
|
|
66
66
|
_props2$container = _props2.container,
|
|
67
67
|
container = _props2$container === void 0 ? Modal.defaultContainer : _props2$container,
|
|
68
|
-
children = _props2.children
|
|
68
|
+
children = _props2.children,
|
|
69
|
+
_props2$closeIcon = _props2.closeIcon,
|
|
70
|
+
closeIcon = _props2$closeIcon === void 0 ? 'close' : _props2$closeIcon;
|
|
69
71
|
var menu = getMenu();
|
|
70
72
|
var show = isShow();
|
|
71
73
|
var modal = ReactCreateElement("div", {
|
|
@@ -92,7 +94,7 @@ var Modal = function (_PureComponent) {
|
|
|
92
94
|
round: true,
|
|
93
95
|
onClick: beforeClose
|
|
94
96
|
}, ReactCreateElement(MaterialIcon, {
|
|
95
|
-
icon:
|
|
97
|
+
icon: closeIcon
|
|
96
98
|
}))));
|
|
97
99
|
return container ? ReactDOM.createPortal(modal, container) : modal;
|
|
98
100
|
};
|
package/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../src/react-ui-basics/Modal.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactCreateElement from './ReactCreateElement';\nimport './Modal.css'\nimport Button from \"./Button\";\nimport {classNames, orNoop, setTimeout, DOCUMENT, addEventListener, removeEventListener, createRef, UNDEFINED, stopPropagation} from \"./Tools\";\nimport {PureComponent, componentDidMount, render, propsGetter, stateGSs, componentDidUpdate} from \"./ReactConstants\";\nimport MaterialIcon from \"./MaterialIcon\";\nimport PropTypes from \"prop-types\";\n\nlet listenerRef;\nlet zIndex = 100;\n\nconst EVENT_TYPE = 'keydown';\nconst pollListener = (modal) => {\n removeEventListener(DOCUMENT, EVENT_TYPE, listenerRef);\n const listener = modal._pl;\n listener && addEventListener(DOCUMENT, EVENT_TYPE, listener);\n listenerRef = listener;\n};\n\nconst addListener = (modal, listener) => {\n const prev = listenerRef;\n prev && removeEventListener(DOCUMENT, EVENT_TYPE, prev);\n modal._pl = prev;\n addEventListener(DOCUMENT, EVENT_TYPE, listenerRef = listener);\n};\n\nclass Modal extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const [\n isShow,\n getMenu,\n getBeforeClose,\n ] = stateGSs(that, 3);\n const overlay = createRef();\n const el = createRef();\n const content = createRef();\n const props = propsGetter(that);\n\n const beforeClose = (e) => {\n stopPropagation(e);\n const bc = getBeforeClose() || props().beforeClose;\n if (!bc || bc(that.close))\n that.close(e);\n };\n\n const shouldClose = (e) => {\n const isSameModal = el().style.zIndex == zIndex - 1;\n !(e && content().contains(e.target)) && isSameModal && beforeClose(e);\n };\n\n const addTransitionListener = () => {\n const transitionend = \"transitionend\";\n let listener = () => {\n removeEventListener(overlay(), transitionend, listener);\n orNoop(isShow() ? props().onOpen : orNoop(props().onClose))();\n el() && (el().style.paddingBottom = isShow() ? '1px' : '0px'); // force invalidate scroll\n };\n addEventListener(overlay(), transitionend, listener);\n };\n that[render] = () => {\n const {className, top, container = Modal.defaultContainer, children} = props();\n const menu = getMenu();\n const show = isShow();\n const modal = <div className={classNames(`Modal`, className, show && 'show')} ref={el} onClick={shouldClose}>\n <div ref={overlay} className={classNames(`overlay`, show && 'show')}>\n </div>\n <div className={classNames(`content`, show && 'show', top && 'top')}\n style={top && {top: top + 'px'}}\n ref={content}\n >\n {React.Children.map(children, child => React.cloneElement(child, {\n modalMenuConsumer: getMenu,\n modalBeforeCloseConsumer: getBeforeClose\n }))}\n {menu}\n <Button className=\"close\" flat={true} round={true} onClick={beforeClose}>\n <MaterialIcon icon={'close'}/>\n </Button>\n </div>\n </div>;\n\n return container ? ReactDOM.createPortal(modal, container) : modal;\n };\n\n const close = that.close = () => {\n if (!isShow())\n return;\n\n zIndex--;\n addTransitionListener();\n isShow(false);\n\n pollListener(that);\n };\n const open = that.open = () => {\n if (isShow())\n return;\n\n el() && (el().style.zIndex = zIndex++);\n addTransitionListener();\n isShow(true);\n\n let listener = event => {\n if (!event.defaultPrevented && event.keyCode === 27/*escape*/)\n beforeClose();\n return true;\n };\n\n addListener(that, listener)\n };\n\n that[componentDidMount] = () => {\n const _props = props();\n orNoop(_props.open)(() => {\n setTimeout(open, 0);\n });\n orNoop(_props.close)(() => {\n setTimeout(close, 0);\n });\n _props.show && setTimeout(open, 0)\n };\n that[componentDidUpdate] = (prevProps) => {\n const show = props().show;\n if (show !== prevProps.show) {\n show ? open() : close();\n }\n };\n }\n}\n\nModal.defaultContainer = UNDEFINED;\nModal.pollListener = pollListener;\nModal.addListener = addListener;\n\nexport default Modal;\n\nif (window.isNotProductionEnvironment) {\n Modal.propTypes = {\n className: PropTypes.string,\n top: PropTypes.number,\n container: PropTypes.node,\n };\n}"],"names":["listenerRef","zIndex","EVENT_TYPE","pollListener","modal","removeEventListener","DOCUMENT","listener","_pl","addEventListener","addListener","prev","Modal","properties","that","state","stateGSs","isShow","getMenu","getBeforeClose","overlay","createRef","el","content","props","propsGetter","beforeClose","e","stopPropagation","bc","close","shouldClose","isSameModal","style","contains","target","addTransitionListener","transitionend","orNoop","onOpen","onClose","paddingBottom","render","className","top","container","defaultContainer","children","menu","show","classNames","React","Children","map","child","cloneElement","modalMenuConsumer","modalBeforeCloseConsumer","ReactDOM","createPortal","open","event","defaultPrevented","keyCode","componentDidMount","_props","setTimeout","componentDidUpdate","prevProps","PureComponent","UNDEFINED","window","isNotProductionEnvironment","propTypes","PropTypes","string","number","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../src/react-ui-basics/Modal.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactCreateElement from './ReactCreateElement';\nimport './Modal.css'\nimport Button from \"./Button\";\nimport {classNames, orNoop, setTimeout, DOCUMENT, addEventListener, removeEventListener, createRef, UNDEFINED, stopPropagation} from \"./Tools\";\nimport {PureComponent, componentDidMount, render, propsGetter, stateGSs, componentDidUpdate} from \"./ReactConstants\";\nimport MaterialIcon from \"./MaterialIcon\";\nimport PropTypes from \"prop-types\";\n\nlet listenerRef;\nlet zIndex = 100;\n\nconst EVENT_TYPE = 'keydown';\nconst pollListener = (modal) => {\n removeEventListener(DOCUMENT, EVENT_TYPE, listenerRef);\n const listener = modal._pl;\n listener && addEventListener(DOCUMENT, EVENT_TYPE, listener);\n listenerRef = listener;\n};\n\nconst addListener = (modal, listener) => {\n const prev = listenerRef;\n prev && removeEventListener(DOCUMENT, EVENT_TYPE, prev);\n modal._pl = prev;\n addEventListener(DOCUMENT, EVENT_TYPE, listenerRef = listener);\n};\n\nclass Modal extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const [\n isShow,\n getMenu,\n getBeforeClose,\n ] = stateGSs(that, 3);\n const overlay = createRef();\n const el = createRef();\n const content = createRef();\n const props = propsGetter(that);\n\n const beforeClose = (e) => {\n stopPropagation(e);\n const bc = getBeforeClose() || props().beforeClose;\n if (!bc || bc(that.close))\n that.close(e);\n };\n\n const shouldClose = (e) => {\n const isSameModal = el().style.zIndex == zIndex - 1;\n !(e && content().contains(e.target)) && isSameModal && beforeClose(e);\n };\n\n const addTransitionListener = () => {\n const transitionend = \"transitionend\";\n let listener = () => {\n removeEventListener(overlay(), transitionend, listener);\n orNoop(isShow() ? props().onOpen : orNoop(props().onClose))();\n el() && (el().style.paddingBottom = isShow() ? '1px' : '0px'); // force invalidate scroll\n };\n addEventListener(overlay(), transitionend, listener);\n };\n that[render] = () => {\n const {className, top, container = Modal.defaultContainer, children, closeIcon = 'close'} = props();\n const menu = getMenu();\n const show = isShow();\n const modal = <div className={classNames(`Modal`, className, show && 'show')} ref={el} onClick={shouldClose}>\n <div ref={overlay} className={classNames(`overlay`, show && 'show')}>\n </div>\n <div className={classNames(`content`, show && 'show', top && 'top')}\n style={top && {top: top + 'px'}}\n ref={content}\n >\n {React.Children.map(children, child => React.cloneElement(child, {\n modalMenuConsumer: getMenu,\n modalBeforeCloseConsumer: getBeforeClose\n }))}\n {menu}\n <Button className=\"close\" flat={true} round={true} onClick={beforeClose}>\n <MaterialIcon icon={closeIcon}/>\n </Button>\n </div>\n </div>;\n\n return container ? ReactDOM.createPortal(modal, container) : modal;\n };\n\n const close = that.close = () => {\n if (!isShow())\n return;\n\n zIndex--;\n addTransitionListener();\n isShow(false);\n\n pollListener(that);\n };\n const open = that.open = () => {\n if (isShow())\n return;\n\n el() && (el().style.zIndex = zIndex++);\n addTransitionListener();\n isShow(true);\n\n let listener = event => {\n if (!event.defaultPrevented && event.keyCode === 27/*escape*/)\n beforeClose();\n return true;\n };\n\n addListener(that, listener)\n };\n\n that[componentDidMount] = () => {\n const _props = props();\n orNoop(_props.open)(() => {\n setTimeout(open, 0);\n });\n orNoop(_props.close)(() => {\n setTimeout(close, 0);\n });\n _props.show && setTimeout(open, 0)\n };\n that[componentDidUpdate] = (prevProps) => {\n const show = props().show;\n if (show !== prevProps.show) {\n show ? open() : close();\n }\n };\n }\n}\n\nModal.defaultContainer = UNDEFINED;\nModal.pollListener = pollListener;\nModal.addListener = addListener;\n\nexport default Modal;\n\nif (window.isNotProductionEnvironment) {\n Modal.propTypes = {\n className: PropTypes.string,\n top: PropTypes.number,\n container: PropTypes.node,\n };\n}"],"names":["listenerRef","zIndex","EVENT_TYPE","pollListener","modal","removeEventListener","DOCUMENT","listener","_pl","addEventListener","addListener","prev","Modal","properties","that","state","stateGSs","isShow","getMenu","getBeforeClose","overlay","createRef","el","content","props","propsGetter","beforeClose","e","stopPropagation","bc","close","shouldClose","isSameModal","style","contains","target","addTransitionListener","transitionend","orNoop","onOpen","onClose","paddingBottom","render","className","top","container","defaultContainer","children","closeIcon","menu","show","classNames","React","Children","map","child","cloneElement","modalMenuConsumer","modalBeforeCloseConsumer","ReactDOM","createPortal","open","event","defaultPrevented","keyCode","componentDidMount","_props","setTimeout","componentDidUpdate","prevProps","PureComponent","UNDEFINED","window","isNotProductionEnvironment","propTypes","PropTypes","string","number","node"],"mappings":"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"}
|
package/bundle.css
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
.animated {
|
|
2
|
-
transition: opacity 250ms ease;
|
|
3
|
-
opacity: 0;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.animated.mounting, .animated.mounted {
|
|
7
|
-
opacity: 1;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
1
|
.Button {
|
|
11
2
|
position: relative;
|
|
12
3
|
min-width: 64px;
|
|
@@ -158,6 +149,15 @@
|
|
|
158
149
|
border: 0;
|
|
159
150
|
}
|
|
160
151
|
|
|
152
|
+
.animated {
|
|
153
|
+
transition: opacity 250ms ease;
|
|
154
|
+
opacity: 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.animated.mounting, .animated.mounted {
|
|
158
|
+
opacity: 1;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
161
|
.Checkbox {
|
|
162
162
|
position: relative;
|
|
163
163
|
white-space: pre;
|
|
@@ -225,6 +225,93 @@
|
|
|
225
225
|
background: rgba(0, 0, 0, 0.26);
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
.DialogModal {
|
|
229
|
+
overflow: hidden;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.DialogModal .content {
|
|
233
|
+
top: 20vh;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.Dialog {
|
|
237
|
+
background-color: white;
|
|
238
|
+
min-width: 460px;
|
|
239
|
+
max-width: 40vw;
|
|
240
|
+
padding: 15px;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.Dialog .title {
|
|
244
|
+
margin-bottom: 15px;
|
|
245
|
+
padding: 20px 50px 0px 30px;
|
|
246
|
+
font-size: 1.25rem;
|
|
247
|
+
line-height: 2rem;
|
|
248
|
+
font-weight: 400;
|
|
249
|
+
letter-spacing: 0.0125em;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.Dialog .description {
|
|
253
|
+
color: rgba(0, 0, 0, 0.54);
|
|
254
|
+
font-size: 1rem;
|
|
255
|
+
line-height: 1.5rem;
|
|
256
|
+
font-weight: 400;
|
|
257
|
+
letter-spacing: 0.03125em;
|
|
258
|
+
margin-top: 20px;
|
|
259
|
+
padding: 0 24px 24px;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.Dialog > div.row {
|
|
263
|
+
margin-bottom: 15px;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.Dialog > div.row:last-child {
|
|
267
|
+
margin-bottom: 0;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.DNDContainer {
|
|
271
|
+
position: relative;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.DNDContainer .Draggable[draggable=true], .DNDContainer .Draggable [draggable=true] {
|
|
275
|
+
cursor: pointer;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.DNDContainer .Draggable.placeholder {
|
|
279
|
+
opacity: 0.2;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.DNDContainer .Draggable.copy {
|
|
283
|
+
position: absolute;
|
|
284
|
+
box-sizing: border-box;
|
|
285
|
+
will-change: transform;
|
|
286
|
+
opacity: 0;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.DNDContainer .Draggable.dragged {
|
|
290
|
+
z-index: 10;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.DNDContainer .overlay {
|
|
294
|
+
position: absolute;
|
|
295
|
+
top: 0;
|
|
296
|
+
left: 0;
|
|
297
|
+
right: 0;
|
|
298
|
+
bottom: 0;
|
|
299
|
+
pointer-events: none;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.CircleProgress {
|
|
303
|
+
width: 48px;
|
|
304
|
+
height: 48px;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.CircleProgress .line {
|
|
308
|
+
stroke-width: 2px;
|
|
309
|
+
stroke: black;
|
|
310
|
+
stroke-linecap: square;
|
|
311
|
+
fill: none;
|
|
312
|
+
transition: stroke-dashoffset 0.2s ease;
|
|
313
|
+
}
|
|
314
|
+
|
|
228
315
|
.AutocompleteSelect {
|
|
229
316
|
display: inline-flex;
|
|
230
317
|
flex-flow: column;
|
|
@@ -520,93 +607,6 @@
|
|
|
520
607
|
position: absolute;
|
|
521
608
|
}
|
|
522
609
|
|
|
523
|
-
.CircleProgress {
|
|
524
|
-
width: 48px;
|
|
525
|
-
height: 48px;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
.CircleProgress .line {
|
|
529
|
-
stroke-width: 2px;
|
|
530
|
-
stroke: black;
|
|
531
|
-
stroke-linecap: square;
|
|
532
|
-
fill: none;
|
|
533
|
-
transition: stroke-dashoffset 0.2s ease;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
.DialogModal {
|
|
537
|
-
overflow: hidden;
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
.DialogModal .content {
|
|
541
|
-
top: 20vh;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
.Dialog {
|
|
545
|
-
background-color: white;
|
|
546
|
-
min-width: 460px;
|
|
547
|
-
max-width: 40vw;
|
|
548
|
-
padding: 15px;
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
.Dialog .title {
|
|
552
|
-
margin-bottom: 15px;
|
|
553
|
-
padding: 20px 50px 0px 30px;
|
|
554
|
-
font-size: 1.25rem;
|
|
555
|
-
line-height: 2rem;
|
|
556
|
-
font-weight: 400;
|
|
557
|
-
letter-spacing: 0.0125em;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
.Dialog .description {
|
|
561
|
-
color: rgba(0, 0, 0, 0.54);
|
|
562
|
-
font-size: 1rem;
|
|
563
|
-
line-height: 1.5rem;
|
|
564
|
-
font-weight: 400;
|
|
565
|
-
letter-spacing: 0.03125em;
|
|
566
|
-
margin-top: 20px;
|
|
567
|
-
padding: 0 24px 24px;
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
.Dialog > div.row {
|
|
571
|
-
margin-bottom: 15px;
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
.Dialog > div.row:last-child {
|
|
575
|
-
margin-bottom: 0;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
.DNDContainer {
|
|
579
|
-
position: relative;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
.DNDContainer .Draggable[draggable=true], .DNDContainer .Draggable [draggable=true] {
|
|
583
|
-
cursor: pointer;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
.DNDContainer .Draggable.placeholder {
|
|
587
|
-
opacity: 0.2;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
.DNDContainer .Draggable.copy {
|
|
591
|
-
position: absolute;
|
|
592
|
-
box-sizing: border-box;
|
|
593
|
-
will-change: transform;
|
|
594
|
-
opacity: 0;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
.DNDContainer .Draggable.dragged {
|
|
598
|
-
z-index: 10;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
.DNDContainer .overlay {
|
|
602
|
-
position: absolute;
|
|
603
|
-
top: 0;
|
|
604
|
-
left: 0;
|
|
605
|
-
right: 0;
|
|
606
|
-
bottom: 0;
|
|
607
|
-
pointer-events: none;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
610
|
.DropFileInput {
|
|
611
611
|
flex-grow: 1;
|
|
612
612
|
}
|
|
@@ -634,120 +634,51 @@
|
|
|
634
634
|
margin-right: 10px;
|
|
635
635
|
}
|
|
636
636
|
|
|
637
|
-
.
|
|
637
|
+
.Dropzone {
|
|
638
|
+
position: relative;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.Dropzone > .overlay {
|
|
638
642
|
position: absolute;
|
|
639
643
|
left: 0;
|
|
640
644
|
right: 0;
|
|
641
645
|
top: 0;
|
|
642
646
|
bottom: 0;
|
|
643
|
-
background-color:
|
|
644
|
-
z-index:
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
.FormUploadProgress .wrapper {
|
|
652
|
-
position: sticky;
|
|
653
|
-
top: 40%;
|
|
654
|
-
margin-top: 40%;
|
|
655
|
-
margin-left: 50%;
|
|
656
|
-
transform: translateX(-50%);
|
|
647
|
+
background-color: #38ADC4;
|
|
648
|
+
z-index: 1;
|
|
649
|
+
opacity: 0;
|
|
650
|
+
transition: all 0.2s ease;
|
|
651
|
+
transition-delay: 100ms;
|
|
652
|
+
visibility: hidden;
|
|
657
653
|
display: flex;
|
|
658
|
-
flex-flow: column;
|
|
659
654
|
justify-content: center;
|
|
660
655
|
align-items: center;
|
|
661
656
|
}
|
|
662
657
|
|
|
663
|
-
.
|
|
658
|
+
.Dropzone > .overlay .drop {
|
|
659
|
+
border-radius: 4px;
|
|
660
|
+
border: 1px dashed #FFFFFF;
|
|
664
661
|
position: absolute;
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
662
|
+
top: 18px;
|
|
663
|
+
left: 18px;
|
|
664
|
+
right: 18px;
|
|
665
|
+
bottom: 18px;
|
|
666
|
+
display: flex;
|
|
667
|
+
justify-content: center;
|
|
668
|
+
align-items: center;
|
|
669
|
+
font-weight: 500;
|
|
670
|
+
font-size: 18px;
|
|
671
|
+
color: #FFFFFF;
|
|
669
672
|
}
|
|
670
673
|
|
|
671
|
-
.
|
|
672
|
-
|
|
674
|
+
.Dropzone.dragging > .overlay {
|
|
675
|
+
opacity: 0.7;
|
|
676
|
+
visibility: visible;
|
|
677
|
+
transition-delay: 0s;
|
|
673
678
|
}
|
|
674
679
|
|
|
675
|
-
.
|
|
676
|
-
|
|
677
|
-
height: 107px;
|
|
678
|
-
min-height: 107px;
|
|
679
|
-
display: flex;
|
|
680
|
-
justify-content: center;
|
|
681
|
-
align-items: center;
|
|
682
|
-
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
|
|
683
|
-
border-radius: 50%;
|
|
684
|
-
background: white;
|
|
685
|
-
position: relative;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
.FormUploadProgress .wrapper > .progress > .value {
|
|
689
|
-
display: inline-block;
|
|
690
|
-
margin-top: 5px;
|
|
691
|
-
font-weight: bold;
|
|
692
|
-
line-height: 16px;
|
|
693
|
-
font-size: 13px;
|
|
694
|
-
text-align: center;
|
|
695
|
-
color: #818181;
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
.FormUploadProgress .wrapper .cancel {
|
|
699
|
-
min-width: 107px;
|
|
700
|
-
margin-top: 20px;
|
|
701
|
-
background-color: white;
|
|
702
|
-
color: #F96B5C;
|
|
703
|
-
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
.Dropzone {
|
|
707
|
-
position: relative;
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
.Dropzone > .overlay {
|
|
711
|
-
position: absolute;
|
|
712
|
-
left: 0;
|
|
713
|
-
right: 0;
|
|
714
|
-
top: 0;
|
|
715
|
-
bottom: 0;
|
|
716
|
-
background-color: #38ADC4;
|
|
717
|
-
z-index: 1;
|
|
718
|
-
opacity: 0;
|
|
719
|
-
transition: all 0.2s ease;
|
|
720
|
-
transition-delay: 100ms;
|
|
721
|
-
visibility: hidden;
|
|
722
|
-
display: flex;
|
|
723
|
-
justify-content: center;
|
|
724
|
-
align-items: center;
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
.Dropzone > .overlay .drop {
|
|
728
|
-
border-radius: 4px;
|
|
729
|
-
border: 1px dashed #FFFFFF;
|
|
730
|
-
position: absolute;
|
|
731
|
-
top: 18px;
|
|
732
|
-
left: 18px;
|
|
733
|
-
right: 18px;
|
|
734
|
-
bottom: 18px;
|
|
735
|
-
display: flex;
|
|
736
|
-
justify-content: center;
|
|
737
|
-
align-items: center;
|
|
738
|
-
font-weight: 500;
|
|
739
|
-
font-size: 18px;
|
|
740
|
-
color: #FFFFFF;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
.Dropzone.dragging > .overlay {
|
|
744
|
-
opacity: 0.7;
|
|
745
|
-
visibility: visible;
|
|
746
|
-
transition-delay: 0s;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
.Dropzone.dragging > * {
|
|
750
|
-
pointer-events: none;
|
|
680
|
+
.Dropzone.dragging > * {
|
|
681
|
+
pointer-events: none;
|
|
751
682
|
}
|
|
752
683
|
|
|
753
684
|
.Dropzone > input.file {
|
|
@@ -1103,6 +1034,75 @@
|
|
|
1103
1034
|
font-size: 24px;
|
|
1104
1035
|
}
|
|
1105
1036
|
|
|
1037
|
+
.FormUploadProgress {
|
|
1038
|
+
position: absolute;
|
|
1039
|
+
left: 0;
|
|
1040
|
+
right: 0;
|
|
1041
|
+
top: 0;
|
|
1042
|
+
bottom: 0;
|
|
1043
|
+
background-color: rgba(255, 255, 255, 0.6);
|
|
1044
|
+
z-index: 2;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
.FormUploadProgress.animated.mounting, .FormUploadProgress.animated.mounted {
|
|
1048
|
+
transition-delay: 500ms;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
.FormUploadProgress .wrapper {
|
|
1052
|
+
position: sticky;
|
|
1053
|
+
top: 40%;
|
|
1054
|
+
margin-top: 40%;
|
|
1055
|
+
margin-left: 50%;
|
|
1056
|
+
transform: translateX(-50%);
|
|
1057
|
+
display: flex;
|
|
1058
|
+
flex-flow: column;
|
|
1059
|
+
justify-content: center;
|
|
1060
|
+
align-items: center;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
.FormUploadProgress .wrapper .CircleProgress, .FormUploadProgress .wrapper .SpinningProgress {
|
|
1064
|
+
position: absolute;
|
|
1065
|
+
width: 107px;
|
|
1066
|
+
height: 107px;
|
|
1067
|
+
top: 0;
|
|
1068
|
+
left: 0;
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
.FormUploadProgress .wrapper .CircleProgress .line, .FormUploadProgress .wrapper .SpinningProgress .line {
|
|
1072
|
+
stroke: #2196F3;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
.FormUploadProgress .wrapper > .progress {
|
|
1076
|
+
width: 107px;
|
|
1077
|
+
height: 107px;
|
|
1078
|
+
min-height: 107px;
|
|
1079
|
+
display: flex;
|
|
1080
|
+
justify-content: center;
|
|
1081
|
+
align-items: center;
|
|
1082
|
+
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
|
|
1083
|
+
border-radius: 50%;
|
|
1084
|
+
background: white;
|
|
1085
|
+
position: relative;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
.FormUploadProgress .wrapper > .progress > .value {
|
|
1089
|
+
display: inline-block;
|
|
1090
|
+
margin-top: 5px;
|
|
1091
|
+
font-weight: bold;
|
|
1092
|
+
line-height: 16px;
|
|
1093
|
+
font-size: 13px;
|
|
1094
|
+
text-align: center;
|
|
1095
|
+
color: #818181;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
.FormUploadProgress .wrapper .cancel {
|
|
1099
|
+
min-width: 107px;
|
|
1100
|
+
margin-top: 20px;
|
|
1101
|
+
background-color: white;
|
|
1102
|
+
color: #F96B5C;
|
|
1103
|
+
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
1106
|
.Modal {
|
|
1107
1107
|
display: block;
|
|
1108
1108
|
position: fixed;
|
|
@@ -1305,6 +1305,104 @@
|
|
|
1305
1305
|
will-change: left;
|
|
1306
1306
|
}
|
|
1307
1307
|
|
|
1308
|
+
.Snackbar {
|
|
1309
|
+
transform: translateX(-50%);
|
|
1310
|
+
overflow: hidden;
|
|
1311
|
+
background-color: #323232;
|
|
1312
|
+
padding: 14px 24px 14px 24px;
|
|
1313
|
+
color: #fff;
|
|
1314
|
+
min-width: 288px;
|
|
1315
|
+
max-width: 568px;
|
|
1316
|
+
position: fixed;
|
|
1317
|
+
bottom: -50px;
|
|
1318
|
+
left: 50%;
|
|
1319
|
+
display: flex;
|
|
1320
|
+
flex-wrap: nowrap;
|
|
1321
|
+
align-items: center;
|
|
1322
|
+
opacity: 0;
|
|
1323
|
+
transition: bottom 0.25s ease, opacity 0.2s ease;
|
|
1324
|
+
border-radius: 4px;
|
|
1325
|
+
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
.Snackbar.shown {
|
|
1329
|
+
bottom: 15px;
|
|
1330
|
+
opacity: 1;
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
.Snackbar .message {
|
|
1334
|
+
overflow: hidden;
|
|
1335
|
+
line-height: 1.2em;
|
|
1336
|
+
min-height: 1.2em;
|
|
1337
|
+
max-height: 2.4em;
|
|
1338
|
+
flex: 1;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
.Snackbar .action {
|
|
1342
|
+
text-transform: uppercase;
|
|
1343
|
+
font-weight: bold;
|
|
1344
|
+
margin-left: 48px;
|
|
1345
|
+
color: #bf3727;
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
.Snackbar .action a {
|
|
1349
|
+
text-decoration: none;
|
|
1350
|
+
color: #bf3727;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
.SpinningProgress {
|
|
1354
|
+
width: 48px;
|
|
1355
|
+
height: 48px;
|
|
1356
|
+
position: relative;
|
|
1357
|
+
margin: 0 auto;
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
.SpinningProgress:before {
|
|
1361
|
+
content: "";
|
|
1362
|
+
display: block;
|
|
1363
|
+
padding-top: 100%;
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1366
|
+
.SpinningProgress .circular {
|
|
1367
|
+
animation: rotate 2s linear infinite;
|
|
1368
|
+
height: 100%;
|
|
1369
|
+
transform-origin: center center;
|
|
1370
|
+
width: 100%;
|
|
1371
|
+
position: absolute;
|
|
1372
|
+
top: 0;
|
|
1373
|
+
bottom: 0;
|
|
1374
|
+
left: 0;
|
|
1375
|
+
right: 0;
|
|
1376
|
+
margin: auto;
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
.SpinningProgress .line {
|
|
1380
|
+
stroke: black;
|
|
1381
|
+
stroke-width: 2px;
|
|
1382
|
+
stroke-dasharray: 1, 96;
|
|
1383
|
+
stroke-dashoffset: 0;
|
|
1384
|
+
animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
@keyframes rotate {
|
|
1388
|
+
100% {
|
|
1389
|
+
transform: rotate(360deg);
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
@keyframes dash {
|
|
1393
|
+
0% {
|
|
1394
|
+
stroke-dasharray: 1, 96;
|
|
1395
|
+
stroke-dashoffset: 0;
|
|
1396
|
+
}
|
|
1397
|
+
50% {
|
|
1398
|
+
stroke-dasharray: 43, 96;
|
|
1399
|
+
stroke-dashoffset: -17px;
|
|
1400
|
+
}
|
|
1401
|
+
100% {
|
|
1402
|
+
stroke-dasharray: 43, 96;
|
|
1403
|
+
stroke-dashoffset: -53px;
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1308
1406
|
.Switch {
|
|
1309
1407
|
display: inline-flex;
|
|
1310
1408
|
padding-top: 5px;
|
|
@@ -1387,49 +1485,118 @@
|
|
|
1387
1485
|
display: none;
|
|
1388
1486
|
}
|
|
1389
1487
|
|
|
1390
|
-
.
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
bottom: -50px;
|
|
1400
|
-
left: 50%;
|
|
1401
|
-
display: flex;
|
|
1402
|
-
flex-wrap: nowrap;
|
|
1403
|
-
align-items: center;
|
|
1404
|
-
opacity: 0;
|
|
1405
|
-
transition: bottom 0.25s ease, opacity 0.2s ease;
|
|
1406
|
-
border-radius: 4px;
|
|
1407
|
-
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
|
|
1408
|
-
}
|
|
1409
|
-
|
|
1410
|
-
.Snackbar.shown {
|
|
1411
|
-
bottom: 15px;
|
|
1412
|
-
opacity: 1;
|
|
1413
|
-
}
|
|
1488
|
+
.Table {
|
|
1489
|
+
font-family: Roboto, sans-serif;
|
|
1490
|
+
font-size: 14px;
|
|
1491
|
+
color: #1e252d;
|
|
1492
|
+
border-spacing: 0;
|
|
1493
|
+
border-collapse: collapse;
|
|
1494
|
+
width: 100%;
|
|
1495
|
+
position: relative;
|
|
1496
|
+
}
|
|
1414
1497
|
|
|
1415
|
-
.
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
max-height: 2.4em;
|
|
1420
|
-
flex: 1;
|
|
1498
|
+
.Table td, .Table th {
|
|
1499
|
+
padding: 5px;
|
|
1500
|
+
font-weight: 500;
|
|
1501
|
+
color: #2e2e2e;
|
|
1421
1502
|
}
|
|
1422
1503
|
|
|
1423
|
-
.
|
|
1424
|
-
|
|
1504
|
+
.Table td {
|
|
1505
|
+
height: 48px;
|
|
1506
|
+
border-bottom: 1px solid #ebebeb;
|
|
1507
|
+
border-top: 1px solid #ebebeb;
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
.Table td:first-child {
|
|
1511
|
+
padding-left: 45px;
|
|
1512
|
+
}
|
|
1513
|
+
|
|
1514
|
+
.Table td:last-child {
|
|
1515
|
+
padding-right: 45px;
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
.Table th {
|
|
1519
|
+
color: #808080;
|
|
1520
|
+
height: 55px;
|
|
1521
|
+
padding: 0px;
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
.Table th .sortable {
|
|
1525
|
+
cursor: pointer;
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
.Table th .sortable.active {
|
|
1425
1529
|
font-weight: bold;
|
|
1426
|
-
margin-left: 48px;
|
|
1427
|
-
color: #bf3727;
|
|
1428
1530
|
}
|
|
1429
1531
|
|
|
1430
|
-
.
|
|
1431
|
-
|
|
1432
|
-
|
|
1532
|
+
.Table th .sortable.active .material-icons {
|
|
1533
|
+
font-size: 16px;
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
.Table th .sortable.false {
|
|
1537
|
+
padding-right: 22px;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
.Table th:first-child .hidden, .Table th:first-child .fixed {
|
|
1541
|
+
padding-left: 45px;
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
.Table th:last-child .hidden, .Table th:last-child .fixed {
|
|
1545
|
+
padding-right: 45px;
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
.Table th .hidden {
|
|
1549
|
+
color: transparent;
|
|
1550
|
+
height: 0px;
|
|
1551
|
+
padding: 5px;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
.Table th .fixed {
|
|
1555
|
+
font-weight: normal;
|
|
1556
|
+
display: flex;
|
|
1557
|
+
flex-flow: row;
|
|
1558
|
+
justify-items: center;
|
|
1559
|
+
align-items: center;
|
|
1560
|
+
text-align: left;
|
|
1561
|
+
height: 56px;
|
|
1562
|
+
padding: 0px 5px;
|
|
1563
|
+
background-color: white;
|
|
1564
|
+
position: absolute;
|
|
1565
|
+
top: 0px;
|
|
1566
|
+
z-index: 1;
|
|
1567
|
+
box-sizing: border-box;
|
|
1568
|
+
border-bottom: 1px solid #ebebeb;
|
|
1569
|
+
border-top: 1px solid #ebebeb;
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
.Table tbody tr:hover {
|
|
1573
|
+
background-color: #f2f2f2;
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
.Table tbody tr.disabled td {
|
|
1577
|
+
color: #93a4b7;
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1580
|
+
.Table .ro {
|
|
1581
|
+
color: #47576a;
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
.Table .editable {
|
|
1585
|
+
cursor: pointer;
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
.Table .editable > .TextField {
|
|
1589
|
+
height: 20px !important;
|
|
1590
|
+
margin: 0px;
|
|
1591
|
+
position: relative;
|
|
1592
|
+
display: block;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
.Table .editable > .TextField input {
|
|
1596
|
+
width: 100%;
|
|
1597
|
+
height: 20px;
|
|
1598
|
+
padding: 0px;
|
|
1599
|
+
background-color: #f0f0f0;
|
|
1433
1600
|
}
|
|
1434
1601
|
|
|
1435
1602
|
.TextField {
|
|
@@ -1575,173 +1742,6 @@
|
|
|
1575
1742
|
animation-name: shake;
|
|
1576
1743
|
}
|
|
1577
1744
|
|
|
1578
|
-
.SpinningProgress {
|
|
1579
|
-
width: 48px;
|
|
1580
|
-
height: 48px;
|
|
1581
|
-
position: relative;
|
|
1582
|
-
margin: 0 auto;
|
|
1583
|
-
}
|
|
1584
|
-
|
|
1585
|
-
.SpinningProgress:before {
|
|
1586
|
-
content: "";
|
|
1587
|
-
display: block;
|
|
1588
|
-
padding-top: 100%;
|
|
1589
|
-
}
|
|
1590
|
-
|
|
1591
|
-
.SpinningProgress .circular {
|
|
1592
|
-
animation: rotate 2s linear infinite;
|
|
1593
|
-
height: 100%;
|
|
1594
|
-
transform-origin: center center;
|
|
1595
|
-
width: 100%;
|
|
1596
|
-
position: absolute;
|
|
1597
|
-
top: 0;
|
|
1598
|
-
bottom: 0;
|
|
1599
|
-
left: 0;
|
|
1600
|
-
right: 0;
|
|
1601
|
-
margin: auto;
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
.SpinningProgress .line {
|
|
1605
|
-
stroke: black;
|
|
1606
|
-
stroke-width: 2px;
|
|
1607
|
-
stroke-dasharray: 1, 96;
|
|
1608
|
-
stroke-dashoffset: 0;
|
|
1609
|
-
animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
|
-
@keyframes rotate {
|
|
1613
|
-
100% {
|
|
1614
|
-
transform: rotate(360deg);
|
|
1615
|
-
}
|
|
1616
|
-
}
|
|
1617
|
-
@keyframes dash {
|
|
1618
|
-
0% {
|
|
1619
|
-
stroke-dasharray: 1, 96;
|
|
1620
|
-
stroke-dashoffset: 0;
|
|
1621
|
-
}
|
|
1622
|
-
50% {
|
|
1623
|
-
stroke-dasharray: 43, 96;
|
|
1624
|
-
stroke-dashoffset: -17px;
|
|
1625
|
-
}
|
|
1626
|
-
100% {
|
|
1627
|
-
stroke-dasharray: 43, 96;
|
|
1628
|
-
stroke-dashoffset: -53px;
|
|
1629
|
-
}
|
|
1630
|
-
}
|
|
1631
|
-
.Table {
|
|
1632
|
-
font-family: Roboto, sans-serif;
|
|
1633
|
-
font-size: 14px;
|
|
1634
|
-
color: #1e252d;
|
|
1635
|
-
border-spacing: 0;
|
|
1636
|
-
border-collapse: collapse;
|
|
1637
|
-
width: 100%;
|
|
1638
|
-
position: relative;
|
|
1639
|
-
}
|
|
1640
|
-
|
|
1641
|
-
.Table td, .Table th {
|
|
1642
|
-
padding: 5px;
|
|
1643
|
-
font-weight: 500;
|
|
1644
|
-
color: #2e2e2e;
|
|
1645
|
-
}
|
|
1646
|
-
|
|
1647
|
-
.Table td {
|
|
1648
|
-
height: 48px;
|
|
1649
|
-
border-bottom: 1px solid #ebebeb;
|
|
1650
|
-
border-top: 1px solid #ebebeb;
|
|
1651
|
-
}
|
|
1652
|
-
|
|
1653
|
-
.Table td:first-child {
|
|
1654
|
-
padding-left: 45px;
|
|
1655
|
-
}
|
|
1656
|
-
|
|
1657
|
-
.Table td:last-child {
|
|
1658
|
-
padding-right: 45px;
|
|
1659
|
-
}
|
|
1660
|
-
|
|
1661
|
-
.Table th {
|
|
1662
|
-
color: #808080;
|
|
1663
|
-
height: 55px;
|
|
1664
|
-
padding: 0px;
|
|
1665
|
-
}
|
|
1666
|
-
|
|
1667
|
-
.Table th .sortable {
|
|
1668
|
-
cursor: pointer;
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
|
-
.Table th .sortable.active {
|
|
1672
|
-
font-weight: bold;
|
|
1673
|
-
}
|
|
1674
|
-
|
|
1675
|
-
.Table th .sortable.active .material-icons {
|
|
1676
|
-
font-size: 16px;
|
|
1677
|
-
}
|
|
1678
|
-
|
|
1679
|
-
.Table th .sortable.false {
|
|
1680
|
-
padding-right: 22px;
|
|
1681
|
-
}
|
|
1682
|
-
|
|
1683
|
-
.Table th:first-child .hidden, .Table th:first-child .fixed {
|
|
1684
|
-
padding-left: 45px;
|
|
1685
|
-
}
|
|
1686
|
-
|
|
1687
|
-
.Table th:last-child .hidden, .Table th:last-child .fixed {
|
|
1688
|
-
padding-right: 45px;
|
|
1689
|
-
}
|
|
1690
|
-
|
|
1691
|
-
.Table th .hidden {
|
|
1692
|
-
color: transparent;
|
|
1693
|
-
height: 0px;
|
|
1694
|
-
padding: 5px;
|
|
1695
|
-
}
|
|
1696
|
-
|
|
1697
|
-
.Table th .fixed {
|
|
1698
|
-
font-weight: normal;
|
|
1699
|
-
display: flex;
|
|
1700
|
-
flex-flow: row;
|
|
1701
|
-
justify-items: center;
|
|
1702
|
-
align-items: center;
|
|
1703
|
-
text-align: left;
|
|
1704
|
-
height: 56px;
|
|
1705
|
-
padding: 0px 5px;
|
|
1706
|
-
background-color: white;
|
|
1707
|
-
position: absolute;
|
|
1708
|
-
top: 0px;
|
|
1709
|
-
z-index: 1;
|
|
1710
|
-
box-sizing: border-box;
|
|
1711
|
-
border-bottom: 1px solid #ebebeb;
|
|
1712
|
-
border-top: 1px solid #ebebeb;
|
|
1713
|
-
}
|
|
1714
|
-
|
|
1715
|
-
.Table tbody tr:hover {
|
|
1716
|
-
background-color: #f2f2f2;
|
|
1717
|
-
}
|
|
1718
|
-
|
|
1719
|
-
.Table tbody tr.disabled td {
|
|
1720
|
-
color: #93a4b7;
|
|
1721
|
-
}
|
|
1722
|
-
|
|
1723
|
-
.Table .ro {
|
|
1724
|
-
color: #47576a;
|
|
1725
|
-
}
|
|
1726
|
-
|
|
1727
|
-
.Table .editable {
|
|
1728
|
-
cursor: pointer;
|
|
1729
|
-
}
|
|
1730
|
-
|
|
1731
|
-
.Table .editable > .TextField {
|
|
1732
|
-
height: 20px !important;
|
|
1733
|
-
margin: 0px;
|
|
1734
|
-
position: relative;
|
|
1735
|
-
display: block;
|
|
1736
|
-
}
|
|
1737
|
-
|
|
1738
|
-
.Table .editable > .TextField input {
|
|
1739
|
-
width: 100%;
|
|
1740
|
-
height: 20px;
|
|
1741
|
-
padding: 0px;
|
|
1742
|
-
background-color: #f0f0f0;
|
|
1743
|
-
}
|
|
1744
|
-
|
|
1745
1745
|
.ScrollableTable .Scrollable .scrollbar {
|
|
1746
1746
|
top: 56px;
|
|
1747
1747
|
}
|
package/index.js
CHANGED
|
@@ -30,4 +30,6 @@ export { default as Table } from './Table.js';
|
|
|
30
30
|
export { default as ScrollableTable } from './ScrollableTable.js';
|
|
31
31
|
export { default as DroppableList } from './DroppableList.js';
|
|
32
32
|
export { default as DroppableHorizontalList } from './DroppableHorizontalList.js';
|
|
33
|
+
import * as Store from './store/Store.js';
|
|
34
|
+
export { Store as StoreTools };
|
|
33
35
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { typeof as _typeof, toConsumableArray as _toConsumableArray, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { UNDEFINED } from '../Tools.js';
|
|
3
|
+
|
|
4
|
+
var createProxy = function createProxy(target) {
|
|
5
|
+
if (target.__isProxy) return target;
|
|
6
|
+
var changedValue = UNDEFINED;
|
|
7
|
+
var deletedKeys = UNDEFINED;
|
|
8
|
+
var innerProxies = UNDEFINED;
|
|
9
|
+
var isChanged = function isChanged() {
|
|
10
|
+
return changedValue || innerProxies && Object.values(innerProxies).some(function (it) {
|
|
11
|
+
return it.__changed;
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
return new Proxy(target, {
|
|
15
|
+
get: function get(target, prop) {
|
|
16
|
+
if (prop === '__isProxy') return true;
|
|
17
|
+
if (prop === '__changed') return isChanged();
|
|
18
|
+
if (prop === 'bake') return function () {
|
|
19
|
+
if (!isChanged()) return target;
|
|
20
|
+
if (changedValue && !innerProxies) return changedValue;
|
|
21
|
+
if (innerProxies) {
|
|
22
|
+
var result = changedValue || _objectSpread2({}, target);
|
|
23
|
+
for (var key in innerProxies) {
|
|
24
|
+
result[key] = innerProxies[key].bake();
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
throw new Error('state not implemented yet');
|
|
29
|
+
};
|
|
30
|
+
var innerProxy = innerProxies && innerProxies[prop];
|
|
31
|
+
if (innerProxy) return innerProxy;
|
|
32
|
+
var changed = changedValue && changedValue[prop];
|
|
33
|
+
if (changed !== UNDEFINED) return changed;
|
|
34
|
+
if (deletedKeys && deletedKeys[prop]) return null;
|
|
35
|
+
var value = target[prop];
|
|
36
|
+
if (_typeof(value) === 'object') {
|
|
37
|
+
!innerProxies && (innerProxies = {});
|
|
38
|
+
return innerProxies[prop] = createProxy(value);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
},
|
|
42
|
+
set: function set(target, prop, newval) {
|
|
43
|
+
if (!changedValue) changedValue = Array.isArray(target) ? _toConsumableArray(target) : _objectSpread2({}, target);
|
|
44
|
+
if (_typeof(newval) === 'object') {
|
|
45
|
+
!innerProxies && (innerProxies = {});
|
|
46
|
+
innerProxies[prop] = newval = createProxy(newval);
|
|
47
|
+
}
|
|
48
|
+
changedValue[prop] = newval;
|
|
49
|
+
return true;
|
|
50
|
+
},
|
|
51
|
+
deleteProperty: function deleteProperty(target, prop) {
|
|
52
|
+
!changedValue && (changedValue = Array.isArray(target) ? _toConsumableArray(target) : _objectSpread2({}, target));
|
|
53
|
+
if (!prop in changedValue) return false;
|
|
54
|
+
delete changedValue[prop];
|
|
55
|
+
innerProxies && delete innerProxies[prop];
|
|
56
|
+
!deletedKeys && (deletedKeys = {});
|
|
57
|
+
deletedKeys[prop] = true;
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export { createProxy };
|
|
64
|
+
//# sourceMappingURL=ProxyTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyTools.js","sources":["../../src/react-ui-basics/store/ProxyTools.js"],"sourcesContent":["import {UNDEFINED} from \"../Tools\";\n\nexport const createProxy = (target) => {\n if (target.__isProxy)\n return target;\n\n let changedValue = UNDEFINED;\n let deletedKeys = UNDEFINED;\n let innerProxies = UNDEFINED\n const isChanged = () => changedValue || (innerProxies && Object.values(innerProxies).some(it => it.__changed));\n\n return new Proxy(target, {\n get: function (target, prop) {\n if (prop === '__isProxy')\n return true\n if (prop === '__changed')\n return isChanged();\n if (prop === 'bake')\n return () => {\n // console.log('bake', changedValue, innerProxies)\n if (!isChanged())\n return target\n\n if (changedValue && !innerProxies)\n return changedValue\n\n if (innerProxies) {\n const result = changedValue || {...target};\n\n for (let key in innerProxies) {\n result[key] = innerProxies[key].bake()\n }\n return result\n }\n\n throw new Error('state not implemented yet')\n }\n\n // console.log('get', {target, prop})\n const innerProxy = innerProxies && innerProxies[prop];\n if (innerProxy)\n return innerProxy\n\n const changed = changedValue && changedValue[prop]\n if (changed !== UNDEFINED)\n return changed\n\n if (deletedKeys && deletedKeys[prop])\n return null\n\n const value = target[prop];\n if (typeof value === 'object') {\n !innerProxies && (innerProxies = {})\n return innerProxies[prop] = createProxy(value)\n }\n\n return value;\n },\n set: function (target, prop, newval) {\n // console.log('set', {target, prop, newval})\n if (!changedValue) changedValue = Array.isArray(target) ? [...target] : {...target}\n\n if (typeof newval === 'object') {\n !innerProxies && (innerProxies = {})\n innerProxies[prop] = newval = createProxy(newval)\n }\n changedValue[prop] = newval\n // console.log('changedValue', changedValue)\n return true;\n },\n deleteProperty: function (target, prop) {\n // console.log('delete', {target, prop})\n !changedValue && (changedValue = Array.isArray(target) ? [...target] : {...target})\n\n if (!prop in changedValue)\n return false;\n\n delete changedValue[prop]\n innerProxies && delete innerProxies[prop]\n !deletedKeys && (deletedKeys = {})\n deletedKeys[prop] = true;\n return true;\n }\n })\n}\n"],"names":["createProxy","target","__isProxy","changedValue","UNDEFINED","deletedKeys","innerProxies","isChanged","Object","values","some","it","__changed","Proxy","get","prop","result","key","bake","Error","innerProxy","changed","value","set","newval","Array","isArray","deleteProperty"],"mappings":"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"}
|
package/store/Store.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { classCallCheck as _classCallCheck, slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { createProxy } from './ProxyTools.js';
|
|
4
|
+
|
|
5
|
+
var STORE = {};
|
|
6
|
+
var COUNTER = 0;
|
|
7
|
+
var Store = function Store(initialState, name) {
|
|
8
|
+
_classCallCheck(this, Store);
|
|
9
|
+
var that = this;
|
|
10
|
+
that.name = name;
|
|
11
|
+
var listeners = [];
|
|
12
|
+
var index = COUNTER++;
|
|
13
|
+
STORE[index] = initialState;
|
|
14
|
+
that.get = function () {
|
|
15
|
+
return STORE[index];
|
|
16
|
+
};
|
|
17
|
+
that.set = function (mutator) {
|
|
18
|
+
var proxy = createProxy(STORE[index]);
|
|
19
|
+
mutator(proxy);
|
|
20
|
+
STORE[index] = proxy.bake();
|
|
21
|
+
listeners.forEach(function (fn) {
|
|
22
|
+
return fn();
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
that.reset = function () {
|
|
26
|
+
STORE[index] = initialState;
|
|
27
|
+
};
|
|
28
|
+
that.subscribe = function (fn) {
|
|
29
|
+
listeners.push(fn);
|
|
30
|
+
};
|
|
31
|
+
that.unsubscribe = function (fn) {
|
|
32
|
+
listeners = listeners.filter(function (f) {
|
|
33
|
+
return f !== fn;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
that.toString = function () {
|
|
37
|
+
return that.name;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
function getGlobalState() {
|
|
41
|
+
return STORE;
|
|
42
|
+
}
|
|
43
|
+
function resetGlobalState() {
|
|
44
|
+
STORE = {};
|
|
45
|
+
}
|
|
46
|
+
function replaceGlobalState(state) {
|
|
47
|
+
STORE = state;
|
|
48
|
+
}
|
|
49
|
+
var defaultSelector = function defaultSelector(store) {
|
|
50
|
+
return store;
|
|
51
|
+
};
|
|
52
|
+
var useStore = function useStore(store) {
|
|
53
|
+
var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSelector;
|
|
54
|
+
var _useState = useState(selector(store.get())),
|
|
55
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
56
|
+
state = _useState2[0],
|
|
57
|
+
setState = _useState2[1];
|
|
58
|
+
var updateState = function updateState() {
|
|
59
|
+
setState(selector(store.get()));
|
|
60
|
+
};
|
|
61
|
+
useEffect(function () {
|
|
62
|
+
store.subscribe(updateState);
|
|
63
|
+
return function () {
|
|
64
|
+
return store.unsubscribe(updateState);
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
return state;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { Store, Store as default, getGlobalState, replaceGlobalState, resetGlobalState, useStore };
|
|
71
|
+
//# sourceMappingURL=Store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Store.js","sources":["../../src/react-ui-basics/store/Store.js"],"sourcesContent":["import {useEffect, useState} from \"react\";\nimport {createProxy} from \"./ProxyTools\";\n\nlet STORE = {}\nlet COUNTER = 0\n\nexport class Store {\n constructor(initialState, name) {\n const that = this;\n\n that.name = name;\n let listeners = []\n const index = COUNTER++;\n STORE[index] = initialState\n that.get = () => STORE[index]\n that.set = (mutator) => {\n const proxy = createProxy(STORE[index]);\n mutator(proxy)\n STORE[index] = proxy.bake()\n listeners.forEach(fn => fn())\n }\n\n that.reset = () => {\n STORE[index] = initialState\n }\n\n that.subscribe = (fn) => {\n listeners.push(fn)\n }\n\n that.unsubscribe = (fn) => {\n listeners = listeners.filter(f => f !== fn)\n }\n\n that.toString = () => that.name;\n }\n}\n\nexport default Store;\n\nexport function getGlobalState() {\n return STORE\n}\n\nexport function resetGlobalState() {\n STORE = {}\n}\n\nexport function replaceGlobalState(state) {\n STORE = state\n}\n\n\nconst defaultSelector = store => store;\n\nexport const useStore = (store, selector = defaultSelector) => {\n const [state, setState] = useState(selector(store.get()))\n\n const updateState = () => {\n setState(selector(store.get()))\n };\n\n useEffect(() => {\n store.subscribe(updateState)\n return () => store.unsubscribe(updateState)\n })\n\n return state\n};"],"names":["STORE","COUNTER","Store","initialState","name","that","listeners","index","get","set","mutator","proxy","createProxy","bake","forEach","fn","reset","subscribe","push","unsubscribe","filter","f","toString","getGlobalState","resetGlobalState","replaceGlobalState","state","defaultSelector","store","useStore","selector","useState","setState","updateState","useEffect"],"mappings":";;;;AAGA,IAAIA,KAAK,GAAG,EAAZ;AACA,IAAIC,OAAO,GAAG,CAAd;IAEaC,KAAb,GACI,eAAYC,YAAZ,EAA0BC,IAA1B,EAAgC;AAAA;AAC5B,MAAMC,IAAI,GAAG,IAAb;AAEAA,EAAAA,IAAI,CAACD,IAAL,GAAYA,IAAZ;AACA,MAAIE,SAAS,GAAG,EAAhB;AACA,MAAMC,KAAK,GAAGN,OAAO,EAArB;AACAD,EAAAA,KAAK,CAACO,KAAD,CAAL,GAAeJ,YAAf;AACAE,EAAAA,IAAI,CAACG,GAAL,GAAW;AAAA,WAAMR,KAAK,CAACO,KAAD,CAAX;AAAA,GAAX;AACAF,EAAAA,IAAI,CAACI,GAAL,GAAW,UAACC,OAAD,EAAa;AACpB,QAAMC,KAAK,GAAGC,WAAW,CAACZ,KAAK,CAACO,KAAD,CAAN,CAAzB;AACAG,IAAAA,OAAO,CAACC,KAAD,CAAP;AACAX,IAAAA,KAAK,CAACO,KAAD,CAAL,GAAeI,KAAK,CAACE,IAAN,EAAf;AACAP,IAAAA,SAAS,CAACQ,OAAV,CAAkB,UAAAC,EAAE;AAAA,aAAIA,EAAE,EAAN;AAAA,KAApB;AACH,GALD;AAOAV,EAAAA,IAAI,CAACW,KAAL,GAAa,YAAM;AACfhB,IAAAA,KAAK,CAACO,KAAD,CAAL,GAAeJ,YAAf;AACH,GAFD;AAIAE,EAAAA,IAAI,CAACY,SAAL,GAAiB,UAACF,EAAD,EAAQ;AACrBT,IAAAA,SAAS,CAACY,IAAV,CAAeH,EAAf;AACH,GAFD;AAIAV,EAAAA,IAAI,CAACc,WAAL,GAAmB,UAACJ,EAAD,EAAQ;AACvBT,IAAAA,SAAS,GAAGA,SAAS,CAACc,MAAV,CAAiB,UAAAC,CAAC;AAAA,aAAIA,CAAC,KAAKN,EAAV;AAAA,KAAlB,CAAZ;AACH,GAFD;AAIAV,EAAAA,IAAI,CAACiB,QAAL,GAAgB;AAAA,WAAMjB,IAAI,CAACD,IAAX;AAAA,GAAhB;AACH;AAKE,SAASmB,cAAT,GAA0B;AAC7B,SAAOvB,KAAP;AACH;AAEM,SAASwB,gBAAT,GAA4B;AAC/BxB,EAAAA,KAAK,GAAG,EAAR;AACH;AAEM,SAASyB,kBAAT,CAA4BC,KAA5B,EAAmC;AACtC1B,EAAAA,KAAK,GAAG0B,KAAR;AACH;AAGD,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK;AAAA,SAAIA,KAAJ;AAAA,CAA7B;IAEaC,QAAQ,GAAG,SAAXA,QAAW,CAACD,KAAD,EAAuC;AAAA,MAA/BE,QAA+B,uEAApBH,eAAoB;AAC3D,kBAA0BI,QAAQ,CAACD,QAAQ,CAACF,KAAK,CAACpB,GAAN,EAAD,CAAT,CAAlC;AAAA;AAAA,MAAOkB,KAAP;AAAA,MAAcM,QAAd;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACtBD,IAAAA,QAAQ,CAACF,QAAQ,CAACF,KAAK,CAACpB,GAAN,EAAD,CAAT,CAAR;AACH,GAFD;AAIA0B,EAAAA,SAAS,CAAC,YAAM;AACZN,IAAAA,KAAK,CAACX,SAAN,CAAgBgB,WAAhB;AACA,WAAO;AAAA,aAAML,KAAK,CAACT,WAAN,CAAkBc,WAAlB,CAAN;AAAA,KAAP;AACH,GAHQ,CAAT;AAKA,SAAOP,KAAP;AACH;;;;"}
|