coject-hijri 1.0.0 → 1.3.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.
@@ -0,0 +1,34 @@
1
+ import defaultHMoment, { Moment } from 'moment-hijri';
2
+ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
3
+ import { AdapterOptions, DateBuilderReturnType, FieldFormatTokenMap, MuiPickersAdapter } from '@mui/x-date-pickers/models';
4
+ declare module '@mui/x-date-pickers/models' {
5
+ interface PickerValidDateLookup {
6
+ 'moment-hijri': Moment;
7
+ }
8
+ }
9
+ export declare class AdapterMomentHijri extends AdapterMoment implements MuiPickersAdapter<Moment, string> {
10
+ lib: string;
11
+ moment: typeof defaultHMoment;
12
+ isTimezoneCompatible: boolean;
13
+ formatTokenMap: FieldFormatTokenMap;
14
+ constructor({ formats, instance }?: AdapterOptions<string, typeof defaultHMoment>);
15
+ date: <T extends string | null | undefined>(value?: T | undefined) => DateBuilderReturnType<T, defaultHMoment.Moment>;
16
+ getTimezone: () => string;
17
+ setTimezone: (value: Moment) => Moment;
18
+ parse: (value: string, format: string) => defaultHMoment.Moment | null;
19
+ formatNumber: (numberToFormat: string) => string;
20
+ startOfYear: (value: Moment) => defaultHMoment.Moment;
21
+ startOfMonth: (value: Moment) => defaultHMoment.Moment;
22
+ endOfYear: (value: Moment) => defaultHMoment.Moment;
23
+ endOfMonth: (value: Moment) => defaultHMoment.Moment;
24
+ addYears: (value: Moment, amount: number) => defaultHMoment.Moment;
25
+ addMonths: (value: Moment, amount: number) => defaultHMoment.Moment;
26
+ getYear: (value: Moment) => number;
27
+ getMonth: (value: Moment) => number;
28
+ getDate: (value: Moment) => number;
29
+ setYear: (value: Moment, year: number) => defaultHMoment.Moment;
30
+ setMonth: (value: Moment, month: number) => defaultHMoment.Moment;
31
+ setDate: (value: Moment, date: number) => defaultHMoment.Moment;
32
+ getWeekNumber: (value: Moment) => number;
33
+ getYearRange: ([start, end]: [Moment, Moment]) => defaultHMoment.Moment[];
34
+ }
@@ -0,0 +1,190 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import defaultHMoment from '../coject-hijri';
3
+ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
4
+ const formatTokenMap = {
5
+ // Year
6
+ iY: {
7
+ sectionType: 'year',
8
+ contentType: 'letter'
9
+ },
10
+ iYY: {
11
+ sectionType: 'year',
12
+ contentType: 'letter'
13
+ },
14
+ iYYYY: {
15
+ sectionType: 'year',
16
+ contentType: 'letter'
17
+ },
18
+ // Month
19
+ iM: 'month',
20
+ iMM: 'month',
21
+ iMMM: {
22
+ sectionType: 'month',
23
+ contentType: 'letter'
24
+ },
25
+ iMMMM: {
26
+ sectionType: 'month',
27
+ contentType: 'letter'
28
+ },
29
+ // Day of the month
30
+ iD: {
31
+ sectionType: 'day',
32
+ contentType: 'digit',
33
+ maxLength: 2
34
+ },
35
+ iDD: 'day',
36
+ // Meridiem
37
+ A: 'meridiem',
38
+ a: 'meridiem',
39
+ // Hours
40
+ H: {
41
+ sectionType: 'hours',
42
+ contentType: 'digit',
43
+ maxLength: 2
44
+ },
45
+ HH: 'hours',
46
+ h: {
47
+ sectionType: 'hours',
48
+ contentType: 'digit',
49
+ maxLength: 2
50
+ },
51
+ hh: 'hours',
52
+ // Minutes
53
+ m: {
54
+ sectionType: 'minutes',
55
+ contentType: 'digit',
56
+ maxLength: 2
57
+ },
58
+ mm: 'minutes',
59
+ // Seconds
60
+ s: {
61
+ sectionType: 'seconds',
62
+ contentType: 'digit',
63
+ maxLength: 2
64
+ },
65
+ ss: 'seconds'
66
+ };
67
+ const defaultFormats = {
68
+ year: 'iYYYY',
69
+ month: 'iMMMM',
70
+ monthShort: 'iMMM',
71
+ dayOfMonth: 'iD',
72
+ dayOfMonthFull: 'iD',
73
+ weekday: 'dddd',
74
+ weekdayShort: 'ddd',
75
+ hours24h: 'HH',
76
+ hours12h: 'hh',
77
+ meridiem: 'A',
78
+ minutes: 'mm',
79
+ seconds: 'ss',
80
+ fullDate: 'iYYYY, iMMMM Do',
81
+ keyboardDateTime: 'iYYYY/iMM/iDD LT',
82
+ shortDate: 'iD iMMM',
83
+ normalDate: 'dddd, iD iMMM',
84
+ normalDateWithWeekday: 'DD iMMMM',
85
+ fullTime: 'LT',
86
+ fullTime12h: 'hh:mm A',
87
+ fullTime24h: 'HH:mm',
88
+ keyboardDate: 'iYYYY/iMM/iDD',
89
+ keyboardDateTime12h: 'iYYYY/iMM/iDD hh:mm A',
90
+ keyboardDateTime24h: 'iYYYY/iMM/iDD HH:mm'
91
+ };
92
+ const NUMBER_SYMBOL_MAP = {
93
+ '1': '١',
94
+ '2': '٢',
95
+ '3': '٣',
96
+ '4': '٤',
97
+ '5': '٥',
98
+ '6': '٦',
99
+ '7': '٧',
100
+ '8': '٨',
101
+ '9': '٩',
102
+ '0': '٠'
103
+ };
104
+ export class Adapter extends AdapterMoment {
105
+ constructor({
106
+ formats,
107
+ instance
108
+ } = {}) {
109
+ super({
110
+ locale: 'ar-SA',
111
+ instance
112
+ });
113
+ this.lib = 'coject-hijri';
114
+ this.moment = void 0;
115
+ this.isTimezoneCompatible = false;
116
+ this.formatTokenMap = formatTokenMap;
117
+ this.date = value => {
118
+ if (value === null) {
119
+ return null;
120
+ }
121
+ return this.moment(value).locale('ar-SA');
122
+ };
123
+ this.getTimezone = () => {
124
+ return 'default';
125
+ };
126
+ this.setTimezone = value => {
127
+ return value;
128
+ };
129
+ this.parse = (value, format) => {
130
+ if (value === '') {
131
+ return null;
132
+ }
133
+ return this.moment(value, format, true).locale('ar-SA');
134
+ };
135
+ this.formatNumber = numberToFormat => {
136
+ return numberToFormat.replace(/\d/g, match => NUMBER_SYMBOL_MAP[match]).replace(/,/g, '،');
137
+ };
138
+ this.startOfYear = value => {
139
+ return value.clone().startOf('iYear');
140
+ };
141
+ this.startOfMonth = value => {
142
+ return value.clone().startOf('iMonth');
143
+ };
144
+ this.endOfYear = value => {
145
+ return value.clone().endOf('iYear');
146
+ };
147
+ this.endOfMonth = value => {
148
+ return value.clone().endOf('iMonth');
149
+ };
150
+ this.addYears = (value, amount) => {
151
+ return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iYear') : value.clone().add(amount, 'iYear');
152
+ };
153
+ this.addMonths = (value, amount) => {
154
+ return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iMonth') : value.clone().add(amount, 'iMonth');
155
+ };
156
+ this.getYear = value => {
157
+ return value.iYear();
158
+ };
159
+ this.getMonth = value => {
160
+ return value.iMonth();
161
+ };
162
+ this.getDate = value => {
163
+ return value.iDate();
164
+ };
165
+ this.setYear = (value, year) => {
166
+ return value.clone().iYear(year);
167
+ };
168
+ this.setMonth = (value, month) => {
169
+ return value.clone().iMonth(month);
170
+ };
171
+ this.setDate = (value, date) => {
172
+ return value.clone().iDate(date);
173
+ };
174
+ this.getWeekNumber = value => {
175
+ return value.iWeek();
176
+ };
177
+ this.getYearRange = ([start, end]) => {
178
+ if (start.isBefore('1937-03-14')) {
179
+ throw new Error('min date must be on or after 1356-01-01 H (1937-03-14)');
180
+ }
181
+ if (end.isAfter('2076-11-26')) {
182
+ throw new Error('max date must be on or before 1499-12-29 H (2076-11-26)');
183
+ }
184
+ return super.getYearRange([start, end]);
185
+ };
186
+ this.moment = instance || defaultHMoment;
187
+ this.locale = 'ar-SA';
188
+ this.formats = _extends({}, defaultFormats, formats);
189
+ }
190
+ }
@@ -0,0 +1 @@
1
+ export { AdapterMomentHijri } from './AdapterMomentHijri';
@@ -0,0 +1 @@
1
+ export { Adapter } from './adapter';
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Adapter = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _cojectHijri = _interopRequireDefault(require("../../coject-hijri"));
10
+ var _AdapterMoment = require("@mui/x-date-pickers/AdapterMoment");
11
+
12
+ const formatTokenMap = {
13
+ // Year
14
+ iY: {
15
+ sectionType: 'year',
16
+ contentType: 'letter'
17
+ },
18
+ iYY: {
19
+ sectionType: 'year',
20
+ contentType: 'letter'
21
+ },
22
+ iYYYY: {
23
+ sectionType: 'year',
24
+ contentType: 'letter'
25
+ },
26
+ // Month
27
+ iM: 'month',
28
+ iMM: 'month',
29
+ iMMM: {
30
+ sectionType: 'month',
31
+ contentType: 'letter'
32
+ },
33
+ iMMMM: {
34
+ sectionType: 'month',
35
+ contentType: 'letter'
36
+ },
37
+ // Day of the month
38
+ iD: {
39
+ sectionType: 'day',
40
+ contentType: 'digit',
41
+ maxLength: 2
42
+ },
43
+ iDD: 'day',
44
+ // Meridiem
45
+ A: 'meridiem',
46
+ a: 'meridiem',
47
+ // Hours
48
+ H: {
49
+ sectionType: 'hours',
50
+ contentType: 'digit',
51
+ maxLength: 2
52
+ },
53
+ HH: 'hours',
54
+ h: {
55
+ sectionType: 'hours',
56
+ contentType: 'digit',
57
+ maxLength: 2
58
+ },
59
+ hh: 'hours',
60
+ // Minutes
61
+ m: {
62
+ sectionType: 'minutes',
63
+ contentType: 'digit',
64
+ maxLength: 2
65
+ },
66
+ mm: 'minutes',
67
+ // Seconds
68
+ s: {
69
+ sectionType: 'seconds',
70
+ contentType: 'digit',
71
+ maxLength: 2
72
+ },
73
+ ss: 'seconds'
74
+ };
75
+ const defaultFormats = {
76
+ year: 'iYYYY',
77
+ month: 'iMMMM',
78
+ monthShort: 'iMMM',
79
+ dayOfMonth: 'iD',
80
+ dayOfMonthFull: 'iD',
81
+ weekday: 'dddd',
82
+ weekdayShort: 'ddd',
83
+ hours24h: 'HH',
84
+ hours12h: 'hh',
85
+ meridiem: 'A',
86
+ minutes: 'mm',
87
+ seconds: 'ss',
88
+ fullDate: 'iYYYY, iMMMM Do',
89
+ keyboardDateTime: 'iYYYY/iMM/iDD LT',
90
+ shortDate: 'iD iMMM',
91
+ normalDate: 'dddd, iD iMMM',
92
+ normalDateWithWeekday: 'DD iMMMM',
93
+ fullTime: 'LT',
94
+ fullTime12h: 'hh:mm A',
95
+ fullTime24h: 'HH:mm',
96
+ keyboardDate: 'iYYYY/iMM/iDD',
97
+ keyboardDateTime12h: 'iYYYY/iMM/iDD hh:mm A',
98
+ keyboardDateTime24h: 'iYYYY/iMM/iDD HH:mm'
99
+ };
100
+ const NUMBER_SYMBOL_MAP = {
101
+ '1': '١',
102
+ '2': '٢',
103
+ '3': '٣',
104
+ '4': '٤',
105
+ '5': '٥',
106
+ '6': '٦',
107
+ '7': '٧',
108
+ '8': '٨',
109
+ '9': '٩',
110
+ '0': '٠'
111
+ };
112
+ class Adapter extends _AdapterMoment.AdapterMoment {
113
+ constructor({
114
+ formats,
115
+ instance
116
+ } = {}) {
117
+ super({
118
+ locale: 'ar-SA',
119
+ instance
120
+ });
121
+ this.lib = 'coject-hijri';
122
+ this.moment = void 0;
123
+ this.isTimezoneCompatible = false;
124
+ this.formatTokenMap = formatTokenMap;
125
+ this.date = value => {
126
+ if (value === null) {
127
+ return null;
128
+ }
129
+ return this.moment(value).locale('ar-SA');
130
+ };
131
+ this.getTimezone = () => {
132
+ return 'default';
133
+ };
134
+ this.setTimezone = value => {
135
+ return value;
136
+ };
137
+ this.parse = (value, format) => {
138
+ if (value === '') {
139
+ return null;
140
+ }
141
+ return this.moment(value, format, true).locale('ar-SA');
142
+ };
143
+ this.formatNumber = numberToFormat => {
144
+ return numberToFormat.replace(/\d/g, match => NUMBER_SYMBOL_MAP[match]).replace(/,/g, '،');
145
+ };
146
+ this.startOfYear = value => {
147
+ return value.clone().startOf('iYear');
148
+ };
149
+ this.startOfMonth = value => {
150
+ return value.clone().startOf('iMonth');
151
+ };
152
+ this.endOfYear = value => {
153
+ return value.clone().endOf('iYear');
154
+ };
155
+ this.endOfMonth = value => {
156
+ return value.clone().endOf('iMonth');
157
+ };
158
+ this.addYears = (value, amount) => {
159
+ return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iYear') : value.clone().add(amount, 'iYear');
160
+ };
161
+ this.addMonths = (value, amount) => {
162
+ return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iMonth') : value.clone().add(amount, 'iMonth');
163
+ };
164
+ this.getYear = value => {
165
+ return value.iYear();
166
+ };
167
+ this.getMonth = value => {
168
+ return value.iMonth();
169
+ };
170
+ this.getDate = value => {
171
+ return value.iDate();
172
+ };
173
+ this.setYear = (value, year) => {
174
+ return value.clone().iYear(year);
175
+ };
176
+ this.setMonth = (value, month) => {
177
+ return value.clone().iMonth(month);
178
+ };
179
+ this.setDate = (value, date) => {
180
+ return value.clone().iDate(date);
181
+ };
182
+ this.getWeekNumber = value => {
183
+ return value.iWeek();
184
+ };
185
+ this.getYearRange = ([start, end]) => {
186
+ if (start.isBefore('1937-03-14')) {
187
+ throw new Error('min date must be on or after 1356-01-01 H (1937-03-14)');
188
+ }
189
+ if (end.isAfter('2076-11-26')) {
190
+ throw new Error('max date must be on or before 1499-12-29 H (2076-11-26)');
191
+ }
192
+ return super.getYearRange([start, end]);
193
+ };
194
+ this.moment = instance || _cojectHijri.default;
195
+ this.locale = 'ar-SA';
196
+ this.formats = (0, _extends2.default)({}, defaultFormats, formats);
197
+ }
198
+ }
199
+ exports.Adapter = Adapter;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Adapter", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Adapter.Adapter;
10
+ }
11
+ });
12
+ var _Adapter = require("./Adapter");
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./node/index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1 @@
1
+ declare module 'coject-hijri';
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "name": "coject-hijri",
3
+ "version": "1.3.0",
3
4
  "description": "A Hijri calendar (Based on Umm al-Qura calculations) plugin for moment.js.",
4
5
  "author": "Akwad",
5
6
  "license": "MIT",
@@ -23,7 +24,6 @@
23
24
  "dependencies": {
24
25
  "moment": "^2.30.0"
25
26
  },
26
- "version": "1.0.0",
27
27
  "scripts": {
28
28
  "test": "echo \"Error: no test specified\" && exit 1"
29
29
  },