react-ui-basics 0.0.175 → 0.0.178

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.
Files changed (162) hide show
  1. package/Animated.js.map +1 -1
  2. package/AutocompleteSelect.js.map +1 -1
  3. package/Button.js.map +1 -1
  4. package/CalendarMonthView.css +20 -0
  5. package/CalendarMonthView.d.ts +12 -0
  6. package/CalendarMonthView.js +52 -0
  7. package/CalendarMonthView.js.map +1 -0
  8. package/Checkbox.js.map +1 -1
  9. package/CircleProgress.js.map +1 -1
  10. package/CommonFields.js.map +1 -1
  11. package/DNDContainer.js.map +1 -1
  12. package/DNDDraggable.js.map +1 -1
  13. package/DNDDroppable.js.map +1 -1
  14. package/DatePicker.css +93 -0
  15. package/DatePicker.d.ts +32 -0
  16. package/DatePicker.js +116 -0
  17. package/DatePicker.js.map +1 -0
  18. package/DateTools.d.ts +39 -0
  19. package/DateTools.js +73 -0
  20. package/DateTools.js.map +1 -0
  21. package/Dialog.js.map +1 -1
  22. package/DropFileInput.js.map +1 -1
  23. package/DroppableHorizontalList.js.map +1 -1
  24. package/DroppableList.js.map +1 -1
  25. package/Dropzone.js.map +1 -1
  26. package/FilteredList.js.map +1 -1
  27. package/FloatingActionButton.js.map +1 -1
  28. package/FormUploadProgress.js.map +1 -1
  29. package/ImageGallery.js.map +1 -1
  30. package/MaterialIcon.js.map +1 -1
  31. package/Modal.js.map +1 -1
  32. package/ModalMenu.js.map +1 -1
  33. package/ReactConstants.js.map +1 -1
  34. package/ReactCreateElement.js.map +1 -1
  35. package/ReadyListener.js.map +1 -1
  36. package/Scrollable.js.map +1 -1
  37. package/ScrollableTable.js.map +1 -1
  38. package/Size.js.map +1 -1
  39. package/Snackbar.js.map +1 -1
  40. package/SpinningProgress.js.map +1 -1
  41. package/Switch.js.map +1 -1
  42. package/Table.js.map +1 -1
  43. package/Tabs.css +65 -0
  44. package/Tabs.d.ts +22 -0
  45. package/TextField.js.map +1 -1
  46. package/Tools.d.ts +2 -2
  47. package/Tools.js.map +1 -1
  48. package/bundle.css +726 -587
  49. package/index.js +4 -0
  50. package/index.js.map +1 -1
  51. package/package.json +1 -1
  52. package/router/HistoryTools.js.map +1 -1
  53. package/router/Link.js.map +1 -1
  54. package/router/NavLink.js.map +1 -1
  55. package/router/Route.js.map +1 -1
  56. package/router/index.js.map +1 -1
  57. package/src/Animated.css +7 -0
  58. package/src/Animated.js +219 -0
  59. package/src/Animated.scss +8 -0
  60. package/src/AutocompleteSelect.css +256 -0
  61. package/src/AutocompleteSelect.js +473 -0
  62. package/src/AutocompleteSelect.scss +322 -0
  63. package/src/Button.css +138 -0
  64. package/src/Button.js +104 -0
  65. package/src/Button.scss +177 -0
  66. package/src/CalendarMonthView.css +20 -0
  67. package/src/CalendarMonthView.scss +25 -0
  68. package/src/CalendarMonthView.tsx +80 -0
  69. package/src/Checkbox.css +56 -0
  70. package/src/Checkbox.js +52 -0
  71. package/src/Checkbox.scss +87 -0
  72. package/src/CircleProgress.css +11 -0
  73. package/src/CircleProgress.js +38 -0
  74. package/src/CircleProgress.scss +13 -0
  75. package/src/CommonFields.js +21 -0
  76. package/src/DNDContainer.css +26 -0
  77. package/src/DNDContainer.js +263 -0
  78. package/src/DNDContainer.scss +33 -0
  79. package/src/DNDDraggable.js +55 -0
  80. package/src/DNDDroppable.js +58 -0
  81. package/src/DatePicker.css +93 -0
  82. package/src/DatePicker.scss +118 -0
  83. package/src/DatePicker.tsx +179 -0
  84. package/src/DateTools.ts +85 -0
  85. package/src/Dialog.css +36 -0
  86. package/src/Dialog.js +160 -0
  87. package/src/Dialog.scss +42 -0
  88. package/src/DropFileInput.css +24 -0
  89. package/src/DropFileInput.js +45 -0
  90. package/src/DropFileInput.scss +28 -0
  91. package/src/DroppableHorizontalList.js +190 -0
  92. package/src/DroppableList.css +14 -0
  93. package/src/DroppableList.js +201 -0
  94. package/src/DroppableList.scss +27 -0
  95. package/src/Dropzone.css +54 -0
  96. package/src/Dropzone.js +140 -0
  97. package/src/Dropzone.scss +66 -0
  98. package/src/FilteredList.css +68 -0
  99. package/src/FilteredList.js +196 -0
  100. package/src/FilteredList.scss +86 -0
  101. package/src/FloatingActionButton.css +20 -0
  102. package/src/FloatingActionButton.js +35 -0
  103. package/src/FloatingActionButton.scss +25 -0
  104. package/src/FormUploadProgress.css +61 -0
  105. package/src/FormUploadProgress.js +87 -0
  106. package/src/FormUploadProgress.scss +78 -0
  107. package/src/ImageGallery.css +196 -0
  108. package/src/ImageGallery.js +935 -0
  109. package/src/ImageGallery.scss +256 -0
  110. package/src/MaterialIcon.js +1837 -0
  111. package/src/Modal.css +61 -0
  112. package/src/Modal.js +160 -0
  113. package/src/Modal.scss +73 -0
  114. package/src/ModalMenu.css +30 -0
  115. package/src/ModalMenu.js +59 -0
  116. package/src/ModalMenu.scss +36 -0
  117. package/src/ReactConstants.ts +42 -0
  118. package/src/ReactCreateElement.js +5 -0
  119. package/src/ReadyListener.js +53 -0
  120. package/src/ResizeObserver.ts +50 -0
  121. package/src/Scrollable.css +80 -0
  122. package/src/Scrollable.js +388 -0
  123. package/src/Scrollable.scss +100 -0
  124. package/src/ScrollableTable.css +6 -0
  125. package/src/ScrollableTable.scss +12 -0
  126. package/src/ScrollableTable.tsx +39 -0
  127. package/src/Size.js +56 -0
  128. package/src/Snackbar.css +40 -0
  129. package/src/Snackbar.js +71 -0
  130. package/src/Snackbar.scss +47 -0
  131. package/src/SpinningProgress.css +49 -0
  132. package/src/SpinningProgress.js +19 -0
  133. package/src/SpinningProgress.scss +57 -0
  134. package/src/Switch.css +69 -0
  135. package/src/Switch.js +54 -0
  136. package/src/Switch.scss +73 -0
  137. package/src/Table.css +94 -0
  138. package/src/Table.scss +121 -0
  139. package/src/Table.tsx +360 -0
  140. package/src/Tabs.css +65 -0
  141. package/src/Tabs.scss +77 -0
  142. package/src/Tabs.tsx +63 -0
  143. package/src/TextField.css +122 -0
  144. package/src/TextField.js +162 -0
  145. package/src/TextField.scss +160 -0
  146. package/src/Tools.test.js +105 -0
  147. package/src/Tools.ts +231 -0
  148. package/src/global.css +1 -0
  149. package/src/global.scss +6 -0
  150. package/src/index.js +84 -0
  151. package/src/router/HistoryTools.js +32 -0
  152. package/src/router/Link.js +27 -0
  153. package/src/router/NavLink.js +25 -0
  154. package/src/router/README.md +55 -0
  155. package/src/router/Route.js +209 -0
  156. package/src/router/Route.test.js +139 -0
  157. package/src/router/index.js +14 -0
  158. package/src/store/ProxyTools.js +91 -0
  159. package/src/store/ProxyTools.test.js +97 -0
  160. package/src/store/Store.ts +91 -0
  161. package/store/ProxyTools.js.map +1 -1
  162. package/store/Store.js.map +1 -1
package/src/Modal.css ADDED
@@ -0,0 +1,61 @@
1
+ .Modal {
2
+ display: block;
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 100%;
8
+ overflow-y: scroll;
9
+ transition: bottom 0ms linear;
10
+ transition-delay: 0.2s;
11
+ }
12
+ .Modal.show {
13
+ transition-delay: 0s;
14
+ bottom: 0;
15
+ }
16
+ .Modal > .overlay {
17
+ position: fixed;
18
+ top: 0;
19
+ bottom: 100%;
20
+ left: 0;
21
+ right: 0;
22
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
23
+ opacity: 0;
24
+ background-color: black;
25
+ pointer-events: none;
26
+ }
27
+ .Modal > .overlay.show {
28
+ opacity: 0.5;
29
+ bottom: 0;
30
+ }
31
+ .Modal > .content {
32
+ left: 50%;
33
+ top: 10vh;
34
+ margin-bottom: 10vh;
35
+ font-size: 16px;
36
+ padding: 0;
37
+ opacity: 0;
38
+ transition: opacity 0.25s ease, transform 0.25s ease;
39
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
40
+ transform-origin: top;
41
+ position: absolute;
42
+ border-radius: 2px;
43
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
44
+ }
45
+ .Modal > .content.show {
46
+ opacity: 1;
47
+ transform: scaleY(1) translateY(0px) translateX(-50%);
48
+ }
49
+ .Modal > .content > .Scrollable {
50
+ overflow: visible;
51
+ max-height: 80vh;
52
+ }
53
+ .Modal > .content > .Scrollable > .viewport {
54
+ min-width: 10px;
55
+ min-height: 10px;
56
+ }
57
+ .Modal > .content > .Button.close {
58
+ top: 10px;
59
+ right: 10px;
60
+ position: absolute;
61
+ }
package/src/Modal.js ADDED
@@ -0,0 +1,160 @@
1
+ import ReactConstants from "./../ReactConstants";
2
+ import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields";
3
+ import React from 'react';
4
+ import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers";
5
+ import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers";
6
+ import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers";
7
+ import './Modal.css';
8
+ import ReactDOM from 'react-dom';
9
+ import ReactCreateElement from './ReactCreateElement';
10
+ import './Modal.css'
11
+ import Button from "./Button";
12
+ import {classNames, orNoop, setTimeout, DOCUMENT, addEventListener, removeEventListener, createRef, UNDEFINED, stopPropagation} from "./Tools";
13
+ import {PureComponent, componentDidMount, render, propsGetter, stateGSs, componentDidUpdate} from "./ReactConstants";
14
+ import MaterialIcon from "./MaterialIcon";
15
+ import PropTypes from "prop-types";
16
+
17
+ let listenerRef;
18
+ let zIndex = 100;
19
+
20
+ const EVENT_TYPE = 'keydown';
21
+ const pollListener = (modal) => {
22
+ removeEventListener(DOCUMENT, EVENT_TYPE, listenerRef);
23
+ const listener = modal._pl;
24
+ listener && addEventListener(DOCUMENT, EVENT_TYPE, listener);
25
+ listenerRef = listener;
26
+ };
27
+
28
+ const addListener = (modal, listener) => {
29
+ const prev = listenerRef;
30
+ prev && removeEventListener(DOCUMENT, EVENT_TYPE, prev);
31
+ modal._pl = prev;
32
+ addEventListener(DOCUMENT, EVENT_TYPE, listenerRef = listener);
33
+ };
34
+
35
+ class Modal extends PureComponent {
36
+
37
+ static defaultProps = {
38
+ closeIcon: <MaterialIcon icon="close"/>,
39
+ };
40
+
41
+ constructor(properties) {
42
+ super(properties);
43
+ const that = this;
44
+ that.state = {};
45
+
46
+ const [
47
+ isShow,
48
+ getMenu,
49
+ getBeforeClose,
50
+ ] = stateGSs(that, 3);
51
+ const overlay = createRef();
52
+ const el = createRef();
53
+ const content = createRef();
54
+ const props = propsGetter(that);
55
+
56
+ const beforeClose = (e) => {
57
+ stopPropagation(e);
58
+ const bc = getBeforeClose() || props().beforeClose;
59
+ if (!bc || bc(that.close))
60
+ that.close(e);
61
+ };
62
+
63
+ const shouldClose = (e) => {
64
+ const isSameModal = __style(el()).zIndex == zIndex - 1;
65
+ !(e && content().contains(__target(e))) && isSameModal && beforeClose(e);
66
+ };
67
+
68
+ const addTransitionListener = () => {
69
+ const transitionend = "transitionend";
70
+ let listener = () => {
71
+ removeEventListener(overlay(), transitionend, listener);
72
+ orNoop(isShow() ? props().onOpen : orNoop(props().onClose))();
73
+ el() && (__style(el()).paddingBottom = isShow() ? '1px' : '0px'); // force invalidate scroll
74
+ };
75
+ addEventListener(overlay(), transitionend, listener);
76
+ };
77
+ that[ReactConstants[3]] = () => {
78
+ const {className, top, container = Modal.defaultContainer, children, closeIcon} = props();
79
+ const menu = getMenu();
80
+ const show = isShow();
81
+ const modal = <div className={classNames(`Modal`, className, show && 'show')} ref={el} onClick={shouldClose}>
82
+ <div ref={overlay} className={classNames(`overlay`, show && 'show')}>
83
+ </div>
84
+ <div className={classNames(`content`, show && 'show', top && 'top')}
85
+ style={top && {top: top + 'px'}}
86
+ ref={content}
87
+ >
88
+ {React.Children.map(children, child => React.cloneElement(child, {
89
+ modalMenuConsumer: getMenu,
90
+ modalBeforeCloseConsumer: getBeforeClose
91
+ }))}
92
+ {menu}
93
+ <Button className="close" flat={true} round={true} onClick={beforeClose}>
94
+ {closeIcon}
95
+ </Button>
96
+ </div>
97
+ </div>;
98
+
99
+ return container ? ReactDOM.createPortal(modal, container) : modal;
100
+ };
101
+
102
+ const close = that.close = () => {
103
+ if (!isShow())
104
+ return;
105
+
106
+ zIndex--;
107
+ addTransitionListener();
108
+ isShow(false);
109
+
110
+ pollListener(that);
111
+ };
112
+ const open = that.open = () => {
113
+ if (isShow())
114
+ return;
115
+
116
+ el() && (__style(el()).zIndex = zIndex++);
117
+ addTransitionListener();
118
+ isShow(true);
119
+
120
+ let listener = event => {
121
+ if (!event.defaultPrevented && event.keyCode === 27/*escape*/)
122
+ beforeClose();
123
+ return true;
124
+ };
125
+
126
+ addListener(that, listener)
127
+ };
128
+
129
+ that[ReactConstants[0]] = () => {
130
+ const _props = props();
131
+ orNoop(_props.open)(() => {
132
+ setTimeout(open, 0);
133
+ });
134
+ orNoop(_props.close)(() => {
135
+ setTimeout(close, 0);
136
+ });
137
+ _props.show && setTimeout(open, 0)
138
+ };
139
+ that[ReactConstants[2]] = (prevProps) => {
140
+ const show = props().show;
141
+ if (show !== prevProps.show) {
142
+ show ? open() : close();
143
+ }
144
+ };
145
+ }
146
+ }
147
+
148
+ Modal.defaultContainer = UNDEFINED;
149
+ Modal.pollListener = pollListener;
150
+ Modal.addListener = addListener;
151
+
152
+ export default Modal;
153
+
154
+ if (process.env.NODE_ENV !== 'production') {
155
+ Modal.propTypes = {
156
+ [ReactConstants[5]]: PropTypes.string,
157
+ top: PropTypes.number,
158
+ container: PropTypes.node,
159
+ };
160
+ }
package/src/Modal.scss ADDED
@@ -0,0 +1,73 @@
1
+ .Modal {
2
+ display: block;
3
+
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ right: 0;
8
+ bottom: 100%;
9
+ overflow-y: scroll;
10
+ transition: bottom 0ms linear;
11
+ transition-delay: 0.2s;
12
+
13
+ &.show {
14
+ transition-delay: 0s;
15
+ bottom: 0;
16
+ }
17
+
18
+ > .overlay {
19
+ position: fixed;
20
+ top: 0;
21
+ bottom: 100%;
22
+ left: 0;
23
+ right: 0;
24
+ transition: opacity .2s cubic-bezier(.4, 0, .2, 1);
25
+ opacity: 0;
26
+ background-color: black;
27
+ pointer-events: none;
28
+
29
+ &.show {
30
+ opacity: 0.5;
31
+ bottom: 0;
32
+ }
33
+ }
34
+
35
+ > .content {
36
+ left: 50%;
37
+
38
+ //overflow: hidden;
39
+ top: 10vh;
40
+ margin-bottom: 10vh;
41
+
42
+ font-size: 16px;
43
+ padding: 0;
44
+ opacity: 0;
45
+ transition: opacity 0.25s ease, transform 0.25s ease;
46
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
47
+ transform-origin: top;
48
+
49
+ position: absolute;
50
+ border-radius: 2px;
51
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
52
+
53
+ &.show {
54
+ opacity: 1;
55
+ transform: scaleY(1) translateY(0px) translateX(-50%);
56
+ }
57
+
58
+ > .Scrollable {
59
+ overflow: visible;
60
+ max-height: 80vh;
61
+ > .viewport {
62
+ min-width: 10px;
63
+ min-height: 10px;
64
+ }
65
+ }
66
+
67
+ > .Button.close {
68
+ top: 10px;
69
+ right: 10px;
70
+ position: absolute;
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,30 @@
1
+ .ModalMenu {
2
+ position: absolute;
3
+ top: 10px;
4
+ right: 50px;
5
+ }
6
+ .ModalMenu .material-icons {
7
+ color: #818181;
8
+ }
9
+ .ModalMenu .Button.animated {
10
+ position: absolute;
11
+ transition: opacity 150ms ease-in, right 200ms ease-in;
12
+ opacity: 0;
13
+ right: 0;
14
+ top: 0;
15
+ }
16
+ .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
17
+ opacity: 1;
18
+ }
19
+ .ModalMenu .Button.animated.unmounting {
20
+ transition: opacity 100ms ease-out, right 200ms ease-out;
21
+ }
22
+ .ModalMenu .Button.active {
23
+ background: #EBEBEB;
24
+ }
25
+ .ModalMenu .separator {
26
+ height: 24px;
27
+ width: 1px;
28
+ background-color: #D9D9D9;
29
+ margin-left: 4px;
30
+ }
@@ -0,0 +1,59 @@
1
+ import ReactConstants from "./../ReactConstants";
2
+ import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields";
3
+ import React from 'react';
4
+ import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers";
5
+ import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers";
6
+ import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers";
7
+ import './ModalMenu.css';
8
+ import ReactCreateElement from './ReactCreateElement';
9
+ import './ModalMenu.css'
10
+ import {PureComponent, stateGS, render} from "./ReactConstants";
11
+ import {classNames} from "./Tools";
12
+ import Animated from "./Animated";
13
+ import Button from "./Button";
14
+ import MaterialIcon from "./MaterialIcon";
15
+
16
+ class ModalMenu extends PureComponent {
17
+
18
+ constructor(props) {
19
+ super(props);
20
+ this.state = {};
21
+ const isOpen = stateGS(this);
22
+
23
+ const toggle = () => {
24
+ isOpen(!isOpen());
25
+ };
26
+ this[ReactConstants[3]] = () => {
27
+ const {items} = __props(this);
28
+ const filtered = (items || []).filter(it => !!it);
29
+ if (__length(filtered) === 0) return null;
30
+
31
+ const open = isOpen();
32
+
33
+ return <div className={classNames("ModalMenu", 'row', open && 'open')}>
34
+ {filtered.map((it, i) => <Animated value={open}
35
+ key={i}
36
+ mounting={200}
37
+ unmounting={200}
38
+ mountingDelay={i * 50}
39
+ unmountingDelay={(__length(filtered) - i - 1) * 50}
40
+ styles={{
41
+ mounting: {right: ((__length(filtered) - i) * 36 + 5 + (__length(filtered) - i) * 5) + `px`},
42
+ }}
43
+ >
44
+ <Button flat={true} round={true} onClick={it.action}>
45
+ <MaterialIcon icon={it.icon}/>
46
+ </Button>
47
+ </Animated>)}
48
+
49
+ <Button className={classNames("more", open && 'active')} flat={true} round={true} onClick={toggle}>
50
+ <MaterialIcon icon="more_vert"/>
51
+ </Button>
52
+
53
+ <div className="separator"/>
54
+ </div>
55
+ }
56
+ }
57
+ }
58
+
59
+ export default ModalMenu;
@@ -0,0 +1,36 @@
1
+ .ModalMenu {
2
+ position: absolute;
3
+ top: 10px;
4
+ right: 50px;
5
+
6
+ .material-icons {
7
+ color: #818181;
8
+ }
9
+
10
+ .Button.animated {
11
+ position: absolute;
12
+ transition: opacity 150ms ease-in, right 200ms ease-in;
13
+ opacity: 0;
14
+ right: 0;
15
+ top: 0;
16
+
17
+ &.mounting, &.mounted {
18
+ opacity: 1;
19
+ }
20
+
21
+ &.unmounting {
22
+ transition: opacity 100ms ease-out, right 200ms ease-out;
23
+ }
24
+ }
25
+
26
+ .Button.active {
27
+ background: #EBEBEB;
28
+ }
29
+
30
+ .separator {
31
+ height: 24px;
32
+ width: 1px;
33
+ background-color: #D9D9D9;
34
+ margin-left: 4px;
35
+ }
36
+ }
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+
3
+ const EMPTY = {};
4
+ export const props: <P>(that: React.Component<P>) => P = that => that.props;
5
+ export const propsGetter: <P>(that: React.Component<P>) => (() => P) = that => () => props(that);
6
+ // @ts-ignore //ignore incompatible casting EMPTY to S
7
+ export const state: <P, S>(that: React.Component<P, S>) => S = that => that.state || EMPTY;
8
+ export const setState = (that, data, cb?) => {
9
+ that.setState(data, cb);
10
+ };
11
+ export const stateFieldSetter = (that, key, cb?) => (value, cb2?) => {
12
+ setState(that, {[key]: value}, cb2 || cb);
13
+ };
14
+ export const stateGS: ((that: React.Component) => (v?, cb?) => any) = (that) => {
15
+ !that['sfc'] && (that['sfc'] = 0);
16
+ const key = '_' + (that['sfc']++);
17
+ const setter = stateFieldSetter(that, key);
18
+ const result = function () {
19
+ return !arguments.length ? state(that)[key] : setter.apply(null, arguments);
20
+ };
21
+ result.toString = () => key;
22
+ return result;
23
+ };
24
+ export const stateGSs = (that, num) => {
25
+ const result = [];
26
+ for (let i = 0; i < num; i++) {
27
+ result.push(stateGS(that));
28
+ }
29
+ return result;
30
+ };
31
+
32
+ export const componentDidMount = 'componentDidMount';
33
+ export const componentWillUnmount = 'componentWillUnmount';
34
+ export const componentDidUpdate = 'componentDidUpdate';
35
+ export const render = 'render';
36
+ export const children = 'children';
37
+ export const className = 'className';
38
+ export const onClick = 'onClick';
39
+ export const onChange = 'onChange';
40
+ export const PureComponent = React.PureComponent;
41
+
42
+ export default [componentDidMount, componentWillUnmount, componentDidUpdate, render, children, className, onClick, onChange]
@@ -0,0 +1,5 @@
1
+ import ReactConstants from "./../ReactConstants";
2
+ import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields";
3
+ import React from 'react';
4
+
5
+ export default React.createElement;
@@ -0,0 +1,53 @@
1
+ import ReactConstants from "./../ReactConstants";
2
+ import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields";
3
+ import React from 'react';
4
+ import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers";
5
+ import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers";
6
+ import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers";
7
+ import ReactCreateElement from './ReactCreateElement';
8
+ import {componentDidMount, render, componentWillUnmount, setState, props, state, componentDidUpdate, children, PureComponent} from "./ReactConstants";
9
+ import {orNoop} from "./Tools";
10
+
11
+ export const createReadyListener = () => {
12
+ let indicator,
13
+ count = 0;
14
+
15
+ class NotReadyIndicator extends PureComponent {
16
+ constructor(properties) {
17
+ super(properties);
18
+ const that = this;
19
+ that.state = {r: true};
20
+ indicator = that;
21
+ that[ReactConstants[3]] = () => {
22
+ const _props = props(that),
23
+ renderer = _props[ReactConstants[3]],
24
+ ready = state(that).r;
25
+
26
+ if (renderer)
27
+ return renderer(ready);
28
+ else
29
+ return (!ready && _props[ReactConstants[4]]) || null;
30
+ };
31
+ that[ReactConstants[0]] = that[ReactConstants[2]] = () => {
32
+ orNoop(props(that)[ReactConstants[7]])(state(that).r);
33
+ }
34
+ }
35
+ }
36
+
37
+ class NotReady extends PureComponent {
38
+ constructor(props) {
39
+ super(props);
40
+ const that = this;
41
+ that[ReactConstants[0]] = () => {
42
+ count++;
43
+ setState(indicator, {r: false});
44
+ };
45
+ that[ReactConstants[1]] = () => {
46
+ setState(indicator, {r: --count === 0});
47
+ };
48
+ that[ReactConstants[3]] = () => null;
49
+ }
50
+ }
51
+
52
+ return [NotReadyIndicator, NotReady]
53
+ };
@@ -0,0 +1,50 @@
1
+ import {requestAnimationFrame, WINDOW} from "./Tools";
2
+
3
+ class ResizeObserver {
4
+
5
+ constructor(callback) {
6
+ let observables = [];
7
+
8
+ const check = () => {
9
+ if (observables.length !== 0) {
10
+ const changedEntries = observables.filter((it) => {
11
+ const currentHeight = it.el.clientHeight;
12
+ const currentWidth = it.el.clientWidth;
13
+ if (it.size.height !== currentHeight || it.size.width !== currentWidth) {
14
+ it.size.height = currentHeight;
15
+ it.size.width = currentWidth;
16
+ return true;
17
+ }
18
+ }).map((obj) => obj.el);
19
+ if (changedEntries.length > 0) {
20
+ callback(changedEntries, this);
21
+ }
22
+ requestAnimationFrame(check);
23
+ }
24
+ }
25
+
26
+ this['observe'] = (el) => {
27
+ if (!observables.some((it) => it.el === el)) {
28
+ const newObservable = {
29
+ el: el,
30
+ size: {
31
+ height: el.clientHeight,
32
+ width: el.clientWidth
33
+ }
34
+ }
35
+ observables.push(newObservable);
36
+ requestAnimationFrame(check);
37
+ }
38
+ }
39
+
40
+ this['unobserve'] = (el) => {
41
+ observables = observables.filter((obj) => obj.el !== el);
42
+ }
43
+
44
+ this['disconnect'] = () => {
45
+ observables = [];
46
+ }
47
+ }
48
+ }
49
+
50
+ WINDOW.ResizeObserver = WINDOW.ResizeObserver || ResizeObserver;
@@ -0,0 +1,80 @@
1
+ .Scrollable {
2
+ max-height: 250px;
3
+ max-width: 250px;
4
+ padding-right: 5px;
5
+ position: relative;
6
+ display: flex;
7
+ flex-flow: column;
8
+ align-items: stretch;
9
+ overflow: hidden;
10
+ }
11
+ .Scrollable:hover > .scrollbar.auto {
12
+ transition-delay: 0s;
13
+ opacity: 1;
14
+ }
15
+ .Scrollable .viewport {
16
+ overflow-y: scroll;
17
+ overflow-x: scroll;
18
+ max-height: 100%;
19
+ scroll-behavior: smooth;
20
+ scrollbar-width: none;
21
+ }
22
+ .Scrollable .viewport::-webkit-scrollbar {
23
+ display: none;
24
+ }
25
+ .Scrollable.without-scroll-horizontal {
26
+ max-width: unset;
27
+ }
28
+ .Scrollable.without-scroll {
29
+ padding-right: 0;
30
+ max-height: unset;
31
+ }
32
+ .Scrollable.without-scroll > .viewport {
33
+ padding-right: 0;
34
+ margin-right: 0;
35
+ }
36
+ .Scrollable.without-scroll > .scrollbar {
37
+ visibility: hidden;
38
+ }
39
+ .Scrollable .scrollbar {
40
+ position: absolute;
41
+ right: 0px;
42
+ top: 0px;
43
+ width: 5px;
44
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
45
+ transition-delay: 0.5s;
46
+ z-index: 1;
47
+ }
48
+ .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
49
+ opacity: 0;
50
+ }
51
+ .Scrollable .scrollbar .thumb {
52
+ background-color: rgba(0, 0, 0, 0.3);
53
+ width: 5px;
54
+ position: absolute;
55
+ right: 0px;
56
+ top: 0px;
57
+ user-select: none;
58
+ will-change: top;
59
+ border-radius: 2px;
60
+ }
61
+ .Scrollable .scrollbar .thumb:hover {
62
+ background-color: rgba(0, 0, 0, 0.5);
63
+ }
64
+ .Scrollable .scrollbar .thumb:active {
65
+ background-color: rgba(0, 0, 0, 0.7);
66
+ }
67
+ .Scrollable .scrollbar.horizontal {
68
+ left: 0px;
69
+ right: 0px;
70
+ height: 5px;
71
+ bottom: 0;
72
+ width: unset;
73
+ top: unset;
74
+ }
75
+ .Scrollable .scrollbar.horizontal .thumb {
76
+ height: 5px;
77
+ left: 0px;
78
+ bottom: 0px;
79
+ will-change: left;
80
+ }