@wikicasa-dev/utilities 0.0.7 → 0.0.10

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.
@@ -0,0 +1,12 @@
1
+ export { redirectToApp } from "./utils/AppRedirectUtils";
2
+ export { isArrNullOrEmpty } from "./utils/ArrayUtils";
3
+ export { rgba } from "./utils/ColorUtils";
4
+ export { isiOSDevice, isMobile, isSafari } from "./utils/DeviceDetectionUtils";
5
+ export { showAddFavoritesIcon, showRemoveFavoritesIcons, } from "./utils/FavoriteUtils";
6
+ export { awaitableSetTimeout } from "./utils/GenericUtils";
7
+ export { formatInteger, formatFloat, parseLocaleNumber, formatLocaleNumber, formatNumber, formatterNumberObj, } from "./utils/NumberUtils";
8
+ export { isEmptyObject, shallowCopyObjectTo, deepCopy, } from "./utils/ObjectUtils";
9
+ export { observeOnce } from "./utils/ObserverUtils";
10
+ export { addPermissionStateListener, onNotificationsPermissionChange, } from "./utils/PermissionUtils";
11
+ export { replaceAll, replaceAllTokens, capitalizeFirstLetter, formatAddress, decodeTextWithEntities, cleanASCII, } from "./utils/StringUtils";
12
+ export { appendQueryString } from "./utils/URLBuilderUtils";
package/dist/utilities.js CHANGED
@@ -1,54 +1,201 @@
1
- const i = (t, r) => {
2
- r || (r = navigator.language);
3
- const e = Intl.NumberFormat(r).format(1111).replace(/\p{Number}/gu, ""), a = Intl.NumberFormat(r).format(1.1).replace(/\p{Number}/gu, ""), n = parseFloat(
4
- `${t}`.replace(new RegExp("\\" + e, "g"), "").replace(new RegExp("\\" + a), ".")
1
+ const m = (e = "Banner") => {
2
+ var n;
3
+ if (window.navigator.userAgent.includes("iPhone"))
4
+ window.navigator.userAgent.match(/firefox|fxios/i) || window.location.replace("wikicasa://"), setTimeout(() => {
5
+ window.location.replace(
6
+ "https://apps.apple.com/it/app/wikicasa/id1626038379"
7
+ );
8
+ }, 500);
9
+ else if (window.navigator.userAgent.includes("Android")) {
10
+ const t = "intent://wikicasa.it/#Intent;scheme=https;package=it.wikicasa.wikicasa_app;end";
11
+ window.location.replace(t);
12
+ }
13
+ window.dataLayer.push({
14
+ //GA4
15
+ event_name: "open_store",
16
+ event_location: e,
17
+ OS: (n = window.navigator) == null ? void 0 : n.userAgent
18
+ });
19
+ }, w = (e) => !(e != null && e.length);
20
+ function h(e, n) {
21
+ e = e.replace("#", "");
22
+ const t = parseInt(e.substring(0, 2), 16), i = parseInt(e.substring(2, 4), 16), r = parseInt(e.substring(4, 6), 16);
23
+ return `rgba(${t}, ${i}, ${r}, ${n})`;
24
+ }
25
+ const v = () => /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream, y = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
26
+ navigator.userAgent
27
+ ), A = () => /^((?!chrome|android).)*safari/i.test(navigator.userAgent), b = (e) => {
28
+ document.querySelectorAll(`a[class^=fav][data-id='${e}']`).forEach((t) => {
29
+ t.classList.contains("fav-save") ? t.style.display = "none" : t.classList.contains("fav-remove") && (t.style.display = "block");
30
+ });
31
+ }, S = (e) => {
32
+ document.querySelectorAll(`a[class^=fav][data-id='${e}']`).forEach((t) => {
33
+ t.classList.contains("fav-save") ? t.style.display = "block" : t.classList.contains("fav-remove") && (t.style.display = "none");
34
+ });
35
+ }, O = (e, n) => new Promise((t, i) => {
36
+ setTimeout(() => {
37
+ try {
38
+ e && e(), t();
39
+ } catch {
40
+ i();
41
+ }
42
+ }, n);
43
+ }), p = (e, n) => {
44
+ n || (n = navigator.language);
45
+ const t = Intl.NumberFormat(n).format(1111).replace(/\p{Number}/gu, ""), i = Intl.NumberFormat(n).format(1.1).replace(/\p{Number}/gu, ""), r = parseFloat(
46
+ `${e}`.replace(new RegExp("\\" + t, "g"), "").replace(new RegExp("\\" + i), ".")
5
47
  );
6
- return isNaN(n) ? "" : n;
7
- }, u = (t, r) => {
8
- if (t == null)
48
+ return isNaN(r) ? "" : r;
49
+ }, d = (e, n) => {
50
+ if (e == null)
9
51
  return;
10
- if (t = parseFloat(`${t}`), isNaN(t))
52
+ if (e = parseFloat(`${e}`), isNaN(e))
11
53
  return "";
12
- const e = {
54
+ const t = {
13
55
  style: "currency",
14
56
  currency: "EUR"
15
57
  };
16
- let n = { ...{
58
+ let r = { ...{
17
59
  maximumFractionDigits: 0
18
60
  } };
19
- return r != null && r.currency && (n = { ...n, ...e }), new Intl.NumberFormat(navigator.language, {
20
- ...n
21
- }).format(t);
61
+ return n != null && n.currency && (r = { ...r, ...t }), new Intl.NumberFormat(navigator.language, {
62
+ ...r
63
+ }).format(e);
22
64
  };
23
- function c(t, r = !1) {
24
- return t == null ? "" : o(r ? Math.round(t) : Math.floor(t), 0);
65
+ function I(e, n = !1) {
66
+ return e == null ? "" : f(n ? Math.round(e) : Math.floor(e), 0);
25
67
  }
26
- function o(t, r) {
27
- return !t && t !== 0 ? "" : t.toLocaleString(
68
+ function f(e, n) {
69
+ return !e && e !== 0 ? "" : e.toLocaleString(
28
70
  "it-IT",
29
71
  // usare una stringa tipo 'en-US' per sovrascrivere la lingua del browser
30
72
  {
31
- minimumFractionDigits: r,
32
- maximumFractionDigits: r
73
+ minimumFractionDigits: n,
74
+ maximumFractionDigits: n
33
75
  }
34
76
  );
35
77
  }
36
- function f(t, r = 2) {
37
- return o(t, r);
78
+ function E(e, n = 2) {
79
+ return f(e, n);
80
+ }
81
+ const L = {
82
+ formatFn: d,
83
+ unFormatFn: p
84
+ };
85
+ function $(e, n) {
86
+ if (e)
87
+ for (const t in e)
88
+ n[t] = e[t];
89
+ }
90
+ function k(e) {
91
+ return !e || !Object.keys(e).length;
92
+ }
93
+ function N(e) {
94
+ if (!e)
95
+ return null;
96
+ for (const n in e) {
97
+ const t = e[n];
98
+ if (t && (Array.isArray(t) || Object.keys(t).length > 0))
99
+ return JSON.parse(JSON.stringify(e));
100
+ }
101
+ return { ...e };
102
+ }
103
+ function F(e, n, t) {
104
+ const i = [].slice.call(document.querySelectorAll(e)), r = new IntersectionObserver(
105
+ (s, o) => {
106
+ for (let a = 0; a < s.length; a++) {
107
+ const c = s[a];
108
+ if (c.isIntersecting) {
109
+ const l = c.target;
110
+ n(l, o), o.unobserve(l);
111
+ }
112
+ }
113
+ },
114
+ t
115
+ );
116
+ i.forEach((s) => {
117
+ r.observe(s);
118
+ });
38
119
  }
39
- const m = {
40
- formatFn: u,
41
- unFormatFn: i
120
+ let u = !1;
121
+ const P = (e) => {
122
+ document.addEventListener("notification-permission-changed", e);
123
+ }, x = () => {
124
+ !navigator.permissions || !navigator.permissions.query || (!u && navigator.permissions.query({ name: "notifications" }).then(function(e) {
125
+ e.onchange = function() {
126
+ document.dispatchEvent(
127
+ new CustomEvent("notification-permission-changed", {
128
+ detail: { permissionState: this.state }
129
+ })
130
+ );
131
+ };
132
+ }), u = !0);
42
133
  };
43
- function s() {
44
- console.log("CIAO");
134
+ function M(e, n, t) {
135
+ return e.replace(new RegExp(n, "g"), t);
45
136
  }
137
+ function g(e) {
138
+ return e.charAt(0).toUpperCase() + e.slice(1);
139
+ }
140
+ function R(e, n, t, i) {
141
+ const r = [];
142
+ e && e !== "ND" && (n && n !== "ND" && n !== "0" ? r.push(`${e} ${n}`) : r.push(e)), t && i ? r.push(`${t} (${i})`) : r.push(t);
143
+ const s = r.filter((o) => !!o).join(", ");
144
+ return g(s);
145
+ }
146
+ function D(e) {
147
+ if (!e)
148
+ return "";
149
+ const n = document.createElement("span");
150
+ return n.innerHTML = e, n.textContent || "";
151
+ }
152
+ function q(e, n) {
153
+ const t = new RegExp(
154
+ Object.keys(n).map((i) => i.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&")).join("|"),
155
+ "gi"
156
+ );
157
+ return e.replace(t, function(i) {
158
+ return n[i.toLowerCase()];
159
+ });
160
+ }
161
+ function j(e) {
162
+ return e.replace(/[\uA78C\uA78B]/g, "'").replace(/[^\x00-\x7F]/g, "");
163
+ }
164
+ const B = (e, n = {}) => {
165
+ if (Object.keys(n).length === 0)
166
+ throw "The params object can't be empty";
167
+ const t = new URL(e);
168
+ for (const i in n)
169
+ t.searchParams.append(i, `${n[i]}`);
170
+ return t;
171
+ };
46
172
  export {
47
- s as ciao,
48
- f as formatFloat,
49
- c as formatInteger,
50
- u as formatLocaleNumber,
51
- o as formatNumber,
52
- m as formatterNumberObj,
53
- i as parseLocaleNumber
173
+ x as addPermissionStateListener,
174
+ B as appendQueryString,
175
+ O as awaitableSetTimeout,
176
+ g as capitalizeFirstLetter,
177
+ j as cleanASCII,
178
+ D as decodeTextWithEntities,
179
+ N as deepCopy,
180
+ R as formatAddress,
181
+ E as formatFloat,
182
+ I as formatInteger,
183
+ d as formatLocaleNumber,
184
+ f as formatNumber,
185
+ L as formatterNumberObj,
186
+ w as isArrNullOrEmpty,
187
+ k as isEmptyObject,
188
+ y as isMobile,
189
+ A as isSafari,
190
+ v as isiOSDevice,
191
+ F as observeOnce,
192
+ P as onNotificationsPermissionChange,
193
+ p as parseLocaleNumber,
194
+ m as redirectToApp,
195
+ M as replaceAll,
196
+ q as replaceAllTokens,
197
+ h as rgba,
198
+ $ as shallowCopyObjectTo,
199
+ S as showAddFavoritesIcon,
200
+ b as showRemoveFavoritesIcons
54
201
  };
@@ -1 +1 @@
1
- (function(n,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(n=typeof globalThis<"u"?globalThis:n||self,r(n.utilities={}))})(this,function(n){"use strict";const r=(t,e)=>{e||(e=navigator.language);const o=Intl.NumberFormat(e).format(1111).replace(/\p{Number}/gu,""),f=Intl.NumberFormat(e).format(1.1).replace(/\p{Number}/gu,""),a=parseFloat(`${t}`.replace(new RegExp("\\"+o,"g"),"").replace(new RegExp("\\"+f),"."));return isNaN(a)?"":a},u=(t,e)=>{if(t==null)return;if(t=parseFloat(`${t}`),isNaN(t))return"";const o={style:"currency",currency:"EUR"};let a={...{maximumFractionDigits:0}};return e!=null&&e.currency&&(a={...a,...o}),new Intl.NumberFormat(navigator.language,{...a}).format(t)};function c(t,e=!1){return t==null?"":i(e?Math.round(t):Math.floor(t),0)}function i(t,e){return!t&&t!==0?"":t.toLocaleString("it-IT",{minimumFractionDigits:e,maximumFractionDigits:e})}function m(t,e=2){return i(t,e)}const l={formatFn:u,unFormatFn:r};function s(){console.log("CIAO")}n.ciao=s,n.formatFloat=m,n.formatInteger=c,n.formatLocaleNumber=u,n.formatNumber=i,n.formatterNumberObj=l,n.parseLocaleNumber=r,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
1
+ (function(i,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(i=typeof globalThis<"u"?globalThis:i||self,o(i.utilities={}))})(this,function(i){"use strict";const o=(e="Banner")=>{var n;if(window.navigator.userAgent.includes("iPhone"))window.navigator.userAgent.match(/firefox|fxios/i)||window.location.replace("wikicasa://"),setTimeout(()=>{window.location.replace("https://apps.apple.com/it/app/wikicasa/id1626038379")},500);else if(window.navigator.userAgent.includes("Android")){const t="intent://wikicasa.it/#Intent;scheme=https;package=it.wikicasa.wikicasa_app;end";window.location.replace(t)}window.dataLayer.push({event_name:"open_store",event_location:e,OS:(n=window.navigator)==null?void 0:n.userAgent})},h=e=>!(e!=null&&e.length);function y(e,n){e=e.replace("#","");const t=parseInt(e.substring(0,2),16),a=parseInt(e.substring(2,4),16),r=parseInt(e.substring(4,6),16);return`rgba(${t}, ${a}, ${r}, ${n})`}const v=()=>/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,b=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),A=()=>/^((?!chrome|android).)*safari/i.test(navigator.userAgent),S=e=>{document.querySelectorAll(`a[class^=fav][data-id='${e}']`).forEach(t=>{t.classList.contains("fav-save")?t.style.display="none":t.classList.contains("fav-remove")&&(t.style.display="block")})},O=e=>{document.querySelectorAll(`a[class^=fav][data-id='${e}']`).forEach(t=>{t.classList.contains("fav-save")?t.style.display="block":t.classList.contains("fav-remove")&&(t.style.display="none")})},I=(e,n)=>new Promise((t,a)=>{setTimeout(()=>{try{e&&e(),t()}catch{a()}},n)}),f=(e,n)=>{n||(n=navigator.language);const t=Intl.NumberFormat(n).format(1111).replace(/\p{Number}/gu,""),a=Intl.NumberFormat(n).format(1.1).replace(/\p{Number}/gu,""),r=parseFloat(`${e}`.replace(new RegExp("\\"+t,"g"),"").replace(new RegExp("\\"+a),"."));return isNaN(r)?"":r},d=(e,n)=>{if(e==null)return;if(e=parseFloat(`${e}`),isNaN(e))return"";const t={style:"currency",currency:"EUR"};let r={...{maximumFractionDigits:0}};return n!=null&&n.currency&&(r={...r,...t}),new Intl.NumberFormat(navigator.language,{...r}).format(e)};function L(e,n=!1){return e==null?"":l(n?Math.round(e):Math.floor(e),0)}function l(e,n){return!e&&e!==0?"":e.toLocaleString("it-IT",{minimumFractionDigits:n,maximumFractionDigits:n})}function E(e,n=2){return l(e,n)}const N={formatFn:d,unFormatFn:f};function F(e,n){if(e)for(const t in e)n[t]=e[t]}function $(e){return!e||!Object.keys(e).length}function k(e){if(!e)return null;for(const n in e){const t=e[n];if(t&&(Array.isArray(t)||Object.keys(t).length>0))return JSON.parse(JSON.stringify(e))}return{...e}}function P(e,n,t){const a=[].slice.call(document.querySelectorAll(e)),r=new IntersectionObserver((s,c)=>{for(let u=0;u<s.length;u++){const p=s[u];if(p.isIntersecting){const w=p.target;n(w,c),c.unobserve(w)}}},t);a.forEach(s=>{r.observe(s)})}let m=!1;const j=e=>{document.addEventListener("notification-permission-changed",e)},M=()=>{!navigator.permissions||!navigator.permissions.query||(!m&&navigator.permissions.query({name:"notifications"}).then(function(e){e.onchange=function(){document.dispatchEvent(new CustomEvent("notification-permission-changed",{detail:{permissionState:this.state}}))}}),m=!0)};function R(e,n,t){return e.replace(new RegExp(n,"g"),t)}function g(e){return e.charAt(0).toUpperCase()+e.slice(1)}function D(e,n,t,a){const r=[];e&&e!=="ND"&&(n&&n!=="ND"&&n!=="0"?r.push(`${e} ${n}`):r.push(e)),t&&a?r.push(`${t} (${a})`):r.push(t);const s=r.filter(c=>!!c).join(", ");return g(s)}function q(e){if(!e)return"";const n=document.createElement("span");return n.innerHTML=e,n.textContent||""}function C(e,n){const t=new RegExp(Object.keys(n).map(a=>a.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")).join("|"),"gi");return e.replace(t,function(a){return n[a.toLowerCase()]})}function T(e){return e.replace(/[\uA78C\uA78B]/g,"'").replace(/[^\x00-\x7F]/g,"")}const B=(e,n={})=>{if(Object.keys(n).length===0)throw"The params object can't be empty";const t=new URL(e);for(const a in n)t.searchParams.append(a,`${n[a]}`);return t};i.addPermissionStateListener=M,i.appendQueryString=B,i.awaitableSetTimeout=I,i.capitalizeFirstLetter=g,i.cleanASCII=T,i.decodeTextWithEntities=q,i.deepCopy=k,i.formatAddress=D,i.formatFloat=E,i.formatInteger=L,i.formatLocaleNumber=d,i.formatNumber=l,i.formatterNumberObj=N,i.isArrNullOrEmpty=h,i.isEmptyObject=$,i.isMobile=b,i.isSafari=A,i.isiOSDevice=v,i.observeOnce=P,i.onNotificationsPermissionChange=j,i.parseLocaleNumber=f,i.redirectToApp=o,i.replaceAll=R,i.replaceAllTokens=C,i.rgba=y,i.shallowCopyObjectTo=F,i.showAddFavoritesIcon=O,i.showRemoveFavoritesIcons=S,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1 @@
1
+ export declare const redirectToApp: (eventLocation?: "Banner" | "MenuUserModal") => void;
@@ -0,0 +1 @@
1
+ export declare const isArrNullOrEmpty: (arrToCheck?: any[]) => boolean;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @return {string}
3
+ */
4
+ export declare function rgba(hex: string, opacity: number): string;
@@ -0,0 +1,8 @@
1
+ declare global {
2
+ interface Window {
3
+ MSStream: any;
4
+ }
5
+ }
6
+ export declare const isiOSDevice: () => boolean;
7
+ export declare const isMobile: () => boolean;
8
+ export declare const isSafari: () => boolean;
@@ -0,0 +1,2 @@
1
+ export declare const showRemoveFavoritesIcons: (id: number) => void;
2
+ export declare const showAddFavoritesIcon: (id: number) => void;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @param fn - pass null to set a generic await
3
+ * @param timeoutMs time to wait before firing the callback function
4
+ **/
5
+ export declare const awaitableSetTimeout: (fn: (() => void) | null, timeoutMs: number) => Promise<void>;
@@ -0,0 +1,8 @@
1
+ export declare function shallowCopyObjectTo(from: Record<string, any> | undefined, to: Record<string, any>): void;
2
+ export declare function isEmptyObject(obj: any): boolean;
3
+ /**
4
+ * Makes the deep copy of the input object.
5
+ * For performance purposes, if the values of the properties of the object to copy are all primitive types then we will use the spread operator (faster).
6
+ * Otherwise, to ensure the deep copy of nested objects and arrays, we will use JSON.parse and JSON.stringify (slower).
7
+ * */
8
+ export declare function deepCopy<T>(objToCopy: T): T | null;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Observes if an element is visible in the viewport. Once it is visible, the listener is removed
3
+ * */
4
+ export declare function observeOnce(selector: string, fn: (Element: Node, IntersectionObserver: IntersectionObserver) => void, options?: IntersectionObserverInit): void;
@@ -0,0 +1,10 @@
1
+ export type PermissionStates = "granted" | "denied" | "prompt";
2
+ export type PermissionChangeEvent = CustomEvent<{
3
+ permissionState: PermissionStates;
4
+ }>;
5
+ export type NotificationPermissionChangeHandler = (e: PermissionChangeEvent) => void | Promise<void>;
6
+ export declare const onNotificationsPermissionChange: (cb: NotificationPermissionChangeHandler) => void;
7
+ /**
8
+ * Add an event listener which emits the event "notification-permission-changed" when the user changes the state of the notifications
9
+ * */
10
+ export declare const addPermissionStateListener: () => void;
@@ -0,0 +1,12 @@
1
+ export declare function replaceAll(str: string, find: string, replace: string): string;
2
+ export declare function capitalizeFirstLetter(string: string): string;
3
+ export declare function formatAddress(streetName: string, streetNumber: string, cityName: string, provinceAcronym?: string): string;
4
+ export declare function decodeTextWithEntities(strWithEntities: string | null): string;
5
+ /**
6
+ * Replaces a given string with the values of the object
7
+ * @param str string to replace
8
+ * @param mapObj Object whose keys are the tokens to replace and whose values are the ones that will replace that matched token
9
+ * e.g. replaceAllToken('Here we go', {Here: Now, go: eat}) returns 'Now we eat'
10
+ * */
11
+ export declare function replaceAllTokens(str: string, mapObj: Record<string, string>): string;
12
+ export declare function cleanASCII(str: string): string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * <p>Adds a query string to the provided URL using the params object</p>
3
+ * <p>e.g. Input => URL: www.sample.com, params = {userId: 56, name: "Jonas"}</p>
4
+ * Output => www.sample.com?userId=56&name=Jonas
5
+ * @param url The url that will contain the query string
6
+ * @param params The object that will be transformed into a query string
7
+ * @return A new url instance containing the query string
8
+ * */
9
+ export declare const appendQueryString: (url: URL, params?: Record<string, any>) => URL;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@wikicasa-dev/utilities",
3
- "version": "0.0.7",
3
+ "version": "0.0.10",
4
4
  "description": "Wikicasa frontend utilities",
5
5
  "type": "module",
6
6
  "main": "./dist/utilities.umd.cjs",
7
7
  "module": "./dist/utilities.js",
8
- "types": "./dist/main.d.ts",
9
8
  "exports": {
10
9
  ".": {
10
+ "types": "./dist/index.d.ts",
11
11
  "import": "./dist/utilities.js",
12
12
  "require": "./dist/utilities.umd.cjs"
13
13
  }
@@ -15,11 +15,6 @@
15
15
  "files": [
16
16
  "dist"
17
17
  ],
18
- "scripts": {
19
- "dev": "vite",
20
- "build": "tsc && vite build",
21
- "preview": "vite preview"
22
- },
23
18
  "repository": {
24
19
  "type": "git",
25
20
  "url": "git+https://matteocarniglia@bitbucket.org/wikicasa/wikicasa-fe.git"
@@ -35,5 +30,10 @@
35
30
  "typescript": "^5.0.2",
36
31
  "vite": "^4.4.5",
37
32
  "vite-plugin-dts": "^3.5.2"
33
+ },
34
+ "scripts": {
35
+ "dev": "vite",
36
+ "build": "tsc && vite build",
37
+ "preview": "vite preview"
38
38
  }
39
- }
39
+ }
package/dist/main.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function ciao(): void;
2
- export { formatInteger, formatFloat, parseLocaleNumber, formatLocaleNumber, formatNumber, formatterNumberObj } from "./NumberUtils";