@design-edito/tools 0.5.10 → 0.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/agnostic/arrays/index.d.ts +2 -2
  2. package/agnostic/arrays/index.js +2 -2
  3. package/agnostic/colors/index.d.ts +3 -3
  4. package/agnostic/colors/index.js +3 -3
  5. package/agnostic/errors/index.d.ts +1 -1
  6. package/agnostic/errors/index.js +1 -1
  7. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +14 -14
  8. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +14 -14
  9. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +3 -3
  10. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +3 -3
  11. package/agnostic/html/index.d.ts +2 -2
  12. package/agnostic/html/index.js +2 -2
  13. package/agnostic/index.d.ts +2 -2
  14. package/agnostic/index.js +2 -2
  15. package/agnostic/misc/index.d.ts +1 -1
  16. package/agnostic/misc/index.js +1 -1
  17. package/agnostic/misc/logs/index.d.ts +1 -1
  18. package/agnostic/misc/logs/index.js +1 -1
  19. package/agnostic/numbers/index.d.ts +1 -1
  20. package/agnostic/numbers/index.js +1 -1
  21. package/agnostic/objects/index.d.ts +1 -1
  22. package/agnostic/objects/index.js +1 -1
  23. package/agnostic/strings/index.d.ts +1 -1
  24. package/agnostic/strings/index.js +1 -1
  25. package/agnostic/subtitles/index.d.ts +1 -1
  26. package/agnostic/subtitles/index.js +1 -1
  27. package/agnostic/time/index.d.ts +2 -2
  28. package/agnostic/time/index.js +2 -2
  29. package/components/Lightbox/index.d.ts +45 -26
  30. package/components/Lightbox/index.js +50 -32
  31. package/components/index.d.ts +2 -2
  32. package/components/index.js +2 -2
  33. package/node/@google-cloud/storage/directory/index.d.ts +2 -2
  34. package/node/@google-cloud/storage/directory/index.js +2 -2
  35. package/node/@google-cloud/storage/file/index.d.ts +3 -3
  36. package/node/@google-cloud/storage/file/index.js +3 -3
  37. package/node/@google-cloud/storage/index.d.ts +1 -1
  38. package/node/@google-cloud/storage/index.js +1 -1
  39. package/node/images/index.d.ts +1 -1
  40. package/node/images/index.js +1 -1
  41. package/node/images/transform/operations/index.d.ts +1 -1
  42. package/node/images/transform/operations/index.js +1 -1
  43. package/node/sftp/directory/index.d.ts +1 -1
  44. package/node/sftp/directory/index.js +1 -1
  45. package/node/sftp/file/index.d.ts +2 -2
  46. package/node/sftp/file/index.js +2 -2
  47. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
+ export * as dedupe from './dedupe/index.js'
1
2
  export * as findDuplicates from './find-duplicates/index.js'
2
3
  export * as isArrayOf from './is-array-of/index.js'
3
- export * as randomPick from './random-pick/index.js'
4
4
  export * as make from './make/index.js'
5
- export * as dedupe from './dedupe/index.js'
5
+ export * as randomPick from './random-pick/index.js'
6
6
  export * as shuffle from './shuffle/index.js'
@@ -1,6 +1,6 @@
1
+ export * as dedupe from './dedupe/index.js'
1
2
  export * as findDuplicates from './find-duplicates/index.js'
2
3
  export * as isArrayOf from './is-array-of/index.js'
3
- export * as randomPick from './random-pick/index.js'
4
4
  export * as make from './make/index.js'
5
- export * as dedupe from './dedupe/index.js'
5
+ export * as randomPick from './random-pick/index.js'
6
6
  export * as shuffle from './shuffle/index.js'
@@ -1,12 +1,12 @@
1
+ export * as channels from './channels/index.js'
1
2
  export * as contrast from './contrast/index.js'
2
3
  export * as convert from './convert/index.js'
3
- export * as channels from './channels/index.js'
4
4
  export * as distance from './distance/index.js'
5
+ export * as grayscale from './grayscale/index.js'
5
6
  export * as invert from './invert/index.js'
6
7
  export * as lerp from './lerp/index.js'
7
8
  export * as luminance from './luminance/index.js'
8
- export * as rotate from './rotate/index.js'
9
9
  export * as palette from './palette/index.js'
10
+ export * as rotate from './rotate/index.js'
10
11
  export * as tidy from './tidy/index.js'
11
12
  export * as typechecks from './typechecks/index.js'
12
- export * as grayscale from './grayscale/index.js'
@@ -1,12 +1,12 @@
1
+ export * as channels from './channels/index.js'
1
2
  export * as contrast from './contrast/index.js'
2
3
  export * as convert from './convert/index.js'
3
- export * as channels from './channels/index.js'
4
4
  export * as distance from './distance/index.js'
5
+ export * as grayscale from './grayscale/index.js'
5
6
  export * as invert from './invert/index.js'
6
7
  export * as lerp from './lerp/index.js'
7
8
  export * as luminance from './luminance/index.js'
8
- export * as rotate from './rotate/index.js'
9
9
  export * as palette from './palette/index.js'
10
+ export * as rotate from './rotate/index.js'
10
11
  export * as tidy from './tidy/index.js'
11
12
  export * as typechecks from './typechecks/index.js'
12
- export * as grayscale from './grayscale/index.js'
@@ -1,2 +1,2 @@
1
- export * as register from './register/index.js'
2
1
  export * as unknownToString from './unknown-to-string/index.js'
2
+ export * as register from './register/index.js'
@@ -1,2 +1,2 @@
1
- export * as register from './register/index.js'
2
1
  export * as unknownToString from './unknown-to-string/index.js'
2
+ export * as register from './register/index.js'
@@ -1,52 +1,52 @@
1
1
  export * as add from './add/index.js'
2
- export * as addclass from './addclass/index.js'
3
2
  export * as and from './and/index.js'
3
+ export * as addclass from './addclass/index.js'
4
4
  export * as append from './append/index.js'
5
- export * as call from './call/index.js'
6
5
  export * as at from './at/index.js'
7
6
  export * as clone from './clone/index.js'
7
+ export * as call from './call/index.js'
8
8
  export * as deleteproperties from './deleteproperties/index.js'
9
- export * as getattribute from './getattribute/index.js'
10
9
  export * as equals from './equals/index.js'
11
10
  export * as getproperties from './getproperties/index.js'
11
+ export * as getattribute from './getattribute/index.js'
12
12
  export * as getproperty from './getproperty/index.js'
13
13
  export * as hjparse from './hjparse/index.js'
14
- export * as if from './if/index.js'
15
14
  export * as hjstringify from './hjstringify/index.js'
16
- export * as initialize from './initialize/index.js'
15
+ export * as if from './if/index.js'
16
+ export * as join from './join/index.js'
17
17
  export * as length from './length/index.js'
18
+ export * as initialize from './initialize/index.js'
18
19
  export * as map from './map/index.js'
19
- export * as join from './join/index.js'
20
20
  export * as negate from './negate/index.js'
21
21
  export * as notrailing from './notrailing/index.js'
22
22
  export * as or from './or/index.js'
23
23
  export * as pickrandom from './pickrandom/index.js'
24
24
  export * as populate from './populate/index.js'
25
25
  export * as print from './print/index.js'
26
+ export * as push from './push/index.js'
26
27
  export * as pusheach from './pusheach/index.js'
27
28
  export * as recordtoarray from './recordtoarray/index.js'
28
- export * as push from './push/index.js'
29
- export * as removeclass from './removeclass/index.js'
30
29
  export * as removeattribute from './removeattribute/index.js'
30
+ export * as removeclass from './removeclass/index.js'
31
31
  export * as renameproperty from './renameproperty/index.js'
32
32
  export * as replace from './replace/index.js'
33
33
  export * as select from './select/index.js'
34
34
  export * as set from './set/index.js'
35
- export * as setattribute from './setattribute/index.js'
36
35
  export * as setproperty from './setproperty/index.js'
37
- export * as sorton from './sorton/index.js'
36
+ export * as setattribute from './setattribute/index.js'
38
37
  export * as split from './split/index.js'
38
+ export * as sorton from './sorton/index.js'
39
+ export * as spread from './spread/index.js'
39
40
  export * as toarray from './toarray/index.js'
40
- export * as toelement from './toelement/index.js'
41
41
  export * as toboolean from './toboolean/index.js'
42
+ export * as toelement from './toelement/index.js'
42
43
  export * as toggleclass from './toggleclass/index.js'
43
- export * as tonodelist from './tonodelist/index.js'
44
44
  export * as tonull from './tonull/index.js'
45
- export * as torecord from './torecord/index.js'
46
45
  export * as tonumber from './tonumber/index.js'
46
+ export * as tonodelist from './tonodelist/index.js'
47
47
  export * as toref from './toref/index.js'
48
- export * as spread from './spread/index.js'
49
48
  export * as tostring from './tostring/index.js'
50
49
  export * as totext from './totext/index.js'
51
50
  export * as transformselected from './transformselected/index.js'
52
51
  export * as trim from './trim/index.js'
52
+ export * as torecord from './torecord/index.js'
@@ -1,52 +1,52 @@
1
1
  export * as add from './add/index.js'
2
- export * as addclass from './addclass/index.js'
3
2
  export * as and from './and/index.js'
3
+ export * as addclass from './addclass/index.js'
4
4
  export * as append from './append/index.js'
5
- export * as call from './call/index.js'
6
5
  export * as at from './at/index.js'
7
6
  export * as clone from './clone/index.js'
7
+ export * as call from './call/index.js'
8
8
  export * as deleteproperties from './deleteproperties/index.js'
9
- export * as getattribute from './getattribute/index.js'
10
9
  export * as equals from './equals/index.js'
11
10
  export * as getproperties from './getproperties/index.js'
11
+ export * as getattribute from './getattribute/index.js'
12
12
  export * as getproperty from './getproperty/index.js'
13
13
  export * as hjparse from './hjparse/index.js'
14
- export * as if from './if/index.js'
15
14
  export * as hjstringify from './hjstringify/index.js'
16
- export * as initialize from './initialize/index.js'
15
+ export * as if from './if/index.js'
16
+ export * as join from './join/index.js'
17
17
  export * as length from './length/index.js'
18
+ export * as initialize from './initialize/index.js'
18
19
  export * as map from './map/index.js'
19
- export * as join from './join/index.js'
20
20
  export * as negate from './negate/index.js'
21
21
  export * as notrailing from './notrailing/index.js'
22
22
  export * as or from './or/index.js'
23
23
  export * as pickrandom from './pickrandom/index.js'
24
24
  export * as populate from './populate/index.js'
25
25
  export * as print from './print/index.js'
26
+ export * as push from './push/index.js'
26
27
  export * as pusheach from './pusheach/index.js'
27
28
  export * as recordtoarray from './recordtoarray/index.js'
28
- export * as push from './push/index.js'
29
- export * as removeclass from './removeclass/index.js'
30
29
  export * as removeattribute from './removeattribute/index.js'
30
+ export * as removeclass from './removeclass/index.js'
31
31
  export * as renameproperty from './renameproperty/index.js'
32
32
  export * as replace from './replace/index.js'
33
33
  export * as select from './select/index.js'
34
34
  export * as set from './set/index.js'
35
- export * as setattribute from './setattribute/index.js'
36
35
  export * as setproperty from './setproperty/index.js'
37
- export * as sorton from './sorton/index.js'
36
+ export * as setattribute from './setattribute/index.js'
38
37
  export * as split from './split/index.js'
38
+ export * as sorton from './sorton/index.js'
39
+ export * as spread from './spread/index.js'
39
40
  export * as toarray from './toarray/index.js'
40
- export * as toelement from './toelement/index.js'
41
41
  export * as toboolean from './toboolean/index.js'
42
+ export * as toelement from './toelement/index.js'
42
43
  export * as toggleclass from './toggleclass/index.js'
43
- export * as tonodelist from './tonodelist/index.js'
44
44
  export * as tonull from './tonull/index.js'
45
- export * as torecord from './torecord/index.js'
46
45
  export * as tonumber from './tonumber/index.js'
46
+ export * as tonodelist from './tonodelist/index.js'
47
47
  export * as toref from './toref/index.js'
48
- export * as spread from './spread/index.js'
49
48
  export * as tostring from './tostring/index.js'
50
49
  export * as totext from './totext/index.js'
51
50
  export * as transformselected from './transformselected/index.js'
52
51
  export * as trim from './trim/index.js'
52
+ export * as torecord from './torecord/index.js'
@@ -2,12 +2,12 @@ export * as any from './any/index.js'
2
2
  export * as boolean from './boolean/index.js'
3
3
  export * as array from './array/index.js'
4
4
  export * as element from './element/index.js'
5
- export * as get from './get/index.js'
6
5
  export * as guess from './guess/index.js'
6
+ export * as get from './get/index.js'
7
7
  export * as nodelist from './nodelist/index.js'
8
8
  export * as null from './null/index.js'
9
- export * as number from './number/index.js'
10
9
  export * as record from './record/index.js'
11
10
  export * as string from './string/index.js'
12
- export * as ref from './ref/index.js'
13
11
  export * as text from './text/index.js'
12
+ export * as ref from './ref/index.js'
13
+ export * as number from './number/index.js'
@@ -2,12 +2,12 @@ export * as any from './any/index.js'
2
2
  export * as boolean from './boolean/index.js'
3
3
  export * as array from './array/index.js'
4
4
  export * as element from './element/index.js'
5
- export * as get from './get/index.js'
6
5
  export * as guess from './guess/index.js'
6
+ export * as get from './get/index.js'
7
7
  export * as nodelist from './nodelist/index.js'
8
8
  export * as null from './null/index.js'
9
- export * as number from './number/index.js'
10
9
  export * as record from './record/index.js'
11
10
  export * as string from './string/index.js'
12
- export * as ref from './ref/index.js'
13
11
  export * as text from './text/index.js'
12
+ export * as ref from './ref/index.js'
13
+ export * as number from './number/index.js'
@@ -1,10 +1,10 @@
1
1
  export * as deepSelect from './deep-select/index.js'
2
- export * as getNodeAncestors from './get-node-ancestors/index.js'
3
2
  export * as getPositionInsideParent from './get-position-inside-parent/index.js'
4
3
  export * as hyperJson from './hyper-json/index.js'
4
+ export * as getNodeAncestors from './get-node-ancestors/index.js'
5
5
  export * as insertNode from './insert-node/index.js'
6
- export * as placeholders from './placeholders/index.js'
7
6
  export * as replaceInElement from './replace-in-element/index.js'
7
+ export * as placeholders from './placeholders/index.js'
8
8
  export * as selectorToElement from './selector-to-element/index.js'
9
9
  export * as stringToNodes from './string-to-nodes/index.js'
10
10
  export * as watchSelection from './watch-selection/index.js'
@@ -1,10 +1,10 @@
1
1
  export * as deepSelect from './deep-select/index.js'
2
- export * as getNodeAncestors from './get-node-ancestors/index.js'
3
2
  export * as getPositionInsideParent from './get-position-inside-parent/index.js'
4
3
  export * as hyperJson from './hyper-json/index.js'
4
+ export * as getNodeAncestors from './get-node-ancestors/index.js'
5
5
  export * as insertNode from './insert-node/index.js'
6
- export * as placeholders from './placeholders/index.js'
7
6
  export * as replaceInElement from './replace-in-element/index.js'
7
+ export * as placeholders from './placeholders/index.js'
8
8
  export * as selectorToElement from './selector-to-element/index.js'
9
9
  export * as stringToNodes from './string-to-nodes/index.js'
10
10
  export * as watchSelection from './watch-selection/index.js'
@@ -4,11 +4,11 @@ export * as colors from './colors/index.js'
4
4
  export * as css from './css/index.js'
5
5
  export * as errors from './errors/index.js'
6
6
  export * as html from './html/index.js'
7
- export * as misc from './misc/index.js'
8
7
  export * as numbers from './numbers/index.js'
9
8
  export * as objects from './objects/index.js'
10
- export * as random from './random/index.js'
9
+ export * as misc from './misc/index.js'
11
10
  export * as optim from './optim/index.js'
11
+ export * as random from './random/index.js'
12
12
  export * as regexps from './regexps/index.js'
13
13
  export * as sanitization from './sanitization/index.js'
14
14
  export * as strings from './strings/index.js'
package/agnostic/index.js CHANGED
@@ -4,11 +4,11 @@ export * as colors from './colors/index.js'
4
4
  export * as css from './css/index.js'
5
5
  export * as errors from './errors/index.js'
6
6
  export * as html from './html/index.js'
7
- export * as misc from './misc/index.js'
8
7
  export * as numbers from './numbers/index.js'
9
8
  export * as objects from './objects/index.js'
10
- export * as random from './random/index.js'
9
+ export * as misc from './misc/index.js'
11
10
  export * as optim from './optim/index.js'
11
+ export * as random from './random/index.js'
12
12
  export * as regexps from './regexps/index.js'
13
13
  export * as sanitization from './sanitization/index.js'
14
14
  export * as strings from './strings/index.js'
@@ -1,10 +1,10 @@
1
+ export * as assert from './assert/index.js'
1
2
  export * as cast from './cast/index.js'
2
3
  export * as connection from './connection/index.js'
3
4
  export * as crawler from './crawler/index.js'
4
5
  export * as crossenv from './crossenv/index.js'
5
6
  export * as dataSize from './data-size/index.js'
6
7
  export * as isConstructorFunction from './is-constructor-function/index.js'
7
- export * as assert from './assert/index.js'
8
8
  export * as isNullish from './is-nullish/index.js'
9
9
  export * as logs from './logs/index.js'
10
10
  export * as loremIpsum from './lorem-ipsum/index.js'
@@ -1,10 +1,10 @@
1
+ export * as assert from './assert/index.js'
1
2
  export * as cast from './cast/index.js'
2
3
  export * as connection from './connection/index.js'
3
4
  export * as crawler from './crawler/index.js'
4
5
  export * as crossenv from './crossenv/index.js'
5
6
  export * as dataSize from './data-size/index.js'
6
7
  export * as isConstructorFunction from './is-constructor-function/index.js'
7
- export * as assert from './assert/index.js'
8
8
  export * as isNullish from './is-nullish/index.js'
9
9
  export * as logs from './logs/index.js'
10
10
  export * as loremIpsum from './lorem-ipsum/index.js'
@@ -1,3 +1,3 @@
1
1
  export * as logger from './logger/index.js'
2
- export * as makeTextBlock from './make-text-block/index.js'
3
2
  export * as styles from './styles/index.js'
3
+ export * as makeTextBlock from './make-text-block/index.js'
@@ -1,3 +1,3 @@
1
1
  export * as logger from './logger/index.js'
2
- export * as makeTextBlock from './make-text-block/index.js'
3
2
  export * as styles from './styles/index.js'
3
+ export * as makeTextBlock from './make-text-block/index.js'
@@ -2,5 +2,5 @@ export * as absoluteModulo from './absolute-modulo/index.js'
2
2
  export * as approximateRational from './approximate-rational/index.js'
3
3
  export * as clamp from './clamp/index.js'
4
4
  export * as interpolate from './interpolate/index.js'
5
- export * as round from './round/index.js'
6
5
  export * as geometricProgressions from './geometric-progressions/index.js'
6
+ export * as round from './round/index.js'
@@ -2,5 +2,5 @@ export * as absoluteModulo from './absolute-modulo/index.js'
2
2
  export * as approximateRational from './approximate-rational/index.js'
3
3
  export * as clamp from './clamp/index.js'
4
4
  export * as interpolate from './interpolate/index.js'
5
- export * as round from './round/index.js'
6
5
  export * as geometricProgressions from './geometric-progressions/index.js'
6
+ export * as round from './round/index.js'
@@ -5,5 +5,5 @@ export * as isObject from './is-object/index.js'
5
5
  export * as isRecord from './is-record/index.js'
6
6
  export * as recordFormat from './record-format/index.js'
7
7
  export * as recordMap from './record-map/index.js'
8
- export * as validation from './validation/index.js'
9
8
  export * as sortKeys from './sort-keys/index.js'
9
+ export * as validation from './validation/index.js'
@@ -5,5 +5,5 @@ export * as isObject from './is-object/index.js'
5
5
  export * as isRecord from './is-record/index.js'
6
6
  export * as recordFormat from './record-format/index.js'
7
7
  export * as recordMap from './record-map/index.js'
8
- export * as validation from './validation/index.js'
9
8
  export * as sortKeys from './sort-keys/index.js'
9
+ export * as validation from './validation/index.js'
@@ -1,8 +1,8 @@
1
1
  export * as charCodes from './char-codes/index.js'
2
2
  export * as matches from './matches/index.js'
3
3
  export * as normalizeIndent from './normalize-indent/index.js'
4
+ export * as parseTable from './parse-table/index.js'
4
5
  export * as replaceAll from './replace-all/index.js'
5
6
  export * as splitTrim from './split-trim/index.js'
6
7
  export * as toAlphanum from './to-alphanum/index.js'
7
8
  export * as trim from './trim/index.js'
8
- export * as parseTable from './parse-table/index.js'
@@ -1,8 +1,8 @@
1
1
  export * as charCodes from './char-codes/index.js'
2
2
  export * as matches from './matches/index.js'
3
3
  export * as normalizeIndent from './normalize-indent/index.js'
4
+ export * as parseTable from './parse-table/index.js'
4
5
  export * as replaceAll from './replace-all/index.js'
5
6
  export * as splitTrim from './split-trim/index.js'
6
7
  export * as toAlphanum from './to-alphanum/index.js'
7
8
  export * as trim from './trim/index.js'
8
- export * as parseTable from './parse-table/index.js'
@@ -1,2 +1,2 @@
1
- export * as srtTimecodeToMs from './srt-timecode-to-ms/index.js'
2
1
  export * as parseSrt from './parse-srt/index.js'
2
+ export * as srtTimecodeToMs from './srt-timecode-to-ms/index.js'
@@ -1,2 +1,2 @@
1
- export * as srtTimecodeToMs from './srt-timecode-to-ms/index.js'
2
1
  export * as parseSrt from './parse-srt/index.js'
2
+ export * as srtTimecodeToMs from './srt-timecode-to-ms/index.js'
@@ -1,5 +1,5 @@
1
1
  export * as duration from './duration/index.js'
2
- export * as dates from './dates/index.js'
3
2
  export * as timeout from './timeout/index.js'
4
- export * as transitions from './transitions/index.js'
3
+ export * as dates from './dates/index.js'
5
4
  export * as wait from './wait/index.js'
5
+ export * as transitions from './transitions/index.js'
@@ -1,5 +1,5 @@
1
1
  export * as duration from './duration/index.js'
2
- export * as dates from './dates/index.js'
3
2
  export * as timeout from './timeout/index.js'
4
- export * as transitions from './transitions/index.js'
3
+ export * as dates from './dates/index.js'
5
4
  export * as wait from './wait/index.js'
5
+ export * as transitions from './transitions/index.js'
@@ -8,10 +8,12 @@ import type { WithClassName } from '../utils/types.js';
8
8
  * one a click on this member opens; the others only matter when another member opens
9
9
  * them. Declaring none makes it a group of its own.
10
10
  * @property closeBtnContent - Content rendered inside the close button.
11
- * @property openBtnContent - Content rendered inside the open button.
12
- * @property prevBtnContent - Content rendered inside the previous button, shown only
13
- * when the open group holds more than one member.
14
- * @property nextBtnContent - Content rendered inside the next button, same condition.
11
+ * @property openBtnContent - Content rendered inside the open button. Left empty, the
12
+ * button is still rendered: a stylesheet hides an empty control with `:empty`, and the
13
+ * lightbox is then opened by whatever the consumer wires up.
14
+ * @property prevBtnContent - Content rendered inside the previous button. The button is
15
+ * always rendered; the root's `navigable` modifier says whether it has anywhere to go.
16
+ * @property nextBtnContent - Content rendered inside the next button, same.
15
17
  * @property isOn - Controlled state. When defined, this member is driven by the
16
18
  * parent and the shared registry never opens or closes it.
17
19
  * @property defaultIsOn - Whether the lightbox starts open, in uncontrolled mode.
@@ -21,6 +23,9 @@ import type { WithClassName } from '../utils/types.js';
21
23
  * the open group. Only has an effect on a group of more than one member.
22
24
  * @property exitOnBgClick - When `true`, clicking the backdrop, and not its
23
25
  * content, closes it.
26
+ * @property openOnClick - When `true`, clicking the content opens the lightbox. An
27
+ * affordance layered on the open button, never a replacement for it: a click is
28
+ * mouse and touch only, and the button is what a keyboard reaches.
24
29
  * @property onOpenButtonClicked - Called when the open button is clicked, before the
25
30
  * lightbox reacts, with the state as it was.
26
31
  * @property onCloseButtonClicked - Same, for the close button.
@@ -28,6 +33,8 @@ import type { WithClassName } from '../utils/types.js';
28
33
  * @property onNextButtonClicked - Same, for the next button.
29
34
  * @property onBackgroundClicked - Called when the backdrop is clicked (only
30
35
  * while `exitOnBgClick` is `true`), before the lightbox reacts.
36
+ * @property onContentClicked - Called when the content is clicked while closed (only
37
+ * while `openOnClick` is `true`), before the lightbox reacts.
31
38
  * @property onEscapePressed - Called when `Escape` is pressed while the lightbox is open
32
39
  * (only while `exitOnEscape` is `true`), before the lightbox reacts.
33
40
  * @property onPrevArrowPressed - Called when the left arrow is pressed while the lightbox
@@ -49,56 +56,68 @@ export type Props = PropsWithChildren<WithClassName<{
49
56
  defaultIsOn?: boolean;
50
57
  exitOnEscape?: boolean;
51
58
  exitOnBgClick?: boolean;
59
+ openOnClick?: boolean;
52
60
  navOnArrowKeys?: boolean;
53
61
  onOpenButtonClicked?: (isOn: boolean) => void;
54
62
  onCloseButtonClicked?: (isOn: boolean) => void;
55
63
  onPrevButtonClicked?: (isOn: boolean) => void;
56
64
  onNextButtonClicked?: (isOn: boolean) => void;
57
65
  onBackgroundClicked?: (isOn: boolean) => void;
66
+ onContentClicked?: (isOn: boolean) => void;
58
67
  onEscapePressed?: (isOn: boolean) => void;
59
68
  onPrevArrowPressed?: (isOn: boolean) => void;
60
69
  onNextArrowPressed?: (isOn: boolean) => void;
61
70
  onIsOnChanged?: (isOn: boolean) => void;
62
71
  }>>;
63
72
  /**
64
- * Lightbox component. Holds content in place until opened, then moves it into an
65
- * overlay covering the page.
73
+ * Lightbox component. Holds content in a box that a stylesheet lifts over the page
74
+ * when opened.
66
75
  *
67
76
  * ### CSS modifiers
68
77
  * - `on` - this member is open.
69
78
  * - `off` - it is not.
70
- * - `grouped` - it belongs to a group it did not invent, so navigation is possible.
79
+ * - `grouped` - it belongs to a group it did not invent.
80
+ * - `navigable` - that group holds someone else, so the previous and next controls
81
+ * have somewhere to go.
82
+ * - `open-on-click` - the content itself opens the lightbox, so a stylesheet can say
83
+ * so with a cursor. Named after the prop it mirrors, as modifiers are.
71
84
  *
72
85
  * ### CSS elements
73
- * - `placeholder` - holds the content's last measured size while it is away.
74
- * - `backdrop` - the overlay, portalled to `document.body`, mounted only while open.
75
- * - `content` - wraps the moved content inside the lightbox.
86
+ * - `placeholder` - holds the content's last measured size while it is out of flow.
87
+ * - `backdrop` - the box the content always lives in; a stylesheet takes it out of
88
+ * flow and over the page while the root carries `--on`.
89
+ * - `content` - wraps the content inside the backdrop.
76
90
  * - `open-btn`, `close-btn`, `prev-btn`, `next-btn`
77
91
  *
78
92
  * @param props - Component properties.
79
93
  * @see {@link Props}
80
- * @returns A root `<div>` holding the content or its placeholder, plus, while open, a
81
- * lightbox portalled to the end of `document.body`.
94
+ * @returns A root `<div>` holding a placeholder, the backdrop the content lives in,
95
+ * and the controls.
82
96
  *
83
97
  * @remarks
84
- * - **[WIP]** Moving a `<video>` keeps it playing on desktop browsers; iOS has been
85
- * known to pause on a DOM move. Not worth guarding against for now.
86
- * - **The content is moved, not copied.** A portal relocates the DOM node without
87
- * changing the element's place in the React tree, so the instance is never
88
- * unmounted: a playing video keeps playing, at its timecode, and lands back where it
89
- * was on close. Rendering `children` twice would mount a second, fresh instance and
90
- * leave the first one running behind the lightbox.
91
- * - **The lightbox is portalled to `document.body`.** A `position: fixed` overlay left in
92
- * the article would be trapped by the first ancestor carrying a `transform`, a
93
- * `filter` or a `contain`, which becomes its containing block.
98
+ * - **The content never moves.** It stays in the same box, at the same place in the
99
+ * React tree, open or closed; only the box's positioning changes, and that is a
100
+ * stylesheet's business. Nothing is unmounted, so a playing video keeps playing at
101
+ * its timecode. Rendering `children` in two branches - one in place, one on a stage
102
+ * - would mount a fresh instance on every flip, React reconciling by position.
103
+ * - **Nothing leaves the component's own subtree.** No portal, no `document.body`: a
104
+ * component has no business writing outside the scope it was handed.
94
105
  * - **A placeholder keeps the layout still.** Its size is the content's last measured
95
- * one, read while closed; without it the article would collapse around the hole the
96
- * content leaves.
106
+ * one, read while closed; without it the article would collapse around the hole left
107
+ * once the backdrop goes out of flow.
108
+ * - **A `position: fixed` backdrop is contained by the first ancestor carrying a
109
+ * `transform`, a `filter` or a `contain`**, which becomes its containing block. That
110
+ * is wanted, not suffered: where several articles are preloaded side by side and
111
+ * slid through by a transformed container, containment is what keeps an offscreen
112
+ * article's lightbox offscreen. The top layer - `<dialog>` with `showModal()`, or
113
+ * the popover API - would do the opposite, being document-wide and above
114
+ * everything, and paint over whichever article is being read.
97
115
  * - **Groups are held outside React**, in `./store.ts`: a consumer may render each
98
116
  * component in a root of its own, in which case members of a group share no tree
99
117
  * and a context could not reach from one to the other.
100
- * - The lightbox is rendered by whichever member is on it, so navigating hands it over.
101
- * None of the content is remounted in the process.
118
+ * - Every member holds its own backdrop; only the open one is lifted over the page.
119
+ * Navigating a group therefore lowers one and lifts another, and neither one's
120
+ * content is touched.
102
121
  * - This component ships **no appearance**: covering the page, the backdrop and the
103
122
  * buttons are the consumer stylesheet's business. Without one, the content is moved
104
123
  * to the end of the document and nothing looks like a lightbox.
@@ -1,55 +1,64 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useId, useLayoutEffect, useRef, useState, useSyncExternalStore } from 'react';
3
- import { createPortal } from 'react-dom';
4
3
  import { clss } from '../../agnostic/css/clss/index.js';
5
4
  import { mergeClassNames, useChangeDispatch } from '../utils/index.js';
6
5
  import { lightbox as publicClassName } from '../public-classnames.js';
7
6
  import { close as closeLightbox, getState, membersOf, open as openLightbox, register, soloGroupOf, step, subscribe, unregister } from './store.js';
8
7
  import cssModule from './styles.module.css';
9
8
  /**
10
- * Lightbox component. Holds content in place until opened, then moves it into an
11
- * overlay covering the page.
9
+ * Lightbox component. Holds content in a box that a stylesheet lifts over the page
10
+ * when opened.
12
11
  *
13
12
  * ### CSS modifiers
14
13
  * - `on` - this member is open.
15
14
  * - `off` - it is not.
16
- * - `grouped` - it belongs to a group it did not invent, so navigation is possible.
15
+ * - `grouped` - it belongs to a group it did not invent.
16
+ * - `navigable` - that group holds someone else, so the previous and next controls
17
+ * have somewhere to go.
18
+ * - `open-on-click` - the content itself opens the lightbox, so a stylesheet can say
19
+ * so with a cursor. Named after the prop it mirrors, as modifiers are.
17
20
  *
18
21
  * ### CSS elements
19
- * - `placeholder` - holds the content's last measured size while it is away.
20
- * - `backdrop` - the overlay, portalled to `document.body`, mounted only while open.
21
- * - `content` - wraps the moved content inside the lightbox.
22
+ * - `placeholder` - holds the content's last measured size while it is out of flow.
23
+ * - `backdrop` - the box the content always lives in; a stylesheet takes it out of
24
+ * flow and over the page while the root carries `--on`.
25
+ * - `content` - wraps the content inside the backdrop.
22
26
  * - `open-btn`, `close-btn`, `prev-btn`, `next-btn`
23
27
  *
24
28
  * @param props - Component properties.
25
29
  * @see {@link Props}
26
- * @returns A root `<div>` holding the content or its placeholder, plus, while open, a
27
- * lightbox portalled to the end of `document.body`.
30
+ * @returns A root `<div>` holding a placeholder, the backdrop the content lives in,
31
+ * and the controls.
28
32
  *
29
33
  * @remarks
30
- * - **[WIP]** Moving a `<video>` keeps it playing on desktop browsers; iOS has been
31
- * known to pause on a DOM move. Not worth guarding against for now.
32
- * - **The content is moved, not copied.** A portal relocates the DOM node without
33
- * changing the element's place in the React tree, so the instance is never
34
- * unmounted: a playing video keeps playing, at its timecode, and lands back where it
35
- * was on close. Rendering `children` twice would mount a second, fresh instance and
36
- * leave the first one running behind the lightbox.
37
- * - **The lightbox is portalled to `document.body`.** A `position: fixed` overlay left in
38
- * the article would be trapped by the first ancestor carrying a `transform`, a
39
- * `filter` or a `contain`, which becomes its containing block.
34
+ * - **The content never moves.** It stays in the same box, at the same place in the
35
+ * React tree, open or closed; only the box's positioning changes, and that is a
36
+ * stylesheet's business. Nothing is unmounted, so a playing video keeps playing at
37
+ * its timecode. Rendering `children` in two branches - one in place, one on a stage
38
+ * - would mount a fresh instance on every flip, React reconciling by position.
39
+ * - **Nothing leaves the component's own subtree.** No portal, no `document.body`: a
40
+ * component has no business writing outside the scope it was handed.
40
41
  * - **A placeholder keeps the layout still.** Its size is the content's last measured
41
- * one, read while closed; without it the article would collapse around the hole the
42
- * content leaves.
42
+ * one, read while closed; without it the article would collapse around the hole left
43
+ * once the backdrop goes out of flow.
44
+ * - **A `position: fixed` backdrop is contained by the first ancestor carrying a
45
+ * `transform`, a `filter` or a `contain`**, which becomes its containing block. That
46
+ * is wanted, not suffered: where several articles are preloaded side by side and
47
+ * slid through by a transformed container, containment is what keeps an offscreen
48
+ * article's lightbox offscreen. The top layer - `<dialog>` with `showModal()`, or
49
+ * the popover API - would do the opposite, being document-wide and above
50
+ * everything, and paint over whichever article is being read.
43
51
  * - **Groups are held outside React**, in `./store.ts`: a consumer may render each
44
52
  * component in a root of its own, in which case members of a group share no tree
45
53
  * and a context could not reach from one to the other.
46
- * - The lightbox is rendered by whichever member is on it, so navigating hands it over.
47
- * None of the content is remounted in the process.
54
+ * - Every member holds its own backdrop; only the open one is lifted over the page.
55
+ * Navigating a group therefore lowers one and lifts another, and neither one's
56
+ * content is touched.
48
57
  * - This component ships **no appearance**: covering the page, the backdrop and the
49
58
  * buttons are the consumer stylesheet's business. Without one, the content is moved
50
59
  * to the end of the document and nothing looks like a lightbox.
51
60
  */
52
- export const Lightbox = ({ group, closeBtnContent, openBtnContent, prevBtnContent, nextBtnContent, isOn: isOnProp, defaultIsOn = false, exitOnEscape, exitOnBgClick, navOnArrowKeys, onOpenButtonClicked, onCloseButtonClicked, onPrevButtonClicked, onNextButtonClicked, onBackgroundClicked, onEscapePressed, onPrevArrowPressed, onNextArrowPressed, onIsOnChanged, children, className }) => {
61
+ export const Lightbox = ({ group, closeBtnContent, openBtnContent, prevBtnContent, nextBtnContent, isOn: isOnProp, defaultIsOn = false, exitOnEscape, exitOnBgClick, openOnClick, navOnArrowKeys, onOpenButtonClicked, onCloseButtonClicked, onPrevButtonClicked, onNextButtonClicked, onBackgroundClicked, onContentClicked, onEscapePressed, onPrevArrowPressed, onNextArrowPressed, onIsOnChanged, children, className }) => {
53
62
  // State & refs
54
63
  const id = useId();
55
64
  const rootRef = useRef(null);
@@ -122,6 +131,12 @@ export const Lightbox = ({ group, closeBtnContent, openBtnContent, prevBtnConten
122
131
  onNextButtonClicked?.(isOn);
123
132
  step(1);
124
133
  };
134
+ const handleContentClick = () => {
135
+ if (openOnClick !== true || isOn)
136
+ return;
137
+ onContentClicked?.(isOn);
138
+ requestOpen();
139
+ };
125
140
  const handleBackdropClick = e => {
126
141
  if (exitOnBgClick !== true)
127
142
  return;
@@ -179,13 +194,16 @@ export const Lightbox = ({ group, closeBtnContent, openBtnContent, prevBtnConten
179
194
  const rootClss = mergeClassNames(c(null, {
180
195
  on: isOn,
181
196
  off: !isOn,
182
- grouped: isGrouped
197
+ grouped: isGrouped,
198
+ navigable: siblingsCount > 1,
199
+ 'open-on-click': openOnClick === true && !isOn
183
200
  }), className);
184
201
  const size = sizeRef.current;
185
- const overlay = isOn
186
- ? createPortal(_jsxs("div", { className: c('backdrop'), onClick: handleBackdropClick, ref: backdropRef, children: [_jsx("div", { className: c('content'), children: children }), _jsx("button", { type: 'button', className: c('close-btn'), onClick: handleCloseButtonClick, children: closeBtnContent }), siblingsCount > 1 && _jsxs(_Fragment, { children: [_jsx("button", { type: 'button', className: c('prev-btn'), onClick: handlePrevButtonClick, children: prevBtnContent }), _jsx("button", { type: 'button', className: c('next-btn'), onClick: handleNextButtonClick, children: nextBtnContent })] })] }), document.body)
187
- : null;
188
- return _jsxs("div", { className: rootClss, ref: rootRef, children: [isOn
189
- ? _jsx("div", { className: c('placeholder'), style: size === null ? undefined : { width: size.width, height: size.height } })
190
- : children, _jsx("button", { type: 'button', className: c('open-btn'), onClick: handleOpenButtonClick, children: openBtnContent }), overlay] });
202
+ // Nothing here is conditional. React reconciles by position, so a branch that
203
+ // appears and disappears shifts what follows it - and moving `children` between two
204
+ // positions would unmount and remount them, the very thing this component exists to
205
+ // avoid. Which control is reachable, and when, is the stylesheet's business: the
206
+ // root carries a modifier per state, and `:empty` tells a control with no content
207
+ // from one that has some.
208
+ return _jsxs("div", { className: rootClss, ref: rootRef, children: [_jsx("div", { className: c('placeholder'), style: isOn && size !== null ? { width: size.width, height: size.height } : undefined }), _jsxs("div", { className: c('backdrop'), onClick: handleBackdropClick, ref: backdropRef, children: [_jsx("div", { className: c('content'), onClick: handleContentClick, children: children }), _jsx("button", { type: 'button', className: c('close-btn'), onClick: handleCloseButtonClick, children: closeBtnContent }), _jsx("button", { type: 'button', className: c('prev-btn'), onClick: handlePrevButtonClick, children: prevBtnContent }), _jsx("button", { type: 'button', className: c('next-btn'), onClick: handleNextButtonClick, children: nextBtnContent })] }), _jsx("button", { type: 'button', className: c('open-btn'), onClick: handleOpenButtonClick, children: openBtnContent })] });
191
209
  };
@@ -10,12 +10,12 @@ export * as image from './Image/index.js'
10
10
  export * as input from './Input/index.js'
11
11
  export * as intersectionObserver from './IntersectionObserver/index.js'
12
12
  export * as jsonEditor from './JsonEditor/index.js'
13
- export * as lightbox from './Lightbox/index.js'
14
13
  export * as listLoader from './ListLoader/index.js'
14
+ export * as lightbox from './Lightbox/index.js'
15
15
  export * as overlayer from './Overlayer/index.js'
16
+ export * as scrllgngn from './Scrllgngn/index.js'
16
17
  export * as paginator from './Paginator/index.js'
17
18
  export * as resizeObserver from './ResizeObserver/index.js'
18
- export * as scrllgngn from './Scrllgngn/index.js'
19
19
  export * as scrollListener from './ScrollListener/index.js'
20
20
  export * as select from './Select/index.js'
21
21
  export * as sequencer from './Sequencer/index.js'
@@ -10,12 +10,12 @@ export * as image from './Image/index.js'
10
10
  export * as input from './Input/index.js'
11
11
  export * as intersectionObserver from './IntersectionObserver/index.js'
12
12
  export * as jsonEditor from './JsonEditor/index.js'
13
- export * as lightbox from './Lightbox/index.js'
14
13
  export * as listLoader from './ListLoader/index.js'
14
+ export * as lightbox from './Lightbox/index.js'
15
15
  export * as overlayer from './Overlayer/index.js'
16
+ export * as scrllgngn from './Scrllgngn/index.js'
16
17
  export * as paginator from './Paginator/index.js'
17
18
  export * as resizeObserver from './ResizeObserver/index.js'
18
- export * as scrllgngn from './Scrllgngn/index.js'
19
19
  export * as scrollListener from './ScrollListener/index.js'
20
20
  export * as select from './Select/index.js'
21
21
  export * as sequencer from './Sequencer/index.js'
@@ -1,4 +1,4 @@
1
- export * as copyDir from './copy-dir/index.js'
2
- export * as removeDir from './remove-dir/index.js'
3
1
  export * as list from './list/index.js'
2
+ export * as copyDir from './copy-dir/index.js'
4
3
  export * as moveDir from './move-dir/index.js'
4
+ export * as removeDir from './remove-dir/index.js'
@@ -1,4 +1,4 @@
1
- export * as copyDir from './copy-dir/index.js'
2
- export * as removeDir from './remove-dir/index.js'
3
1
  export * as list from './list/index.js'
2
+ export * as copyDir from './copy-dir/index.js'
4
3
  export * as moveDir from './move-dir/index.js'
4
+ export * as removeDir from './remove-dir/index.js'
@@ -1,12 +1,12 @@
1
1
  export * as copy from './copy/index.js'
2
- export * as generateSignedUrl from './generate-signed-url/index.js'
3
2
  export * as download from './download/index.js'
3
+ export * as exists from './exists/index.js'
4
+ export * as generateSignedUrl from './generate-signed-url/index.js'
4
5
  export * as getMetadata from './get-metadata/index.js'
5
6
  export * as getPermissions from './get-permissions/index.js'
6
7
  export * as move from './move/index.js'
7
8
  export * as remove from './remove/index.js'
8
- export * as stat from './stat/index.js'
9
9
  export * as revokeSignedUrls from './revoke-signed-urls/index.js'
10
- export * as exists from './exists/index.js'
10
+ export * as stat from './stat/index.js'
11
11
  export * as updateMetadata from './update-metadata/index.js'
12
12
  export * as upload from './upload/index.js'
@@ -1,12 +1,12 @@
1
1
  export * as copy from './copy/index.js'
2
- export * as generateSignedUrl from './generate-signed-url/index.js'
3
2
  export * as download from './download/index.js'
3
+ export * as exists from './exists/index.js'
4
+ export * as generateSignedUrl from './generate-signed-url/index.js'
4
5
  export * as getMetadata from './get-metadata/index.js'
5
6
  export * as getPermissions from './get-permissions/index.js'
6
7
  export * as move from './move/index.js'
7
8
  export * as remove from './remove/index.js'
8
- export * as stat from './stat/index.js'
9
9
  export * as revokeSignedUrls from './revoke-signed-urls/index.js'
10
- export * as exists from './exists/index.js'
10
+ export * as stat from './stat/index.js'
11
11
  export * as updateMetadata from './update-metadata/index.js'
12
12
  export * as upload from './upload/index.js'
@@ -1,3 +1,3 @@
1
1
  export * as bucket from './bucket/index.js'
2
- export * as file from './file/index.js'
3
2
  export * as directory from './directory/index.js'
3
+ export * as file from './file/index.js'
@@ -1,3 +1,3 @@
1
1
  export * as bucket from './bucket/index.js'
2
- export * as file from './file/index.js'
3
2
  export * as directory from './directory/index.js'
3
+ export * as file from './file/index.js'
@@ -1,5 +1,5 @@
1
1
  export * as create from './create/index.js'
2
2
  export * as format from './format/index.js'
3
- export * as transform from './transform/index.js'
4
3
  export * as metadata from './metadata/index.js'
4
+ export * as transform from './transform/index.js'
5
5
  export * as utils from './utils/index.js'
@@ -1,5 +1,5 @@
1
1
  export * as create from './create/index.js'
2
2
  export * as format from './format/index.js'
3
- export * as transform from './transform/index.js'
4
3
  export * as metadata from './metadata/index.js'
4
+ export * as transform from './transform/index.js'
5
5
  export * as utils from './utils/index.js'
@@ -4,12 +4,12 @@ export * as extend from './extend/index.js'
4
4
  export * as extract from './extract/index.js'
5
5
  export * as flatten from './flatten/index.js'
6
6
  export * as flip from './flip/index.js'
7
+ export * as flop from './flop/index.js'
7
8
  export * as hue from './hue/index.js'
8
9
  export * as level from './level/index.js'
9
10
  export * as lighten from './lighten/index.js'
10
11
  export * as normalize from './normalize/index.js'
11
12
  export * as overlay from './overlay/index.js'
12
13
  export * as resize from './resize/index.js'
13
- export * as flop from './flop/index.js'
14
14
  export * as rotate from './rotate/index.js'
15
15
  export * as saturate from './saturate/index.js'
@@ -4,12 +4,12 @@ export * as extend from './extend/index.js'
4
4
  export * as extract from './extract/index.js'
5
5
  export * as flatten from './flatten/index.js'
6
6
  export * as flip from './flip/index.js'
7
+ export * as flop from './flop/index.js'
7
8
  export * as hue from './hue/index.js'
8
9
  export * as level from './level/index.js'
9
10
  export * as lighten from './lighten/index.js'
10
11
  export * as normalize from './normalize/index.js'
11
12
  export * as overlay from './overlay/index.js'
12
13
  export * as resize from './resize/index.js'
13
- export * as flop from './flop/index.js'
14
14
  export * as rotate from './rotate/index.js'
15
15
  export * as saturate from './saturate/index.js'
@@ -1,4 +1,4 @@
1
- export * as list from './list/index.js'
2
1
  export * as copyDir from './copy-dir/index.js'
2
+ export * as list from './list/index.js'
3
3
  export * as moveDir from './move-dir/index.js'
4
4
  export * as removeDir from './remove-dir/index.js'
@@ -1,4 +1,4 @@
1
- export * as list from './list/index.js'
2
1
  export * as copyDir from './copy-dir/index.js'
2
+ export * as list from './list/index.js'
3
3
  export * as moveDir from './move-dir/index.js'
4
4
  export * as removeDir from './remove-dir/index.js'
@@ -1,7 +1,7 @@
1
1
  export * as copy from './copy/index.js'
2
2
  export * as download from './download/index.js'
3
- export * as exists from './exists/index.js'
4
3
  export * as move from './move/index.js'
5
- export * as stat from './stat/index.js'
4
+ export * as exists from './exists/index.js'
6
5
  export * as remove from './remove/index.js'
6
+ export * as stat from './stat/index.js'
7
7
  export * as upload from './upload/index.js'
@@ -1,7 +1,7 @@
1
1
  export * as copy from './copy/index.js'
2
2
  export * as download from './download/index.js'
3
- export * as exists from './exists/index.js'
4
3
  export * as move from './move/index.js'
5
- export * as stat from './stat/index.js'
4
+ export * as exists from './exists/index.js'
6
5
  export * as remove from './remove/index.js'
6
+ export * as stat from './stat/index.js'
7
7
  export * as upload from './upload/index.js'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design-edito/tools",
3
- "version": "0.5.10",
3
+ "version": "0.5.12",
4
4
  "description": "",
5
5
  "author": "Maxime Fabas",
6
6
  "license": "ISC",