@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
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type FunctionComponent, type TextareaHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import type { WithClassName } from '../utils/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the {@link ControlledTextarea} component.
|
|
5
|
+
*
|
|
6
|
+
* Extends all native {@link TextareaHTMLAttributes} and {@link WithClassName}
|
|
7
|
+
* with optional label, error content, and automatic height adjustment.
|
|
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 textarea. When omitted, no error is rendered.
|
|
11
|
+
* @property autoHeight - When `true`, automatically adjusts the textarea height
|
|
12
|
+
* to fit its content. Defaults to `false`.
|
|
13
|
+
* @property className - Additional class name(s) applied to the textarea element.
|
|
14
|
+
*/
|
|
15
|
+
export type Props = TextareaHTMLAttributes<HTMLTextAreaElement> & WithClassName<{
|
|
16
|
+
label?: ReactNode;
|
|
17
|
+
error?: ReactNode;
|
|
18
|
+
autoHeight?: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Controlled textarea field component.
|
|
22
|
+
*
|
|
23
|
+
* Renders a native `<textarea>` element with optional label and error feedback.
|
|
24
|
+
* The textarea value is entirely driven by the provided `value` prop and all
|
|
25
|
+
* native textarea attributes are forwarded to the underlying element.
|
|
26
|
+
*
|
|
27
|
+
* A stable auto-generated `id` is created on mount and used to associate the
|
|
28
|
+
* rendered label through the `htmlFor` attribute.
|
|
29
|
+
*
|
|
30
|
+
* When `autoHeight` is enabled, the textarea height automatically expands or
|
|
31
|
+
* shrinks to match its content.
|
|
32
|
+
*
|
|
33
|
+
* ### CSS elements
|
|
34
|
+
* - `label`
|
|
35
|
+
* - `error`
|
|
36
|
+
*
|
|
37
|
+
* @param props - Component properties.
|
|
38
|
+
* @see {@link Props}
|
|
39
|
+
*
|
|
40
|
+
* @returns A labelled controlled textarea with optional error feedback.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* - The component does not manage its own value state.
|
|
44
|
+
* - Consumers are responsible for updating `value` in response to `onChange`.
|
|
45
|
+
* - Additional `className` values are merged with the component public class name
|
|
46
|
+
* and applied to the underlying `<textarea>` element.
|
|
47
|
+
* - When `autoHeight` is enabled, height recalculation occurs whenever the
|
|
48
|
+
* textarea value changes and every 500ms thereafter.
|
|
49
|
+
*/
|
|
50
|
+
export declare const ControlledTextarea: FunctionComponent<Props>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useLayoutEffect, useRef } 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 { textarea as publicClassName } from '../public-classnames.js';
|
|
7
|
+
import { mergeClassNames } from '../utils/index.js';
|
|
8
|
+
import cssModule from './styles.module.css';
|
|
9
|
+
/**
|
|
10
|
+
* Controlled textarea field component.
|
|
11
|
+
*
|
|
12
|
+
* Renders a native `<textarea>` element with optional label and error feedback.
|
|
13
|
+
* The textarea value is entirely driven by the provided `value` prop and all
|
|
14
|
+
* native textarea 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
|
+
* When `autoHeight` is enabled, the textarea height automatically expands or
|
|
20
|
+
* shrinks to match its content.
|
|
21
|
+
*
|
|
22
|
+
* ### CSS elements
|
|
23
|
+
* - `label`
|
|
24
|
+
* - `error`
|
|
25
|
+
*
|
|
26
|
+
* @param props - Component properties.
|
|
27
|
+
* @see {@link Props}
|
|
28
|
+
*
|
|
29
|
+
* @returns A labelled controlled textarea with optional error feedback.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* - The component does not manage its own value state.
|
|
33
|
+
* - Consumers are responsible for updating `value` in response to `onChange`.
|
|
34
|
+
* - Additional `className` values are merged with the component public class name
|
|
35
|
+
* and applied to the underlying `<textarea>` element.
|
|
36
|
+
* - When `autoHeight` is enabled, height recalculation occurs whenever the
|
|
37
|
+
* textarea value changes and every 500ms thereafter.
|
|
38
|
+
*/
|
|
39
|
+
export const ControlledTextarea = ({ label, error, autoHeight = false, value, className, ...rest }) => {
|
|
40
|
+
const [id] = useState(`_${randomHash(12)}`);
|
|
41
|
+
const textareaRef = useRef(null);
|
|
42
|
+
// Handlers
|
|
43
|
+
const adjustHeight = () => {
|
|
44
|
+
const textarea = textareaRef.current;
|
|
45
|
+
if (textarea === null)
|
|
46
|
+
return;
|
|
47
|
+
textarea.style.height = 'auto';
|
|
48
|
+
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
49
|
+
};
|
|
50
|
+
// Fx. dep `authHeight`, `value` - Compute content height
|
|
51
|
+
useLayoutEffect(() => {
|
|
52
|
+
if (!autoHeight)
|
|
53
|
+
return;
|
|
54
|
+
adjustHeight();
|
|
55
|
+
}, [autoHeight, value]);
|
|
56
|
+
// Rendering
|
|
57
|
+
const c = clss(publicClassName, { cssModule });
|
|
58
|
+
const rootClss = mergeClassNames(c(null), className);
|
|
59
|
+
return _jsxs(_Fragment, { children: [isNotFalsy(label) && _jsx("label", { className: c('label'), htmlFor: id, children: label }), _jsx("textarea", { ...rest, ref: textareaRef, className: rootClss, id: id, value: value, onChange: e => {
|
|
60
|
+
const { target } = e;
|
|
61
|
+
rest.onChange?.(e);
|
|
62
|
+
if (value === undefined)
|
|
63
|
+
return;
|
|
64
|
+
if (typeof value === 'number') {
|
|
65
|
+
target.value = `${value}`;
|
|
66
|
+
}
|
|
67
|
+
else if (typeof value === 'string') {
|
|
68
|
+
target.value = value;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// value is readonly string[]
|
|
72
|
+
// not supported for <select>; ignore or normalize if needed
|
|
73
|
+
}
|
|
74
|
+
} }), isNotFalsy(error) && _jsx("span", { className: c('error'), children: error })] });
|
|
75
|
+
};
|
|
@@ -1,33 +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 Textarea} component.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* with optional label and error content.
|
|
6
|
+
* Alias of {@link ControlledProps}.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* All native textarea attributes remain available, including `value`,
|
|
9
|
+
* `defaultValue`, and `onChange`, allowing the component to operate
|
|
10
|
+
* in either 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
|
-
* Textarea field component
|
|
14
|
+
* Textarea field component supporting controlled and hybrid usage.
|
|
19
15
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* All standard textarea attributes are forwarded to the underlying element.
|
|
16
|
+
* Wraps {@link ControlledTextarea} and automatically manages the textarea
|
|
17
|
+
* value when no `value` prop is provided.
|
|
23
18
|
*
|
|
24
19
|
* ### CSS elements
|
|
25
20
|
* - `label`
|
|
26
|
-
* - `textarea`
|
|
27
21
|
* - `error`
|
|
28
22
|
*
|
|
29
23
|
* @param props - Component properties.
|
|
30
24
|
* @see {@link Props}
|
|
31
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* @returns A labelled textarea with optional internal value management.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* - In controlled mode (`value` defined), the textarea 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 value 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.
|
|
32
37
|
*/
|
|
33
38
|
export declare const Textarea: 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 { textarea as publicClassName } from '../public-classnames.js';
|
|
7
|
-
import { mergeClassNames } from '../utils/index.js';
|
|
8
|
-
import cssModule from './styles.module.css';
|
|
3
|
+
import { ControlledTextarea } from './index.controlled.js';
|
|
9
4
|
/**
|
|
10
|
-
* Textarea field component
|
|
5
|
+
* Textarea field component supporting controlled and hybrid usage.
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* All standard textarea attributes are forwarded to the underlying element.
|
|
7
|
+
* Wraps {@link ControlledTextarea} and automatically manages the textarea
|
|
8
|
+
* value when no `value` prop is provided.
|
|
15
9
|
*
|
|
16
10
|
* ### CSS elements
|
|
17
11
|
* - `label`
|
|
18
|
-
* - `textarea`
|
|
19
12
|
* - `error`
|
|
20
13
|
*
|
|
21
14
|
* @param props - Component properties.
|
|
22
15
|
* @see {@link Props}
|
|
23
|
-
*
|
|
16
|
+
*
|
|
17
|
+
* @returns A labelled textarea with optional internal value management.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* - In controlled mode (`value` defined), the textarea 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 value 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 Textarea = ({
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
29
|
+
export const Textarea = ({ 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(ControlledTextarea, { ...rest, value: currentValue, onChange: handleChange });
|
|
30
39
|
};
|
|
@@ -94,6 +94,7 @@ export const UIModule = ({ src, props, stateHandlers, className }) => {
|
|
|
94
94
|
}
|
|
95
95
|
if ('update' in data && typeof data.update !== 'function')
|
|
96
96
|
return setLoadedModule(errs.updFunc);
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- shape fully validated by the checks above
|
|
97
98
|
const module = data;
|
|
98
99
|
setLoadedModule(module);
|
|
99
100
|
try {
|
|
@@ -109,7 +110,7 @@ export const UIModule = ({ src, props, stateHandlers, className }) => {
|
|
|
109
110
|
: new Error(unknownToString(err));
|
|
110
111
|
setLoadedModule(e);
|
|
111
112
|
}
|
|
112
|
-
}).catch(err => {
|
|
113
|
+
}).catch((err) => {
|
|
113
114
|
setLoading(false);
|
|
114
115
|
setLoadedModule(err instanceof Error ? err : new Error(unknownToString(err)));
|
|
115
116
|
setModuleTarget(null);
|
|
@@ -133,6 +134,7 @@ export const UIModule = ({ src, props, stateHandlers, className }) => {
|
|
|
133
134
|
}, [src]);
|
|
134
135
|
// Fx dep. `loadedModule` - log load errors
|
|
135
136
|
useEffect(() => {
|
|
137
|
+
// eslint-disable-next-line no-console
|
|
136
138
|
if (loadedModule instanceof Error)
|
|
137
139
|
console.error(loadedModule);
|
|
138
140
|
}, [loadedModule]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FunctionComponent, type PropsWithChildren, type VideoHTMLAttributes, type ReactEventHandler } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { WithClassName } from '../utils/types.js';
|
|
3
3
|
import { type Props as SubsProps } from '../Subtitles/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Describes a single video source.
|
|
@@ -54,16 +54,15 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
|
|
|
54
54
|
if (videoRef.current === null)
|
|
55
55
|
return;
|
|
56
56
|
const video = videoRef.current;
|
|
57
|
-
setTotalTime(
|
|
57
|
+
setTotalTime(video.duration);
|
|
58
58
|
intrinsicVideoAttributes.onLoadedMetadata?.(e);
|
|
59
59
|
}, [intrinsicVideoAttributes.onLoadedMetadata]);
|
|
60
60
|
const handleOnTimeUpdateEvent = useCallback((e) => {
|
|
61
61
|
const video = e.currentTarget;
|
|
62
|
-
const newTimeMs = secondsToMs(
|
|
62
|
+
const newTimeMs = secondsToMs(video.currentTime);
|
|
63
63
|
setCurrentTimeMs(newTimeMs);
|
|
64
|
-
if (intrinsicVideoAttributes
|
|
64
|
+
if (intrinsicVideoAttributes.onTimeUpdate !== undefined)
|
|
65
65
|
intrinsicVideoAttributes.onTimeUpdate(e);
|
|
66
|
-
}
|
|
67
66
|
}, [intrinsicVideoAttributes.onTimeUpdate]);
|
|
68
67
|
const handleOnPlayEvent = useCallback((e) => {
|
|
69
68
|
/* We must never play a video that has controlled time */
|
|
@@ -75,11 +74,11 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
|
|
|
75
74
|
}, [isTimeControlled, intrinsicVideoAttributes.onPlay]);
|
|
76
75
|
// Custom action handlers
|
|
77
76
|
const handlePlayButtonClick = useCallback((e) => {
|
|
78
|
-
const isPlaying = videoRef.current !== null ?
|
|
77
|
+
const isPlaying = videoRef.current !== null ? videoRef.current.paused : false;
|
|
79
78
|
actionHandlers?.playButtonClick?.(e, isPlaying, videoRef.current);
|
|
80
79
|
}, [actionHandlers?.playButtonClick]);
|
|
81
80
|
const handlePauseButtonClick = useCallback((e) => {
|
|
82
|
-
const isPlaying = videoRef.current !== null ?
|
|
81
|
+
const isPlaying = videoRef.current !== null ? videoRef.current.paused : false;
|
|
83
82
|
actionHandlers?.pauseButtonClick?.(e, isPlaying, videoRef.current);
|
|
84
83
|
}, [actionHandlers?.pauseButtonClick]);
|
|
85
84
|
const handleLoudButtonClick = useCallback((e) => {
|
|
@@ -125,7 +124,7 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
|
|
|
125
124
|
'muted': !isLoud,
|
|
126
125
|
..._modifiers
|
|
127
126
|
}), className);
|
|
128
|
-
const appliedVolume = volume
|
|
127
|
+
const appliedVolume = volume;
|
|
129
128
|
const rootAttributes = {
|
|
130
129
|
'data-play-on': isPlaying ? '' : undefined,
|
|
131
130
|
'data-play-off': !isPlaying ? '' : undefined,
|
|
@@ -151,8 +150,10 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
|
|
|
151
150
|
if (Array.isArray(sources)) {
|
|
152
151
|
if (sources.length === 0)
|
|
153
152
|
return [];
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element sampled just above; array is expected to be homogeneous
|
|
154
154
|
if (typeof sources[0] === 'string')
|
|
155
155
|
return sources.map(src => ({ src }));
|
|
156
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element was checked not to be a string just above; array is expected to be homogeneous
|
|
156
157
|
return sources;
|
|
157
158
|
}
|
|
158
159
|
return [];
|
|
@@ -165,8 +166,10 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
|
|
|
165
166
|
if (Array.isArray(tracks)) {
|
|
166
167
|
if (tracks.length === 0)
|
|
167
168
|
return [];
|
|
169
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element sampled just above; array is expected to be homogeneous
|
|
168
170
|
if (typeof tracks[0] === 'string')
|
|
169
171
|
return tracks.map(src => ({ src }));
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element was checked not to be a string just above; array is expected to be homogeneous
|
|
170
173
|
return tracks;
|
|
171
174
|
}
|
|
172
175
|
return [];
|
|
@@ -208,9 +211,7 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
|
|
|
208
211
|
}
|
|
209
212
|
}, [play, isTimeControlled]);
|
|
210
213
|
useEffect(() => {
|
|
211
|
-
|
|
212
|
-
forceVolume(videoRef.current, volume);
|
|
213
|
-
}
|
|
214
|
+
forceVolume(videoRef.current, volume);
|
|
214
215
|
}, [volume]);
|
|
215
216
|
useEffect(() => {
|
|
216
217
|
if (givenCurrentTimeMs !== undefined && videoRef.current !== null) {
|
|
@@ -55,20 +55,20 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
|
|
|
55
55
|
}
|
|
56
56
|
setPlay(true);
|
|
57
57
|
hasBeenAutoPlayed.current = true;
|
|
58
|
-
}, [controlledProps
|
|
58
|
+
}, [controlledProps.onPlay, shouldDisclaimerBeOn]);
|
|
59
59
|
const handleOnPauseEvent = useCallback((e) => {
|
|
60
60
|
setPlay(false);
|
|
61
61
|
controlledProps.onPause?.(e);
|
|
62
|
-
}, [controlledProps
|
|
62
|
+
}, [controlledProps.onPause]);
|
|
63
63
|
const handleOnVolumeChangeEvent = useCallback((e) => {
|
|
64
|
-
setMute(
|
|
65
|
-
setVolume(
|
|
64
|
+
setMute(e.currentTarget.muted);
|
|
65
|
+
setVolume(e.currentTarget.volume);
|
|
66
66
|
controlledProps.onVolumeChange?.(e);
|
|
67
|
-
}, [controlledProps
|
|
67
|
+
}, [controlledProps.onVolumeChange]);
|
|
68
68
|
const handleOnRateChangeEvent = useCallback((e) => {
|
|
69
|
-
setPlaybackRate(
|
|
69
|
+
setPlaybackRate(e.currentTarget.playbackRate);
|
|
70
70
|
controlledProps.onRateChange?.(e);
|
|
71
|
-
}, [controlledProps
|
|
71
|
+
}, [controlledProps.onRateChange]);
|
|
72
72
|
const handleOnFullscreenChangeEvent = useCallback((e) => {
|
|
73
73
|
if (document.fullscreenElement === null || shouldDisclaimerBeOn) {
|
|
74
74
|
setFullscreen(false);
|
|
@@ -77,7 +77,7 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
|
|
|
77
77
|
const handleOnLoadedMetadataEvent = useCallback((e) => {
|
|
78
78
|
muteAttributeWorkaround(e.currentTarget, controlledProps.muted ?? false);
|
|
79
79
|
controlledProps.onLoadedMetadata?.(e);
|
|
80
|
-
}, [controlledProps
|
|
80
|
+
}, [controlledProps.onLoadedMetadata, controlledProps.muted]);
|
|
81
81
|
// User actions
|
|
82
82
|
const handlePlayButtonClick = useCallback((e, isPlaying, video) => {
|
|
83
83
|
controlledProps.actionHandlers?.playButtonClick?.(e, isPlaying, video);
|
|
@@ -111,20 +111,28 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
|
|
|
111
111
|
const onIntersected = useCallback(({ ioEntry }) => {
|
|
112
112
|
if (ioEntry === undefined)
|
|
113
113
|
return;
|
|
114
|
-
const { isIntersecting
|
|
115
|
-
if (autoPauseWhenHidden === true && !isIntersecting)
|
|
114
|
+
const { isIntersecting } = ioEntry;
|
|
115
|
+
if (autoPauseWhenHidden === true && !isIntersecting)
|
|
116
116
|
setPlay(false);
|
|
117
|
-
|
|
118
|
-
if (autoLoudWhenVisible === true && isIntersecting) {
|
|
117
|
+
if (autoLoudWhenVisible === true && isIntersecting)
|
|
119
118
|
setMute(false);
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
if (autoPlayWhenVisible === true
|
|
120
|
+
&& !shouldDisclaimerBeOn
|
|
121
|
+
&& !hasBeenAutoPlayed.current
|
|
122
|
+
&& isIntersecting)
|
|
122
123
|
setPlay(true);
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
if (autoMuteWhenHidden === true
|
|
125
|
+
&& !shouldDisclaimerBeOn
|
|
126
|
+
&& !hasBeenAutoPlayed.current
|
|
127
|
+
&& !isIntersecting)
|
|
125
128
|
setMute(true);
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
}, [
|
|
130
|
+
autoPlayWhenVisible,
|
|
131
|
+
autoPauseWhenHidden,
|
|
132
|
+
autoMuteWhenHidden,
|
|
133
|
+
autoLoudWhenVisible,
|
|
134
|
+
shouldDisclaimerBeOn
|
|
135
|
+
]);
|
|
128
136
|
const handleDiclaimerDismiss = useCallback((prevIsOn) => {
|
|
129
137
|
setIsDisclaimerOn(false);
|
|
130
138
|
if (controlledProps.autoPlay === true && !hasBeenAutoPlayed.current) {
|
|
@@ -133,9 +141,8 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
|
|
|
133
141
|
disclaimer?.actionHandlers?.dismissClick?.(prevIsOn);
|
|
134
142
|
}, [controlledProps.autoPlay, disclaimer?.actionHandlers?.dismissClick]);
|
|
135
143
|
useEffect(() => {
|
|
136
|
-
if (isDisclaimerOn !== shouldDisclaimerBeOn)
|
|
144
|
+
if (isDisclaimerOn !== shouldDisclaimerBeOn)
|
|
137
145
|
setIsDisclaimerOn(shouldDisclaimerBeOn);
|
|
138
|
-
}
|
|
139
146
|
}, [isDisclaimerOn, shouldDisclaimerBeOn]);
|
|
140
147
|
useEffect(() => {
|
|
141
148
|
if (shouldDisclaimerBeOn) {
|
|
@@ -5,7 +5,7 @@ export declare const forceLoud: (video: HTMLVideoElement | null) => void;
|
|
|
5
5
|
export declare const forceVolume: (video: HTMLVideoElement | null, volume: number) => void;
|
|
6
6
|
export declare const forceCurrentTime: (video: HTMLVideoElement | null, time: number, setCurrentTime: Dispatch<SetStateAction<number>>) => void;
|
|
7
7
|
export declare const forcePlay: (video: HTMLVideoElement | null) => Promise<boolean>;
|
|
8
|
-
export declare const forcePause: (video: HTMLVideoElement | null) =>
|
|
8
|
+
export declare const forcePause: (video: HTMLVideoElement | null) => boolean;
|
|
9
9
|
export declare const forcePlaybackRate: (video: HTMLVideoElement | null, rate: number) => void;
|
|
10
10
|
export declare const forceFullscreen: (video: HTMLVideoElement | null) => Promise<boolean>;
|
|
11
11
|
export declare const forceExitFullscreen: (video: HTMLVideoElement | null) => Promise<boolean>;
|
|
@@ -13,21 +13,25 @@ export const muteAttributeWorkaround = (video, shouldMute) => {
|
|
|
13
13
|
export const forceMute = (video) => {
|
|
14
14
|
if (video === null)
|
|
15
15
|
return;
|
|
16
|
+
// eslint-disable-next-line no-param-reassign
|
|
16
17
|
video.muted = true;
|
|
17
18
|
};
|
|
18
19
|
export const forceLoud = (video) => {
|
|
19
20
|
if (video === null)
|
|
20
21
|
return;
|
|
22
|
+
// eslint-disable-next-line no-param-reassign
|
|
21
23
|
video.muted = false;
|
|
22
24
|
};
|
|
23
25
|
export const forceVolume = (video, volume) => {
|
|
24
26
|
if (video === null)
|
|
25
27
|
return;
|
|
28
|
+
// eslint-disable-next-line no-param-reassign
|
|
26
29
|
video.volume = volume;
|
|
27
30
|
};
|
|
28
31
|
export const forceCurrentTime = (video, time, setCurrentTime) => {
|
|
29
32
|
if (video === null)
|
|
30
33
|
return;
|
|
34
|
+
// eslint-disable-next-line no-param-reassign
|
|
31
35
|
video.currentTime = time;
|
|
32
36
|
setCurrentTime(time);
|
|
33
37
|
};
|
|
@@ -41,11 +45,12 @@ export const forcePlay = async (video) => {
|
|
|
41
45
|
return video.paused;
|
|
42
46
|
}
|
|
43
47
|
catch (e) {
|
|
48
|
+
// eslint-disable-next-line no-console
|
|
44
49
|
console.error(e);
|
|
45
50
|
}
|
|
46
51
|
return false;
|
|
47
52
|
};
|
|
48
|
-
export const forcePause =
|
|
53
|
+
export const forcePause = (video) => {
|
|
49
54
|
if (video === null)
|
|
50
55
|
return false;
|
|
51
56
|
if (video.paused)
|
|
@@ -55,6 +60,7 @@ export const forcePause = async (video) => {
|
|
|
55
60
|
return video.paused;
|
|
56
61
|
}
|
|
57
62
|
catch (e) {
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
58
64
|
console.error(e);
|
|
59
65
|
}
|
|
60
66
|
return false;
|
|
@@ -62,6 +68,7 @@ export const forcePause = async (video) => {
|
|
|
62
68
|
export const forcePlaybackRate = (video, rate) => {
|
|
63
69
|
if (video === null)
|
|
64
70
|
return;
|
|
71
|
+
// eslint-disable-next-line no-param-reassign
|
|
65
72
|
video.playbackRate = rate;
|
|
66
73
|
};
|
|
67
74
|
export const forceFullscreen = async (video) => {
|
|
@@ -72,6 +79,7 @@ export const forceFullscreen = async (video) => {
|
|
|
72
79
|
return document.fullscreenElement === video;
|
|
73
80
|
}
|
|
74
81
|
catch (e) {
|
|
82
|
+
// eslint-disable-next-line no-console
|
|
75
83
|
console.error(e);
|
|
76
84
|
}
|
|
77
85
|
return false;
|
|
@@ -85,6 +93,7 @@ export const forceExitFullscreen = async (video) => {
|
|
|
85
93
|
return document.fullscreenElement !== video;
|
|
86
94
|
}
|
|
87
95
|
catch (e) {
|
|
96
|
+
// eslint-disable-next-line no-console
|
|
88
97
|
console.error(e);
|
|
89
98
|
}
|
|
90
99
|
return false;
|
|
@@ -117,7 +126,7 @@ export function formatTime(ms, format, fps = 25) {
|
|
|
117
126
|
const result = Object
|
|
118
127
|
.keys(tokens)
|
|
119
128
|
.sort((a, b) => b.length - a.length)
|
|
120
|
-
.reduce((acc, t) => acc.replace(new RegExp(t, '
|
|
129
|
+
.reduce((acc, t) => acc.replace(new RegExp(t, 'gv'), String(tokens[t])), format);
|
|
121
130
|
return result;
|
|
122
131
|
}
|
|
123
132
|
export const getTimelineClickProgress = (event, timeline, video) => {
|
package/components/index.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export * as intersectionObserver from './IntersectionObserver/index.js'
|
|
|
12
12
|
export * as jsonEditor from './JsonEditor/index.js'
|
|
13
13
|
export * as overlayer from './Overlayer/index.js'
|
|
14
14
|
export * as paginator from './Paginator/index.js'
|
|
15
|
-
export * as resizeObserver from './ResizeObserver/index.js'
|
|
16
15
|
export * as scrllgngn from './Scrllgngn/index.js'
|
|
16
|
+
export * as resizeObserver from './ResizeObserver/index.js'
|
|
17
17
|
export * as scrollListener from './ScrollListener/index.js'
|
|
18
18
|
export * as select from './Select/index.js'
|
|
19
19
|
export * as sequencer from './Sequencer/index.js'
|
package/components/index.js
CHANGED
|
@@ -12,8 +12,8 @@ export * as intersectionObserver from './IntersectionObserver/index.js'
|
|
|
12
12
|
export * as jsonEditor from './JsonEditor/index.js'
|
|
13
13
|
export * as overlayer from './Overlayer/index.js'
|
|
14
14
|
export * as paginator from './Paginator/index.js'
|
|
15
|
-
export * as resizeObserver from './ResizeObserver/index.js'
|
|
16
15
|
export * as scrllgngn from './Scrllgngn/index.js'
|
|
16
|
+
export * as resizeObserver from './ResizeObserver/index.js'
|
|
17
17
|
export * as scrollListener from './ScrollListener/index.js'
|
|
18
18
|
export * as select from './Select/index.js'
|
|
19
19
|
export * as sequencer from './Sequencer/index.js'
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extends a type with an optional `className` prop accepting a string or an array of string-or-nullish values.
|
|
3
|
+
*
|
|
4
|
+
* @template T - The base type to extend.
|
|
5
|
+
*/
|
|
1
6
|
export type WithClassName<T extends Record<string, unknown>> = T & {
|
|
2
7
|
className?: string | Array<string | null | undefined>;
|
|
3
8
|
};
|
|
@@ -12,15 +12,15 @@ export type CopyDirOptions = {
|
|
|
12
12
|
* Recursively copies every object under `sourceDir` to the same relative path
|
|
13
13
|
* beneath `targetDir` in a single S3 bucket (AWS SDK v3).
|
|
14
14
|
*
|
|
15
|
-
* @param
|
|
16
|
-
* @param
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
19
|
-
* @param
|
|
20
|
-
* @param
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
23
|
-
* @returns
|
|
15
|
+
* @param client - The v3 S3 client instance.
|
|
16
|
+
* @param bucketName - The name of the S3 bucket.
|
|
17
|
+
* @param sourceDir - The source directory prefix to copy from.
|
|
18
|
+
* @param targetDir - The target directory prefix to copy to.
|
|
19
|
+
* @param [options] - Optional copy‑behaviour configuration.
|
|
20
|
+
* @param [options.listObjectsOptions] - Extra list parameters.
|
|
21
|
+
* @param [options.copyOptions] - Extra copy parameters.
|
|
22
|
+
* @param [options.overwrite=false] - Whether to overwrite existing files at target.
|
|
23
|
+
* @returns
|
|
24
24
|
* - Success: `Outcome.makeSuccess(true)` if every object is copied.
|
|
25
25
|
* - Failure: `Outcome.makeFailure(errStr)` on error.
|
|
26
26
|
*/
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { ListObjectsV2Command, CopyObjectCommand, HeadObjectCommand } from '@aws-sdk/client-s3';
|
|
2
2
|
import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
|
|
3
3
|
import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
|
|
4
|
+
import { deepGetProperty } from '../../../../../agnostic/objects/deep-get-property/index.js';
|
|
4
5
|
/**
|
|
5
6
|
* Recursively copies every object under `sourceDir` to the same relative path
|
|
6
7
|
* beneath `targetDir` in a single S3 bucket (AWS SDK v3).
|
|
7
8
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* @param
|
|
10
|
-
* @param
|
|
11
|
-
* @param
|
|
12
|
-
* @param
|
|
13
|
-
* @param
|
|
14
|
-
* @param
|
|
15
|
-
* @param
|
|
16
|
-
* @returns
|
|
9
|
+
* @param client - The v3 S3 client instance.
|
|
10
|
+
* @param bucketName - The name of the S3 bucket.
|
|
11
|
+
* @param sourceDir - The source directory prefix to copy from.
|
|
12
|
+
* @param targetDir - The target directory prefix to copy to.
|
|
13
|
+
* @param [options] - Optional copy‑behaviour configuration.
|
|
14
|
+
* @param [options.listObjectsOptions] - Extra list parameters.
|
|
15
|
+
* @param [options.copyOptions] - Extra copy parameters.
|
|
16
|
+
* @param [options.overwrite=false] - Whether to overwrite existing files at target.
|
|
17
|
+
* @returns
|
|
17
18
|
* - Success: `Outcome.makeSuccess(true)` if every object is copied.
|
|
18
19
|
* - Failure: `Outcome.makeFailure(errStr)` on error.
|
|
19
20
|
*/
|
|
@@ -42,10 +43,12 @@ export async function copyDir(client, bucketName, sourceDir, targetDir, options)
|
|
|
42
43
|
continue;
|
|
43
44
|
}
|
|
44
45
|
catch (err) {
|
|
45
|
-
const
|
|
46
|
-
|
|
46
|
+
const name = deepGetProperty(err, 'name');
|
|
47
|
+
const httpStatusCode = deepGetProperty(err, '$metadata.httpStatusCode');
|
|
48
|
+
const code = name ?? httpStatusCode;
|
|
49
|
+
// eslint-disable-next-line max-depth
|
|
50
|
+
if (code !== 'NotFound' && code !== 404)
|
|
47
51
|
return Outcome.makeFailure(unknownToString(err));
|
|
48
|
-
}
|
|
49
52
|
// Not found, proceed with copy
|
|
50
53
|
}
|
|
51
54
|
}
|