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 +0 -0
- package/{readme.md → README.md} +151 -173
- package/node.d.ts +199 -229
- package/node.deps.json +1 -1
- package/node.esm.js +1180 -1008
- package/node.esm.js.map +1 -1
- package/node.js +1180 -1008
- package/node.js.map +1 -1
- package/node.test.js +3212 -4198
- package/node.test.js.map +1 -1
- package/package.json +43 -5
- package/test.html +2 -2
- package/web.d.ts +199 -178
- package/web.deps.json +1 -1
- package/web.esm.js +1185 -610
- package/web.esm.js.map +1 -1
- package/web.js +1185 -610
- package/web.js.map +1 -1
- package/web.test.js +1528 -3133
- package/web.test.js.map +1 -1
package/.nojekyll
ADDED
|
File without changes
|
package/{readme.md → README.md}
RENAMED
|
@@ -1,38 +1,30 @@
|
|
|
1
1
|
# $mol
|
|
2
2
|
|
|
3
|
-
Reactive micro-modular
|
|
3
|
+
Reactive micro-modular UI framework. Very simple, but very powerful!
|
|
4
|
+
|
|
5
|
+

|
|
4
6
|
|
|
5
7
|
# Contents
|
|
6
8
|
|
|
7
|
-
- [Levels](#levels)
|
|
8
9
|
- [Features](#features)
|
|
9
|
-
- [
|
|
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](
|
|
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
|
-
#
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
- [$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 [](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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
<!--
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
<!--
|
|
104
|
-
<
|
|
105
|
-
|
|
106
|
-
|
|
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(--
|
|
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
|
|
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
|
-
|
|
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
|
-
##
|
|
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()
|
|
313
|
-
const user_name = $mol_fetch.json( 'https://example.org/profile' )
|
|
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: [$
|
|
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)** -
|
|
346
|
-
- **[$mol_atom2](atom2)** -
|
|
347
|
-
- **[$mol_log2](log2)** -
|
|
348
|
-
- **[$mol_import](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
|
-
- **[$
|
|
353
|
-
- **[$mol_object](object)** -
|
|
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)** -
|
|
358
|
-
- **[$mol_func_name](func/name)** -
|
|
359
|
-
- **[$mol_func_sandbox](func/sandbox)** -
|
|
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)** -
|
|
364
|
-
- **[$mol_maybe](maybe)** - [
|
|
365
|
-
- **[$mol_conform](conform)** -
|
|
366
|
-
- **[$mol_dict](dict)** -
|
|
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)** -
|
|
371
|
-
- **[$mol_state_local](state/local)** -
|
|
372
|
-
- **[$mol_state_session](state/session)** -
|
|
373
|
-
- **[$mol_state_history](state/history)** -
|
|
374
|
-
- **[$mol_state_stack](state/stack)** -
|
|
375
|
-
- **[$mol_state_time](state/time)** -
|
|
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)** -
|
|
380
|
-
- **[$mol_ghost](ghost)** -
|
|
381
|
-
- **[$mol_filler](filler)** -
|
|
382
|
-
- **[$mol_svg](svg)** -
|
|
383
|
-
- **[$mol_status](status)** -
|
|
384
|
-
- **[$mol_speck](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)** -
|
|
389
|
-
- **[$mol_button](button)** -
|
|
390
|
-
- **[$mol_check](check)** -
|
|
391
|
-
- **[$mol_switch](switch)** -
|
|
392
|
-
- **[$mol_select](select)** -
|
|
393
|
-
- **[$mol_string](string)** -
|
|
394
|
-
- **[$mol_textarea](textarea)** -
|
|
395
|
-
- **[$mol_search](search)** -
|
|
396
|
-
- **[$mol_number](number)** -
|
|
397
|
-
- **[$mol_code](code)** -
|
|
398
|
-
- **[$mol_portion](portion)** -
|
|
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)** -
|
|
403
|
-
- **[$mol_tiler](tiler)** -
|
|
404
|
-
- **[$mol_row](row)** -
|
|
405
|
-
- **[$mol_bar](bar)** -
|
|
406
|
-
- **[$mol_list](list)** -
|
|
407
|
-
- **[$mol_labeler](labeler)** -
|
|
408
|
-
- **[$mol_section](section)** -
|
|
409
|
-
- **[$mol_book](book)** -
|
|
410
|
-
- **[$mol_page](page)** -
|
|
411
|
-
- **[$mol_deck](deck)** -
|
|
412
|
-
- **[$mol_card](card)** -
|
|
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)** -
|
|
417
|
-
- **[$
|
|
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)** -
|
|
422
|
-
- **[$
|
|
423
|
-
- **[$
|
|
424
|
-
- **[$
|
|
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)** -
|
|
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
|
-
- **[$
|
|
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)** -
|
|
449
|
-
- **[$mol_unit](unit)** -
|
|
450
|
-
- **[$mol_merge_dict](merge/dict)** -
|
|
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
|
-
- **[$
|
|
455
|
-
- **[$
|
|
456
|
-
- **[$
|
|
457
|
-
- **[$mol_style](style)** -
|
|
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)** -
|
|
462
|
-
- **[$mol_stub](stub)** -
|
|
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)** -
|
|
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)** -
|
|
470
|
-
- **[$mol_exec](exec)** -
|
|
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)** - [
|
|
476
|
-
- **[$mol_time_duration](time/duration)** - [
|
|
477
|
-
- **[$mol_time_interval](time/interval)** - [
|
|
478
|
-
- **[$mol_state_time](state/time)** -
|
|
479
|
-
- **[$mol_date](date)** -
|
|
480
|
-
- **[$mol_calendar](calendar)** -
|
|
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
|
|
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,
|
|
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)**
|