react-ui-basics 0.0.212 → 0.0.214

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 (46) hide show
  1. package/Animated.js +2 -6
  2. package/Animated.js.map +1 -1
  3. package/AutocompleteSelect.js +1 -5
  4. package/AutocompleteSelect.js.map +1 -1
  5. package/Button.js +1 -15
  6. package/Button.js.map +1 -1
  7. package/CalendarMonthView.d.ts +0 -1
  8. package/Checkbox.d.ts +2 -2
  9. package/CircleProgress.d.ts +0 -1
  10. package/Dialog.js +1 -13
  11. package/Dialog.js.map +1 -1
  12. package/DropFileInput.d.ts +2 -2
  13. package/Dropzone.d.ts +18 -0
  14. package/Dropzone.js +70 -119
  15. package/Dropzone.js.map +1 -1
  16. package/FormUploadProgress.js +1 -12
  17. package/FormUploadProgress.js.map +1 -1
  18. package/ImageGallery.js +7 -7
  19. package/ImageGallery.js.map +1 -1
  20. package/MaterialIcon.d.ts +0 -1
  21. package/Modal.js +1 -8
  22. package/Modal.js.map +1 -1
  23. package/Scrollable.js +2 -14
  24. package/Scrollable.js.map +1 -1
  25. package/Size.d.ts +0 -1
  26. package/SpinningProgress.d.ts +0 -1
  27. package/TextField.js +1 -23
  28. package/TextField.js.map +1 -1
  29. package/bundle.css +857 -857
  30. package/package.json +3 -1
  31. package/router/Link.js +1 -6
  32. package/router/Link.js.map +1 -1
  33. package/router/NavLink.js +0 -3
  34. package/router/NavLink.js.map +1 -1
  35. package/router/Route.js +1 -8
  36. package/router/Route.js.map +1 -1
  37. package/src/Checkbox.tsx +2 -2
  38. package/src/DropFileInput.tsx +1 -1
  39. package/src/{Dropzone.js → Dropzone.tsx} +33 -33
  40. package/src/store/{ProxyTools.test.js → ProxyTools.test.ts} +1 -1
  41. package/src/store/Store.test.js +86 -0
  42. package/src/store/Store.ts +30 -18
  43. package/store/ProxyTools.test.d.ts +1 -0
  44. package/store/Store.d.ts +2 -1
  45. package/store/Store.js +28 -14
  46. package/store/Store.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-ui-basics",
3
- "version": "0.0.212",
3
+ "version": "0.0.214",
4
4
  "description": "",
5
5
  "module": "index.js",
6
6
  "_main": "index.cjs.js",
@@ -57,6 +57,7 @@
57
57
  "@babel/plugin-transform-runtime": "7.22.15",
58
58
  "@babel/preset-env": "7.22.20",
59
59
  "@babel/preset-react": "7.22.15",
60
+ "@babel/preset-typescript": "^7.23.3",
60
61
  "@rollup/plugin-typescript": "^9.0.1",
61
62
  "@storybook/addon-actions": "6.4.19",
62
63
  "@storybook/addon-controls": "6.4.19",
@@ -65,6 +66,7 @@
65
66
  "@storybook/addons": "6.4.19",
66
67
  "@storybook/react": "6.4.19",
67
68
  "@storybook/source-loader": "6.4.19",
69
+ "@types/jest": "^29.5.11",
68
70
  "@types/react": "^17.0.50",
69
71
  "@types/react-dom": "^17.0.17",
70
72
  "babel-loader": "^8.2.5",
package/router/Link.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import ReactConstants from "./../ReactConstants"; 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"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import 'react';
2
2
  import ReactCreateElement from '../ReactCreateElement.js';
3
- import PropTypes from 'prop-types';
3
+ import 'prop-types';
4
4
  import { pushLocation } from './HistoryTools.js';
5
5
  import { preventDefault } from '../Tools.js';
6
6
 
@@ -19,11 +19,6 @@ var Link = function Link(_ref) {
19
19
  }
20
20
  }, children);
21
21
  };
22
- if (process.env.NODE_ENV !== 'production') {
23
- Link.propTypes = {
24
- href: PropTypes.string.isRequired
25
- };
26
- }
27
22
  var Link$1 = Link;
28
23
 
29
24
  export { Link$1 as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sources":["../src/router/Link.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {pushLocation} from \"./HistoryTools\";\nimport {preventDefault} from \"../Tools\";\n\nconst Link = ({children, href, className}) =>\n <a href={href} className={className} onClick={(e) => {\n if (!e.ctrlKey) {\n preventDefault(e);\n pushLocation(href);\n }\n }}>{children}</a>;\n\nif (window.isNotProductionEnvironment) {\n Link.propTypes = {\n href: PropTypes.string.isRequired,\n };\n}\n\nexport default Link;"],"names":["Link","_ref","children","href","className","ReactCreateElement","onClick","e","ctrlKey","preventDefault","pushLocation","window","isNotProductionEnvironment","propTypes","PropTypes","string","isRequired"],"mappings":";;;;;;AAOA,IAAMA,IAAI,GAAG,SAAPA,IAAIA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS,CAAA;AAAA,EAAA,OACpCC,kBAAA,CAAA,GAAA,EAAA;AAAGF,IAAAA,IAAI,EAAEA,IAAK;AAACC,IAAAA,SAAS,EAAEA,SAAU;AAACE,IAAAA,OAAO,EAAE,SAAAA,OAACC,CAAAA,CAAC,EAAK;AACjD,MAAA,IAAI,CAACA,CAAC,CAACC,OAAO,EAAE;QACZC,cAAc,CAACF,CAAC,CAAC,CAAA;QACjBG,YAAY,CAACP,IAAI,CAAC,CAAA;AACtB,OAAA;AACJ,KAAA;AAAE,GAAA,EAAED,QAAY,CAAC,CAAA;AAAA,CAAA,CAAA;AAErB,IAAIS,MAAM,CAACC,0BAA0B,EAAE;EACnCZ,IAAI,CAACa,SAAS,GAAG;AACbV,IAAAA,IAAI,EAAEW,SAAS,CAACC,MAAM,CAACC,UAAAA;GAC1B,CAAA;AACL,CAAA;AAEA,aAAehB,IAAI;;;;"}
1
+ {"version":3,"file":"Link.js","sources":["../src/router/Link.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {pushLocation} from \"./HistoryTools\";\nimport {preventDefault} from \"../Tools\";\n\nconst Link = ({children, href, className}) =>\n <a href={href} className={className} onClick={(e) => {\n if (!e.ctrlKey) {\n preventDefault(e);\n pushLocation(href);\n }\n }}>{children}</a>;\n\nif (window.isNotProductionEnvironment) {\n Link.propTypes = {\n href: PropTypes.string.isRequired,\n };\n}\n\nexport default Link;"],"names":["Link","_ref","children","href","className","ReactCreateElement","onClick","e","ctrlKey","preventDefault","pushLocation"],"mappings":";;;;;;AAOA,IAAMA,IAAI,GAAG,SAAPA,IAAIA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS,CAAA;AAAA,EAAA,OACpCC,kBAAA,CAAA,GAAA,EAAA;AAAGF,IAAAA,IAAI,EAAEA,IAAK;AAACC,IAAAA,SAAS,EAAEA,SAAU;AAACE,IAAAA,OAAO,EAAE,SAAAA,OAACC,CAAAA,CAAC,EAAK;AACjD,MAAA,IAAI,CAACA,CAAC,CAACC,OAAO,EAAE;QACZC,cAAc,CAACF,CAAC,CAAC,CAAA;QACjBG,YAAY,CAACP,IAAI,CAAC,CAAA;AACtB,OAAA;AACJ,KAAA;AAAE,GAAA,EAAED,QAAY,CAAC,CAAA;AAAA,CAAA,CAAA;AAQrB,aAAeF,IAAI;;;;"}
package/router/NavLink.js CHANGED
@@ -21,9 +21,6 @@ var NavLink = function NavLink(_ref) {
21
21
  }
22
22
  });
23
23
  };
24
- if (process.env.NODE_ENV !== 'production') {
25
- NavLink.propTypes = Link.propTypes;
26
- }
27
24
  var NavLink$1 = NavLink;
28
25
 
29
26
  export { NavLink$1 as default };
@@ -1 +1 @@
1
- {"version":3,"file":"NavLink.js","sources":["../src/router/NavLink.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport Route from \"./Route\";\nimport Link from \"./Link\";\nimport {classNames} from \"../Tools\";\n\nconst NavLink = ({children, href, highlightPath, className, activeClassName}) =>\n <Route path={highlightPath || href}\n controller={matches => <Link href={href} className={classNames(className, matches && activeClassName)}>\n {children}\n </Link>}\n />;\n\nif(window.isNotProductionEnvironment) {\n NavLink.propTypes = Link.propTypes;\n}\n\nexport default NavLink;"],"names":["NavLink","_ref","children","href","highlightPath","className","activeClassName","ReactCreateElement","Route","path","controller","matches","Link","classNames","window","isNotProductionEnvironment","propTypes"],"mappings":";;;;;;;AAQA,IAAMA,OAAO,GAAG,SAAVA,OAAOA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,aAAa,GAAAH,IAAA,CAAbG,aAAa;IAAEC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IAAEC,eAAe,GAAAL,IAAA,CAAfK,eAAe,CAAA;EAAA,OACvEC,kBAAA,CAACC,KAAK,EAAA;IAACC,IAAI,EAAEL,aAAa,IAAID,IAAK;IAC5BO,UAAU,EAAE,SAAAA,UAAAA,CAAAC,OAAO,EAAA;MAAA,OAAIJ,kBAAA,CAACK,IAAI,EAAA;AAACT,QAAAA,IAAI,EAAEA,IAAK;AAACE,QAAAA,SAAS,EAAEQ,UAAU,CAACR,SAAS,EAAEM,OAAO,IAAIL,eAAe,CAAA;AAAE,OAAA,EACjGJ,QACC,CAAC,CAAA;AAAA,KAAA;AAAC,GACd,CAAC,CAAA;AAAA,CAAA,CAAA;AAEN,IAAGY,MAAM,CAACC,0BAA0B,EAAE;AAClCf,EAAAA,OAAO,CAACgB,SAAS,GAAGJ,IAAI,CAACI,SAAS,CAAA;AACtC,CAAA;AAEA,gBAAehB,OAAO;;;;"}
1
+ {"version":3,"file":"NavLink.js","sources":["../src/router/NavLink.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport Route from \"./Route\";\nimport Link from \"./Link\";\nimport {classNames} from \"../Tools\";\n\nconst NavLink = ({children, href, highlightPath, className, activeClassName}) =>\n <Route path={highlightPath || href}\n controller={matches => <Link href={href} className={classNames(className, matches && activeClassName)}>\n {children}\n </Link>}\n />;\n\nif(window.isNotProductionEnvironment) {\n NavLink.propTypes = Link.propTypes;\n}\n\nexport default NavLink;"],"names":["NavLink","_ref","children","href","highlightPath","className","activeClassName","ReactCreateElement","Route","path","controller","matches","Link","classNames"],"mappings":";;;;;;;AAQA,IAAMA,OAAO,GAAG,SAAVA,OAAOA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,aAAa,GAAAH,IAAA,CAAbG,aAAa;IAAEC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IAAEC,eAAe,GAAAL,IAAA,CAAfK,eAAe,CAAA;EAAA,OACvEC,kBAAA,CAACC,KAAK,EAAA;IAACC,IAAI,EAAEL,aAAa,IAAID,IAAK;IAC5BO,UAAU,EAAE,SAAAA,UAAAA,CAAAC,OAAO,EAAA;MAAA,OAAIJ,kBAAA,CAACK,IAAI,EAAA;AAACT,QAAAA,IAAI,EAAEA,IAAK;AAACE,QAAAA,SAAS,EAAEQ,UAAU,CAACR,SAAS,EAAEM,OAAO,IAAIL,eAAe,CAAA;AAAE,OAAA,EACjGJ,QACC,CAAC,CAAA;AAAA,KAAA;AAAC,GACd,CAAC,CAAA;AAAA,CAAA,CAAA;AAMN,gBAAeF,OAAO;;;;"}
package/router/Route.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import ReactConstants from "./../ReactConstants"; 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"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import { inherits as _inherits, createSuper as _createSuper, createClass as _createClass, classCallCheck as _classCallCheck, assertThisInitialized as _assertThisInitialized, slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import React from 'react';
3
- import PropTypes from 'prop-types';
3
+ import 'prop-types';
4
4
  import { setOf, allPropsExcept, isDifferent, addEventListener, WINDOW, removeEventListener, orNoop } from '../Tools.js';
5
5
  import { stateGSs, componentDidUpdate, render, componentDidMount, componentWillUnmount, PureComponent, propsGetter, setState } from '../ReactConstants.js';
6
6
 
@@ -151,13 +151,6 @@ var Route = function (_PureComponent) {
151
151
  }
152
152
  return _createClass(Route);
153
153
  }(PureComponent);
154
- if (process.env.NODE_ENV !== 'production') {
155
- Route.propTypes = {
156
- path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired,
157
- controller: PropTypes.func,
158
- onToggle: PropTypes.func
159
- };
160
- }
161
154
  var DefaultController = function DefaultController(matches, children, props) {
162
155
  if (!matches || !children) return null;
163
156
  if (Object.keys(props).length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"Route.js","sources":["../src/router/Route.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {allPropsExcept, isDifferent, orNoop, setOf, WINDOW, addEventListener, removeEventListener} from \"../Tools\";\nimport {componentDidUpdate, render, PureComponent, componentDidMount, componentWillUnmount, propsGetter, stateGSs, setState} from \"../ReactConstants\";\n\nconst historyEvents = ['popstate', 'pushState', 'replaceState'];\n\nconst cleanPath = (path) => {\n if (path.length > 1 && path.lastIndexOf('/') === path.length - 1)\n return path.substring(0, path.length - 1);\n\n return path;\n};\n\nconst createUrlMatcher = path => {\n let matcher;\n const segments = path.split('/');\n const optionals = segments.map(it => it === '*' || it.indexOf('?') === it.length - 1);\n const containsVariables = path.indexOf(':') !== -1;\n const containsAnySegment = path.indexOf('*') !== -1;\n const containsNot = path.indexOf('!') !== -1;\n\n if (!containsAnySegment && !containsVariables && !containsNot) {\n matcher = (p) => p === path\n } else {\n const endsWithAny = path.lastIndexOf('*') === path.length - 1;\n const matchers = segments.map((segment, i) => {\n let matcher;\n const variableNameIndex = segment.indexOf(':');\n if (segment === '*')\n matcher = () => true;\n else if (variableNameIndex !== -1) {\n let variable = segment.substring(variableNameIndex + 1);\n let regex = null\n if (variable.indexOf('?') !== -1)\n variable = variable.substring(0, variable.indexOf('?'));\n if (variable.indexOf('(') !== -1) {\n let regexStart = variable.indexOf('(');\n regex = new RegExp(variable.substring(regexStart))\n variable = variable.substring(0, regexStart);\n }\n\n const prefix = variableNameIndex && segment.substring(0, variableNameIndex);\n matcher = (p, params) => {\n if (regex && !!p && !p.match(regex))\n return false\n\n if (!p && !optionals[i])\n return false;\n if (prefix) {\n if (p.indexOf(prefix) === 0)\n p = p.substring(variableNameIndex);\n else\n return false;\n }\n\n params[variable] = p;\n return true;\n }\n } else if (segment.indexOf('!') === 0) {\n const not = segment.substring(1);\n matcher = (p) => p !== not;\n } else\n matcher = (p) => p === segment;\n return matcher;\n });\n\n matcher = (path, params) => {\n const segments = path.split('/');\n const length = Math.min(matchers.length, segments.length);\n\n // only exact match if mapping not ends with *\n if (!endsWithAny && matchers.length < segments.length)\n return false;\n\n // check that each segment matches\n for (let i = 0; i < length; i++) {\n if (!matchers[i](segments[i], params))\n return false;\n }\n\n // check that all other segments are optional\n for (let i = length; i < optionals.length; i++) {\n if (!optionals[i])\n return false;\n }\n\n return true;\n };\n }\n return matcher\n};\n\nconst createUrlMatchers = path => {\n if (Array.isArray(path)) {\n const matchers = path.map(it => createUrlMatcher(it));\n return (path, params) => {\n for (let i = 0; i < matchers.length; i++) {\n let props = {};\n if (matchers[i](path, props)) {\n Object.assign(params, props);\n return true;\n }\n }\n return false;\n }\n } else {\n return createUrlMatcher(path);\n }\n};\n\nconst selfProps = setOf([\n 'children',\n 'path',\n 'controller',\n 'onToggle',\n]);\n\nclass Route extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n let matcher;\n\n const props = propsGetter(that);\n const [\n isRendering,\n paramsState,\n mergedPropsState,\n ] = stateGSs(that, 3);\n\n const process = () => {\n let params = {};\n let nextState = {};\n let isMatching = matcher(cleanPath(WINDOW.location.pathname), params);\n\n const toggle = isMatching !== isRendering();\n toggle && (nextState[isRendering] = isMatching);\n\n if (isDifferent(paramsState(), params)) {\n nextState[mergedPropsState] = Object.assign(allPropsExcept(props(), selfProps), params);\n nextState[paramsState] = params;\n }\n\n //set new state just once to avoid several renders\n setState(that, nextState, () => {\n toggle && orNoop(props().onToggle)(isMatching);\n })\n };\n\n that[componentDidUpdate] = (prevProps, prevState) => {\n if (props() !== prevProps) {\n let mergedProps = Object.assign(allPropsExcept(props(), selfProps), paramsState());\n if (isDifferent(mergedProps, mergedPropsState()))\n mergedPropsState(mergedProps);\n }\n };\n\n that[render] = () => {\n const {children, controller} = props();\n return (controller || DefaultController)(isRendering(), children, mergedPropsState());\n };\n\n that[componentDidMount] = () => {\n matcher = createUrlMatchers(props().path);\n\n historyEvents.forEach(it => {\n addEventListener(WINDOW, it, process);\n });\n process();\n };\n\n that[componentWillUnmount] = () => {\n historyEvents.forEach(it => {\n removeEventListener(WINDOW, it, process);\n });\n };\n }\n}\n\nif (window.isNotProductionEnvironment) {\n Route.propTypes = {\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]).isRequired,\n controller: PropTypes.func,\n onToggle: PropTypes.func,\n };\n}\n\nconst DefaultController = (matches, children, props) => {\n if (!matches || !children) return null;\n if (Object.keys(props).length > 0) {\n return React.Children.map(children, child => React.cloneElement(child, props));\n }\n return children;\n};\n\nexport default Route;"],"names":["historyEvents","cleanPath","path","length","lastIndexOf","substring","createUrlMatcher","matcher","segments","split","optionals","map","it","indexOf","containsVariables","containsAnySegment","containsNot","p","endsWithAny","matchers","segment","i","variableNameIndex","variable","regex","regexStart","RegExp","prefix","params","match","not","Math","min","createUrlMatchers","Array","isArray","props","Object","assign","selfProps","setOf","Route","_PureComponent","_inherits","_super","_createSuper","properties","_this","_classCallCheck","call","that","_assertThisInitialized","state","propsGetter","_stateGSs","stateGSs","_stateGSs2","_slicedToArray","isRendering","paramsState","mergedPropsState","process","nextState","isMatching","WINDOW","location","pathname","toggle","isDifferent","allPropsExcept","setState","orNoop","onToggle","componentDidUpdate","prevProps","prevState","mergedProps","render","_props","children","controller","DefaultController","componentDidMount","forEach","addEventListener","componentWillUnmount","removeEventListener","_createClass","PureComponent","window","isNotProductionEnvironment","propTypes","PropTypes","oneOfType","string","arrayOf","isRequired","func","matches","keys","React","Children","child","cloneElement"],"mappings":"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"}
1
+ {"version":3,"file":"Route.js","sources":["../src/router/Route.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {allPropsExcept, isDifferent, orNoop, setOf, WINDOW, addEventListener, removeEventListener} from \"../Tools\";\nimport {componentDidUpdate, render, PureComponent, componentDidMount, componentWillUnmount, propsGetter, stateGSs, setState} from \"../ReactConstants\";\n\nconst historyEvents = ['popstate', 'pushState', 'replaceState'];\n\nconst cleanPath = (path) => {\n if (path.length > 1 && path.lastIndexOf('/') === path.length - 1)\n return path.substring(0, path.length - 1);\n\n return path;\n};\n\nconst createUrlMatcher = path => {\n let matcher;\n const segments = path.split('/');\n const optionals = segments.map(it => it === '*' || it.indexOf('?') === it.length - 1);\n const containsVariables = path.indexOf(':') !== -1;\n const containsAnySegment = path.indexOf('*') !== -1;\n const containsNot = path.indexOf('!') !== -1;\n\n if (!containsAnySegment && !containsVariables && !containsNot) {\n matcher = (p) => p === path\n } else {\n const endsWithAny = path.lastIndexOf('*') === path.length - 1;\n const matchers = segments.map((segment, i) => {\n let matcher;\n const variableNameIndex = segment.indexOf(':');\n if (segment === '*')\n matcher = () => true;\n else if (variableNameIndex !== -1) {\n let variable = segment.substring(variableNameIndex + 1);\n let regex = null\n if (variable.indexOf('?') !== -1)\n variable = variable.substring(0, variable.indexOf('?'));\n if (variable.indexOf('(') !== -1) {\n let regexStart = variable.indexOf('(');\n regex = new RegExp(variable.substring(regexStart))\n variable = variable.substring(0, regexStart);\n }\n\n const prefix = variableNameIndex && segment.substring(0, variableNameIndex);\n matcher = (p, params) => {\n if (regex && !!p && !p.match(regex))\n return false\n\n if (!p && !optionals[i])\n return false;\n if (prefix) {\n if (p.indexOf(prefix) === 0)\n p = p.substring(variableNameIndex);\n else\n return false;\n }\n\n params[variable] = p;\n return true;\n }\n } else if (segment.indexOf('!') === 0) {\n const not = segment.substring(1);\n matcher = (p) => p !== not;\n } else\n matcher = (p) => p === segment;\n return matcher;\n });\n\n matcher = (path, params) => {\n const segments = path.split('/');\n const length = Math.min(matchers.length, segments.length);\n\n // only exact match if mapping not ends with *\n if (!endsWithAny && matchers.length < segments.length)\n return false;\n\n // check that each segment matches\n for (let i = 0; i < length; i++) {\n if (!matchers[i](segments[i], params))\n return false;\n }\n\n // check that all other segments are optional\n for (let i = length; i < optionals.length; i++) {\n if (!optionals[i])\n return false;\n }\n\n return true;\n };\n }\n return matcher\n};\n\nconst createUrlMatchers = path => {\n if (Array.isArray(path)) {\n const matchers = path.map(it => createUrlMatcher(it));\n return (path, params) => {\n for (let i = 0; i < matchers.length; i++) {\n let props = {};\n if (matchers[i](path, props)) {\n Object.assign(params, props);\n return true;\n }\n }\n return false;\n }\n } else {\n return createUrlMatcher(path);\n }\n};\n\nconst selfProps = setOf([\n 'children',\n 'path',\n 'controller',\n 'onToggle',\n]);\n\nclass Route extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n let matcher;\n\n const props = propsGetter(that);\n const [\n isRendering,\n paramsState,\n mergedPropsState,\n ] = stateGSs(that, 3);\n\n const process = () => {\n let params = {};\n let nextState = {};\n let isMatching = matcher(cleanPath(WINDOW.location.pathname), params);\n\n const toggle = isMatching !== isRendering();\n toggle && (nextState[isRendering] = isMatching);\n\n if (isDifferent(paramsState(), params)) {\n nextState[mergedPropsState] = Object.assign(allPropsExcept(props(), selfProps), params);\n nextState[paramsState] = params;\n }\n\n //set new state just once to avoid several renders\n setState(that, nextState, () => {\n toggle && orNoop(props().onToggle)(isMatching);\n })\n };\n\n that[componentDidUpdate] = (prevProps, prevState) => {\n if (props() !== prevProps) {\n let mergedProps = Object.assign(allPropsExcept(props(), selfProps), paramsState());\n if (isDifferent(mergedProps, mergedPropsState()))\n mergedPropsState(mergedProps);\n }\n };\n\n that[render] = () => {\n const {children, controller} = props();\n return (controller || DefaultController)(isRendering(), children, mergedPropsState());\n };\n\n that[componentDidMount] = () => {\n matcher = createUrlMatchers(props().path);\n\n historyEvents.forEach(it => {\n addEventListener(WINDOW, it, process);\n });\n process();\n };\n\n that[componentWillUnmount] = () => {\n historyEvents.forEach(it => {\n removeEventListener(WINDOW, it, process);\n });\n };\n }\n}\n\nif (window.isNotProductionEnvironment) {\n Route.propTypes = {\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]).isRequired,\n controller: PropTypes.func,\n onToggle: PropTypes.func,\n };\n}\n\nconst DefaultController = (matches, children, props) => {\n if (!matches || !children) return null;\n if (Object.keys(props).length > 0) {\n return React.Children.map(children, child => React.cloneElement(child, props));\n }\n return children;\n};\n\nexport default Route;"],"names":["historyEvents","cleanPath","path","length","lastIndexOf","substring","createUrlMatcher","matcher","segments","split","optionals","map","it","indexOf","containsVariables","containsAnySegment","containsNot","p","endsWithAny","matchers","segment","i","variableNameIndex","variable","regex","regexStart","RegExp","prefix","params","match","not","Math","min","createUrlMatchers","Array","isArray","props","Object","assign","selfProps","setOf","Route","_PureComponent","_inherits","_super","_createSuper","properties","_this","_classCallCheck","call","that","_assertThisInitialized","state","propsGetter","_stateGSs","stateGSs","_stateGSs2","_slicedToArray","isRendering","paramsState","mergedPropsState","process","nextState","isMatching","WINDOW","location","pathname","toggle","isDifferent","allPropsExcept","setState","orNoop","onToggle","componentDidUpdate","prevProps","prevState","mergedProps","render","_props","children","controller","DefaultController","componentDidMount","forEach","addEventListener","componentWillUnmount","removeEventListener","_createClass","PureComponent","matches","keys","React","Children","child","cloneElement"],"mappings":"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"}
package/src/Checkbox.tsx CHANGED
@@ -6,8 +6,8 @@ import {PureComponent, render, propsGetter} from "./ReactConstants";
6
6
 
7
7
  export interface CheckboxProps {
8
8
  value: boolean,
9
- onChange: ChangeEventHandler,
10
- label: string | ReactElement,
9
+ onChange: ChangeEventHandler<HTMLInputElement>,
10
+ label?: string | ReactElement,
11
11
  name?: string,
12
12
  id?: string | number,
13
13
  disabled?: boolean,
@@ -9,7 +9,7 @@ export interface DropFileInputProps {
9
9
  icon?: MaterialIconType,
10
10
  label?: string | ReactElement,
11
11
  droppable?: boolean,
12
- onDrop?: DragEventHandler,
12
+ onDrop?: (files: File[]) => void,
13
13
  multiple?: boolean,
14
14
  accept?: string,
15
15
  }
@@ -1,4 +1,4 @@
1
- import ReactConstants from "./../ReactConstants"; 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"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import './Dropzone.css'; import React from 'react';
1
+ import React, {ReactElement, ReactNode} from 'react';
2
2
  import PropTypes from "prop-types";
3
3
  import ReactCreateElement from './ReactCreateElement';
4
4
  import './Dropzone.css'
@@ -10,7 +10,7 @@ const toArray = (o) => {
10
10
  return o;
11
11
 
12
12
  const l = [];
13
- for (let i = 0; i < __length(o); i++) {
13
+ for (let i = 0; i < o.length; i++) {
14
14
  l.push(o[i])
15
15
  }
16
16
  return l;
@@ -30,7 +30,19 @@ const ignoredTypes = setOf([
30
30
 
31
31
  const ignore = dt => dt && (!dt.types[0] || ignoredTypes[dt.types[0]]);
32
32
 
33
- class Dropzone extends PureComponent {
33
+ export interface DropzoneProps {
34
+ onDrop: (files: File[]) => void,
35
+ className?: string,
36
+ overlayLabel?: string | ReactElement,
37
+ clickable?: boolean,
38
+ droppable?: boolean,
39
+ multiple?: boolean,
40
+ disabled?: boolean,
41
+ accept?: string,
42
+ children?: ReactNode
43
+ }
44
+
45
+ class Dropzone extends PureComponent<DropzoneProps> {
34
46
 
35
47
  constructor(properties) {
36
48
  super(properties);
@@ -40,11 +52,11 @@ class Dropzone extends PureComponent {
40
52
  let entries = [];
41
53
 
42
54
  const props = propsGetter(that);
43
- const isDragging = stateGS(that);
55
+ const isDragging = stateGS<boolean>(that);
44
56
 
45
57
  const onDrop = (e) => {
46
58
  const dt = e.dataTransfer;
47
- const files = toArray(dt && dt.files || __target(e).files);
59
+ const files = toArray(dt && dt.files || e.target.files);
48
60
  props().onDrop(files);
49
61
  isDragging(false);
50
62
  entries = [];
@@ -61,8 +73,9 @@ class Dropzone extends PureComponent {
61
73
  const onDragEnter = (e) => {
62
74
  const dt = e.dataTransfer;
63
75
  if (ignore(dt)) return;
64
- if (entries.indexOf(__target(e)) === -1) {
65
- entries.push(__target(e))
76
+
77
+ if (entries.indexOf(e.target) === -1) {
78
+ entries.push(e.target)
66
79
  }
67
80
 
68
81
  dt && (dt.dropEffect = 'copy');
@@ -70,9 +83,9 @@ class Dropzone extends PureComponent {
70
83
  prevent(e);
71
84
  };
72
85
  const onDragLeave = (e) => {
73
- entries = entries.filter(el => el !== __target(e));
86
+ entries = entries.filter(el => el !== e.target);
74
87
 
75
- if (__length(entries) === 0)
88
+ if (entries.length === 0)
76
89
  isDragging(false);
77
90
 
78
91
  prevent(e)
@@ -80,8 +93,17 @@ class Dropzone extends PureComponent {
80
93
 
81
94
  const inputRef = createRef()
82
95
 
83
- that[ReactConstants[3]] = () => {
84
- const {children, className, disabled, clickable, multiple, droppable, overlayLabel, accept} = props();
96
+ that[render] = () => {
97
+ const {
98
+ children,
99
+ className,
100
+ disabled,
101
+ clickable = true,
102
+ multiple = true,
103
+ droppable = true,
104
+ overlayLabel,
105
+ accept
106
+ } = props();
85
107
 
86
108
  return <div className={classNames('Dropzone', className, isDragging() && 'dragging')}
87
109
  onDragLeave={!disabled && droppable && onDragLeave || UNDEFINED}
@@ -109,26 +131,4 @@ class Dropzone extends PureComponent {
109
131
  }
110
132
  }
111
133
 
112
- Dropzone.defaultProps = {
113
- clickable: true,
114
- multiple: true,
115
- droppable: true,
116
- };
117
-
118
- if (process.env.NODE_ENV !== 'production') {
119
- Dropzone.propTypes = {
120
- [ReactConstants[5]]: PropTypes.string,
121
- overlayLabel: PropTypes.oneOfType([
122
- PropTypes.string,
123
- PropTypes.element
124
- ]),
125
- clickable: PropTypes.bool,
126
- droppable: PropTypes.bool,
127
- multiple: PropTypes.bool,
128
- disabled: PropTypes.bool,
129
- onDrop: PropTypes.func.isRequired,
130
- accept: PropTypes.string,
131
- };
132
- }
133
-
134
134
  export default Dropzone;
@@ -1,4 +1,4 @@
1
- import ReactConstants from "./ReactConstants"; 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"; import {toConsumableArray as __toConsumableArray} from "./_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./_virtual/_rollupPluginBabelHelpers"; import {createProxy} from "./ProxyTools";
1
+ import {createProxy} from "./ProxyTools";
2
2
 
3
3
  it('test proxy null', () => {
4
4
  const p = createProxy(null);
@@ -0,0 +1,86 @@
1
+ import ReactConstants from "./ReactConstants"; 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"; import {toConsumableArray as __toConsumableArray} from "./_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./_virtual/_rollupPluginBabelHelpers"; import React from 'react';
2
+ import {mount} from 'enzyme';
3
+ import Store, {useStore} from "./Store";
4
+ import {act} from 'react-dom/test-utils';
5
+
6
+ it('test 1', () => {
7
+ const store = new Store({
8
+ count: 0,
9
+ value: ''
10
+ });
11
+ let renderCount = 0
12
+ const MyComponent = () => {
13
+ let s = useStore(store);
14
+ renderCount++
15
+ return <div>{s.count}</div>;
16
+ };
17
+ const wrapper = mount(<MyComponent/>);
18
+ expect(wrapper).toHaveHTML('<div>0</div>');
19
+ expect(renderCount).toBe(1);
20
+
21
+ act(() => {
22
+ store.set(it => {
23
+ it.count++
24
+ })
25
+ });
26
+ expect(wrapper).toHaveHTML('<div>1</div>');
27
+ expect(renderCount).toBe(2);
28
+
29
+ act(() => {
30
+ store.set(it => {
31
+ it.value = 'foo'
32
+ })
33
+ });
34
+ expect(wrapper).toHaveHTML('<div>1</div>');
35
+ expect(renderCount).toBe(3);
36
+
37
+ act(() => {
38
+ store.set(it => {
39
+ it.value = 'bar'
40
+ })
41
+ });
42
+ expect(wrapper).toHaveHTML('<div>1</div>');
43
+ expect(renderCount).toBe(4);
44
+ });
45
+
46
+
47
+ it('test 2', () => {
48
+ const store = new Store({
49
+ count: 0,
50
+ value: ''
51
+ });
52
+ let renderCount = 0
53
+ const MyComponent = () => {
54
+ let count = useStore(store, it=> it.count);
55
+ renderCount++
56
+ return <div>{count}</div>;
57
+ };
58
+ const wrapper = mount(<MyComponent/>);
59
+ expect(wrapper).toHaveHTML('<div>0</div>');
60
+ expect(renderCount).toBe(1);
61
+
62
+ act(() => {
63
+ store.set(it => {
64
+ it.count++
65
+ })
66
+ });
67
+ expect(wrapper).toHaveHTML('<div>1</div>');
68
+ expect(renderCount).toBe(2);
69
+
70
+ act(() => {
71
+ store.set({
72
+ value: 'foo'
73
+ })
74
+ });
75
+ expect(wrapper).toHaveHTML('<div>1</div>');
76
+ // react executes functional-component after first setState with the same value
77
+ expect(renderCount).toBe(3);
78
+
79
+ act(() => {
80
+ store.set({
81
+ value: 'bar'
82
+ })
83
+ });
84
+ expect(wrapper).toHaveHTML('<div>1</div>');
85
+ expect(renderCount).toBe(3);
86
+ });
@@ -1,5 +1,6 @@
1
1
  import {useEffect, useState} from "react";
2
2
  import {createProxy} from "./ProxyTools";
3
+ import {isFunction, isObject} from "../Tools";
3
4
 
4
5
  interface Stores {
5
6
  [index: number]: any
@@ -8,9 +9,11 @@ interface Stores {
8
9
  let STORES: Stores = {}
9
10
  let COUNTER = 0
10
11
 
12
+ type Setter<T> = (oldState: T) => T | void;
13
+
11
14
  abstract class AbstractStore<T> {
12
15
  get: () => T;
13
- set: (mutator: (oldState: T) => T | void) => void;
16
+ set: (setter: T | Partial<T> | (Setter<T>)) => void;
14
17
  reset: () => void;
15
18
  subscribe: (fn: () => void) => void;
16
19
  unsubscribe: (fn: () => void) => void;
@@ -23,27 +26,36 @@ export class Store<T> extends AbstractStore<T> {
23
26
  super()
24
27
  let that = this;
25
28
  let listeners: Array<() => void> = []
29
+ let index = '' + COUNTER++;
30
+ let runListeners = () => {
31
+ listeners.forEach(fn => fn())
32
+ };
26
33
 
27
- const index = COUNTER++;
28
34
  STORES[index] = initialState
29
35
 
30
36
  that.unsubscribe = (fn: () => void) => {
31
- listeners = listeners.filter(f => f !== fn)
37
+ let i = listeners.indexOf(fn)
38
+ let length = listeners.length;
39
+ if (i > -1) {
40
+ listeners[i] = listeners[length - 1]
41
+ listeners.splice(length - 1, 1)
42
+ }
32
43
  }
33
44
  that.get = (): T => STORES[index]
34
-
35
- const runListeners = () => {
36
- listeners.forEach(fn => fn())
37
- };
38
-
39
- that.set = (mutator: (oldState: T) => T | void) => {
40
- const proxy = createProxy(STORES[index]);
41
- const result = mutator(proxy);
42
- if (!result || result === proxy)
43
- STORES[index] = proxy.bake()
44
- else
45
- STORES[index] = result
46
-
45
+ that.set = (setter) => {
46
+ let result;
47
+ if (isFunction(setter)) {
48
+ const proxy = createProxy(STORES[index]);
49
+ result = (setter as Setter<T>)(proxy);
50
+ if (!result || result === proxy)
51
+ result = proxy.bake()
52
+ } else if (isObject(setter)) {
53
+ result = {...STORES[index], ...setter}
54
+ } else {
55
+ result = setter
56
+ }
57
+
58
+ STORES[index] = result
47
59
  runListeners();
48
60
  }
49
61
 
@@ -85,7 +97,7 @@ export function useStore<T, R>(store: Store<T>, selector?: Selector<T, R>): R {
85
97
  if (!selector)
86
98
  selector = (defaultSelector as Selector<T, R>)
87
99
 
88
- const [state, setState] = useState(selector(store.get()))
100
+ const [state, setState] = useState(() => selector(store.get()))
89
101
 
90
102
  useEffect(() => {
91
103
  const updateState = () => {
@@ -96,7 +108,7 @@ export function useStore<T, R>(store: Store<T>, selector?: Selector<T, R>): R {
96
108
  return () => {
97
109
  store.unsubscribe(updateState);
98
110
  }
99
- }, [selector])
111
+ }, [])
100
112
 
101
113
  return state
102
114
  }
@@ -0,0 +1 @@
1
+ export {};
package/store/Store.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  interface Stores {
2
2
  [index: number]: any;
3
3
  }
4
+ declare type Setter<T> = (oldState: T) => T | void;
4
5
  declare abstract class AbstractStore<T> {
5
6
  get: () => T;
6
- set: (mutator: (oldState: T) => T | void) => void;
7
+ set: (setter: T | Partial<T> | (Setter<T>)) => void;
7
8
  reset: () => void;
8
9
  subscribe: (fn: () => void) => void;
9
10
  unsubscribe: (fn: () => void) => void;
package/store/Store.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import ReactConstants from "./../ReactConstants"; 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"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import { useState, useEffect } from 'react';
2
2
  import { createProxy } from './ProxyTools.js';
3
+ import { isFunction, isObject } from '../Tools.js';
3
4
 
4
5
  let STORES = {};
5
6
  let COUNTER = 0;
@@ -10,22 +11,35 @@ class Store extends AbstractStore {
10
11
  super();
11
12
  let that = this;
12
13
  let listeners = [];
13
- const index = COUNTER++;
14
+ let index = '' + COUNTER++;
15
+ let runListeners = () => {
16
+ listeners.forEach(fn => fn());
17
+ };
14
18
  STORES[index] = initialState;
15
19
  that.unsubscribe = (fn) => {
16
- listeners = listeners.filter(f => f !== fn);
20
+ let i = listeners.indexOf(fn);
21
+ let length = __length(listeners);
22
+ if (i > -1) {
23
+ listeners[i] = listeners[length - 1];
24
+ listeners.splice(length - 1, 1);
25
+ }
17
26
  };
18
27
  that.get = () => STORES[index];
19
- const runListeners = () => {
20
- listeners.forEach(fn => fn());
21
- };
22
- that.set = (mutator) => {
23
- const proxy = createProxy(STORES[index]);
24
- const result = mutator(proxy);
25
- if (!result || result === proxy)
26
- STORES[index] = proxy.bake();
27
- else
28
- STORES[index] = result;
28
+ that.set = (setter) => {
29
+ let result;
30
+ if (isFunction(setter)) {
31
+ const proxy = createProxy(STORES[index]);
32
+ result = setter(proxy);
33
+ if (!result || result === proxy)
34
+ result = proxy.bake();
35
+ }
36
+ else if (isObject(setter)) {
37
+ result = __extends(__extends({}, STORES[index]), setter);
38
+ }
39
+ else {
40
+ result = setter;
41
+ }
42
+ STORES[index] = result;
29
43
  runListeners();
30
44
  };
31
45
  that.reset = () => {
@@ -51,7 +65,7 @@ const defaultSelector = (store) => store;
51
65
  function useStore(store, selector) {
52
66
  if (!selector)
53
67
  selector = defaultSelector;
54
- const [state, setState] = useState(selector(store.get()));
68
+ const [state, setState] = useState(() => selector(store.get()));
55
69
  useEffect(() => {
56
70
  const updateState = () => {
57
71
  setState(selector(store.get()));
@@ -60,7 +74,7 @@ function useStore(store, selector) {
60
74
  return () => {
61
75
  store.unsubscribe(updateState);
62
76
  };
63
- }, [selector]);
77
+ }, []);
64
78
  return state;
65
79
  }
66
80
 
@@ -1 +1 @@
1
- {"version":3,"file":"Store.js","sources":["../src/store/Store.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Store.js","sources":["../src/store/Store.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}