mol_view_tree2_lib 1.0.181 → 1.0.182

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mol_view_tree2_lib",
3
- "version": "1.0.181",
3
+ "version": "1.0.182",
4
4
  "exports": {
5
5
  "node": {
6
6
  "import": "./node.mjs",
package/web.test.js CHANGED
@@ -2358,6 +2358,56 @@ var $;
2358
2358
 
2359
2359
  ;
2360
2360
  "use strict";
2361
+ var $;
2362
+ (function ($) {
2363
+ $.$mol_theme = $mol_style_prop('mol_theme', [
2364
+ 'back',
2365
+ 'hover',
2366
+ 'card',
2367
+ 'current',
2368
+ 'special',
2369
+ 'text',
2370
+ 'control',
2371
+ 'shade',
2372
+ 'line',
2373
+ 'focus',
2374
+ 'field',
2375
+ 'image',
2376
+ 'spirit',
2377
+ ]);
2378
+ })($ || ($ = {}));
2379
+
2380
+ ;
2381
+ "use strict";
2382
+ var $;
2383
+ (function ($) {
2384
+ $mol_style_attach("mol/theme/theme.css", ":root {\n\t--mol_theme_hue: 240deg;\n\t--mol_theme_hue_spread: 90deg;\n\tcolor-scheme: dark light;\n}\n\n:root, :where([mol_theme]) {\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n\tbackground-color: var(--mol_theme_back);\n}\n\t\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\n\t--mol_theme_luma: -1;\n\t--mol_theme_image: invert(1) hue-rotate( 180deg );\n\t--mol_theme_spirit: hsl( 0deg, 0%, 0%, .75 );\n\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\n\n} @supports( color: oklch( 0% 0 0deg ) ) {\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\t\n\t--mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 30% .05 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 15% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 60% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 180deg ) );\n\t\n\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 70% .2 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_special: oklch( 70% .2 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\n} }\n\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t\n\t--mol_theme_luma: 1;\n\t--mol_theme_image: none;\n\t--mol_theme_spirit: hsl( 0deg, 0%, 100%, .75 );\n\t\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\n\n} @supports( color: oklch( 0% 0 0deg ) ) {\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t--mol_theme_back: oklch( 92% .01 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 99% .01 var(--mol_theme_hue) / .5 );\n\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\n\t--mol_theme_hover: oklch( 50% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_focus: oklch( 60% .2 calc( var(--mol_theme_hue) + 180deg ) );\n\t\n\t--mol_theme_control: oklch( 40% .15 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 50% .2 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_special: oklch( 50% .2 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\n} }\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: oklch( 25% .075 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: oklch( 85% .075 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 98% .03 var(--mol_theme_hue) / .25 );\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: oklch( 85% .05 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 98% .03 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) / .25 );\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: oklch( 85% .05 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 98% .03 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) / .25 );\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: oklch( 35% .1 calc( var(--mol_theme_hue) + 180deg ) );\n\t--mol_theme_card: oklch( 45% .15 calc( var(--mol_theme_hue) + 180deg ) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: oklch( 83% .1 calc( var(--mol_theme_hue) + 180deg ) );\n\t--mol_theme_card: oklch( 98% .03 calc( var(--mol_theme_hue) + 180deg ) / .25 );\n}\n\n");
2385
+ })($ || ($ = {}));
2386
+
2387
+ ;
2388
+ "use strict";
2389
+
2390
+ ;
2391
+ "use strict";
2392
+ var $;
2393
+ (function ($) {
2394
+ $.$mol_gap = $mol_style_prop('mol_gap', [
2395
+ 'page',
2396
+ 'block',
2397
+ 'text',
2398
+ 'emoji',
2399
+ 'round',
2400
+ 'space',
2401
+ 'blur',
2402
+ ]);
2403
+ })($ || ($ = {}));
2404
+
2405
+ ;
2406
+ "use strict";
2407
+ var $;
2408
+ (function ($) {
2409
+ $mol_style_attach("mol/gap/gap.css", ":root {\n\t--mol_gap_page: 3rem;\n\t--mol_gap_block: .75rem;\n\t--mol_gap_text: .5rem .75rem;\n\t--mol_gap_emoji: .5rem;\n\t--mol_gap_round: .25rem;\n\t--mol_gap_space: .25rem;\n\t--mol_gap_blur: .5rem;\n}\n");
2410
+ })($ || ($ = {}));
2361
2411
 
2362
2412
  ;
2363
2413
  "use strict";
@@ -3389,15 +3439,6 @@ var $;
3389
3439
  });
3390
3440
  })($ || ($ = {}));
3391
3441
 
3392
- ;
3393
- "use strict";
3394
- var $;
3395
- (function ($_1) {
3396
- $mol_test_mocks.push($ => {
3397
- $.$mol_after_frame = $mol_after_mock_commmon;
3398
- });
3399
- })($ || ($ = {}));
3400
-
3401
3442
  ;
3402
3443
  "use strict";
3403
3444
  var $;
@@ -3465,6 +3506,15 @@ var $;
3465
3506
  });
3466
3507
  })($ || ($ = {}));
3467
3508
 
3509
+ ;
3510
+ "use strict";
3511
+ var $;
3512
+ (function ($_1) {
3513
+ $mol_test_mocks.push($ => {
3514
+ $.$mol_after_frame = $mol_after_mock_commmon;
3515
+ });
3516
+ })($ || ($ = {}));
3517
+
3468
3518
  ;
3469
3519
  "use strict";
3470
3520
  var $;
@@ -3556,339 +3606,6 @@ var $;
3556
3606
  $mol_wire_log.active();
3557
3607
  })($ || ($ = {}));
3558
3608
 
3559
- ;
3560
- "use strict";
3561
- var $;
3562
- (function ($) {
3563
- class $mol_state_arg extends $mol_object {
3564
- prefix;
3565
- static href(next) {
3566
- if (next === undefined) {
3567
- next = $mol_dom.location.href;
3568
- }
3569
- else if (!/^about:srcdoc/.test(next)) {
3570
- new $mol_after_frame(() => {
3571
- const next = this.href();
3572
- const prev = $mol_dom.location.href;
3573
- if (next === prev)
3574
- return;
3575
- const history = $mol_dom.history;
3576
- history.replaceState(history.state, $mol_dom.document.title, next);
3577
- });
3578
- }
3579
- if ($mol_dom.parent && ($mol_dom.parent !== $mol_dom.self)) {
3580
- $mol_dom.parent.postMessage(['hashchange', next], '*');
3581
- }
3582
- return next;
3583
- }
3584
- static href_normal() {
3585
- return this.link({});
3586
- }
3587
- static href_absolute() {
3588
- return new URL(this.href(), $mol_dom.location.href).toString();
3589
- }
3590
- static dict(next) {
3591
- var href = this.href(next && this.make_link(next)).split(/#!?/)[1] || '';
3592
- var chunks = href.split(this.separator);
3593
- var params = {};
3594
- chunks.forEach(chunk => {
3595
- if (!chunk)
3596
- return;
3597
- var vals = chunk.split('=').map(decodeURIComponent);
3598
- params[vals.shift()] = vals.join('=');
3599
- });
3600
- return params;
3601
- }
3602
- static dict_cut(except) {
3603
- const dict = this.dict();
3604
- const cut = {};
3605
- for (const key in dict) {
3606
- if (except.indexOf(key) >= 0)
3607
- break;
3608
- cut[key] = dict[key];
3609
- }
3610
- return cut;
3611
- }
3612
- static value(key, next) {
3613
- const nextDict = (next === void 0) ? void 0 : { ...this.dict(), [key]: next };
3614
- const next2 = this.dict(nextDict)[key];
3615
- return (next2 == null) ? null : next2;
3616
- }
3617
- static link(next) {
3618
- return this.make_link({
3619
- ...this.dict_cut(Object.keys(next)),
3620
- ...next,
3621
- });
3622
- }
3623
- static prolog = '!';
3624
- static separator = '/';
3625
- static make_link(next) {
3626
- const chunks = [];
3627
- for (let key in next) {
3628
- if (null == next[key])
3629
- continue;
3630
- const val = next[key];
3631
- chunks.push([key].concat(val ? [val] : []).map(this.encode).join('='));
3632
- }
3633
- return new URL('#' + this.prolog + chunks.join(this.separator), this.href_absolute()).toString();
3634
- }
3635
- static commit() {
3636
- $mol_dom.history.pushState($mol_dom.history.state, $mol_dom.document.title, this.href());
3637
- }
3638
- static go(next) {
3639
- $mol_dom.location.href = this.link(next);
3640
- }
3641
- static encode(str) {
3642
- return encodeURIComponent(str).replace(/\(/g, '%28').replace(/\)/g, '%29');
3643
- }
3644
- constructor(prefix = '') {
3645
- super();
3646
- this.prefix = prefix;
3647
- }
3648
- value(key, next) {
3649
- return this.constructor.value(this.prefix + key, next);
3650
- }
3651
- sub(postfix) {
3652
- return new this.constructor(this.prefix + postfix + '.');
3653
- }
3654
- link(next) {
3655
- var prefix = this.prefix;
3656
- var dict = {};
3657
- for (var key in next) {
3658
- dict[prefix + key] = next[key];
3659
- }
3660
- return this.constructor.link(dict);
3661
- }
3662
- }
3663
- __decorate([
3664
- $mol_mem
3665
- ], $mol_state_arg, "href", null);
3666
- __decorate([
3667
- $mol_mem
3668
- ], $mol_state_arg, "href_normal", null);
3669
- __decorate([
3670
- $mol_mem
3671
- ], $mol_state_arg, "href_absolute", null);
3672
- __decorate([
3673
- $mol_mem
3674
- ], $mol_state_arg, "dict", null);
3675
- __decorate([
3676
- $mol_mem_key
3677
- ], $mol_state_arg, "dict_cut", null);
3678
- __decorate([
3679
- $mol_mem_key
3680
- ], $mol_state_arg, "value", null);
3681
- __decorate([
3682
- $mol_mem_key
3683
- ], $mol_state_arg, "make_link", null);
3684
- __decorate([
3685
- $mol_action
3686
- ], $mol_state_arg, "commit", null);
3687
- __decorate([
3688
- $mol_action
3689
- ], $mol_state_arg, "go", null);
3690
- $.$mol_state_arg = $mol_state_arg;
3691
- function $mol_state_arg_change() {
3692
- $mol_state_arg.href($mol_dom.location.href);
3693
- }
3694
- self.addEventListener('hashchange', $mol_state_arg_change);
3695
- })($ || ($ = {}));
3696
-
3697
- ;
3698
- "use strict";
3699
- var $;
3700
- (function ($_1) {
3701
- $mol_test_mocks.push(context => {
3702
- class $mol_state_arg_mock extends $mol_state_arg {
3703
- static $ = context;
3704
- static href(next) { return next || ''; }
3705
- static go(next) {
3706
- this.href(this.link(next));
3707
- }
3708
- }
3709
- __decorate([
3710
- $mol_mem
3711
- ], $mol_state_arg_mock, "href", null);
3712
- __decorate([
3713
- $mol_action
3714
- ], $mol_state_arg_mock, "go", null);
3715
- context.$mol_state_arg = $mol_state_arg_mock;
3716
- });
3717
- $mol_test({
3718
- 'args as dictionary'($) {
3719
- $.$mol_state_arg.href('#!foo=bar/xxx');
3720
- $mol_assert_equal($.$mol_state_arg.dict(), { foo: 'bar', xxx: '' });
3721
- $.$mol_state_arg.dict({ foo: null, yyy: '', lol: '123' });
3722
- $mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#!yyy/lol=123');
3723
- },
3724
- 'one value from args'($) {
3725
- $.$mol_state_arg.href('#!foo=bar/xxx');
3726
- $mol_assert_equal($.$mol_state_arg.value('foo'), 'bar');
3727
- $mol_assert_equal($.$mol_state_arg.value('xxx'), '');
3728
- $.$mol_state_arg.value('foo', 'lol');
3729
- $mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#!foo=lol/xxx');
3730
- $.$mol_state_arg.value('foo', '');
3731
- $mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#!foo/xxx');
3732
- $.$mol_state_arg.value('foo', null);
3733
- $mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#!xxx');
3734
- },
3735
- 'nested args'($) {
3736
- const base = new $.$mol_state_arg('nested.');
3737
- class Nested extends $mol_state_arg {
3738
- constructor(prefix) {
3739
- super(base.prefix + prefix);
3740
- }
3741
- static value = (key, next) => base.value(key, next);
3742
- }
3743
- $.$mol_state_arg.href('#!foo=bar/nested.xxx=123');
3744
- $mol_assert_equal(Nested.value('foo'), null);
3745
- $mol_assert_equal(Nested.value('xxx'), '123');
3746
- Nested.value('foo', 'lol');
3747
- $mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#!foo=bar/nested.xxx=123/nested.foo=lol');
3748
- },
3749
- });
3750
- })($ || ($ = {}));
3751
-
3752
- ;
3753
- "use strict";
3754
- var $;
3755
- (function ($) {
3756
- class $mol_media extends $mol_object2 {
3757
- static match(query, next) {
3758
- if (next !== undefined)
3759
- return next;
3760
- const res = this.$.$mol_dom_context.matchMedia?.(query) ?? {};
3761
- res.onchange = () => this.match(query, res.matches);
3762
- return res.matches;
3763
- }
3764
- }
3765
- __decorate([
3766
- $mol_mem_key
3767
- ], $mol_media, "match", null);
3768
- $.$mol_media = $mol_media;
3769
- })($ || ($ = {}));
3770
-
3771
- ;
3772
- "use strict";
3773
- var $;
3774
- (function ($) {
3775
- $mol_test({
3776
- 'local get set delete'() {
3777
- var key = '$mol_state_local_test:' + Math.random();
3778
- $mol_assert_equal($mol_state_local.value(key), null);
3779
- $mol_state_local.value(key, 123);
3780
- $mol_assert_equal($mol_state_local.value(key), 123);
3781
- $mol_state_local.value(key, null);
3782
- $mol_assert_equal($mol_state_local.value(key), null);
3783
- },
3784
- });
3785
- })($ || ($ = {}));
3786
-
3787
- ;
3788
- "use strict";
3789
- var $;
3790
- (function ($) {
3791
- $mol_test_mocks.push(context => {
3792
- class $mol_state_local_mock extends $mol_state_local {
3793
- static state = {};
3794
- static value(key, next = this.state[key]) {
3795
- return this.state[key] = (next || null);
3796
- }
3797
- }
3798
- __decorate([
3799
- $mol_mem_key
3800
- ], $mol_state_local_mock, "value", null);
3801
- context.$mol_state_local = $mol_state_local_mock;
3802
- });
3803
- })($ || ($ = {}));
3804
-
3805
- ;
3806
- "use strict";
3807
- var $;
3808
- (function ($) {
3809
- function parse(theme) {
3810
- if (theme === 'true')
3811
- return true;
3812
- if (theme === 'false')
3813
- return false;
3814
- return null;
3815
- }
3816
- function $mol_lights(next) {
3817
- const arg = parse(this.$mol_state_arg.value('mol_lights'));
3818
- const base = this.$mol_media.match('(prefers-color-scheme: light)');
3819
- if (next === undefined) {
3820
- return arg ?? this.$mol_state_local.value('$mol_lights') ?? base;
3821
- }
3822
- else {
3823
- if (arg === null) {
3824
- this.$mol_state_local.value('$mol_lights', next === base ? null : next);
3825
- }
3826
- else {
3827
- this.$mol_state_arg.value('mol_lights', String(next));
3828
- }
3829
- return next;
3830
- }
3831
- }
3832
- $.$mol_lights = $mol_lights;
3833
- })($ || ($ = {}));
3834
-
3835
- ;
3836
- "use strict";
3837
- var $;
3838
- (function ($) {
3839
- $.$mol_theme = $mol_style_prop('mol_theme', [
3840
- 'back',
3841
- 'hover',
3842
- 'card',
3843
- 'current',
3844
- 'special',
3845
- 'text',
3846
- 'control',
3847
- 'shade',
3848
- 'line',
3849
- 'focus',
3850
- 'field',
3851
- 'image',
3852
- 'spirit',
3853
- ]);
3854
- })($ || ($ = {}));
3855
-
3856
- ;
3857
- "use strict";
3858
- var $;
3859
- (function ($) {
3860
- $mol_style_attach("mol/theme/theme.css", ":root {\n\t--mol_theme_hue: 240deg;\n\t--mol_theme_hue_spread: 90deg;\n\tcolor-scheme: dark light;\n}\n\n:where([mol_theme]) {\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n\tbackground-color: var(--mol_theme_back);\n}\n\t\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\n\t--mol_theme_luma: -1;\n\t--mol_theme_image: invert(1) hue-rotate( 180deg );\n\t--mol_theme_spirit: hsl( 0deg, 0%, 0%, .75 );\n\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\n\n} @supports( color: oklch( 0% 0 0deg ) ) {\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\t\n\t--mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 30% .05 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 15% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 60% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 180deg ) );\n\t\n\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 70% .2 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_special: oklch( 70% .2 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\n} }\n\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t\n\t--mol_theme_luma: 1;\n\t--mol_theme_image: none;\n\t--mol_theme_spirit: hsl( 0deg, 0%, 100%, .75 );\n\t\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\n\n} @supports( color: oklch( 0% 0 0deg ) ) {\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t--mol_theme_back: oklch( 92% .01 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 99% .01 var(--mol_theme_hue) / .5 );\n\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\n\t--mol_theme_hover: oklch( 50% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_focus: oklch( 60% .2 calc( var(--mol_theme_hue) + 180deg ) );\n\t\n\t--mol_theme_control: oklch( 40% .15 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 50% .2 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_special: oklch( 50% .2 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\n} }\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: oklch( 25% .075 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: oklch( 85% .075 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 98% .03 var(--mol_theme_hue) / .25 );\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: oklch( 85% .05 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 98% .03 calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ) / .25 );\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: oklch( 85% .05 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) );\n\t--mol_theme_card: oklch( 98% .03 calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ) / .25 );\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: oklch( 35% .1 calc( var(--mol_theme_hue) + 180deg ) );\n\t--mol_theme_card: oklch( 45% .15 calc( var(--mol_theme_hue) + 180deg ) / .25 );\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: oklch( 83% .1 calc( var(--mol_theme_hue) + 180deg ) );\n\t--mol_theme_card: oklch( 98% .03 calc( var(--mol_theme_hue) + 180deg ) / .25 );\n}\n\n");
3861
- })($ || ($ = {}));
3862
-
3863
- ;
3864
- "use strict";
3865
- var $;
3866
- (function ($) {
3867
- $mol_style_attach('$mol_theme_lights', `:root { --mol_theme_back: oklch( ${$$.$mol_lights() ? 92 : 20}% .01 var(--mol_theme_hue) ) }`);
3868
- })($ || ($ = {}));
3869
-
3870
- ;
3871
- "use strict";
3872
- var $;
3873
- (function ($) {
3874
- $.$mol_gap = $mol_style_prop('mol_gap', [
3875
- 'page',
3876
- 'block',
3877
- 'text',
3878
- 'emoji',
3879
- 'round',
3880
- 'space',
3881
- 'blur',
3882
- ]);
3883
- })($ || ($ = {}));
3884
-
3885
- ;
3886
- "use strict";
3887
- var $;
3888
- (function ($) {
3889
- $mol_style_attach("mol/gap/gap.css", ":root {\n\t--mol_gap_page: 3rem;\n\t--mol_gap_block: .75rem;\n\t--mol_gap_text: .5rem .75rem;\n\t--mol_gap_emoji: .5rem;\n\t--mol_gap_round: .25rem;\n\t--mol_gap_space: .25rem;\n\t--mol_gap_blur: .5rem;\n}\n");
3890
- })($ || ($ = {}));
3891
-
3892
3609
  ;
3893
3610
  "use strict";
3894
3611
  var $;
@@ -5990,6 +5707,40 @@ Clear
5990
5707
  })($$ = $_1.$$ || ($_1.$$ = {}));
5991
5708
  })($ || ($ = {}));
5992
5709
 
5710
+ ;
5711
+ "use strict";
5712
+ var $;
5713
+ (function ($) {
5714
+ $mol_test({
5715
+ 'local get set delete'() {
5716
+ var key = '$mol_state_local_test:' + Math.random();
5717
+ $mol_assert_equal($mol_state_local.value(key), null);
5718
+ $mol_state_local.value(key, 123);
5719
+ $mol_assert_equal($mol_state_local.value(key), 123);
5720
+ $mol_state_local.value(key, null);
5721
+ $mol_assert_equal($mol_state_local.value(key), null);
5722
+ },
5723
+ });
5724
+ })($ || ($ = {}));
5725
+
5726
+ ;
5727
+ "use strict";
5728
+ var $;
5729
+ (function ($) {
5730
+ $mol_test_mocks.push(context => {
5731
+ class $mol_state_local_mock extends $mol_state_local {
5732
+ static state = {};
5733
+ static value(key, next = this.state[key]) {
5734
+ return this.state[key] = (next || null);
5735
+ }
5736
+ }
5737
+ __decorate([
5738
+ $mol_mem_key
5739
+ ], $mol_state_local_mock, "value", null);
5740
+ context.$mol_state_local = $mol_state_local_mock;
5741
+ });
5742
+ })($ || ($ = {}));
5743
+
5993
5744
  ;
5994
5745
  "use strict";
5995
5746
  var $;