lilact 0.7.8 → 0.7.10

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <img src="./icon.png" alt="Description" width="200" style="margin-left: -.75rem"/>
1
+ <img src="./icon.png" alt="Description" width="128" style="margin-left: -.76rem"/>
2
2
 
3
3
  # Lilact
4
4
 
@@ -8,6 +8,8 @@
8
8
 
9
9
  [Lilact repo on GitHub](https://github.com/arashkazemi/lilact) - [Lilact on npm](https://www.npmjs.com/package/lilact)
10
10
 
11
+ [Lilact/PHP Demo](https://github.com/arashkazemi/lilact-php-demo) - [Lilact/Python Demo](https://github.com/arashkazemi/lilact-python-demo)
12
+
11
13
  ---
12
14
 
13
15
  If you find Lilact useful, please consider sponsoring. Your support funds ongoing maintenance,
@@ -18,33 +20,34 @@ performance improvements, and new features. [Sponsor me on GitHub](https://githu
18
20
  `Lilact` is a very lightweight implementation of the React API that is
19
21
  designed to work in the browser. It can be used as a single script
20
22
  that is around `80kb` minified and around `27kb` gzipped and includes its whole api.
21
- `Lilact` is very fast, it uses minimum resources and handles memory very efficiently.
23
+ `Lilact` is very fast, it uses minimal resources and handles memory very efficiently.
22
24
 
23
25
  `Lilact` works in the browser, so it doesn't rely on any JS/node back-end and can
24
26
  essentially work with any kind of web server/back-end. An example of using it with a PHP/MySQL
25
27
  data store is available on [lilact-php-demo](https://github.com/arashkazemi/lilact-php-demo).
28
+ And an example of using it with a Python/SQLite data store is available on
29
+ [lilact-python-demo](https://github.com/arashkazemi/lilact-python-demo).
26
30
 
27
- `Lilact` uses its own JSX transpiler, and not babel. It is a recursive-descent
28
- parser with lookahead, but it doesn't parse the JS syntax completely and relies on the
29
- JS runtime to detect some errors. The transpiler weights
30
- only a few kilobytes and can be even incorporated into other React engines. To
31
- make it better, it even generates sourcemaps like a charm, without relying on
32
- any 3rd party library. There is a `transpile.js` helper in the bin directory to
33
- show how you can use it.
31
+ `Lilact` uses its own JSX transpiler (not Babel). It is a recursive-descent
32
+ parser with lookahead, that doesn't parse the JS syntax completely and relies on the
33
+ JS runtime to detect some errors. The transpiler weights only a few kilobytes and can
34
+ be incorporated into other React engines too. It even generates sourcemaps without relying
35
+ on any 3rd party library. There is a `transpile.js` helper in the bin directory to show
36
+ how you can use it.
34
37
 
35
38
  `Lilact` implements both the **legacy class based** and **modern hook based** APIs. And it
36
39
  has almost everything necessary. In addition to the API, it also includes the official
37
40
  `Redux` and `PropTypes` libraries to be used (see the `redux.jsx` and `proptypes.jsx` demos).
38
- So yes it has redux support and has many of the functions and hooks, i.e. `connect` and
41
+ So it has redux support and has many of the functions and hooks, i.e. `connect` and
39
42
  `useDispatch`.
40
43
 
41
44
  It also includes the amazing `@emotion/css` library to ease working with styles.
42
45
  It can be accessed through `Lilact.emotion`.
43
46
 
44
47
  To ease working, it already includes a `HashRouter`, `CSSTransition`, `ErrorBoundary`,
45
- `Suspense`, `Spinner`, and many other stuff. It also has a specific timeout implementation
46
- that can be paused and resumed at will. `Lilact`'s `Suspense` even has a few more features
47
- than the standard API.
48
+ `Suspense`, and some helper components like `Spinner` and `ResizablePane`. It also has
49
+ a specific timeout implementation that can be paused and resumed at will. `Lilact`'s
50
+ `Suspense` has a few more features than the standard API.
48
51
 
49
52
  You can see all the available methods in the documentation. And there is a list of
50
53
  demos that can all be seen alongside their code at [Lilact Demo Examples](./static/index.html).
@@ -501,11 +501,11 @@ function parseXMLContent(code, index, container, eols)
501
501
  }
502
502
 
503
503
 
504
- function parseXML(code, index, container, check_before=false)
504
+ function parseXML(code, index, container, look_behind=false)
505
505
  {
506
- if(check_before) {
506
+ if(look_behind) {
507
507
  // valid tokens before start of an xml in js code (not in xml content)
508
- const prevs = [/*'return', 'yield', 'throw', */'=', ',', '(', '&', '|', '?', ':', '{'];
508
+ const prevs = [/*'return', 'yield', 'throw', */'=', ',', '(', '&', '|', '?', ':', '{', '['];
509
509
 
510
510
  let i = index;
511
511
 
@@ -721,7 +721,7 @@ function parseParanthesis(code, index, container)
721
721
  break;
722
722
 
723
723
  case '(':
724
- [index] = lookAhead( parseParanthesis, code, index, b, true );
724
+ [index] = lookAhead( parseParanthesis, code, index, b );
725
725
  break;
726
726
 
727
727
  case '}':
@@ -787,7 +787,7 @@ function parseJS(code, index=0, is_block=false, container)
787
787
  }
788
788
 
789
789
  case '(': // this is only for function detection
790
- [index] = lookAhead( parseParanthesis, code, index, b, true );
790
+ [index] = lookAhead( parseParanthesis, code, index, b );
791
791
  break;
792
792
 
793
793
  case ')': // this is only for function detection
@@ -1269,7 +1269,7 @@ function transpileJSX( jsx, {
1269
1269
 
1270
1270
 
1271
1271
 
1272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2pzeC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7Q0FFQTtDQUNBOztDQUVBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0NBRUE7Ozs7Q0FJQTtpQ0FDZ0M7Ozs7O0VBSy9CO0VBQ0E7OEJBQzRCOzs7O3FDQUlPOzs7Ozs7O21CQU9sQjtDQUNsQjthQUNZO0lBQ1QsSUFBSTs7Ozs7O29CQU1ZO0NBQ25CO0VBQ0M7RUFDQTtFQUNBOztFQUVBOztFQUVBOzs7O09BSUssUUFBUTtLQUNWLGdCQUFpQjtLQUNqQixrQkFBa0I7Ozs7S0FJbEIsYUFBYzs7OztZQUlQOzs7OztPQUtMLG9CQUFvQjs7U0FFbEIsS0FBSzs7OztJQUlWO0lBQ0E7SUFDQTtRQUNJO1NBQ0MscUJBQXNCOztPQUV4QixtQ0FBbUM7OztTQUdqQyxJQUFJOzs7Ozs7OztzQkFRUztDQUNyQjtZQUNXOzs7OztJQUtSLHlDQUF5QztvQkFDekI7Ozs7Ozs7T0FPYixvQkFBb0I7OztTQUdsQixLQUFLOzs7TUFHUixzQ0FBc0M7O09BRXJDLG1DQUFtQzs7Ozs7O01BTXBDLGdCQUFnQjs7T0FFZixtQ0FBbUM7Ozs7Ozs7Ozs7WUFVOUI7Ozs7d0JBSVk7Q0FDdkI7O09BRU07R0FDSDs7RUFFRjs7Ozs7O0lBTUUsU0FBUzthQUNBOzs7Ozs7MEJBTWEsbUJBQW9CLEFBQUQ7Ozs7S0FJeEMsbUNBQW1DOzs7O09BSWpDOzs7UUFHQyxVQUFXOzs7S0FHZCxXQUFXO2NBQ0Y7Ozs7Ozt1QkFNUyxxQkFBc0IsQUFBRDs7O01BR3RDLG1DQUFtQzs7Ozs7WUFLN0I7Ozs7Q0FJWDtDQUNBOzsyQkFF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
1272
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2pzeC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7Q0FFQTtDQUNBOztDQUVBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0NBRUE7Ozs7Q0FJQTtpQ0FDZ0M7Ozs7O0VBSy9CO0VBQ0E7OEJBQzRCOzs7O3FDQUlPOzs7Ozs7O21CQU9sQjtDQUNsQjthQUNZO0lBQ1QsSUFBSTs7Ozs7O29CQU1ZO0NBQ25CO0VBQ0M7RUFDQTtFQUNBOztFQUVBOztFQUVBOzs7O09BSUssUUFBUTtLQUNWLGdCQUFpQjtLQUNqQixrQkFBa0I7Ozs7S0FJbEIsYUFBYzs7OztZQUlQOzs7OztPQUtMLG9CQUFvQjs7U0FFbEIsS0FBSzs7OztJQUlWO0lBQ0E7SUFDQTtRQUNJO1NBQ0MscUJBQXNCOztPQUV4QixtQ0FBbUM7OztTQUdqQyxJQUFJOzs7Ozs7OztzQkFRUztDQUNyQjtZQUNXOzs7OztJQUtSLHlDQUF5QztvQkFDekI7Ozs7Ozs7T0FPYixvQkFBb0I7OztTQUdsQixLQUFLOzs7TUFHUixzQ0FBc0M7O09BRXJDLG1DQUFtQzs7Ozs7O01BTXBDLGdCQUFnQjs7T0FFZixtQ0FBbUM7Ozs7Ozs7Ozs7WUFVOUI7Ozs7d0JBSVk7Q0FDdkI7O09BRU07R0FDSDs7RUFFRjs7Ozs7O0lBTUUsU0FBUzthQUNBOzs7Ozs7MEJBTWEsbUJBQW9CLEFBQUQ7Ozs7S0FJeEMsbUNBQW1DOzs7O09BSWpDOzs7UUFHQyxVQUFXOzs7S0FHZCxXQUFXO2NBQ0Y7Ozs7Ozt1QkFNUyxxQkFBc0IsQUFBRDs7O01BR3RDLG1DQUFtQzs7Ozs7WUFLN0I7Ozs7Q0FJWDtDQUNBOzsyQkFF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
1273
1273
 
1274
1274
  /***/ }),
1275
1275
 
@@ -7570,16 +7570,32 @@ function HashRouter({ children, basename = "" }) {
7570
7570
 
7571
7571
  const [location, setLocation] = useState(readLocation);
7572
7572
  useEffect(() => {
7573
- const onHash = () => setLocation(readLocation());
7574
- window.addEventListener("hashchange", onHash);
7575
- return () => window.removeEventListener("hashchange", onHash);
7573
+ const onChange = () => setLocation(readLocation());
7574
+
7575
+ window.addEventListener("hashchange", onChange);
7576
+ window.addEventListener("popstate", onChange);
7577
+
7578
+ // initialize once in case hash/state are already set
7579
+ onChange();
7580
+
7581
+ return () => {
7582
+ window.removeEventListener("hashchange", onChange);
7583
+ window.removeEventListener("popstate", onChange);
7584
+ };
7576
7585
  }, [basename]);
7577
7586
 
7578
7587
  const navigate = useCallback((to, { replace = false, state } = {}) => {
7588
+ if (typeof to === "number") {
7589
+ history.go(to);
7590
+ return;
7591
+ }
7592
+
7579
7593
  const url = createURL(to);
7580
7594
  const href = "#" + (basename + url);
7595
+
7581
7596
  if (replace) history.replaceState({ __state: state }, "", href);
7582
7597
  else history.pushState({ __state: state }, "", href);
7598
+
7583
7599
  setLocation(readLocation());
7584
7600
  }, [basename]);
7585
7601
 
@@ -7785,7 +7801,7 @@ function Routes({ children }) {
7785
7801
 
7786
7802
 
7787
7803
 
7788
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQzs7UUFFTztRQUNBOztvQ0FFNEI7bUNBQ0EsQUFBRCxVQUFXOztDQUU3QzttQkFDa0IsUUFBUSw4QkFBK0Isc0JBQXNCLG9CQUFvQjs7Q0FFbkc7Ozs7Ozs7MkJBTzJCLEFBQUQsOEJBQThCO3VCQUNsQyxNQUFNOzt5QkFFSjttQ0FDVSxVQUFXO3NEQUNRO2tEQUNKO1VBQ3hDOzs7Ozs7OzswQ0FRZ0M7V0FDOUIsQUFBRCxNQUFPO2lCQUNBLGlCQUFpQixZQUFhO3lCQUN0QjtTQUNoQixnQ0FBZ0M7Ozs4QkFHWCxBQUFELElBQU0sNkJBQTZCLFFBQU87dUJBQ2hEO3FCQUNGO0tBQ2hCLDhCQUErQixBQUFEO3dCQUNWLEFBQUQ7YUFDWCxZQUFhOzs7U0FHbEIsMkNBQWlFOzs7Q0FHekU7Ozs7OzRCQUsyQixHQUFHO3dCQUNQO0tBQ25CLHNCQUFzQjs7OztDQUkxQjs7Ozs7NEJBSzJCLEdBQUc7d0JBQ1A7S0FDbkIsc0JBQXNCOzs7bUJBR1IsR0FBRzt3QkFDRTt1QkFDRDs7O0NBR3RCOzs7Ozs7Ozs7Ozs7Ozs7cUJBZXFCLEFBQUQsaUdBQWlHOzhCQUN4Rjs4QkFDQTtzQkFDUixJQUFJO01BQ3BCLGlCQUFpQjtNQUNqQjs7O0dBR0Y7OzttQkFHZTtXQUNSLElBQUs7O1NBRVA7RUFDTiwrSEFDQzs7Ozt1QkFLbUIsSUFBSTtLQUN0QjtrQkFDYyxBQUFEOzs7O0NBSWpCOzs7Ozs7Ozs7Ozs7Ozs7d0JBZXdCLEFBQUQ7Ozs7Ozs7Ozs7OztJQVlwQjs4QkFDMEI7OEJBQ0E7c0RBQ3dCLGNBQWMsV0FBVzs7c0NBRXpDLCtCQUErQiw0QkFBNEIsd0JBQXdCLGFBQWM7dUVBQy9ELEFBQUQ7c0ZBQ2UsY0FBYzsyREFDeEMsQUFBRDtpQ0FDMUIsS0FBSyxpQkFBa0IsU0FBUSxlQUFnQjs4QkFDbEQ7O3NCQUVSLElBQUk7TUFDcEIsaUJBQWlCO01BQ2pCO21CQUNhO1dBQ1IsSUFBSzs7O1NBR1A7RUFDTixpSkFDQyx5Q0FBMkMsQUFBRDs7OztDQUs3QztDQUNBO3FCQUNvQixVQUFVOztFQUU3Qjt5Q0FDd0MsQUFBRCxtQkFBb0IsQUFBRDtXQUNoRCxBQUFELHdCQUF5QixhQUFhO2tCQUM5Qjs7O1dBR1AsQUFBRCxzQkFBc0I7OzBCQUVQO1NBQ2pCOzs7bUJBR1Usb0JBQW9CO0tBQ2xDLHlCQUF5Qix5QkFBeUIsTUFBTTtRQUNyRCxtQ0FBbUM7c0JBQ3JCO0tBQ2pCLFlBQVk7aUJBQ0E7b0JBQ0ksQUFBRCxVQUFXLDhCQUErQjtFQUM1RDtLQUNHLG1DQUFtQzs4REFDc0I7O1NBRXJEOzs7Q0FHUjtDQUNBOzs7Ozs7OztzQkFRc0IsQUFBRCxxQ0FBcUM7RUFDekQ7OztDQUdEOzs7Ozs7dUJBTXVCLEFBQUQsZUFBZTs4QkFDUjs7RUFFNUI7aUNBQytCOztNQUUzQixvQ0FBb0M7O0dBRXZDOzs7OztTQUtNLCtCQUErQjtNQUNsQyxVQUFVO0lBQ1o7T0FDRyxVQUFVO1lBQ0wscUJBQTBDO2NBQ3hDLGNBQWM7S0FDdkI7WUFDTyxxQkFBMEMsRUFBUTtXQUNuRDtZQUNDLHFCQUEwQzs7Ozs7RUFLcEQifQ==
7804
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQzs7UUFFTztRQUNBOztvQ0FFNEI7bUNBQ0EsQUFBRCxVQUFXOztDQUU3QzttQkFDa0IsUUFBUSw4QkFBK0Isc0JBQXNCLG9CQUFvQjs7Q0FFbkc7Ozs7Ozs7MkJBTzJCLEFBQUQsOEJBQThCO3VCQUNsQyxNQUFNOzt5QkFFSjttQ0FDVSxVQUFXO3NEQUNRO2tEQUNKO1VBQ3hDOzs7Ozs7OzswQ0FRZ0M7V0FDOUIsQUFBRCxNQUFPO21CQUNFLGlCQUFpQixZQUFhOzt5QkFFeEI7eUJBQ0E7O0VBRXZCO1VBQ1E7O1NBRUQsTUFBTTs2QkFDYzs2QkFDQTs7Ozs4QkFJQyxBQUFELElBQU0sNkJBQTZCLFFBQU87S0FDbEUseUJBQXlCO2FBQ2pCOzs7O3VCQUlVO3FCQUNGOztLQUVoQiw4QkFBK0IsQUFBRDt3QkFDVixBQUFEOzthQUVYLFlBQWE7OztTQUdsQiwyQ0FBaUU7OztDQUd6RTs7Ozs7NEJBSzJCLEdBQUc7d0JBQ1A7S0FDbkIsc0JBQXNCOzs7O0NBSTFCOzs7Ozs0QkFLMkIsR0FBRzt3QkFDUDtLQUNuQixzQkFBc0I7OzttQkFHUixHQUFHO3dCQUNFO3VCQUNEOzs7Q0FHdEI7Ozs7Ozs7Ozs7Ozs7OztxQkFlcUIsQUFBRCxpR0FBaUc7OEJBQ3hGOzhCQUNBO3NCQUNSLElBQUk7TUFDcEIsaUJBQWlCO01BQ2pCOzs7R0FHRjs7O21CQUdlO1dBQ1IsSUFBSzs7U0FFUDtFQUNOLCtIQUNDOzs7O3VCQUttQixJQUFJO0tBQ3RCO2tCQUNjLEFBQUQ7Ozs7Q0FJakI7Ozs7Ozs7Ozs7Ozs7Ozt3QkFld0IsQUFBRDs7Ozs7Ozs7Ozs7O0lBWXBCOzhCQUMwQjs4QkFDQTtzREFDd0IsY0FBYyxXQUFXOztzQ0FFekMsK0JBQStCLDRCQUE0Qix3QkFBd0IsYUFBYzt1RUFDL0QsQUFBRDtzRkFDZSxjQUFjOzJEQUN4QyxBQUFEO2lDQUMxQixLQUFLLGlCQUFrQixTQUFRLGVBQWdCOzhCQUNsRDs7c0JBRVIsSUFBSTtNQUNwQixpQkFBaUI7TUFDakI7bUJBQ2E7V0FDUixJQUFLOzs7U0FHUDtFQUNOLGlKQUNDLHlDQUEyQyxBQUFEOzs7O0NBSzdDO0NBQ0E7cUJBQ29CLFVBQVU7O0VBRTdCO3lDQUN3QyxBQUFELG1CQUFvQixBQUFEO1dBQ2hELEFBQUQsd0JBQXlCLGFBQWE7a0JBQzlCOzs7V0FHUCxBQUFELHNCQUFzQjs7MEJBRVA7U0FDakI7OzttQkFHVSxvQkFBb0I7S0FDbEMseUJBQXlCLHlCQUF5QixNQUFNO1FBQ3JELG1DQUFtQztzQkFDckI7S0FDakIsWUFBWTtpQkFDQTtvQkFDSSxBQUFELFVBQVcsOEJBQStCO0VBQzVEO0tBQ0csbUNBQW1DOzhEQUNzQjs7U0FFckQ7OztDQUdSO0NBQ0E7Ozs7Ozs7O3NCQVFzQixBQUFELHFDQUFxQztFQUN6RDs7O0NBR0Q7Ozs7Ozt1QkFNdUIsQUFBRCxlQUFlOzhCQUNSOztFQUU1QjtpQ0FDK0I7O01BRTNCLG9DQUFvQzs7R0FFdkM7Ozs7O1NBS00sK0JBQStCO01BQ2xDLFVBQVU7SUFDWjtPQUNHLFVBQVU7WUFDTCxxQkFBMEM7Y0FDeEMsY0FBYztLQUN2QjtZQUNPLHFCQUEwQyxFQUFRO1dBQ25EO1lBQ0MscUJBQTBDOzs7OztFQUtwRCJ9
7789
7805
  ;// ./src/accessories.jsx
7790
7806
  /*
7791
7807