@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,155 @@
|
|
|
1
|
+
import { RepublicanMonth, ComplementaryDay, DecadeDay } from './types.js';
|
|
2
|
+
// Ordered lookup tables derived from the enums (declaration order).
|
|
3
|
+
/** The twelve month names, indexed by 0-based month index. */
|
|
4
|
+
export const MONTH_NAMES = Object.values(RepublicanMonth);
|
|
5
|
+
/** The six complementary day names, indexed by 0-based complementary index. */
|
|
6
|
+
export const COMPLEMENTARY_DAY_NAMES = Object.values(ComplementaryDay);
|
|
7
|
+
/** The ten décade day names, indexed by 0-based day-of-décade index. */
|
|
8
|
+
export const DECADE_DAY_NAMES = Object.values(DecadeDay);
|
|
9
|
+
// Paris Observatory meridian: 2°20'14" E ≈ +9m21s, expressed in days.
|
|
10
|
+
// The Republican astronomers used the Paris meridian to decide which civil day
|
|
11
|
+
// hosts the equinox, so we keep using it for every year.
|
|
12
|
+
const PARIS_MERIDIAN_OFFSET_DAYS = (2 + 20 / 60 + 14 / 3600) / 360;
|
|
13
|
+
const DEG_TO_RAD = Math.PI / 180;
|
|
14
|
+
// --- Julian Day -------------------------------------------------------------
|
|
15
|
+
/**
|
|
16
|
+
* Julian Day Number (integer, noon-based) for a proleptic Gregorian date.
|
|
17
|
+
*
|
|
18
|
+
* @param year - Gregorian year.
|
|
19
|
+
* @param month - Month, 1–12.
|
|
20
|
+
* @param day - Day of month, 1–31.
|
|
21
|
+
* @returns The Julian Day Number.
|
|
22
|
+
*/
|
|
23
|
+
export function gregorianToJdn(year, month, day) {
|
|
24
|
+
const a = Math.floor((14 - month) / 12);
|
|
25
|
+
const y = year + 4800 - a;
|
|
26
|
+
const m = month + 12 * a - 3;
|
|
27
|
+
return (day
|
|
28
|
+
+ Math.floor((153 * m + 2) / 5)
|
|
29
|
+
+ 365 * y
|
|
30
|
+
+ Math.floor(y / 4)
|
|
31
|
+
- Math.floor(y / 100)
|
|
32
|
+
+ Math.floor(y / 400)
|
|
33
|
+
- 32045);
|
|
34
|
+
}
|
|
35
|
+
// --- Astronomy: September equinox (Meeus, "Astronomical Algorithms", ch. 27) --
|
|
36
|
+
// Periodic-term table 27.A: rows of [A, B (deg), C (deg)].
|
|
37
|
+
const EQUINOX_TERMS = [
|
|
38
|
+
[485, 324.96, 1934.136], [203, 337.23, 32964.467], [199, 342.08, 20.186],
|
|
39
|
+
[182, 27.85, 445267.112], [156, 73.14, 45036.886], [136, 171.52, 22518.443],
|
|
40
|
+
[77, 222.54, 65928.934], [74, 296.72, 3034.906], [70, 243.58, 9037.513],
|
|
41
|
+
[58, 119.81, 33718.147], [52, 297.17, 150.678], [50, 21.02, 2281.226],
|
|
42
|
+
[45, 247.54, 29929.562], [44, 325.15, 31555.956], [29, 60.93, 4443.417],
|
|
43
|
+
[18, 155.12, 67555.328], [17, 288.79, 4562.452], [16, 198.04, 62894.029],
|
|
44
|
+
[14, 199.76, 31436.921], [12, 95.39, 14577.848], [12, 287.11, 31931.756],
|
|
45
|
+
[12, 320.81, 34777.259], [9, 227.73, 1222.114], [8, 15.45, 16859.074]
|
|
46
|
+
];
|
|
47
|
+
// Instant of the September equinox for a Gregorian year, as a Julian Ephemeris
|
|
48
|
+
// Day (JDE) in Dynamical Time (TD). Valid roughly for years 1000..3000.
|
|
49
|
+
function septemberEquinoxJde(year) {
|
|
50
|
+
const y = (year - 2000) / 1000;
|
|
51
|
+
const jde0 = 2451810.21715
|
|
52
|
+
+ 365242.01767 * y
|
|
53
|
+
- 0.11575 * y * y
|
|
54
|
+
+ 0.00337 * y * y * y
|
|
55
|
+
+ 0.00078 * y * y * y * y;
|
|
56
|
+
const t = (jde0 - 2451545.0) / 36525;
|
|
57
|
+
const w = (35999.373 * t - 2.47) * DEG_TO_RAD;
|
|
58
|
+
const deltaLambda = 1 + 0.0334 * Math.cos(w) + 0.0007 * Math.cos(2 * w);
|
|
59
|
+
let s = 0;
|
|
60
|
+
for (const [a, b, c] of EQUINOX_TERMS) {
|
|
61
|
+
s += a * Math.cos((b + c * t) * DEG_TO_RAD);
|
|
62
|
+
}
|
|
63
|
+
return jde0 + (0.00001 * s) / deltaLambda;
|
|
64
|
+
}
|
|
65
|
+
// TD - UT, in seconds. Espenak & Meeus (2006) polynomial approximations,
|
|
66
|
+
// covering the range that matters here (18th–22nd century) with a parabolic
|
|
67
|
+
// fallback outside it.
|
|
68
|
+
function deltaTSeconds(year) {
|
|
69
|
+
let t;
|
|
70
|
+
if (year >= 2005 && year < 2050) {
|
|
71
|
+
t = year - 2000;
|
|
72
|
+
return 62.92 + 0.32217 * t + 0.005589 * t * t;
|
|
73
|
+
}
|
|
74
|
+
if (year >= 1986 && year < 2005) {
|
|
75
|
+
t = year - 2000;
|
|
76
|
+
return (63.86 + 0.3345 * t - 0.060374 * t * t + 0.0017275 * t ** 3
|
|
77
|
+
+ 0.000651814 * t ** 4 + 0.00002373599 * t ** 5);
|
|
78
|
+
}
|
|
79
|
+
if (year >= 1961 && year < 1986) {
|
|
80
|
+
t = year - 1975;
|
|
81
|
+
return 45.45 + 1.067 * t - (t * t) / 260 - (t ** 3) / 718;
|
|
82
|
+
}
|
|
83
|
+
if (year >= 1941 && year < 1961) {
|
|
84
|
+
t = year - 1950;
|
|
85
|
+
return 29.07 + 0.407 * t - (t * t) / 233 + (t ** 3) / 2547;
|
|
86
|
+
}
|
|
87
|
+
if (year >= 1920 && year < 1941) {
|
|
88
|
+
t = year - 1920;
|
|
89
|
+
return 21.20 + 0.84493 * t - 0.076100 * t * t + 0.0020936 * t ** 3;
|
|
90
|
+
}
|
|
91
|
+
if (year >= 1900 && year < 1920) {
|
|
92
|
+
t = year - 1900;
|
|
93
|
+
return (-2.79 + 1.494119 * t - 0.0598939 * t * t
|
|
94
|
+
+ 0.0061966 * t ** 3 - 0.000197 * t ** 4);
|
|
95
|
+
}
|
|
96
|
+
if (year >= 1860 && year < 1900) {
|
|
97
|
+
t = year - 1860;
|
|
98
|
+
return (7.62 + 0.5737 * t - 0.251754 * t * t + 0.01680668 * t ** 3
|
|
99
|
+
- 0.0004473624 * t ** 4 + (t ** 5) / 233174);
|
|
100
|
+
}
|
|
101
|
+
if (year >= 1800 && year < 1860) {
|
|
102
|
+
t = year - 1800;
|
|
103
|
+
return (13.72 - 0.332447 * t + 0.0068612 * t * t + 0.0041116 * t ** 3
|
|
104
|
+
- 0.00037436 * t ** 4 + 0.0000121272 * t ** 5
|
|
105
|
+
- 0.0000001699 * t ** 6 + 0.000000000875 * t ** 7);
|
|
106
|
+
}
|
|
107
|
+
if (year >= 1700 && year < 1800) {
|
|
108
|
+
t = year - 1700;
|
|
109
|
+
return 8.83 + 0.1603 * t - 0.0059285 * t * t + 0.00013336 * t ** 3 - (t ** 4) / 1174000;
|
|
110
|
+
}
|
|
111
|
+
if (year >= 2050 && year < 2150) {
|
|
112
|
+
return -20 + 32 * ((year - 1820) / 100) ** 2 - 0.5628 * (2150 - year);
|
|
113
|
+
}
|
|
114
|
+
const u = (year - 1820) / 100;
|
|
115
|
+
return -20 + 32 * u * u;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* JDN of 1 Vendémiaire — the civil day (Paris meridian) hosting the September
|
|
119
|
+
* equinox of the given Gregorian year.
|
|
120
|
+
*
|
|
121
|
+
* @param gregorianYear - The Gregorian year whose equinox opens the Republican year.
|
|
122
|
+
* @returns The Julian Day Number of that year's 1 Vendémiaire.
|
|
123
|
+
*/
|
|
124
|
+
export function republicanYearStartJdn(gregorianYear) {
|
|
125
|
+
const jde = septemberEquinoxJde(gregorianYear); // TD
|
|
126
|
+
const ut = jde - deltaTSeconds(gregorianYear) / 86400;
|
|
127
|
+
const parisMeanTime = ut + PARIS_MERIDIAN_OFFSET_DAYS;
|
|
128
|
+
return Math.floor(parisMeanTime + 0.5);
|
|
129
|
+
}
|
|
130
|
+
// --- Roman numerals (years were written in Roman numerals: "an VIII") --------
|
|
131
|
+
/**
|
|
132
|
+
* Formats a positive integer as a Roman numeral. Non-positive inputs are
|
|
133
|
+
* returned as their decimal string.
|
|
134
|
+
*
|
|
135
|
+
* @param n - The number to format.
|
|
136
|
+
* @returns The Roman numeral (e.g. `8` -> `'VIII'`).
|
|
137
|
+
*/
|
|
138
|
+
export function toRoman(n) {
|
|
139
|
+
if (n <= 0)
|
|
140
|
+
return String(n);
|
|
141
|
+
const table = [
|
|
142
|
+
[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],
|
|
143
|
+
[100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'],
|
|
144
|
+
[10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']
|
|
145
|
+
];
|
|
146
|
+
let remaining = n;
|
|
147
|
+
let result = '';
|
|
148
|
+
for (const [value, symbol] of table) {
|
|
149
|
+
while (remaining >= value) {
|
|
150
|
+
result += symbol;
|
|
151
|
+
remaining -= value;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
@@ -41,6 +41,7 @@ export class Duration {
|
|
|
41
41
|
else if (type === 'mo' || type === 'mth' || type === 'months') {
|
|
42
42
|
this.type = 'months';
|
|
43
43
|
}
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
44
45
|
else if (type === 'y' || type === 'years') {
|
|
45
46
|
this.type = 'years';
|
|
46
47
|
}
|
|
@@ -64,6 +65,7 @@ export class Duration {
|
|
|
64
65
|
return this.value * 1000 * 60 * 60 * 24 * 7;
|
|
65
66
|
if (this.type === 'months')
|
|
66
67
|
return this.value * 1000 * 60 * 60 * 24 * 30;
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
67
69
|
if (this.type === 'years')
|
|
68
70
|
return this.value * 1000 * 60 * 60 * 24 * 365;
|
|
69
71
|
return this.value; // defaults to milliseconds
|
package/agnostic/time/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * as dates from './dates/index.js'
|
|
2
2
|
export * as duration from './duration/index.js'
|
|
3
|
-
export * as wait from './wait/index.js'
|
|
4
|
-
export * as transitions from './transitions/index.js'
|
|
5
3
|
export * as timeout from './timeout/index.js'
|
|
4
|
+
export * as transitions from './transitions/index.js'
|
|
5
|
+
export * as wait from './wait/index.js'
|
package/agnostic/time/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * as dates from './dates/index.js'
|
|
2
2
|
export * as duration from './duration/index.js'
|
|
3
|
-
export * as wait from './wait/index.js'
|
|
4
|
-
export * as transitions from './transitions/index.js'
|
|
5
3
|
export * as timeout from './timeout/index.js'
|
|
4
|
+
export * as transitions from './transitions/index.js'
|
|
5
|
+
export * as wait from './wait/index.js'
|
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export async function timeout(timeoutMs, callback) {
|
|
10
10
|
let hasRejected = false;
|
|
11
|
-
|
|
12
|
-
return await new Promise(async (resolve, reject) => {
|
|
11
|
+
return await new Promise((resolve, reject) => {
|
|
13
12
|
const rejectTimeout = setTimeout(() => {
|
|
14
|
-
// eslint-disable-next-line prefer-promise-reject-errors
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
|
|
15
14
|
reject(false);
|
|
16
15
|
hasRejected = true;
|
|
17
16
|
}, timeoutMs);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
void (async () => {
|
|
18
|
+
const callbackResult = await callback();
|
|
19
|
+
if (hasRejected)
|
|
20
|
+
return;
|
|
21
|
+
clearTimeout(rejectTimeout);
|
|
22
|
+
resolve(callbackResult);
|
|
23
|
+
})();
|
|
24
24
|
});
|
|
25
25
|
}
|
|
@@ -89,13 +89,14 @@ const c5 = (2 * PI) / 4.5;
|
|
|
89
89
|
const bounceOut = function (x) {
|
|
90
90
|
const n1 = 7.5625;
|
|
91
91
|
const d1 = 2.75;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
let t = x;
|
|
93
|
+
if (t < 1 / d1)
|
|
94
|
+
return n1 * t * t;
|
|
95
|
+
if (t < 2 / d1)
|
|
96
|
+
return n1 * (t -= 1.5 / d1) * t + 0.75;
|
|
97
|
+
if (t < 2.5 / d1)
|
|
98
|
+
return n1 * (t -= 2.25 / d1) * t + 0.9375;
|
|
99
|
+
return n1 * (t -= 2.625 / d1) * t + 0.984375;
|
|
99
100
|
};
|
|
100
101
|
/**
|
|
101
102
|
* Predefined easing functions used internally by transitions.
|
|
@@ -32,6 +32,7 @@ import cssModule from './styles.module.css';
|
|
|
32
32
|
* @returns A split-panel container with pointer interaction handlers and ratio state applied.
|
|
33
33
|
*/
|
|
34
34
|
export const BeforeAfterControlled = ({ mode = 'horizontal', ratio = 0, before, after, className, children, actionHandlers }) => {
|
|
35
|
+
// eslint-disable-next-line no-param-reassign
|
|
35
36
|
ratio = clamp(ratio, 0, 1);
|
|
36
37
|
// State & refs
|
|
37
38
|
const rootRef = useRef(null);
|
|
@@ -26,7 +26,9 @@ export const BeforeAfter = ({ mode = 'horizontal', actionHandlers, stateHandlers
|
|
|
26
26
|
const isControlled = ratio !== undefined;
|
|
27
27
|
const effectiveRatio = isControlled ? ratio : internalRatio;
|
|
28
28
|
const handleDrag = (x, y) => {
|
|
29
|
+
// eslint-disable-next-line no-param-reassign
|
|
29
30
|
x = 1.02 * x - 0.01;
|
|
31
|
+
// eslint-disable-next-line no-param-reassign
|
|
30
32
|
y = 1.02 * y - 0.01;
|
|
31
33
|
actionHandlers?.dragged?.(x, y);
|
|
32
34
|
if (!isControlled) {
|
|
@@ -35,7 +37,9 @@ export const BeforeAfter = ({ mode = 'horizontal', actionHandlers, stateHandlers
|
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
const handleClick = (x, y) => {
|
|
40
|
+
// eslint-disable-next-line no-param-reassign
|
|
38
41
|
x = 1.02 * x - 0.01;
|
|
42
|
+
// eslint-disable-next-line no-param-reassign
|
|
39
43
|
y = 1.02 * y - 0.01;
|
|
40
44
|
actionHandlers?.clicked?.(x, y);
|
|
41
45
|
if (!isControlled) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { FunctionComponent, ButtonHTMLAttributes } from 'react';
|
|
2
2
|
import type { WithClassName } from '../utils/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Props for the {@link Button} component.
|
|
@@ -6,14 +6,9 @@ import type { WithClassName } from '../utils/types.js';
|
|
|
6
6
|
* Extends all native {@link ButtonHTMLAttributes} and {@link WithClassName}
|
|
7
7
|
* with optional label and error content.
|
|
8
8
|
*
|
|
9
|
-
* @property label - Content rendered as the button label.
|
|
10
|
-
* @property error - Content rendered to convey an error state associated with the button.
|
|
11
9
|
* @property className - Additional class name(s) applied to the root element.
|
|
12
10
|
*/
|
|
13
|
-
export type Props = ButtonHTMLAttributes<HTMLButtonElement> & WithClassName<
|
|
14
|
-
label?: ReactNode;
|
|
15
|
-
error?: ReactNode;
|
|
16
|
-
}>;
|
|
11
|
+
export type Props = ButtonHTMLAttributes<HTMLButtonElement> & WithClassName<Record<string, unknown>>;
|
|
17
12
|
/**
|
|
18
13
|
* Base button component.
|
|
19
14
|
*
|
|
@@ -13,8 +13,8 @@ import cssModule from './styles.module.css';
|
|
|
13
13
|
* @see {@link Props}
|
|
14
14
|
* @returns A styled native button element.
|
|
15
15
|
*/
|
|
16
|
-
export const Button = ({
|
|
16
|
+
export const Button = ({ className, ...rest }) => {
|
|
17
17
|
const c = clss(publicClassName, { cssModule });
|
|
18
18
|
const rootClss = mergeClassNames(c(null), className);
|
|
19
|
-
return _jsx("button", { ...rest, className:
|
|
19
|
+
return _jsx("button", { ...rest, className: rootClss });
|
|
20
20
|
};
|
|
@@ -49,7 +49,7 @@ export const Drawer = ({ openerContent, closerContent, initialIsOpened = false,
|
|
|
49
49
|
setInternalIsOpened(false);
|
|
50
50
|
};
|
|
51
51
|
const handleROCompResize = ({ entry }) => {
|
|
52
|
-
const { width, height } = entry
|
|
52
|
+
const { width, height } = entry.contentRect;
|
|
53
53
|
setContentDimensions({ width, height });
|
|
54
54
|
};
|
|
55
55
|
// Rendering
|
|
@@ -56,6 +56,7 @@ export const Gallery = ({ paddingLeft, paddingRight, padding, prevButtonContent,
|
|
|
56
56
|
animationFrame = null;
|
|
57
57
|
const { scrollLeft, clientWidth, scrollWidth } = scrollerElt;
|
|
58
58
|
const center = scrollLeft + clientWidth / 2;
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- scrollerElt.children (HTMLCollection) always contains Element/HTMLElement nodes
|
|
59
60
|
const children = Array.from(scrollerElt.children);
|
|
60
61
|
let closestIndex = 0;
|
|
61
62
|
let closestDistance = Infinity;
|
|
@@ -138,7 +139,7 @@ export const Gallery = ({ paddingLeft, paddingRight, padding, prevButtonContent,
|
|
|
138
139
|
? actualPaddingRight
|
|
139
140
|
: undefined
|
|
140
141
|
};
|
|
141
|
-
return _jsx("div", { className:
|
|
142
|
+
return _jsx("div", { className: slotClss, style: { ...style }, "data-slot": pos, children: child }, pos);
|
|
142
143
|
}) }), _jsxs("div", { className: actionsClss, children: [_jsx("div", { className: prevBtnClss, onClick: handlePrevClick, children: prevButtonContent ?? 'prev' }), _jsx("div", { className: nextBtnClss, onClick: handleNextClick, children: nextButtonContent ?? 'next' })] }), _jsx("div", { className: paginationClss, children: Children.map(children, (_, pos) => {
|
|
143
144
|
const pageClss = c('page', { active: pos === activeIndex });
|
|
144
145
|
return _jsx("div", { className: pageClss, "data-page": pos, onClick: () => handlePaginationClick(pos), children: typeof paginationContent === 'string'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const forceActivateSlot = (div, targetPos, smooth = true) => {
|
|
2
2
|
if (div === null)
|
|
3
3
|
return;
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- div.children (HTMLCollection) always contains Element/HTMLElement nodes
|
|
4
5
|
const children = Array.from(div.children);
|
|
5
6
|
if (children[targetPos] === undefined)
|
|
6
7
|
return;
|
|
@@ -8,5 +9,8 @@ export const forceActivateSlot = (div, targetPos, smooth = true) => {
|
|
|
8
9
|
const halfClientWidth = div.clientWidth / 2;
|
|
9
10
|
const halfOffsetWidth = div.offsetWidth / 2;
|
|
10
11
|
const offset = target.offsetLeft - (halfClientWidth - halfOffsetWidth);
|
|
11
|
-
div.scrollTo({
|
|
12
|
+
div.scrollTo({
|
|
13
|
+
left: offset,
|
|
14
|
+
behavior: smooth ? 'smooth' : 'instant'
|
|
15
|
+
});
|
|
12
16
|
};
|
|
@@ -1,48 +1,30 @@
|
|
|
1
|
-
import { type FunctionComponent, type IframeHTMLAttributes
|
|
1
|
+
import { type FunctionComponent, type IframeHTMLAttributes } from 'react';
|
|
2
2
|
import type { WithClassName } from '../utils/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Props for the {@link Iframe} component.
|
|
5
5
|
*
|
|
6
|
-
* Extends native {@link IframeHTMLAttributes} with
|
|
6
|
+
* Extends native {@link IframeHTMLAttributes} with class name support and
|
|
7
|
+
* automatic height adjustment.
|
|
7
8
|
*
|
|
8
|
-
* @property
|
|
9
|
-
*
|
|
10
|
-
* @property
|
|
11
|
-
*
|
|
12
|
-
* @
|
|
13
|
-
* This component behaves as a hybrid between a native `<iframe>` and a React renderer.
|
|
14
|
-
*
|
|
15
|
-
* Rendering priority:
|
|
16
|
-
* - `children` takes precedence over `srcDoc` when provided.
|
|
17
|
-
* - If `children` is `null` or `undefined`, `srcDoc` is used directly.
|
|
18
|
-
*
|
|
19
|
-
* When `children` is provided, it is converted to static HTML using
|
|
20
|
-
* `renderToStaticMarkup` and injected into a complete HTML document:
|
|
21
|
-
* `<!doctype html><html><body>...</body></html>`.
|
|
9
|
+
* @property autoHeight - Enables automatic iframe height adjustment based on
|
|
10
|
+
* document content size. Only supported with `srcDoc`.
|
|
11
|
+
* @property className - Optional additional class names applied to the iframe.
|
|
12
|
+
* @property style - Optional inline style applied to the iframe.
|
|
13
|
+
* @property srcDoc - Raw HTML string rendered inside the iframe.
|
|
22
14
|
*/
|
|
23
|
-
export type Props =
|
|
15
|
+
export type Props = WithClassName<{
|
|
16
|
+
autoHeight?: boolean;
|
|
17
|
+
}> & Omit<IframeHTMLAttributes<HTMLIFrameElement>, 'children'>;
|
|
24
18
|
/**
|
|
25
|
-
* Iframe component with
|
|
26
|
-
*
|
|
27
|
-
* Renders either:
|
|
28
|
-
* - A raw HTML string via the `srcDoc` attribute, or
|
|
29
|
-
* - A ReactNode rendered into static HTML via `renderToStaticMarkup`.
|
|
30
|
-
*
|
|
31
|
-
* ### Rendering strategy
|
|
32
|
-
* 1. If `children` is defined (non-nullish), it is rendered to static HTML
|
|
33
|
-
* and used as iframe content.
|
|
34
|
-
* 2. Otherwise, `srcDoc` is used as-is.
|
|
19
|
+
* Iframe component with optional automatic height adjustment.
|
|
35
20
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
21
|
+
* When `autoHeight` is enabled, the iframe injects a script that measures
|
|
22
|
+
* document height and sends updates to the parent via `postMessage`.
|
|
38
23
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* - `children` overrides `srcDoc`.
|
|
42
|
-
* - Useful for embedding server-rendered UI fragments or documentation blocks.
|
|
24
|
+
* The parent component updates the iframe height via React state and `style`
|
|
25
|
+
* prop (no direct DOM mutation).
|
|
43
26
|
*
|
|
44
27
|
* @param props - Component properties.
|
|
45
28
|
* @see {@link Props}
|
|
46
|
-
* @returns A styled iframe element with computed HTML document content.
|
|
47
29
|
*/
|
|
48
30
|
export declare const Iframe: FunctionComponent<Props>;
|
|
@@ -1,43 +1,86 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
import { renderToStaticMarkup } from 'react-dom/server';
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
4
3
|
import { clss } from '../../agnostic/css/clss/index.js';
|
|
4
|
+
import { randomHash } from '../../agnostic/random/uuid/index.js';
|
|
5
5
|
import { mergeClassNames } from '../utils/index.js';
|
|
6
6
|
import { iframe as publicClassName } from '../public-classnames.js';
|
|
7
7
|
import cssModule from './styles.module.css';
|
|
8
|
-
|
|
8
|
+
const innerAutoHeightNitifier = (messageType) => `<script>
|
|
9
|
+
(() => {
|
|
10
|
+
const notify = () => {
|
|
11
|
+
const height = Math.max(
|
|
12
|
+
document.body?.scrollHeight ?? 0,
|
|
13
|
+
document.documentElement?.scrollHeight ?? 0
|
|
14
|
+
)
|
|
15
|
+
window.parent.postMessage({
|
|
16
|
+
type: '${messageType}',
|
|
17
|
+
height
|
|
18
|
+
}, '*')
|
|
19
|
+
}
|
|
20
|
+
window.addEventListener('load', notify)
|
|
21
|
+
const observer = new ResizeObserver(notify)
|
|
22
|
+
observer.observe(document.body)
|
|
23
|
+
observer.observe(document.documentElement)
|
|
24
|
+
notify()
|
|
25
|
+
})()
|
|
26
|
+
</script>`;
|
|
9
27
|
/**
|
|
10
|
-
* Iframe component with
|
|
28
|
+
* Iframe component with optional automatic height adjustment.
|
|
11
29
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* - A ReactNode rendered into static HTML via `renderToStaticMarkup`.
|
|
30
|
+
* When `autoHeight` is enabled, the iframe injects a script that measures
|
|
31
|
+
* document height and sends updates to the parent via `postMessage`.
|
|
15
32
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* and used as iframe content.
|
|
19
|
-
* 2. Otherwise, `srcDoc` is used as-is.
|
|
20
|
-
*
|
|
21
|
-
* The resulting content is wrapped in a minimal HTML document:
|
|
22
|
-
* `<!doctype html><html><body>...</body></html>`.
|
|
23
|
-
*
|
|
24
|
-
* ### Notes
|
|
25
|
-
* - The iframe content is static (no hydration, no client-side React inside iframe).
|
|
26
|
-
* - `children` overrides `srcDoc`.
|
|
27
|
-
* - Useful for embedding server-rendered UI fragments or documentation blocks.
|
|
33
|
+
* The parent component updates the iframe height via React state and `style`
|
|
34
|
+
* prop (no direct DOM mutation).
|
|
28
35
|
*
|
|
29
36
|
* @param props - Component properties.
|
|
30
37
|
* @see {@link Props}
|
|
31
|
-
* @returns A styled iframe element with computed HTML document content.
|
|
32
38
|
*/
|
|
33
|
-
export const Iframe = ({
|
|
39
|
+
export const Iframe = ({ autoHeight = false, className, srcDoc, style, ...iframeProps }) => {
|
|
40
|
+
const iframeRef = useRef(null);
|
|
41
|
+
const [height, setHeight] = useState(null);
|
|
42
|
+
const [innerMessageType] = useState(`_${randomHash(10)}`);
|
|
43
|
+
// Fx. dep. `autoHeight` - Handles messages from iframe content when autoHeight is enabled.
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (!autoHeight)
|
|
46
|
+
return;
|
|
47
|
+
const handleMessage = (event) => {
|
|
48
|
+
const iframe = iframeRef.current;
|
|
49
|
+
if (iframe === null
|
|
50
|
+
|| event.source !== iframe.contentWindow
|
|
51
|
+
|| typeof event.data !== 'object'
|
|
52
|
+
|| event.data === null
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
54
|
+
|| event.data.type !== innerMessageType
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
56
|
+
|| typeof event.data.height !== 'number')
|
|
57
|
+
return;
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-type-assertion -- event.data.height was already checked to be a number above; event.data is typed any by MessageEvent
|
|
59
|
+
setHeight(event.data.height);
|
|
60
|
+
};
|
|
61
|
+
window.addEventListener('message', handleMessage);
|
|
62
|
+
return () => window.removeEventListener('message', handleMessage);
|
|
63
|
+
}, [autoHeight]);
|
|
64
|
+
const iframeStyle = useMemo(() => {
|
|
65
|
+
const base = style ?? {};
|
|
66
|
+
if (!autoHeight || height === null)
|
|
67
|
+
return base;
|
|
68
|
+
return { ...base, height: `${height}px` };
|
|
69
|
+
}, [style, autoHeight, height]);
|
|
34
70
|
const c = clss(publicClassName, { cssModule });
|
|
35
71
|
const rootClss = mergeClassNames(c(), className);
|
|
36
72
|
const html = useMemo(() => {
|
|
37
|
-
const
|
|
38
|
-
?
|
|
39
|
-
:
|
|
40
|
-
return `<!doctype html
|
|
41
|
-
|
|
42
|
-
|
|
73
|
+
const autoHeightScript = autoHeight
|
|
74
|
+
? innerAutoHeightNitifier(innerMessageType)
|
|
75
|
+
: '';
|
|
76
|
+
return `<!doctype html>
|
|
77
|
+
<html>
|
|
78
|
+
<body>
|
|
79
|
+
${srcDoc ?? ''}
|
|
80
|
+
${autoHeightScript}
|
|
81
|
+
</body>
|
|
82
|
+
</html>
|
|
83
|
+
`;
|
|
84
|
+
}, [srcDoc, autoHeight]);
|
|
85
|
+
return _jsx("iframe", { ...iframeProps, ref: iframeRef, className: rootClss, style: iframeStyle, srcDoc: html });
|
|
43
86
|
};
|
|
@@ -40,8 +40,10 @@ export const Image = ({ sources, disclaimer, theatre, className, ...intrinsicImg
|
|
|
40
40
|
if (Array.isArray(sources)) {
|
|
41
41
|
if (sources.length === 0)
|
|
42
42
|
return [];
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element sampled just above; array is expected to be homogeneous
|
|
43
44
|
if (typeof sources[0] === 'string')
|
|
44
45
|
return sources.map(srcSet => ({ srcSet }));
|
|
46
|
+
// 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
|
|
45
47
|
return sources;
|
|
46
48
|
}
|
|
47
49
|
return [];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type FunctionComponent, type InputHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import type { WithClassName } from '../utils/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the {@link Input} component.
|
|
5
|
+
*
|
|
6
|
+
* Extends all native {@link InputHTMLAttributes} and {@link WithClassName}
|
|
7
|
+
* with optional label and error content.
|
|
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 input. When omitted, no error is rendered.
|
|
11
|
+
* @property className - Additional class name(s) applied to the root element.
|
|
12
|
+
*/
|
|
13
|
+
export type Props = InputHTMLAttributes<HTMLInputElement> & WithClassName<{
|
|
14
|
+
label?: ReactNode;
|
|
15
|
+
error?: ReactNode;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Controlled input field component.
|
|
19
|
+
*
|
|
20
|
+
* Renders a native `<input>` element with optional label and error feedback.
|
|
21
|
+
* The input value is entirely driven by the provided `value` prop and all
|
|
22
|
+
* native input attributes are forwarded to the underlying element.
|
|
23
|
+
*
|
|
24
|
+
* A stable auto-generated `id` is created on mount and used to associate the
|
|
25
|
+
* rendered label through the `htmlFor` attribute.
|
|
26
|
+
*
|
|
27
|
+
* ### CSS elements
|
|
28
|
+
* - `label`
|
|
29
|
+
* - `error`
|
|
30
|
+
*
|
|
31
|
+
* @param props - Component properties.
|
|
32
|
+
* @see {@link Props}
|
|
33
|
+
*
|
|
34
|
+
* @returns A labelled controlled input with optional error feedback.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* - The component does not manage its own value state.
|
|
38
|
+
* - Consumers are responsible for updating `value` in response to `onChange`.
|
|
39
|
+
* - Additional `className` values are merged with the component public class name
|
|
40
|
+
* and applied to the underlying `<input>` element.
|
|
41
|
+
*/
|
|
42
|
+
export declare const ControlledInput: 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 { input as publicClassName } from '../public-classnames.js';
|
|
7
|
+
import { mergeClassNames } from '../utils/index.js';
|
|
8
|
+
import cssModule from './styles.module.css';
|
|
9
|
+
/**
|
|
10
|
+
* Controlled input field component.
|
|
11
|
+
*
|
|
12
|
+
* Renders a native `<input>` element with optional label and error feedback.
|
|
13
|
+
* The input value is entirely driven by the provided `value` prop and all
|
|
14
|
+
* native input 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 input with optional error feedback.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* - The component does not manage its own value 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 `<input>` element.
|
|
33
|
+
*/
|
|
34
|
+
export const ControlledInput = ({ label, error, value, className, ...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("input", { ...rest, id: id, className: rootClss, 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 <input>; ignore or normalize if needed
|
|
52
|
+
}
|
|
53
|
+
} }), isNotFalsy(error) && _jsx("span", { className: c('error'), children: error })] });
|
|
54
|
+
};
|