mol_tree2 0.0.3 → 1.0.6

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/.nojekyll ADDED
File without changes
@@ -1,38 +1,30 @@
1
1
  # $mol
2
2
 
3
- Reactive micro-modular ui framework. Very simple, but very powerful!
3
+ Reactive micro-modular UI framework. Very simple, but very powerful!
4
+
5
+ ![](https://habrastorage.org/webt/0r/l1/70/0rl170zizkwddstnp5mt5bruroa.png)
4
6
 
5
7
  # Contents
6
8
 
7
- - [Levels](#levels)
8
9
  - [Features](#features)
9
- - [Applications](https://apps.hyoo.ru/)
10
- - [Benchmarks](#benchmarks)
11
- - [Articles](#articles)
12
- - [Discussions](https://teleg.run/mam_mol)
10
+ - [Review](#reviews)
13
11
  - [Quick start](#quick-start)
14
12
  - [Tutorials](#tutorials)
15
13
  - [Rationale](#rationale)
16
14
  - [Modules](#modules)
15
+ - [Usage from NPM](#usage-from-npm-ecosystem)
17
16
  - [Contributors](#contributors)
18
17
  - [Cool stuff](#cool-stuff)
19
18
  - [Donate](#donate)
20
19
 
21
- # Levels
22
-
23
- 1. **Library.** $mol is just set of small libs. Honor libs: jQuery, React, Redux, MobX.
24
- 2. **Low level framework.** $mol is very flexible, but simple. Honor low level fw: Angular, Vue, Ember.
25
- 3. **high level framework.** $mol has many costomizable ui components. Honor high level fw: Ext, OpenUI5.
26
- 4. **Platform.** $mol doesn't fit it yet. Honor platforms: Drupal, SAP, 1C.
27
-
28
20
  # Features
29
21
 
30
22
  - [Zero configuration](#zero-configuration). Just checkout and use it.
31
23
  - [Lazy rendering/evaluating/loading etc](#lazyness).
32
24
  - [Full reactivity](#reactivity) in all application layers. Not only between View and ViewModel.
33
25
  - [Automatic dependency tracking](#reactivity) between reactive containers. No need to manual publish/subscribe/unsubscribe and streams routing.
34
- - [Effective state synchronization](mem) in right way.
35
- - Automatic inclusion of modules in package at compile time. No need for manually importing them. [Just use it](#zero-configuration).
26
+ - [Effective state synchronization](wire) in right way.
27
+ - Automatic inclusion of modules in package at compile time. No need for manually importing or installing them. [Just use it](#zero-configuration).
36
28
  - Very small modules. [All of them are optional](#zero-configuration).
37
29
  - Cross platform. [Support any environment](#zero-configuration) (NodeJS, Web browsers, Cordova).
38
30
  - Static typing ([TypeScript](https://www.typescriptlang.org/)). Full IDE support.
@@ -43,23 +35,11 @@ Reactive micro-modular ui framework. Very simple, but very powerful!
43
35
  - Pseudosynchronous code. [Asynchrony is abstracted by reactivity](#reactivity). No callbacks/promises/streams hell. No async/await/yield virus.
44
36
  - Automatic [BEM](https://en.bem.info/methodology/naming-convention/)-attributes generation for elements.
45
37
 
46
- # Benchmarks
47
-
48
- - [$hyoo_bench_list](https://github.com/hyoo-ru/bench.hyoo.ru/tree/master/list) - Frameworks comparison ([online](https://bench.hyoo.ru/list/#sort=fill/sample=angular-1-5-5~mol~native-html~react-15-3-2~native-dom))
49
- - [ToDoMVC benchmark](https://github.com/hyoo-ru/todomvc/tree/master/benchmark) ([online](https://hyoo-ru.github.io/todomvc/benchmark/#sample=angular2%7Eangularjs%7Eknockoutjs%7Emol%7Epolymer%7Ereact-alt%7Evanillajs%7Evue#sort=fill#))
50
- - [WebPageTest - Loading progress of ToDOMVC applications on some frameworks](https://www.webpagetest.org/video/compare.php?tests=161217_V8_6RFK%2C161217_G9_6RFM%2C161217_YZ_6RFN%2C161217_DM_6RFP%2C161217_2B_6RFQ%2C161217_RJ_6RFR%2C161217_2R_6RFS%2C161217_H5_6RFT%2C161217_CW_6RFV&thumbSize=150&ival=100&end=all)
51
- - [Line charts comparison](https://github.com/hyoo-ru/bench.hyoo.ru/tree/master/chart/rope) ([online](https://bench.hyoo.ru/chart/rope/#sort=fill/sample=hcharts~mol))
52
- - [Bar charts comparison](https://github.com/hyoo-ru/bench.hyoo.ru/tree/master/chart/bar) ([online](https://bench.hyoo.ru/chart/bar/#sort=fill/sample=hcharts~mol))
53
- - [React vs React Fiber vs $mol](https://github.com/nin-jin/sierpinski) ([online](https://nin-jin.github.io/sierpinski))
38
+ # Reviews
54
39
 
55
- # Articles
56
-
57
- - [$mol лучшее средство от геморроя](https://habr.com/ru/post/341146/) - Quick introduction to $mol
58
- - [$mol: реактивный микромодульный фреймворк](https://habrahabr.ru/post/311172/) - Comprehensive $mol review
59
- - [Объектное Реактивное Программирование](https://habrahabr.ru/post/330466/) - Features of Object Reactive Programming
60
- - [Концепции автоматического тестирования](https://habr.com/ru/post/351430/) - Testing principles
61
- - [Идеальный UI фреймворк](https://habrahabr.ru/post/276747/) - Problems of popular frameworks
62
- - [Принципы написания кода](https://habrahabr.ru/post/236785/) - Code style principles
40
+ - [$mol — лучшее средство от геморроя](https://mol.hyoo.ru/#!section=slides/slides=https%3A%2F%2Fnin-jin.github.io%2Fslides%2Fmol%2F) - Quick introduction to $mol
41
+ - [$mol: реактивный микромодульный фреймворк](https://mol.hyoo.ru/#!section=articles/author=nin-jin/repo=HabHub/article=5) - First introduction to $mol
42
+ - [$mol: 4 года спустя](https://mol.hyoo.ru/#!section=articles/author=nin-jin/repo=HabHub/article=23) - State of $mol after 4 years
63
43
 
64
44
  # Quick start
65
45
 
@@ -74,6 +54,8 @@ git clone https://github.com/hyoo-ru/mam.git ./mam && cd mam
74
54
  npm install && npm start
75
55
  ```
76
56
 
57
+ Or simply use [![Gitpod Online Dev Workspace](https://img.shields.io/badge/Gitpod-Online--Dev--Workspace-blue.svg)](https://gitpod.io/#https://github.com/hyoo-ru/mam).
58
+
77
59
  ## Setup your editor
78
60
 
79
61
  - Use MAM directory as root of your project in editor
@@ -83,28 +65,36 @@ npm install && npm start
83
65
 
84
66
  ## Create your application component
85
67
 
86
- Examples use namespace `my` and application name `hello`, but you can use your own namespace and application name.
68
+ The following example uses the namespace "my" and the application name "hello", but you can use your own namespace and application name.
69
+
70
+ Let's create a component that allows you to enter your name and display greeting text: "Hello, " + your name.
71
+
72
+ You need to create next files:
73
+ - ./my/hello/index.html - Web entry point
74
+ - ./my/hello/hello.view.tree - Declarative component description
75
+ - ./my/hello/hello.view.ts - Behaviour/User interface logic
76
+ - ./my/hello/hello.test.ts - Tests
77
+ - ./my/hello/hello.view.css - Styles
87
78
 
88
79
  Add **web entry point** at `./my/hello/index.html`:
89
80
 
90
81
  ```html
91
- <!-- Disable quirks mode -->
92
- <!doctype html>
93
-
94
- <!-- Allow height:100% in body -->
95
- <html style=" height: 100% ">
96
-
97
- <!-- Force utf-8 encoding -->
98
- <meta charset="utf-8" />
99
-
100
- <!-- Disable mobile browser auto zoom, $mol is adaptive -->
101
- <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1" />
102
-
103
- <!-- autobind component to element on load -->
104
- <body mol_view_root="$my_hello">
105
-
106
- <!-- link to autogenerated js bundle -->
107
- <script src="web.js"></script>
82
+ <!doctype html> <!-- Disable quirks mode -->
83
+ <html mol_view_root> <!-- Reset root styles -->
84
+ <head>
85
+ <meta charset="utf-8" /> <!-- Force utf-8 encoding -->
86
+ <meta
87
+ name="viewport"
88
+ content="width=device-width, height=device-height, initial-scale=1"
89
+ /> <!-- Disable mobile browser auto zoom, $mol is adaptive -->
90
+ <meta name="mobile-web-app-capable" content="yes"> <!-- Fullscreen support -->
91
+ <meta name="apple-mobile-web-app-capable" content="yes">
92
+ </head>
93
+ <body mol_view_root> <!-- Reset root styles -->
94
+ <div mol_view_root="$my_hello"></div> <!-- Autobind component to element on load -->
95
+ <script src="web.js"></script> <!-- Load autogenerated js bundle -->
96
+ </body>
97
+ </html>
108
98
  ```
109
99
 
110
100
  Your application will be served at **`http://localhost:9080/my/hello/`**. Open it. You should refresh page to view your changes.
@@ -120,43 +110,6 @@ $my_hello $mol_view
120
110
  <= message \
121
111
  ```
122
112
 
123
- That will be automatically compiled to typescript code like this:
124
-
125
- ```typescript
126
- namespace $ { export class $my_hello extends $mol_view {
127
-
128
- /// name?val \
129
- @ $mol_mem
130
- name( next = '' ) {
131
- return next
132
- }
133
-
134
- /// Name $mol_string
135
- /// hint \Name
136
- /// value?val <=> name?val
137
- @ $mol_mem
138
- Name() {
139
- const obj = new $mol_string
140
- obj.hint = () => "Name" ,
141
- obj.value = next => this.name( next ) ,
142
- return obj
143
- }
144
-
145
- /// message \
146
- message() {
147
- return ""
148
- }
149
-
150
- /// sub /
151
- /// <= Name
152
- /// <= message
153
- sub() {
154
- return [ this.Name() , this.message() ]
155
- }
156
-
157
- } }
158
- ```
159
-
160
113
  Add **your behaviour** at `./my/hello/hello.view.ts` by extending generated class:
161
114
 
162
115
  ```typescript
@@ -182,8 +135,9 @@ namespace $.$$ {
182
135
  'Generating greeting message'() {
183
136
 
184
137
  const app = new $my_hello
138
+ $mol_assert_equal( app.message() , '' )
139
+
185
140
  app.name( 'Jin' )
186
-
187
141
  $mol_assert_equal( app.message() , 'Hello, Jin!' )
188
142
 
189
143
  }
@@ -202,7 +156,7 @@ Add **styles** at `./my/hello/hello.view.css`:
202
156
  flex-direction: column;
203
157
  align-items: center;
204
158
  font: 1.5rem/1 sans-serif;
205
- box-shadow: var(--mol_skin_light_outline);
159
+ box-shadow: 0 0 0 1px var(--mol_theme_line);
206
160
  flex: 1 1 auto;
207
161
  align-self: stretch;
208
162
  margin: 0;
@@ -220,6 +174,7 @@ Add **styles** at `./my/hello/hello.view.css`:
220
174
 
221
175
  # Tutorials
222
176
 
177
+ - [Путь друкона - учебный курс](https://www.youtube.com/playlist?list=PLXyFFhv8ucKRBg76o0YXnmQFT1LglSaND)
223
178
  - [$mol_app_calc: вечеринка электронных таблиц](https://github.com/nin-jin/HabHub/issues/10)
224
179
  - [$hyoo_bench: готовим JS бенчмарки быстро и просто](https://github.com/nin-jin/HabHub/issues/8)
225
180
  - [$mol_app_habhub: чтение статей с GitHub](https://github.com/nin-jin/HabHub/issues/5)
@@ -244,12 +199,10 @@ Here is a full set of supported bundles:
244
199
  - `-/node.test.js` - JS with tests for NodeJS
245
200
  - `-/node.deps.json` - a map of dependencies modules for NodeJS
246
201
 
247
- **Support of Source Maps**. Sources are compiled and integrate to maps, they are fully self-sufficient.
202
+ **Support of Source Maps**. Sources are compiled and integrated into maps, they are fully self-sufficient.
248
203
 
249
204
  **Development server**, which compiles bundles as needed. For example, when `http://localhost:9080/hyoo/todomvc/-/web.js` is requested, the `js` bundle is built from `hyoo/todomvc` for `web` environment. Rebuilding occurs only if any source files are changed.
250
205
 
251
- **Transpilling of modern CSS into CSS supported by browsers** ([postcss-cssnext](https://github.com/MoOx/postcss-cssnext)): vendor prefixes and variables etc.
252
-
253
206
  **Transpilling [TypeScript](https://github.com/Microsoft/TypeScript) into JS**.
254
207
  In TS configuration enabled support decorators and disabled implicit `any` type, to prevent missing typing by change.
255
208
 
@@ -264,7 +217,7 @@ Unlike another frameworks, $mol does not isolate the internals of its components
264
217
  For example, to set the list of sub components you need to redefine `sub` property in view.tree
265
218
 
266
219
  ```tree
267
- Confirm_delte $mol_row sub /
220
+ Confirm_delete $mol_row sub /
268
221
  <= Yes $mol_button_minor title \Yes
269
222
  <= No $mol_button_major title \No
270
223
  ```
@@ -285,7 +238,7 @@ are public and can be safely overloaded.
285
238
 
286
239
  Details about viewers and `view.tree` language: [$mol_view](view).
287
240
 
288
- ## Lazyness
241
+ ## Laziness
289
242
 
290
243
  [$mol_view](view) implements lazy rendering. [$mol_scroll](scroll) watches scroll position and suggests the view height to embedded components. [$mol_list](list) knows the view height and minimal sizes of the embedded components, it excludes components definitely outside viewport from rendering. And all other components report their minimal size through `minimal_height` property.
291
244
 
@@ -309,8 +262,8 @@ namespace $ {
309
262
  export class $my_greeter {
310
263
 
311
264
  @ $mol_mem
312
- greeting() : string {
313
- const user_name = $mol_fetch.json( 'https://example.org/profile' ).name
265
+ greeting() {
266
+ const user_name = $mol_fetch.json( 'https://example.org/profile/name' )
314
267
  return `Hello, ${ user_name }!`
315
268
  }
316
269
 
@@ -318,7 +271,7 @@ namespace $ {
318
271
  }
319
272
  ```
320
273
 
321
- Details: [$mol_mem](mem), [$mol_atom2](atom2).
274
+ Details: [$mol_wire](wire).
322
275
 
323
276
  ## Debugging
324
277
 
@@ -342,87 +295,97 @@ The name of the field corresponds to calling the property, the content of the fi
342
295
 
343
296
  ## Flow
344
297
 
345
- - **[$mol_fiber](fiber)** - suspendable tasks
346
- - **[$mol_atom2](atom2)** - reactive container
347
- - **[$mol_log2](log2)** - logging
348
- - **[$mol_import](import)** - dynamic sources import
298
+ - **[$mol_fiber](fiber)** - Suspendable tasks
299
+ - **[$mol_atom2](atom2)** - Reactive container
300
+ - **[$mol_log2](log2)** - Logging
301
+ - **[$mol_import](import)** - Dynamic sources import
302
+ - **[$mol_after](after)** - Scheduled callbacks with unified api
303
+ - **[$mol_fail](fail)** - Throws all exceptions in one place to increase debug experience
349
304
 
350
305
  ## Object model
351
306
 
352
- - **[$mol_mem](mem)** - reactive property decorator
353
- - **[$mol_object](object)** - components base class
307
+ - **[$mol_wire](wire)** - Reactivity system
308
+ - **[$mol_object](object)** - Components base class
309
+
310
+ ## Lifecycle
311
+
312
+ - **[$mol_ambient](ambient)** - Makes derived context
313
+ - **[$mol_owning](owning)** - Owning relation between objects
354
314
 
355
315
  ## Functions
356
316
 
357
- - **[$mol_const](const)** - const value returning function
358
- - **[$mol_func_name](func/name)** - name of function
359
- - **[$mol_func_sandbox](func/sandbox)** - sandbox for safe code evaluation
317
+ - **[$mol_const](const)** - Const value returning function
318
+ - **[$mol_func_name](func/name)** - Name of function
319
+ - **[$mol_func_sandbox](func/sandbox)** - Sandbox for safe code evaluation
360
320
 
361
321
  ## Collections
362
322
 
363
- - **[$mol_range2](range2)** - lazy array
364
- - **[$mol_maybe](maybe)** - [maybe monad](https://en.wikipedia.org/wiki/Monad_(functional_programming)#The_Maybe_monad)
365
- - **[$mol_conform](conform)** - object tree reconciler
366
- - **[$mol_dict](dict)** - useful native `Map` extension
323
+ - **[$mol_range2](range2)** - Lazy array
324
+ - **[$mol_maybe](maybe)** - [Maybe monad](https://en.wikipedia.org/wiki/Monad_(functional_programming)#The_Maybe_monad)
325
+ - **[$mol_conform](conform)** - Object tree reconciler
326
+ - **[$mol_dict](dict)** - Useful native `Map` extension
327
+ - **[$mol_array_chunks](array/chunks)** - Splits array by different chunks
328
+ - **[$mol_array_trim](array/trim)** - Shortens array without memory reallocation
367
329
 
368
330
  ## [State modules](state)
369
331
 
370
- - **[$mol_state_arg](state/arg)** - arguments state (location/argv)
371
- - **[$mol_state_local](state/local)** - persistent local state (localStorage)
372
- - **[$mol_state_session](state/session)** - session temporary state (sessionStorage)
373
- - **[$mol_state_history](state/history)** - browser history bound state
374
- - **[$mol_state_stack](state/stack)** - state of current stack of execution
375
- - **[$mol_state_time](state/time)** - reactive current time stamp
332
+ - **[$mol_state_arg](state/arg)** - Arguments state (location/argv)
333
+ - **[$mol_state_local](state/local)** - Persistent local state (localStorage)
334
+ - **[$mol_state_session](state/session)** - Session temporary state (sessionStorage)
335
+ - **[$mol_state_history](state/history)** - Browser history bound state
336
+ - **[$mol_state_stack](state/stack)** - State of current stack of execution
337
+ - **[$mol_state_time](state/time)** - Reactive current time stamp
376
338
 
377
339
  ## Simple components
378
340
 
379
- - **[$mol_view](view)** - reactive view model base class with lazy error-proof renderer
380
- - **[$mol_ghost](ghost)** - node-less wrapper for another view
381
- - **[$mol_filler](filler)** - lorem ipsum
382
- - **[$mol_svg](svg)** - svg base components
383
- - **[$mol_status](status)** - prints error status of some property
384
- - **[$mol_speck](speck)** - attention speck
341
+ - **[$mol_view](view)** - Reactive view model base class with lazy error-proof renderer
342
+ - **[$mol_ghost](ghost)** - Node-less wrapper for another view
343
+ - **[$mol_filler](filler)** - Lorem ipsum
344
+ - **[$mol_svg](svg)** - SVG base components
345
+ - **[$mol_status](status)** - Prints error status of some property
346
+ - **[$mol_speck](speck)** - Attention speck
385
347
 
386
348
  ## Simple controls
387
349
 
388
- - **[$mol_link](link)** - navigation link
389
- - **[$mol_button](button)** - button
390
- - **[$mol_check](check)** - check box
391
- - **[$mol_switch](switch)** - radio buttons
392
- - **[$mol_select](select)** - select with search and lazy rendering support
393
- - **[$mol_string](string)** - one string input control
394
- - **[$mol_textarea](textarea)** - multiple line input control
395
- - **[$mol_search](search)** - search string with suggests support
396
- - **[$mol_number](number)** - one number input control
397
- - **[$mol_code](code)** - bar code scanner
398
- - **[$mol_portion](portion)** - portion visualizer
350
+ - **[$mol_link](link)** - Navigation link
351
+ - **[$mol_button](button)** - Button
352
+ - **[$mol_check](check)** - Check box
353
+ - **[$mol_switch](switch)** - Radio buttons
354
+ - **[$mol_select](select)** - Select with search and lazy rendering support
355
+ - **[$mol_string](string)** - One string input control
356
+ - **[$mol_textarea](textarea)** - Multiple line input control
357
+ - **[$mol_search](search)** - Search string with suggests support
358
+ - **[$mol_number](number)** - One number input control
359
+ - **[$mol_code](code)** - Bar code scanner
360
+ - **[$mol_portion](portion)** - Portion visualizer
399
361
 
400
362
  ## Layout components
401
363
 
402
- - **[$mol_scroll](scroll)** - scroll pane with position saving
403
- - **[$mol_tiler](tiler)** - items in row with balanced wrapping
404
- - **[$mol_row](row)** - items in row with wrapping and padding between
405
- - **[$mol_bar](bar)** - group of controls as own control
406
- - **[$mol_list](list)** - vertical list of rows
407
- - **[$mol_labeler](labeler)** - labeled content
408
- - **[$mol_section](section)** - section with header
409
- - **[$mol_book](book)** - horizontal stack of pages
410
- - **[$mol_page](page)** - page with header, body and footer
411
- - **[$mol_deck](deck)** - deck of panels with tab bar
412
- - **[$mol_card](card)** - card with content
364
+ - **[$mol_scroll](scroll)** - Scroll pane with position saving
365
+ - **[$mol_tiler](tiler)** - Items in row with balanced wrapping
366
+ - **[$mol_row](row)** - Items in row with wrapping and padding between
367
+ - **[$mol_bar](bar)** - Group of controls as own control
368
+ - **[$mol_list](list)** - Vertical list of rows
369
+ - **[$mol_labeler](labeler)** - Labeled content
370
+ - **[$mol_section](section)** - Section with header
371
+ - **[$mol_book](book)** - Horizontal stack of pages
372
+ - **[$mol_page](page)** - Page with header, body and footer
373
+ - **[$mol_deck](deck)** - Deck of panels with tab bar
374
+ - **[$mol_card](card)** - Card with content
413
375
 
414
376
  ## Plugin components
415
377
 
416
- - **[$mol_nav](nav)** - keyboard navigation
417
- - **[$mol_meter](meter)** - real time element size monitoring
378
+ - **[$mol_nav](nav)** - Keyboard navigation
379
+ - **[$mol_touch](touch)** - Touch/pointer gestures
380
+ - **[$mol_speech](speech)** - Speech recognition and synthesis
381
+ - **[$mol_hotkey](hotkey)** - Keyboard shortcuts
418
382
 
419
383
  ## Complex components
420
384
 
421
- - **[$mol_form](form)** - forms with validators
422
- - **[$mol_demo](demo)** - demonstrates widget in various screens
423
- - **[$mol_attach](attach)** - preview list and attach button
424
- - **[$mol_cost](cost)** - prints currency values
425
- - **[$mol_message](message)** - user message
385
+ - **[$mol_form](form)** - Forms with validators
386
+ - **[$mol_attach](attach)** - Preview list and attach button
387
+ - **[$mol_cost](cost)** - Prints currency values
388
+ - **[$mol_message](message)** - User message
426
389
 
427
390
  ## Charts
428
391
 
@@ -435,58 +398,67 @@ The name of the field corresponds to calling the property, the content of the fi
435
398
  - **[$mol_plot_dot](plot/dot)** - Dots graph
436
399
  - **[$mol_plot_fill](plot/fill)** - Filling graph
437
400
  - **[$mol_plot_group](plot/group)** - Group of graph as single graph
438
- - **[$mol_plot_ruler_vert](plot/ruler/vert)** - Verical ruler
401
+ - **[$mol_plot_ruler_vert](plot/ruler/vert)** - Vertical ruler
439
402
  - **[$mol_plot_ruler_hor](plot/ruler/hor)** - Horizontal ruler
440
403
  - **[$mol_plot_mark_hor](plot/mark/hor)** - Horizontal markers
441
404
 
442
405
  ## Data formats
443
406
 
444
- - **[$mol_tree](tree)** - [tree format](https://github.com/nin-jin/tree.d) (`view.tree` language described at [$mol_view](view))
407
+ - **[$mol_tree2](tree2)** - [Tree format](https://github.com/nin-jin/tree.d) (`view.tree` language described at [$mol_view](view))
408
+ - **[$mol_base64](base64)** - Base64 encode/decode
409
+ - **[$mol_leb128](leb128)** - LEB128 encode/decode
445
410
 
446
411
  ## Math
447
412
 
448
- - **[$mol_graph](graph)** - graph algorithms
449
- - **[$mol_unit](unit)** - typed number value
450
- - **[$mol_merge_dict](merge/dict)** - merge two dictionaries to new one
413
+ - **[$mol_graph](graph)** - Graph algorithms
414
+ - **[$mol_unit](unit)** - Typed number value
415
+ - **[$mol_merge_dict](merge/dict)** - Merge two dictionaries to new one
451
416
 
452
417
  ## Resources
453
418
 
454
- - **[$mol_logo](logo)** - $mol logotypes
455
- - **[$mol_icon](icon)** - css styled icons
456
- - **[$mol_skin](skin)** - theming
457
- - **[$mol_style](style)** - css-in-ts
419
+ - **[$mol_icon](https://github.com/nin-jin/mol_icon)** - CSS styled material design icons
420
+ - **[$mol_theme](theme)** - Theming
421
+ - **[$mol_gap](theme)** - Paddings, margins etc
422
+ - **[$mol_style](style)** - CSS-in-TS
458
423
 
459
424
  ## Testing
460
425
 
461
- - **[$mol_test](test)** - unit testing
462
- - **[$mol_stub](stub)** - stub data generators
426
+ - **[$mol_test](test)** - Unit testing
427
+ - **[$mol_stub](stub)** - Stub data generators
428
+ - **[$mol_assert](assert)** - Assertion functions
463
429
 
464
430
  ## API
465
431
 
466
- - **[$mol_window](window)** - reactive view port configuration
432
+ - **[$mol_window](window)** - Reactive view port configuration
467
433
  - **[$mol_fetch](fetch)** - Reactive [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
468
434
  - **[$mol_webdav](webdav)** - Reactive [WebDAV](https://wikipedia.org/wiki/WebDAV) client
469
- - **[$mol_file](file)** - isomorphic reactive file system wrapper
470
- - **[$mol_exec](exec)** - synchronous execute of system command
435
+ - **[$mol_file](file)** - Isomorphic reactive file system wrapper
436
+ - **[$mol_exec](exec)** - Synchronous execute of system command
471
437
  - **[$mol_cordova](cordova)** - [Apache Cordova](https://cordova.apache.org) API
472
438
 
473
439
  ## Time
474
440
 
475
- - **[$mol_time_moment](time/moment)** - [time moment](https://en.wikipedia.org/wiki/ISO_8601#Dates) representation with iso8601 support
476
- - **[$mol_time_duration](time/duration)** - [time duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) representation with iso8601 support
477
- - **[$mol_time_interval](time/interval)** - [time interval](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) representation with iso8601 support
478
- - **[$mol_state_time](state/time)** - reactive current time stamp
479
- - **[$mol_date](date)** - date picker
480
- - **[$mol_calendar](calendar)** - days of month as table
441
+ - **[$mol_time_moment](time/moment)** - [Time moment](https://en.wikipedia.org/wiki/ISO_8601#Dates) representation with iso8601 support
442
+ - **[$mol_time_duration](time/duration)** - [Time duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) representation with iso8601 support
443
+ - **[$mol_time_interval](time/interval)** - [Time interval](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals) representation with iso8601 support
444
+ - **[$mol_state_time](state/time)** - Reactive current time stamp
445
+ - **[$mol_date](date)** - Date picker
446
+ - **[$mol_calendar](calendar)** - Days of month as table
481
447
 
482
448
  ## Maps
483
449
 
484
450
  - **[$mol_map_yandex](map/yandex)** - [Yandex Maps](https://tech.yandex.ru/maps/doc/jsapi/2.1/)
485
451
 
452
+ ## WebAssemply
453
+
454
+ - **[$mol_wasm](wasm)** - WASM runner
455
+ - **[$mol_leb128](leb128)** - LEB128 encode/decode
456
+ - **[$mol_tree2_wasm](tree2/wasm)** - wasm.tree representation
457
+
486
458
  ## Web Services
487
459
 
488
460
  - **[$mol_github](github)** - [GitHub API](https://developer.github.com/v3/)
489
- - **[$mol_chat](chat)** - GitHub based comments everywere
461
+ - **[$mol_chat](chat)** - GitHub based comments everywhere
490
462
 
491
463
  ## Building
492
464
 
@@ -511,9 +483,13 @@ Some libs are already published to NPM:
511
483
  - [$mol_strict](strict) - Makes JS runtime more strict.
512
484
  - [$mol_time](time) - Proper date/time/duration/interval arithmetic.
513
485
  - [$mol_type](type) - TypeScript meta types for complex logic.
486
+ - [$mol_regexp](regexp) - Regular Expressions builder.
487
+ - [$mol_crypto](crypto) - Efficient cryptographic algorithms.
488
+ - [$mol_db](db) - Static typed IndexedDB wrapper with auto migrations.
514
489
  - [$hyoo_crowd](https://github.com/hyoo-ru/crowd.hyoo.ru) - Conflict-free Reinterpretable Ordered Washed Data.
490
+ - [$mol_plot](plot) - [Fastest](https://bench.hyoo.ru/app/#!bench=https%3A%2F%2Fbench.hyoo.ru%2Fchart%2Frope%2F/sample=canvasjs~mol~chartjs/sort=update) plot lib for vector graphics.
515
491
 
516
- All of them are very small, powerfull and fastest. Use it for your pleasure.
492
+ All of them are very small, powerful and fastest. Use it for your pleasure.
517
493
 
518
494
  # Contributors
519
495
 
@@ -529,8 +505,10 @@ This project exists thanks to all the people who contribute.
529
505
  # Cool stuff
530
506
 
531
507
  - **[Commits visualization](http://ghv.artzub.com/#repo=mam_mol&user=hyoo-ru&climit=100000)**
532
- - **[Sources visualization](http://veniversum.me/git-visualizer/?owner=hyoo-ru&repo=mam_mol)**
508
+ - **[Sources visualization (fennel)](http://veniversum.me/git-visualizer/?owner=hyoo-ru&repo=mam_mol)**
509
+ - **[Sources visualization (foam)](https://octo-repo-visualization.vercel.app/?repo=hyoo-ru%2Fmam_mol)**
533
510
 
534
511
  # Donate
535
512
 
536
513
  - **[Shut up and take my money](http://yasobe.ru/na/mol)**
514
+ - **[Long time support](https://boosty.to/hyoo)**