@operato/data-grist 2.0.0-alpha.3 → 2.0.0-alpha.30

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 (121) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/dist/src/accumulator/accumulator.js +4 -4
  3. package/dist/src/accumulator/accumulator.js.map +1 -1
  4. package/dist/src/configure/rows-option-builder.js +2 -1
  5. package/dist/src/configure/rows-option-builder.js.map +1 -1
  6. package/dist/src/configure/zero-config.js +1 -0
  7. package/dist/src/configure/zero-config.js.map +1 -1
  8. package/dist/src/data-card/event-handlers/record-card-click-handler.js +1 -1
  9. package/dist/src/data-card/event-handlers/record-card-click-handler.js.map +1 -1
  10. package/dist/src/data-grid/data-grid-accum-field.js +3 -2
  11. package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
  12. package/dist/src/data-grid/data-grid-body.js +5 -0
  13. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  14. package/dist/src/data-grid/data-grid-header.d.ts +1 -0
  15. package/dist/src/data-grid/data-grid-header.js +16 -14
  16. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  17. package/dist/src/data-grist.d.ts +225 -3
  18. package/dist/src/data-grist.js +195 -3
  19. package/dist/src/data-grist.js.map +1 -1
  20. package/dist/src/data-list/event-handlers/record-partial-click-handler.js +1 -1
  21. package/dist/src/data-list/event-handlers/record-partial-click-handler.js.map +1 -1
  22. package/dist/src/data-manipulator.d.ts +6 -6
  23. package/dist/src/data-manipulator.js +44 -29
  24. package/dist/src/data-manipulator.js.map +1 -1
  25. package/dist/src/editors/ox-grist-editor-number.js +2 -2
  26. package/dist/src/editors/ox-grist-editor-number.js.map +1 -1
  27. package/dist/src/editors/ox-grist-editor.js +6 -2
  28. package/dist/src/editors/ox-grist-editor.js.map +1 -1
  29. package/dist/src/filters/filter-range-date.js +12 -1
  30. package/dist/src/filters/filter-range-date.js.map +1 -1
  31. package/dist/src/filters/filters-form.d.ts +1 -0
  32. package/dist/src/filters/filters-form.js +21 -3
  33. package/dist/src/filters/filters-form.js.map +1 -1
  34. package/dist/src/handlers/contextmenu-tree-mutation.js +1 -19
  35. package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -1
  36. package/dist/src/index.d.ts +0 -1
  37. package/dist/src/index.js +0 -1
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/types.d.ts +1 -8
  40. package/dist/src/types.js.map +1 -1
  41. package/dist/stories/accumulator.stories.js +10 -5
  42. package/dist/stories/accumulator.stories.js.map +1 -1
  43. package/dist/stories/dynamic-editable.stories.js +10 -0
  44. package/dist/stories/dynamic-editable.stories.js.map +1 -1
  45. package/dist/stories/fixed-column.stories.js +3 -3
  46. package/dist/stories/fixed-column.stories.js.map +1 -1
  47. package/dist/stories/grist-modes.stories.js +23 -2
  48. package/dist/stories/grist-modes.stories.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/docs/default-value/default-value.md +1 -1
  51. package/docs/default-value/value-generator/date-generator.md +2 -2
  52. package/docs/default-value/value-generator/month-date-generator.md +2 -2
  53. package/docs/default-value/value-generator/week-date-generator.md +2 -2
  54. package/docs/default-value/value-generator/year-date-generator.md +2 -2
  55. package/package.json +19 -18
  56. package/src/accumulator/accumulator.ts +4 -4
  57. package/src/configure/rows-option-builder.ts +11 -1
  58. package/src/configure/zero-config.ts +1 -0
  59. package/src/data-card/event-handlers/record-card-click-handler.ts +1 -1
  60. package/src/data-grid/data-grid-accum-field.ts +3 -2
  61. package/src/data-grid/data-grid-body.ts +5 -0
  62. package/src/data-grid/data-grid-header.ts +22 -18
  63. package/src/data-grist.ts +250 -3
  64. package/src/data-list/event-handlers/record-partial-click-handler.ts +1 -1
  65. package/src/data-manipulator.ts +52 -31
  66. package/src/editors/ox-grist-editor-number.ts +3 -2
  67. package/src/editors/ox-grist-editor.ts +6 -2
  68. package/src/filters/filter-range-date.ts +16 -1
  69. package/src/filters/filters-form.ts +25 -2
  70. package/src/handlers/contextmenu-tree-mutation.ts +1 -19
  71. package/src/index.ts +0 -1
  72. package/src/types.ts +1 -9
  73. package/stories/accumulator.stories.ts +10 -5
  74. package/stories/dynamic-editable.stories.ts +10 -0
  75. package/stories/fixed-column.stories.ts +3 -3
  76. package/stories/grist-modes.stories.ts +23 -2
  77. package/themes/grist-theme.css +1 -1
  78. package/dist/src/value-generator/date-generator.d.ts +0 -6
  79. package/dist/src/value-generator/date-generator.js +0 -30
  80. package/dist/src/value-generator/date-generator.js.map +0 -1
  81. package/dist/src/value-generator/hour-time-generator.d.ts +0 -7
  82. package/dist/src/value-generator/hour-time-generator.js +0 -29
  83. package/dist/src/value-generator/hour-time-generator.js.map +0 -1
  84. package/dist/src/value-generator/index.d.ts +0 -1
  85. package/dist/src/value-generator/index.js +0 -2
  86. package/dist/src/value-generator/index.js.map +0 -1
  87. package/dist/src/value-generator/minute-time-generator.d.ts +0 -7
  88. package/dist/src/value-generator/minute-time-generator.js +0 -29
  89. package/dist/src/value-generator/minute-time-generator.js.map +0 -1
  90. package/dist/src/value-generator/month-date-generator.d.ts +0 -7
  91. package/dist/src/value-generator/month-date-generator.js +0 -31
  92. package/dist/src/value-generator/month-date-generator.js.map +0 -1
  93. package/dist/src/value-generator/now-generator.d.ts +0 -4
  94. package/dist/src/value-generator/now-generator.js +0 -8
  95. package/dist/src/value-generator/now-generator.js.map +0 -1
  96. package/dist/src/value-generator/registry.d.ts +0 -11
  97. package/dist/src/value-generator/registry.js +0 -50
  98. package/dist/src/value-generator/registry.js.map +0 -1
  99. package/dist/src/value-generator/time-generator.d.ts +0 -6
  100. package/dist/src/value-generator/time-generator.js +0 -28
  101. package/dist/src/value-generator/time-generator.js.map +0 -1
  102. package/dist/src/value-generator/today-generator.d.ts +0 -4
  103. package/dist/src/value-generator/today-generator.js +0 -8
  104. package/dist/src/value-generator/today-generator.js.map +0 -1
  105. package/dist/src/value-generator/week-date-generator.d.ts +0 -7
  106. package/dist/src/value-generator/week-date-generator.js +0 -29
  107. package/dist/src/value-generator/week-date-generator.js.map +0 -1
  108. package/dist/src/value-generator/year-date-generator.d.ts +0 -7
  109. package/dist/src/value-generator/year-date-generator.js +0 -29
  110. package/dist/src/value-generator/year-date-generator.js.map +0 -1
  111. package/src/value-generator/date-generator.ts +0 -35
  112. package/src/value-generator/hour-time-generator.ts +0 -43
  113. package/src/value-generator/index.ts +0 -1
  114. package/src/value-generator/minute-time-generator.ts +0 -43
  115. package/src/value-generator/month-date-generator.ts +0 -38
  116. package/src/value-generator/now-generator.ts +0 -10
  117. package/src/value-generator/registry.ts +0 -58
  118. package/src/value-generator/time-generator.ts +0 -33
  119. package/src/value-generator/today-generator.ts +0 -10
  120. package/src/value-generator/week-date-generator.ts +0 -40
  121. package/src/value-generator/year-date-generator.ts +0 -36
@@ -1,29 +0,0 @@
1
- export const getRelativeWeekDate = (params = {}) => {
2
- const { relativeWeeks = 0, relativeDates = 0, timeZone, format } = params;
3
- const now = new Date();
4
- let currentDate;
5
- if (timeZone) {
6
- const options = { timeZone };
7
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0];
8
- currentDate = new Date(currentDateISOString);
9
- }
10
- else {
11
- currentDate = now;
12
- }
13
- const startOfWeek = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() - currentDate.getDay() + 1);
14
- const targetDate = startOfWeek.getTime() + relativeWeeks * 7 * 24 * 60 * 60 * 1000 + relativeDates * 24 * 60 * 60 * 1000;
15
- if (format === 'date') {
16
- return new Date(targetDate);
17
- }
18
- else if (format === 'timestamp') {
19
- return targetDate;
20
- }
21
- else if (format) {
22
- const formatter = new Intl.DateTimeFormat(undefined, format);
23
- return formatter.format(new Date(targetDate));
24
- }
25
- else {
26
- return targetDate;
27
- }
28
- };
29
- //# sourceMappingURL=week-date-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"week-date-generator.js","sourceRoot":"","sources":["../../../src/value-generator/week-date-generator.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiC,EAAE,EAA0B,EAAE;IACjG,MAAM,EAAE,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEzE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,IAAI,WAAiB,CAAA;IAErB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAA+B,EAAE,QAAQ,EAAE,CAAA;QACxD,MAAM,oBAAoB,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,WAAW,GAAG,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,GAAG,CAAA;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,IAAI,CAC1B,WAAW,CAAC,WAAW,EAAE,EACzB,WAAW,CAAC,QAAQ,EAAE,EACtB,WAAW,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CACjD,CAAA;IACD,MAAM,UAAU,GACd,WAAW,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAEvG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;SAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,UAAU,CAAA;IACnB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC5D,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,UAAU,CAAA;IACnB,CAAC;AACH,CAAC,CAAA","sourcesContent":["export type RelativeWeekDateParams = {\n timeZone?: string\n format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions\n relativeWeeks?: number\n relativeDates?: number\n}\n\nexport const getRelativeWeekDate = (params: RelativeWeekDateParams = {}): Date | number | string => {\n const { relativeWeeks = 0, relativeDates = 0, timeZone, format } = params\n\n const now = new Date()\n let currentDate: Date\n\n if (timeZone) {\n const options: Intl.DateTimeFormatOptions = { timeZone }\n const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]\n currentDate = new Date(currentDateISOString)\n } else {\n currentDate = now\n }\n\n const startOfWeek = new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n currentDate.getDate() - currentDate.getDay() + 1\n )\n const targetDate =\n startOfWeek.getTime() + relativeWeeks * 7 * 24 * 60 * 60 * 1000 + relativeDates * 24 * 60 * 60 * 1000\n\n if (format === 'date') {\n return new Date(targetDate)\n } else if (format === 'timestamp') {\n return targetDate\n } else if (format) {\n const formatter = new Intl.DateTimeFormat(undefined, format)\n return formatter.format(new Date(targetDate))\n } else {\n return targetDate\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- export type RelativeYearDateParams = {
2
- timeZone?: string;
3
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions;
4
- relativeYears?: number;
5
- relativeDates?: number;
6
- };
7
- export declare const getRelativeYearDate: (params?: RelativeYearDateParams) => Date | number | string;
@@ -1,29 +0,0 @@
1
- export const getRelativeYearDate = (params = {}) => {
2
- const { relativeYears = 0, relativeDates = 0, timeZone, format } = params;
3
- const now = new Date();
4
- let currentDate;
5
- if (timeZone) {
6
- const options = { timeZone };
7
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0];
8
- currentDate = new Date(currentDateISOString);
9
- }
10
- else {
11
- currentDate = now;
12
- }
13
- const targetYear = currentDate.getFullYear() + relativeYears;
14
- const targetDate = new Date(targetYear, currentDate.getMonth(), currentDate.getDate() + relativeDates);
15
- if (format === 'date') {
16
- return targetDate;
17
- }
18
- else if (format === 'timestamp') {
19
- return targetDate.getTime();
20
- }
21
- else if (format) {
22
- const formatter = new Intl.DateTimeFormat(undefined, format);
23
- return formatter.format(targetDate);
24
- }
25
- else {
26
- return targetDate;
27
- }
28
- };
29
- //# sourceMappingURL=year-date-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"year-date-generator.js","sourceRoot":"","sources":["../../../src/value-generator/year-date-generator.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiC,EAAE,EAA0B,EAAE;IACjG,MAAM,EAAE,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEzE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,IAAI,WAAiB,CAAA;IAErB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAA+B,EAAE,QAAQ,EAAE,CAAA;QACxD,MAAM,oBAAoB,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,WAAW,GAAG,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,GAAG,CAAA;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,aAAa,CAAA;IAE5D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAA;IAEtG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,UAAU,CAAA;IACnB,CAAC;SAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC5D,OAAO,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,UAAU,CAAA;IACnB,CAAC;AACH,CAAC,CAAA","sourcesContent":["export type RelativeYearDateParams = {\n timeZone?: string\n format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions\n relativeYears?: number\n relativeDates?: number\n}\n\nexport const getRelativeYearDate = (params: RelativeYearDateParams = {}): Date | number | string => {\n const { relativeYears = 0, relativeDates = 0, timeZone, format } = params\n\n const now = new Date()\n let currentDate: Date\n\n if (timeZone) {\n const options: Intl.DateTimeFormatOptions = { timeZone }\n const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]\n currentDate = new Date(currentDateISOString)\n } else {\n currentDate = now\n }\n\n const targetYear = currentDate.getFullYear() + relativeYears\n\n const targetDate = new Date(targetYear, currentDate.getMonth(), currentDate.getDate() + relativeDates)\n\n if (format === 'date') {\n return targetDate\n } else if (format === 'timestamp') {\n return targetDate.getTime()\n } else if (format) {\n const formatter = new Intl.DateTimeFormat(undefined, format)\n return formatter.format(targetDate)\n } else {\n return targetDate\n }\n}\n"]}
@@ -1,35 +0,0 @@
1
- export type RelativeDateParams = {
2
- relativeDate?: number
3
- timeZone?: string
4
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
5
- }
6
-
7
- export const getRelativeDate = (params: RelativeDateParams = {}): Date | number | string => {
8
- const { relativeDate = 0, timeZone, format } = params
9
- const relativeSeconds = relativeDate * 24 * 60 * 60
10
-
11
- const now = new Date()
12
- let currentDate: Date
13
-
14
- if (timeZone) {
15
- const options: Intl.DateTimeFormatOptions = { timeZone }
16
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
- currentDate = new Date(currentDateISOString)
18
- } else {
19
- currentDate = now
20
- }
21
-
22
- const startOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate())
23
- const targetTime = startOfDay.getTime() + relativeSeconds * 1000
24
-
25
- if (format === 'date') {
26
- return new Date(targetTime)
27
- } else if (format === 'timestamp') {
28
- return targetTime
29
- } else if (format) {
30
- const formatter = new Intl.DateTimeFormat(undefined, format)
31
- return formatter.format(new Date(targetTime))
32
- } else {
33
- return new Date(targetTime)
34
- }
35
- }
@@ -1,43 +0,0 @@
1
- export type RelativeHourTimeParams = {
2
- timeZone?: string
3
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
- relativeHour?: number
5
- relativeSeconds?: number
6
- }
7
-
8
- export const getRelativeHourTime = (params: RelativeHourTimeParams = {}): Date | number | string => {
9
- const { relativeHour = 0, relativeSeconds = 0, timeZone, format } = params
10
-
11
- const now = new Date()
12
- let currentDate: Date
13
-
14
- if (timeZone) {
15
- const options: Intl.DateTimeFormatOptions = { timeZone }
16
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
- currentDate = new Date(currentDateISOString)
18
- } else {
19
- currentDate = now
20
- }
21
-
22
- const startOfHour = new Date(
23
- currentDate.getFullYear(),
24
- currentDate.getMonth(),
25
- currentDate.getDate(),
26
- currentDate.getHours(),
27
- 0,
28
- 0,
29
- 0
30
- )
31
- const targetTime = startOfHour.getTime() + relativeHour * 60 * 60 * 1000 + relativeSeconds * 1000
32
-
33
- if (format === 'date') {
34
- return new Date(targetTime)
35
- } else if (format === 'timestamp') {
36
- return targetTime
37
- } else if (format) {
38
- const formatter = new Intl.DateTimeFormat(undefined, format)
39
- return formatter.format(new Date(targetTime))
40
- } else {
41
- return new Date(targetTime)
42
- }
43
- }
@@ -1 +0,0 @@
1
- export * from './registry'
@@ -1,43 +0,0 @@
1
- export type RelativeMinuteTimeParams = {
2
- timeZone?: string
3
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
- relativeMinutes?: number
5
- relativeSeconds?: number
6
- }
7
-
8
- export const getRelativeMinuteTime = (params: RelativeMinuteTimeParams = {}): Date | number | string => {
9
- const { relativeMinutes = 0, relativeSeconds = 0, timeZone, format } = params
10
-
11
- const now = new Date()
12
- let currentDate: Date
13
-
14
- if (timeZone) {
15
- const options: Intl.DateTimeFormatOptions = { timeZone }
16
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
- currentDate = new Date(currentDateISOString)
18
- } else {
19
- currentDate = now
20
- }
21
-
22
- const startOfMinute = new Date(
23
- currentDate.getFullYear(),
24
- currentDate.getMonth(),
25
- currentDate.getDate(),
26
- currentDate.getHours(),
27
- currentDate.getMinutes(),
28
- 0,
29
- 0
30
- )
31
- const targetTime = startOfMinute.getTime() + relativeMinutes * 60 * 1000 + relativeSeconds * 1000
32
-
33
- if (format === 'date') {
34
- return new Date(targetTime)
35
- } else if (format === 'timestamp') {
36
- return targetTime
37
- } else if (format) {
38
- const formatter = new Intl.DateTimeFormat(undefined, format)
39
- return formatter.format(new Date(targetTime))
40
- } else {
41
- return new Date(targetTime)
42
- }
43
- }
@@ -1,38 +0,0 @@
1
- export type RelativeMonthDateParams = {
2
- timeZone?: string
3
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
- relativeMonths?: number
5
- relativeDates?: number
6
- }
7
-
8
- export const getRelativeMonthDate = (params: RelativeMonthDateParams = {}): Date | number | string => {
9
- const { relativeMonths = 0, relativeDates = 0, timeZone, format } = params
10
-
11
- const now = new Date()
12
- let currentDate: Date
13
-
14
- if (timeZone) {
15
- const options: Intl.DateTimeFormatOptions = { timeZone }
16
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
- currentDate = new Date(currentDateISOString)
18
- } else {
19
- currentDate = now
20
- }
21
-
22
- const targetMonth = currentDate.getMonth() + relativeMonths
23
- const targetYear = currentDate.getFullYear() + Math.floor(targetMonth / 12)
24
- const targetMonthRemainder = targetMonth % 12
25
-
26
- const targetDate = new Date(targetYear, targetMonthRemainder, currentDate.getDate() + relativeDates)
27
-
28
- if (format === 'date') {
29
- return targetDate
30
- } else if (format === 'timestamp') {
31
- return targetDate.getTime()
32
- } else if (format) {
33
- const formatter = new Intl.DateTimeFormat(undefined, format)
34
- return formatter.format(targetDate)
35
- } else {
36
- return targetDate
37
- }
38
- }
@@ -1,10 +0,0 @@
1
- import { getRelativeTime } from './time-generator'
2
-
3
- export const getCurrentTime = (
4
- params: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions } = {}
5
- ): Date | number | string => {
6
- return getRelativeTime({
7
- ...params,
8
- relativeSeconds: 0
9
- })
10
- }
@@ -1,58 +0,0 @@
1
- import { NOOP } from '../const'
2
- import { ValueGeneratorFn } from '../types'
3
-
4
- import { getCurrentTime } from './now-generator'
5
- import { getToday } from './today-generator'
6
- import { getRelativeDate } from './date-generator'
7
- import { getRelativeWeekDate } from './week-date-generator'
8
- import { getRelativeMonthDate } from './month-date-generator'
9
- import { getRelativeYearDate } from './year-date-generator'
10
- import { getRelativeTime } from './time-generator'
11
- import { getRelativeMinuteTime } from './minute-time-generator'
12
- import { getRelativeHourTime } from './hour-time-generator'
13
-
14
- var VALUE_GENERATORS: { [name: string]: ValueGeneratorFn } = {
15
- now: getCurrentTime,
16
- today: getToday,
17
- date: getRelativeDate,
18
- time: getRelativeTime,
19
- getCurrentTime,
20
- getToday,
21
- getRelativeDate,
22
- getRelativeWeekDate,
23
- getRelativeMonthDate,
24
- getRelativeYearDate,
25
- getRelativeMinuteTime,
26
- getRelativeHourTime
27
- }
28
-
29
- export function registerValueGenerator(name: string, generator: ValueGeneratorFn) {
30
- VALUE_GENERATORS[name] = generator
31
- }
32
-
33
- export function unregisterValueGenerator(name: string) {
34
- delete VALUE_GENERATORS[name]
35
- }
36
-
37
- export function getValueGenerators() {
38
- return { ...VALUE_GENERATORS }
39
- }
40
-
41
- export function getValueGenerator(name: string) {
42
- return VALUE_GENERATORS[name] || NOOP
43
- }
44
-
45
- export function getDefaultValue(parameter: { name: string; params?: any[] } | Function | any, binder?: any) {
46
- if (typeof parameter == 'function') {
47
- return parameter.call(binder || null)
48
- } else if (typeof parameter == 'object') {
49
- const { name, params } = parameter
50
- const generator = getValueGenerator(name)
51
-
52
- if (generator !== NOOP) {
53
- return generator.call(binder || null, params)
54
- }
55
- }
56
-
57
- return parameter
58
- }
@@ -1,33 +0,0 @@
1
- export type RelativeTimeParams = {
2
- relativeSeconds?: number
3
- timeZone?: string
4
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
5
- }
6
-
7
- export const getRelativeTime = (params: RelativeTimeParams = {}): string | number | Date => {
8
- const { relativeSeconds = 0, timeZone, format } = params
9
-
10
- const now = new Date()
11
-
12
- let currentDate: Date
13
- if (timeZone) {
14
- const options = { timeZone }
15
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
16
- currentDate = new Date(currentDateISOString)
17
- } else {
18
- currentDate = now
19
- }
20
-
21
- const targetTime = currentDate.getTime() + relativeSeconds * 1000
22
-
23
- if (format === 'date') {
24
- return new Date(targetTime)
25
- } else if (format === 'timestamp') {
26
- return targetTime
27
- } else if (format) {
28
- const formatter = new Intl.DateTimeFormat(undefined, format)
29
- return formatter.format(new Date(targetTime))
30
- } else {
31
- return targetTime
32
- }
33
- }
@@ -1,10 +0,0 @@
1
- import { getRelativeDate } from './date-generator'
2
-
3
- export const getToday = (
4
- params: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions } = {}
5
- ): Date | number | string => {
6
- return getRelativeDate({
7
- ...params,
8
- relativeDate: 0
9
- })
10
- }
@@ -1,40 +0,0 @@
1
- export type RelativeWeekDateParams = {
2
- timeZone?: string
3
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
- relativeWeeks?: number
5
- relativeDates?: number
6
- }
7
-
8
- export const getRelativeWeekDate = (params: RelativeWeekDateParams = {}): Date | number | string => {
9
- const { relativeWeeks = 0, relativeDates = 0, timeZone, format } = params
10
-
11
- const now = new Date()
12
- let currentDate: Date
13
-
14
- if (timeZone) {
15
- const options: Intl.DateTimeFormatOptions = { timeZone }
16
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
- currentDate = new Date(currentDateISOString)
18
- } else {
19
- currentDate = now
20
- }
21
-
22
- const startOfWeek = new Date(
23
- currentDate.getFullYear(),
24
- currentDate.getMonth(),
25
- currentDate.getDate() - currentDate.getDay() + 1
26
- )
27
- const targetDate =
28
- startOfWeek.getTime() + relativeWeeks * 7 * 24 * 60 * 60 * 1000 + relativeDates * 24 * 60 * 60 * 1000
29
-
30
- if (format === 'date') {
31
- return new Date(targetDate)
32
- } else if (format === 'timestamp') {
33
- return targetDate
34
- } else if (format) {
35
- const formatter = new Intl.DateTimeFormat(undefined, format)
36
- return formatter.format(new Date(targetDate))
37
- } else {
38
- return targetDate
39
- }
40
- }
@@ -1,36 +0,0 @@
1
- export type RelativeYearDateParams = {
2
- timeZone?: string
3
- format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
- relativeYears?: number
5
- relativeDates?: number
6
- }
7
-
8
- export const getRelativeYearDate = (params: RelativeYearDateParams = {}): Date | number | string => {
9
- const { relativeYears = 0, relativeDates = 0, timeZone, format } = params
10
-
11
- const now = new Date()
12
- let currentDate: Date
13
-
14
- if (timeZone) {
15
- const options: Intl.DateTimeFormatOptions = { timeZone }
16
- const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
- currentDate = new Date(currentDateISOString)
18
- } else {
19
- currentDate = now
20
- }
21
-
22
- const targetYear = currentDate.getFullYear() + relativeYears
23
-
24
- const targetDate = new Date(targetYear, currentDate.getMonth(), currentDate.getDate() + relativeDates)
25
-
26
- if (format === 'date') {
27
- return targetDate
28
- } else if (format === 'timestamp') {
29
- return targetDate.getTime()
30
- } else if (format) {
31
- const formatter = new Intl.DateTimeFormat(undefined, format)
32
- return formatter.format(targetDate)
33
- } else {
34
- return targetDate
35
- }
36
- }