@design-edito/tools 0.4.22 → 0.5.0
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/agnostic/arrays/find-duplicates/index.d.ts +1 -1
- package/agnostic/arrays/find-duplicates/index.js +3 -2
- package/agnostic/arrays/is-array-of/index.d.ts +1 -1
- package/agnostic/arrays/is-array-of/index.js +3 -1
- package/agnostic/arrays/make/index.d.ts +1 -1
- package/agnostic/arrays/random-pick/index.js +2 -1
- package/agnostic/arrays/shuffle/index.js +1 -1
- package/agnostic/booleans/is-falsy/index.d.ts +3 -3
- package/agnostic/booleans/is-falsy/index.js +2 -3
- package/agnostic/colors/channels/index.d.ts +16 -16
- package/agnostic/colors/channels/index.js +15 -15
- package/agnostic/colors/contrast/index.d.ts +6 -6
- package/agnostic/colors/contrast/index.js +6 -8
- package/agnostic/colors/contrast/index.test.js +1 -1
- package/agnostic/colors/convert/index.d.ts +43 -43
- package/agnostic/colors/convert/index.js +60 -55
- package/agnostic/colors/distance/index.d.ts +5 -5
- package/agnostic/colors/distance/index.js +5 -4
- package/agnostic/colors/grayscale/index.d.ts +3 -3
- package/agnostic/colors/grayscale/index.js +3 -3
- package/agnostic/colors/index.d.ts +1 -1
- package/agnostic/colors/index.js +1 -1
- package/agnostic/colors/invert/index.d.ts +4 -4
- package/agnostic/colors/invert/index.js +3 -3
- package/agnostic/colors/lerp/index.d.ts +6 -7
- package/agnostic/colors/lerp/index.js +5 -6
- package/agnostic/colors/luminance/index.d.ts +4 -4
- package/agnostic/colors/luminance/index.js +3 -3
- package/agnostic/colors/palette/index.d.ts +3 -3
- package/agnostic/colors/palette/index.js +4 -3
- package/agnostic/colors/rotate/index.d.ts +4 -4
- package/agnostic/colors/rotate/index.js +4 -4
- package/agnostic/colors/tidy/index.d.ts +2 -2
- package/agnostic/colors/tidy/index.js +2 -2
- package/agnostic/colors/typechecks/index.d.ts +21 -21
- package/agnostic/colors/typechecks/index.js +22 -21
- package/agnostic/colors/types.d.ts +33 -33
- package/agnostic/css/bem/index.d.ts +11 -11
- package/agnostic/css/bem/index.js +9 -8
- package/agnostic/css/clss/index.d.ts +1 -1
- package/agnostic/css/clss/index.js +1 -1
- package/agnostic/css/index.d.ts +1 -1
- package/agnostic/css/index.js +1 -1
- package/agnostic/css/is-valid-css-class-name/index.d.ts +2 -2
- package/agnostic/css/is-valid-css-class-name/index.js +3 -3
- package/agnostic/css/scale/index.d.ts +18 -18
- package/agnostic/css/scale/index.js +18 -18
- package/agnostic/css/styles-set/index.d.ts +1 -1
- package/agnostic/css/styles-set/index.js +0 -2
- package/agnostic/errors/register/index.d.ts +1 -1
- package/agnostic/errors/register/index.js +3 -0
- package/agnostic/errors/unknown-to-string/index.d.ts +2 -2
- package/agnostic/errors/unknown-to-string/index.js +2 -3
- package/agnostic/html/deep-select/index.d.ts +3 -3
- package/agnostic/html/deep-select/index.js +11 -7
- package/agnostic/html/get-node-ancestors/index.d.ts +3 -3
- package/agnostic/html/get-node-ancestors/index.js +3 -3
- package/agnostic/html/get-position-inside-parent/index.d.ts +2 -2
- package/agnostic/html/get-position-inside-parent/index.js +2 -2
- package/agnostic/html/hyper-json/cast/index.d.ts +1 -1
- package/agnostic/html/hyper-json/cast/index.js +6 -5
- package/agnostic/html/hyper-json/method/index.d.ts +2 -2
- package/agnostic/html/hyper-json/serialize/index.d.ts +1 -1
- package/agnostic/html/hyper-json/serialize/index.js +9 -5
- package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +0 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +1 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +4 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +11 -11
- package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +11 -11
- package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +3 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +3 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +4 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +5 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +3 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +1 -1
- package/agnostic/html/hyper-json/smart-tags/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/any/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/array/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/get/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +3 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/isolated/null/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/record/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +3 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2 -2
- package/agnostic/html/hyper-json/transformer/index.d.ts +5 -5
- package/agnostic/html/hyper-json/tree/index.d.ts +1 -1
- package/agnostic/html/hyper-json/tree/index.js +14 -8
- package/agnostic/html/hyper-json/types/index.d.ts +11 -11
- package/agnostic/html/hyper-json/utils/index.d.ts +3 -3
- package/agnostic/html/hyper-json/utils/index.js +8 -3
- package/agnostic/html/index.d.ts +1 -1
- package/agnostic/html/index.js +1 -1
- package/agnostic/html/insert-node/index.d.ts +4 -4
- package/agnostic/html/insert-node/index.js +4 -4
- package/agnostic/html/replace-in-element/index.d.ts +3 -3
- package/agnostic/html/replace-in-element/index.js +4 -4
- package/agnostic/html/selector-to-element/index.d.ts +2 -2
- package/agnostic/html/selector-to-element/index.js +11 -11
- package/agnostic/html/string-to-nodes/index.d.ts +3 -3
- package/agnostic/html/string-to-nodes/index.js +3 -3
- package/agnostic/html/watch-selection/index.d.ts +4 -5
- package/agnostic/html/watch-selection/index.js +5 -6
- package/agnostic/misc/assert/index.js +3 -1
- package/agnostic/misc/cast/index.d.ts +16 -16
- package/agnostic/misc/cast/index.js +18 -18
- package/agnostic/misc/connection/index.d.ts +5 -5
- package/agnostic/misc/connection/index.js +4 -2
- package/agnostic/misc/crawler/index.d.ts +18 -18
- package/agnostic/misc/crawler/index.js +10 -9
- package/agnostic/misc/crawler/index.test.js +2 -2
- package/agnostic/misc/crossenv/detect-runtime/index.d.ts +1 -1
- package/agnostic/misc/crossenv/detect-runtime/index.js +10 -11
- package/agnostic/misc/crossenv/window/index.d.ts +6 -6
- package/agnostic/misc/crossenv/window/index.js +6 -5
- package/agnostic/misc/data-size/index.js +2 -0
- package/agnostic/misc/index.d.ts +3 -3
- package/agnostic/misc/index.js +3 -3
- package/agnostic/misc/is-constructor-function/index.d.ts +2 -2
- package/agnostic/misc/is-constructor-function/index.js +3 -2
- package/agnostic/misc/is-constructor-function/index.test.js +2 -2
- package/agnostic/misc/is-nullish/index.d.ts +5 -5
- package/agnostic/misc/is-nullish/index.js +5 -4
- package/agnostic/misc/logs/index.d.ts +1 -1
- package/agnostic/misc/logs/index.js +1 -1
- package/agnostic/misc/logs/logger/index.js +2 -2
- package/agnostic/misc/lorem-ipsum/index.js +4 -4
- package/agnostic/misc/normalize-extension/index.d.ts +3 -3
- package/agnostic/misc/normalize-extension/index.js +4 -4
- package/agnostic/misc/outcome/index.d.ts +14 -14
- package/agnostic/misc/outcome/index.js +6 -4
- package/agnostic/numbers/absolute-modulo/index.d.ts +3 -3
- package/agnostic/numbers/absolute-modulo/index.js +3 -3
- package/agnostic/numbers/approximate-rational/index.d.ts +6 -6
- package/agnostic/numbers/approximate-rational/index.js +9 -9
- package/agnostic/numbers/clamp/index.d.ts +4 -4
- package/agnostic/numbers/clamp/index.js +4 -4
- package/agnostic/numbers/geometric-progressions/index.d.ts +5 -5
- package/agnostic/numbers/geometric-progressions/index.js +7 -5
- package/agnostic/numbers/geometric-progressions/index.test.js +2 -2
- package/agnostic/numbers/index.d.ts +1 -1
- package/agnostic/numbers/index.js +1 -1
- package/agnostic/numbers/interpolate/index.d.ts +8 -8
- package/agnostic/numbers/interpolate/index.js +8 -8
- package/agnostic/numbers/round/index.d.ts +9 -9
- package/agnostic/numbers/round/index.js +9 -9
- package/agnostic/objects/deep-get-property/index.d.ts +4 -4
- package/agnostic/objects/deep-get-property/index.js +3 -3
- package/agnostic/objects/enums/is-in-enum/index.d.ts +3 -3
- package/agnostic/objects/enums/is-in-enum/index.js +3 -3
- package/agnostic/objects/flatten-getters/index.d.ts +2 -2
- package/agnostic/objects/flatten-getters/index.js +3 -2
- package/agnostic/objects/index.d.ts +1 -1
- package/agnostic/objects/index.js +1 -1
- package/agnostic/objects/is-object/index.d.ts +4 -4
- package/agnostic/objects/is-object/index.js +4 -4
- package/agnostic/objects/is-record/index.d.ts +2 -2
- package/agnostic/objects/is-record/index.js +2 -2
- package/agnostic/objects/record-format/index.d.ts +9 -9
- package/agnostic/objects/record-format/index.js +8 -3
- package/agnostic/objects/record-map/index.d.ts +4 -4
- package/agnostic/objects/record-map/index.js +5 -3
- package/agnostic/objects/sort-keys/index.d.ts +3 -3
- package/agnostic/objects/sort-keys/index.js +4 -3
- package/agnostic/objects/validation/index.d.ts +3 -3
- package/agnostic/objects/validation/index.js +4 -3
- package/agnostic/optim/memoize/index.d.ts +2 -2
- package/agnostic/optim/memoize/index.js +4 -2
- package/agnostic/optim/throttle-debounce/index.d.ts +2 -2
- package/agnostic/optim/throttle-debounce/index.js +7 -6
- package/agnostic/optim/throttle-debounce/types.d.ts +2 -1
- package/agnostic/random/random/index.d.ts +7 -8
- package/agnostic/random/random/index.js +3 -3
- package/agnostic/random/uuid/index.d.ts +6 -6
- package/agnostic/random/uuid/index.js +6 -6
- package/agnostic/regexps/index.d.ts +30 -60
- package/agnostic/regexps/index.js +27 -26
- package/agnostic/sanitization/file-name/index.d.ts +3 -3
- package/agnostic/sanitization/file-name/index.js +10 -10
- package/agnostic/sanitization/html/index.d.ts +6 -6
- package/agnostic/sanitization/html/index.js +9 -6
- package/agnostic/sanitization/path/index.d.ts +2 -2
- package/agnostic/sanitization/path/index.js +2 -2
- package/agnostic/sanitization/user-input/index.js +1 -0
- package/agnostic/strings/char-codes/index.js +2 -6
- package/agnostic/strings/index.d.ts +1 -1
- package/agnostic/strings/index.js +1 -1
- package/agnostic/strings/normalize-indent/index.js +2 -2
- package/agnostic/strings/parse-table/index.d.ts +13 -13
- package/agnostic/strings/parse-table/index.js +31 -16
- package/agnostic/strings/replace-all/index.d.ts +1 -1
- package/agnostic/strings/replace-all/index.js +1 -0
- package/agnostic/strings/to-alphanum/index.js +2 -2
- package/agnostic/strings/trim/index.js +2 -2
- package/agnostic/time/dates/format-date/index.js +3 -1
- package/agnostic/time/dates/index.d.ts +1 -0
- package/agnostic/time/dates/index.js +1 -0
- package/agnostic/time/dates/to-french-republican/index.d.ts +16 -0
- package/agnostic/time/dates/to-french-republican/index.js +82 -0
- package/agnostic/time/dates/to-french-republican/index.test.d.ts +1 -0
- package/agnostic/time/dates/to-french-republican/index.test.js +112 -0
- package/agnostic/time/dates/to-french-republican/types.d.ts +91 -0
- package/agnostic/time/dates/to-french-republican/types.js +47 -0
- package/agnostic/time/dates/to-french-republican/utils.d.ts +32 -0
- package/agnostic/time/dates/to-french-republican/utils.js +155 -0
- package/agnostic/time/duration/index.js +2 -0
- package/agnostic/time/index.d.ts +2 -2
- package/agnostic/time/index.js +2 -2
- package/agnostic/time/timeout/index.js +9 -9
- package/agnostic/time/transitions/index.js +8 -7
- package/components/BeforeAfter/index.controlled.js +1 -0
- package/components/BeforeAfter/index.js +4 -0
- package/components/Button/index.d.ts +2 -7
- package/components/Button/index.js +2 -2
- package/components/Clippable/index.js +1 -0
- package/components/Drawer/index.js +1 -1
- package/components/Gallery/index.js +2 -1
- package/components/Gallery/utils.js +5 -1
- package/components/Iframe/index.d.ts +16 -34
- package/components/Iframe/index.js +70 -27
- package/components/Image/index.js +2 -0
- package/components/Input/index.controlled.d.ts +42 -0
- package/components/Input/index.controlled.js +54 -0
- package/components/Input/index.d.ts +21 -17
- package/components/Input/index.js +27 -18
- package/components/IntersectionObserver/index.js +5 -2
- package/components/JsonEditor/index.js +1 -1
- package/components/Overlayer/index.d.ts +1 -1
- package/components/ScrollListener/utils.d.ts +29 -0
- package/components/Select/index.controlled.d.ts +43 -0
- package/components/Select/index.controlled.js +54 -0
- package/components/Select/index.d.ts +22 -18
- package/components/Select/index.js +27 -18
- package/components/Sequencer/index.controlled.js +1 -1
- package/components/Subtitles/index.js +3 -1
- package/components/Subtitles/types.d.ts +14 -0
- package/components/Subtitles/utils.d.ts +19 -15
- package/components/Subtitles/utils.js +29 -24
- package/components/Textarea/index.controlled.d.ts +50 -0
- package/components/Textarea/index.controlled.js +75 -0
- package/components/Textarea/index.d.ts +22 -17
- package/components/Textarea/index.js +27 -18
- package/components/UIModule/index.js +3 -1
- package/components/Video/index.controlled.d.ts +1 -1
- package/components/Video/index.controlled.js +11 -10
- package/components/Video/index.js +27 -20
- package/components/Video/utils.d.ts +1 -1
- package/components/Video/utils.js +11 -2
- package/components/index.d.ts +1 -1
- package/components/index.js +1 -1
- package/components/utils/types.d.ts +5 -0
- package/node/@aws-s3/storage/directory/copy-dir/index.d.ts +9 -9
- package/node/@aws-s3/storage/directory/copy-dir/index.js +15 -12
- package/node/@aws-s3/storage/directory/index.d.ts +1 -1
- package/node/@aws-s3/storage/directory/index.js +1 -1
- package/node/@aws-s3/storage/directory/list/index.d.ts +5 -5
- package/node/@aws-s3/storage/directory/list/index.js +5 -5
- package/node/@aws-s3/storage/directory/move-dir/index.d.ts +6 -6
- package/node/@aws-s3/storage/directory/move-dir/index.js +11 -7
- package/node/@aws-s3/storage/directory/remove-dir/index.d.ts +5 -5
- package/node/@aws-s3/storage/directory/remove-dir/index.js +5 -5
- package/node/@aws-s3/storage/file/copy/index.d.ts +8 -8
- package/node/@aws-s3/storage/file/copy/index.js +12 -9
- package/node/@aws-s3/storage/file/download/index.d.ts +6 -6
- package/node/@aws-s3/storage/file/download/index.js +6 -5
- package/node/@aws-s3/storage/file/exists/index.d.ts +6 -6
- package/node/@aws-s3/storage/file/exists/index.js +15 -12
- package/node/@aws-s3/storage/file/index.d.ts +1 -1
- package/node/@aws-s3/storage/file/index.js +1 -1
- package/node/@aws-s3/storage/file/move/index.d.ts +9 -9
- package/node/@aws-s3/storage/file/move/index.js +18 -15
- package/node/@aws-s3/storage/file/remove/index.d.ts +5 -5
- package/node/@aws-s3/storage/file/remove/index.js +16 -11
- package/node/@aws-s3/storage/file/stat/index.d.ts +5 -5
- package/node/@aws-s3/storage/file/stat/index.js +10 -7
- package/node/@aws-s3/storage/file/upload/index.d.ts +7 -7
- package/node/@aws-s3/storage/file/upload/index.js +11 -9
- package/node/@express/@multer/index.d.ts +12 -12
- package/node/@express/@multer/index.js +27 -25
- package/node/@google-cloud/storage/bucket/get-metadata/index.d.ts +4 -4
- package/node/@google-cloud/storage/bucket/get-metadata/index.js +3 -3
- package/node/@google-cloud/storage/directory/copy-dir/index.d.ts +7 -7
- package/node/@google-cloud/storage/directory/copy-dir/index.js +6 -6
- package/node/@google-cloud/storage/directory/index.d.ts +1 -1
- package/node/@google-cloud/storage/directory/index.js +1 -1
- package/node/@google-cloud/storage/directory/list/index.d.ts +6 -6
- package/node/@google-cloud/storage/directory/list/index.js +5 -5
- package/node/@google-cloud/storage/directory/move-dir/index.d.ts +6 -6
- package/node/@google-cloud/storage/directory/move-dir/index.js +5 -5
- package/node/@google-cloud/storage/directory/remove-dir/index.d.ts +7 -7
- package/node/@google-cloud/storage/directory/remove-dir/index.js +6 -6
- package/node/@google-cloud/storage/file/copy/index.d.ts +9 -9
- package/node/@google-cloud/storage/file/copy/index.js +8 -8
- package/node/@google-cloud/storage/file/download/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/download/index.js +5 -5
- package/node/@google-cloud/storage/file/exists/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/exists/index.js +6 -6
- package/node/@google-cloud/storage/file/generate-signed-url/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/generate-signed-url/index.js +6 -6
- package/node/@google-cloud/storage/file/get-metadata/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/get-metadata/index.js +4 -4
- package/node/@google-cloud/storage/file/get-permissions/index.d.ts +6 -6
- package/node/@google-cloud/storage/file/get-permissions/index.js +4 -4
- package/node/@google-cloud/storage/file/index.d.ts +1 -1
- package/node/@google-cloud/storage/file/index.js +1 -1
- package/node/@google-cloud/storage/file/move/index.d.ts +10 -10
- package/node/@google-cloud/storage/file/move/index.js +9 -9
- package/node/@google-cloud/storage/file/remove/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/remove/index.js +4 -4
- package/node/@google-cloud/storage/file/revoke-signed-urls/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +5 -5
- package/node/@google-cloud/storage/file/stat/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/stat/index.js +4 -4
- package/node/@google-cloud/storage/file/update-metadata/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/update-metadata/index.js +5 -5
- package/node/@google-cloud/storage/file/upload/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/upload/index.js +5 -5
- package/node/@google-cloud/storage/index.d.ts +1 -1
- package/node/@google-cloud/storage/index.js +1 -1
- package/node/cloud-storage/clients/index.d.ts +8 -8
- package/node/cloud-storage/clients/index.js +8 -8
- package/node/cloud-storage/operations/copy-dir/index.d.ts +22 -22
- package/node/cloud-storage/operations/copy-dir/index.js +5 -5
- package/node/cloud-storage/operations/copy-file/index.d.ts +22 -22
- package/node/cloud-storage/operations/copy-file/index.js +5 -5
- package/node/cloud-storage/operations/download-file/index.d.ts +19 -19
- package/node/cloud-storage/operations/download-file/index.js +6 -6
- package/node/cloud-storage/operations/exists-file/index.d.ts +15 -26
- package/node/cloud-storage/operations/exists-file/index.js +4 -4
- package/node/cloud-storage/operations/index.d.ts +1 -1
- package/node/cloud-storage/operations/index.js +1 -1
- package/node/cloud-storage/operations/list-dir/index.d.ts +15 -25
- package/node/cloud-storage/operations/list-dir/index.js +4 -4
- package/node/cloud-storage/operations/move-dir/index.d.ts +22 -22
- package/node/cloud-storage/operations/move-dir/index.js +5 -5
- package/node/cloud-storage/operations/move-file/index.d.ts +22 -22
- package/node/cloud-storage/operations/move-file/index.js +5 -5
- package/node/cloud-storage/operations/remove-dir/index.d.ts +18 -18
- package/node/cloud-storage/operations/remove-dir/index.js +4 -4
- package/node/cloud-storage/operations/remove-file/index.d.ts +18 -18
- package/node/cloud-storage/operations/remove-file/index.js +4 -4
- package/node/cloud-storage/operations/stat-file/index.d.ts +16 -16
- package/node/cloud-storage/operations/stat-file/index.js +4 -4
- package/node/cloud-storage/operations/upload-file/index.d.ts +23 -23
- package/node/cloud-storage/operations/upload-file/index.js +5 -5
- package/node/encryption/@aes-256-gcm/buffer/index.d.ts +6 -6
- package/node/encryption/@aes-256-gcm/buffer/index.js +6 -6
- package/node/encryption/@aes-256-gcm/uint8-array/index.d.ts +8 -8
- package/node/encryption/@aes-256-gcm/uint8-array/index.js +8 -8
- package/node/encryption/key/index.d.ts +6 -6
- package/node/encryption/key/index.js +6 -6
- package/node/files/read-write/index.d.ts +16 -16
- package/node/files/subpaths/index.d.ts +8 -8
- package/node/files/subpaths/index.js +11 -13
- package/node/ftps/directory/copy-dir/index.d.ts +6 -6
- package/node/ftps/directory/copy-dir/index.js +6 -6
- package/node/ftps/directory/list/index.d.ts +4 -4
- package/node/ftps/directory/list/index.js +3 -3
- package/node/ftps/directory/move-dir/index.d.ts +6 -6
- package/node/ftps/directory/move-dir/index.js +5 -5
- package/node/ftps/directory/remove-dir/index.d.ts +6 -6
- package/node/ftps/directory/remove-dir/index.js +8 -7
- package/node/ftps/file/copy/index.d.ts +6 -6
- package/node/ftps/file/copy/index.js +5 -5
- package/node/ftps/file/download/index.d.ts +6 -6
- package/node/ftps/file/download/index.js +5 -5
- package/node/ftps/file/exists/index.d.ts +3 -3
- package/node/ftps/file/exists/index.js +3 -3
- package/node/ftps/file/move/index.d.ts +8 -8
- package/node/ftps/file/move/index.js +11 -9
- package/node/ftps/file/remove/index.d.ts +5 -5
- package/node/ftps/file/remove/index.js +4 -4
- package/node/ftps/file/stat/index.d.ts +4 -4
- package/node/ftps/file/stat/index.js +4 -4
- package/node/ftps/file/upload/index.d.ts +7 -7
- package/node/ftps/file/upload/index.js +5 -5
- package/node/images/create/index.d.ts +2 -2
- package/node/images/create/index.js +1 -1
- package/node/images/format/index.d.ts +8 -8
- package/node/images/metadata/index.d.ts +2 -2
- package/node/images/transform/index.d.ts +2 -2
- package/node/images/transform/index.js +12 -2
- package/node/images/transform/operations/blur/index.d.ts +2 -2
- package/node/images/transform/operations/blur/index.js +1 -0
- package/node/images/transform/operations/brighten/index.d.ts +2 -2
- package/node/images/transform/operations/brighten/index.js +1 -0
- package/node/images/transform/operations/extend/index.d.ts +2 -2
- package/node/images/transform/operations/extend/index.js +1 -0
- package/node/images/transform/operations/extract/index.d.ts +2 -2
- package/node/images/transform/operations/extract/index.js +1 -0
- package/node/images/transform/operations/flatten/index.d.ts +2 -2
- package/node/images/transform/operations/flatten/index.js +1 -0
- package/node/images/transform/operations/flip/index.d.ts +2 -2
- package/node/images/transform/operations/flip/index.js +1 -0
- package/node/images/transform/operations/flop/index.d.ts +2 -2
- package/node/images/transform/operations/flop/index.js +1 -0
- package/node/images/transform/operations/hue/index.d.ts +2 -2
- package/node/images/transform/operations/hue/index.js +1 -0
- package/node/images/transform/operations/index.d.ts +1 -1
- package/node/images/transform/operations/index.js +1 -1
- package/node/images/transform/operations/level/index.d.ts +2 -2
- package/node/images/transform/operations/level/index.js +1 -0
- package/node/images/transform/operations/lighten/index.d.ts +2 -2
- package/node/images/transform/operations/lighten/index.js +1 -0
- package/node/images/transform/operations/normalize/index.d.ts +2 -2
- package/node/images/transform/operations/normalize/index.js +1 -0
- package/node/images/transform/operations/overlay/index.d.ts +2 -2
- package/node/images/transform/operations/resize/index.d.ts +2 -2
- package/node/images/transform/operations/resize/index.js +1 -0
- package/node/images/transform/operations/rotate/index.d.ts +2 -2
- package/node/images/transform/operations/rotate/index.js +1 -0
- package/node/images/transform/operations/saturate/index.d.ts +2 -2
- package/node/images/transform/operations/saturate/index.js +1 -0
- package/node/images/types.d.ts +41 -2
- package/node/images/utils/index.d.ts +10 -5
- package/node/index.d.ts +1 -1
- package/node/index.js +1 -1
- package/node/process/on-exit/index.js +2 -4
- package/node/process/prompt-continue/index.d.ts +3 -3
- package/node/process/prompt-continue/index.js +4 -3
- package/node/process/spawner/index.js +7 -6
- package/node/sftp/directory/copy-dir/index.d.ts +6 -6
- package/node/sftp/directory/copy-dir/index.js +6 -6
- package/node/sftp/directory/list/index.d.ts +3 -3
- package/node/sftp/directory/list/index.js +4 -4
- package/node/sftp/directory/move-dir/index.d.ts +7 -7
- package/node/sftp/directory/move-dir/index.js +7 -7
- package/node/sftp/directory/remove-dir/index.d.ts +5 -5
- package/node/sftp/directory/remove-dir/index.js +8 -7
- package/node/sftp/file/copy/index.d.ts +6 -6
- package/node/sftp/file/copy/index.js +5 -5
- package/node/sftp/file/download/index.d.ts +7 -7
- package/node/sftp/file/download/index.js +5 -5
- package/node/sftp/file/exists/index.d.ts +3 -3
- package/node/sftp/file/exists/index.js +3 -3
- package/node/sftp/file/move/index.d.ts +7 -7
- package/node/sftp/file/move/index.js +7 -7
- package/node/sftp/file/remove/index.d.ts +4 -4
- package/node/sftp/file/remove/index.js +4 -4
- package/node/sftp/file/stat/index.d.ts +3 -3
- package/node/sftp/file/stat/index.js +6 -5
- package/node/sftp/file/upload/index.d.ts +6 -6
- package/node/sftp/file/upload/index.js +5 -5
- package/package.json +40 -39
|
@@ -1,33 +1,37 @@
|
|
|
1
|
-
import { type FunctionComponent
|
|
2
|
-
import type
|
|
1
|
+
import { type FunctionComponent } from 'react';
|
|
2
|
+
import { type Props as ControlledProps } from './index.controlled.js';
|
|
3
3
|
/**
|
|
4
4
|
* Props for the {@link Input} component.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* with optional label and error content.
|
|
6
|
+
* Alias of {@link ControlledProps}.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* All native input attributes remain available, including `value`
|
|
9
|
+
* and `onChange`, allowing the component to operate in either
|
|
10
|
+
* controlled or hybrid mode.
|
|
12
11
|
*/
|
|
13
|
-
export type Props =
|
|
14
|
-
label?: ReactNode;
|
|
15
|
-
error?: ReactNode;
|
|
16
|
-
}>;
|
|
12
|
+
export type Props = ControlledProps;
|
|
17
13
|
/**
|
|
18
|
-
* Input field component
|
|
14
|
+
* Input field component supporting controlled and hybrid usage.
|
|
19
15
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* All standard input attributes are forwarded to the underlying element.
|
|
16
|
+
* Wraps {@link ControlledInput} and automatically manages the input value
|
|
17
|
+
* when no `value` prop is provided.
|
|
23
18
|
*
|
|
24
19
|
* ### CSS elements
|
|
25
20
|
* - `label`
|
|
26
|
-
* - `input`
|
|
27
21
|
* - `error`
|
|
28
22
|
*
|
|
29
23
|
* @param props - Component properties.
|
|
30
24
|
* @see {@link Props}
|
|
31
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* @returns A labelled input with optional internal value management.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* - When `value` is defined, the component behaves as a controlled component:
|
|
30
|
+
* displayed value updates are entirely driven by the parent component.
|
|
31
|
+
* - When `value` is omitted, the component behaves in hybrid mode:
|
|
32
|
+
* it initializes an internal state from the initial `value` prop and
|
|
33
|
+
* subsequently manages value updates itself.
|
|
34
|
+
* - In hybrid mode, the internal value is updated before forwarding
|
|
35
|
+
* the `onChange` callback.
|
|
32
36
|
*/
|
|
33
37
|
export declare const Input: FunctionComponent<Props>;
|
|
@@ -1,30 +1,39 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { isNotFalsy } from '../../agnostic/booleans/is-falsy/index.js';
|
|
5
|
-
import { randomHash } from '../../agnostic/random/uuid/index.js';
|
|
6
|
-
import { input as publicClassName } from '../public-classnames.js';
|
|
7
|
-
import { mergeClassNames } from '../utils/index.js';
|
|
8
|
-
import cssModule from './styles.module.css';
|
|
3
|
+
import { ControlledInput } from './index.controlled.js';
|
|
9
4
|
/**
|
|
10
|
-
* Input field component
|
|
5
|
+
* Input field component supporting controlled and hybrid usage.
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* All standard input attributes are forwarded to the underlying element.
|
|
7
|
+
* Wraps {@link ControlledInput} and automatically manages the input value
|
|
8
|
+
* when no `value` prop is provided.
|
|
15
9
|
*
|
|
16
10
|
* ### CSS elements
|
|
17
11
|
* - `label`
|
|
18
|
-
* - `input`
|
|
19
12
|
* - `error`
|
|
20
13
|
*
|
|
21
14
|
* @param props - Component properties.
|
|
22
15
|
* @see {@link Props}
|
|
23
|
-
*
|
|
16
|
+
*
|
|
17
|
+
* @returns A labelled input with optional internal value management.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* - When `value` is defined, the component behaves as a controlled component:
|
|
21
|
+
* displayed value updates are entirely driven by the parent component.
|
|
22
|
+
* - When `value` is omitted, the component behaves in hybrid mode:
|
|
23
|
+
* it initializes an internal state from the initial `value` prop and
|
|
24
|
+
* subsequently manages value updates itself.
|
|
25
|
+
* - In hybrid mode, the internal value is updated before forwarding
|
|
26
|
+
* the `onChange` callback.
|
|
24
27
|
*/
|
|
25
|
-
export const Input = (
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
28
|
+
export const Input = (props) => {
|
|
29
|
+
const { value, defaultValue, onChange, ...rest } = props;
|
|
30
|
+
const isControlled = value !== undefined;
|
|
31
|
+
const [internal, setInternal] = useState(defaultValue ?? '');
|
|
32
|
+
const currentValue = isControlled ? value : internal;
|
|
33
|
+
const handleChange = (e) => {
|
|
34
|
+
if (!isControlled)
|
|
35
|
+
setInternal(e.target.value);
|
|
36
|
+
onChange?.(e);
|
|
37
|
+
};
|
|
38
|
+
return _jsx(ControlledInput, { ...rest, value: currentValue, onChange: handleChange });
|
|
30
39
|
};
|
|
@@ -40,8 +40,11 @@ export const IntersectionObserverComponent = ({ onIntersected, root, rootMargin,
|
|
|
40
40
|
}, []);
|
|
41
41
|
useEffect(() => {
|
|
42
42
|
const rootEl = rootRef.current;
|
|
43
|
-
if (rootEl === null)
|
|
44
|
-
|
|
43
|
+
if (rootEl === null) {
|
|
44
|
+
// eslint-disable-next-line no-console
|
|
45
|
+
console.warn('rootRef.current should not be null');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
45
48
|
const observer = new IntersectionObserver(observation, { root, rootMargin, threshold });
|
|
46
49
|
observerRef.current = observer;
|
|
47
50
|
observer.observe(rootEl);
|
|
@@ -102,7 +102,7 @@ export const ValueEditor = ({ defaultValue = {}, onChange, path = [] }) => {
|
|
|
102
102
|
array: Array.isArray(value),
|
|
103
103
|
record: !Array.isArray(value) && isNonNullObject(value)
|
|
104
104
|
});
|
|
105
|
-
const pathStringDataAttr =
|
|
105
|
+
const pathStringDataAttr = path.map(e => e.toString()).join('.');
|
|
106
106
|
return _jsxs("span", { className: valueEditorClss, "data-path": pathStringDataAttr, children: [_jsxs(Select, { className: c('type'), onChange: handleTypeSelectChange, children: [_jsx("option", { value: 'string', selected: typeof value === 'string', children: "string" }), _jsx("option", { value: 'number', selected: typeof value === 'number', children: "number" }), _jsx("option", { value: 'boolean', selected: typeof value === 'boolean', children: "boolean" }), _jsx("option", { value: 'null', selected: value === null, children: "null" }), _jsx("option", { value: 'record', selected: isNonNullObject(value) && !Array.isArray(value), children: "record" }), _jsx("option", { value: 'array', selected: Array.isArray(value), children: "array" })] }), typeof value === 'string' && _jsx(StringEditor, { type: 'textarea', defaultValue: value, onChange: handleStringValueChange }), typeof value === 'number' && _jsx(NumberEditor, { defaultValue: value, onChange: handleNumberValueChange }), typeof value === 'boolean' && _jsx(BooleanEditor, { defaultValue: value, onChange: handleBooleanValueChange }), value === null && _jsx(NullEditor, { defaultValue: value }), isNonNullObject(value) && !Array.isArray(value) && _jsx(RecordEditor, { defaultValue: value, onChange: handleRecordValueChange, path: path }), Array.isArray(value) && _jsx(ArrayEditor, { defaultValue: value, onChange: handleArrayValueChange, path: path })] });
|
|
107
107
|
};
|
|
108
108
|
/* * * * * * * * * * * * * * * * *
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { FunctionComponent, PropsWithChildren, ReactNode } from 'react';
|
|
2
2
|
import type { WithClassName } from '../utils/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Describes a single overlay positioned over the base content.
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { RefObject, Dispatch, SetStateAction } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Scroll-related measurements for the document and viewport.
|
|
4
|
+
*
|
|
5
|
+
* @property win - Window inner dimensions.
|
|
6
|
+
* @property html - Document root element dimensions.
|
|
7
|
+
* @property scroll - Current scroll position.
|
|
8
|
+
* @property viewport - Current viewport bounds in document coordinates.
|
|
9
|
+
*/
|
|
2
10
|
export type GlobalScrollData = {
|
|
3
11
|
win: {
|
|
4
12
|
height: number;
|
|
@@ -19,18 +27,39 @@ export type GlobalScrollData = {
|
|
|
19
27
|
maxY: number;
|
|
20
28
|
};
|
|
21
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Position and size of a tracked element relative to the document.
|
|
32
|
+
*
|
|
33
|
+
* @property offsetX - Horizontal offset in pixels.
|
|
34
|
+
* @property offsetY - Vertical offset in pixels.
|
|
35
|
+
* @property width - Element width in pixels.
|
|
36
|
+
* @property height - Element height in pixels.
|
|
37
|
+
*/
|
|
22
38
|
export type LocalScrollData = {
|
|
23
39
|
offsetX: number;
|
|
24
40
|
offsetY: number;
|
|
25
41
|
width: number;
|
|
26
42
|
height: number;
|
|
27
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Combined scroll state passed to each registered {@link ScrollListener}.
|
|
46
|
+
*
|
|
47
|
+
* @property global - Document-level scroll data.
|
|
48
|
+
* @property local - Element-level position data.
|
|
49
|
+
*/
|
|
28
50
|
export type ScrollState = {
|
|
29
51
|
global: GlobalScrollData;
|
|
30
52
|
local: LocalScrollData;
|
|
31
53
|
};
|
|
32
54
|
export declare const globalDocumentScrollListener: () => GlobalScrollData;
|
|
33
55
|
export declare const localElementScrollListener: (div: HTMLDivElement) => LocalScrollData;
|
|
56
|
+
/**
|
|
57
|
+
* An entry registered with the global scroll listener.
|
|
58
|
+
*
|
|
59
|
+
* @property id - Unique identifier for this registration.
|
|
60
|
+
* @property rootRef - Ref to the tracked DOM element.
|
|
61
|
+
* @property setData - State setter to update the component's scroll state.
|
|
62
|
+
*/
|
|
34
63
|
export type RegisterEntry = {
|
|
35
64
|
id: string;
|
|
36
65
|
rootRef: RefObject<HTMLDivElement | null>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type FunctionComponent, type SelectHTMLAttributes, type ReactNode, type PropsWithChildren } from 'react';
|
|
2
|
+
import type { WithClassName } from '../utils/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the {@link ControlledSelect} component.
|
|
5
|
+
*
|
|
6
|
+
* Extends all native {@link SelectHTMLAttributes} and {@link WithClassName}
|
|
7
|
+
* with optional label, error content, and option children.
|
|
8
|
+
*
|
|
9
|
+
* @property label - Content rendered as an associated `<label>`. When omitted, no label is rendered.
|
|
10
|
+
* @property error - Content rendered as an error message below the select. When omitted, no error is rendered.
|
|
11
|
+
* @property className - Additional class name(s) applied to the select element.
|
|
12
|
+
* @property children - `<option>` or `<optgroup>` elements rendered inside the select.
|
|
13
|
+
*/
|
|
14
|
+
export type Props = SelectHTMLAttributes<HTMLSelectElement> & PropsWithChildren<WithClassName<{
|
|
15
|
+
label?: ReactNode;
|
|
16
|
+
error?: ReactNode;
|
|
17
|
+
}>>;
|
|
18
|
+
/**
|
|
19
|
+
* Controlled select field component.
|
|
20
|
+
*
|
|
21
|
+
* Renders a native `<select>` element with optional label and error feedback.
|
|
22
|
+
* The selected value is entirely driven by the provided `value` prop and all
|
|
23
|
+
* native select attributes are forwarded to the underlying element.
|
|
24
|
+
*
|
|
25
|
+
* A stable auto-generated `id` is created on mount and used to associate the
|
|
26
|
+
* rendered label through the `htmlFor` attribute.
|
|
27
|
+
*
|
|
28
|
+
* ### CSS elements
|
|
29
|
+
* - `label`
|
|
30
|
+
* - `error`
|
|
31
|
+
*
|
|
32
|
+
* @param props - Component properties.
|
|
33
|
+
* @see {@link Props}
|
|
34
|
+
*
|
|
35
|
+
* @returns A labelled controlled select with optional error feedback.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* - The component does not manage its own selection state.
|
|
39
|
+
* - Consumers are responsible for updating `value` in response to `onChange`.
|
|
40
|
+
* - Additional `className` values are merged with the component public class name
|
|
41
|
+
* and applied to the underlying `<select>` element.
|
|
42
|
+
*/
|
|
43
|
+
export declare const ControlledSelect: FunctionComponent<Props>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { clss } from '../../agnostic/css/clss/index.js';
|
|
4
|
+
import { isNotFalsy } from '../../agnostic/booleans/is-falsy/index.js';
|
|
5
|
+
import { randomHash } from '../../agnostic/random/uuid/index.js';
|
|
6
|
+
import { select as publicClassName } from '../public-classnames.js';
|
|
7
|
+
import { mergeClassNames } from '../utils/index.js';
|
|
8
|
+
import cssModule from './styles.module.css';
|
|
9
|
+
/**
|
|
10
|
+
* Controlled select field component.
|
|
11
|
+
*
|
|
12
|
+
* Renders a native `<select>` element with optional label and error feedback.
|
|
13
|
+
* The selected value is entirely driven by the provided `value` prop and all
|
|
14
|
+
* native select attributes are forwarded to the underlying element.
|
|
15
|
+
*
|
|
16
|
+
* A stable auto-generated `id` is created on mount and used to associate the
|
|
17
|
+
* rendered label through the `htmlFor` attribute.
|
|
18
|
+
*
|
|
19
|
+
* ### CSS elements
|
|
20
|
+
* - `label`
|
|
21
|
+
* - `error`
|
|
22
|
+
*
|
|
23
|
+
* @param props - Component properties.
|
|
24
|
+
* @see {@link Props}
|
|
25
|
+
*
|
|
26
|
+
* @returns A labelled controlled select with optional error feedback.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* - The component does not manage its own selection state.
|
|
30
|
+
* - Consumers are responsible for updating `value` in response to `onChange`.
|
|
31
|
+
* - Additional `className` values are merged with the component public class name
|
|
32
|
+
* and applied to the underlying `<select>` element.
|
|
33
|
+
*/
|
|
34
|
+
export const ControlledSelect = ({ label, error, value, className, children, ...rest }) => {
|
|
35
|
+
const [id] = useState(`_${randomHash(12)}`);
|
|
36
|
+
const c = clss(publicClassName, { cssModule });
|
|
37
|
+
const rootClss = mergeClassNames(c(null), className);
|
|
38
|
+
return _jsxs(_Fragment, { children: [isNotFalsy(label) && _jsx("label", { className: c('label'), htmlFor: id, children: label }), _jsx("select", { ...rest, className: rootClss, id: id, value: value, onChange: e => {
|
|
39
|
+
const { target } = e;
|
|
40
|
+
rest.onChange?.(e);
|
|
41
|
+
if (value === undefined)
|
|
42
|
+
return;
|
|
43
|
+
if (typeof value === 'number') {
|
|
44
|
+
target.value = `${value}`;
|
|
45
|
+
}
|
|
46
|
+
else if (typeof value === 'string') {
|
|
47
|
+
target.value = value;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// value is readonly string[]
|
|
51
|
+
// not supported for <select>; ignore or normalize if needed
|
|
52
|
+
}
|
|
53
|
+
}, children: children }), isNotFalsy(error) && _jsx("span", { className: c('error'), children: error })] });
|
|
54
|
+
};
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
import { type FunctionComponent
|
|
2
|
-
import type
|
|
1
|
+
import { type FunctionComponent } from 'react';
|
|
2
|
+
import { type Props as ControlledProps } from './index.controlled.js';
|
|
3
3
|
/**
|
|
4
4
|
* Props for the {@link Select} component.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* with optional label, error content, and option children.
|
|
6
|
+
* Alias of {@link ControlledProps}.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @property children - `<option>` or `<optgroup>` elements rendered inside the select.
|
|
8
|
+
* All native select attributes remain available, including `value`,
|
|
9
|
+
* `defaultValue`, and `onChange`, allowing the component to operate
|
|
10
|
+
* in either controlled or hybrid mode.
|
|
13
11
|
*/
|
|
14
|
-
export type Props =
|
|
15
|
-
label?: ReactNode;
|
|
16
|
-
error?: ReactNode;
|
|
17
|
-
}>>;
|
|
12
|
+
export type Props = ControlledProps;
|
|
18
13
|
/**
|
|
19
|
-
* Select field component
|
|
14
|
+
* Select field component supporting controlled and hybrid usage.
|
|
20
15
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* All standard select attributes are forwarded to the underlying element.
|
|
16
|
+
* Wraps {@link ControlledSelect} and automatically manages the selected
|
|
17
|
+
* value when no `value` prop is provided.
|
|
24
18
|
*
|
|
25
19
|
* ### CSS elements
|
|
26
20
|
* - `label`
|
|
27
|
-
* - `select`
|
|
28
21
|
* - `error`
|
|
29
22
|
*
|
|
30
23
|
* @param props - Component properties.
|
|
31
24
|
* @see {@link Props}
|
|
32
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* @returns A labelled select with optional internal selection management.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* - In controlled mode (`value` defined), the selected value is fully driven
|
|
30
|
+
* by the parent component and internal state is never updated.
|
|
31
|
+
* - In hybrid mode, internal state is initialized from `defaultValue` and
|
|
32
|
+
* subsequently manages selection updates itself.
|
|
33
|
+
* - In hybrid mode, the internal value is updated before forwarding the
|
|
34
|
+
* `onChange` callback.
|
|
35
|
+
* - `defaultValue` is only used to initialize internal state and is not
|
|
36
|
+
* forwarded to the underlying controlled component.
|
|
33
37
|
*/
|
|
34
38
|
export declare const Select: FunctionComponent<Props>;
|
|
@@ -1,30 +1,39 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { isNotFalsy } from '../../agnostic/booleans/is-falsy/index.js';
|
|
5
|
-
import { randomHash } from '../../agnostic/random/uuid/index.js';
|
|
6
|
-
import { select as publicClassName } from '../public-classnames.js';
|
|
7
|
-
import { mergeClassNames } from '../utils/index.js';
|
|
8
|
-
import cssModule from './styles.module.css';
|
|
3
|
+
import { ControlledSelect } from './index.controlled.js';
|
|
9
4
|
/**
|
|
10
|
-
* Select field component
|
|
5
|
+
* Select field component supporting controlled and hybrid usage.
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* All standard select attributes are forwarded to the underlying element.
|
|
7
|
+
* Wraps {@link ControlledSelect} and automatically manages the selected
|
|
8
|
+
* value when no `value` prop is provided.
|
|
15
9
|
*
|
|
16
10
|
* ### CSS elements
|
|
17
11
|
* - `label`
|
|
18
|
-
* - `select`
|
|
19
12
|
* - `error`
|
|
20
13
|
*
|
|
21
14
|
* @param props - Component properties.
|
|
22
15
|
* @see {@link Props}
|
|
23
|
-
*
|
|
16
|
+
*
|
|
17
|
+
* @returns A labelled select with optional internal selection management.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* - In controlled mode (`value` defined), the selected value is fully driven
|
|
21
|
+
* by the parent component and internal state is never updated.
|
|
22
|
+
* - In hybrid mode, internal state is initialized from `defaultValue` and
|
|
23
|
+
* subsequently manages selection updates itself.
|
|
24
|
+
* - In hybrid mode, the internal value is updated before forwarding the
|
|
25
|
+
* `onChange` callback.
|
|
26
|
+
* - `defaultValue` is only used to initialize internal state and is not
|
|
27
|
+
* forwarded to the underlying controlled component.
|
|
24
28
|
*/
|
|
25
|
-
export const Select = ({
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
29
|
+
export const Select = ({ defaultValue, value, onChange, ...rest }) => {
|
|
30
|
+
const isControlled = value !== undefined;
|
|
31
|
+
const [internal, setInternal] = useState(defaultValue ?? '');
|
|
32
|
+
const currentValue = isControlled ? value : internal;
|
|
33
|
+
const handleChange = (e) => {
|
|
34
|
+
if (!isControlled)
|
|
35
|
+
setInternal(e.target.value);
|
|
36
|
+
onChange?.(e);
|
|
37
|
+
};
|
|
38
|
+
return _jsx(ControlledSelect, { ...rest, value: currentValue, onChange: handleChange });
|
|
30
39
|
};
|
|
@@ -55,7 +55,7 @@ export const SequencerControlled = ({ step = 0, activateOnStep, _modifiers, _dat
|
|
|
55
55
|
? childPos === step
|
|
56
56
|
: Array.isArray(thisStepActivateOnStep)
|
|
57
57
|
? thisStepActivateOnStep.includes(childPos)
|
|
58
|
-
:
|
|
58
|
+
: false;
|
|
59
59
|
const isNext = !isPrevious && !isCurrent;
|
|
60
60
|
const childClss = c('child', {
|
|
61
61
|
current: isCurrent,
|
|
@@ -60,6 +60,7 @@ export const Subtitles = ({ src, srtFileContent, subsGroups, timecodeMs, isEnded
|
|
|
60
60
|
setLoadError(error instanceof Error
|
|
61
61
|
? error
|
|
62
62
|
: new Error(unknownToString(error)));
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
63
64
|
console.error(error);
|
|
64
65
|
onLoadFailed?.(toError(error));
|
|
65
66
|
}
|
|
@@ -69,6 +70,7 @@ export const Subtitles = ({ src, srtFileContent, subsGroups, timecodeMs, isEnded
|
|
|
69
70
|
}, [onLoadFailed, onLoaded]);
|
|
70
71
|
useEffect(() => {
|
|
71
72
|
fetchAndParseSubs(src, srtFileContent)
|
|
73
|
+
// eslint-disable-next-line no-console
|
|
72
74
|
.catch((error) => { console.error(error); });
|
|
73
75
|
}, [fetchAndParseSubs, src, srtFileContent]);
|
|
74
76
|
// Rendering
|
|
@@ -77,7 +79,7 @@ export const Subtitles = ({ src, srtFileContent, subsGroups, timecodeMs, isEnded
|
|
|
77
79
|
loading: isLoading,
|
|
78
80
|
error: loadError !== null
|
|
79
81
|
}), className);
|
|
80
|
-
const prevSubs = parsedSubs.filter(({ start }) => start
|
|
82
|
+
const prevSubs = parsedSubs.filter(({ start }) => start !== undefined && start < (timecodeMs ?? 0));
|
|
81
83
|
const lastPrevSub = prevSubs[prevSubs.length - 1];
|
|
82
84
|
const highestSubId = Math.max(...parsedSubs.map(sub => sub.id));
|
|
83
85
|
const subsGroupsWithBoundaries = computeSubGroupsWithBoundaries(subsGroups, highestSubId);
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single parsed subtitle entry from an SRT file.
|
|
3
|
+
*
|
|
4
|
+
* @property id - Sequential subtitle number.
|
|
5
|
+
* @property start - Start time in milliseconds.
|
|
6
|
+
* @property end - End time in milliseconds.
|
|
7
|
+
* @property content - Subtitle text content.
|
|
8
|
+
*/
|
|
1
9
|
export type ParsedSub = {
|
|
2
10
|
id: number;
|
|
3
11
|
start?: number;
|
|
4
12
|
end?: number;
|
|
5
13
|
content?: string;
|
|
6
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* The inclusive ID boundaries of a subtitle group.
|
|
17
|
+
*
|
|
18
|
+
* @property startId - ID of the first subtitle in the group.
|
|
19
|
+
* @property endId - ID of the last subtitle in the group.
|
|
20
|
+
*/
|
|
7
21
|
export type SubGroupBoundaries = {
|
|
8
22
|
startId: number;
|
|
9
23
|
endId: number;
|
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
import type { ParsedSub, SubGroupBoundaries } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
3
|
+
* Converts an SRT timecode (hh:mm:ss,ms) to milliseconds.
|
|
4
|
+
*
|
|
5
|
+
* @param timecode - Timecode string (e.g. '00:01:23,456').
|
|
6
|
+
* @returns The time in milliseconds.
|
|
6
7
|
*/
|
|
7
8
|
export declare const getTimecodeToMs: (timecode: string) => number;
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @
|
|
10
|
+
* Parses a raw SRT subtitle text into a list of {@link ParsedSub} objects.
|
|
11
|
+
*
|
|
12
|
+
* @param rawSubs - Raw subtitle content in SRT format.
|
|
13
|
+
* @returns Array of parsed subtitle entries.
|
|
12
14
|
*/
|
|
13
15
|
export declare const parseSubs: (rawSubs: string) => ParsedSub[];
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @param
|
|
18
|
-
* @
|
|
17
|
+
* Computes subtitle groups with their boundaries (startId, endId).
|
|
18
|
+
*
|
|
19
|
+
* @param subsGroups - Array of group-end subtitle IDs.
|
|
20
|
+
* @param highestSubId - Highest subtitle ID in the track.
|
|
21
|
+
* @returns Array of {@link SubGroupBoundaries}.
|
|
19
22
|
*/
|
|
20
23
|
export declare const computeSubGroupsWithBoundaries: (subsGroups: number[] | undefined, highestSubId: number) => SubGroupBoundaries[];
|
|
21
24
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* @param
|
|
25
|
-
* @param
|
|
26
|
-
* @
|
|
25
|
+
* Returns the current subtitle group based on the last preceding subtitle ID and playback state.
|
|
26
|
+
*
|
|
27
|
+
* @param subsGroupsWithBoundaries - Array of groups with their boundaries.
|
|
28
|
+
* @param lastPrevSubId - ID of the last subtitle that has already passed.
|
|
29
|
+
* @param isEnded - Whether playback has ended.
|
|
30
|
+
* @returns The current group, or `undefined` if none matches.
|
|
27
31
|
*/
|
|
28
32
|
export declare const getCurrentGroup: (subsGroupsWithBoundaries: SubGroupBoundaries[], lastPrevSubId: number | undefined, isEnded: boolean | undefined) => SubGroupBoundaries | undefined;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* @
|
|
2
|
+
* Converts an SRT timecode (hh:mm:ss,ms) to milliseconds.
|
|
3
|
+
*
|
|
4
|
+
* @param timecode - Timecode string (e.g. '00:01:23,456').
|
|
5
|
+
* @returns The time in milliseconds.
|
|
5
6
|
*/
|
|
6
7
|
export const getTimecodeToMs = (timecode) => {
|
|
7
8
|
const [hours = '0', minutes = '0', secondsAndMs = '0,0'] = timecode.split(':');
|
|
@@ -13,13 +14,14 @@ export const getTimecodeToMs = (timecode) => {
|
|
|
13
14
|
return result;
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* @
|
|
17
|
+
* Parses a raw SRT subtitle text into a list of {@link ParsedSub} objects.
|
|
18
|
+
*
|
|
19
|
+
* @param rawSubs - Raw subtitle content in SRT format.
|
|
20
|
+
* @returns Array of parsed subtitle entries.
|
|
19
21
|
*/
|
|
20
22
|
export const parseSubs = (rawSubs) => {
|
|
21
|
-
const numberRegex = /^\d
|
|
22
|
-
const timecodeRegex = /^[0-9]+:[0-9]+:[0-9]+,[0-9]+\s*-->\s*[0-9]+:[0-9]+:[0-9]+,[0-9]
|
|
23
|
+
const numberRegex = /^\d+$/v;
|
|
24
|
+
const timecodeRegex = /^[0-9]+:[0-9]+:[0-9]+,[0-9]+\s*-->\s*[0-9]+:[0-9]+:[0-9]+,[0-9]+$/v;
|
|
23
25
|
const parsedSubs = [];
|
|
24
26
|
rawSubs.split('\n').forEach(line => {
|
|
25
27
|
if (line.trim() === '')
|
|
@@ -49,10 +51,10 @@ export const parseSubs = (rawSubs) => {
|
|
|
49
51
|
}
|
|
50
52
|
// content
|
|
51
53
|
if (lastParsedSub?.id !== undefined
|
|
52
|
-
&& lastParsedSub
|
|
53
|
-
&& lastParsedSub
|
|
54
|
-
if (lastParsedSub
|
|
55
|
-
lastParsedSub.content +=
|
|
54
|
+
&& lastParsedSub.start !== undefined
|
|
55
|
+
&& lastParsedSub.end !== undefined) {
|
|
56
|
+
if (lastParsedSub.content !== undefined) {
|
|
57
|
+
lastParsedSub.content += `\n${line}`;
|
|
56
58
|
return;
|
|
57
59
|
}
|
|
58
60
|
lastParsedSub.content = line;
|
|
@@ -61,21 +63,23 @@ export const parseSubs = (rawSubs) => {
|
|
|
61
63
|
return parsedSubs;
|
|
62
64
|
};
|
|
63
65
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* @param
|
|
67
|
-
* @
|
|
66
|
+
* Computes subtitle groups with their boundaries (startId, endId).
|
|
67
|
+
*
|
|
68
|
+
* @param subsGroups - Array of group-end subtitle IDs.
|
|
69
|
+
* @param highestSubId - Highest subtitle ID in the track.
|
|
70
|
+
* @returns Array of {@link SubGroupBoundaries}.
|
|
68
71
|
*/
|
|
69
72
|
export const computeSubGroupsWithBoundaries = (subsGroups, highestSubId) => {
|
|
70
73
|
const fallback = [{ startId: 1, endId: highestSubId }];
|
|
71
74
|
if (subsGroups === undefined || subsGroups.length === 0)
|
|
72
75
|
return fallback;
|
|
73
76
|
const emptySubGroupBoundaries = [];
|
|
74
|
-
return subsGroups
|
|
77
|
+
return subsGroups.reduce((acc, curr, currIndex) => {
|
|
75
78
|
const lastInAcc = acc[acc.length - 1];
|
|
76
79
|
const startId = lastInAcc === undefined ? 1 : lastInAcc.endId + 1;
|
|
77
80
|
const endId = curr;
|
|
78
|
-
if (currIndex ===
|
|
81
|
+
if (currIndex === subsGroups.length - 1
|
|
82
|
+
&& endId !== highestSubId) {
|
|
79
83
|
return [
|
|
80
84
|
...acc,
|
|
81
85
|
{ startId, endId },
|
|
@@ -83,14 +87,15 @@ export const computeSubGroupsWithBoundaries = (subsGroups, highestSubId) => {
|
|
|
83
87
|
];
|
|
84
88
|
}
|
|
85
89
|
return [...acc, { startId, endId }];
|
|
86
|
-
}, emptySubGroupBoundaries)
|
|
90
|
+
}, emptySubGroupBoundaries);
|
|
87
91
|
};
|
|
88
92
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* @param
|
|
92
|
-
* @param
|
|
93
|
-
* @
|
|
93
|
+
* Returns the current subtitle group based on the last preceding subtitle ID and playback state.
|
|
94
|
+
*
|
|
95
|
+
* @param subsGroupsWithBoundaries - Array of groups with their boundaries.
|
|
96
|
+
* @param lastPrevSubId - ID of the last subtitle that has already passed.
|
|
97
|
+
* @param isEnded - Whether playback has ended.
|
|
98
|
+
* @returns The current group, or `undefined` if none matches.
|
|
94
99
|
*/
|
|
95
100
|
export const getCurrentGroup = (subsGroupsWithBoundaries, lastPrevSubId, isEnded) => {
|
|
96
101
|
const previousGroups = subsGroupsWithBoundaries.filter(group => group.startId <= (lastPrevSubId ?? 0));
|