@bpd-library/utilities 1.2.9 → 1.2.10-beta.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/config/oats-generator.config.js +2 -0
- package/dist/api/http.d.ts +1 -0
- package/dist/api/http.js +3 -2
- package/dist/api/http.js.map +1 -1
- package/dist/api/index.js +0 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api-utilities/compose-exclude-string.d.ts +3 -0
- package/dist/api-utilities/compose-exclude-string.js +5 -0
- package/dist/api-utilities/compose-exclude-string.js.map +1 -0
- package/dist/environment.d.ts +15 -3
- package/dist/environment.js +14 -14
- package/dist/environment.js.map +1 -1
- package/dist/esm/api/http.js +120 -0
- package/dist/esm/api/http.js.map +1 -0
- package/dist/esm/api/index.js +11 -0
- package/dist/esm/api/index.js.map +1 -0
- package/dist/esm/api-utilities/compose-exclude-string.js +6 -0
- package/dist/esm/api-utilities/compose-exclude-string.js.map +1 -0
- package/dist/esm/api-utilities/decimal-range/merge-decimal-range.js +13 -0
- package/dist/esm/api-utilities/decimal-range/merge-decimal-range.js.map +1 -0
- package/dist/esm/api-utilities/decimal-range/merge-specification-range.js +29 -0
- package/dist/esm/api-utilities/decimal-range/merge-specification-range.js.map +1 -0
- package/dist/esm/api-utilities/district-status.js +14 -0
- package/dist/esm/api-utilities/district-status.js.map +1 -0
- package/dist/esm/api-utilities/find-filter.js +41 -0
- package/dist/esm/api-utilities/find-filter.js.map +1 -0
- package/dist/esm/api-utilities/get/coordinates.js +31 -0
- package/dist/esm/api-utilities/get/coordinates.js.map +1 -0
- package/dist/esm/api-utilities/get/layer-raster.js +4 -0
- package/dist/esm/api-utilities/get/layer-raster.js.map +1 -0
- package/dist/esm/api-utilities/show-mortgage-price.js +11 -0
- package/dist/esm/api-utilities/show-mortgage-price.js.map +1 -0
- package/dist/esm/api-utilities/show-price.js +13 -0
- package/dist/esm/api-utilities/show-price.js.map +1 -0
- package/dist/esm/constants/index.js +7 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/date.js +11 -0
- package/dist/esm/date.js.map +1 -0
- package/dist/esm/debounce.js +25 -0
- package/dist/esm/debounce.js.map +1 -0
- package/dist/esm/dom/dom.js +9 -0
- package/dist/esm/dom/dom.js.map +1 -0
- package/dist/esm/environment.js +27 -0
- package/dist/esm/environment.js.map +1 -0
- package/dist/esm/extended-api-models/excluded-properties.js +36 -0
- package/dist/esm/extended-api-models/excluded-properties.js.map +1 -0
- package/dist/esm/extended-api-models/extended-area-projects.js +12 -0
- package/dist/esm/extended-api-models/extended-area-projects.js.map +1 -0
- package/dist/esm/extended-api-models/extended-area.js +182 -0
- package/dist/esm/extended-api-models/extended-area.js.map +1 -0
- package/dist/esm/extended-api-models/status/apartment-building-status.js +60 -0
- package/dist/esm/extended-api-models/status/apartment-building-status.js.map +1 -0
- package/dist/esm/extended-api-models/status/construction-number-status.js +20 -0
- package/dist/esm/extended-api-models/status/construction-number-status.js.map +1 -0
- package/dist/esm/extended-api-models/status/property-type-status.js +60 -0
- package/dist/esm/extended-api-models/status/property-type-status.js.map +1 -0
- package/dist/esm/extended-api-models/utilities/apartment-building-view.js +5 -0
- package/dist/esm/extended-api-models/utilities/apartment-building-view.js.map +1 -0
- package/dist/esm/extended-api-models/utilities/extended-model-price-range.js +37 -0
- package/dist/esm/extended-api-models/utilities/extended-model-price-range.js.map +1 -0
- package/dist/esm/extended-api-models/utilities/find-extended-object.js +23 -0
- package/dist/esm/extended-api-models/utilities/find-extended-object.js.map +1 -0
- package/dist/esm/extended-api-models/utilities/is-apartment.js +14 -0
- package/dist/esm/extended-api-models/utilities/is-apartment.js.map +1 -0
- package/dist/esm/function-is-true.js +13 -0
- package/dist/esm/function-is-true.js.map +1 -0
- package/dist/esm/generated/bpd-client.js +53 -0
- package/dist/esm/generated/bpd-client.js.map +1 -0
- package/dist/esm/geometry/country-bounding-box.js +14 -0
- package/dist/esm/geometry/country-bounding-box.js.map +1 -0
- package/dist/esm/geometry/geometry.js +65 -0
- package/dist/esm/geometry/geometry.js.map +1 -0
- package/dist/esm/hooks/use-click-outside.js +34 -0
- package/dist/esm/hooks/use-click-outside.js.map +1 -0
- package/dist/esm/hooks/use-form-changes.js +30 -0
- package/dist/esm/hooks/use-form-changes.js.map +1 -0
- package/dist/esm/hooks/use-history.js +15 -0
- package/dist/esm/hooks/use-history.js.map +1 -0
- package/dist/esm/hooks/use-keyboard-focus.js +14 -0
- package/dist/esm/hooks/use-keyboard-focus.js.map +1 -0
- package/dist/esm/hooks/use-lazy.js +47 -0
- package/dist/esm/hooks/use-lazy.js.map +1 -0
- package/dist/esm/hooks/use-map-storage.js +16 -0
- package/dist/esm/hooks/use-map-storage.js.map +1 -0
- package/dist/esm/hooks/use-scroll-position.js +23 -0
- package/dist/esm/hooks/use-scroll-position.js.map +1 -0
- package/dist/esm/hooks/use-scroll-to.js +66 -0
- package/dist/esm/hooks/use-scroll-to.js.map +1 -0
- package/dist/esm/hooks/use-stylesheet.js +8 -0
- package/dist/esm/hooks/use-stylesheet.js.map +1 -0
- package/dist/esm/hooks/use-url-params.js +31 -0
- package/dist/esm/hooks/use-url-params.js.map +1 -0
- package/dist/esm/index.js +40 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/is-touch.js +32 -0
- package/dist/esm/is-touch.js.map +1 -0
- package/dist/esm/media-query/breakpoints.js +29 -0
- package/dist/esm/media-query/breakpoints.js.map +1 -0
- package/dist/esm/media-query/media-query.js +39 -0
- package/dist/esm/media-query/media-query.js.map +1 -0
- package/dist/esm/media-query/utils/index.js +35 -0
- package/dist/esm/media-query/utils/index.js.map +1 -0
- package/dist/esm/raf-throttle.js +24 -0
- package/dist/esm/raf-throttle.js.map +1 -0
- package/dist/esm/throttle.js +23 -0
- package/dist/esm/throttle.js.map +1 -0
- package/dist/esm/to-currency.js +26 -0
- package/dist/esm/to-currency.js.map +1 -0
- package/dist/extended-api-models/excluded-properties.d.ts +5 -0
- package/dist/extended-api-models/excluded-properties.js +35 -0
- package/dist/extended-api-models/excluded-properties.js.map +1 -0
- package/dist/generated/bpd-client.d.ts +71 -8
- package/dist/generated/bpd-client.js +21 -13
- package/dist/generated/bpd-client.js.map +1 -1
- package/dist/hooks/use-stylesheet.d.ts +1 -0
- package/dist/hooks/use-stylesheet.js +5 -0
- package/dist/hooks/use-stylesheet.js.map +1 -0
- package/dist/lib/api/http.js +117 -0
- package/dist/lib/api/http.js.map +1 -0
- package/dist/lib/api/index.js +8 -0
- package/dist/lib/api/index.js.map +1 -0
- package/dist/lib/api-utilities/api-utilities.js +9 -0
- package/dist/lib/api-utilities/api-utilities.js.map +1 -0
- package/dist/lib/api-utilities/api-utilities.test.js +122 -0
- package/dist/lib/api-utilities/api-utilities.test.js.map +1 -0
- package/dist/lib/api-utilities/api-utilities.types.js +1 -0
- package/dist/lib/api-utilities/api-utilities.types.js.map +1 -0
- package/dist/lib/api-utilities/compose-exclude-string.js +5 -0
- package/dist/lib/api-utilities/compose-exclude-string.js.map +1 -0
- package/dist/lib/api-utilities/decimal-range/merge-decimal-range.js +12 -0
- package/dist/lib/api-utilities/decimal-range/merge-decimal-range.js.map +1 -0
- package/dist/lib/api-utilities/decimal-range/merge-specification-range.js +27 -0
- package/dist/lib/api-utilities/decimal-range/merge-specification-range.js.map +1 -0
- package/dist/lib/api-utilities/district-status.js +13 -0
- package/dist/lib/api-utilities/district-status.js.map +1 -0
- package/dist/lib/api-utilities/find-filter.js +40 -0
- package/dist/lib/api-utilities/find-filter.js.map +1 -0
- package/dist/lib/api-utilities/get/coordinates.js +29 -0
- package/dist/lib/api-utilities/get/coordinates.js.map +1 -0
- package/dist/lib/api-utilities/get/layer-raster.js +3 -0
- package/dist/lib/api-utilities/get/layer-raster.js.map +1 -0
- package/dist/lib/api-utilities/index.js +2 -0
- package/dist/lib/api-utilities/index.js.map +1 -0
- package/dist/lib/api-utilities/show-mortgage-price.js +10 -0
- package/dist/lib/api-utilities/show-mortgage-price.js.map +1 -0
- package/dist/lib/api-utilities/show-price.js +12 -0
- package/dist/lib/api-utilities/show-price.js.map +1 -0
- package/dist/lib/constants/index.js +5 -0
- package/dist/lib/constants/index.js.map +1 -0
- package/dist/lib/date.js +10 -0
- package/dist/lib/date.js.map +1 -0
- package/dist/lib/debounce.js +23 -0
- package/dist/lib/debounce.js.map +1 -0
- package/dist/lib/dom/dom.js +7 -0
- package/dist/lib/dom/dom.js.map +1 -0
- package/dist/lib/dom/index.js +2 -0
- package/dist/lib/dom/index.js.map +1 -0
- package/dist/lib/environment.js +25 -0
- package/dist/lib/environment.js.map +1 -0
- package/dist/lib/extended-api-models/excluded-properties.js +35 -0
- package/dist/lib/extended-api-models/excluded-properties.js.map +1 -0
- package/dist/lib/extended-api-models/extended-area-projects.js +10 -0
- package/dist/lib/extended-api-models/extended-area-projects.js.map +1 -0
- package/dist/lib/extended-api-models/extended-area.js +179 -0
- package/dist/lib/extended-api-models/extended-area.js.map +1 -0
- package/dist/lib/extended-api-models/index.js +7 -0
- package/dist/lib/extended-api-models/index.js.map +1 -0
- package/dist/lib/extended-api-models/status/apartment-building-status.js +58 -0
- package/dist/lib/extended-api-models/status/apartment-building-status.js.map +1 -0
- package/dist/lib/extended-api-models/status/construction-number-status.js +19 -0
- package/dist/lib/extended-api-models/status/construction-number-status.js.map +1 -0
- package/dist/lib/extended-api-models/status/property-type-status.js +58 -0
- package/dist/lib/extended-api-models/status/property-type-status.js.map +1 -0
- package/dist/lib/extended-api-models/utilities/apartment-building-view.js +4 -0
- package/dist/lib/extended-api-models/utilities/apartment-building-view.js.map +1 -0
- package/dist/lib/extended-api-models/utilities/extended-model-price-range.js +35 -0
- package/dist/lib/extended-api-models/utilities/extended-model-price-range.js.map +1 -0
- package/dist/lib/extended-api-models/utilities/find-extended-object.js +21 -0
- package/dist/lib/extended-api-models/utilities/find-extended-object.js.map +1 -0
- package/dist/lib/extended-api-models/utilities/is-apartment.js +13 -0
- package/dist/lib/extended-api-models/utilities/is-apartment.js.map +1 -0
- package/dist/lib/function-is-true.js +11 -0
- package/dist/lib/function-is-true.js.map +1 -0
- package/dist/lib/generated/bpd-client.js +50 -0
- package/dist/lib/generated/bpd-client.js.map +1 -0
- package/dist/lib/generated/index.js +2 -0
- package/dist/lib/generated/index.js.map +1 -0
- package/dist/lib/geometry/country-bounding-box.js +12 -0
- package/dist/lib/geometry/country-bounding-box.js.map +1 -0
- package/dist/lib/geometry/geometry.js +64 -0
- package/dist/lib/geometry/geometry.js.map +1 -0
- package/dist/lib/geometry/geometry.test.js +87 -0
- package/dist/lib/geometry/geometry.test.js.map +1 -0
- package/dist/lib/geometry/index.js +3 -0
- package/dist/lib/geometry/index.js.map +1 -0
- package/dist/lib/hooks/index.js +11 -0
- package/dist/lib/hooks/index.js.map +1 -0
- package/dist/lib/hooks/use-click-outside.js +32 -0
- package/dist/lib/hooks/use-click-outside.js.map +1 -0
- package/dist/lib/hooks/use-delegate-listen.js +10 -0
- package/dist/lib/hooks/use-delegate-listen.js.map +1 -0
- package/dist/lib/hooks/use-form-changes.js +27 -0
- package/dist/lib/hooks/use-form-changes.js.map +1 -0
- package/dist/lib/hooks/use-history.js +13 -0
- package/dist/lib/hooks/use-history.js.map +1 -0
- package/dist/lib/hooks/use-input.js +28 -0
- package/dist/lib/hooks/use-input.js.map +1 -0
- package/dist/lib/hooks/use-keyboard-focus.js +11 -0
- package/dist/lib/hooks/use-keyboard-focus.js.map +1 -0
- package/dist/lib/hooks/use-lazy.js +44 -0
- package/dist/lib/hooks/use-lazy.js.map +1 -0
- package/dist/lib/hooks/use-map-storage.js +14 -0
- package/dist/lib/hooks/use-map-storage.js.map +1 -0
- package/dist/lib/hooks/use-scroll-position.js +20 -0
- package/dist/lib/hooks/use-scroll-position.js.map +1 -0
- package/dist/lib/hooks/use-scroll-to.js +64 -0
- package/dist/lib/hooks/use-scroll-to.js.map +1 -0
- package/dist/lib/hooks/use-stylesheet.js +5 -0
- package/dist/lib/hooks/use-stylesheet.js.map +1 -0
- package/dist/lib/hooks/use-text.js +16 -0
- package/dist/lib/hooks/use-text.js.map +1 -0
- package/dist/lib/hooks/use-url-params.js +28 -0
- package/dist/lib/hooks/use-url-params.js.map +1 -0
- package/dist/lib/index.js +18 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/is-touch.js +30 -0
- package/dist/lib/is-touch.js.map +1 -0
- package/dist/lib/media-query/breakpoints.js +27 -0
- package/dist/lib/media-query/breakpoints.js.map +1 -0
- package/dist/lib/media-query/index.js +2 -0
- package/dist/lib/media-query/index.js.map +1 -0
- package/dist/lib/media-query/media-query.js +36 -0
- package/dist/lib/media-query/media-query.js.map +1 -0
- package/dist/lib/media-query/media-query.types.js +1 -0
- package/dist/lib/media-query/media-query.types.js.map +1 -0
- package/dist/lib/media-query/utils/index.js +32 -0
- package/dist/lib/media-query/utils/index.js.map +1 -0
- package/dist/lib/raf-throttle.js +22 -0
- package/dist/lib/raf-throttle.js.map +1 -0
- package/dist/lib/throttle.js +22 -0
- package/dist/lib/throttle.js.map +1 -0
- package/dist/lib/to-currency.js +24 -0
- package/dist/lib/to-currency.js.map +1 -0
- package/dist/types/api/http.d.ts +47 -0
- package/dist/types/api/index.d.ts +2 -0
- package/dist/types/api-utilities/api-utilities.d.ts +8 -0
- package/dist/types/api-utilities/api-utilities.test.d.ts +1 -0
- package/dist/types/api-utilities/api-utilities.types.d.ts +46 -0
- package/dist/types/api-utilities/compose-exclude-string.d.ts +3 -0
- package/dist/types/api-utilities/decimal-range/merge-decimal-range.d.ts +3 -0
- package/dist/types/api-utilities/decimal-range/merge-specification-range.d.ts +13 -0
- package/dist/types/api-utilities/district-status.d.ts +3 -0
- package/dist/types/api-utilities/find-filter.d.ts +32 -0
- package/dist/types/api-utilities/get/coordinates.d.ts +6 -0
- package/dist/types/api-utilities/get/layer-raster.d.ts +3 -0
- package/dist/types/api-utilities/index.d.ts +1 -0
- package/dist/types/api-utilities/show-mortgage-price.d.ts +3 -0
- package/dist/types/api-utilities/show-price.d.ts +7 -0
- package/dist/types/constants/index.d.ts +4 -0
- package/dist/types/date.d.ts +3 -0
- package/dist/types/debounce.d.ts +5 -0
- package/dist/types/dom/dom.d.ts +6 -0
- package/dist/types/dom/index.d.ts +1 -0
- package/dist/types/environment.d.ts +9 -0
- package/dist/types/extended-api-models/excluded-properties.d.ts +5 -0
- package/dist/types/extended-api-models/extended-area-projects.d.ts +3 -0
- package/dist/types/extended-api-models/extended-area.d.ts +13 -0
- package/dist/types/extended-api-models/index.d.ts +6 -0
- package/dist/types/extended-api-models/status/apartment-building-status.d.ts +3 -0
- package/dist/types/extended-api-models/status/construction-number-status.d.ts +3 -0
- package/dist/types/extended-api-models/status/property-type-status.d.ts +4 -0
- package/dist/types/extended-api-models/utilities/apartment-building-view.d.ts +4 -0
- package/dist/types/extended-api-models/utilities/extended-model-price-range.d.ts +4 -0
- package/dist/types/extended-api-models/utilities/find-extended-object.d.ts +4 -0
- package/dist/types/extended-api-models/utilities/is-apartment.d.ts +11 -0
- package/dist/types/function-is-true.d.ts +1 -0
- package/dist/types/generated/bpd-client.d.ts +808 -0
- package/dist/types/generated/index.d.ts +1 -0
- package/dist/types/geometry/country-bounding-box.d.ts +6 -0
- package/dist/types/geometry/geometry.d.ts +11 -0
- package/dist/types/geometry/geometry.test.d.ts +8 -0
- package/dist/types/geometry/index.d.ts +2 -0
- package/dist/types/hooks/index.d.ts +10 -0
- package/dist/types/hooks/use-click-outside.d.ts +6 -0
- package/dist/types/hooks/use-delegate-listen.d.ts +6 -0
- package/dist/types/hooks/use-form-changes.d.ts +12 -0
- package/dist/types/hooks/use-history.d.ts +4 -0
- package/dist/types/hooks/use-input.d.ts +41 -0
- package/dist/types/hooks/use-keyboard-focus.d.ts +6 -0
- package/dist/types/hooks/use-lazy.d.ts +21 -0
- package/dist/types/hooks/use-map-storage.d.ts +6 -0
- package/dist/types/hooks/use-scroll-position.d.ts +10 -0
- package/dist/types/hooks/use-scroll-to.d.ts +8 -0
- package/dist/types/hooks/use-stylesheet.d.ts +1 -0
- package/dist/types/hooks/use-text.d.ts +1 -0
- package/dist/types/hooks/use-url-params.d.ts +5 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/is-touch.d.ts +8 -0
- package/dist/types/media-query/breakpoints.d.ts +26 -0
- package/dist/types/media-query/index.d.ts +1 -0
- package/dist/types/media-query/media-query.d.ts +13 -0
- package/dist/types/media-query/media-query.types.d.ts +14 -0
- package/dist/types/media-query/utils/index.d.ts +3 -0
- package/dist/types/raf-throttle.d.ts +4 -0
- package/dist/types/throttle.d.ts +2 -0
- package/dist/types/to-currency.d.ts +3 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-scroll-position.js","sourceRoot":"","sources":["../../../src/hooks/use-scroll-position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAoB9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,QAAqE,EACrE,SAAmB,EACrB,EAAE;IACA,MAAM,QAAQ,GAAG,MAAM,CAAiB,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtE,SAAS,iBAAiB;QACtB,MAAM,eAAe,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrD,QAAQ,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9D,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAC;IACvC,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAEhD,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAOF,SAAS,iBAAiB,CAAC,SAA8B;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAEhD,OAAO,SAAS;QACZ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE;QAC1C,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;AAChD,CAAC","sourcesContent":["import { useListen, useRef } from '@atomify/hooks';\n\nimport { rafThrottle } from '../raf-throttle';\n\ntype ScrollPosition = { x: number; y: number };\nexport type ScrollCallback = {\n prevPosition: ScrollPosition;\n currentPosition: ScrollPosition;\n};\n\n/**\n * Hook that returns the browser viewport X and Y scroll position.\n * @param {({\n * currentPosition,\n * prevPosition,\n * }: {\n * prevPosition: ScrollPosition;\n * currentPosition: ScrollPosition;\n * }) => void} callback\n * @param {boolean} [useWindow]\n * @param {number} [wait]\n */\nexport const useScrollPosition = (\n callback: ({ currentPosition, prevPosition }: ScrollCallback) => void,\n useWindow?: boolean,\n) => {\n const position = useRef<ScrollPosition>(getScrollPosition(useWindow));\n\n function setScrollPosition() {\n const currentPosition = getScrollPosition(useWindow);\n callback({ prevPosition: position.current, currentPosition });\n position.current = currentPosition;\n }\n\n const throttle = rafThrottle(setScrollPosition);\n\n useListen(window, 'scroll', throttle);\n};\n\n/**\n * Returns the current scroll position\n * @param {(boolean | undefined)} useWindow\n * @returns\n */\nfunction getScrollPosition(useWindow: boolean | undefined) {\n const target = document.body;\n const position = target.getBoundingClientRect();\n\n return useWindow\n ? { x: window.scrollX, y: window.scrollY }\n : { x: position.left, y: position.top };\n}\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const ST_DURATION = 500;
|
|
2
|
+
const ST_OFFSET = 50;
|
|
3
|
+
export const useScrollTo = (options = {}) => {
|
|
4
|
+
function to(target) {
|
|
5
|
+
const scrollConfig = {
|
|
6
|
+
position: target.getBoundingClientRect(),
|
|
7
|
+
offset: options.offset || ST_OFFSET,
|
|
8
|
+
duration: options.duration || ST_DURATION,
|
|
9
|
+
scrollElement: options.scrollElement || null,
|
|
10
|
+
delay: options.delay || 0,
|
|
11
|
+
};
|
|
12
|
+
return scrollTo(scrollConfig);
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
function scrollTo({ position, offset, duration, scrollElement, delay, }) {
|
|
17
|
+
return new Promise(resolve => {
|
|
18
|
+
const scrollPosition = window.scrollY === undefined ? window.pageYOffset : window.scrollY;
|
|
19
|
+
const to = parseInt((position.top + scrollPosition - offset).toFixed(0), 10);
|
|
20
|
+
const start = scrollElement
|
|
21
|
+
? scrollElement.scrollTop
|
|
22
|
+
: Math.max(document.body.scrollTop, document.documentElement.scrollTop);
|
|
23
|
+
const change = to - start;
|
|
24
|
+
let currentTime = 0;
|
|
25
|
+
const increment = 10;
|
|
26
|
+
const direction = to > start ? 1 : 0;
|
|
27
|
+
let timeout;
|
|
28
|
+
const animate = () => {
|
|
29
|
+
currentTime += increment;
|
|
30
|
+
const val = parseInt(easeInOutQuad(currentTime, start, change, duration).toFixed(0), 10);
|
|
31
|
+
if (scrollElement) {
|
|
32
|
+
scrollElement.scrollTop = val;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
document.body.scrollTop = val;
|
|
36
|
+
document.documentElement.scrollTop = val;
|
|
37
|
+
}
|
|
38
|
+
if ((val >= to && direction === 1) || (val <= to && direction === 0)) {
|
|
39
|
+
resolve();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
requestAnimationFrame(animate);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
if (delay > 0) {
|
|
46
|
+
timeout = setTimeout(() => {
|
|
47
|
+
animate();
|
|
48
|
+
clearTimeout(timeout);
|
|
49
|
+
}, delay);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
animate();
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function easeInOutQuad(t, b, c, d) {
|
|
57
|
+
t /= d / 2;
|
|
58
|
+
if (t < 1) {
|
|
59
|
+
return (c / 2) * t * t + b;
|
|
60
|
+
}
|
|
61
|
+
t--;
|
|
62
|
+
return (-c / 2) * (t * (t - 2) - 1) + b;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=use-scroll-to.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-scroll-to.js","sourceRoot":"","sources":["../../../src/hooks/use-scroll-to.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,SAAS,GAAG,EAAE,CAAC;AASrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAyB,EAAE,EAAE,EAAE;IACvD,SAAS,EAAE,CAAC,MAAmB;QAC3B,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,MAAM,CAAC,qBAAqB,EAAE;YACxC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;YAC5C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;SAC5B,CAAC;QAEF,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAiBF,SAAS,QAAQ,CAAC,EACd,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,aAAa,EACb,KAAK,GAOR;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1F,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,aAAa;YACvB,CAAC,CAAC,aAAa,CAAC,SAAS;YACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,OAAY,CAAC;QAEjB,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,WAAW,IAAI,SAAS,CAAC;YACzB,MAAM,GAAG,GAAG,QAAQ,CAChB,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9D,EAAE,CACL,CAAC;YAEF,IAAI,aAAa,EAAE;gBACf,aAAa,CAAC,SAAS,GAAG,GAAG,CAAC;aACjC;iBAAM;gBACH,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC9B,QAAQ,CAAC,eAAe,CAAC,SAAS,GAAG,GAAG,CAAC;aAC5C;YAED,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gBAClE,OAAO,EAAE,CAAC;aACb;iBAAM;gBACH,qBAAqB,CAAC,OAAO,CAAC,CAAC;aAClC;QACL,CAAC,CAAC;QAEF,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,OAAO,EAAE,CAAC;gBACV,YAAY,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC,EAAE,KAAK,CAAC,CAAC;SACb;aAAM;YACH,OAAO,EAAE,CAAC;SACb;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAC7D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACX,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;IACD,CAAC,EAAE,CAAC;IACJ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["const ST_DURATION = 500;\nconst ST_OFFSET = 50;\n\ninterface ScrollOptions {\n offset?: number;\n duration?: number;\n scrollElement?: HTMLElement;\n delay?: number;\n}\n\nexport const useScrollTo = (options: ScrollOptions = {}) => {\n function to(target: HTMLElement) {\n const scrollConfig = {\n position: target.getBoundingClientRect(),\n offset: options.offset || ST_OFFSET,\n duration: options.duration || ST_DURATION,\n scrollElement: options.scrollElement || null,\n delay: options.delay || 0,\n };\n\n return scrollTo(scrollConfig);\n }\n\n return to;\n};\n\n/**\n * Scrolls to an element\n * @param {({\n * position: DOMRect;\n * offset: number;\n * duration: number;\n * scrollElement: HTMLElement | null;\n * })} {\n * position,\n * offset,\n * duration,\n * scrollElement,\n * }\n * @returns\n */\nfunction scrollTo({\n position,\n offset,\n duration,\n scrollElement,\n delay,\n}: {\n position: DOMRect;\n offset: number;\n duration: number;\n scrollElement: HTMLElement | null;\n delay: number;\n}) {\n return new Promise(resolve => {\n const scrollPosition = window.scrollY === undefined ? window.pageYOffset : window.scrollY;\n const to = parseInt((position.top + scrollPosition - offset).toFixed(0), 10);\n const start = scrollElement\n ? scrollElement.scrollTop\n : Math.max(document.body.scrollTop, document.documentElement.scrollTop);\n const change = to - start;\n let currentTime = 0;\n const increment = 10;\n const direction = to > start ? 1 : 0;\n\n let timeout: any;\n\n const animate = () => {\n currentTime += increment;\n const val = parseInt(\n easeInOutQuad(currentTime, start, change, duration).toFixed(0),\n 10,\n );\n\n if (scrollElement) {\n scrollElement.scrollTop = val;\n } else {\n document.body.scrollTop = val;\n document.documentElement.scrollTop = val;\n }\n\n if ((val >= to && direction === 1) || (val <= to && direction === 0)) {\n resolve();\n } else {\n requestAnimationFrame(animate);\n }\n };\n\n if (delay > 0) {\n timeout = setTimeout(() => {\n animate();\n clearTimeout(timeout);\n }, delay);\n } else {\n animate();\n }\n });\n}\n\nfunction easeInOutQuad(t: number, b: number, c: number, d: number) {\n t /= d / 2;\n if (t < 1) {\n return (c / 2) * t * t + b;\n }\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-stylesheet.js","sourceRoot":"","sources":["../../../src/hooks/use-stylesheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMtD,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import { unsafeCSS, useStyles } from '@atomify/hooks';\n/**\n * Add styling through imported css files (Webpack)\n * @export\n * @param {string} style\n */\nexport function useStylesheet(style: string) {\n useStyles(() => unsafeCSS(style));\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function useText(initialValue) {
|
|
2
|
+
const text = new Text();
|
|
3
|
+
Object.defineProperty(text, 'toString', {
|
|
4
|
+
value() {
|
|
5
|
+
return this.textContent;
|
|
6
|
+
},
|
|
7
|
+
});
|
|
8
|
+
function setText(value) {
|
|
9
|
+
text.textContent = value;
|
|
10
|
+
}
|
|
11
|
+
if (initialValue != null) {
|
|
12
|
+
setText(initialValue);
|
|
13
|
+
}
|
|
14
|
+
return [text, setText];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=use-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-text.js","sourceRoot":"","sources":["../../../src/hooks/use-text.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,YAAqB;IACzC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;QACpC,KAAK;YACD,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;KACJ,CAAC,CAAC;IACH,SAAS,OAAO,CAAC,KAAa;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,YAAY,IAAI,IAAI,EAAE;QACtB,OAAO,CAAC,YAAY,CAAC,CAAC;KACzB;IACD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;AACpC,CAAC","sourcesContent":["export function useText(initialValue?: string) {\n const text = new Text();\n Object.defineProperty(text, 'toString', {\n value() {\n return this.textContent;\n },\n });\n function setText(value: string) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText] as const;\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import QueryString from 'query-string';
|
|
2
|
+
import { useHistory } from './use-history';
|
|
3
|
+
export const useUrlParams = () => {
|
|
4
|
+
function pushParams(param, value) {
|
|
5
|
+
const { push } = useHistory();
|
|
6
|
+
const url = window.location.href.split('?');
|
|
7
|
+
const parsed = QueryString.parse(location.search);
|
|
8
|
+
parsed[param] = value;
|
|
9
|
+
const stringified = QueryString.stringify(parsed);
|
|
10
|
+
const pageUrl = `${url[0]}?${stringified}`;
|
|
11
|
+
push(pageUrl);
|
|
12
|
+
}
|
|
13
|
+
function getParams(param) {
|
|
14
|
+
const parsed = QueryString.parse(location.search);
|
|
15
|
+
return parsed[param];
|
|
16
|
+
}
|
|
17
|
+
function clearParams() {
|
|
18
|
+
const { push } = useHistory();
|
|
19
|
+
const url = window.location.href.split('?');
|
|
20
|
+
push(url[0]);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
push: pushParams,
|
|
24
|
+
get: getParams,
|
|
25
|
+
clear: clearParams,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=use-url-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-url-params.js","sourceRoot":"","sources":["../../../src/hooks/use-url-params.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAEtB,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,SAAS,CAAC,KAAa;QAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,WAAW;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,WAAW;KACrB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import QueryString from 'query-string';\n\nimport { useHistory } from './use-history';\n\nexport const useUrlParams = () => {\n function pushParams(param: string, value: string) {\n const { push } = useHistory();\n const url = window.location.href.split('?');\n\n const parsed = QueryString.parse(location.search);\n\n parsed[param] = value;\n\n const stringified = QueryString.stringify(parsed);\n const pageUrl = `${url[0]}?${stringified}`;\n\n push(pageUrl);\n }\n\n function getParams(param: string) {\n const parsed = QueryString.parse(location.search);\n\n return parsed[param];\n }\n\n function clearParams() {\n const { push } = useHistory();\n const url = window.location.href.split('?');\n\n push(url[0]);\n }\n\n return {\n push: pushParams,\n get: getParams,\n clear: clearParams,\n };\n};\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './api';
|
|
2
|
+
export * from './generated';
|
|
3
|
+
export * from './dom';
|
|
4
|
+
export * from './hooks';
|
|
5
|
+
export * from './constants';
|
|
6
|
+
export * from './debounce';
|
|
7
|
+
export * from './is-touch';
|
|
8
|
+
export * from './environment';
|
|
9
|
+
export * from './raf-throttle';
|
|
10
|
+
export * from './media-query';
|
|
11
|
+
export * from './function-is-true';
|
|
12
|
+
export * from './api-utilities';
|
|
13
|
+
export * from './geometry';
|
|
14
|
+
export * from './date';
|
|
15
|
+
export * from './to-currency';
|
|
16
|
+
export * from './extended-api-models';
|
|
17
|
+
export * from './throttle';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC","sourcesContent":["// Export all utilties\nexport * from './api';\nexport * from './generated';\nexport * from './dom';\nexport * from './hooks';\nexport * from './constants';\nexport * from './debounce';\nexport * from './is-touch';\nexport * from './environment';\nexport * from './raf-throttle';\nexport * from './media-query';\nexport * from './function-is-true';\nexport * from './api-utilities';\nexport * from './geometry';\nexport * from './date';\nexport * from './to-currency';\nexport * from './extended-api-models';\nexport * from './throttle';\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const IS_TOUCH = 'is-touch';
|
|
2
|
+
const WITH_MOUSE = `${IS_TOUCH}--with-mouse`;
|
|
3
|
+
const html = document.documentElement;
|
|
4
|
+
export class DetectTouch {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.hasMouse = false;
|
|
7
|
+
this.touch =
|
|
8
|
+
'ontouchstart' in html ||
|
|
9
|
+
navigator.maxTouchPoints > 0 ||
|
|
10
|
+
navigator.msMaxTouchPoints > 0;
|
|
11
|
+
html.addEventListener('touchstart', () => {
|
|
12
|
+
html.removeEventListener('mousemove', () => this.handleMouseEvent());
|
|
13
|
+
});
|
|
14
|
+
html.addEventListener('mousemove', () => this.handleMouseEvent());
|
|
15
|
+
if (this.touch) {
|
|
16
|
+
html.classList.add(IS_TOUCH);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
get isTouchDevice() {
|
|
20
|
+
return this.touch;
|
|
21
|
+
}
|
|
22
|
+
handleMouseEvent() {
|
|
23
|
+
if (!this.hasMouse && html.classList.contains(IS_TOUCH)) {
|
|
24
|
+
html.classList.add(WITH_MOUSE);
|
|
25
|
+
this.hasMouse = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const detectTouch = new DetectTouch();
|
|
30
|
+
//# sourceMappingURL=is-touch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-touch.js","sourceRoot":"","sources":["../../src/is-touch.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,UAAU,GAAG,GAAG,QAAQ,cAAc,CAAC;AAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;AAEtC,MAAM,OAAO,WAAW;IAQpB;QACI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK;YACN,cAAc,IAAI,IAAI;gBACtB,SAAS,CAAC,cAAc,GAAG,CAAC;gBAC5B,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAChC;IACL,CAAC;IApBD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAoBD,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;IACL,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC","sourcesContent":["const IS_TOUCH = 'is-touch';\nconst WITH_MOUSE = `${IS_TOUCH}--with-mouse`;\nconst html = document.documentElement;\n\nexport class DetectTouch {\n touch: boolean;\n hasMouse: boolean;\n\n get isTouchDevice() {\n return this.touch;\n }\n\n constructor() {\n this.hasMouse = false;\n this.touch =\n 'ontouchstart' in html ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints > 0;\n\n html.addEventListener('touchstart', () => {\n html.removeEventListener('mousemove', () => this.handleMouseEvent());\n });\n\n html.addEventListener('mousemove', () => this.handleMouseEvent());\n\n if (this.touch) {\n html.classList.add(IS_TOUCH);\n }\n }\n\n handleMouseEvent() {\n if (!this.hasMouse && html.classList.contains(IS_TOUCH)) {\n html.classList.add(WITH_MOUSE);\n this.hasMouse = true;\n }\n }\n}\n\nexport const detectTouch = new DetectTouch();\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const breakpoints = {
|
|
2
|
+
mobile: {
|
|
3
|
+
size: 320,
|
|
4
|
+
active: false,
|
|
5
|
+
},
|
|
6
|
+
mobilePlus: {
|
|
7
|
+
size: 480,
|
|
8
|
+
active: false,
|
|
9
|
+
},
|
|
10
|
+
tabletPortrait: {
|
|
11
|
+
size: 768,
|
|
12
|
+
active: false,
|
|
13
|
+
},
|
|
14
|
+
tabletLandscape: {
|
|
15
|
+
size: 1024,
|
|
16
|
+
active: false,
|
|
17
|
+
},
|
|
18
|
+
laptop: {
|
|
19
|
+
size: 1260,
|
|
20
|
+
active: false,
|
|
21
|
+
},
|
|
22
|
+
desktop: {
|
|
23
|
+
size: 1600,
|
|
24
|
+
active: false,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=breakpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../../../src/media-query/breakpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,MAAM,EAAE;QACJ,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;KAChB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;KAChB;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;KAChB;IACD,eAAe,EAAE;QACb,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;KAChB;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;KAChB;IACD,OAAO,EAAE;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;KAChB;CACJ,CAAC","sourcesContent":["export const breakpoints = {\n mobile: {\n size: 320,\n active: false,\n },\n mobilePlus: {\n size: 480,\n active: false,\n },\n tabletPortrait: {\n size: 768,\n active: false,\n },\n tabletLandscape: {\n size: 1024,\n active: false,\n },\n laptop: {\n size: 1260,\n active: false,\n },\n desktop: {\n size: 1600,\n active: false,\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/media-query/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC","sourcesContent":["export * from './media-query';\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { breakpoints } from './breakpoints';
|
|
2
|
+
import { getMediaQueries, getSizeFromBreakpoint } from './utils';
|
|
3
|
+
const max = (breakpoint) => `(max-width: ${getSizeFromBreakpoint(breakpoint)}px)`;
|
|
4
|
+
const min = (breakpoint) => `(min-width: ${getSizeFromBreakpoint(breakpoint)}px)`;
|
|
5
|
+
export const mediaIsMatch = (breakpoint) => window.matchMedia(breakpoint).matches;
|
|
6
|
+
export const deviceWidth = {
|
|
7
|
+
isMobilePlusAndSmaller: mediaIsMatch(`${min('mobile')} and ${max('mobilePlus')}`),
|
|
8
|
+
isTabletPortraitAndSmaller: mediaIsMatch(`${min('mobile')} and ${max('tabletPortrait')}`),
|
|
9
|
+
};
|
|
10
|
+
const mediaWatcher = (mediaQuery, layoutChangedCallback) => {
|
|
11
|
+
const mediaQueryListener = window.matchMedia(mediaQuery);
|
|
12
|
+
mediaQueryListener.addListener((e) => layoutChangedCallback(e.matches));
|
|
13
|
+
layoutChangedCallback(mediaQueryListener.matches);
|
|
14
|
+
};
|
|
15
|
+
const getCurrentBreakpoint = () => getMediaQueries().reduce((previous, current) => window.matchMedia(current.query()).matches ? current.breakpoint : previous, undefined);
|
|
16
|
+
const useMedia = (callback) => {
|
|
17
|
+
const breakpointObject = getMediaQueries();
|
|
18
|
+
breakpointObject
|
|
19
|
+
.map((breakpoint) => {
|
|
20
|
+
return {
|
|
21
|
+
listener: window.matchMedia(breakpoint.query()),
|
|
22
|
+
breakpoint: breakpoint.breakpoint,
|
|
23
|
+
};
|
|
24
|
+
})
|
|
25
|
+
.forEach((breakpoint) => breakpoint.listener.addListener((e) => handleMediaListeners(e, breakpoint.breakpoint)));
|
|
26
|
+
function handleMediaListeners(event, key) {
|
|
27
|
+
if (!event.matches)
|
|
28
|
+
return;
|
|
29
|
+
Object.keys(breakpoints).forEach((item) => (breakpoints[item].active =
|
|
30
|
+
item === key ? event.matches : !event.matches));
|
|
31
|
+
callback(breakpoints);
|
|
32
|
+
}
|
|
33
|
+
callback(breakpoints);
|
|
34
|
+
};
|
|
35
|
+
export { breakpoints, min, max, useMedia, mediaWatcher, getCurrentBreakpoint };
|
|
36
|
+
//# sourceMappingURL=media-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-query.js","sourceRoot":"","sources":["../../../src/media-query/media-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,GAAG,GAAuB,CAAC,UAAU,EAAE,EAAE,CAC3C,eAAe,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC;AAE1D,MAAM,GAAG,GAAuB,CAAC,UAAU,EAAE,EAAE,CAC3C,eAAe,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC;AAM1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;AAE1F,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,sBAAsB,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;IACjF,0BAA0B,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;CAC5F,CAAC;AAWF,MAAM,YAAY,GAAG,CACjB,UAAkB,EAClB,qBAA2D,EAC7D,EAAE;IACA,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzD,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC,CAAC;AAMF,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAC9B,eAAe,EAAE,CAAC,MAAM,CACpB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAClB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAE,QAAgB,EACvF,SAAS,CACZ,CAAC;AAON,MAAM,QAAQ,GAAG,CAAC,QAA0B,EAAE,EAAE;IAC5C,MAAM,gBAAgB,GAAG,eAAe,EAAE,CAAC;IAE3C,gBAAgB;SACX,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAChB,OAAO;YACH,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/C,UAAU,EAAE,UAAU,CAAC,UAAU;SACpC,CAAC;IACN,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACpB,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CACzF,CAAC;IAEN,SAAS,oBAAoB,CAAC,KAA0C,EAAE,GAAgB;QACtF,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAE3B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAC5B,CAAC,IAAS,EAAE,EAAE,CACV,CAAC,WAAW,CAAC,IAAmB,CAAC,CAAC,MAAM;YACpC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CACzD,CAAC;QAEF,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAe,CAAC","sourcesContent":["import { breakpoints } from './breakpoints';\nimport { BreakpointFunction, Breakpoints, UseMediaFunction } from './media-query.types';\nimport { getMediaQueries, getSizeFromBreakpoint } from './utils';\n\nconst max: BreakpointFunction = (breakpoint) =>\n `(max-width: ${getSizeFromBreakpoint(breakpoint)}px)`;\n\nconst min: BreakpointFunction = (breakpoint) =>\n `(min-width: ${getSizeFromBreakpoint(breakpoint)}px)`;\n\n/**\n * Check if the given breakpoint is a match\n * @param breakpoint { string }\n */\nexport const mediaIsMatch = (breakpoint: string) => window.matchMedia(breakpoint).matches;\n\nexport const deviceWidth = {\n isMobilePlusAndSmaller: mediaIsMatch(`${min('mobile')} and ${max('mobilePlus')}`),\n isTabletPortraitAndSmaller: mediaIsMatch(`${min('mobile')} and ${max('tabletPortrait')}`),\n};\n\n/**\n * Method that calls a callback everytime a media-query matches\n * mediaWatcher(`(min-width: 600px)`, (matches) => {\n * console.log(matches);\n * });\n * @function mediaWatcher\n * @param mediaQuery { string }\n * @param layoutChangedCallback { callback }\n */\nconst mediaWatcher = (\n mediaQuery: string,\n layoutChangedCallback: (mediaQueryMatches: boolean) => void,\n) => {\n const mediaQueryListener = window.matchMedia(mediaQuery);\n mediaQueryListener.addListener((e) => layoutChangedCallback(e.matches));\n layoutChangedCallback(mediaQueryListener.matches);\n};\n\n/**\n * Returns current active breakpoint\n * @function getCurrentBreakpoint\n */\nconst getCurrentBreakpoint = () =>\n getMediaQueries().reduce(\n (previous, current) =>\n window.matchMedia(current.query()).matches ? current.breakpoint : (previous as any),\n undefined,\n );\n\n/**\n * Returns the breakpoints object in the given callback\n * @function useMedia\n * @param callback returns @type Breakpoints\n */\nconst useMedia = (callback: UseMediaFunction) => {\n const breakpointObject = getMediaQueries();\n\n breakpointObject\n .map((breakpoint) => {\n return {\n listener: window.matchMedia(breakpoint.query()),\n breakpoint: breakpoint.breakpoint,\n };\n })\n .forEach((breakpoint) =>\n breakpoint.listener.addListener((e) => handleMediaListeners(e, breakpoint.breakpoint)),\n );\n\n function handleMediaListeners(event: { matches: boolean; media: string }, key: Breakpoints) {\n if (!event.matches) return;\n\n Object.keys(breakpoints).forEach(\n (item: any) =>\n (breakpoints[item as Breakpoints].active =\n item === key ? event.matches : !event.matches),\n );\n\n callback(breakpoints);\n }\n\n callback(breakpoints);\n};\n\nexport { breakpoints, min, max, useMedia, mediaWatcher, getCurrentBreakpoint, Breakpoints };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=media-query.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-query.types.js","sourceRoot":"","sources":["../../../src/media-query/media-query.types.ts"],"names":[],"mappings":"","sourcesContent":["import { breakpoints } from './breakpoints';\n\nexport type Breakpoints = keyof typeof breakpoints;\nexport type BreakpointFunction = (breakpoint: Breakpoints) => string;\n\nexport type UseMediaFunction = (\n breakpoints: {\n [key in Breakpoints]: Breakpoint;\n },\n) => void;\n\nexport type MediaQuery = {\n breakpoint: Breakpoints;\n query: () => string;\n};\nexport interface Breakpoint {\n size: number;\n active: boolean;\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { breakpoints } from '../breakpoints';
|
|
2
|
+
export function getSizeFromBreakpoint(breakpointValue) {
|
|
3
|
+
if (breakpoints[breakpointValue].size) {
|
|
4
|
+
return breakpoints[breakpointValue].size;
|
|
5
|
+
}
|
|
6
|
+
else {
|
|
7
|
+
console.error('No valid breakpoint or size specified for media.');
|
|
8
|
+
return '0';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function getMediaQueries() {
|
|
12
|
+
const breakpointMap = Object.keys(breakpoints);
|
|
13
|
+
return breakpointMap.map((item, index) => {
|
|
14
|
+
const breakpoint = breakpoints[item];
|
|
15
|
+
const breakpointAbove = breakpoints[breakpointMap[index + 1]];
|
|
16
|
+
return {
|
|
17
|
+
breakpoint: item,
|
|
18
|
+
query: () => {
|
|
19
|
+
if (index === 0) {
|
|
20
|
+
return `(max-width: ${breakpointAbove.size - 1}px)`;
|
|
21
|
+
}
|
|
22
|
+
else if (index === breakpointMap.length - 1) {
|
|
23
|
+
return `(min-width: ${breakpoint.size}px)`;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return `(max-width: ${breakpointAbove.size - 1}px) and (min-width: ${breakpoint.size}px)`;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/media-query/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,UAAU,qBAAqB,CAAC,eAA4B;IAC9D,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;QACnC,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;KAC5C;SAAM;QACH,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,GAAG,CAAC;KACd;AACL,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE/C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAmB,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAgB,CAAC,CAAC;QAE7E,OAAO;YACH,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,GAAG,EAAE;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE;oBACb,OAAO,eAAe,eAAe,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;iBACvD;qBAAM,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3C,OAAO,eAAe,UAAU,CAAC,IAAI,KAAK,CAAC;iBAC9C;qBAAM;oBACH,OAAO,eAAe,eAAe,CAAC,IAAI,GAAG,CAAC,uBAC1C,UAAU,CAAC,IACf,KAAK,CAAC;iBACT;YACL,CAAC;SACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { breakpoints } from '../breakpoints';\nimport { Breakpoints, MediaQuery } from '../media-query.types';\n\nexport function getSizeFromBreakpoint(breakpointValue: Breakpoints) {\n if (breakpoints[breakpointValue].size) {\n return breakpoints[breakpointValue].size;\n } else {\n console.error('No valid breakpoint or size specified for media.');\n return '0';\n }\n}\n\nexport function getMediaQueries(): MediaQuery[] {\n const breakpointMap = Object.keys(breakpoints);\n\n return breakpointMap.map((item: any, index: number) => {\n const breakpoint = breakpoints[item as Breakpoints];\n const breakpointAbove = breakpoints[breakpointMap[index + 1] as Breakpoints];\n\n return {\n breakpoint: item,\n query: () => {\n if (index === 0) {\n return `(max-width: ${breakpointAbove.size - 1}px)`;\n } else if (index === breakpointMap.length - 1) {\n return `(min-width: ${breakpoint.size}px)`;\n } else {\n return `(max-width: ${breakpointAbove.size - 1}px) and (min-width: ${\n breakpoint.size\n }px)`;\n }\n },\n };\n });\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const rafThrottle = (callback) => {
|
|
2
|
+
let requestId = null;
|
|
3
|
+
let lastArgs = null;
|
|
4
|
+
const wrapperFunction = (...args) => {
|
|
5
|
+
lastArgs = args;
|
|
6
|
+
if (requestId) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
requestId = requestAnimationFrame(() => {
|
|
10
|
+
requestId = null;
|
|
11
|
+
callback(...lastArgs);
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
wrapperFunction.cancel = () => {
|
|
15
|
+
if (requestId !== null) {
|
|
16
|
+
cancelAnimationFrame(requestId);
|
|
17
|
+
requestId = null;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return wrapperFunction;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=raf-throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raf-throttle.js","sourceRoot":"","sources":["../../src/raf-throttle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAkC,EAAE,EAAE;IAC9D,IAAI,SAAS,GAAkB,IAAI,CAAC;IAEpC,IAAI,QAAQ,GAAQ,IAAI,CAAC;IAEzB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QAEvC,QAAQ,GAAG,IAAI,CAAC;QAGhB,IAAI,SAAS,EAAE;YACX,OAAO;SACV;QAGD,SAAS,GAAG,qBAAqB,CAAC,GAAG,EAAE;YACnC,SAAS,GAAG,IAAI,CAAC;YACjB,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,eAAe,CAAC,MAAM,GAAG,GAAG,EAAE;QAC1B,IAAI,SAAS,KAAK,IAAI,EAAE;YACpB,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,SAAS,GAAG,IAAI,CAAC;SACpB;IACL,CAAC,CAAC;IAEF,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["export const rafThrottle = (callback: (...args: any[]) => void) => {\n let requestId: null | number = null;\n\n let lastArgs: any = null;\n\n const wrapperFunction = (...args: any[]) => {\n // Always capture the latest value\n lastArgs = args;\n\n // There is already a frame queued\n if (requestId) {\n return;\n }\n\n // Schedule a new frame\n requestId = requestAnimationFrame(() => {\n requestId = null;\n callback(...lastArgs);\n });\n };\n\n wrapperFunction.cancel = () => {\n if (requestId !== null) {\n cancelAnimationFrame(requestId);\n requestId = null;\n }\n };\n\n return wrapperFunction;\n};\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const throttle = (fn, wait = 300) => {
|
|
2
|
+
let inThrottle, lastFn, lastTime;
|
|
3
|
+
return function () {
|
|
4
|
+
const context = this, args = arguments;
|
|
5
|
+
if (!inThrottle) {
|
|
6
|
+
fn.apply(context, args);
|
|
7
|
+
lastTime = Date.now();
|
|
8
|
+
inThrottle = true;
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
clearTimeout(lastFn);
|
|
12
|
+
lastFn = setTimeout(() => {
|
|
13
|
+
if (Date.now() - lastTime >= wait) {
|
|
14
|
+
fn.apply(context, args);
|
|
15
|
+
lastTime = Date.now();
|
|
16
|
+
}
|
|
17
|
+
}, Math.max(wait - (Date.now() - lastTime), 0));
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export { throttle };
|
|
22
|
+
//# sourceMappingURL=throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/throttle.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,CAAC,EAAY,EAAE,OAAe,GAAG,EAAE,EAAE;IAClD,IAAI,UAAmB,EAAE,MAAqC,EAAE,QAAgB,CAAC;IAEjF,OAAO;QAEH,MAAM,OAAO,GAAG,IAAI,EAEhB,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE;YACb,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,UAAU,GAAG,IAAI,CAAC;SACrB;aAAM;YACH,YAAY,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE;oBAC/B,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;iBACzB;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnD;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["const throttle = (fn: Function, wait: number = 300) => {\n let inThrottle: boolean, lastFn: ReturnType<typeof setTimeout>, lastTime: number;\n\n return function (this: any) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this,\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (!inThrottle) {\n fn.apply(context, args);\n lastTime = Date.now();\n inThrottle = true;\n } else {\n clearTimeout(lastFn);\n lastFn = setTimeout(() => {\n if (Date.now() - lastTime >= wait) {\n fn.apply(context, args);\n lastTime = Date.now();\n }\n }, Math.max(wait - (Date.now() - lastTime), 0));\n }\n };\n};\n\nexport { throttle };\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const round = (value, decimals) => Number(Math.round(value + 'e' + decimals) + 'e-' + decimals).toFixed(decimals);
|
|
2
|
+
export const putThousandsSeparators = (value, sep) => {
|
|
3
|
+
let transformedValue = null;
|
|
4
|
+
if (sep == null) {
|
|
5
|
+
sep = '.';
|
|
6
|
+
}
|
|
7
|
+
if (value.toString() === value.toLocaleString()) {
|
|
8
|
+
const parts = value.toString().split(',');
|
|
9
|
+
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, sep);
|
|
10
|
+
transformedValue = parts[1] ? parts.join(',') : parts[0];
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
transformedValue = value.toLocaleString();
|
|
14
|
+
}
|
|
15
|
+
return transformedValue;
|
|
16
|
+
};
|
|
17
|
+
export const toCurrency = (value, decimals = 2) => {
|
|
18
|
+
let transformedValue = null;
|
|
19
|
+
transformedValue = round(Number(value), decimals);
|
|
20
|
+
transformedValue = `${value.toString().replace('.', ',')}`;
|
|
21
|
+
transformedValue = putThousandsSeparators(value);
|
|
22
|
+
return `€ ${transformedValue}`;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=to-currency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-currency.js","sourceRoot":"","sources":["../../src/to-currency.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAE,CACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAI,GAAW,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAsB,EAAE,GAAY,EAAE,EAAE;IAC3E,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAE5B,IAAI,GAAG,IAAI,IAAI,EAAE;QACb,GAAG,GAAG,GAAG,CAAC;KACb;IAGD,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,cAAc,EAAE,EAAE;QAE7C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAG1C,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAG1D,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5D;SAAM;QACH,gBAAgB,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;KAC7C;IAED,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE;IACtD,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAE5B,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,gBAAgB,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IAC3D,gBAAgB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAEjD,OAAO,KAAK,gBAAgB,EAAE,CAAC;AACnC,CAAC,CAAC","sourcesContent":["export const round = (value: number, decimals: number) =>\n Number(Math.round(value + ('e' as any) + decimals) + 'e-' + decimals).toFixed(decimals);\n\nexport const putThousandsSeparators = (value: number | string, sep?: string) => {\n let transformedValue = null;\n\n if (sep == null) {\n sep = '.';\n }\n\n // check if it needs formatting\n if (value.toString() === value.toLocaleString()) {\n // split decimals\n const parts = value.toString().split(',');\n\n // format whole numbers\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, sep);\n\n // put them back together\n transformedValue = parts[1] ? parts.join(',') : parts[0];\n } else {\n transformedValue = value.toLocaleString();\n }\n\n return transformedValue;\n};\n\nexport const toCurrency = (value: number, decimals = 2) => {\n let transformedValue = null;\n\n transformedValue = round(Number(value), decimals);\n transformedValue = `${value.toString().replace('.', ',')}`;\n transformedValue = putThousandsSeparators(value);\n\n return `€ ${transformedValue}`;\n};\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export interface HttpErrorInput {
|
|
2
|
+
message: string;
|
|
3
|
+
statusCode: number;
|
|
4
|
+
response?: Response;
|
|
5
|
+
body?: any;
|
|
6
|
+
}
|
|
7
|
+
export declare class HttpError extends Error {
|
|
8
|
+
statusCode: number;
|
|
9
|
+
response?: Response;
|
|
10
|
+
body?: any;
|
|
11
|
+
constructor(input: HttpErrorInput);
|
|
12
|
+
}
|
|
13
|
+
export declare type AbortFunction = () => void;
|
|
14
|
+
declare type RequestFn = <T = any, I = any>(url: string, data: I, config?: RequestConfig) => Promise<T>;
|
|
15
|
+
declare type RequestGetFn = <T = any, I = any>(url: string, data?: I, config?: RequestConfig) => Promise<T>;
|
|
16
|
+
declare type BeforeHook = (client: HttpClient) => Promise<void> | void;
|
|
17
|
+
declare type ErrorHook = <T = any>(err: HttpError, request: () => Promise<T>) => any;
|
|
18
|
+
declare type HttpClientInit = RequestInit & {
|
|
19
|
+
baseUrl?: string;
|
|
20
|
+
returnType?: 'json' | 'text' | 'blob';
|
|
21
|
+
beforeHook?: BeforeHook;
|
|
22
|
+
onError?: ErrorHook;
|
|
23
|
+
};
|
|
24
|
+
export declare type RequestConfig = HttpClientInit & {
|
|
25
|
+
createAbort?: (abortFunction: AbortFunction) => void;
|
|
26
|
+
};
|
|
27
|
+
export declare class HttpClient {
|
|
28
|
+
private defaultConfig;
|
|
29
|
+
private config;
|
|
30
|
+
private token;
|
|
31
|
+
constructor(config?: HttpClientInit);
|
|
32
|
+
private createRequest;
|
|
33
|
+
get: RequestGetFn;
|
|
34
|
+
post: RequestFn;
|
|
35
|
+
put: RequestFn;
|
|
36
|
+
patch: RequestFn;
|
|
37
|
+
delete: RequestFn;
|
|
38
|
+
setToken: (token: string | undefined) => string | undefined;
|
|
39
|
+
private setAuthenticationHeaders;
|
|
40
|
+
private setAbortController;
|
|
41
|
+
request<T>(url: string | URL, requestConfig?: RequestConfig): Promise<T>;
|
|
42
|
+
private handleSuccess;
|
|
43
|
+
private onError;
|
|
44
|
+
private createBody;
|
|
45
|
+
private handleError;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './api-utilities.types';
|
|
2
|
+
export * from './district-status';
|
|
3
|
+
export * from './find-filter';
|
|
4
|
+
export * from './show-price';
|
|
5
|
+
export * from './get/coordinates';
|
|
6
|
+
export * from './get/layer-raster';
|
|
7
|
+
export * from './decimal-range/merge-decimal-range';
|
|
8
|
+
export * from './decimal-range/merge-specification-range';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { MapDataItem } from '@bpd-library/types';
|
|
2
|
+
import { ApartmentBuildingModel, AreaProjectModel, ConstructionNumberModel, DistrictModel, ProjectPhaseModel, ProjectPhaseStatus, PropertyTypeModel } from '../generated';
|
|
3
|
+
declare type PropertyTypeStatus = 'InPreparation' | 'SaleSoon' | 'SaleStarted' | 'AssigningOn' | 'AmountAvailable' | 'InOption' | 'Sold' | 'UnderConstruction' | 'ForRent' | 'Rented';
|
|
4
|
+
declare type ApartmentBuildingStatus = 'InPreparation' | 'SaleSoon' | 'SaleStarted' | 'AssigningOn' | 'AmountAvailable' | 'Available' | 'ForRent' | 'InOption' | 'Sold' | 'Rented' | 'UnderConstruction';
|
|
5
|
+
declare type GeneratedConstructionNumberStatus = 'InPreparation' | 'InOption' | 'Available' | 'Sold' | 'Rented' | 'UnderConstruction';
|
|
6
|
+
interface ExtendedConstructionNumber extends Omit<ConstructionNumberModel, 'shortDescription' | 'longDescription' | 'resources' | 'gardens' | 'outbuildings' | 'groundLease' | 'floors' | 'outsideSpace' | 'extraSpecifications' | 'landRegistration'> {
|
|
7
|
+
areaProject?: AreaProjectModel;
|
|
8
|
+
propertyType?: ExtendedPropertyType;
|
|
9
|
+
projectPhase?: ExtendedProjectPhase;
|
|
10
|
+
mapDataItems?: MapDataItem[];
|
|
11
|
+
apartmentBuilding?: ExtendedApartmentBuilding;
|
|
12
|
+
status?: GeneratedConstructionNumberStatus;
|
|
13
|
+
objectType: 'constructionNumber';
|
|
14
|
+
}
|
|
15
|
+
interface ExtendedPropertyType extends Omit<PropertyTypeModel, 'shortDescription' | 'longDescription' | 'environmentTypes' | 'groundLease' | 'resources' | 'constructionStartDate' | 'indicationServiceCosts' | 'indicationSecurity' | 'floors' | 'gardens' | 'outbuildings' | 'usp1Title' | 'usp1Text' | 'usp2Title' | 'usp2Text'> {
|
|
16
|
+
constructionNumbers?: ExtendedConstructionNumber[];
|
|
17
|
+
projectPhase?: ExtendedProjectPhase;
|
|
18
|
+
mapDataItems?: MapDataItem[];
|
|
19
|
+
status?: PropertyTypeStatus;
|
|
20
|
+
apartmentBuildings?: ExtendedApartmentBuilding[];
|
|
21
|
+
objectType: 'propertyType';
|
|
22
|
+
}
|
|
23
|
+
interface ExtendedProjectPhase extends Omit<ProjectPhaseModel, 'longDescription' | 'resources'> {
|
|
24
|
+
constructionNumbers?: ExtendedConstructionNumber[];
|
|
25
|
+
propertyTypes?: ExtendedPropertyType[];
|
|
26
|
+
mapDataItems?: MapDataItem[];
|
|
27
|
+
objectType: 'projectPhase';
|
|
28
|
+
}
|
|
29
|
+
interface ExtendedApartmentBuilding extends ApartmentBuildingModel {
|
|
30
|
+
constructionNumbers?: ExtendedConstructionNumber[];
|
|
31
|
+
propertyTypes?: ExtendedPropertyType[];
|
|
32
|
+
projectPhase?: ExtendedProjectPhase;
|
|
33
|
+
mapDataItems?: MapDataItem[];
|
|
34
|
+
status?: ApartmentBuildingStatus;
|
|
35
|
+
objectType: 'apartmentBuilding';
|
|
36
|
+
}
|
|
37
|
+
interface ExtendedDistrict extends DistrictModel {
|
|
38
|
+
status?: ProjectPhaseStatus;
|
|
39
|
+
mapDataItems?: MapDataItem[];
|
|
40
|
+
objectType: 'district';
|
|
41
|
+
}
|
|
42
|
+
interface ExtendedAreaProject extends AreaProjectModel {
|
|
43
|
+
mapDataItems?: MapDataItem[];
|
|
44
|
+
objectType: 'areaProject';
|
|
45
|
+
}
|
|
46
|
+
export { ExtendedConstructionNumber, ExtendedPropertyType, ExtendedApartmentBuilding, ExtendedProjectPhase, ExtendedDistrict, ExtendedAreaProject, PropertyTypeStatus, ApartmentBuildingStatus, GeneratedConstructionNumberStatus, };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ApartmentBuildingModel, AreaProjectModel, ConstructionNumberModel, DistrictModel, ProjectPhaseModel, PropertyTypeModel } from '../generated';
|
|
2
|
+
declare const composeExcludeString: (keys: (keyof ConstructionNumberModel | keyof PropertyTypeModel | keyof ApartmentBuildingModel | keyof ProjectPhaseModel | keyof DistrictModel | keyof AreaProjectModel)[]) => string;
|
|
3
|
+
export { composeExcludeString };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ConstructionNumberModel, ConstructionNumberSpecifications, DecimalRange, ProjectPhaseModel, PropertySpecifications, PropertyTypeModel } from '../../generated';
|
|
2
|
+
declare type PropertyKeys = keyof PropertySpecifications;
|
|
3
|
+
interface MergeSpecificationRange {
|
|
4
|
+
(obj: {
|
|
5
|
+
propertyTypes: PropertyTypeModel[];
|
|
6
|
+
}, key: PropertyKeys): DecimalRange;
|
|
7
|
+
(obj: {
|
|
8
|
+
projectPhases: ProjectPhaseModel[];
|
|
9
|
+
}, key: PropertyKeys): DecimalRange;
|
|
10
|
+
}
|
|
11
|
+
declare const mergePropertySpecification: MergeSpecificationRange;
|
|
12
|
+
declare const mergeConstructionNumberSpecification: (constructionNumbers: ConstructionNumberModel[], key: keyof ConstructionNumberSpecifications) => DecimalRange;
|
|
13
|
+
export { mergePropertySpecification, mergeConstructionNumberSpecification };
|