@bpd-library/utilities 1.2.8-beta.2 → 1.2.8-beta.6
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/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/hooks/use-stylesheet.d.ts +1 -15
- package/dist/hooks/use-stylesheet.js +3 -79
- package/dist/hooks/use-stylesheet.js.map +1 -1
- 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
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -79
- package/coverage/index.html +0 -95
- package/coverage/lcov.info +0 -0
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -170
- package/yarn-error.log +0 -8117
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const IS_TOUCH = 'is-touch';
|
|
2
|
+
const WITH_MOUSE = `${IS_TOUCH}--with-mouse`;
|
|
3
|
+
const html = document.documentElement;
|
|
4
|
+
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
|
+
const detectTouch = new DetectTouch();
|
|
30
|
+
|
|
31
|
+
export { DetectTouch, detectTouch };
|
|
32
|
+
//# sourceMappingURL=is-touch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-touch.js","sources":["../../src/is-touch.ts"],"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"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,UAAU,GAAG,GAAG,QAAQ,cAAc,CAAC;AAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;MAEzB,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;YAChC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SACxE,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAChC;KACJ;IApBD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;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;KACJ;CACJ;MAEY,WAAW,GAAG,IAAI,WAAW;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
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
|
+
|
|
28
|
+
export { breakpoints };
|
|
29
|
+
//# sourceMappingURL=breakpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sources":["../../../src/media-query/breakpoints.ts"],"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"],"names":[],"mappings":"MAAa,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;;;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { breakpoints } from './breakpoints.js';
|
|
2
|
+
export { breakpoints } from './breakpoints.js';
|
|
3
|
+
import { getSizeFromBreakpoint, getMediaQueries } from './utils/index.js';
|
|
4
|
+
|
|
5
|
+
const max = (breakpoint) => `(max-width: ${getSizeFromBreakpoint(breakpoint)}px)`;
|
|
6
|
+
const min = (breakpoint) => `(min-width: ${getSizeFromBreakpoint(breakpoint)}px)`;
|
|
7
|
+
const mediaIsMatch = (breakpoint) => window.matchMedia(breakpoint).matches;
|
|
8
|
+
const deviceWidth = {
|
|
9
|
+
isMobilePlusAndSmaller: mediaIsMatch(`${min('mobile')} and ${max('mobilePlus')}`),
|
|
10
|
+
isTabletPortraitAndSmaller: mediaIsMatch(`${min('mobile')} and ${max('tabletPortrait')}`),
|
|
11
|
+
};
|
|
12
|
+
const mediaWatcher = (mediaQuery, layoutChangedCallback) => {
|
|
13
|
+
const mediaQueryListener = window.matchMedia(mediaQuery);
|
|
14
|
+
mediaQueryListener.addListener((e) => layoutChangedCallback(e.matches));
|
|
15
|
+
layoutChangedCallback(mediaQueryListener.matches);
|
|
16
|
+
};
|
|
17
|
+
const getCurrentBreakpoint = () => getMediaQueries().reduce((previous, current) => window.matchMedia(current.query()).matches ? current.breakpoint : previous, undefined);
|
|
18
|
+
const useMedia = (callback) => {
|
|
19
|
+
const breakpointObject = getMediaQueries();
|
|
20
|
+
breakpointObject
|
|
21
|
+
.map((breakpoint) => {
|
|
22
|
+
return {
|
|
23
|
+
listener: window.matchMedia(breakpoint.query()),
|
|
24
|
+
breakpoint: breakpoint.breakpoint,
|
|
25
|
+
};
|
|
26
|
+
})
|
|
27
|
+
.forEach((breakpoint) => breakpoint.listener.addListener((e) => handleMediaListeners(e, breakpoint.breakpoint)));
|
|
28
|
+
function handleMediaListeners(event, key) {
|
|
29
|
+
if (!event.matches)
|
|
30
|
+
return;
|
|
31
|
+
Object.keys(breakpoints).forEach((item) => (breakpoints[item].active =
|
|
32
|
+
item === key ? event.matches : !event.matches));
|
|
33
|
+
callback(breakpoints);
|
|
34
|
+
}
|
|
35
|
+
callback(breakpoints);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { deviceWidth, getCurrentBreakpoint, max, mediaIsMatch, mediaWatcher, min, useMedia };
|
|
39
|
+
//# sourceMappingURL=media-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-query.js","sources":["../../../src/media-query/media-query.ts"],"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"],"names":[],"mappings":";;;;MAIM,GAAG,GAAuB,CAAC,UAAU,KACvC,eAAe,qBAAqB,CAAC,UAAU,CAAC,MAAM;MAEpD,GAAG,GAAuB,CAAC,UAAU,KACvC,eAAe,qBAAqB,CAAC,UAAU,CAAC,MAAM;MAM7C,YAAY,GAAG,CAAC,UAAkB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ;MAE7E,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;EAC3F;MAWI,YAAY,GAAG,CACjB,UAAkB,EAClB,qBAA2D;IAE3D,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzD,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACtD,EAAE;MAMI,oBAAoB,GAAG,MACzB,eAAe,EAAE,CAAC,MAAM,CACpB,CAAC,QAAQ,EAAE,OAAO,KACd,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,GAAI,QAAgB,EACvF,SAAS,EACX;MAOA,QAAQ,GAAG,CAAC,QAA0B;IACxC,MAAM,gBAAgB,GAAG,eAAe,EAAE,CAAC;IAE3C,gBAAgB;SACX,GAAG,CAAC,CAAC,UAAU;QACZ,OAAO;YACH,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/C,UAAU,EAAE,UAAU,CAAC,UAAU;SACpC,CAAC;KACL,CAAC;SACD,OAAO,CAAC,CAAC,UAAU,KAChB,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,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,MACL,WAAW,CAAC,IAAmB,CAAC,CAAC,MAAM;YACpC,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CACzD,CAAC;QAEF,QAAQ,CAAC,WAAW,CAAC,CAAC;KACzB;IAED,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1B;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { breakpoints } from '../breakpoints.js';
|
|
2
|
+
|
|
3
|
+
function getSizeFromBreakpoint(breakpointValue) {
|
|
4
|
+
if (breakpoints[breakpointValue].size) {
|
|
5
|
+
return breakpoints[breakpointValue].size;
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
console.error('No valid breakpoint or size specified for media.');
|
|
9
|
+
return '0';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function getMediaQueries() {
|
|
13
|
+
const breakpointMap = Object.keys(breakpoints);
|
|
14
|
+
return breakpointMap.map((item, index) => {
|
|
15
|
+
const breakpoint = breakpoints[item];
|
|
16
|
+
const breakpointAbove = breakpoints[breakpointMap[index + 1]];
|
|
17
|
+
return {
|
|
18
|
+
breakpoint: item,
|
|
19
|
+
query: () => {
|
|
20
|
+
if (index === 0) {
|
|
21
|
+
return `(max-width: ${breakpointAbove.size - 1}px)`;
|
|
22
|
+
}
|
|
23
|
+
else if (index === breakpointMap.length - 1) {
|
|
24
|
+
return `(min-width: ${breakpoint.size}px)`;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return `(max-width: ${breakpointAbove.size - 1}px) and (min-width: ${breakpoint.size}px)`;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { getMediaQueries, getSizeFromBreakpoint };
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/media-query/utils/index.ts"],"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"],"names":[],"mappings":";;SAGgB,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;SAEe,eAAe;IAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE/C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,KAAa;QAC9C,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;gBACH,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;aACJ;SACJ,CAAC;KACL,CAAC,CAAC;AACP;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
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
|
+
|
|
23
|
+
export { rafThrottle };
|
|
24
|
+
//# sourceMappingURL=raf-throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raf-throttle.js","sources":["../../src/raf-throttle.ts"],"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"],"names":[],"mappings":"MAAa,WAAW,GAAG,CAAC,QAAkC;IAC1D,IAAI,SAAS,GAAkB,IAAI,CAAC;IAEpC,IAAI,QAAQ,GAAQ,IAAI,CAAC;IAEzB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAW;QAEnC,QAAQ,GAAG,IAAI,CAAC;QAGhB,IAAI,SAAS,EAAE;YACX,OAAO;SACV;QAGD,SAAS,GAAG,qBAAqB,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC;YACjB,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;SACzB,CAAC,CAAC;KACN,CAAC;IAEF,eAAe,CAAC,MAAM,GAAG;QACrB,IAAI,SAAS,KAAK,IAAI,EAAE;YACpB,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,SAAS,GAAG,IAAI,CAAC;SACpB;KACJ,CAAC;IAEF,OAAO,eAAe,CAAC;AAC3B;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
|
|
22
|
+
export { throttle };
|
|
23
|
+
//# sourceMappingURL=throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.js","sources":["../../src/throttle.ts"],"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"],"names":[],"mappings":"MAAM,QAAQ,GAAG,CAAC,EAAY,EAAE,OAAe,GAAG;IAC9C,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;gBAChB,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;aACJ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnD;KACJ,CAAC;AACN;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const round = (value, decimals) => Number(Math.round(value + 'e' + decimals) + 'e-' + decimals).toFixed(decimals);
|
|
2
|
+
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
|
+
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
|
+
|
|
25
|
+
export { putThousandsSeparators, round, toCurrency };
|
|
26
|
+
//# sourceMappingURL=to-currency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-currency.js","sources":["../../src/to-currency.ts"],"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"],"names":[],"mappings":"MAAa,KAAK,GAAG,CAAC,KAAa,EAAE,QAAgB,KACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAI,GAAW,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;MAE/E,sBAAsB,GAAG,CAAC,KAAsB,EAAE,GAAY;IACvE,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,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5D;SAAM;QACH,gBAAgB,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;KAC7C;IAED,OAAO,gBAAgB,CAAC;AAC5B,EAAE;MAEW,UAAU,GAAG,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC;IAClD,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;;;;"}
|
|
@@ -1,15 +1 @@
|
|
|
1
|
-
declare
|
|
2
|
-
interface Window {
|
|
3
|
-
ShadyCSS: any;
|
|
4
|
-
}
|
|
5
|
-
interface ShadowRoot {
|
|
6
|
-
adoptedStyleSheets: CSSStyleSheet[];
|
|
7
|
-
}
|
|
8
|
-
interface Document {
|
|
9
|
-
adoptedStyleSheets: CSSStyleSheet[];
|
|
10
|
-
}
|
|
11
|
-
interface CSSStyleSheet {
|
|
12
|
-
replaceSync(cssText: string): void;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export declare const useStylesheet: (style: string) => void;
|
|
1
|
+
export declare function useStylesheet(style: string): void;
|
|
@@ -1,81 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const styleCache = new Map();
|
|
5
|
-
const APPLIED_STYLES = [];
|
|
6
|
-
const supportsAdoptingStyleSheets = () => 'adoptedStyleSheets' in Document.prototype && 'replace' in CSSStyleSheet.prototype;
|
|
7
|
-
function bindShadyRoot(target, template) {
|
|
8
|
-
window.ShadyCSS.prepareTemplate(template, target.$cmpMeta$.$tagName$);
|
|
9
|
-
window.ShadyCSS.styleElement(target);
|
|
1
|
+
import { unsafeCSS, useStyles } from '@atomify/hooks';
|
|
2
|
+
export function useStylesheet(style) {
|
|
3
|
+
useStyles(() => unsafeCSS(style));
|
|
10
4
|
}
|
|
11
|
-
const applyShadowdomStyles = (component, styles) => {
|
|
12
|
-
const container = component.container;
|
|
13
|
-
const componentName = component.$cmpMeta$.$tagName$;
|
|
14
|
-
let styleTmp;
|
|
15
|
-
if (!styleCache.has(componentName)) {
|
|
16
|
-
styleTmp = document.createElement('template');
|
|
17
|
-
styleTmp.innerHTML = `${component.hasShadowDom && !supportsAdoptingStyleSheets() && styles
|
|
18
|
-
? `<style style-hook>${styles}</style>`
|
|
19
|
-
: ''}`;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
styleTmp = styleCache.get(componentName);
|
|
23
|
-
}
|
|
24
|
-
if (styleTmp) {
|
|
25
|
-
if (supportShadyCSS && component.hasShadowDom) {
|
|
26
|
-
bindShadyRoot(component, styleTmp);
|
|
27
|
-
}
|
|
28
|
-
container.appendChild(document.importNode(styleTmp.content, true));
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
const unsafeCSS = (cssString) => createCSSResult(String(cssString), CSS_SAVE_TOKEN);
|
|
32
|
-
const createCSSResult = (css, token) => {
|
|
33
|
-
if (token !== CSS_SAVE_TOKEN)
|
|
34
|
-
throw new Error(`${css} is not supported. Use 'unsafeCSS' if you want to use: ${css}`);
|
|
35
|
-
let styleSheet = null;
|
|
36
|
-
const cssText = css;
|
|
37
|
-
if (supportsAdoptingStyleSheets()) {
|
|
38
|
-
styleSheet = new CSSStyleSheet();
|
|
39
|
-
styleSheet.replaceSync(cssText);
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
cssText,
|
|
43
|
-
styleSheet,
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
const adoptStyles = (root, styles) => {
|
|
47
|
-
const hasShadowDom = root.hasShadowDom;
|
|
48
|
-
const componentName = root.$cmpMeta$.$tagName$;
|
|
49
|
-
if (supportsAdoptingStyleSheets() && hasShadowDom) {
|
|
50
|
-
const CSSRoot = root.container;
|
|
51
|
-
if (!(CSSRoot instanceof HTMLElement))
|
|
52
|
-
CSSRoot.adoptedStyleSheets = styles.map((s) => {
|
|
53
|
-
return s instanceof StyleSheet ? s : s.styleSheet;
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
else if (APPLIED_STYLES.indexOf(componentName) === -1) {
|
|
57
|
-
const combinedStyleArray = styles
|
|
58
|
-
.map((style) => ('cssText' in style ? style.cssText : null))
|
|
59
|
-
.join('');
|
|
60
|
-
if (hasShadowDom) {
|
|
61
|
-
root.styles = combinedStyleArray;
|
|
62
|
-
applyShadowdomStyles(root, combinedStyleArray);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const styleElement = document.createElement('style');
|
|
66
|
-
styleElement.textContent = combinedStyleArray;
|
|
67
|
-
styleElement.setAttribute('scope', componentName);
|
|
68
|
-
document.head.appendChild(styleElement);
|
|
69
|
-
APPLIED_STYLES.push(componentName);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
export const useStylesheet = (style) => {
|
|
74
|
-
const css = unsafeCSS(style);
|
|
75
|
-
const styles = Array.isArray(css) ? [...css] : [css];
|
|
76
|
-
return createHook({
|
|
77
|
-
onDidLoad: (element) => adoptStyles(element, styles),
|
|
78
|
-
onUpdate: (element) => adoptStyles(element, styles),
|
|
79
|
-
});
|
|
80
|
-
};
|
|
81
5
|
//# sourceMappingURL=use-stylesheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-stylesheet.js","sourceRoot":"","sources":["../../src/hooks/use-stylesheet.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,117 @@
|
|
|
1
|
+
import qs from 'qs';
|
|
2
|
+
export class HttpError extends Error {
|
|
3
|
+
constructor(input) {
|
|
4
|
+
super(input.message);
|
|
5
|
+
this.response = input.response;
|
|
6
|
+
this.statusCode = input.statusCode;
|
|
7
|
+
this.body = input.body;
|
|
8
|
+
this.name = 'HttpError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class HttpClient {
|
|
12
|
+
constructor(config = {}) {
|
|
13
|
+
this.defaultConfig = {
|
|
14
|
+
returnType: 'json',
|
|
15
|
+
};
|
|
16
|
+
this.config = {};
|
|
17
|
+
this.get = this.createRequest('GET');
|
|
18
|
+
this.post = this.createRequest('POST');
|
|
19
|
+
this.put = this.createRequest('PUT');
|
|
20
|
+
this.patch = this.createRequest('PATCH');
|
|
21
|
+
this.delete = this.createRequest('DELETE');
|
|
22
|
+
this.setToken = (token) => (this.token = token);
|
|
23
|
+
this.setAbortController = (config) => {
|
|
24
|
+
const { createAbort } = config;
|
|
25
|
+
if (createAbort) {
|
|
26
|
+
if (typeof AbortController !== undefined) {
|
|
27
|
+
const controller = new AbortController();
|
|
28
|
+
const { signal } = controller;
|
|
29
|
+
config.signal = signal;
|
|
30
|
+
createAbort(controller.abort.bind(controller));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
createAbort(() => console.log('The AbortController api isnt available in your browser'));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
this.config = Object.assign(Object.assign({}, this.defaultConfig), config);
|
|
38
|
+
}
|
|
39
|
+
createRequest(method) {
|
|
40
|
+
return (url, data, config) => {
|
|
41
|
+
if (method === 'GET') {
|
|
42
|
+
let getUrl = url;
|
|
43
|
+
if (data) {
|
|
44
|
+
getUrl = url + '?' + qs.stringify(data);
|
|
45
|
+
}
|
|
46
|
+
return this.request(getUrl, Object.assign(Object.assign({}, config), { method: 'GET' }));
|
|
47
|
+
}
|
|
48
|
+
const contentType = config && config.headers && config.headers['Content-Type'];
|
|
49
|
+
return this.request(url, Object.assign(Object.assign({}, config), { method, body: this.createBody(data, contentType) }));
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
setAuthenticationHeaders(config) {
|
|
53
|
+
if (this.token) {
|
|
54
|
+
config.headers = Object.assign(Object.assign({}, config.headers), { Authorization: `Bearer ${this.token}` });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async request(url, requestConfig = {}) {
|
|
58
|
+
const { beforeHook } = this.config;
|
|
59
|
+
const config = Object.assign(Object.assign({}, this.config), requestConfig);
|
|
60
|
+
const { baseUrl = '' } = config;
|
|
61
|
+
this.setAbortController(config);
|
|
62
|
+
if (beforeHook) {
|
|
63
|
+
await beforeHook(this);
|
|
64
|
+
}
|
|
65
|
+
this.setAuthenticationHeaders(config);
|
|
66
|
+
const requestFn = fetch(baseUrl + url, config)
|
|
67
|
+
.then(this.handleError)
|
|
68
|
+
.then(res => this.handleSuccess(res, config));
|
|
69
|
+
return requestFn.catch(err => this.onError(err, () => this.request(url, requestConfig)));
|
|
70
|
+
}
|
|
71
|
+
handleSuccess(res, config) {
|
|
72
|
+
const { returnType = 'json' } = config;
|
|
73
|
+
if (res.status === 204 || res.status === 201 || !res[returnType]) {
|
|
74
|
+
return res;
|
|
75
|
+
}
|
|
76
|
+
return res[returnType]();
|
|
77
|
+
}
|
|
78
|
+
async onError(err, requestFn) {
|
|
79
|
+
const { onError } = this.config;
|
|
80
|
+
if (onError) {
|
|
81
|
+
return onError(err, requestFn);
|
|
82
|
+
}
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
createBody(body, contentType) {
|
|
86
|
+
switch (contentType) {
|
|
87
|
+
case 'application/json':
|
|
88
|
+
return JSON.stringify(body);
|
|
89
|
+
case 'application/x-www-form-urlencoded':
|
|
90
|
+
return new URLSearchParams(body);
|
|
91
|
+
default:
|
|
92
|
+
return JSON.stringify(body);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async handleError(response) {
|
|
96
|
+
if (response.ok) {
|
|
97
|
+
return response;
|
|
98
|
+
}
|
|
99
|
+
const responseBody = await response.text();
|
|
100
|
+
let body = response;
|
|
101
|
+
try {
|
|
102
|
+
body = JSON.parse(responseBody);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
body = responseBody;
|
|
106
|
+
}
|
|
107
|
+
const error = {
|
|
108
|
+
message: `HttpError: ${response.status} - ${response.statusText}`,
|
|
109
|
+
statusCode: response.status,
|
|
110
|
+
response,
|
|
111
|
+
body,
|
|
112
|
+
};
|
|
113
|
+
console.error(error);
|
|
114
|
+
throw new HttpError(error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/api/http.ts"],"names":[],"mappings":"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","sourcesContent":["import qs from 'qs';\n\nexport interface HttpErrorInput {\n message: string;\n statusCode: number;\n response?: Response;\n body?: any;\n}\n\nexport class HttpError extends Error {\n statusCode: number;\n response?: Response;\n body?: any;\n\n constructor(input: HttpErrorInput) {\n super(input.message);\n this.response = input.response;\n this.statusCode = input.statusCode;\n this.body = input.body;\n this.name = 'HttpError';\n }\n}\n\nexport type AbortFunction = () => void;\ntype Token = string | undefined;\ntype RequestFn = <T = any, I = any>(url: string, data: I, config?: RequestConfig) => Promise<T>;\ntype RequestGetFn = <T = any, I = any>(url: string, data?: I, config?: RequestConfig) => Promise<T>;\ntype BeforeHook = (client: HttpClient) => Promise<void> | void;\ntype ErrorHook = <T = any>(err: HttpError, request: () => Promise<T>) => any;\ntype HttpClientInit = RequestInit & {\n baseUrl?: string;\n returnType?: 'json' | 'text' | 'blob';\n /** This function is called before every request. This is where you would check if your token is still valid */\n beforeHook?: BeforeHook;\n /** Function that is called if an error occurs */\n onError?: ErrorHook;\n};\nexport type RequestConfig = HttpClientInit & {\n createAbort?: (abortFunction: AbortFunction) => void;\n};\n\n/**\n * Wrapper around fetch\n */\nexport class HttpClient {\n private defaultConfig: RequestConfig = {\n returnType: 'json',\n };\n\n private config: RequestConfig = {};\n private token: Token;\n\n constructor(config: HttpClientInit = {}) {\n this.config = {\n ...this.defaultConfig,\n ...config,\n };\n }\n\n /**\n *\n *\n * @private\n * @param {'GET'} method\n * @returns {RequestGetFn}\n * @memberof HttpClient\n */\n private createRequest(method: 'GET'): RequestGetFn;\n private createRequest(method: string): RequestFn;\n private createRequest(method: 'GET' | string): RequestFn {\n return (url, data, config) => {\n if (method === 'GET') {\n let getUrl = url;\n if (data) {\n getUrl = url + '?' + qs.stringify(data);\n }\n\n return this.request(getUrl, {\n ...config,\n method: 'GET',\n });\n }\n\n const contentType = config && config.headers && (config.headers as any)['Content-Type'];\n\n return this.request(url, {\n ...config,\n method,\n body: this.createBody(data, contentType),\n });\n };\n }\n\n public get = this.createRequest('GET');\n public post = this.createRequest('POST');\n public put = this.createRequest('PUT');\n public patch = this.createRequest('PATCH');\n public delete = this.createRequest('DELETE');\n\n public setToken = (token: Token) => (this.token = token);\n\n private setAuthenticationHeaders(config: RequestConfig) {\n // if authenticated set bearer token\n if (this.token) {\n config.headers = {\n ...config.headers,\n Authorization: `Bearer ${this.token}`,\n };\n }\n }\n\n /**\n *\n *\n * @private\n * @memberof HttpClient\n */\n private setAbortController = (config: RequestConfig) => {\n const { createAbort } = config;\n if (createAbort) {\n if (typeof AbortController !== undefined) {\n const controller = new AbortController();\n const { signal } = controller;\n config.signal = signal;\n createAbort(controller.abort.bind(controller));\n } else {\n createAbort(() =>\n console.log('The AbortController api isnt available in your browser'),\n );\n }\n }\n };\n\n /**\n *\n *\n * @template T\n * @param {(string | URL)} url\n * @param {RequestConfig} [requestConfig={}]\n * @returns {Promise<T>}\n * @memberof HttpClient\n */\n public async request<T>(url: string | URL, requestConfig: RequestConfig = {}): Promise<T> {\n const { beforeHook } = this.config;\n\n const config: RequestConfig = {\n ...this.config,\n ...requestConfig,\n };\n\n const { baseUrl = '' } = config;\n\n this.setAbortController(config);\n\n if (beforeHook) {\n await beforeHook(this);\n }\n\n this.setAuthenticationHeaders(config);\n\n const requestFn = fetch(baseUrl + url, config)\n .then(this.handleError)\n .then(res => this.handleSuccess(res, config)) as Promise<T>;\n\n return requestFn.catch(err => this.onError<T>(err, () => this.request(url, requestConfig)));\n }\n\n /**\n *\n *\n * @private\n * @param {Response} res\n * @param {RequestConfig} config\n * @returns\n * @memberof HttpClient\n */\n private handleSuccess(res: Response, config: RequestConfig) {\n const { returnType = 'json' } = config;\n\n if (res.status === 204 || res.status === 201 || !res[returnType]) {\n return res;\n }\n\n return res[returnType]();\n }\n\n private async onError<T = any>(err: HttpError, requestFn: () => Promise<T>) {\n const { onError } = this.config;\n\n if (onError) {\n return onError(err, requestFn);\n }\n\n throw err;\n }\n\n /**\n * createBody is responsible for creating a body based on the content type\n *\n * @param body The body\n * @param contentType The content type\n */\n private createBody(body: any, contentType: string): any {\n switch (contentType) {\n case 'application/json':\n return JSON.stringify(body);\n case 'application/x-www-form-urlencoded':\n return new URLSearchParams(body);\n default:\n return JSON.stringify(body);\n }\n }\n\n /**\n * Handles the errors if the fetch request fails and throws a HttpError\n * @param response\n */\n private async handleError(response: Response) {\n if (response.ok) {\n return response;\n }\n\n const responseBody = await response.text();\n let body: any = response;\n\n try {\n body = JSON.parse(responseBody);\n } catch (err) {\n body = responseBody;\n }\n\n const error = {\n message: `HttpError: ${response.status} - ${response.statusText}`,\n statusCode: response.status,\n response,\n body,\n };\n\n console.error(error);\n throw new HttpError(error);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,uBAAuB,CAAC,UAAU;IAClD,OAAO,EAAE;QACL,cAAc,EAAE,kBAAkB;KACrC;CACJ,CAAC,CAAC","sourcesContent":["import { HttpClient } from './http';\n\nexport const APIClient = new HttpClient({\n baseUrl: window.__ENVIRONMENT_DETAILS__.apiBaseUrl,\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
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';
|
|
9
|
+
//# sourceMappingURL=api-utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-utilities.js","sourceRoot":"","sources":["../../../src/api-utilities/api-utilities.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAE7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC","sourcesContent":["export * from './api-utilities.types';\n\nexport * from './district-status';\nexport * from './find-filter';\nexport * from './show-price';\n\nexport * from './get/coordinates';\nexport * from './get/layer-raster';\n\nexport * from './decimal-range/merge-decimal-range';\nexport * from './decimal-range/merge-specification-range';\n"]}
|