polpo 0.1.11 → 0.1.13

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/helpers.js CHANGED
@@ -1,3 +1,277 @@
1
1
  "use client";
2
- var c=(t,o=2)=>{if(t===0)return"0 Bytes";let r=1e3,a=o<0?0:o,e=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=Math.floor(Math.log(t)/Math.log(r));return parseFloat((t/Math.pow(r,n)).toFixed(a))+" "+e[n]};var h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],E=t=>{let o=new Date(t);return Number.isNaN(o.getTime())?t:`${h[o.getMonth()]} ${o.getFullYear()}`},m=(t,o)=>{let r=new Date(t);if(Number.isNaN(r.getTime()))return"";let a=Date.parse(o)?new Date(o):new Date,e=Math.abs(a.getTime()-r.getTime()),n=Math.floor(e/(1e3*60)),i=Math.floor(e/(1e3*60*60)),T=Math.floor(e/(1e3*60*60*24)),l=Math.floor(T/30),p=Math.floor(T/365);return p>0?`${p} year${p>1?"s":""}`:l>0?`${l} month${l>1?"s":""}`:T>0?`${T} day${T>1?"s":""}`:i>0?`${i} hour${i>1?"s":""}`:`${n} minute${n!==1?"s":""}`};var u=(s=>(s.CENTER="center",s.TOP="top",s.TOP_LEFT="top left",s.TOP_RIGHT="top right",s.TOP_CENTER="top center",s.LEFT="left",s.LEFT_TOP="left top",s.LEFT_BOTTOM="left bottom",s.LEFT_CENTER="left center",s.RIGHT="right",s.RIGHT_TOP="right top",s.RIGHT_BOTTOM="right bottom",s.RIGHT_CENTER="right center",s.BOTTOM="bottom",s.BOTTOM_LEFT="bottom left",s.BOTTOM_RIGHT="bottom right",s.BOTTOM_CENTER="bottom center",s))(u||{}),P=({c:t,m:o,offset:r,position:a})=>{let e=t.y+t.h+r,n=t.x-(o.w-t.w)*(50/100);switch(a){case"top":case"top center":e=t.y-o.h-r,n=t.x-(o.w-t.w)/2;break;case"top left":e=t.y-o.h-r,n=t.x-o.w+t.w;break;case"top right":e=t.y-o.h-r,n=t.x;break;case"bottom":case"bottom center":e=t.y+t.h+r,n=t.x-(o.w-t.w)/2;break;case"bottom left":e=t.y+t.h+r,n=t.x-o.w+t.w;break;case"bottom right":e=t.y+t.h+r,n=t.x;break;case"left":case"left center":e=t.y-(o.h-t.h)/2,n=t.x-o.w-r;break;case"left top":e=t.y-o.h+t.h,n=t.x-o.w-r;break;case"left bottom":e=t.y,n=t.x-o.w-r;break;case"right":case"right center":e=t.y-(o.h-t.h)/2,n=t.x+t.w+r;break;case"right top":e=t.y-o.h+t.h,n=t.x+t.w+r;break;case"right bottom":e=t.y,n=t.x+t.w+r;break}return{left:Math.round(n),top:Math.round(e)}},O=({top:t,left:o},r,a,e)=>{let n=r.split(" "),i=[],T=o+e.w+a-window.innerWidth,l=t+e.h+a-window.innerHeight;for(let p of n)p==="top"&&t<a?i.push("bottom"):p==="left"&&o<a?i.push("right"):p==="bottom"&&l>0?i.push("top"):p==="right"&&T>0?i.push("left"):i.push(p);return i.join(" ")},M=({top:t,left:o},r,a)=>{let e=o+r.w+a-window.innerWidth,n=t+r.h+a-window.innerHeight;return o=e>0?o-e:o,t=n>0?t-n:t,o=o<a?a:o,t=t<a?a:t,{top:t,left:o}},R=({c:t,m:o,offset:r,windowOffset:a,position:e})=>{let n={c:t,m:o,offset:r,position:e},i=P(n),T=O(i,e,a,o);T!==e&&(i=P({...n,position:T}));let l=M(i,o,a);return{left:`${l.left}px`,top:`${l.top}px`}};var _=({position:t,windowOffset:o})=>{switch(t){case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"top":case"top center":return{top:`${o}px`,left:"50%",transform:"translateX(-50%)"};case"top left":case"left top":return{top:`${o}px`,left:`${o}px`};case"top right":case"right top":return{top:`${o}px`,right:`${o}px`};case"bottom":case"bottom center":return{bottom:`${o}px`,left:"50%",transform:"translateX(-50%)"};case"left bottom":case"bottom left":return{bottom:`${o}px`,left:`${o}px`};case"right bottom":case"bottom right":return{bottom:`${o}px`,right:`${o}px`};case"left":case"left center":return{top:"50%",left:`${o}px`,transform:"translateY(-50%)"};case"right":case"right center":return{top:"50%",right:`${o}px`,transform:"translateY(-50%)"}}return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"}};var B=(t,o={})=>{let{separator:r=" ",variant:a="each-word",join:e=r}=o;return a==="first-word"?t[0].toUpperCase()+t.slice(1):t.split(r).map(i=>i[0].toUpperCase()+i.slice(1)).join(e)};export{u as PositionContainer,M as fixModalPosition,c as formatBytes,E as formatDate,P as getModalPosition,R as getModalPositionRelativeToContainer,_ as getModalPositionRelativeToScreen,O as getOppositePosition,m as timeBetween,B as toCapitalize};
2
+
3
+ // src/helpers/format-bytes.ts
4
+ var formatBytes = (bytes, decimals = 2) => {
5
+ if (bytes === 0) return "0 Bytes";
6
+ const k = 1e3;
7
+ const dm = decimals < 0 ? 0 : decimals;
8
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
9
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
10
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
11
+ };
12
+
13
+ // src/helpers/format-dates.ts
14
+ var MONTHS_SHORT = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
15
+ var formatDate = (date) => {
16
+ const parsedDate = new Date(date);
17
+ if (Number.isNaN(parsedDate.getTime())) {
18
+ return date;
19
+ }
20
+ return `${MONTHS_SHORT[parsedDate.getMonth()]} ${parsedDate.getFullYear()}`;
21
+ };
22
+ var timeBetween = (date_start, date_end) => {
23
+ const start = new Date(date_start);
24
+ if (Number.isNaN(start.getTime())) {
25
+ return "";
26
+ }
27
+ const end = Date.parse(date_end) ? new Date(date_end) : /* @__PURE__ */ new Date();
28
+ const diffMs = Math.abs(end.getTime() - start.getTime());
29
+ const minutes = Math.floor(diffMs / (1e3 * 60));
30
+ const hours = Math.floor(diffMs / (1e3 * 60 * 60));
31
+ const days = Math.floor(diffMs / (1e3 * 60 * 60 * 24));
32
+ const months = Math.floor(days / 30);
33
+ const years = Math.floor(days / 365);
34
+ if (years > 0) {
35
+ return `${years} year${years > 1 ? "s" : ""}`;
36
+ }
37
+ if (months > 0) {
38
+ return `${months} month${months > 1 ? "s" : ""}`;
39
+ }
40
+ if (days > 0) {
41
+ return `${days} day${days > 1 ? "s" : ""}`;
42
+ }
43
+ if (hours > 0) {
44
+ return `${hours} hour${hours > 1 ? "s" : ""}`;
45
+ }
46
+ return `${minutes} minute${minutes !== 1 ? "s" : ""}`;
47
+ };
48
+
49
+ // src/helpers/get-modal-position.ts
50
+ var PositionContainer = /* @__PURE__ */ ((PositionContainer2) => {
51
+ PositionContainer2["CENTER"] = "center";
52
+ PositionContainer2["TOP"] = "top";
53
+ PositionContainer2["TOP_LEFT"] = "top left";
54
+ PositionContainer2["TOP_RIGHT"] = "top right";
55
+ PositionContainer2["TOP_CENTER"] = "top center";
56
+ PositionContainer2["LEFT"] = "left";
57
+ PositionContainer2["LEFT_TOP"] = "left top";
58
+ PositionContainer2["LEFT_BOTTOM"] = "left bottom";
59
+ PositionContainer2["LEFT_CENTER"] = "left center";
60
+ PositionContainer2["RIGHT"] = "right";
61
+ PositionContainer2["RIGHT_TOP"] = "right top";
62
+ PositionContainer2["RIGHT_BOTTOM"] = "right bottom";
63
+ PositionContainer2["RIGHT_CENTER"] = "right center";
64
+ PositionContainer2["BOTTOM"] = "bottom";
65
+ PositionContainer2["BOTTOM_LEFT"] = "bottom left";
66
+ PositionContainer2["BOTTOM_RIGHT"] = "bottom right";
67
+ PositionContainer2["BOTTOM_CENTER"] = "bottom center";
68
+ return PositionContainer2;
69
+ })(PositionContainer || {});
70
+ var getModalPosition = ({ c, m, offset, position }) => {
71
+ let top = c.y + c.h + offset;
72
+ let left = c.x - (m.w - c.w) * (50 / 100);
73
+ switch (position) {
74
+ case "top" /* TOP */:
75
+ case "top center" /* TOP_CENTER */:
76
+ top = c.y - m.h - offset;
77
+ left = c.x - (m.w - c.w) / 2;
78
+ break;
79
+ case "top left" /* TOP_LEFT */:
80
+ top = c.y - m.h - offset;
81
+ left = c.x - m.w + c.w;
82
+ break;
83
+ case "top right" /* TOP_RIGHT */:
84
+ top = c.y - m.h - offset;
85
+ left = c.x;
86
+ break;
87
+ case "bottom" /* BOTTOM */:
88
+ case "bottom center" /* BOTTOM_CENTER */:
89
+ top = c.y + c.h + offset;
90
+ left = c.x - (m.w - c.w) / 2;
91
+ break;
92
+ case "bottom left" /* BOTTOM_LEFT */:
93
+ top = c.y + c.h + offset;
94
+ left = c.x - m.w + c.w;
95
+ break;
96
+ case "bottom right" /* BOTTOM_RIGHT */:
97
+ top = c.y + c.h + offset;
98
+ left = c.x;
99
+ break;
100
+ case "left" /* LEFT */:
101
+ case "left center" /* LEFT_CENTER */:
102
+ top = c.y - (m.h - c.h) / 2;
103
+ left = c.x - m.w - offset;
104
+ break;
105
+ case "left top" /* LEFT_TOP */:
106
+ top = c.y - m.h + c.h;
107
+ left = c.x - m.w - offset;
108
+ break;
109
+ case "left bottom" /* LEFT_BOTTOM */:
110
+ top = c.y;
111
+ left = c.x - m.w - offset;
112
+ break;
113
+ case "right" /* RIGHT */:
114
+ case "right center" /* RIGHT_CENTER */:
115
+ top = c.y - (m.h - c.h) / 2;
116
+ left = c.x + c.w + offset;
117
+ break;
118
+ case "right top" /* RIGHT_TOP */:
119
+ top = c.y - m.h + c.h;
120
+ left = c.x + c.w + offset;
121
+ break;
122
+ case "right bottom" /* RIGHT_BOTTOM */:
123
+ top = c.y;
124
+ left = c.x + c.w + offset;
125
+ break;
126
+ }
127
+ return {
128
+ left: Math.round(left),
129
+ top: Math.round(top)
130
+ };
131
+ };
132
+ var getOppositePosition = ({ top, left }, position, windowOffset, m) => {
133
+ const positions = position.split(" ");
134
+ const newPosition = [];
135
+ const rightOffset = left + m.w + windowOffset - window.innerWidth;
136
+ const bottomOffset = top + m.h + windowOffset - window.innerHeight;
137
+ for (const p of positions) {
138
+ if (p === "top" /* TOP */ && top < windowOffset) {
139
+ newPosition.push("bottom" /* BOTTOM */);
140
+ } else if (p === "left" /* LEFT */ && left < windowOffset) {
141
+ newPosition.push("right" /* RIGHT */);
142
+ } else if (p === "bottom" /* BOTTOM */ && bottomOffset > 0) {
143
+ newPosition.push("top" /* TOP */);
144
+ } else if (p === "right" /* RIGHT */ && rightOffset > 0) {
145
+ newPosition.push("left" /* LEFT */);
146
+ } else {
147
+ newPosition.push(p);
148
+ }
149
+ }
150
+ return newPosition.join(" ");
151
+ };
152
+ var fixModalPosition = ({ top, left }, m, windowOffset) => {
153
+ const rightOffset = left + m.w + windowOffset - window.innerWidth;
154
+ const bottomOffset = top + m.h + windowOffset - window.innerHeight;
155
+ left = rightOffset > 0 ? left - rightOffset : left;
156
+ top = bottomOffset > 0 ? top - bottomOffset : top;
157
+ left = left < windowOffset ? windowOffset : left;
158
+ top = top < windowOffset ? windowOffset : top;
159
+ return { top, left };
160
+ };
161
+ var getModalPositionRelativeToContainer = ({
162
+ c,
163
+ m,
164
+ offset,
165
+ windowOffset,
166
+ position
167
+ }) => {
168
+ const params = { c, m, offset, position };
169
+ let modalContainerStyle = getModalPosition(params);
170
+ const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);
171
+ if (oppositePosition !== position) {
172
+ modalContainerStyle = getModalPosition({
173
+ ...params,
174
+ position: oppositePosition
175
+ });
176
+ }
177
+ const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);
178
+ return {
179
+ left: `${fixedPosition.left}px`,
180
+ top: `${fixedPosition.top}px`
181
+ };
182
+ };
183
+
184
+ // src/helpers/get-modal-position-relative-to-screen.ts
185
+ var getModalPositionRelativeToScreen = ({
186
+ position,
187
+ windowOffset
188
+ }) => {
189
+ switch (position) {
190
+ case "center" /* CENTER */:
191
+ return {
192
+ top: "50%",
193
+ left: "50%",
194
+ transform: "translate(-50%, -50%)"
195
+ };
196
+ case "top" /* TOP */:
197
+ case "top center" /* TOP_CENTER */:
198
+ return {
199
+ top: `${windowOffset}px`,
200
+ left: "50%",
201
+ transform: "translateX(-50%)"
202
+ };
203
+ case "top left" /* TOP_LEFT */:
204
+ case "left top" /* LEFT_TOP */:
205
+ return {
206
+ top: `${windowOffset}px`,
207
+ left: `${windowOffset}px`
208
+ };
209
+ case "top right" /* TOP_RIGHT */:
210
+ case "right top" /* RIGHT_TOP */:
211
+ return {
212
+ top: `${windowOffset}px`,
213
+ right: `${windowOffset}px`
214
+ };
215
+ case "bottom" /* BOTTOM */:
216
+ case "bottom center" /* BOTTOM_CENTER */:
217
+ return {
218
+ bottom: `${windowOffset}px`,
219
+ left: "50%",
220
+ transform: "translateX(-50%)"
221
+ };
222
+ case "left bottom" /* LEFT_BOTTOM */:
223
+ case "bottom left" /* BOTTOM_LEFT */:
224
+ return {
225
+ bottom: `${windowOffset}px`,
226
+ left: `${windowOffset}px`
227
+ };
228
+ case "right bottom" /* RIGHT_BOTTOM */:
229
+ case "bottom right" /* BOTTOM_RIGHT */:
230
+ return {
231
+ bottom: `${windowOffset}px`,
232
+ right: `${windowOffset}px`
233
+ };
234
+ case "left" /* LEFT */:
235
+ case "left center" /* LEFT_CENTER */:
236
+ return {
237
+ top: "50%",
238
+ left: `${windowOffset}px`,
239
+ transform: "translateY(-50%)"
240
+ };
241
+ case "right" /* RIGHT */:
242
+ case "right center" /* RIGHT_CENTER */:
243
+ return {
244
+ top: "50%",
245
+ right: `${windowOffset}px`,
246
+ transform: "translateY(-50%)"
247
+ };
248
+ }
249
+ return {
250
+ top: "50%",
251
+ left: "50%",
252
+ transform: "translate(-50%, -50%)"
253
+ };
254
+ };
255
+
256
+ // src/helpers/text/to-capitalize.ts
257
+ var toCapitalize = (text, options = {}) => {
258
+ const { separator = " ", variant = "each-word", join = separator } = options;
259
+ if (variant === "first-word") {
260
+ return text[0].toUpperCase() + text.slice(1);
261
+ }
262
+ const words = text.split(separator);
263
+ return words.map((word) => word[0].toUpperCase() + word.slice(1)).join(join);
264
+ };
265
+ export {
266
+ PositionContainer,
267
+ fixModalPosition,
268
+ formatBytes,
269
+ formatDate,
270
+ getModalPosition,
271
+ getModalPositionRelativeToContainer,
272
+ getModalPositionRelativeToScreen,
273
+ getOppositePosition,
274
+ timeBetween,
275
+ toCapitalize
276
+ };
3
277
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/helpers/format-bytes.ts","../src/helpers/format-dates.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/helpers/text/to-capitalize.ts"],"sourcesContent":["export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","const MONTHS_SHORT = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nexport const formatDate = (date: string) => {\n const parsedDate = new Date(date);\n\n if (Number.isNaN(parsedDate.getTime())) {\n return date;\n }\n\n return `${MONTHS_SHORT[parsedDate.getMonth()]} ${parsedDate.getFullYear()}`;\n};\n\nexport const timeBetween = (date_start: string, date_end: string) => {\n const start = new Date(date_start);\n\n if (Number.isNaN(start.getTime())) {\n return '';\n }\n\n const end = Date.parse(date_end) ? new Date(date_end) : new Date();\n\n const diffMs = Math.abs(end.getTime() - start.getTime());\n\n const minutes = Math.floor(diffMs / (1000 * 60));\n const hours = Math.floor(diffMs / (1000 * 60 * 60));\n const days = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) {\n return `${years} year${years > 1 ? 's' : ''}`;\n }\n\n if (months > 0) {\n return `${months} month${months > 1 ? 's' : ''}`;\n }\n\n if (days > 0) {\n return `${days} day${days > 1 ? 's' : ''}`;\n }\n\n if (hours > 0) {\n return `${hours} hour${hours > 1 ? 's' : ''}`;\n }\n\n return `${minutes} minute${minutes !== 1 ? 's' : ''}`;\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","export type ToCapitalizeOptions = Partial<{\n separator: string;\n join: string;\n variant: 'first-word' | 'each-word';\n}>;\n\nexport const toCapitalize = (text: string, options: ToCapitalizeOptions = {}) => {\n const { separator = ' ', variant = 'each-word', join = separator } = options;\n\n if (variant === 'first-word') {\n return text[0].toUpperCase() + text.slice(1);\n }\n\n const words = text.split(separator);\n\n return words.map(word => word[0].toUpperCase() + word.slice(1)).join(join);\n};\n"],"mappings":"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","names":["formatBytes","bytes","decimals","k","dm","sizes","i","MONTHS_SHORT","formatDate","date","parsedDate","timeBetween","date_start","date_end","start","end","diffMs","minutes","hours","days","months","years","PositionContainer","getModalPosition","c","m","offset","position","top","left","getOppositePosition","windowOffset","positions","newPosition","rightOffset","bottomOffset","fixModalPosition","getModalPositionRelativeToContainer","params","modalContainerStyle","oppositePosition","fixedPosition","getModalPositionRelativeToScreen","position","windowOffset","toCapitalize","text","options","separator","variant","join","word"]}
1
+ {"version":3,"sources":["../src/helpers/format-bytes.ts","../src/helpers/format-dates.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/helpers/text/to-capitalize.ts"],"sourcesContent":["export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","const MONTHS_SHORT = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nexport const formatDate = (date: string) => {\n const parsedDate = new Date(date);\n\n if (Number.isNaN(parsedDate.getTime())) {\n return date;\n }\n\n return `${MONTHS_SHORT[parsedDate.getMonth()]} ${parsedDate.getFullYear()}`;\n};\n\nexport const timeBetween = (date_start: string, date_end: string) => {\n const start = new Date(date_start);\n\n if (Number.isNaN(start.getTime())) {\n return '';\n }\n\n const end = Date.parse(date_end) ? new Date(date_end) : new Date();\n\n const diffMs = Math.abs(end.getTime() - start.getTime());\n\n const minutes = Math.floor(diffMs / (1000 * 60));\n const hours = Math.floor(diffMs / (1000 * 60 * 60));\n const days = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) {\n return `${years} year${years > 1 ? 's' : ''}`;\n }\n\n if (months > 0) {\n return `${months} month${months > 1 ? 's' : ''}`;\n }\n\n if (days > 0) {\n return `${days} day${days > 1 ? 's' : ''}`;\n }\n\n if (hours > 0) {\n return `${hours} hour${hours > 1 ? 's' : ''}`;\n }\n\n return `${minutes} minute${minutes !== 1 ? 's' : ''}`;\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","export type ToCapitalizeOptions = Partial<{\n separator: string;\n join: string;\n variant: 'first-word' | 'each-word';\n}>;\n\nexport const toCapitalize = (text: string, options: ToCapitalizeOptions = {}) => {\n const { separator = ' ', variant = 'each-word', join = separator } = options;\n\n if (variant === 'first-word') {\n return text[0].toUpperCase() + text.slice(1);\n }\n\n const words = text.split(separator);\n\n return words.map(word => word[0].toUpperCase() + word.slice(1)).join(join);\n};\n"],"mappings":"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","names":["PositionContainer"]}