dinocollab-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/README.md +54 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js +431 -0
  3. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  4. package/dist/assets/vector-404265a04f4f9c8be1f.webp +0 -0
  5. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@1_d0d2002d9033600b6738d939bd598bc6/node_modules/tslib/tslib.es6.js +46 -0
  6. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@1_d0d2002d9033600b6738d939bd598bc6/node_modules/tslib/tslib.es6.js.map +1 -0
  7. package/dist/src/api-context/alert-global.js +151 -0
  8. package/dist/src/api-context/alert-global.js.map +1 -0
  9. package/dist/src/api-context/drawer-global.js +105 -0
  10. package/dist/src/api-context/drawer-global.js.map +1 -0
  11. package/dist/src/api-context/global-modal.js +87 -0
  12. package/dist/src/api-context/global-modal.js.map +1 -0
  13. package/dist/src/api-context/popover-global.js +102 -0
  14. package/dist/src/api-context/popover-global.js.map +1 -0
  15. package/dist/src/api-context/popover.js +86 -0
  16. package/dist/src/api-context/popover.js.map +1 -0
  17. package/dist/src/api-context/ui.units.js +21 -0
  18. package/dist/src/api-context/ui.units.js.map +1 -0
  19. package/dist/src/components/copy-to-clipboard.js +105 -0
  20. package/dist/src/components/copy-to-clipboard.js.map +1 -0
  21. package/dist/src/components/custom.breadcrumbs.js +61 -0
  22. package/dist/src/components/custom.breadcrumbs.js.map +1 -0
  23. package/dist/src/components/help-tooltip.js +91 -0
  24. package/dist/src/components/help-tooltip.js.map +1 -0
  25. package/dist/src/components/image-with-fallback.js +48 -0
  26. package/dist/src/components/image-with-fallback.js.map +1 -0
  27. package/dist/src/components/text-editor.js +117 -0
  28. package/dist/src/components/text-editor.js.map +1 -0
  29. package/dist/src/form/create.autocomplete.chips.js +218 -0
  30. package/dist/src/form/create.autocomplete.chips.js.map +1 -0
  31. package/dist/src/form/create.date-expired.js +201 -0
  32. package/dist/src/form/create.date-expired.js.map +1 -0
  33. package/dist/src/form/create.date-picker.js +125 -0
  34. package/dist/src/form/create.date-picker.js.map +1 -0
  35. package/dist/src/form/create.form-base.js +135 -0
  36. package/dist/src/form/create.form-base.js.map +1 -0
  37. package/dist/src/form/create.form-comfirm.js +119 -0
  38. package/dist/src/form/create.form-comfirm.js.map +1 -0
  39. package/dist/src/form/create.form-grid-layout.js +177 -0
  40. package/dist/src/form/create.form-grid-layout.js.map +1 -0
  41. package/dist/src/form/create.form-grid-layout.units.js +39 -0
  42. package/dist/src/form/create.form-grid-layout.units.js.map +1 -0
  43. package/dist/src/form/create.input-base.js +260 -0
  44. package/dist/src/form/create.input-base.js.map +1 -0
  45. package/dist/src/form/create.input.file.js +74 -0
  46. package/dist/src/form/create.input.file.js.map +1 -0
  47. package/dist/src/form/create.select-simple.js +104 -0
  48. package/dist/src/form/create.select-simple.js.map +1 -0
  49. package/dist/src/form/create.select-with-api.js +271 -0
  50. package/dist/src/form/create.select-with-api.js.map +1 -0
  51. package/dist/src/form/create.text-editor.js +156 -0
  52. package/dist/src/form/create.text-editor.js.map +1 -0
  53. package/dist/src/form/dino-form.js +42 -0
  54. package/dist/src/form/dino-form.js.map +1 -0
  55. package/dist/src/form/helper.js +157 -0
  56. package/dist/src/form/helper.js.map +1 -0
  57. package/dist/src/form/modal-wrapper.js +75 -0
  58. package/dist/src/form/modal-wrapper.js.map +1 -0
  59. package/dist/src/form/validator.js +186 -0
  60. package/dist/src/form/validator.js.map +1 -0
  61. package/dist/src/hooks/index.js +48 -0
  62. package/dist/src/hooks/index.js.map +1 -0
  63. package/dist/src/index.js +26 -0
  64. package/dist/src/index.js.map +1 -0
  65. package/dist/src/redux/create.hoc-lazy.js +67 -0
  66. package/dist/src/redux/create.hoc-lazy.js.map +1 -0
  67. package/dist/src/redux/dino.js +11 -0
  68. package/dist/src/redux/dino.js.map +1 -0
  69. package/dist/src/redux/types.js +9 -0
  70. package/dist/src/redux/types.js.map +1 -0
  71. package/dist/src/redux/ui.error-page.js +80 -0
  72. package/dist/src/redux/ui.error-page.js.map +1 -0
  73. package/dist/src/redux/vector-404.webp.js +4 -0
  74. package/dist/src/redux/vector-404.webp.js.map +1 -0
  75. package/dist/src/table/context.js +12 -0
  76. package/dist/src/table/context.js.map +1 -0
  77. package/dist/src/table/create.action-row.js +135 -0
  78. package/dist/src/table/create.action-row.js.map +1 -0
  79. package/dist/src/table/create.status-cell.js +49 -0
  80. package/dist/src/table/create.status-cell.js.map +1 -0
  81. package/dist/src/table/create.table.js +233 -0
  82. package/dist/src/table/create.table.js.map +1 -0
  83. package/dist/src/table/custom.filter-operators.js +89 -0
  84. package/dist/src/table/custom.filter-operators.js.map +1 -0
  85. package/dist/src/table/dino.js +129 -0
  86. package/dist/src/table/dino.js.map +1 -0
  87. package/dist/src/table/helpers.js +116 -0
  88. package/dist/src/table/helpers.js.map +1 -0
  89. package/dist/src/table/model-filter.js +23 -0
  90. package/dist/src/table/model-filter.js.map +1 -0
  91. package/dist/src/table/toolbar-pannel.js +134 -0
  92. package/dist/src/table/toolbar-pannel.js.map +1 -0
  93. package/dist/src/table/ui.buttons.js +60 -0
  94. package/dist/src/table/ui.buttons.js.map +1 -0
  95. package/dist/src/table/ui.units.js +201 -0
  96. package/dist/src/table/ui.units.js.map +1 -0
  97. package/dist/src/utils/dayjs-config.js +12 -0
  98. package/dist/src/utils/dayjs-config.js.map +1 -0
  99. package/dist/src/utils/helpers.js +197 -0
  100. package/dist/src/utils/helpers.js.map +1 -0
  101. package/dist/src/utils/json-object.js +38 -0
  102. package/dist/src/utils/json-object.js.map +1 -0
  103. package/dist/src/utils/query-param.js +172 -0
  104. package/dist/src/utils/query-param.js.map +1 -0
  105. package/package.json +52 -0
  106. package/rollup.config.js +39 -0
  107. package/src/@types/global.d.ts +5 -0
  108. package/src/api-context/alert-global.tsx +174 -0
  109. package/src/api-context/drawer-global.tsx +116 -0
  110. package/src/api-context/global-modal.tsx +109 -0
  111. package/src/api-context/index.ts +13 -0
  112. package/src/api-context/popover-global.tsx +107 -0
  113. package/src/api-context/popover.tsx +89 -0
  114. package/src/api-context/ui.units.tsx +10 -0
  115. package/src/components/copy-to-clipboard.tsx +86 -0
  116. package/src/components/custom.breadcrumbs.tsx +67 -0
  117. package/src/components/help-tooltip.tsx +75 -0
  118. package/src/components/image-with-fallback.tsx +51 -0
  119. package/src/components/index.tsx +1 -0
  120. package/src/components/input-debounce-timer.tsx +138 -0
  121. package/src/components/loading-buttons.tsx +35 -0
  122. package/src/components/text-editor.preview.tsx +30 -0
  123. package/src/components/text-editor.tsx +125 -0
  124. package/src/form/README.md +55 -0
  125. package/src/form/create.autocomplete.chips.tsx +199 -0
  126. package/src/form/create.date-expired.tsx +195 -0
  127. package/src/form/create.date-picker.tsx +122 -0
  128. package/src/form/create.form-base.tsx +102 -0
  129. package/src/form/create.form-comfirm.tsx +83 -0
  130. package/src/form/create.form-grid-layout.tsx +170 -0
  131. package/src/form/create.form-grid-layout.units.tsx +37 -0
  132. package/src/form/create.input-base.tsx +222 -0
  133. package/src/form/create.input.file.tsx +76 -0
  134. package/src/form/create.select-simple.tsx +101 -0
  135. package/src/form/create.select-with-api.tsx +213 -0
  136. package/src/form/create.text-editor.tsx +161 -0
  137. package/src/form/dino-form.tsx +40 -0
  138. package/src/form/helper.ts +132 -0
  139. package/src/form/index.ts +12 -0
  140. package/src/form/modal-wrapper.tsx +75 -0
  141. package/src/form/types.ts +16 -0
  142. package/src/form/validator.ts +202 -0
  143. package/src/hooks/index.ts +44 -0
  144. package/src/index.ts +7 -0
  145. package/src/lab/create.autocomplete.simple.tsx +57 -0
  146. package/src/lab/create.dino-store.ts +59 -0
  147. package/src/lab/create.multi-select-dropdown.tsx +189 -0
  148. package/src/lab/create.select-mul-with-api/index.tsx +271 -0
  149. package/src/lab/create.select-mul-with-api/table-custom.tsx +194 -0
  150. package/src/lab/create.select-mul-with-api/types.ts +26 -0
  151. package/src/lab/create.select-mul-with-api/ui.units.tsx +163 -0
  152. package/src/lab/filter-bar/base.tsx +162 -0
  153. package/src/lab/filter-bar/create.filter-bar.tsx +190 -0
  154. package/src/lab/filter-bar/create.filter-menu.tsx +156 -0
  155. package/src/lab/filter-bar/create.filter-panel.tsx +95 -0
  156. package/src/lab/filter-bar/create.filtered.tsx +41 -0
  157. package/src/lab/filter-bar/create.sort-menu.tsx +43 -0
  158. package/src/lab/filter-bar/demo.tsx +50 -0
  159. package/src/lab/filter-bar/index.ts +6 -0
  160. package/src/lab/filter-bar/types.ts +105 -0
  161. package/src/lab/filter-bar/ui.units.tsx +70 -0
  162. package/src/lab/grafana-dashboard/configs.ts +43 -0
  163. package/src/lab/grafana-dashboard/date-time-range/absolute-time-rage.tsx +137 -0
  164. package/src/lab/grafana-dashboard/date-time-range/helpers.ts +126 -0
  165. package/src/lab/grafana-dashboard/date-time-range/index.tsx +62 -0
  166. package/src/lab/grafana-dashboard/date-time-range/menu-wrap.tsx +101 -0
  167. package/src/lab/grafana-dashboard/date-time-range/quick-ranges.tsx +161 -0
  168. package/src/lab/grafana-dashboard/date-time-range/types.ts +9 -0
  169. package/src/lab/grafana-dashboard/date-time-range/units.tsx +18 -0
  170. package/src/lab/grafana-dashboard/helper.ts +25 -0
  171. package/src/lab/grafana-dashboard/hooks.tsx +79 -0
  172. package/src/lab/grafana-dashboard/icons.tsx +67 -0
  173. package/src/lab/grafana-dashboard/index.tsx +120 -0
  174. package/src/lab/grafana-dashboard/top-bar.tsx +62 -0
  175. package/src/lab/grafana-dashboard/top-bar.types.ts +5 -0
  176. package/src/lab/grafana-dashboard/types.ts +8 -0
  177. package/src/lab/media-player.core1.tsx +273 -0
  178. package/src/lab/media-player.muted.tsx +62 -0
  179. package/src/lab/media-player.units.ts +80 -0
  180. package/src/lab/table-grid/create.table-grid.tsx +183 -0
  181. package/src/lab/table-grid/demo.tsx +53 -0
  182. package/src/lab/table-grid/dino.tsx +8 -0
  183. package/src/lab/table-grid/helpers.tsx +11 -0
  184. package/src/lab/table-grid/index.ts +3 -0
  185. package/src/lab/table-grid/item-actions.tsx +138 -0
  186. package/src/lab/table-grid/toolbar-pannel.tsx +98 -0
  187. package/src/lab/table-grid/types.ts +68 -0
  188. package/src/redux/create.hoc-lazy.tsx +80 -0
  189. package/src/redux/dino.ts +9 -0
  190. package/src/redux/index.ts +6 -0
  191. package/src/redux/types.ts +27 -0
  192. package/src/redux/ui.error-page.tsx +62 -0
  193. package/src/redux/ui.units.tsx +41 -0
  194. package/src/redux/vector-404.webp +0 -0
  195. package/src/table/context.tsx +16 -0
  196. package/src/table/create.action-row.tsx +91 -0
  197. package/src/table/create.status-cell.tsx +51 -0
  198. package/src/table/create.table.tsx +239 -0
  199. package/src/table/custom.filter-operators.ts +94 -0
  200. package/src/table/dino.tsx +120 -0
  201. package/src/table/helpers.ts +94 -0
  202. package/src/table/index.ts +13 -0
  203. package/src/table/model-filter.ts +43 -0
  204. package/src/table/toolbar-pannel.tsx +106 -0
  205. package/src/table/types.ts +50 -0
  206. package/src/table/ui.buttons.tsx +54 -0
  207. package/src/table/ui.units.tsx +189 -0
  208. package/src/utils/dayjs-config.ts +13 -0
  209. package/src/utils/helpers.ts +171 -0
  210. package/src/utils/index.ts +7 -0
  211. package/src/utils/json-object.ts +29 -0
  212. package/src/utils/mfe-events.tsx +34 -0
  213. package/src/utils/query-param.ts +129 -0
  214. package/tsconfig.json +20 -0
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { Tooltip, IconButton, Button } from '@mui/material';
3
+ import ViewListIcon from '@mui/icons-material/ViewList';
4
+ import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';
5
+ import '../api-context/alert-global.js';
6
+ import '../api-context/drawer-global.js';
7
+ import { MapGlobalModalContext } from '../api-context/global-modal.js';
8
+
9
+ var BtnFormCreate = function BtnFormCreate(props) {
10
+ return MapGlobalModalContext(function (context) {
11
+ return /*#__PURE__*/React.createElement(Tooltip, {
12
+ title: "Create new"
13
+ }, /*#__PURE__*/React.createElement(Button, {
14
+ size: "small",
15
+ onClick: function onClick() {
16
+ return context.show({
17
+ renderContent: function renderContent() {
18
+ return props.children;
19
+ }
20
+ });
21
+ },
22
+ startIcon: /*#__PURE__*/React.createElement(AddCircleOutlineIcon, {
23
+ fontSize: "small"
24
+ }),
25
+ sx: {
26
+ fontWeight: 600
27
+ },
28
+ variant: "contained"
29
+ }, "Create"));
30
+ });
31
+ };
32
+ var BtnFormDetail = function BtnFormDetail(props) {
33
+ return MapGlobalModalContext(function (context) {
34
+ return /*#__PURE__*/React.createElement(Tooltip, {
35
+ title: "Detail"
36
+ }, /*#__PURE__*/React.createElement(IconButton, {
37
+ onClick: function onClick(e) {
38
+ var _a;
39
+ (_a = props.onOpenModal) === null || _a === void 0 ? void 0 : _a.call(props, e);
40
+ context.show({
41
+ backdropActivated: true,
42
+ renderContent: function renderContent() {
43
+ return props.formDetail;
44
+ },
45
+ onClose: props.onCloseModal
46
+ });
47
+ }
48
+ }, /*#__PURE__*/React.createElement(ViewListIcon, null)));
49
+ });
50
+ };
51
+ var BtnDetail = function BtnDetail(props) {
52
+ return /*#__PURE__*/React.createElement(Tooltip, {
53
+ title: "Detail"
54
+ }, /*#__PURE__*/React.createElement(IconButton, {
55
+ onClick: props.onClick
56
+ }, /*#__PURE__*/React.createElement(ViewListIcon, null)));
57
+ };
58
+
59
+ export { BtnDetail, BtnFormCreate, BtnFormDetail };
60
+ //# sourceMappingURL=ui.buttons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.buttons.js","sources":["../../../src/table/ui.buttons.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\nimport { Button, IconButton, IconButtonProps, Tooltip } from '@mui/material'\r\nimport ViewListIcon from '@mui/icons-material/ViewList'\r\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'\r\nimport { MapGlobalModalContext, TModalReason } from '../api-context'\r\n\r\nexport const BtnFormCreate: FC<{ children: React.ReactNode }> = (props) => {\r\n return MapGlobalModalContext((context) => (\r\n <Tooltip title='Create new'>\r\n <Button\r\n size='small'\r\n onClick={() => context.show({ renderContent: () => props.children })}\r\n startIcon={<AddCircleOutlineIcon fontSize='small' />}\r\n sx={{ fontWeight: 600 }}\r\n variant='contained'\r\n >\r\n Create\r\n </Button>\r\n </Tooltip>\r\n ))\r\n}\r\n\r\nexport interface IBtnFormDetailProps {\r\n formDetail: React.ReactNode\r\n onOpenModal?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n onCloseModal?: (reason?: TModalReason) => void\r\n}\r\n\r\nexport const BtnFormDetail: FC<IBtnFormDetailProps> = (props) => {\r\n return MapGlobalModalContext((context) => (\r\n <Tooltip title='Detail'>\r\n <IconButton\r\n onClick={(e) => {\r\n props.onOpenModal?.(e)\r\n context.show({ backdropActivated: true, renderContent: () => props.formDetail, onClose: props.onCloseModal })\r\n }}\r\n >\r\n <ViewListIcon />\r\n </IconButton>\r\n </Tooltip>\r\n ))\r\n}\r\n\r\ninterface IBtnDetailProps {\r\n onClick?: IconButtonProps['onClick']\r\n}\r\n\r\nexport const BtnDetail: FC<IBtnDetailProps> = (props) => (\r\n <Tooltip title='Detail'>\r\n <IconButton onClick={props.onClick}>\r\n <ViewListIcon />\r\n </IconButton>\r\n </Tooltip>\r\n)\r\n"],"names":["BtnFormCreate","props","MapGlobalModalContext","context","React","createElement","Tooltip","title","Button","size","onClick","show","renderContent","children","startIcon","AddCircleOutlineIcon","fontSize","sx","fontWeight","variant","BtnFormDetail","IconButton","e","_a","onOpenModal","call","backdropActivated","formDetail","onClose","onCloseModal","ViewListIcon","BtnDetail"],"mappings":";;;;;;;;IAMaA,aAAa,GAAsC,SAAnDA,aAAaA,CAAuCC,KAAK,EAAI;EACxE,OAAOC,qBAAqB,CAAC,UAACC,OAAO,EAAA;AAAA,IAAA,oBACnCC,KAAA,CAAAC,aAAA,CAACC,OAAO,EAAA;AAACC,MAAAA,KAAK,EAAC;AAAY,KAAA,eACzBH,KAAA,CAAAC,aAAA,CAACG,MAAM,EAAA;AACLC,MAAAA,IAAI,EAAC,OAAO;MACZC,OAAO,EAAE,SAATA,OAAOA,GAAA;QAAA,OAAQP,OAAO,CAACQ,IAAI,CAAC;UAAEC,aAAa,EAAE,SAAfA,aAAaA,GAAA;YAAA,OAAQX,KAAK,CAACY,QAAQ;AAAA;AAAE,SAAA,CAAC;OAAC;AACrEC,MAAAA,SAAS,eAAEV,KAAA,CAAAC,aAAA,CAACU,oBAAoB,EAAA;AAACC,QAAAA,QAAQ,EAAC;AAAO,OAAA,CAAI;AACrDC,MAAAA,EAAE,EAAE;AAAEC,QAAAA,UAAU,EAAE;OAAM;AACxBC,MAAAA,OAAO,EAAC;KAER,EAAA,QACM,CACD,CAAC;AAAA,GACX,CAAC;AACJ;IAQaC,aAAa,GAA4B,SAAzCA,aAAaA,CAA6BnB,KAAK,EAAI;EAC9D,OAAOC,qBAAqB,CAAC,UAACC,OAAO,EAAA;AAAA,IAAA,oBACnCC,KAAA,CAAAC,aAAA,CAACC,OAAO,EAAA;AAACC,MAAAA,KAAK,EAAC;AAAQ,KAAA,eACrBH,KAAA,CAAAC,aAAA,CAACgB,UAAU,EAAA;AACTX,MAAAA,OAAO,EAAE,SAATA,OAAOA,CAAGY,CAAC,EAAI;;QACb,CAAAC,EAAA,GAAAtB,KAAK,CAACuB,WAAW,MAAG,IAAA,IAAAD,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAAE,IAAA,CAAAxB,KAAA,EAAAqB,CAAC,CAAC;QACtBnB,OAAO,CAACQ,IAAI,CAAC;AAAEe,UAAAA,iBAAiB,EAAE,IAAI;UAAEd,aAAa,EAAE,SAAfA,aAAaA,GAAA;YAAA,OAAQX,KAAK,CAAC0B,UAAU;AAAA,WAAA;UAAEC,OAAO,EAAE3B,KAAK,CAAC4B;AAAc,SAAA,CAAC;AAC/G;KAEAzB,eAAAA,KAAA,CAAAC,aAAA,CAACyB,YAAY,EACf,IAAA,CAAY,CACL,CAAC;AAAA,GACX,CAAC;AACJ;IAMaC,SAAS,GAAwB,SAAjCA,SAASA,CAAyB9B,KAAK,EAAA;AAAA,EAAA,oBAClDG,KAAA,CAAAC,aAAA,CAACC,OAAO,EAAA;AAACC,IAAAA,KAAK,EAAC;AAAQ,GAAA,eACrBH,KAAA,CAAAC,aAAA,CAACgB,UAAU,EAAA;IAACX,OAAO,EAAET,KAAK,CAACS;GACzBN,eAAAA,KAAA,CAAAC,aAAA,CAACyB,YAAY,EACf,IAAA,CAAY,CACL,CAAC;AAAA;;;;"}
@@ -0,0 +1,201 @@
1
+ import { extends as _extends, slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { __rest } from '../../node_modules/.pnpm/@rollup_plugin-typescript@1_d0d2002d9033600b6738d939bd598bc6/node_modules/tslib/tslib.es6.js';
3
+ import React, { useState, useEffect } from 'react';
4
+ import { styled, Box, Chip, Typography, Tooltip, IconButton, Divider } from '@mui/material';
5
+ import OpenInNewIcon from '@mui/icons-material/OpenInNew';
6
+ import { mergeObjects as _mergeObjects } from '../utils/helpers.js';
7
+ import '../utils/query-param.js';
8
+ import '../utils/dayjs-config.js';
9
+ import { HelpTooltipWrap } from '../components/help-tooltip.js';
10
+ import CopyToClipboard from '../components/copy-to-clipboard.js';
11
+ import dayjs from 'dayjs';
12
+
13
+ var CellImageSmall = function CellImageSmall(props) {
14
+ var _a;
15
+ var _useState = useState((_a = props.imageUri) !== null && _a !== void 0 ? _a : props.fallbackSrc),
16
+ _useState2 = _slicedToArray(_useState, 2),
17
+ imgSrc = _useState2[0],
18
+ setImgSrc = _useState2[1];
19
+ useEffect(function () {
20
+ var _a;
21
+ setImgSrc((_a = props.imageUri) !== null && _a !== void 0 ? _a : props.fallbackSrc);
22
+ }, [props.imageUri, props.fallbackSrc]);
23
+ return /*#__PURE__*/React.createElement(Box, {
24
+ sx: {
25
+ display: 'flex',
26
+ alignItems: 'center',
27
+ height: '100%',
28
+ gap: '10px'
29
+ }
30
+ }, /*#__PURE__*/React.createElement(ImageSmall, {
31
+ src: imgSrc,
32
+ onError: function onError() {
33
+ return setImgSrc(props.fallbackSrc);
34
+ }
35
+ }), /*#__PURE__*/React.createElement(Typography, {
36
+ variant: "body1"
37
+ }, props.value));
38
+ };
39
+ var ImageSmallFallback = function ImageSmallFallback(props) {
40
+ var _a;
41
+ var _useState3 = useState((_a = props.imageUri) !== null && _a !== void 0 ? _a : props.imageFallback),
42
+ _useState4 = _slicedToArray(_useState3, 2),
43
+ imgSrc = _useState4[0],
44
+ setImgSrc = _useState4[1];
45
+ useEffect(function () {
46
+ var _a;
47
+ setImgSrc((_a = props.imageUri) !== null && _a !== void 0 ? _a : props.imageFallback);
48
+ }, [props.imageUri, props.imageFallback]);
49
+ return /*#__PURE__*/React.createElement(ImageSmall, {
50
+ src: imgSrc,
51
+ onError: function onError() {
52
+ return setImgSrc(props.imageFallback);
53
+ },
54
+ sx: props.sx
55
+ });
56
+ };
57
+ var ImageSmall = styled('img')({
58
+ backgroundRepeat: 'no-repeat',
59
+ height: '50px',
60
+ width: '50px',
61
+ backgroundSize: 'contain',
62
+ borderRadius: '8px',
63
+ boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px'
64
+ });
65
+ var CellBase = function CellBase(props) {
66
+ var _a;
67
+ var value = (_a = props.valueFormatted) !== null && _a !== void 0 ? _a : props.value;
68
+ var isCopyToClipboard = !!props.copyToClipboard && !!value;
69
+ return /*#__PURE__*/React.createElement(CellBaseWrap, _extends({
70
+ title: value
71
+ }, props.wrapProps), props.imageUrl && /*#__PURE__*/React.createElement(ImageSmallFallback, {
72
+ imageUri: props.imageUrl,
73
+ sx: {
74
+ mr: '10px'
75
+ },
76
+ imageFallback: props.imageFallbackSrc
77
+ }), /*#__PURE__*/React.createElement(Typography, _extends({
78
+ variant: "body2",
79
+ component: "span",
80
+ noWrap: true,
81
+ sx: {
82
+ flex: 1
83
+ }
84
+ }, props.typographyProps), value), value && props.openInNewTab === true && /*#__PURE__*/React.createElement(Tooltip, {
85
+ arrow: true,
86
+ title: "Open new tab"
87
+ }, /*#__PURE__*/React.createElement(IconButton, {
88
+ component: "a",
89
+ href: value,
90
+ target: "_blank"
91
+ }, /*#__PURE__*/React.createElement(OpenInNewIcon, {
92
+ fontSize: "small",
93
+ sx: {
94
+ color: '#1A75E2'
95
+ }
96
+ }))), isCopyToClipboard && /*#__PURE__*/React.createElement(CopyToClipboard, {
97
+ value: value
98
+ }), value && props.beforeLine === true && /*#__PURE__*/React.createElement(Divider, {
99
+ flexItem: true,
100
+ variant: "middle",
101
+ orientation: "vertical"
102
+ }));
103
+ };
104
+ var CellBaseWrap = styled(function (_a) {
105
+ var children = _a.children,
106
+ props = __rest(_a, ["children"]);
107
+ return /*#__PURE__*/React.createElement(Box, props, /*#__PURE__*/React.createElement("div", null, children));
108
+ })({
109
+ flex: 1,
110
+ width: '100%',
111
+ height: '100%',
112
+ position: 'relative',
113
+ top: 0,
114
+ left: 0,
115
+ '& > div': {
116
+ display: 'flex',
117
+ alignItems: 'center',
118
+ width: '100%',
119
+ height: '100%',
120
+ position: 'absolute',
121
+ top: 0,
122
+ left: 0
123
+ }
124
+ });
125
+ var CellChips = function CellChips(props) {
126
+ var _a, _b;
127
+ if (typeof props.value !== 'string') return (_a = props.value) !== null && _a !== void 0 ? _a : /*#__PURE__*/React.createElement(React.Fragment, null);
128
+ var list = props.value.split((_b = props === null || props === void 0 ? void 0 : props.separator) !== null && _b !== void 0 ? _b : '|').filter(function (x) {
129
+ return !!x;
130
+ });
131
+ var displayList = (props === null || props === void 0 ? void 0 : props.maximum) ? list.slice(0, props.maximum) : list;
132
+ var remainingCount = (props === null || props === void 0 ? void 0 : props.maximum) && list.length > props.maximum ? list.length - props.maximum : 0;
133
+ return /*#__PURE__*/React.createElement(Box, {
134
+ sx: {
135
+ display: 'flex',
136
+ alignItems: 'center',
137
+ flexWrap: 'wrap',
138
+ gap: '4px',
139
+ height: '100%'
140
+ }
141
+ }, displayList.map(function (x, i) {
142
+ return /*#__PURE__*/React.createElement(CustomChip, {
143
+ key: 'key' + i,
144
+ label: x,
145
+ size: "small"
146
+ });
147
+ }), remainingCount > 0 && /*#__PURE__*/React.createElement(HelpTooltipWrap, {
148
+ title: "Artists",
149
+ content: /*#__PURE__*/React.createElement(Box, {
150
+ sx: {
151
+ display: 'flex',
152
+ alignItems: 'center',
153
+ flexWrap: 'wrap',
154
+ gap: '4px'
155
+ }
156
+ }, list.map(function (x, i) {
157
+ return /*#__PURE__*/React.createElement(CustomChip, {
158
+ key: 'key' + i,
159
+ label: x,
160
+ size: "small"
161
+ });
162
+ }))
163
+ }, /*#__PURE__*/React.createElement(CustomChip, {
164
+ key: "remaining",
165
+ label: "+".concat(remainingCount),
166
+ size: "small"
167
+ })));
168
+ };
169
+ var CustomChip = styled(Chip)({
170
+ lineHeight: 1
171
+ });
172
+ var CellDate = function CellDate(props) {
173
+ var _a, _b;
174
+ try {
175
+ var showRelative = (_a = props === null || props === void 0 ? void 0 : props.showRelative) !== null && _a !== void 0 ? _a : false;
176
+ var date = dayjs(props.value);
177
+ var formatted = date.format(props.formatString);
178
+ var value = showRelative ? "".concat(formatted, " (").concat(dayjs().to(date), ")") : formatted;
179
+ var sx = props.styledGetter ? props.styledGetter(props.value) : {
180
+ flex: 1
181
+ };
182
+ var mergeTypographyProps = _mergeObjects({}, (_b = props.typographyProps) !== null && _b !== void 0 ? _b : {}, {
183
+ sx: sx
184
+ });
185
+ return /*#__PURE__*/React.createElement(Typography, _extends({
186
+ variant: "body2",
187
+ component: "span",
188
+ noWrap: true
189
+ }, mergeTypographyProps), value);
190
+ } catch (_c) {
191
+ return /*#__PURE__*/React.createElement(Typography, {
192
+ variant: "body2",
193
+ component: "span",
194
+ noWrap: true
195
+ }, "format invalid");
196
+ }
197
+ };
198
+ //#endregion
199
+
200
+ export { CellBase, CellChips, CellDate, CellImageSmall, ImageSmallFallback };
201
+ //# sourceMappingURL=ui.units.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.units.js","sources":["../../../src/table/ui.units.tsx"],"sourcesContent":["import React, { FC, useEffect, useState } from 'react'\r\nimport { Box, BoxProps, Chip, Divider, IconButton, styled, SxProps, Theme, Tooltip, Typography, TypographyProps } from '@mui/material'\r\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew'\r\nimport { dayjsCustom, mergeObjects } from '../utils'\r\nimport { HelpTooltipWrap } from '../components/help-tooltip'\r\nimport CopyToClipboard from '../components/copy-to-clipboard'\r\n\r\n//#region CellImageSmall\r\ninterface CellImageSmallProps {\r\n value: string\r\n imageUri?: string\r\n fallbackSrc?: string\r\n}\r\n\r\nexport const CellImageSmall: FC<CellImageSmallProps> = (props) => {\r\n const [imgSrc, setImgSrc] = useState(props.imageUri ?? props.fallbackSrc)\r\n useEffect(() => {\r\n setImgSrc(props.imageUri ?? props.fallbackSrc)\r\n }, [props.imageUri, props.fallbackSrc])\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center', height: '100%', gap: '10px' }}>\r\n <ImageSmall src={imgSrc} onError={() => setImgSrc(props.fallbackSrc)} />\r\n <Typography variant='body1'>{props.value}</Typography>\r\n </Box>\r\n )\r\n}\r\n\r\ninterface ImageSmallFallbackProps {\r\n imageUri?: string\r\n imageFallback?: string\r\n sx?: SxProps<Theme>\r\n}\r\n\r\nexport const ImageSmallFallback: FC<ImageSmallFallbackProps> = (props) => {\r\n const [imgSrc, setImgSrc] = useState(props.imageUri ?? props.imageFallback)\r\n useEffect(() => {\r\n setImgSrc(props.imageUri ?? props.imageFallback)\r\n }, [props.imageUri, props.imageFallback])\r\n return <ImageSmall src={imgSrc} onError={() => setImgSrc(props.imageFallback)} sx={props.sx} />\r\n}\r\n\r\nconst ImageSmall = styled('img')({\r\n backgroundRepeat: 'no-repeat',\r\n height: '50px',\r\n width: '50px',\r\n backgroundSize: 'contain',\r\n borderRadius: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px'\r\n})\r\n//#endregion\r\n\r\n//#region CellBase\r\n\r\nexport interface CellBaseOptions {\r\n openInNewTab?: boolean\r\n beforeLine?: boolean\r\n copyToClipboard?: boolean\r\n imageUrl?: string\r\n imageFallbackSrc?: string\r\n valueFormatter?: (value?: string) => string\r\n wrapProps?: BoxProps\r\n typographyProps?: TypographyProps\r\n}\r\n\r\ninterface CellBaseProps extends CellBaseOptions {\r\n value?: string\r\n valueFormatted?: string\r\n}\r\n\r\nexport const CellBase: FC<CellBaseProps> = (props) => {\r\n const value = props.valueFormatted ?? props.value\r\n const isCopyToClipboard = !!props.copyToClipboard && !!value\r\n return (\r\n <CellBaseWrap title={value} {...props.wrapProps}>\r\n {props.imageUrl && <ImageSmallFallback imageUri={props.imageUrl} sx={{ mr: '10px' }} imageFallback={props.imageFallbackSrc} />}\r\n <Typography variant='body2' component='span' noWrap sx={{ flex: 1 }} {...props.typographyProps}>\r\n {value}\r\n </Typography>\r\n {value && props.openInNewTab === true && (\r\n <Tooltip arrow title='Open new tab'>\r\n <IconButton component='a' href={value} target='_blank'>\r\n <OpenInNewIcon fontSize='small' sx={{ color: '#1A75E2' }} />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {isCopyToClipboard && <CopyToClipboard value={value} />}\r\n {value && props.beforeLine === true && <Divider flexItem variant='middle' orientation='vertical' />}\r\n </CellBaseWrap>\r\n )\r\n}\r\n\r\nconst CellBaseWrap = styled(({ children, ...props }: BoxProps) => (\r\n <Box {...props}>\r\n <div>{children}</div>\r\n </Box>\r\n))({\r\n flex: 1,\r\n width: '100%',\r\n height: '100%',\r\n position: 'relative',\r\n top: 0,\r\n left: 0,\r\n '& > div': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: '100%',\r\n height: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Chips\r\nexport interface CellChipsProps {\r\n value?: string\r\n separator?: string\r\n maximum?: number\r\n}\r\n\r\nexport const CellChips: FC<CellChipsProps> = (props) => {\r\n if (typeof props.value !== 'string') return props.value ?? <></>\r\n\r\n const list = props.value.split(props?.separator ?? '|').filter((x) => !!x)\r\n const displayList = props?.maximum ? list.slice(0, props.maximum) : list\r\n const remainingCount = props?.maximum && list.length > props.maximum ? list.length - props.maximum : 0\r\n\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: '4px', height: '100%' }}>\r\n {displayList.map((x, i) => (\r\n <CustomChip key={'key' + i} label={x} size='small' />\r\n ))}\r\n {remainingCount > 0 && (\r\n <HelpTooltipWrap\r\n title='Artists'\r\n content={\r\n <Box sx={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: '4px' }}>\r\n {list.map((x, i) => (\r\n <CustomChip key={'key' + i} label={x} size='small' />\r\n ))}\r\n </Box>\r\n }\r\n >\r\n <CustomChip key='remaining' label={`+${remainingCount}`} size='small' />\r\n </HelpTooltipWrap>\r\n )}\r\n </Box>\r\n )\r\n}\r\n\r\nconst CustomChip = styled(Chip)({\r\n lineHeight: 1\r\n})\r\n//#endregion\r\n\r\n//#region Date\r\nexport interface CellDatePropsOwner {\r\n formatString?: string\r\n showRelative?: boolean\r\n typographyProps?: TypographyProps\r\n styledGetter?: (value: any) => SxProps<Theme>\r\n}\r\nexport interface CellDateProps extends CellDatePropsOwner {\r\n value: any\r\n}\r\n\r\nexport const CellDate: FC<CellDateProps> = (props) => {\r\n try {\r\n const showRelative = props?.showRelative ?? false\r\n const date = dayjsCustom(props.value)\r\n const formatted = date.format(props.formatString)\r\n const value = showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n const sx = props.styledGetter ? props.styledGetter(props.value) : { flex: 1 }\r\n const mergeTypographyProps = mergeObjects<TypographyProps>({}, props.typographyProps ?? {}, { sx })\r\n return (\r\n <Typography variant='body2' component='span' noWrap {...mergeTypographyProps}>\r\n {value}\r\n </Typography>\r\n )\r\n } catch {\r\n return (\r\n <Typography variant='body2' component='span' noWrap>\r\n format invalid\r\n </Typography>\r\n )\r\n }\r\n}\r\n//#endregion\r\n"],"names":["CellImageSmall","props","_useState","useState","_a","imageUri","fallbackSrc","_useState2","_slicedToArray","imgSrc","setImgSrc","useEffect","React","createElement","Box","sx","display","alignItems","height","gap","ImageSmall","src","onError","Typography","variant","value","ImageSmallFallback","_useState3","imageFallback","_useState4","styled","backgroundRepeat","width","backgroundSize","borderRadius","boxShadow","CellBase","valueFormatted","isCopyToClipboard","copyToClipboard","CellBaseWrap","_extends","title","wrapProps","imageUrl","mr","imageFallbackSrc","component","noWrap","flex","typographyProps","openInNewTab","Tooltip","arrow","IconButton","href","target","OpenInNewIcon","fontSize","color","CopyToClipboard","beforeLine","Divider","flexItem","orientation","children","__rest","position","top","left","CellChips","Fragment","list","split","_b","separator","filter","x","displayList","maximum","slice","remainingCount","length","flexWrap","map","i","CustomChip","key","label","size","HelpTooltipWrap","content","concat","Chip","lineHeight","CellDate","showRelative","date","dayjsCustom","formatted","format","formatString","to","styledGetter","mergeTypographyProps","mergeObjects","_c"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import dayjs from 'dayjs';
2
+ export { default } from 'dayjs';
3
+ import utc from 'dayjs/plugin/utc';
4
+ import timezone from 'dayjs/plugin/timezone';
5
+ import relativeTime from 'dayjs/plugin/relativeTime';
6
+
7
+ dayjs.extend(utc);
8
+ dayjs.extend(timezone);
9
+ dayjs.extend(relativeTime);
10
+ // Thiết lập múi giờ mặc định theo trình duyệt
11
+ dayjs.tz.setDefault(Intl.DateTimeFormat().resolvedOptions().timeZone);
12
+ //# sourceMappingURL=dayjs-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayjs-config.js","sources":["../../../src/utils/dayjs-config.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\nimport utc from 'dayjs/plugin/utc'\r\nimport timezone from 'dayjs/plugin/timezone'\r\nimport relativeTime from 'dayjs/plugin/relativeTime'\r\n\r\ndayjs.extend(utc)\r\ndayjs.extend(timezone)\r\ndayjs.extend(relativeTime)\r\n\r\n// Thiết lập múi giờ mặc định theo trình duyệt\r\ndayjs.tz.setDefault(Intl.DateTimeFormat().resolvedOptions().timeZone)\r\n\r\nexport default dayjs\r\n"],"names":["dayjs","extend","utc","timezone","relativeTime","tz","setDefault","Intl","DateTimeFormat","resolvedOptions","timeZone"],"mappings":";;;;;;AAKAA,KAAK,CAACC,MAAM,CAACC,GAAG,CAAC;AACjBF,KAAK,CAACC,MAAM,CAACE,QAAQ,CAAC;AACtBH,KAAK,CAACC,MAAM,CAACG,YAAY,CAAC;AAE1B;AACAJ,KAAK,CAACK,EAAE,CAACC,UAAU,CAACC,IAAI,CAACC,cAAc,EAAE,CAACC,eAAe,EAAE,CAACC,QAAQ,CAAC"}
@@ -0,0 +1,197 @@
1
+ import { regeneratorRuntime as _regeneratorRuntime, slicedToArray as _slicedToArray, typeof as _typeof, toArray as _toArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { __awaiter } from '../../node_modules/.pnpm/@rollup_plugin-typescript@1_d0d2002d9033600b6738d939bd598bc6/node_modules/tslib/tslib.es6.js';
3
+ import dayjs from 'dayjs';
4
+
5
+ var sleep = function sleep(sec) {
6
+ return new Promise(function (res) {
7
+ return setTimeout(res, sec);
8
+ });
9
+ };
10
+ var fetchDelay = function fetchDelay(action, sec) {
11
+ return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
12
+ var _yield$Promise$all, _yield$Promise$all2, res;
13
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
14
+ while (1) switch (_context.prev = _context.next) {
15
+ case 0:
16
+ _context.next = 2;
17
+ return Promise.all([action(), sleep(sec)]);
18
+ case 2:
19
+ _yield$Promise$all = _context.sent;
20
+ _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 1);
21
+ res = _yield$Promise$all2[0];
22
+ return _context.abrupt("return", res);
23
+ case 6:
24
+ case "end":
25
+ return _context.stop();
26
+ }
27
+ }, _callee);
28
+ }));
29
+ };
30
+ var windowScrollToTop = function windowScrollToTop(options, delay) {
31
+ setTimeout(function () {
32
+ window.scrollTo(Object.assign({
33
+ top: 0,
34
+ left: 0,
35
+ behavior: 'smooth'
36
+ }, options));
37
+ }, delay || 50);
38
+ };
39
+ var mergeClasses = function mergeClasses() {
40
+ for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
41
+ classes[_key] = arguments[_key];
42
+ }
43
+ return classes.join(' ');
44
+ };
45
+ var encodeBase64 = function encodeBase64(input) {
46
+ try {
47
+ var utf8Bytes = new TextEncoder().encode(input);
48
+ var binaryString = '';
49
+ utf8Bytes.forEach(function (_byte) {
50
+ binaryString += String.fromCharCode(_byte);
51
+ });
52
+ return btoa(binaryString);
53
+ } catch (error) {
54
+ console.error('Error encoding to base64', error);
55
+ return '';
56
+ }
57
+ };
58
+ var decodeBase64 = function decodeBase64(encoded) {
59
+ try {
60
+ var binaryString = atob(encoded);
61
+ var utf8Bytes = new Uint8Array(binaryString.length);
62
+ for (var i = 0; i < binaryString.length; i++) {
63
+ utf8Bytes[i] = binaryString.charCodeAt(i);
64
+ }
65
+ return new TextDecoder().decode(utf8Bytes);
66
+ } catch (error) {
67
+ console.error('Error decoding base64', error);
68
+ return;
69
+ }
70
+ };
71
+ var tryParseObject = function tryParseObject(value, defaultValue) {
72
+ try {
73
+ if (!value) {
74
+ throw new Error('Value is required!');
75
+ }
76
+ return JSON.parse(value);
77
+ } catch (_a) {
78
+ // console.log(error)
79
+ return defaultValue;
80
+ }
81
+ };
82
+ var tryParseArray = function tryParseArray(value) {
83
+ var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
84
+ try {
85
+ if (!value) return [];
86
+ var parseValue = JSON.parse(value);
87
+ return Array.isArray(parseValue) ? parseValue : [];
88
+ } catch (_a) {
89
+ return defaultValue;
90
+ }
91
+ };
92
+ var tryParseIntRequired = function tryParseIntRequired(value, defaultValue) {
93
+ try {
94
+ if (!value) return defaultValue;
95
+ return parseInt(value);
96
+ } catch (_a) {
97
+ return defaultValue;
98
+ }
99
+ };
100
+ /**
101
+ * Simple object check.
102
+ * @param item
103
+ * @returns {boolean}
104
+ */
105
+ var isObject = function isObject(obj) {
106
+ return obj && _typeof(obj) === 'object' && !Array.isArray(obj);
107
+ };
108
+ var _mergeObjects = function mergeObjects() {
109
+ for (var _len2 = arguments.length, objects = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
110
+ objects[_key2] = arguments[_key2];
111
+ }
112
+ return objects.reduce(function (prev, obj) {
113
+ if (!obj) return prev;
114
+ Object.keys(obj).forEach(function (key) {
115
+ if (isObject(prev[key]) && isObject(obj[key])) {
116
+ prev[key] = _mergeObjects(prev[key], obj[key]);
117
+ } else {
118
+ prev[key] = obj[key];
119
+ }
120
+ });
121
+ return prev;
122
+ }, {});
123
+ };
124
+ var formatFileSize = function formatFileSize(sizeInKb) {
125
+ if (sizeInKb < 1024) {
126
+ return sizeInKb.toFixed(2) + ' Kb';
127
+ } else if (sizeInKb < 1024 * 1024) {
128
+ return (sizeInKb / 1024).toFixed(2) + ' Mb';
129
+ } else if (sizeInKb < 1024 * 1024 * 1024) {
130
+ return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb';
131
+ } else {
132
+ return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb';
133
+ }
134
+ };
135
+ var formatCurrency = function formatCurrency(value) {
136
+ var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '$ ';
137
+ var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
138
+ var parsedValue;
139
+ try {
140
+ parsedValue = parseFloat(value);
141
+ if (isNaN(parsedValue)) parsedValue = 0;
142
+ } catch (e) {
143
+ parsedValue = 0;
144
+ }
145
+ var roundedValue = parsedValue.toFixed(2);
146
+ var _roundedValue$split = roundedValue.split('.'),
147
+ _roundedValue$split2 = _slicedToArray(_roundedValue$split, 2),
148
+ integerPart = _roundedValue$split2[0],
149
+ decimalPart = _roundedValue$split2[1];
150
+ var formattedIntegerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
151
+ var formattedValue = formattedIntegerPart;
152
+ if (decimalPart !== '00') {
153
+ formattedValue = "".concat(formattedIntegerPart, ".").concat(decimalPart);
154
+ }
155
+ return "".concat(prefix).concat(formattedValue).concat(suffix);
156
+ };
157
+ var formatNumberWithCommas = function formatNumberWithCommas(number) {
158
+ return number.toLocaleString('en-US');
159
+ };
160
+ var formatCapitalizeFirstText = function formatCapitalizeFirstText() {
161
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
162
+ if (!value) return value;
163
+ var _Array$from = Array.from(value),
164
+ _Array$from2 = _toArray(_Array$from),
165
+ first = _Array$from2[0],
166
+ data = _Array$from2.slice(1);
167
+ return "".concat(first.toUpperCase()).concat(data.join(''));
168
+ };
169
+ var formatDatetimeStyle = {
170
+ style1: 'DD/MM/YYYY HH:mm',
171
+ style2: 'MMMM D, YYYY',
172
+ style3: 'MM-DD-YYYY'
173
+ };
174
+ /**
175
+ * Formats a datetime string using one of the predefined styles.
176
+ *
177
+ * Available format styles:
178
+ * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'
179
+ * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'
180
+ * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'
181
+ * @param value - A datetime string (ISO format or any format parsable by dayjs).
182
+ * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.
183
+ * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.
184
+ */
185
+ var formatDatetime = function formatDatetime(value) {
186
+ var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'style1';
187
+ try {
188
+ if (!value) throw new Error();
189
+ return dayjs(value).format(formatDatetimeStyle[format]);
190
+ } catch (error) {
191
+ return 'unknown';
192
+ }
193
+ };
194
+ //#endregion
195
+
196
+ export { decodeBase64, encodeBase64, fetchDelay, formatCapitalizeFirstText, formatCurrency, formatDatetime, formatFileSize, formatNumberWithCommas, mergeClasses, _mergeObjects as mergeObjects, sleep, tryParseArray, tryParseIntRequired, tryParseObject, windowScrollToTop };
197
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","action","all","_yield$Promise$all","_context","sent","_yield$Promise$all2","_slicedToArray","abrupt","stop","_callee","windowScrollToTop","options","delay","window","scrollTo","Object","assign","top","left","behavior","mergeClasses","_len","arguments","length","classes","Array","_key","join","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","forEach","byte","String","fromCharCode","btoa","error","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","value","defaultValue","Error","JSON","parse","_a","tryParseArray","parseValue","isArray","tryParseIntRequired","parseInt","isObject","obj","_typeof","mergeObjects","_len2","objects","_key2","reduce","prev","keys","key","formatFileSize","sizeInKb","toFixed","formatCurrency","prefix","undefined","suffix","parsedValue","parseFloat","isNaN","e","roundedValue","_roundedValue$split","split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","data","slice","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { createClass as _createClass, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ var JObject = /*#__PURE__*/function () {
4
+ function JObject(value) {
5
+ var _this = this;
6
+ _classCallCheck(this, JObject);
7
+ this.toValue = function (key) {
8
+ return _this.value[key];
9
+ };
10
+ this.toJObject = function (key) {
11
+ return new JObject(_this.value[key]);
12
+ };
13
+ this.setValue = function (key, value) {
14
+ _this.value[key] = value;
15
+ };
16
+ this.toObject = function () {
17
+ return _this.value;
18
+ };
19
+ try {
20
+ if (typeof value === 'string') {
21
+ this.value = JSON.parse(value !== null && value !== void 0 ? value : '{}');
22
+ } else {
23
+ this.value = value !== null && value !== void 0 ? value : {};
24
+ }
25
+ } catch (error) {
26
+ this.value = {};
27
+ }
28
+ }
29
+ return _createClass(JObject, null, [{
30
+ key: "fromJson",
31
+ value: function fromJson(value) {
32
+ return new JObject(value);
33
+ }
34
+ }]);
35
+ }();
36
+
37
+ export { JObject as default };
38
+ //# sourceMappingURL=json-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-object.js","sources":["../../../src/utils/json-object.ts"],"sourcesContent":["export default class JObject {\r\n private value: Record<string, any>\r\n constructor(value?: any) {\r\n try {\r\n if (typeof value === 'string') {\r\n this.value = JSON.parse(value ?? '{}')\r\n } else {\r\n this.value = value ?? {}\r\n }\r\n } catch (error) {\r\n this.value = {}\r\n }\r\n }\r\n static fromJson(value?: any) {\r\n return new JObject(value)\r\n }\r\n toValue = <T extends Record<string, any>, TK extends keyof T = keyof T>(key: TK): T[TK] | undefined => {\r\n return this.value[key as any]\r\n }\r\n toJObject = <T extends Record<string, any>, TK extends keyof T = keyof T>(key: TK): JObject => {\r\n return new JObject(this.value[key as any])\r\n }\r\n setValue = <T extends Record<string, any>, TK extends keyof T = keyof T>(key: TK, value: any) => {\r\n this.value[key as any] = value\r\n }\r\n toObject = <T>(): Partial<T> => {\r\n return this.value as T\r\n }\r\n}\r\n"],"names":["JObject","value","_this","_classCallCheck","toValue","key","toJObject","setValue","toObject","JSON","parse","error","_createClass","fromJson"],"mappings":";;IAAqBA,OAAO,gBAAA,YAAA;EAE1B,SAAAA,OAAAA,CAAYC,KAAW,EAAA;AAAA,IAAA,IAAAC,KAAA,GAAA,IAAA;AAAAC,IAAAA,eAAA,OAAAH,OAAA,CAAA;AAcvB,IAAA,IAAA,CAAAI,OAAO,GAAG,UAA8DC,GAAO,EAAuB;AACpG,MAAA,OAAOH,KAAI,CAACD,KAAK,CAACI,GAAU,CAAC;KAC9B;AACD,IAAA,IAAA,CAAAC,SAAS,GAAG,UAA8DD,GAAO,EAAa;MAC5F,OAAO,IAAIL,OAAO,CAACE,KAAI,CAACD,KAAK,CAACI,GAAU,CAAC,CAAC;KAC3C;AACD,IAAA,IAAA,CAAAE,QAAQ,GAAG,UAA8DF,GAAO,EAAEJ,KAAU,EAAI;AAC9FC,MAAAA,KAAI,CAACD,KAAK,CAACI,GAAU,CAAC,GAAGJ,KAAK;KAC/B;IACD,IAAQ,CAAAO,QAAA,GAAG,YAAoB;MAC7B,OAAON,KAAI,CAACD,KAAU;KACvB;IAxBC,IAAI;AACF,MAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAACA,KAAK,GAAGQ,IAAI,CAACC,KAAK,CAACT,KAAK,KAAA,IAAA,IAALA,KAAK,KAAL,KAAA,CAAA,GAAAA,KAAK,GAAI,IAAI,CAAC;AACvC,OAAA,MAAM;AACL,QAAA,IAAI,CAACA,KAAK,GAAGA,KAAK,KAAA,IAAA,IAALA,KAAK,KAAL,KAAA,CAAA,GAAAA,KAAK,GAAI,EAAE;AACzB;KACF,CAAC,OAAOU,KAAK,EAAE;AACd,MAAA,IAAI,CAACV,KAAK,GAAG,EAAE;AAChB;AACH;EAAC,OAAAW,YAAA,CAAAZ,OAAA,EAAA,IAAA,EAAA,CAAA;IAAAK,GAAA,EAAA,UAAA;AAAAJ,IAAAA,KAAA,EACD,SAAOY,QAAQA,CAACZ,KAAW,EAAA;AACzB,MAAA,OAAO,IAAID,OAAO,CAACC,KAAK,CAAC;AAC3B;AAAC,GAAA,CAAA,CAAA;AAAA,CAAA;;;;"}